32-to-64-bit extended load.
authorAkira Hatanaka <ahatanaka@mips.com>
Mon, 14 Nov 2011 19:06:14 +0000 (19:06 +0000)
committerAkira Hatanaka <ahatanaka@mips.com>
Mon, 14 Nov 2011 19:06:14 +0000 (19:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144554 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/Mips64InstrInfo.td

index 51b9bf988463b6daf55c30f7df731b2bab4ff4ba..3c972414863d2993a0e2bb8d6edd662e5f012f71 100644 (file)
@@ -219,11 +219,16 @@ def : Pat<(i64 immZExt16:$in),
 def : Pat<(i64 imm:$imm),
           (ORi64 (LUi64 (HI16 imm:$imm)), (LO16 imm:$imm))>;
 
-// zextloadi32_u
-def : Pat<(zextloadi32_u addr:$a), (DSRL32 (DSLL32 (ULW64_P8 addr:$a), 0), 0)>,
-      Requires<[IsN64]>;
-def : Pat<(zextloadi32_u addr:$a), (DSRL32 (DSLL32 (ULW64 addr:$a), 0), 0)>,
-      Requires<[NotN64]>;
+// extended loads
+let Predicates = [NotN64] in {
+  def : Pat<(extloadi32_a addr:$a), (DSRL32 (DSLL32 (LW64 addr:$a), 0), 0)>;
+  def : Pat<(zextloadi32_u addr:$a), (DSRL32 (DSLL32 (ULW64 addr:$a), 0), 0)>;
+}
+let Predicates = [IsN64] in {
+  def : Pat<(extloadi32_a addr:$a), (DSRL32 (DSLL32 (LW64_P8 addr:$a), 0), 0)>;
+  def : Pat<(zextloadi32_u addr:$a), 
+            (DSRL32 (DSLL32 (ULW64_P8 addr:$a), 0), 0)>;
+}
 
 // hi/lo relocs
 def : Pat<(i64 (MipsLo tglobaladdr:$in)), (DADDiu ZERO_64, tglobaladdr:$in)>;