Instructions

Instructions for each machine:

frv ALU - ALU


frv FPU - FPU


frv BR - Branch


frv frv - Generic FRV cpu


tomcat ALU - ALU


tomcat FPU - FPU


tomcat BR - Branch


tomcat tomcat - Tomcat -- early version of fr500


fr400 ALU - ALU


fr400 FPU - FPU


fr400 BR - Branch


fr400 fr400 - FR400 cpu


simple ALU - ALU


simple FPU - FPU


simple BR - Branch


simple simple - Simple single issue integer cpu


Individual instructions descriptions


add - add reg/reg

addcc - add reg/reg, set icc

addi - add reg/immed

addicc - add reg/immed, set icc

addss - add reg/reg, with saturation

addx - Add reg/reg, with carry

addxcc - Add reg/reg, use/set carry

addxi - Add reg/immed, with carry

addxicc - Add reg/immed, with carry

and - and reg/reg

andcc - and reg/reg, set icc

andcr - and condition code regs

andi - and reg/immed

andicc - and reg/immed, set icc

andncr - andn condition code regs

bar - barrier

bc - integer branch carry set

bcclr - integer ctrlr branch carry set

bceqlr - integer ctrlr branch equal

bcgelr - integer ctrlr branch greater equal

bcgtlr - integer ctrlr branch greater

bchilr - integer ctrlr branch greater unsigned

bclelr - integer ctrlr branch less equal

bclr - integer cclr branch carry set

bclslr - integer ctrlr branch less equal unsigned

bcltlr - integer ctrlr branch less

bcnclr - integer ctrlr branch carry clear

bcnelr - integer ctrlr branch not equal

bcnlr - integer ctrlr branch negative

bcnolr - integer ctrlr branch never

bcnvlr - integer ctrlr branch overflow clear

bcplr - integer ctrlr branch positive

bcralr - integer ctrlr branch always

bctrlr - LCR conditional branch to lr

bcvlr - integer ctrlr branch overflow set

beq - integer branch equal

beqlr - integer cclr branch equal

bge - integer branch greater or equal

bgelr - integer cclr branch greater or equal

bgt - integer branch greater

bgtlr - integer cclr branch greater

bhi - integer branch greater unsigned

bhilr - integer cclr branch greater unsigned

ble - integer branch less or equal

blelr - integer cclr branch less or equal

bls - integer branch less or equal unsigned

blslr - integer cclr branch less or equal unsigned

blt - integer branch less

bltlr - integer cclr branch less

bn - integer branch negative

bnc - integer branch carry clear

bnclr - integer cclr branch carry clear

bne - integer branch not equal

bnelr - integer cclr branch not equal

bnlr - integer cclr branch negative

bno - integer branch never

bnolr - integer cclr branch never

bnv - integer branch overflow clear

bnvlr - integer cclr branch overflow clear

bp - integer branch positive

bplr - integer cclr branch positive

bra - integer branch equal

bralr - integer cclr branch always

break - break trap

bv - integer branch overflow set

bvlr - integer cclr branch overflow set

cadd - conditional add

caddcc - add, set icc

call - call and link

callil - call immediate and link

calll - call and link

cand - conditional and

candcc - conditional and, set icc

ccalll - conditional call and link

cckc - check integer cc carry set

cckeq - check integer cc equal

cckge - check integer cc greater or equal

cckgt - check integer cc greater

cckhi - check integer cc greater unsigned

cckle - check integer cc less or equal

cckls - check integer cc less or equal unsigned

ccklt - check integer cc less

cckn - check integer cc negative

ccknc - check integer cc carry clear

cckne - check integer cc not equal

cckno - conditional check integer cc never

ccknv - check integer cc overflow clear

cckp - check integer cc positive

cckra - conditional check integer cc always

cckv - check integer cc overflow set

cfabss - Conditional floating point absolute value, single

cfadds - cond add single

cfckeq - check float cc equal

cfckge - check float cc greater or equal

cfckgt - check float cc greater

