Remove most of GPRE from mach/powerpc/ncg/table
We only need GPRE in a few places where we write {GPRE, regvar(...)} because ncgg can't parse plain regvar(...). In all other places, a plain GPR works. Also remove gpr_gpr_gpr and a few other unused and fake instructions from the list of instructions.
This commit is contained in:
parent
7cccd88b71
commit
409ba7fb1b
|
@ -233,8 +233,6 @@ TOKENS
|
||||||
|
|
||||||
SETS
|
SETS
|
||||||
|
|
||||||
GPRI = GPR + GPRE.
|
|
||||||
|
|
||||||
SUM_ALL = SUM_RC + SUM_RR.
|
SUM_ALL = SUM_RC + SUM_RR.
|
||||||
|
|
||||||
TRISTATE_ALL = TRISTATE_RC_S + TRISTATE_RC_U + TRISTATE_RR_S +
|
TRISTATE_ALL = TRISTATE_RC_S + TRISTATE_RC_U + TRISTATE_RR_S +
|
||||||
|
@ -255,29 +253,29 @@ SETS
|
||||||
|
|
||||||
INSTRUCTIONS
|
INSTRUCTIONS
|
||||||
|
|
||||||
add GPRI:wo, GPRI:ro, GPRI:ro.
|
add GPR:wo, GPR:ro, GPR:ro.
|
||||||
addX "add." GPRI:wo, GPRI:ro, GPRI:ro.
|
addX "add." GPR:wo, GPR:ro, GPR:ro.
|
||||||
addi GPRI:wo, GPRI:ro, CONST:ro.
|
addi GPR:wo, GPR:ro, CONST:ro.
|
||||||
addis GPRI:wo, GPRI:ro, CONST+HILABEL:ro.
|
addis GPR:wo, GPR:ro, CONST+HILABEL:ro.
|
||||||
and GPRI:wo, GPRI:ro, GPRI:ro.
|
and GPR:wo, GPR:ro, GPR:ro.
|
||||||
andc GPRI:wo, GPRI:ro, GPRI:ro.
|
andc GPR:wo, GPR:ro, GPR:ro.
|
||||||
andiX "andi." GPRI:wo, GPRI:ro, CONST:ro kills :cc.
|
andiX "andi." GPR:wo, GPR:ro, CONST:ro kills :cc.
|
||||||
andisX "andis." GPRI:wo, GPRI:ro, CONST:ro kills :cc.
|
andisX "andis." GPR:wo, GPR:ro, CONST:ro kills :cc.
|
||||||
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.
|
||||||
bcctrl CONST:ro, CONST:ro, CONST:ro.
|
bcctrl CONST:ro, CONST:ro, CONST:ro.
|
||||||
bclr CONST:ro, CONST:ro, CONST:ro.
|
bclr CONST:ro, CONST:ro, CONST:ro.
|
||||||
bl LABEL:ro.
|
bl LABEL:ro.
|
||||||
cmp CR:ro, CONST:ro, GPRI:ro, GPR:ro kills :cc.
|
cmp CR:ro, CONST:ro, GPR:ro, GPR:ro kills :cc.
|
||||||
cmpi CR:ro, CONST:ro, GPRI:ro, CONST:ro kills :cc.
|
cmpi CR:ro, CONST:ro, GPR:ro, CONST:ro kills :cc.
|
||||||
cmpl CR:ro, CONST:ro, GPRI:ro, GPR:ro kills :cc.
|
cmpl CR:ro, CONST:ro, GPR:ro, GPR:ro kills :cc.
|
||||||
cmpli CR:ro, CONST:ro, GPRI:ro, CONST:ro kills :cc.
|
cmpli CR:ro, CONST:ro, GPR:ro, CONST:ro kills :cc.
|
||||||
divw GPRI:wo, GPRI:ro, GPRI:ro.
|
divw GPR:wo, GPR:ro, GPR:ro.
|
||||||
divwu GPRI:wo, GPRI:ro, GPRI:ro.
|
divwu GPR:wo, GPR:ro, GPR:ro.
|
||||||
eqv GPRI:wo, GPRI:ro, GPRI:ro.
|
eqv GPR:wo, GPR:ro, GPR:ro.
|
||||||
extsb GPRI:wo, GPRI:ro.
|
extsb GPR:wo, GPR:ro.
|
||||||
extsh GPRI:wo, GPRI:ro.
|
extsh GPR:wo, GPR:ro.
|
||||||
fadd FREG:wo, FREG:ro, FREG:ro.
|
fadd FREG:wo, FREG:ro, FREG:ro.
|
||||||
fadds FSREG:wo, FSREG:ro, FSREG:ro.
|
fadds FSREG:wo, FSREG:ro, FSREG:ro.
|
||||||
fcmpo CR:wo, FPR:ro, FPR:ro.
|
fcmpo CR:wo, FPR:ro, FPR:ro.
|
||||||
|
@ -292,61 +290,54 @@ INSTRUCTIONS
|
||||||
fsubs FSREG:wo, FSREG:ro, FSREG:ro.
|
fsubs FSREG:wo, FSREG:ro, FSREG:ro.
|
||||||
fmr FPR:wo, FPR:ro.
|
fmr FPR:wo, FPR:ro.
|
||||||
fmr FSREG:wo, FSREG:ro.
|
fmr FSREG:wo, FSREG:ro.
|
||||||
lbzx GPRI:wo, GPR:ro, GPR:ro.
|
lbzx GPR:wo, GPR:ro, GPR:ro.
|
||||||
lbz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lbz GPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
lfd FPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lfd FPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
lfdu FPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lfdu FPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
lfdx FPR:wo, GPR:ro, GPR:ro.
|
lfdx FPR:wo, GPR:ro, GPR:ro.
|
||||||
lfs FSREG:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lfs FSREG:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
lfsu FSREG:wo, GPRINDIRECT+GPRINDIRECTLO:rw.
|
lfsu FSREG:wo, GPRINDIRECT+GPRINDIRECTLO:rw.
|
||||||
lfsx FSREG:wo, GPR:ro, GPR:ro.
|
lfsx FSREG:wo, GPR:ro, GPR:ro.
|
||||||
lhzx GPRI:wo, GPR:ro, GPR:ro.
|
lhzx GPR:wo, GPR:ro, GPR:ro.
|
||||||
lhax GPRI:wo, GPR:ro, GPR:ro.
|
lhax GPR:wo, GPR:ro, GPR:ro.
|
||||||
lha GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lha GPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
lhz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lhz GPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
li32 GPRI:wo, LABEL:ro.
|
li32 GPR:wo, LABEL:ro.
|
||||||
lwzu GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lwzu GPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
lwzx GPRI:wo, GPR:ro, GPR:ro.
|
lwzx GPR:wo, GPR:ro, GPR:ro.
|
||||||
lwz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
lwz GPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
|
||||||
nand GPRI:wo, GPRI:ro, GPRI:ro.
|
nand GPR:wo, GPR:ro, GPR:ro.
|
||||||
neg GPRI:wo, GPRI:ro.
|
neg GPR:wo, GPR:ro.
|
||||||
nor GPRI:wo, GPRI:ro, GPRI:ro.
|
nor GPR:wo, GPR:ro, GPR:ro.
|
||||||
mfcr GPRI:wo.
|
mfcr GPR:wo.
|
||||||
mullw GPRI:wo, GPRI:ro, GPRI:ro.
|
mullw GPR:wo, GPR:ro, GPR:ro.
|
||||||
mfspr GPRI:wo, SPR:ro.
|
mfspr GPR:wo, SPR:ro.
|
||||||
mtspr SPR:wo, GPRI:ro.
|
mtspr SPR:wo, GPR:ro.
|
||||||
or GPRI:wo, GPRI:ro, GPRI:ro.
|
or GPR:wo, GPR:ro, GPR:ro.
|
||||||
orc GPRI:wo, GPRI:ro, GPRI:ro.
|
orc GPR:wo, GPR:ro, GPR:ro.
|
||||||
ori GPRI:wo, GPRI:ro, CONST+LOLABEL:ro.
|
ori GPR:wo, GPR:ro, CONST+LOLABEL:ro.
|
||||||
orX "or." GPRI:wo, GPRI:ro, GPRI:ro kills :cc.
|
orX "or." GPR:wo, GPR:ro, GPR:ro kills :cc.
|
||||||
rlwinm GPRI:wo, GPRI:ro, CONST:ro, CONST:ro, CONST:ro.
|
rlwinm GPR:wo, GPR:ro, CONST:ro, CONST:ro, CONST:ro.
|
||||||
slw GPRI:wo, GPRI:ro, GPRI:ro.
|
slw GPR:wo, GPR:ro, GPR:ro.
|
||||||
subf GPRI:wo, GPRI:ro, GPRI:ro.
|
subf GPR:wo, GPR:ro, GPR:ro.
|
||||||
sraw GPRI:wo, GPRI:ro, GPRI:ro.
|
sraw GPR:wo, GPR:ro, GPR:ro.
|
||||||
srawi GPRI:wo, GPRI:ro, CONST:ro.
|
srawi GPR:wo, GPR:ro, CONST:ro.
|
||||||
srw GPRI:wo, GPRI:ro, GPRI:ro.
|
srw GPR:wo, GPR:ro, GPR:ro.
|
||||||
stb GPRI:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
stb GPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
||||||
stbx GPRI:ro, GPR:ro, GPR:ro.
|
stbx GPR:ro, GPR:ro, GPR:ro.
|
||||||
stfd FPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
stfd FPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
||||||
stfdu FPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
stfdu FPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
||||||
stfdx FPR:ro, GPR:ro, GPR:ro.
|
stfdx FPR:ro, GPR:ro, GPR:ro.
|
||||||
stfs FSREG:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
stfs FSREG:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
||||||
stfsu FSREG:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
stfsu FSREG:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
||||||
stfsx FSREG:ro, GPR:ro, GPR:ro.
|
stfsx FSREG:ro, GPR:ro, GPR:ro.
|
||||||
sth GPRI:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
sth GPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
||||||
sthx GPRI:ro, GPR:ro, GPR:ro.
|
sthx GPR:ro, GPR:ro, GPR:ro.
|
||||||
stw GPRI:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
stw GPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
||||||
stwx GPRI:ro, GPR:ro, GPR:ro.
|
stwx GPR:ro, GPR:ro, GPR:ro.
|
||||||
stwu GPRI:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
stwu GPR+GPRE:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
|
||||||
xor GPRI:wo, GPRI:ro, GPRI:ro.
|
xor GPR:wo, GPR:ro, GPR:ro.
|
||||||
xori GPRI:wo, GPRI:ro, CONST:ro.
|
xori GPR:wo, GPR:ro, CONST:ro.
|
||||||
|
|
||||||
gpr_gpr_gpr GPRI:wo, GPRI:ro, GPRI:ro.
|
|
||||||
gpr_gpr_si GPRI:wo, GPRI:ro, CONST:ro.
|
|
||||||
gpr_ro_gprindirect GPRI:ro, GPRINDIRECT:rw.
|
|
||||||
gpr_ro_gpr_gpr GPRI:ro, GPRI:ro, GPRI:ro.
|
|
||||||
gpr_wo_gprindirect GPRI:wo, GPRINDIRECT:ro.
|
|
||||||
gpr_wo_gpr_gpr GPRI:wo, GPRI:ro, GPRI:ro.
|
|
||||||
|
|
||||||
comment "!" LABEL+LABELI:ro.
|
comment "!" LABEL+LABELI:ro.
|
||||||
|
|
||||||
|
@ -365,18 +356,18 @@ MOVES
|
||||||
from GPR to GPRE
|
from GPR to GPRE
|
||||||
gen
|
gen
|
||||||
COMMENT("move GPR->GPRE")
|
COMMENT("move GPR->GPRE")
|
||||||
or %2, %1, %1
|
or %2.reg, %1, %1
|
||||||
|
|
||||||
/* Constants */
|
/* Constants */
|
||||||
|
|
||||||
from CONST smalls(%val) to GPR
|
from CONST smalls(%val) to GPR
|
||||||
gen
|
gen
|
||||||
COMMENT("move CONST->GPRE")
|
COMMENT("move CONST->GPR")
|
||||||
addi %2, R0, {CONST, lo(%1.val)}
|
addi %2, R0, {CONST, lo(%1.val)}
|
||||||
|
|
||||||
from CONST to GPR
|
from CONST to GPR
|
||||||
gen
|
gen
|
||||||
COMMENT("move CONST->GPRE")
|
COMMENT("move CONST->GPR")
|
||||||
addis %2, R0, {CONST, hi(%1.val)}
|
addis %2, R0, {CONST, hi(%1.val)}
|
||||||
ori %2, %2, {CONST, lo(%1.val)}
|
ori %2, %2, {CONST, lo(%1.val)}
|
||||||
|
|
||||||
|
@ -415,11 +406,6 @@ MOVES
|
||||||
COMMENT("move SUM_RR->GPR")
|
COMMENT("move SUM_RR->GPR")
|
||||||
add %2, %1.reg1, %1.reg2
|
add %2, %1.reg1, %1.reg2
|
||||||
|
|
||||||
from SUM_RR to GPR
|
|
||||||
gen
|
|
||||||
COMMENT("move SUM_RR->GPRE")
|
|
||||||
add %2, %1.reg1, %1.reg2
|
|
||||||
|
|
||||||
/* Read/write byte */
|
/* Read/write byte */
|
||||||
|
|
||||||
from IND_RC_B smalls(%off) to GPR
|
from IND_RC_B smalls(%off) to GPR
|
||||||
|
@ -788,7 +774,7 @@ STACKINGRULES
|
||||||
|
|
||||||
from SUM_ALL + TRISTATE_ALL + LOGICAL_ALL to STACK
|
from SUM_ALL + TRISTATE_ALL + LOGICAL_ALL to STACK
|
||||||
gen
|
gen
|
||||||
move %1, {GPRE, RSCRATCH}
|
move %1, RSCRATCH
|
||||||
stwu RSCRATCH, {GPRINDIRECT, SP, 0-4}
|
stwu RSCRATCH, {GPRINDIRECT, SP, 0-4}
|
||||||
|
|
||||||
from IND_ALL_W to STACK
|
from IND_ALL_W to STACK
|
||||||
|
@ -833,7 +819,7 @@ COERCIONS
|
||||||
uses REG
|
uses REG
|
||||||
gen
|
gen
|
||||||
COMMENT("coerce LABEL->REG")
|
COMMENT("coerce LABEL->REG")
|
||||||
move %1, {GPRE, %a}
|
move %1, %a
|
||||||
yields %a
|
yields %a
|
||||||
|
|
||||||
from STACK
|
from STACK
|
||||||
|
@ -861,7 +847,7 @@ COERCIONS
|
||||||
from SUM_ALL + TRISTATE_ALL + LOGICAL_ALL
|
from SUM_ALL + TRISTATE_ALL + LOGICAL_ALL
|
||||||
uses REG
|
uses REG
|
||||||
gen
|
gen
|
||||||
move %1, {GPRE, %a}
|
move %1, %a
|
||||||
yields %a
|
yields %a
|
||||||
|
|
||||||
from FSREG
|
from FSREG
|
||||||
|
@ -2019,10 +2005,10 @@ PATTERNS
|
||||||
pat ass /* Adjust stack by variable amount */
|
pat ass /* Adjust stack by variable amount */
|
||||||
with CONST STACK
|
with CONST STACK
|
||||||
gen
|
gen
|
||||||
move {SUM_RC, SP, %1.val}, {GPRE, SP}
|
move {SUM_RC, SP, %1.val}, SP
|
||||||
with GPR STACK
|
with GPR STACK
|
||||||
gen
|
gen
|
||||||
move {SUM_RR, SP, %1}, {GPRE, SP}
|
move {SUM_RR, SP, %1}, SP
|
||||||
|
|
||||||
pat asp /* Adjust stack by constant amount */
|
pat asp /* Adjust stack by constant amount */
|
||||||
leaving
|
leaving
|
||||||
|
|
Loading…
Reference in a new issue