[llvm-commits] [llvm] r167743 - in /llvm/trunk: lib/Transforms/Vectorize/BBVectorize.cpp test/Transforms/BBVectorize/X86/cmp-types.ll

Hal Finkel hfinkel at anl.gov
Mon Nov 12 11:41:38 PST 2012


Author: hfinkel
Date: Mon Nov 12 13:41:38 2012
New Revision: 167743

URL: http://llvm.org/viewvc/llvm-project?rev=167743&view=rev
Log:
BBVectorize: Check the types of compare instructions

The pass would previously assert when trying to compute the cost of
compare instructions with illegal vector types (like struct pointers).

Added:
    llvm/trunk/test/Transforms/BBVectorize/X86/cmp-types.ll
Modified:
    llvm/trunk/lib/Transforms/Vectorize/BBVectorize.cpp

Modified: llvm/trunk/lib/Transforms/Vectorize/BBVectorize.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/BBVectorize.cpp?rev=167743&r1=167742&r2=167743&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Vectorize/BBVectorize.cpp (original)
+++ llvm/trunk/lib/Transforms/Vectorize/BBVectorize.cpp Mon Nov 12 13:41:38 2012
@@ -485,6 +485,8 @@
         T2 = SI->getCondition()->getType();
       } else if (ShuffleVectorInst *SI = dyn_cast<ShuffleVectorInst>(I)) {
         T2 = SI->getOperand(0)->getType();
+      } else if (CmpInst *CI = dyn_cast<CmpInst>(I)) {
+        T2 = CI->getOperand(0)->getType();
       }
     }
 

Added: llvm/trunk/test/Transforms/BBVectorize/X86/cmp-types.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/BBVectorize/X86/cmp-types.ll?rev=167743&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/BBVectorize/X86/cmp-types.ll (added)
+++ llvm/trunk/test/Transforms/BBVectorize/X86/cmp-types.ll Mon Nov 12 13:41:38 2012
@@ -0,0 +1,16 @@
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
+target triple = "x86_64-unknown-linux-gnu"
+; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=corei7 -bb-vectorize -S | FileCheck %s
+
+%"struct.btSoftBody" = type { float, float, float*, i8 }
+
+define void @test1(%"struct.btSoftBody"* %n1, %"struct.btSoftBody"* %n2) uwtable align 2 {
+entry:
+  %tobool15 = icmp ne %"struct.btSoftBody"* %n1, null
+  %cond16 = zext i1 %tobool15 to i32
+  %tobool21 = icmp ne %"struct.btSoftBody"* %n2, null
+  %cond22 = zext i1 %tobool21 to i32
+  ret void
+; CHECK: @test1
+}
+





More information about the llvm-commits mailing list