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 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