1
0
mirror of https://github.com/antonblanchard/chiselwatt.git synced 2026-01-15 08:04:03 +00:00
2020-01-30 05:20:07 +11:00

1794 lines
24 KiB
YAML

# Add/sub
addic:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
invertIn: N
carryIn: CA_0
carryOut: Y
addic_dot:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_1
invertIn: N
carryIn: CA_0
carryOut: Y
addi:
unit: U_ADD
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
invertIn: N
carryIn: CA_0
carryOut: N
addis:
unit: U_ADD
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI_HI
rOut: ROUT_RT
compare: CMP_RC_0
invertIn: N
carryIn: CA_0
carryOut: N
subfic:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
invertIn: Y
carryIn: CA_1
carryOut: Y
add:
unit: U_ADD
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
invertIn: N
carryIn: CA_0
carryOut: N
addc:
unit: U_ADD
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
invertIn: N
carryIn: CA_0
carryOut: Y
adde:
unit: U_ADD
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
invertIn: N
carryIn: CA_CA
carryOut: Y
addme:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_M1
rOut: ROUT_RT
compare: CMP_RC_RC
invertIn: N
carryIn: CA_CA
carryOut: Y
addze:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_ZERO
rOut: ROUT_RT
compare: CMP_RC_RC
invertIn: N
carryIn: CA_CA
carryOut: Y
subf:
unit: U_ADD
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
invertIn: Y
carryIn: CA_1
carryOut: N
subfc:
unit: U_ADD
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
invertIn: Y
carryIn: CA_1
carryOut: Y
subfe:
unit: U_ADD
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
invertIn: Y
carryIn: CA_CA
carryOut: Y
subfme:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_M1
rOut: ROUT_RT
compare: CMP_RC_RC
invertIn: Y
carryIn: CA_CA
carryOut: Y
subfze:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_ZERO
rOut: ROUT_RT
compare: CMP_RC_RC
invertIn: Y
carryIn: CA_CA
carryOut: Y
neg:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_ZERO
rOut: ROUT_RT
compare: CMP_RC_RC
invertIn: Y
invertOut: N
carryIn: CA_1
carryOut: N
andi_dot:
unit: U_LOG
internalOp: LOG_AND
rB: RB_CONST_UI
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_1
invertIn: N
invertOut: N
andis_dot:
unit: U_LOG
internalOp: LOG_AND
rB: RB_CONST_UI_HI
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_1
invertIn: N
invertOut: N
# Logical
and:
unit: U_LOG
internalOp: LOG_AND
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
invertIn: N
invertOut: N
andc:
unit: U_LOG
internalOp: LOG_AND
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
invertIn: Y
invertOut: N
nand:
unit: U_LOG
internalOp: LOG_AND
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
invertIn: N
invertOut: Y
ori:
unit: U_LOG
internalOp: LOG_OR
rB: RB_CONST_UI
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_0
invertIn: N
invertOut: N
oris:
unit: U_LOG
internalOp: LOG_OR
rB: RB_CONST_UI_HI
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_0
invertIn: N
invertOut: N
nor:
unit: U_LOG
internalOp: LOG_OR
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
invertIn: N
invertOut: Y
or:
unit: U_LOG
internalOp: LOG_OR
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
invertIn: N
invertOut: N
orc:
unit: U_LOG
internalOp: LOG_OR
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
invertIn: Y
invertOut: N
xori:
unit: U_LOG
internalOp: LOG_XOR
rB: RB_CONST_UI
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_0
invertIn: N
invertOut: N
xoris:
unit: U_LOG
internalOp: LOG_XOR
rB: RB_CONST_UI_HI
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_0
invertIn: N
invertOut: N
eqv:
unit: U_LOG
internalOp: LOG_XOR
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
invertIn: N
invertOut: Y
xor:
unit: U_LOG
internalOp: LOG_XOR
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
invertIn: N
invertOut: N
extsb:
unit: U_LOG
internalOp: LOG_EXTS
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
invertIn: N
invertOut: N
length: LEN_1B
extsh:
unit: U_LOG
internalOp: LOG_EXTS
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
invertIn: N
invertOut: N
length: LEN_2B
extsw:
unit: U_LOG
internalOp: LOG_EXTS
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
invertIn: N
invertOut: N
length: LEN_4B
# Shift/rotate
rlwimi:
unit: U_ROT
rA: RA_RA
rB: RB_CONST_SH32
rS: RS_RS
rOut: ROUT_RA
compare: RC
is32bit: Y
signed: N
rightShift: N
clearLeft: Y
clearRight: Y
carryOut: N
rlwimi:
unit: U_ROT
rA: RA_RA
rB: RB_CONST_SH32
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: Y
signed: N
rightShift: N
clearLeft: Y
clearRight: Y
carryOut: N
rlwinm:
unit: U_ROT
rA: RA_ZERO
rB: RB_CONST_SH32
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: Y
signed: N
rightShift: N
clearLeft: Y
clearRight: Y
carryOut: N
rlwnm:
unit: U_ROT
rA: RA_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: Y
signed: N
rightShift: N
clearLeft: Y
clearRight: Y
carryOut: N
rldic:
unit: U_ROT
rA: RA_ZERO
rB: RB_CONST_SH
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
signed: N
rightShift: N
clearLeft: Y
clearRight: Y
carryOut: N
rldicl:
unit: U_ROT
rA: RA_ZERO
rB: RB_CONST_SH
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
signed: N
rightShift: N
clearLeft: Y
clearRight: N
carryOut: N
rldicr:
unit: U_ROT
rA: RA_ZERO
rB: RB_CONST_SH
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
signed: N
rightShift: N
clearLeft: N
clearRight: Y
carryOut: N
rldimi:
unit: U_ROT
rA: RA_RA
rB: RB_CONST_SH
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
signed: N
rightShift: N
clearLeft: Y
clearRight: Y
carryOut: N
rldcl:
unit: U_ROT
rA: RA_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
signed: N
rightShift: N
clearLeft: Y
clearRight: N
carryOut: N
rldcr:
unit: U_ROT
rA: RA_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
signed: N
rightShift: N
clearLeft: N
clearRight: Y
carryOut: N
sld:
unit: U_ROT
rA: RA_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
signed: N
rightShift: N
clearLeft: N
clearRight: N
carryOut: N
slw:
unit: U_ROT
rA: RA_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: Y
signed: N
rightShift: N
clearLeft: N
clearRight: N
carryOut: N
srad:
unit: U_ROT
rA: RA_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
signed: Y
rightShift: Y
clearLeft: N
clearRight: N
carryOut: Y
sradi:
unit: U_ROT
rA: RA_ZERO
rB: RB_CONST_SH
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
signed: Y
rightShift: Y
clearLeft: N
clearRight: N
carryOut: Y
sraw:
unit: U_ROT
rA: RA_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: Y
signed: Y
rightShift: Y
clearLeft: N
clearRight: N
carryOut: Y
srawi:
unit: U_ROT
rA: RA_ZERO
rB: RB_CONST_SH32
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: Y
signed: Y
rightShift: Y
clearLeft: N
clearRight: N
carryOut: Y
srd:
unit: U_ROT
rA: RA_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
signed: N
rightShift: Y
clearLeft: N
clearRight: N
carryOut: N
srw:
unit: U_ROT
rA: RA_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: Y
signed: N
rightShift: Y
clearLeft: N
clearRight: N
carryOut: N
# Load/store
lbz:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_1B
signed: N
byteReverse: N
update: N
reservation: N
lbzu:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_1B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
lha:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_2B
signed: Y
byteReverse: N
update: N
reservation: N
lhau:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_2B
signed: Y
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
lhz:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: N
update: N
reservation: N
lhzu:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
lwa:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_CONST_DS
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_4B
signed: Y
byteReverse: N
update: N
reservation: N
lwz:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: N
update: N
reservation: N
lwzu:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
ld:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_CONST_DS
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: N
update: N
reservation: N
ldu:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_CONST_DS
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
lbarx:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_1B
signed: N
byteReverse: N
update: N
reservation: Y
lbzx:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_1B
signed: N
byteReverse: N
update: N
reservation: N
lbzux:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_1B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
lharx:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: N
update: N
reservation: Y
lhax:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_2B
signed: Y
byteReverse: N
update: N
reservation: N
lhaux:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_2B
signed: Y
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
lhbrx:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: Y
update: N
reservation: N
lhzx:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: N
update: N
reservation: N
lhzux:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
lwarx:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: N
update: N
reservation: Y
lwax:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_4B
signed: Y
byteReverse: N
update: N
reservation: N
lwaux:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_4B
signed: Y
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
lwbrx:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: Y
update: N
reservation: N
lwzx:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: N
update: N
reservation: N
lwzux:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
ldarx:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: N
update: N
reservation: Y
ldbrx:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: Y
update: N
reservation: N
ldx:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: N
update: N
reservation: N
ldux:
unit: U_LDST
internalOp: LDST_LOAD
rA: RA_RA_OR_ZERO
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
stb:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_1B
signed: N
byteReverse: N
update: N
reservation: N
stbu:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_1B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
sth:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: N
update: N
reservation: N
sthu:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
stw:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: N
update: N
reservation: N
stwu:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_CONST_SI
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
std:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_CONST_DS
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: N
update: N
reservation: N
stdu:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_CONST_DS
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
stbcx_dot:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_1B
signed: N
byteReverse: N
update: N
reservation: Y
stbx:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_1B
signed: N
byteReverse: N
update: N
reservation: N
stbux:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_1B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
sthbrx:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: Y
update: N
reservation: N
sthcx_dot:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: N
update: N
reservation: Y
sthx:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: N
update: N
reservation: N
sthux:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_2B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
stwbrx:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: Y
update: N
reservation: N
stwcx_dot:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: N
update: N
reservation: Y
stwx:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: N
update: N
reservation: N
stwux:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_4B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
stdbrx:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: Y
update: N
reservation: N
stdcx_dot:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: N
update: N
reservation: Y
stdx:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: N
update: N
reservation: N
stdux:
unit: U_LDST
internalOp: LDST_STORE
rA: RA_RA_OR_ZERO
rB: RB_RB
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
length: LEN_8B
signed: N
byteReverse: N
update: Y
reservation: N
invertIn: N
carryIn: CA_0
# Multiply
mulli:
unit: U_MUL
rA: RA_RA
rB: RB_CONST_SI
rOut: ROUT_RT
compare: CMP_RC_0
is32bit: N
signed: Y
high: N
mulhd:
unit: U_MUL
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: N
signed: Y
high: Y
mulhdu:
unit: U_MUL
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: N
signed: N
high: Y
mulhw:
unit: U_MUL
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: Y
signed: Y
high: Y
mulhwu:
unit: U_MUL
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: Y
signed: N
high: Y
mulld:
unit: U_MUL
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: N
signed: Y
high: N
mullw:
unit: U_MUL
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: Y
signed: Y
high: N
# Divide
divdeu:
unit: U_DIV
internalOp: DIV_DIV
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: N
signed: N
extended: Y
divweu:
unit: U_DIV
internalOp: DIV_DIV
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: Y
signed: N
extended: Y
divde:
unit: U_DIV
internalOp: DIV_DIV
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: N
signed: Y
extended: Y
divwe:
unit: U_DIV
internalOp: DIV_DIV
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: Y
signed: Y
extended: Y
divdu:
unit: U_DIV
internalOp: DIV_DIV
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: N
signed: N
extended: N
divwu:
unit: U_DIV
internalOp: DIV_DIV
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: Y
signed: N
extended: N
divd:
unit: U_DIV
internalOp: DIV_DIV
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: N
signed: Y
extended: N
divw:
unit: U_DIV
internalOp: DIV_DIV
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: Y
signed: Y
extended: N
modud:
unit: U_DIV
internalOp: DIV_MOD
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: N
signed: N
extended: N
moduw:
unit: U_DIV
internalOp: DIV_MOD
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: Y
signed: N
extended: N
modsd:
unit: U_DIV
internalOp: DIV_MOD
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: N
signed: Y
extended: N
modsw:
unit: U_DIV
internalOp: DIV_MOD
rA: RA_RA
rB: RB_RB
rOut: ROUT_RT
compare: CMP_RC_RC
is32bit: Y
signed: Y
extended: N
# cache control
sync:
unit: U_NONE
compare: CMP_RC_0
isync:
unit: U_NONE
compare: CMP_RC_0
dcbf:
unit: U_NONE
compare: CMP_RC_0
dcbst:
unit: U_NONE
compare: CMP_RC_0
dcbt:
unit: U_NONE
compare: CMP_RC_0
dcbtst:
unit: U_NONE
compare: CMP_RC_0
icbi:
unit: U_NONE
compare: CMP_RC_0
icbt:
unit: U_NONE
compare: CMP_RC_0
# Count leading/trailing zeroes
cntlzd:
unit: U_ZER
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
countRight: N
cntlzw:
unit: U_ZER
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: Y
countRight: N
cnttzd:
unit: U_ZER
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: N
countRight: Y
cnttzw:
unit: U_ZER
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_RC
is32bit: Y
countRight: Y
popcntb:
unit: U_POP
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_0
length: LEN_1B
popcntw:
unit: U_POP
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_0
length: LEN_4B
popcntd:
unit: U_POP
rS: RS_RS
rOut: ROUT_RA
compare: CMP_RC_0
length: LEN_8B
cmpdi:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_SI
rOut: ROUT_NONE
invertIn: Y
carryIn: CA_1
crOut: Y
is32bit: N
signed: Y
compare: CMP_CMP
cmpwi:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_SI
rOut: ROUT_NONE
invertIn: Y
carryIn: CA_1
crOut: Y
is32bit: Y
signed: Y
compare: CMP_CMP
cmpd:
unit: U_ADD
rA: RA_RA
rB: RB_RB
rOut: ROUT_NONE
invertIn: Y
carryIn: CA_1
crOut: Y
is32bit: N
signed: Y
compare: CMP_CMP
cmpw:
unit: U_ADD
rA: RA_RA
rB: RB_RB
rOut: ROUT_NONE
invertIn: Y
carryIn: CA_1
crOut: Y
is32bit: Y
signed: Y
compare: CMP_CMP
cmpldi:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_UI
rOut: ROUT_NONE
invertIn: Y
carryIn: CA_1
crOut: Y
is32bit: N
signed: N
compare: CMP_CMP
cmplwi:
unit: U_ADD
rA: RA_RA
rB: RB_CONST_UI
rOut: ROUT_NONE
invertIn: Y
carryIn: CA_1
crOut: Y
is32bit: Y
signed: N
compare: CMP_CMP
cmpld:
unit: U_ADD
rA: RA_RA
rB: RB_RB
rOut: ROUT_NONE
invertIn: Y
carryIn: CA_1
crOut: Y
is32bit: N
signed: N
compare: CMP_CMP
cmplw:
unit: U_ADD
rA: RA_RA
rB: RB_RB
rOut: ROUT_NONE
invertIn: Y
carryIn: CA_1
crOut: Y
is32bit: Y
signed: N
compare: CMP_CMP
mfspr:
unit: U_SPR
internalOp: SPR_MF
rOut: ROUT_RT
compare: CMP_RC_0
mtspr:
unit: U_SPR
internalOp: SPR_MT
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
mfcr:
unit: U_CR
internalOp: CR_MF
rOut: ROUT_RT
compare: CMP_RC_0
fxm: FXM_FF
mfocrf:
unit: U_CR
internalOp: CR_MF
rOut: ROUT_RT
compare: CMP_RC_0
fxm: FXM_ONEHOT
mtcrf:
unit: U_CR
internalOp: CR_MT
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
fxm: FXM
mtocrf:
unit: U_CR
internalOp: CR_MT
rS: RS_RS
rOut: ROUT_NONE
compare: CMP_RC_0
fxm: FXM_ONEHOT
b:
unit: U_BR
internalOp: BR_UNCOND
brTarget: BR_TARGET_NONE
bc:
unit: U_BR
internalOp: BR_COND
brTarget: BR_TARGET_NONE
bclr:
unit: U_BR
internalOp: BR_COND
brTarget: BR_TARGET_LR
bcctr:
unit: U_BR
internalOp: BR_COND
brTarget: BR_TARGET_CTR
# Just to get our test cases going for now
tdi:
unit: U_NONE