diff --git a/mach/powerpc/ncg/table b/mach/powerpc/ncg/table index 93b7722ee..1cb51c2d5 100644 --- a/mach/powerpc/ncg/table +++ b/mach/powerpc/ncg/table @@ -923,10 +923,14 @@ PATTERNS pat dup $1==INT32 /* Duplicate word on top of stack */ with GPR yields %1 %1 + with FSREG + yields %1 %1 pat dup $1==INT64 /* Duplicate double-word on top of stack */ with GPR GPR yields %2 %1 %2 %1 + with FREG + yields %1 %1 pat exg $1==INT32 /* Exchange top two words on stack */ with GPR GPR @@ -936,7 +940,12 @@ PATTERNS leaving dup 4 stl $1 - + + pat sdl ldl $1==$2 /* Store then load double local */ + leaving + dup 8 + sdl $1 + pat lal sti lal loi $1==$3 && $2==$4 /* Store then load local, of a different size */ leaving dup INT32 @@ -1045,12 +1054,7 @@ PATTERNS leaving lol $1 sti INT32 - - pat stl lol $1==$2 /* Save then load (generated by C compiler) */ - leaving - dup 4 - stl $1 - + pat zrl /* Zero local */ leaving loc 0