cfckle - check float cc less or equal

cfcklg - check float cc greater or less

cfcklt - check float cc less

cfckne - check float cc not equal

cfckno - conditional check float cc never

cfcko - check float cc ordered

cfckra - conditional check float cc always

cfcku - check float cc unordered

cfckue - check float cc unordered or equal

cfckug - check float cc unordered or greater

cfckuge - check float cc unordered greater or equal

cfckul - check float cc unordered or less

cfckule - check float cc unordered less or equal

cfcmps - Conditional compare single, float

cfdivs - cond div single

cfitos - Conditional convert Integer to Single

cfmadds - conditional mul with add, single

cfmas - conditional parallel mul/add, single

cfmovs - Conditional move Single Float

cfmss - conditional parallel mul/sub, single

cfmsubs - conditional mul with sub, single

cfmuls - cond mul single

cfnegs - Conditional floating point negate, single

cfsqrts - Conditional square root single

cfstoi - Conditional convert Single to Integer

cfsubs - cond sub single

cjmpl - conditional jump and link

ckc - check integer cc carry set

ckeq - check integer cc equal

ckge - check integer cc greater or equal

ckgt - check integer cc greater

ckhi - check integer cc greater unsigned

ckle - check integer cc less or equal

ckls - check integer cc less or equal unsigned

cklt - check integer cc less

ckn - check integer cc negative

cknc - check integer cc carry clear

ckne - check integer cc not equal

ckno - check integer cc never

cknv - check integer cc overflow clear

ckp - check integer cc positive

ckra - check integer cc always

ckv - check integer cc overflow set

cld - Load word

cldbf - Load byte float

cldbfu - Load byte float, update

cldd - Load double word

clddf - Load double float

clddfu - Load double float, update

clddu - Load double word, update

cldf - Load word float

cldfu - Load word float, update

cldhf - Load half float

cldhfu - Load half float, update

cldq - conditional load quad integer

cldqu - conditional load quad integer and update index

cldsb - Load signed byte

cldsbu - Load signed byte, update

cldsh - Load signed half

cldshu - Load signed half, update

cldu - Load word, update

cldub - Load unsigned byte

cldubu - Load unsigned byte, update

clduh - Load unsigned half

clduhu - Load unsigned half, update

clrfa - Clear FR NE flag ALL

clrfr - Clear FR NE flag

clrga - Clear GR NE flag ALL

clrgr - Clear GR NE flag

cmaddhss - Conditional Media dual add signed with saturation

cmaddhus - Conditional Media dual add unsigned with saturation

cmand - conditional and reg/reg

cmbtoh - Conditional media convert byte to halfword

cmbtohe - Conditional media convert byte to halfword extended

cmcpxis - Conditional Media dual complex imaginary signed with saturation

cmcpxiu - Conditional Media dual complex imaginary unsigned with saturation

cmcpxrs - Conditional Media dual complex real signed with saturation

cmcpxru - Conditional Media dual complex real unsigned with saturation

cmexpdhd - Conditional media expand halfword to double

cmexpdhw - Conditional media expand halfword to word

cmhtob - Conditional media convert halfword to byte

cmmachs - Conditional Media dual multiply and accumulate signed

cmmachu - Conditional Media dual multiply and accumulate unsigned

cmmulhs - Conditional Media dual multiply signed

cmmulhu - Conditional Media dual multiply unsigned

cmnot - cmnot

cmor - conditional or reg/reg

cmovfg - transfer fr to gr

cmovfgd - Conditional move FR to GR double

cmovgf - transfer gr to fr

cmovgfd - Conditional move GR to FR double

cmpb - Compare bytes

cmpba - OR of Compare bytes

cmqaddhss - Conditional Media quad add signed with saturation

cmqaddhus - Conditional Media quad add unsigned with saturation

cmqmachs - Conditional Media quad multiply and accumulate signed

cmqmachu - Conditional media quad multiply and accumulate unsigned

cmqmulhs - Conditional Media quad multiply signed

