Instructions

Instructions for each machine:

sh2 MEM - Memory


sh2 ALU - ALU


sh2 FPU - FPU


sh2 BR - Branch


sh2 sh2 - SH-2 CPU core


sh2e MEM - Memory


sh2e ALU - ALU


sh2e FPU - FPU


sh2e BR - Branch


sh2e sh2e - SH-2e CPU core


sh2a-fpu MEM - Memory


sh2a-fpu ALU - ALU


sh2a-fpu FPU - FPU


sh2a-fpu BR - Branch


sh2a-fpu sh2a-fpu - SH-2a CPU core with fpu


sh2a-nofpu MEM - Memory


sh2a-nofpu ALU - ALU


sh2a-nofpu FPU - FPU


sh2a-nofpu BR - Branch


sh2a-nofpu sh2a-nofpu - SH-2a CPU core with no fpu


sh3 MEM - Memory


sh3 ALU - ALU


sh3 FPU - FPU


sh3 BR - Branch


sh3 sh3 - SH-3 CPU core


sh3e MEM - Memory


sh3e ALU - ALU


sh3e FPU - FPU


sh3e BR - Branch


sh3e sh3e - SH-3e CPU core


sh4-nofpu MEM - Memory


sh4-nofpu ALU - ALU


sh4-nofpu FPU - FPU


sh4-nofpu BR - Branch


sh4-nofpu sh4-nofpu - SH-4 CPU core - no fpu


sh4 MEM - Memory


sh4 ALU - ALU


sh4 FPU - FPU


sh4 BR - Branch


sh4 sh4 - SH-4 CPU core with fpu


sh4a-nofpu MEM - Memory


sh4a-nofpu ALU - ALU


sh4a-nofpu FPU - FPU


sh4a-nofpu BR - Branch


sh4a-nofpu sh4a-nofpu - SH-4a CPU core - no fpu


sh4a MEM - Memory


sh4a ALU - ALU


sh4a FPU - FPU


sh4a BR - Branch


sh4a sh4a - SH-4a CPU core with fpu


sh4al MEM - Memory


sh4al ALU - ALU


sh4al FPU - FPU


sh4al BR - Branch


sh4al sh4al - SH-4al CPU core


sh5 MEM - Memory


sh5 ALU - ALU


sh5 FPU - FPU


sh5 BR - Branch


sh5 sh5 - SH-5 CPU core


Individual instructions descriptions


add - Add

add-compact - Add

addc-compact - Add with carry

addi - Add immediate

addi-compact - Add immediate

addil - Add immediate long

addl - Add long

addv-compact - Add with overflow

addzl - Add zero extended long

alloco - Allocate operand cache block

and - AND

and-compact - Bitwise AND

andb-compact - Bitwise AND memory byte

andc - AND complement

andi - AND immediate

andi-compact - Bitwise AND immediate

beq - Branch if equal

beqi - Branch if equal immediate

bf-compact - Conditional branch

bfs-compact - Conditional branch with delay slot

bge - Branch if greater than or equal

bgeu - Branch if greater than or equal (unsigned comparison)

bgt - Branch greater than

bgtu - Branch greater than (unsigned comparison)

blink - Branch and link

bne - Branch if not equal

bnei - Branch if not equal immediate

bra-compact - Branch

braf-compact - Branch far

brk - Breakpoint instruction

brk-compact - Breakpoint

bsr-compact - Branch to subroutine

bsrf-compact - Branch to far subroutine

bt-compact - Conditional branch

bts-compact - Conditional branch with delay slot

byterev - Byte reverse

clrmac-compact - Clear MACL and MACH

clrs-compact - Clear S-bit

clrt-compact - Clear T-bit

cmpeq - Compare equal

cmpeq-compact - Compare if equal

cmpeqi-compact - Compare if equal (immediate)

cmpge-compact - Compare if greater than or equal

cmpgt - Compare greater than

cmpgt-compact - Compare if greater than

cmpgtu - Compare greater than (unsigned comparison)

cmphi-compact - Compare if greater than (unsigned)

cmphs-compact - Compare if greater than or equal (unsigned)

cmppl-compact - Compare if greater than zero

cmppz-compact - Compare if greater than or equal zero

cmpstr-compact - Compare bytes

