diff options
author | Cameron Zwarich <zwarich@apple.com> | 2011-10-11 06:10:30 +0000 |
---|---|---|
committer | Cameron Zwarich <zwarich@apple.com> | 2011-10-11 06:10:30 +0000 |
commit | 446d95224b35b0fef06200b950d45839f1d5f262 (patch) | |
tree | 711f403151227be2e9ff9a3f89b44a6cac5ee507 /test/Transforms | |
parent | 3606f75f35e1a01ff8bd36098d3751f3ed7d8e56 (diff) | |
download | external_llvm-446d95224b35b0fef06200b950d45839f1d5f262.zip external_llvm-446d95224b35b0fef06200b950d45839f1d5f262.tar.gz external_llvm-446d95224b35b0fef06200b950d45839f1d5f262.tar.bz2 |
Remove a lot of the fancy scalar replacement code for dealing with llvm-gcc's
lowering of NEON code. It provides little-to-no benefit now and only introduces
additional complexity.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141646 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms')
-rw-r--r-- | test/Transforms/ScalarRepl/vector_promote.ll | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/test/Transforms/ScalarRepl/vector_promote.ll b/test/Transforms/ScalarRepl/vector_promote.ll index e8919ab..3058a36a 100644 --- a/test/Transforms/ScalarRepl/vector_promote.ll +++ b/test/Transforms/ScalarRepl/vector_promote.ll @@ -86,7 +86,6 @@ define i32 @test5(float %X) { ;; should turn into bitcast. ; CHECK-NEXT: ret i32 } - define i64 @test6(<2 x float> %X) { %X_addr = alloca <2 x float> store <2 x float> %X, <2 x float>* %X_addr @@ -97,169 +96,3 @@ define i64 @test6(<2 x float> %X) { ; CHECK: bitcast <2 x float> %X to i64 ; CHECK: ret i64 } - -define float @test7(<4 x float> %x) { - %a = alloca <4 x float> - store <4 x float> %x, <4 x float>* %a - %p = bitcast <4 x float>* %a to <2 x float>* - %b = load <2 x float>* %p - %q = getelementptr <4 x float>* %a, i32 0, i32 2 - %c = load float* %q - ret float %c -; CHECK: @test7 -; CHECK-NOT: alloca -; CHECK: bitcast <4 x float> %x to <2 x double> -; CHECK-NEXT: extractelement <2 x double> -; CHECK-NEXT: bitcast double %2 to <2 x float> -; CHECK-NEXT: extractelement <4 x float> -} - -define void @test8(<4 x float> %x, <2 x float> %y) { - %a = alloca <4 x float> - store <4 x float> %x, <4 x float>* %a - %p = bitcast <4 x float>* %a to <2 x float>* - store <2 x float> %y, <2 x float>* %p - ret void -; CHECK: @test8 -; CHECK-NOT: alloca -; CHECK: bitcast <4 x float> %x to <2 x double> -; CHECK-NEXT: bitcast <2 x float> %y to double -; CHECK-NEXT: insertelement <2 x double> -; CHECK-NEXT: bitcast <2 x double> %3 to <4 x float> -} - -define i256 @test9(<4 x i256> %x) { - %a = alloca <4 x i256> - store <4 x i256> %x, <4 x i256>* %a - %p = bitcast <4 x i256>* %a to <2 x i256>* - %b = load <2 x i256>* %p - %q = getelementptr <4 x i256>* %a, i32 0, i32 2 - %c = load i256* %q - ret i256 %c -; CHECK: @test9 -; CHECK-NOT: alloca -; CHECK: bitcast <4 x i256> %x to <2 x i512> -; CHECK-NEXT: extractelement <2 x i512> -; CHECK-NEXT: bitcast i512 %2 to <2 x i256> -; CHECK-NEXT: extractelement <4 x i256> -} - -define void @test10(<4 x i256> %x, <2 x i256> %y) { - %a = alloca <4 x i256> - store <4 x i256> %x, <4 x i256>* %a - %p = bitcast <4 x i256>* %a to <2 x i256>* - store <2 x i256> %y, <2 x i256>* %p - ret void -; CHECK: @test10 -; CHECK-NOT: alloca -; CHECK: bitcast <4 x i256> %x to <2 x i512> -; CHECK-NEXT: bitcast <2 x i256> %y to i512 -; CHECK-NEXT: insertelement <2 x i512> -; CHECK-NEXT: bitcast <2 x i512> %3 to <4 x i256> -} - -%union.v = type { <2 x i64> } - -define void @test11(<2 x i64> %x) { - %a = alloca %union.v - %p = getelementptr inbounds %union.v* %a, i32 0, i32 0 - store <2 x i64> %x, <2 x i64>* %p, align 16 - %q = getelementptr inbounds %union.v* %a, i32 0, i32 0 - %r = bitcast <2 x i64>* %q to <4 x float>* - %b = load <4 x float>* %r, align 16 - ret void -; CHECK: @test11 -; CHECK-NOT: alloca -} - -define void @test12() { -entry: - %a = alloca <64 x i8>, align 64 - store <64 x i8> undef, <64 x i8>* %a, align 64 - %p = bitcast <64 x i8>* %a to <16 x i8>* - %0 = load <16 x i8>* %p, align 64 - store <16 x i8> undef, <16 x i8>* %p, align 64 - %q = bitcast <16 x i8>* %p to <64 x i8>* - %1 = load <64 x i8>* %q, align 64 - ret void -; CHECK: @test12 -; CHECK-NOT: alloca -; CHECK: extractelement <4 x i128> -; CHECK: insertelement <4 x i128> -} - -define float @test13(<4 x float> %x, <2 x i32> %y) { - %a = alloca <4 x float> - store <4 x float> %x, <4 x float>* %a - %p = bitcast <4 x float>* %a to <2 x float>* - %b = load <2 x float>* %p - %q = getelementptr <4 x float>* %a, i32 0, i32 2 - %c = load float* %q - %r = bitcast <4 x float>* %a to <2 x i32>* - store <2 x i32> %y, <2 x i32>* %r - ret float %c -; CHECK: @test13 -; CHECK-NOT: alloca -; CHECK: bitcast <4 x float> %x to i128 -} - -define <3 x float> @test14(<3 x float> %x) { -entry: - %x.addr = alloca <3 x float>, align 16 - %r = alloca <3 x i32>, align 16 - %extractVec = shufflevector <3 x float> %x, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef> - %storetmp = bitcast <3 x float>* %x.addr to <4 x float>* - store <4 x float> %extractVec, <4 x float>* %storetmp, align 16 - %tmp = load <3 x float>* %x.addr, align 16 - %cmp = fcmp une <3 x float> %tmp, zeroinitializer - %sext = sext <3 x i1> %cmp to <3 x i32> - %and = and <3 x i32> <i32 1065353216, i32 1065353216, i32 1065353216>, %sext - %extractVec1 = shufflevector <3 x i32> %and, <3 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef> - %storetmp2 = bitcast <3 x i32>* %r to <4 x i32>* - store <4 x i32> %extractVec1, <4 x i32>* %storetmp2, align 16 - %tmp3 = load <3 x i32>* %r, align 16 - %0 = bitcast <3 x i32> %tmp3 to <3 x float> - %tmp4 = load <3 x float>* %x.addr, align 16 - ret <3 x float> %tmp4 -; CHECK: @test14 -; CHECK-NOT: alloca -; CHECK: shufflevector <4 x i32> %extractVec1, <4 x i32> undef, <3 x i32> <i32 0, i32 1, i32 2> -} - -define void @test15(<3 x i64>* sret %agg.result, <3 x i64> %x, <3 x i64> %min) { -entry: - %x.addr = alloca <3 x i64>, align 32 - %min.addr = alloca <3 x i64>, align 32 - %extractVec = shufflevector <3 x i64> %x, <3 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef> - %storetmp = bitcast <3 x i64>* %x.addr to <4 x i64>* - store <4 x i64> %extractVec, <4 x i64>* %storetmp, align 32 - %extractVec1 = shufflevector <3 x i64> %min, <3 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef> - %storetmp2 = bitcast <3 x i64>* %min.addr to <4 x i64>* - store <4 x i64> %extractVec1, <4 x i64>* %storetmp2, align 32 - %tmp = load <3 x i64>* %x.addr - %tmp5 = extractelement <3 x i64> %tmp, i32 0 - %tmp11 = insertelement <3 x i64> %tmp, i64 %tmp5, i32 0 - store <3 x i64> %tmp11, <3 x i64>* %x.addr - %tmp30 = load <3 x i64>* %x.addr, align 32 - store <3 x i64> %tmp30, <3 x i64>* %agg.result - ret void -; CHECK: @test15 -; CHECK-NOT: alloca -; CHECK: shufflevector <4 x i64> %tmpV1, <4 x i64> undef, <3 x i32> <i32 0, i32 1, i32 2> -} - -define <4 x float> @test16(<4 x float> %x, i64 %y0, i64 %y1) { -entry: - %tmp8 = bitcast <4 x float> undef to <2 x double> - %tmp9 = bitcast i64 %y0 to double - %tmp10 = insertelement <2 x double> %tmp8, double %tmp9, i32 0 - %tmp11 = bitcast <2 x double> %tmp10 to <4 x float> - %tmp3 = bitcast <4 x float> %tmp11 to <2 x double> - %tmp4 = bitcast i64 %y1 to double - %tmp5 = insertelement <2 x double> %tmp3, double %tmp4, i32 1 - %tmp6 = bitcast <2 x double> %tmp5 to <4 x float> - ret <4 x float> %tmp6 -; CHECK: @test16 -; CHECK-NOT: alloca -; CHECK: bitcast <4 x float> %tmp11 to <2 x double> -} |