Fix patterns for unaligned 32-bit load. DSLL32 or DSRL32 should be emitted
authorAkira Hatanaka <ahatanaka@mips.com>
Mon, 7 Nov 2011 19:01:49 +0000 (19:01 +0000)
committerAkira Hatanaka <ahatanaka@mips.com>
Mon, 7 Nov 2011 19:01:49 +0000 (19:01 +0000)
when shift amount is larger than 32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143990 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/Mips64InstrInfo.td

index 83bd7b88c5964ba80bf2227ada55fce3cad34f6a..1e8bf7024218c09a29c4d2238198004e90c41aac 100644 (file)
@@ -155,9 +155,9 @@ def : Pat<(i64 immZExt16:$in),
           (ORi64 ZERO_64, imm:$in)>;
 
 // zextloadi32_u
-def : Pat<(zextloadi32_u addr:$a), (DSRL (DSLL (ULW64_P8 addr:$a), 32), 32)>,
+def : Pat<(zextloadi32_u addr:$a), (DSRL32 (DSLL32 (ULW64_P8 addr:$a), 0), 0)>,
       Requires<[IsN64]>;
-def : Pat<(zextloadi32_u addr:$a), (DSRL (DSLL (ULW64 addr:$a), 32), 32)>,
+def : Pat<(zextloadi32_u addr:$a), (DSRL32 (DSLL32 (ULW64 addr:$a), 0), 0)>,
       Requires<[NotN64]>;
 
 // hi/lo relocs