cmqmulhu - Conditional Media quad multiply unsigned

cmqsubhss - Conditional Media quad sub signed with saturation

cmqsubhus - Conditional Media quad sub unsigned with saturation

cmsubhss - Conditional Media dual sub signed with saturation

cmsubhus - Conditional Media dual sub unsigned with saturation

cmxor - conditional xor reg/reg

cnot - conditional not

commitfa - commit exceptions, any FR

commitfr - commit exceptions, specific FR

commitga - commit exceptions, any GR

commitgr - commit exceptions, specific GR

cop1 - Coprocessor operation

cop2 - Coprocessor operation

cor - conditional or

corcc - conditional or , set icc

cscan - conditional scan

csdiv - conditional signed division

csll - conditional shift left logical

csllcc - shift left logical, set icc

csmul - conditional signed multiply

csmulcc - conditional signed multiply and set condition code

csra - conditional shift right arith

csracc - shift right arith , set icc

csrl - conditional shift right logical

csrlcc - shift right logical, set icc

cst - Store word

cstb - Store unsigned byte

cstbf - Store byte float

cstbfu - Store byte float, update index

cstbu - Store unsigned byte, update index

cstd - Store double word

cstdf - Store double float

cstdfu - Store double float, update index

cstdu - Store double word, update index

cstf - Store word float

cstfu - Store word float, update index

csth - Store unsigned half

csthf - Store half float

csthfu - Store half float, update index

csthu - Store unsigned half, update index

cstq - conditionally store quad word

cstu - Store word, update index

csub - conditional sub

csubcc - sub, set icc

cswap - Conditionally swap contents of memory with GR

cudiv - conditional unsigned division

cxor - conditional xor

cxorcc - conditional xor, set icc

dcef - Data cache entry flush

dcei - invalidate data cache entry

dcf - Data cache flush

dci - invalidate data cache

dcpl - preload data cache

dcul - unlock data cache

dtlbi - invalidate data TLB

fabsd - Float absolute value, double

fabss - Float absolute value, single

faddd - add double float

fadds - add single float

fbeq - float branch equal

fbeqlr - float cclr branch equal

fbge - float branch greater or equal

fbgelr - float branch greater or equal

fbgt - float branch greater

fbgtlr - float branch greater

fble - float branch less or equal

fblelr - float branch less or equal

fblg - float branch less or greater

fblglr - float branch less or greater

fblt - float branch less

fbltlr - float branch less

fbne - float branch not equal

fbnelr - float cclr branch not equal

fbno - float branch never

fbnolr - float cclr branch never

fbo - float branch ordered

fbolr - float branch ordered

fbra - float branch equal

fbralr - float cclr branch always

fbu - float branch unordered

fbue - float branch unordered or equal

fbuelr - float branch unordered or equal

fbug - float branch unordered or greater

fbuge - float branch unordered, greater,equal

fbugelr - float branch unordered, greater, equal

fbuglr - float branch unordered or greater

fbul - float branch unordered or less

fbule - float branch unordered, less or equal

fbulelr - float branch unordered, less or equal

fbullr - float branch unordered or less

fbulr - float branch unordered

fcbeqlr - float cclr branch equal

fcbgelr - float branch greater or equal

fcbgtlr - float branch greater

fcblelr - float branch less or equal

fcblglr - float branch less or greater

fcbltlr - float branch less

fcbnelr - float cclr branch not equal

fcbnolr - float ctrlr branch never

fcbolr - float branch ordered

fcbralr - float ctrlr branch always

fcbuelr - float branch unordered or equal

fcbugelr - float branch unordered, greater, equal

fcbuglr - float branch unordered or greater

fcbulelr - float branch unordered, less or equal

fcbullr - float branch unordered or less

fcbulr - float branch unordered

fckeq - check float cc equal

fckge - check float cc greater or equal

fckgt - check float cc greater

fckle - check float cc less or equal

fcklg - check float cc greater or less

fcklt - check float cc less

fckne - check float cc not equal

