Add costs to powerpc instructions.
Also show how andi., andis., or., set condition codes.
This commit is contained in:
parent
f33b30ed3c
commit
c7b68033ef
1 changed files with 67 additions and 55 deletions
|
@ -274,14 +274,26 @@ SETS
|
||||||
|
|
||||||
INSTRUCTIONS
|
INSTRUCTIONS
|
||||||
|
|
||||||
|
/* We give time as cycles of total latency from Freescale
|
||||||
|
* Semiconductor, MPC7450 RISC Microprocessor Family Reference
|
||||||
|
* Manual, Rev. 5, section 6.6.
|
||||||
|
*
|
||||||
|
* We have only 4-byte alignment for doubles; 8-byte alignment is
|
||||||
|
* optimal. We guess the misalignment penalty by adding 1 cycle to
|
||||||
|
* the cost of loading or storing a double:
|
||||||
|
* lfd lfdu lfdx: 4 -> 5
|
||||||
|
* stfd stfdu stfdx: 3 -> 4
|
||||||
|
*/
|
||||||
|
cost(4, 1) /* space, time */
|
||||||
|
|
||||||
add GPR:wo, GPR:ro, GPR:ro.
|
add GPR:wo, GPR:ro, GPR:ro.
|
||||||
addX "add." GPR:wo, GPR:ro, GPR:ro.
|
addX "add." GPR:wo, GPR:ro, GPR:ro.
|
||||||
addi GPR:wo, GPR:ro, CONST:ro.
|
addi GPR:wo, GPR:ro, CONST:ro.
|
||||||
addis GPR:wo, GPR:ro, CONST:ro.
|
addis GPR:wo, GPR:ro, CONST:ro.
|
||||||
and GPR:wo, GPR:ro, GPR:ro.
|
and GPR:wo, GPR:ro, GPR:ro.
|
||||||
andc GPR:wo, GPR:ro, GPR:ro.
|
andc GPR:wo, GPR:ro, GPR:ro.
|
||||||
andiX "andi." GPR:wo, GPR:ro, CONST:ro kills :cc.
|
andiX "andi." GPR:wo:cc, GPR:ro, CONST:ro.
|
||||||
andisX "andis." GPR:wo, GPR:ro, CONST:ro kills :cc.
|
andisX "andis." GPR:wo:cc, GPR:ro, CONST:ro.
|
||||||
b LABEL:ro.
|
b LABEL:ro.
|
||||||
bc CONST:ro, CONST:ro, LABEL:ro.
|
bc CONST:ro, CONST:ro, LABEL:ro.
|
||||||
bcctr CONST:ro, CONST:ro, CONST:ro.
|
bcctr CONST:ro, CONST:ro, CONST:ro.
|
||||||
|
@ -292,77 +304,77 @@ INSTRUCTIONS
|
||||||
cmpi CR:ro, CONST:ro, GPR:ro, CONST:ro kills :cc.
|
cmpi CR:ro, CONST:ro, GPR:ro, CONST:ro kills :cc.
|
||||||
cmpl CR:ro, CONST:ro, GPR:ro, GPR:ro kills :cc.
|
cmpl CR:ro, CONST:ro, GPR:ro, GPR:ro kills :cc.
|
||||||
cmpli CR:ro, CONST:ro, GPR:ro, CONST:ro kills :cc.
|
cmpli CR:ro, CONST:ro, GPR:ro, CONST:ro kills :cc.
|
||||||
divw GPR:wo, GPR:ro, GPR:ro.
|
divw GPR:wo, GPR:ro, GPR:ro cost(4, 23).
|
||||||
divwu GPR:wo, GPR:ro, GPR:ro.
|
divwu GPR:wo, GPR:ro, GPR:ro cost(4, 23).
|
||||||
eqv GPR:wo, GPR:ro, GPR:ro.
|
eqv GPR:wo, GPR:ro, GPR:ro.
|
||||||
extsb GPR:wo, GPR:ro.
|
extsb GPR:wo, GPR:ro.
|
||||||
extsh GPR:wo, GPR:ro.
|
extsh GPR:wo, GPR:ro.
|
||||||
fadd FREG:wo, FREG:ro, FREG:ro.
|
fadd FREG:wo, FREG:ro, FREG:ro cost(4, 5).
|
||||||
fadds FSREG:wo, FSREG:ro, FSREG:ro.
|
fadds FSREG:wo, FSREG:ro, FSREG:ro cost(4, 5).
|
||||||
fcmpo CR:wo, FPR:ro, FPR:ro.
|
fcmpo CR:wo, FPR:ro, FPR:ro cost(4, 5).
|
||||||
fdiv FREG:wo, FREG:ro, FREG:ro.
|
fdiv FREG:wo, FREG:ro, FREG:ro cost(4, 35).
|
||||||
fdivs FSREG:wo, FSREG:ro, FSREG:ro.
|
fdivs FSREG:wo, FSREG:ro, FSREG:ro cost(4, 21).
|
||||||
fneg FREG:wo, FREG:ro.
|
fmr FPR:wo, FPR:ro cost(4, 5).
|
||||||
fneg FSREG:wo, FSREG:ro.
|
fmr FSREG:wo, FSREG:ro cost(4, 5).
|
||||||
fmul FREG:wo, FREG:ro, FREG:ro.
|
fmul FREG:wo, FREG:ro, FREG:ro cost(4, 5).
|
||||||
fmuls FSREG:wo, FSREG:ro, FSREG:ro.
|
fmuls FSREG:wo, FSREG:ro, FSREG:ro cost(4, 5).
|
||||||
frsp FSREG:wo, FREG:ro.
|
fneg FREG:wo, FREG:ro cost(4, 5).
|
||||||
fsub FREG:wo, FREG:ro, FREG:ro.
|
fneg FSREG:wo, FSREG:ro cost(4, 5).
|
||||||
fsubs FSREG:wo, FSREG:ro, FSREG:ro.
|
frsp FSREG:wo, FREG:ro cost(4, 5).
|
||||||
fmr FPR:wo, FPR:ro.
|
fsub FREG:wo, FREG:ro, FREG:ro cost(4, 5).
|
||||||
fmr FSREG:wo, FSREG:ro.
|
fsubs FSREG:wo, FSREG:ro, FSREG:ro cost(4, 5).
|
||||||
lbz GPR:wo, GPRINDIRECT:ro.
|
lbz GPR:wo, GPRINDIRECT:ro cost(4, 3).
|
||||||
lbzx GPR:wo, GPR:ro, GPR:ro.
|
lbzx GPR:wo, GPR:ro, GPR:ro cost(4, 3).
|
||||||
lfd FPR:wo, GPRINDIRECT:ro.
|
lfd FPR:wo, GPRINDIRECT:ro cost(4, 5).
|
||||||
lfdu FPR:wo, GPRINDIRECT:ro.
|
lfdu FPR:wo, GPRINDIRECT:ro cost(4, 5).
|
||||||
lfdx FPR:wo, GPR:ro, GPR:ro.
|
lfdx FPR:wo, GPR:ro, GPR:ro cost(4, 5).
|
||||||
lfs FSREG:wo, GPRINDIRECT:ro.
|
lfs FSREG:wo, GPRINDIRECT:ro cost(4, 4).
|
||||||
lfsu FSREG:wo, GPRINDIRECT:rw.
|
lfsu FSREG:wo, GPRINDIRECT:rw cost(4, 4).
|
||||||
lfsx FSREG:wo, GPR:ro, GPR:ro.
|
lfsx FSREG:wo, GPR:ro, GPR:ro cost(4, 4).
|
||||||
lha GPR:wo, GPRINDIRECT:ro.
|
lha GPR:wo, GPRINDIRECT:ro cost(4, 3).
|
||||||
lhax GPR:wo, GPR:ro, GPR:ro.
|
lhax GPR:wo, GPR:ro, GPR:ro cost(4, 3).
|
||||||
lhz GPR:wo, GPRINDIRECT:ro.
|
lhz GPR:wo, GPRINDIRECT:ro cost(4, 3).
|
||||||
lhzx GPR:wo, GPR:ro, GPR:ro.
|
lhzx GPR:wo, GPR:ro, GPR:ro cost(4, 3).
|
||||||
li32 GPR:wo, LABEL:ro.
|
li32 GPR:wo, LABEL:ro cost(8, 2).
|
||||||
lwzu GPR:wo, GPRINDIRECT:ro.
|
lwzu GPR:wo, GPRINDIRECT:ro cost(4, 3).
|
||||||
lwzx GPR:wo, GPR:ro, GPR:ro.
|
lwzx GPR:wo, GPR:ro, GPR:ro cost(4, 3).
|
||||||
lwz GPR:wo, GPRINDIRECT:ro.
|
lwz GPR:wo, GPRINDIRECT:ro cost(4, 3).
|
||||||
nand GPR:wo, GPR:ro, GPR:ro.
|
nand GPR:wo, GPR:ro, GPR:ro.
|
||||||
neg GPR:wo, GPR:ro.
|
neg GPR:wo, GPR:ro.
|
||||||
nor GPR:wo, GPR:ro, GPR:ro.
|
nor GPR:wo, GPR:ro, GPR:ro.
|
||||||
mfcr GPR:wo.
|
mfcr GPR:wo cost(4,2).
|
||||||
mullw GPR:wo, GPR:ro, GPR:ro.
|
mullw GPR:wo, GPR:ro, GPR:ro cost(4, 4).
|
||||||
mfspr GPR:wo, SPR:ro.
|
mfspr GPR:wo, SPR:ro cost(4, 3).
|
||||||
mtspr SPR:wo, GPR:ro.
|
mtspr SPR:wo, GPR:ro cost(4, 2).
|
||||||
or GPR:wo, GPR:ro, GPR:ro.
|
or GPR:wo, GPR:ro, GPR:ro.
|
||||||
orc GPR:wo, GPR:ro, GPR:ro.
|
orc GPR:wo, GPR:ro, GPR:ro.
|
||||||
ori GPR:wo, GPR:ro, CONST:ro.
|
ori GPR:wo, GPR:ro, CONST:ro.
|
||||||
oris GPR:wo, GPR:ro, CONST:ro.
|
oris GPR:wo, GPR:ro, CONST:ro.
|
||||||
orX "or." GPR:wo, GPR:ro, GPR:ro kills :cc.
|
orX "or." GPR:wo:cc, GPR:ro, GPR:ro.
|
||||||
rlwinm GPR:wo, GPR:ro, CONST:ro, CONST:ro, CONST:ro.
|
rlwinm GPR:wo, GPR:ro, CONST:ro, CONST:ro, CONST:ro.
|
||||||
slw GPR:wo, GPR:ro, GPR:ro.
|
slw GPR:wo, GPR:ro, GPR:ro.
|
||||||
subf GPR:wo, GPR:ro, GPR:ro.
|
subf GPR:wo, GPR:ro, GPR:ro.
|
||||||
sraw GPR:wo, GPR:ro, GPR:ro.
|
sraw GPR:wo, GPR:ro, GPR:ro cost(4, 2).
|
||||||
srawi GPR:wo, GPR:ro, CONST:ro.
|
srawi GPR:wo, GPR:ro, CONST:ro cost(4, 2).
|
||||||
srw GPR:wo, GPR:ro, GPR:ro.
|
srw GPR:wo, GPR:ro, GPR:ro.
|
||||||
stb GPR:ro, GPRINDIRECT:rw.
|
stb GPR:ro, GPRINDIRECT:rw cost(4, 3).
|
||||||
stbx GPR:ro, GPR:ro, GPR:ro.
|
stbx GPR:ro, GPR:ro, GPR:ro cost(4, 3).
|
||||||
stfd FPR:ro, GPRINDIRECT:rw.
|
stfd FPR:ro, GPRINDIRECT:rw cost(4, 4).
|
||||||
stfdu FPR:ro, GPRINDIRECT:rw.
|
stfdu FPR:ro, GPRINDIRECT:rw cost(4, 4).
|
||||||
stfdx FPR:ro, GPR:ro, GPR:ro.
|
stfdx FPR:ro, GPR:ro, GPR:ro cost(4, 4).
|
||||||
stfs FSREG:ro, GPRINDIRECT:rw.
|
stfs FSREG:ro, GPRINDIRECT:rw cost(4, 3).
|
||||||
stfsu FSREG:ro, GPRINDIRECT:rw.
|
stfsu FSREG:ro, GPRINDIRECT:rw cost(4, 3).
|
||||||
stfsx FSREG:ro, GPR:ro, GPR:ro.
|
stfsx FSREG:ro, GPR:ro, GPR:ro cost(4, 3).
|
||||||
sth GPR:ro, GPRINDIRECT:rw.
|
sth GPR:ro, GPRINDIRECT:rw cost(4, 3).
|
||||||
sthx GPR:ro, GPR:ro, GPR:ro.
|
sthx GPR:ro, GPR:ro, GPR:ro cost(4, 3).
|
||||||
stw GPR:ro, GPRINDIRECT:rw.
|
stw GPR:ro, GPRINDIRECT:rw cost(4, 3).
|
||||||
stwx GPR:ro, GPR:ro, GPR:ro.
|
stwx GPR:ro, GPR:ro, GPR:ro cost(4, 3).
|
||||||
stwu GPR+GPRE:ro, GPRINDIRECT:rw.
|
stwu GPR+GPRE:ro, GPRINDIRECT:rw cost(4, 3).
|
||||||
xor GPR:wo, GPR:ro, GPR:ro.
|
xor GPR:wo, GPR:ro, GPR:ro.
|
||||||
xori GPR:wo, GPR:ro, CONST:ro.
|
xori GPR:wo, GPR:ro, CONST:ro.
|
||||||
xoris GPR:wo, GPR:ro, CONST:ro.
|
xoris GPR:wo, GPR:ro, CONST:ro.
|
||||||
|
|
||||||
comment "!" LABEL:ro.
|
comment "!" LABEL:ro cost(0, 0).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue