[opaque pointer type] Add textual IR support for explicit type parameter to getelemen...
[oota-llvm.git] / test / CodeGen / X86 / 2009-02-26-MachineLICMBug.ll
index a4d642b40354f864cbaee0efd15ff8944c5f470d..064b575f75fe52b3ac774d0126971db3afccbee7 100644 (file)
@@ -1,5 +1,8 @@
-; RUN: llc < %s -march=x86-64 -mattr=+sse3 -stats |& not grep {machine-licm}
+; REQUIRES: asserts
+; RUN: llc < %s -march=x86-64 -mattr=+sse3,+sse4.1 -mcpu=penryn -stats 2>&1 | grep "7 machine-licm"
+; RUN: llc < %s -march=x86-64 -mattr=+sse3,+sse4.1 -mcpu=penryn | FileCheck %s
 ; rdar://6627786
+; rdar://7792037
 
 target triple = "x86_64-apple-darwin10.0"
        %struct.Key = type { i64 }
@@ -11,6 +14,13 @@ entry:
        br label %bb4
 
 bb4:           ; preds = %bb.i, %bb26, %bb4, %entry
+; CHECK: %bb4
+; CHECK: xorl
+; CHECK: callq
+; CHECK: xorl
+; CHECK: xorl
+; CHECK: movq
+
        %0 = call i32 (...)* @xxGetOffsetForCode(i32 undef) nounwind            ; <i32> [#uses=0]
        %ins = or i64 %p, 2097152               ; <i64> [#uses=1]
        %1 = call i32 (...)* @xxCalculateMidType(%struct.Key* %desc, i32 0) nounwind            ; <i32> [#uses=1]
@@ -26,12 +36,12 @@ bb.i:               ; preds = %bb26
        %3 = load i32* null, align 4            ; <i32> [#uses=1]
        %4 = uitofp i32 %3 to float             ; <float> [#uses=1]
        %.sum13.i = add i64 0, 4                ; <i64> [#uses=1]
-       %5 = getelementptr i8* null, i64 %.sum13.i              ; <i8*> [#uses=1]
+       %5 = getelementptr i8, i8* null, i64 %.sum13.i          ; <i8*> [#uses=1]
        %6 = bitcast i8* %5 to i32*             ; <i32*> [#uses=1]
        %7 = load i32* %6, align 4              ; <i32> [#uses=1]
        %8 = uitofp i32 %7 to float             ; <float> [#uses=1]
        %.sum.i = add i64 0, 8          ; <i64> [#uses=1]
-       %9 = getelementptr i8* null, i64 %.sum.i                ; <i8*> [#uses=1]
+       %9 = getelementptr i8, i8* null, i64 %.sum.i            ; <i8*> [#uses=1]
        %10 = bitcast i8* %9 to i32*            ; <i32*> [#uses=1]
        %11 = load i32* %10, align 4            ; <i32> [#uses=1]
        %12 = uitofp i32 %11 to float           ; <float> [#uses=1]