fckno - check float cc never

fcko - check float cc ordered

fckra - check float cc always

fcku - check float cc unordered

fckue - check float cc unordered or equal

fckug - check float cc unordered or greater

fckuge - check float cc unordered greater or equal

fckul - check float cc unordered or less

fckule - check float cc unordered less or equal

fcmpd - compare double float

fcmps - compare single float

fdabss - Floating point dual absolute value, single

fdadds - dual add, single

fdcmps - float dual compare single

fddivs - dual div,single

fditos - Dual Convert Integer to Single

fdivd - div double float

fdivs - div single float

fdmadds - Float dual multiply with add

fdmas - dual parallel mul/add, single

fdmovs - Dual move single float

fdmss - dual parallel mul/sub, single

fdmulcs - Float dual cross multiply single

fdmuls - dual mul, single

fdnegs - Floating point dual negate, single

fdsads - dual add/sub, single

fdsqrts - Dual square root single

fdstoi - Dual Convert Single to Integer

fdsubs - dual sub, single

fdtoi - Convert Double to Integer

fitod - Convert Integer to Double

fitos - Convert Integer to Single

fmad - parallel mul/add, double

fmaddd - mul with add, double

fmadds - mul with add, single

fmas - parallel mul/add, single

fmovd - Move Double Float

fmovs - Move Single Float

fmsd - parallel mul/sub, double

fmss - parallel mul/sub, single

fmsubd - mul with sub, double

fmsubs - mul with sub, single

fmuld - mul double float

fmuls - mul single float

fnegd - Floating point negate, double

fnegs - Floating point negate, single

fnop - Floating point nop

fsqrtd - Square root double

fsqrts - Square root single

fstoi - Convert Single to Integer

fsubd - sub double float

fsubs - sub single float

fteq - float trap equal

ftge - float trap greater or equal

ftgt - float trap greater

ftieq - float trap equal

ftige - float trap greater or equal

ftigt - float trap greater

ftile - float trap less or equal

ftilg - float trap greater or less

ftilt - float trap less

ftine - float trap not equal

ftino - float trap never

ftio - float trap ordered

ftira - float trap always

ftiu - float trap unordered

ftiue - float trap unordered or equal

ftiug - float trap unordered or greater

ftiuge - float trap unordered greater or equal

ftiul - float trap unordered or less

ftiule - float trap unordered less or equal

ftle - float trap less or equal

ftlg - float trap greater or less

ftlt - float trap less

ftne - float trap not equal

ftno - flost trap never

fto - float trap ordered

ftra - float trap always

ftu - float trap unordered

ftue - float trap unordered or equal

ftug - float trap unordered or greater

ftuge - float trap unordered greater or equal

ftul - float trap unordered or less

ftule - float trap unordered less or equal

icei - invalidate insn cache entry

ici - invalidate insn cache

icpl - preload insn cache

icul - unlock insn cache

itlbi - invalidate insn TLB

jmpil - jump immediate and link

jmpl - jump and link

ld - Load word

ldbf - Load byte float

ldbfi - Load byte float

ldbfu - Load byte float, update index

ldc - Load coprocessor word

ldcu - Load coprocessor word float,update index

ldd - Load double word

lddc - Load coprocessor double

lddcu - Load coprocessor double float, update index

lddf - Load double float

lddfi - Load double float

lddfu - Load double float, update index

lddi - Load double word

lddu - Load double word, update index

ldf - Load word float

ldfi - Load word float

ldfu - Load word float, update index

ldhf - Load half float

ldhfi - Load half float

ldhfu - Load half float, update index

ldi - Load word

ldq - Load quad word

ldqc - Load coprocessor quad

ldqcu - Load coprocessor quad word, update index

ldqf - Load quad float

ldqfi - Load quad float

ldqfu - Load quad float, update index

ldqi - Load quad word

ldqu - Load quad word, update index

ldsb - Load signed byte

ldsbi - Load signed byte

ldsbu - Load signed byte, update index

