Cost Model: teach the cost model about expanding integers.
authorNadav Rotem <nrotem@apple.com>
Mon, 5 Nov 2012 21:11:10 +0000 (21:11 +0000)
committerNadav Rotem <nrotem@apple.com>
Mon, 5 Nov 2012 21:11:10 +0000 (21:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167401 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/TargetTransformImpl.cpp
test/Analysis/CostModel/X86/i32.ll [new file with mode: 0644]

index a9f02edaae4c513360054c9c606998a557427741..4b427a2b6d4426f19f2eb0392ff599d6b1f0c474 100644 (file)
@@ -143,7 +143,8 @@ VectorTargetTransformImpl::getTypeLegalizationCost(LLVMContext &C,
     if (LK.first == TargetLowering::TypeLegal)
       return std::make_pair(Cost, Ty.getSimpleVT());
 
-    if (LK.first == TargetLowering::TypeSplitVector)
+    if (LK.first == TargetLowering::TypeSplitVector ||
+        LK.first == TargetLowering::TypeExpandInteger)
       Cost *= 2;
 
     // Keep legalizing the type.
@@ -300,7 +301,7 @@ unsigned VectorTargetTransformImpl::getCmpSelInstrCost(unsigned Opcode,
     unsigned Cost = getCmpSelInstrCost(Opcode, ValTy->getScalarType(),
                                        CondTy);
 
-    // return the cost of multiple scalar invocation plus the cost of inserting
+    // Return the cost of multiple scalar invocation plus the cost of inserting
     // and extracting the values.
     return getScalarizationOverhead(ValTy, true, false) + Num * Cost;
   }
diff --git a/test/Analysis/CostModel/X86/i32.ll b/test/Analysis/CostModel/X86/i32.ll
new file mode 100644 (file)
index 0000000..4015e0b
--- /dev/null
@@ -0,0 +1,9 @@
+; RUN: opt < %s  -cost-model -analyze -mtriple=i386 -mcpu=corei7-avx | FileCheck %s
+
+
+;CHECK: cost of 2 {{.*}} add
+;CHECK: cost of 1 {{.*}} ret
+define i32 @no_info(i32 %arg) {
+  %e = add i64 undef, undef
+  ret i32 undef
+}