diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-07-26 05:52:29 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-07-26 05:52:29 +0000 |
commit | a90a621d1eafe836af20db2244391f4fe55a0ab9 (patch) | |
tree | d7ced60305e6cc0227f924dcb431d46e1a7880b8 /llvm/test | |
parent | 2b51f7284b293f4cda9ba2368e9a93dc98604ed7 (diff) | |
download | bcm5719-llvm-a90a621d1eafe836af20db2244391f4fe55a0ab9.tar.gz bcm5719-llvm-a90a621d1eafe836af20db2244391f4fe55a0ab9.zip |
Reapply: [InstSimplify] Add support for bitcasts"
This reverts commit r276700 and reapplies r276698.
The relevant clang tests have been updated.
llvm-svn: 276727
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/AArch64/intrinsics.ll | 2 | ||||
-rw-r--r-- | llvm/test/Transforms/GVN/pr14166.ll | 4 | ||||
-rw-r--r-- | llvm/test/Transforms/InstSimplify/cast.ll | 27 |
3 files changed, 29 insertions, 4 deletions
diff --git a/llvm/test/Transforms/EarlyCSE/AArch64/intrinsics.ll b/llvm/test/Transforms/EarlyCSE/AArch64/intrinsics.ll index d166ff1e109..a75a6dc2107 100644 --- a/llvm/test/Transforms/EarlyCSE/AArch64/intrinsics.ll +++ b/llvm/test/Transforms/EarlyCSE/AArch64/intrinsics.ll @@ -40,7 +40,7 @@ entry: ; Check that the first @llvm.aarch64.neon.st2 is optimized away by Early CSE. ; CHECK-LABEL: @test_cse2 ; CHECK-NOT: call void @llvm.aarch64.neon.st2.v4i32.p0i8(<4 x i32> %3, <4 x i32> %3, i8* %0) -; CHECK: call void @llvm.aarch64.neon.st2.v4i32.p0i8(<4 x i32> %3, <4 x i32> %4, i8* %0) +; CHECK: call void @llvm.aarch64.neon.st2.v4i32.p0i8(<4 x i32> %s.coerce.fca.0.extract, <4 x i32> %s.coerce.fca.1.extract, i8* %0) %s.coerce.fca.0.extract = extractvalue [2 x <4 x i32>] %s.coerce, 0 %s.coerce.fca.1.extract = extractvalue [2 x <4 x i32>] %s.coerce, 1 br label %for.cond diff --git a/llvm/test/Transforms/GVN/pr14166.ll b/llvm/test/Transforms/GVN/pr14166.ll index ec1b1717f06..2e77496a2e4 100644 --- a/llvm/test/Transforms/GVN/pr14166.ll +++ b/llvm/test/Transforms/GVN/pr14166.ll @@ -18,9 +18,7 @@ define <2 x i32> @test1() { ; CHECK: %v4 = bitcast <2 x i32>* %v1 to <2 x i8*>* ; CHECK: store <2 x i8*> %v3, <2 x i8*>* %v4 ; CHECK: %1 = ptrtoint <2 x i8*> %v3 to <2 x i32> -; CHECK: %2 = bitcast <2 x i32> %1 to i64 -; CHECK: %3 = bitcast i64 %2 to <2 x i32> -; CHECK: ret <2 x i32> %3 +; CHECK: ret <2 x i32> %1 } declare void @anything(<2 x i32>*) diff --git a/llvm/test/Transforms/InstSimplify/cast.ll b/llvm/test/Transforms/InstSimplify/cast.ll new file mode 100644 index 00000000000..a656854478d --- /dev/null +++ b/llvm/test/Transforms/InstSimplify/cast.ll @@ -0,0 +1,27 @@ +; RUN: opt -S -instsimplify < %s | FileCheck %s + +define i1 @test1(i1 %V) { +entry: + %Z = zext i1 %V to i32 + %T = trunc i32 %Z to i1 + ret i1 %T +; CHECK-LABEL: define i1 @test1( +; CHECK: ret i1 %V +} + +define i8* @test2(i8* %V) { +entry: + %BC1 = bitcast i8* %V to i32* + %BC2 = bitcast i32* %BC1 to i8* + ret i8* %BC2 +; CHECK-LABEL: define i8* @test2( +; CHECK: ret i8* %V +} + +define i8* @test3(i8* %V) { +entry: + %BC = bitcast i8* %V to i8* + ret i8* %BC +; CHECK-LABEL: define i8* @test3( +; CHECK: ret i8* %V +} |