ldsh - Load signed half

ldshi - Load signed half

ldshu - Load signed half, update index

ldu - Load word, update index

ldub - Load unsigned byte

ldubi - Load unsigned byte

ldubu - Load unsigned byte, update index

lduh - Load unsigned half

lduhi - Load unsigned half

lduhu - Load unsigned half, update index

mabshs - Media dual absolute value, halfword

maddaccs - Media accumulator addition

maddhss - Media dual add signed with saturation

maddhus - Media dual add unsigned with saturation

mand - and reg/reg

masaccs - Media add and subtract signed accumulator with saturation

maveh - Media dual average

mbtoh - Media convert byte to halfword

mbtohe - Media convert byte to halfword extended

mclracc-0 - Media clear accumulator(s)

mclracc-1 - Media clear accumulator(s)

mcmpsh - Media dual compare signed

mcmpuh - Media dual compare unsigned

mcop1 - Media custom instruction

mcop2 - Media custom instruction

mcplhi - Media bit concatenate, halfword

mcpli - Media bit concatenate, word

mcpxis - Media dual complex imaginary signed with saturation

mcpxiu - Media dual complex imaginary unsigned with saturation

mcpxrs - Media dual complex real signed with saturation

mcpxru - Media dual complex real unsigned with saturation

mcut - media accumulator cut reg

mcuti - media accumulator cut immed

mcutss - media accumulator cut reg with saturation

mcutssi - media accumulator cut immed with saturation

mdaddaccs - Media accumulator addition

mdasaccs - Media add and subtract signed accumulator with saturation

mdcutssi - Media dual cut with signed saturation

mdpackh - Media dual pack

mdrotli - rotate left reg/reg

mdsubaccs - Media accumulator subtraction

mdunpackh - Media dual unpack

membar - memory barrier

mexpdhd - Media expand halfword to double

mexpdhw - Media expand halfword to word

mhdseth - Media dual set halfword upper 5 bits

mhdsets - Media dual set halfword signed 12 bits

mhsethih - Media set upper 5 bits hi

mhsethis - Media set upper signed 12 bits

mhsetloh - Media set upper 5 bits lo

mhsetlos - Media set lower signed 12 bits

mhtob - Media convert halfword to byte

mmachs - Media dual multiply and accumulate signed

mmachu - Media dual multiply and accumulate unsigned

mmrdhs - Media dual multiply and reduce signed

mmrdhu - Media dual multiply and reduce unsigned

mmulhs - Media dual multiply signed

mmulhu - Media dual multiply unsigned

mmulxhs - Media dual cross multiply signed

mmulxhu - Media dual cross multiply unsigned

mnop - Media nop

mnot - mnot

mor - or reg/reg

movfg - transfer fr to gr

movfgd - move FR for GR double

movfgq - move FR for GR quad

movgf - transfer gr to fr

movgfd - move GR for FR double

movgfq - move GR for FR quad

movgs - transfer gr->spr

movsg - transfer spr->gr

mpackh - Media halfword pack

mqaddhss - Media quad add signed with saturation

mqaddhus - Media quad add unsigned with saturation

mqcpxis - Media quad complex imaginary signed with saturation

mqcpxiu - Media quad complex imaginary unsigned with saturation

mqcpxrs - Media quad complex real signed with saturation

mqcpxru - Media quad complex real unsigned with saturation

mqmachs - Media quad multiply and accumulate signed

mqmachu - Media quad multiply and accumulate unsigned

mqmacxhs - Media quad cross multiply and accumulate signed

mqmulhs - Media quad multiply signed

mqmulhu - Media quad multiply unsigned

mqmulxhs - Media quad cross multiply signed

mqmulxhu - Media quad cross multiply unsigned

mqsaths - Media quad saturation signed

mqsubhss - Media quad sub signed with saturation

mqsubhus - Media quad sub unsigned with saturation

mqxmachs - Media quad multiply and cross accumulate signed

mqxmacxhs - Media quad cross multiply and cross accumulate signed