For Mips16, start to consolidate all forms of 32 bit literal loading so that
authorReed Kotler <rkotler@mips.com>
Sat, 12 Oct 2013 02:19:08 +0000 (02:19 +0000)
committerReed Kotler <rkotler@mips.com>
Sat, 12 Oct 2013 02:19:08 +0000 (02:19 +0000)
they can be better handled and optimized in the Mips16 constant island code.

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

lib/Target/Mips/Mips16InstrInfo.td
test/CodeGen/Mips/i32k.ll

index ee45df5644df08c2297ecd45fe02d671e57290a8..4133223c1fd43ff770d0bd2207f88f9d40f5b32e 100644 (file)
@@ -1355,9 +1355,7 @@ def: Mips16Pat<(i32  addr16:$addr),
 
 
 // Large (>16 bit) immediate loads
-def : Mips16Pat<(i32 imm:$imm),
-                (OrRxRxRy16 (SllX16 (LiRxImmX16 (HI16 imm:$imm)), 16),
-                (LiRxImmX16 (LO16 imm:$imm)))>;
+def : Mips16Pat<(i32 imm:$imm), (LwConstant32 imm:$imm)>;
 
 // Carry MipsPatterns
 def : Mips16Pat<(subc CPU16Regs:$lhs, CPU16Regs:$rhs),
index c6da8b1ac9a035f407504bc1dd746bf2b14be3e0..f4dd1eb78a1d1d34ba16b13170532b53a63de0fd 100644 (file)
@@ -1,16 +1,23 @@
-; RUN: llc  -march=mipsel -mcpu=mips16 -relocation-model=pic -O3 < %s | FileCheck %s -check-prefix=16a
-; RUN: llc  -march=mipsel -mcpu=mips16 -relocation-model=pic -O3 < %s | FileCheck %s -check-prefix=16b
+; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -relocation-model=pic -O3 < %s | FileCheck %s -check-prefix=16
 
 @.str = private unnamed_addr constant [4 x i8] c"%i\0A\00", align 1
 
 define i32 @main() nounwind {
 entry:
   %call = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8]* @.str, i32 0, i32 0), i32 1075344593) nounwind
-; 16a: li      ${{[0-9]+}}, 29905
-; 16b: li      ${{[0-9]+}}, 16408
+; 16:  lw      ${{[0-9]+}}, 1f
+; 16:  b       2f
+; 16:  .align  2
+; 16: 1:       .word   1075344593
+; 16: 2:
+
   %call1 = tail call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8]* @.str, i32 0, i32 0), i32 -1075344593) nounwind
-; 16a: li      ${{[0-9]+}}, 49127
-; 16b: li      ${{[0-9]+}}, 35631
+
+; 16:  lw      ${{[0-9]+}}, 1f
+; 16:  b       2f
+; 16:  .align  2
+; 16: 1:       .word   -1075344593
+; 16: 2:
   ret i32 0
 }