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:
George Koehler 2016-10-06 22:59:27 -04:00
parent 7cccd88b71
commit 409ba7fb1b

View file

@ -233,8 +233,6 @@ TOKENS
SETS
GPRI = GPR + GPRE.
SUM_ALL = SUM_RC + SUM_RR.
TRISTATE_ALL = TRISTATE_RC_S + TRISTATE_RC_U + TRISTATE_RR_S +
@ -255,29 +253,29 @@ SETS
INSTRUCTIONS
add GPRI:wo, GPRI:ro, GPRI:ro.
addX "add." GPRI:wo, GPRI:ro, GPRI:ro.
addi GPRI:wo, GPRI:ro, CONST:ro.
addis GPRI:wo, GPRI:ro, CONST+HILABEL:ro.
and GPRI:wo, GPRI:ro, GPRI:ro.
andc GPRI:wo, GPRI:ro, GPRI:ro.
andiX "andi." GPRI:wo, GPRI:ro, CONST:ro kills :cc.
andisX "andis." GPRI:wo, GPRI:ro, CONST:ro kills :cc.
add GPR:wo, GPR:ro, GPR:ro.
addX "add." GPR:wo, GPR:ro, GPR:ro.
addi GPR:wo, GPR:ro, CONST:ro.
addis GPR:wo, GPR:ro, CONST+HILABEL:ro.
and GPR:wo, GPR:ro, GPR:ro.
andc GPR:wo, GPR:ro, GPR:ro.
andiX "andi." GPR:wo, GPR:ro, CONST:ro kills :cc.
andisX "andis." GPR:wo, GPR:ro, CONST:ro kills :cc.
b LABEL:ro.
bc CONST:ro, CONST:ro, LABEL:ro.
bcctr CONST:ro, CONST:ro, CONST:ro.
bcctrl CONST:ro, CONST:ro, CONST:ro.
bclr CONST:ro, CONST:ro, CONST:ro.
bl LABEL:ro.
cmp CR:ro, CONST:ro, GPRI:ro, GPR:ro kills :cc.
cmpi CR:ro, CONST:ro, GPRI:ro, CONST:ro kills :cc.
cmpl CR:ro, CONST:ro, GPRI:ro, GPR:ro kills :cc.
cmpli CR:ro, CONST:ro, GPRI:ro, CONST:ro kills :cc.
divw GPRI:wo, GPRI:ro, GPRI:ro.
divwu GPRI:wo, GPRI:ro, GPRI:ro.
eqv GPRI:wo, GPRI:ro, GPRI:ro.
extsb GPRI:wo, GPRI:ro.
extsh GPRI:wo, GPRI:ro.
cmp CR:ro, CONST:ro, GPR:ro, GPR: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.
cmpli CR:ro, CONST:ro, GPR:ro, CONST:ro kills :cc.
divw GPR:wo, GPR:ro, GPR:ro.
divwu GPR:wo, GPR:ro, GPR:ro.
eqv GPR:wo, GPR:ro, GPR:ro.
extsb GPR:wo, GPR:ro.
extsh GPR:wo, GPR:ro.
fadd FREG:wo, FREG:ro, FREG:ro.
fadds FSREG:wo, FSREG:ro, FSREG:ro.
fcmpo CR:wo, FPR:ro, FPR:ro.
@ -292,61 +290,54 @@ INSTRUCTIONS
fsubs FSREG:wo, FSREG:ro, FSREG:ro.
fmr FPR:wo, FPR:ro.
fmr FSREG:wo, FSREG:ro.
lbzx GPRI:wo, GPR:ro, GPR:ro.
lbz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
lbzx GPR:wo, GPR:ro, GPR:ro.
lbz GPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
lfd FPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
lfdu FPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
lfdx FPR:wo, GPR:ro, GPR:ro.
lfs FSREG:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
lfsu FSREG:wo, GPRINDIRECT+GPRINDIRECTLO:rw.
lfsx FSREG:wo, GPR:ro, GPR:ro.
lhzx GPRI:wo, GPR:ro, GPR:ro.
lhax GPRI:wo, GPR:ro, GPR:ro.
lha GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
lhz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
li32 GPRI:wo, LABEL:ro.
lwzu GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
lwzx GPRI:wo, GPR:ro, GPR:ro.
lwz GPRI:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
nand GPRI:wo, GPRI:ro, GPRI:ro.
neg GPRI:wo, GPRI:ro.
nor GPRI:wo, GPRI:ro, GPRI:ro.
mfcr GPRI:wo.
mullw GPRI:wo, GPRI:ro, GPRI:ro.
mfspr GPRI:wo, SPR:ro.
mtspr SPR:wo, GPRI:ro.
or GPRI:wo, GPRI:ro, GPRI:ro.
orc GPRI:wo, GPRI:ro, GPRI:ro.
ori GPRI:wo, GPRI:ro, CONST+LOLABEL:ro.
orX "or." GPRI:wo, GPRI:ro, GPRI:ro kills :cc.
rlwinm GPRI:wo, GPRI:ro, CONST:ro, CONST:ro, CONST:ro.
slw GPRI:wo, GPRI:ro, GPRI:ro.
subf GPRI:wo, GPRI:ro, GPRI:ro.
sraw GPRI:wo, GPRI:ro, GPRI:ro.
srawi GPRI:wo, GPRI:ro, CONST:ro.
srw GPRI:wo, GPRI:ro, GPRI:ro.
stb GPRI:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
stbx GPRI:ro, GPR:ro, GPR:ro.
lhzx GPR:wo, GPR:ro, GPR:ro.
lhax GPR:wo, GPR:ro, GPR:ro.
lha GPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
lhz GPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
li32 GPR:wo, LABEL:ro.
lwzu GPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
lwzx GPR:wo, GPR:ro, GPR:ro.
lwz GPR:wo, GPRINDIRECT+GPRINDIRECTLO:ro.
nand GPR:wo, GPR:ro, GPR:ro.
neg GPR:wo, GPR:ro.
nor GPR:wo, GPR:ro, GPR:ro.
mfcr GPR:wo.
mullw GPR:wo, GPR:ro, GPR:ro.
mfspr GPR:wo, SPR:ro.
mtspr SPR:wo, GPR:ro.
or GPR:wo, GPR:ro, GPR:ro.
orc GPR:wo, GPR:ro, GPR:ro.
ori GPR:wo, GPR:ro, CONST+LOLABEL:ro.
orX "or." GPR:wo, GPR:ro, GPR:ro kills :cc.
rlwinm GPR:wo, GPR:ro, CONST:ro, CONST:ro, CONST:ro.
slw GPR:wo, GPR:ro, GPR:ro.
subf GPR:wo, GPR:ro, GPR:ro.
sraw GPR:wo, GPR:ro, GPR:ro.
srawi GPR:wo, GPR:ro, CONST:ro.
srw GPR:wo, GPR:ro, GPR:ro.
stb GPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
stbx GPR:ro, GPR:ro, GPR:ro.
stfd FPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
stfdu FPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
stfdx FPR:ro, GPR:ro, GPR:ro.
stfs FSREG:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
stfsu FSREG:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
stfsx FSREG:ro, GPR:ro, GPR:ro.
sth GPRI:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
sthx GPRI:ro, GPR:ro, GPR:ro.
stw GPRI:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
stwx GPRI:ro, GPR:ro, GPR:ro.
stwu GPRI:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
xor GPRI:wo, GPRI:ro, GPRI:ro.
xori GPRI:wo, GPRI: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.
sth GPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
sthx GPR:ro, GPR:ro, GPR:ro.
stw GPR:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
stwx GPR:ro, GPR:ro, GPR:ro.
stwu GPR+GPRE:ro, GPRINDIRECT+GPRINDIRECTLO:rw.
xor GPR:wo, GPR:ro, GPR:ro.
xori GPR:wo, GPR:ro, CONST:ro.
comment "!" LABEL+LABELI:ro.
@ -365,18 +356,18 @@ MOVES
from GPR to GPRE
gen
COMMENT("move GPR->GPRE")
or %2, %1, %1
or %2.reg, %1, %1
/* Constants */
from CONST smalls(%val) to GPR
gen
COMMENT("move CONST->GPRE")
COMMENT("move CONST->GPR")
addi %2, R0, {CONST, lo(%1.val)}
from CONST to GPR
gen
COMMENT("move CONST->GPRE")
COMMENT("move CONST->GPR")
addis %2, R0, {CONST, hi(%1.val)}
ori %2, %2, {CONST, lo(%1.val)}
@ -415,11 +406,6 @@ MOVES
COMMENT("move SUM_RR->GPR")
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 */
from IND_RC_B smalls(%off) to GPR
@ -788,7 +774,7 @@ STACKINGRULES
from SUM_ALL + TRISTATE_ALL + LOGICAL_ALL to STACK
gen
move %1, {GPRE, RSCRATCH}
move %1, RSCRATCH
stwu RSCRATCH, {GPRINDIRECT, SP, 0-4}
from IND_ALL_W to STACK
@ -833,7 +819,7 @@ COERCIONS
uses REG
gen
COMMENT("coerce LABEL->REG")
move %1, {GPRE, %a}
move %1, %a
yields %a
from STACK
@ -861,7 +847,7 @@ COERCIONS
from SUM_ALL + TRISTATE_ALL + LOGICAL_ALL
uses REG
gen
move %1, {GPRE, %a}
move %1, %a
yields %a
from FSREG
@ -2019,10 +2005,10 @@ PATTERNS
pat ass /* Adjust stack by variable amount */
with CONST STACK
gen
move {SUM_RC, SP, %1.val}, {GPRE, SP}
move {SUM_RC, SP, %1.val}, SP
with GPR STACK
gen
move {SUM_RR, SP, %1}, {GPRE, SP}
move {SUM_RR, SP, %1}, SP
pat asp /* Adjust stack by constant amount */
leaving