cmveq - Conditional move if equal to zero

cmvne - Conditional move if not equal to zero

div0s-compact - Initialise divide-step state for signed division

div0u-compact - Initialise divide-step state for unsigned division

div1-compact - Divide step

divu-compact - Unsigned Divide

dmulsl-compact - Multiply long (signed)

dmulul-compact - Multiply long (unsigned)

dt-compact - Decrement and set

extsb-compact - Sign extend byte

extsw-compact - Sign extend word

extub-compact - Zero extend byte

extuw-compact - Zero etxend word

fabs-compact - Floating point absolute

fabsd - Floating point absolute (double)

fabss - Floating point absolute (single)

fadd-compact - Floating point add

faddd - Floating point add (double)

fadds - Floating point add (single)

fcmpeq-compact - Floating point compare equal

fcmpeqd - Floating point compare if equal (double)

fcmpeqs - Floating point compare if equal (single)

fcmpged - Floating compare compare if greater than or equal (double)

fcmpges - Floating point compare if greater than or equal (single)

fcmpgt-compact - Floating point compare greater than

fcmpgtd - Floating point compare if greater than (double)

fcmpgts - Floating point compare if greater than (single)

fcmpund - Floating point unordered comparison (double)

fcmpuns - Floating point unordered comparison (single)

fcnvds - Floating point coversion (double to single)

fcnvds-compact - Floating point convert (double to single)

fcnvsd - Floating point conversion (single to double)

fcnvsd-compact - Floating point convert (single to double)

fdiv-compact - Floating point divide

fdivd - Floating point divide (double)

fdivs - Floating point divide (single)

fgetscr - Floating point get from FPSCR

fipr-compact - Floating point inner product

fiprs - Floating point inner product (single)

fldd - Floating point load (double)

fldi0-compact - Floating point load immediate 0.0

fldi1-compact - Floating point load immediate 1.0

fldp - Floating point load (pair of singles)

flds - Floating point load (single)

flds-compact - Floating point load status register

fldxd - Floating point extended load (double)

fldxp - Floating point extended load (pair of singles)

fldxs - Floating point extended load (single)

float-compact - Floating point integer conversion

floatld - Floating point conversion (long to double)

floatls - Floating point conversion (long to single)

floatqd - Floating point conversion (quad to double)

floatqs - Floating point conversion (quad to single)

fmac-compact - Floating point multiply and accumulate

fmacs - Floating point multiply and accumulate (single)

fmov1-compact - Floating point move (register to register)

fmov2-compact - Floating point load

fmov3-compact - Floating point load (post-increment)

fmov4-compact - Floating point load (register/register indirect)

fmov5-compact - Floating point store

fmov6-compact - Floating point store (pre-decrement)

fmov7-compact - Floating point store (register/register indirect)

fmov8-compact - Load double float from memory (register indirect w/ displacement)

fmov9-compact - Store double float to memory (register indirect w/ displacement)

fmovd - Floating point move double

fmovdq - Floating point move (double to quad integer)

fmovls - Floating point move (lower to single)

fmovqd - Floating point move (quad to double)

fmovs - Floating point move (single)

fmovsl - Floating point move (single to lower)

fmul-compact - Floating point multiply

fmuld - Floating point multiply (double)

fmuls - Floating point multiply (single)

fneg-compact - Floating point negate

fnegd - Floating point negate (double)

fnegs - Floating point negate (single)

fputscr - Floating point put to FPSCR

frchg-compact - Toggle floating point register banks

fschg-compact - Set size of floating point transfers

fsqrt-compact - Floating point square root

fsqrtd - Floating point square root (double)

fsqrts - Floating point squart root (single)

fstd - Floating point store (double)

fstp - Floating point store (pair of singles)

fsts - Floating point store (single)

fsts-compact - Floating point store status register

fstxd - Floating point extended store (double)

fstxp - Floating point extended store (pair of singles)

fstxs - Floating point extended store (single)

fsub-compact - Floating point subtract

fsubd - Floating point subtract (double)

fsubs - Floating point subtract (single)

ftrc-compact - Floating point truncate

ftrcdl - Floating point conversion (double to long)

ftrcdq - Floating point conversion (double to quad)

ftrcsl - Floating point conversion (single to long)

ftrcsq - Floating point conversion (single to quad)

