5f2a7b260f
For example, when ncg emits slw r9,r8,r5 mr. r9,r9 then top simplifies the code to slw. r9,r8,r5
53 lines
1.5 KiB
Plaintext
53 lines
1.5 KiB
Plaintext
|
|
/* PowerPC table for ACK target optimizer */
|
|
|
|
MAXOP 3;
|
|
LABEL_STARTER '.';
|
|
|
|
%%;
|
|
|
|
RNZ { strcmp(VAL, "r0") }; /* not r0 */
|
|
X, Y, Z { TRUE };
|
|
|
|
%%;
|
|
|
|
/* Whitespace is significant here! */
|
|
|
|
addi RNZ, RNZ, 0 -> ;
|
|
addis RNZ, RNZ, 0 -> ;
|
|
|
|
or X, Y, Y -> mr X, Y ;
|
|
or. X, Y, Y -> mr. X, Y ;
|
|
|
|
mr X, X -> ;
|
|
fmr X, X -> ;
|
|
|
|
add X, Y, Z : mr. X, X -> add. X, Y, Z ;
|
|
and X, Y, Z : mr. X, X -> and. X, Y, Z ;
|
|
andc X, Y, Z : mr. X, X -> andc. X, Y, Z ;
|
|
divw X, Y, Z : mr. X, X -> divw. X, Y, Z ;
|
|
divwu X, Y, Z : mr. X, X -> divwu. X, Y, Z ;
|
|
extsb X, Y, Z : mr. X, X -> extsb. X, Y, Z ;
|
|
extsh X, Y, Z : mr. X, X -> extsh. X, Y, Z ;
|
|
eqv X, Y, Z : mr. X, X -> eqv. X, Y, Z ;
|
|
mullw X, Y, Z : mr. X, X -> mullw. X, Y, Z ;
|
|
nand X, Y, Z : mr. X, X -> nand. X, Y, Z ;
|
|
nor X, Y, Z : mr. X, X -> nor. X, Y, Z ;
|
|
or X, Y, Z : mr. X, X -> or. X, Y, Z ;
|
|
orc X, Y, Z : mr. X, X -> orc. X, Y, Z ;
|
|
slw X, Y, Z : mr. X, X -> slw. X, Y, Z ;
|
|
slwi X, Y, Z : mr. X, X -> slwi. X, Y, Z ;
|
|
subf X, Y, Z : mr. X, X -> subf. X, Y, Z ;
|
|
sraw X, Y, Z : mr. X, X -> sraw. X, Y, Z ;
|
|
srawi X, Y, Z : mr. X, X -> srawi. X, Y, Z ;
|
|
srw X, Y, Z : mr. X, X -> srw. X, Y, Z ;
|
|
srwi X, Y, Z : mr. X, X -> srwi. X, Y, Z ;
|
|
xor X, Y, Z : mr. X, X -> xor. X, Y, Z ;
|
|
|
|
b X : labdef X -> labdef X ;
|
|
|
|
/* IFFALSE=4, IFTRUE=12, ALWAYS=20 */
|
|
/* LT=0, GT=1, EQ=2, OV=3 */
|
|
|
|
%%;
|