Constant generation instructions are re-materializable.
authorEvan Cheng <evan.cheng@apple.com>
Mon, 19 Mar 2007 07:09:02 +0000 (07:09 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Mon, 19 Mar 2007 07:09:02 +0000 (07:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35161 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrInfo.td
lib/Target/ARM/ARMInstrThumb.td

index 31d923e7337e668056f0e011aca09fbf718e56c8..cb0a508bf93ea38a6f0e635e533b17e325fba463 100644 (file)
@@ -137,7 +137,7 @@ def so_imm_neg :
   PatLeaf<(imm), [{ return ARM_AM::getSOImmVal(-(int)N->getValue()) != -1; }],
           so_imm_neg_XFORM>;
 
-def so_imm_not : 
+def so_imm_not :
   PatLeaf<(imm), [{ return ARM_AM::getSOImmVal(~(int)N->getValue()) != -1; }],
           so_imm_not_XFORM>;
 
@@ -709,6 +709,8 @@ def MOVrr : AI1<(ops GPR:$dst, GPR:$src),
                 "mov $dst, $src", []>;
 def MOVrs : AI1<(ops GPR:$dst, so_reg:$src),
                 "mov $dst, $src", [(set GPR:$dst, so_reg:$src)]>;
+
+let isReMaterializable = 1 in
 def MOVri : AI1<(ops GPR:$dst, so_imm:$src),
                 "mov $dst, $src", [(set GPR:$dst, so_imm:$src)]>;
 
@@ -806,10 +808,13 @@ defm ORR   : AI1_bin_irs<"orr", BinOpFrag<(or  node:$LHS, node:$RHS)>>;
 defm EOR   : AI1_bin_irs<"eor", BinOpFrag<(xor node:$LHS, node:$RHS)>>;
 defm BIC   : AI1_bin_irs<"bic", BinOpFrag<(and node:$LHS, (not node:$RHS))>>;
 
-defm MVN   : AI1_unary_irs<"mvn", not>;
-
-def : ARMPat<(i32  so_imm_not:$imm),
-             (MVNi so_imm_not:$imm)>;
+def  MVNr  : AI<(ops GPR:$dst, GPR:$src),
+                "mvn $dst, $src", [(set GPR:$dst, (not GPR:$src))]>;
+def  MVNs  : AI<(ops GPR:$dst, so_reg:$src),
+                "mvn $dst, $src", [(set GPR:$dst, (not so_reg:$src))]>;
+let isReMaterializable = 1 in
+def  MVNi  : AI<(ops GPR:$dst, so_imm:$imm),
+                "mvn $dst, $imm", [(set GPR:$dst, so_imm_not:$imm)]>;
 
 def : ARMPat<(and   GPR:$src, so_imm_not:$imm),
              (BICri GPR:$src, so_imm_not:$imm)>;
index 59a0098f44d262c2896bdc2ac325066b6413d360..6b289d9a051ac9f6a2c7ac5f3044525e4730f360 100644 (file)
@@ -374,6 +374,7 @@ def tLSRrr : TIt<(ops GPR:$dst, GPR:$lhs, GPR:$rhs),
                  "lsr $dst, $rhs",
                  [(set GPR:$dst, (srl GPR:$lhs, GPR:$rhs))]>;
 
+let isReMaterializable = 1 in
 def tMOVri8 : TI<(ops GPR:$dst, i32imm:$src),
                  "mov $dst, $src",
                  [(set GPR:$dst, imm0_255:$src)]>;