ftrv-compact - Floating point transform vector

ftrvs - Floating point matrix multiply

getcfg - Get configuration register

getcon - Get control register

gettr - Get target register

icbi - Invalidate instruction cache block

jmp-compact - Jump

jsr-compact - Jump to subroutine

ldb - Load byte

ldc-gbr-compact - Load control register (GBR)

ldc-sr-compact - Load control register (SR)

ldc-vbr-compact - Load control register (VBR)

ldcl-gbr-compact - Load control register (GBR)

ldcl-vbr-compact - Load control register (VBR)

ldhil - Load high part (long word)

ldhiq - Load high part (quad word)

ldl - Load long word

ldlol - Load low part (long word)

ldloq - Load low part (quad word)

ldq - Load quad word

lds-fpscr-compact - Load status register (FPSCR)

lds-fpul-compact - Load status register (FPUL)

lds-mach-compact - Load status register (MACH)

lds-macl-compact - Load status register (MACL)

lds-pr-compact - Load status register (PR)

ldsl-fpscr-compact - Load status register (FPSCR)

ldsl-fpul-compact - Load status register (FPUL)

ldsl-mach-compact - Load status register (MACH), post-increment

ldsl-macl-compact - Load status register (MACL), post-increment

ldsl-pr-compact - Load status register (PR), post-increment

ldub - Load unsigned byte

lduw - Load unsigned word

ldw - Load word

ldxb - Load byte (extended displacement)

ldxl - Load long word (extended displacement)

ldxq - Load quad word (extended displacement)

ldxub - Load unsigned byte (extended displacement)

ldxuw - Load unsigned word (extended displacement)

ldxw - Load word (extended displacement)

mabsl - Multimedia absolute value (long word)

mabsw - Multimedia absolute value (word)

macl-compact - Multiply and accumulate (long)

macw-compact - Multiply and accumulate (word)

maddl - Multimedia add (long word)

maddsl - Multimedia add (saturating, long word)

maddsub - Multimedia add (saturating, unsigned byte)

maddsw - Multimedia add (saturating, word)

maddw - Multimedia add (word)

mcmpeqb - Multimedia compare equal (byte)

mcmpeql - Multimedia compare equal (long word)

mcmpeqw - Multimedia compare equal (word)

mcmpgtl - Multimedia compare greater than (long word)

mcmpgtub - Multimediate compare unsigned greater than (byte)

mcmpgtw - Multimedia compare greater than (word)

mcmv - Multimedia conditional move

mcnvslw - Multimedia convert/saturate (long to word)

mcnvswb - Multimedia convert/saturate (word to byte)

mcnvswub - Multimedia convert/saturate (word to unsigned byte)

mextr1 - Multimedia extract 64-bit slice (from byte 1)

mextr2 - Multimedia extract 64-bit slice (from byte 2)

mextr3 - Multimedia extract 64-bit slice (from byte 3)

mextr4 - Multimedia extract 64-bit slice (from byte 4)

mextr5 - Multimedia extract 64-bit slice (from byte 5)

mextr6 - Multimedia extract 64-bit slice (from byte 6)

mextr7 - Multimedia extract 64-bit slice (from byte 7)

mmacfxwl - Multimedia fractional multiply (word to long)

mmacnfx.wl - Multimedia fractional multiple (word to long)

mmulfxl - Multimedia fractional multiply (long word)

mmulfxrpw - Multimedia fractional multiply round positive (word op)

mmulfxw - Multimedia fractional multiply (word)

mmulhiwl - Multimedia multiply higher halves (word to long)

mmull - Multimedia multiply (long word)

mmullowl - Multimedia multiply lower halves (word to long)

mmulsumwq - Multimedia multiply and accumulate (word to quad)

mmulw - Multimedia multiply (word)

mov-compact - Move

mova-compact - Move effective address

movb1-compact - Store byte to memory (register indirect w/ zero displacement)

movb10-compact - Load byte from memory (register indirect w/ displacement)

movb2-compact - Store byte to memory (register indirect w/ pre-decrement)

movb3-compact - Store byte to memory (register/register indirect)

movb4-compact - Store byte to memory (GBR-relative w/ displacement)

movb5-compact - Store byte to memory (register indirect w/ displacement)

