diff --git a/mach/powerpc/ncg/table b/mach/powerpc/ncg/table index e566c51b9..e66ae855f 100644 --- a/mach/powerpc/ncg/table +++ b/mach/powerpc/ncg/table @@ -348,7 +348,7 @@ INSTRUCTIONS or GPR:wo, GPR:ro, GPR:ro. mr GPR:wo, GPR:ro. orX "or." GPR:wo:cc, GPR:ro, GPR:ro. - orX_readonly "or." GPR:ro:cc, GPR:ro, GPR:ro. + mrX_readonly "mr." GPR:ro:cc, GPR:ro. orc GPR:wo, GPR:ro, GPR:ro. ori GPR:wo, GPR:ro, CONST+LABEL_LO:ro. oris GPR:wo, GPR:ro, CONST:ro. @@ -707,15 +707,12 @@ MOVES TESTS - /* Given orX %1, %1, %1, ncgg says, "Instruction destroys %1, - * not allowed here". We use orX_readonly to trick ncgg. - * - * Using "or." and not "mr." because mach/powerpc/top/table - * was optimizing "or." and not "mr.". + /* Given "mrX %1, %1", ncgg would say, "Instruction destroys + * %1, not allowed here". We use mrX_readonly to trick ncgg. */ to test GPR gen - orX_readonly %1, %1, %1 + mrX_readonly %1, %1 STACKINGRULES diff --git a/mach/powerpc/top/table b/mach/powerpc/top/table index fdec03b2e..b3f5b3a31 100644 --- a/mach/powerpc/top/table +++ b/mach/powerpc/top/table @@ -1,5 +1,5 @@ -/* PowerPC desciptor table for ACK target optimizer */ +/* PowerPC table for ACK target optimizer */ MAXOP 3; LABEL_STARTER '.'; @@ -16,10 +16,33 @@ X, Y, Z { TRUE }; 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 -> ; -or X, Y, Z : or. X, X, X -> or. X, Y, Z ; +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 ;