aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms
diff options
context:
space:
mode:
authorAnat Shemer <anat.shemer@intel.com>2013-04-22 20:51:10 +0000
committerAnat Shemer <anat.shemer@intel.com>2013-04-22 20:51:10 +0000
commitc9090b0723bdbeba65dc6b4771ca166e4a99a9cc (patch)
treef162ca0295a30ede5ab5937ba752f39c674cb42c /test/Transforms
parent566542c87bf215c621ca58963c9940649ed27068 (diff)
downloadexternal_llvm-c9090b0723bdbeba65dc6b4771ca166e4a99a9cc.zip
external_llvm-c9090b0723bdbeba65dc6b4771ca166e4a99a9cc.tar.gz
external_llvm-c9090b0723bdbeba65dc6b4771ca166e4a99a9cc.tar.bz2
Changed back (relative to commit 179786) the operations executed when extract(cast) is transformed to cast(extract). It uses the Builder class as before. In addition the result node is added to the Worklist, so all the previous extract users will become the new scalar cast users.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180045 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms')
-rw-r--r--test/Transforms/InstCombine/vec_extract_var_elt.ll18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/vec_extract_var_elt.ll b/test/Transforms/InstCombine/vec_extract_var_elt.ll
new file mode 100644
index 0000000..3c98287
--- /dev/null
+++ b/test/Transforms/InstCombine/vec_extract_var_elt.ll
@@ -0,0 +1,18 @@
+; RUN: opt < %s -instcombine -S | FileCheck %s
+
+define void @test (float %b, <8 x float> * %p) {
+; CHECK: extractelement
+; CHECK: fptosi
+ %1 = load <8 x float> * %p
+ %2 = bitcast <8 x float> %1 to <8 x i32>
+ %3 = bitcast <8 x i32> %2 to <8 x float>
+ %a = fptosi <8 x float> %3 to <8 x i32>
+ %4 = fptosi float %b to i32
+ %5 = add i32 %4, -2
+ %6 = extractelement <8 x i32> %a, i32 %5
+ %7 = insertelement <8 x i32> undef, i32 %6, i32 7
+ %8 = sitofp <8 x i32> %7 to <8 x float>
+ store <8 x float> %8, <8 x float>* %p
+ ret void
+}
+