movb6-compact - Load byte from memory (register indirect w/ zero displacement)

movb7-compact - Load byte from memory (register indirect w/ post-increment)

movb8-compact - Load byte from memory (register/register indirect)

movb9-compact - Load byte from memory (GBR-relative with displacement)

movcal-compact - Move with cache block allocation

movcol-compact - Move Conditional

movi - Move immediate

movi-compact - Move immediate

movi20-compact - Move immediate

movl1-compact - Store long word to memory (register indirect w/ zero displacement)

movl10-compact - Load long word from memory (PC-relative w/ displacement)

movl11-compact - Load long word from memory (register indirect w/ displacement)

movl12-compact - Load long word from memory (register indirect w/ displacement)

movl13-compact - Store long word to memory (register indirect w/ displacement)

movl2-compact - Store long word to memory (register indirect w/ pre-decrement)

movl3-compact - Store long word to memory (register/register indirect)

movl4-compact - Store long word to memory (GBR-relative w/ displacement)

movl5-compact - Store long word to memory (register indirect w/ displacement)

movl6-compact - Load long word to memory (register indirect w/ zero displacement)

movl7-compact - Load long word from memory (register indirect w/ post-increment)

movl8-compact - Load long word from memory (register/register indirect)

movl9-compact - Load long word from memory (GBR-relative w/ displacement)

movt-compact - Move t-bit

movual-compact - Move unaligned

movual2-compact - Move unaligned with post increment

movw1-compact - Store word to memory (register indirect w/ zero displacement)

movw10-compact - Load word from memory (PC-relative w/ displacement)

movw11-compact - Load word from memory (register indirect w/ displacement)

movw2-compact - Store word to memory (register indirect w/ pre-decrement)

movw3-compact - Store word to memory (register/register indirect)

movw4-compact - Store word to memory (GBR-relative w/ displacement)

movw5-compact - Store word to memory (register indirect w/ displacement)

movw6-compact - Load word from memory (register indirect w/ zero displacement)

movw7-compact - Load word from memory (register indirect w/ post-increment)

movw8-compact - Load word from memory (register/register indirect)

movw9-compact - Load word from memory (GBR-relative w/ displacement)

mpermw - Multimedia permutate word

msadubq - Multimedia absolute difference (byte)

mshaldsl - Multimedia saturating arithmetic left shift (long word)

mshaldsw - Multimedia saturating arithmetic left shift (word)

mshardl - Multimedia arithmetic right shift (long)

mshardsq - Multimedia saturating arithmetic right shift (quad word)

mshardw - Multimedia arithmetic right shift (word)

mshfhib - Multimedia shuffle higher-half (byte)

mshfhil - Multimedia shuffle higher-half (long)

mshfhiw - Multimedia shuffle higher-half (word)

mshflob - Multimedia shuffle lower-half (byte)

mshflol - Multimedia shuffle lower-half (long)

mshflow - Multimedia shuffle lower-half (word)

mshlldl - Multimedia logical left shift (long word)

mshlldw - Multimedia logical left shift (word)

mshlrdl - Multimedia logical right shift (long word)

mshlrdw - Multimedia logical right shift (word)

msubl - Multimedia subtract (long word)

msubsl - Multimedia subtract (saturating long)

msubsub - Multimedia subtract (saturating byte)

msubsw - Multimedia subtract (saturating word)

msubw - Multimedia add (word)

mull-compact - Multiply

mulr-compact - Multiply to Register

mulsl - Multiply signed long

mulsw-compact - Multiply words (signed)

mulul - Multiply unsigned long

muluw-compact - Multiply words (unsigned)

neg-compact - Negate

negc-compact - Negate with carry

nop - No operation

nop-compact - No operation

not-compact - Bitwise NOT

nsb - Number of consecutive sign bits

ocbi - Invalidate operand cache block

ocbi-compact - Invalidate operand cache block

ocbp - Purge operand cache block

ocbp-compact - Purge operand cache block

ocbwb - Write-back operand cache block

ocbwb-compact - Write back operand cache block

or - OR

or-compact - Bitwise OR

orb-compact - Bitwise OR immediate

ori - OR immediate

ori-compact - Bitwise OR immediate

pref-compact - Prefetch data

prefi - Prefetch instruction

pta - Prepare target register for SHmedia target

ptabs - Prepare target register with absolute value from register

ptb - Prepare target register for SHcompact target

ptrel - Prepare target register with relative value from register

putcfg - Put configuration register

putcon - Put control register

rotcl-compact - Rotate with carry left

rotcr-compact - Rotate with carry right

rotl-compact - Rotate left

rotr-compact - Rotate right

rte - Return from exception

rts-compact - Return from subroutine

sets-compact - Set S-bit

sett-compact - Set T-bit

shad-compact - Shift arithmetic dynamic

shal-compact - Shift left arithmetic one bit

shar-compact - Shift right arithmetic one bit

shard - Arithmetic right shift

shardl - Arithmetic right shift (long word)

shari - Arithmetic right shift (immediate count)

sharil - Arithmetic right shift (long word, immediate count)

shld-compact - Shift logical dynamic

shll-compact - Shift left logical one bit

shll16-compact - Shift left logical sixteen bits

shll2-compact - Shift left logical two bits

shll8-compact - Shift left logical eight bits

shlld - Logical left shift

shlldl - Logical left shift (long word)

shlli - Logical left shift (immediate count)

shllil - Logical left shift (long word, immediate count)

shlr-compact - Shift right logical one bit

shlr16-compact - Shift right logical sixteen bits

shlr2-compact - Shift right logical two bits

shlr8-compact - Shift right logical eight bits

shlrd - Logical right shift

shlrdl - Logical right shift (long word)

shlri - Logical right shift (immediate count)

shlril - Logical right shift (long word, immediate count)

shori - Shift-or immediate

sleep - Sleep

stb - Store byte

stc-gbr-compact - Store control register (GBR)

stc-vbr-compact - Store control register (VBR)

stcl-gbr-compact - Store control register (GBR)

stcl-vbr-compact - Store control register (VBR)

sthil - Store high part (long word)

sthiq - Store high part (quad word)

stl - Store long word

stlol - Store low part (long word)

stloq - Store low part (quad word)

stq - Store quad word

sts-fpscr-compact - Store status register (FPSCR)

sts-fpul-compact - Store status regitser (FPUL)

sts-mach-compact - Store status register (MACH)

sts-macl-compact - Store status register (MACL)

sts-pr-compact - Store status register (PR)

stsl-fpscr-compact - Store status register (FPSCR)

stsl-fpul-compact - Store status register (FPUL)

stsl-mach-compact - Store status register (MACH)

stsl-macl-compact - Store status register (MACL)

stsl-pr-compact - Store status register (PR)

stw - Store word

stxb - Store byte (extended displacement)

stxl - Store long (extended displacement)

stxq - Store quad word (extended displacement)

stxw - Store word (extended displacement)

sub - Subtract

sub-compact - Subtract

subc-compact - Subtract and detect carry

subl - Subtract long

subv-compact - Subtract and detect overflow

swapb-compact - Swap bytes

swapq - Swap quad words

swapw-compact - Swap words

synci - Synchronise instruction fetch

synco - Synchronise data operations

tasb-compact - Test and set byte

trapa - Trap

trapa-compact - Trap

tst-compact - Test and set t-bit

tstb-compact - Test and set t-bit immedate with memory byte

tsti-compact - Test and set t-bit immediate

xor - Exclusive OR

xor-compact - Exclusive OR

xorb-compact - Exclusive OR immediate with memory byte

xori - Exclusive OR immediate

xori-compact - Exclusive OR immediate

xtrct-compact - Extract


Macro Instructions

Macro instructions for each machine:

sh2 - SH-2 CPU core

sh2e - SH-2e CPU core

sh2a-fpu - SH-2a CPU core with fpu

sh2a-nofpu - SH-2a CPU core with no fpu

sh3 - SH-3 CPU core

sh3e - SH-3e CPU core

sh4-nofpu - SH-4 CPU core - no fpu

sh4 - SH-4 CPU core with fpu

sh4a-nofpu - SH-4a CPU core - no fpu

sh4a - SH-4a CPU core with fpu

sh4al - SH-4al CPU core

sh5 - SH-5 CPU core

Individual macro-instructions descriptions



This documentation was machine generated from the cgen cpu description files for this architecture.
https://sourceware.org/cgen/