summaryrefslogtreecommitdiffstats
path: root/llvm/test/ExecutionEngine/test-interp-vec-shift.ll
diff options
context:
space:
mode:
authorElena Demikhovsky <elena.demikhovsky@intel.com>2013-08-05 12:17:06 +0000
committerElena Demikhovsky <elena.demikhovsky@intel.com>2013-08-05 12:17:06 +0000
commit62d19c8bdf5f3d1d07a0e976bc1a2cd81cb8dd22 (patch)
treeb68cf40757f215dbefa37caa19764dfd9853403e /llvm/test/ExecutionEngine/test-interp-vec-shift.ll
parentc212125d2797bb41cb83c7cf6d0b65a2f61e24de (diff)
downloadbcm5719-llvm-62d19c8bdf5f3d1d07a0e976bc1a2cd81cb8dd22.tar.gz
bcm5719-llvm-62d19c8bdf5f3d1d07a0e976bc1a2cd81cb8dd22.zip
LLVM Interpreter: This patch implements vector support for cast operations (zext, sext, uitofp, sitofp, trunc, fpext, fptosi, fptrunc, bitcast) and shift operations (shl, ashr, lshr) for integer and floating point data types.
Added tests. Done by Yuri Veselov (mailto:Yuri.Veselov@intel.com). llvm-svn: 187724
Diffstat (limited to 'llvm/test/ExecutionEngine/test-interp-vec-shift.ll')
-rw-r--r--llvm/test/ExecutionEngine/test-interp-vec-shift.ll32
1 files changed, 32 insertions, 0 deletions
diff --git a/llvm/test/ExecutionEngine/test-interp-vec-shift.ll b/llvm/test/ExecutionEngine/test-interp-vec-shift.ll
new file mode 100644
index 00000000000..3aa4f4e54f3
--- /dev/null
+++ b/llvm/test/ExecutionEngine/test-interp-vec-shift.ll
@@ -0,0 +1,32 @@
+; RUN: %lli -force-interpreter=true %s > /dev/null
+
+define i32 @main() {
+ %shamt = add <2 x i8> <i8 0, i8 0>, <i8 1, i8 2>
+ %shift.upgrd.1 = zext <2 x i8> %shamt to <2 x i32>
+ %t1.s = shl <2 x i32> <i32 1, i32 2>, %shift.upgrd.1
+ %t2.s = shl <2 x i32> <i32 1, i32 2>, <i32 3, i32 4>
+ %shift.upgrd.2 = zext <2 x i8> %shamt to <2 x i32>
+ %t1 = shl <2 x i32> <i32 1, i32 2>, %shift.upgrd.2
+ %t2 = shl <2 x i32> <i32 1, i32 0>, <i32 5, i32 6>
+ %t2.s.upgrd.3 = shl <2 x i64> <i64 1, i64 2>, <i64 3, i64 4>
+ %t2.upgrd.4 = shl <2 x i64> <i64 1, i64 2>, <i64 6, i64 7>
+ %shift.upgrd.5 = zext <2 x i8> %shamt to <2 x i32>
+ %tr1.s = ashr <2 x i32> <i32 1, i32 2>, %shift.upgrd.5
+ %tr2.s = ashr <2 x i32> <i32 1, i32 2>, <i32 4, i32 5>
+ %shift.upgrd.6 = zext <2 x i8> %shamt to <2 x i32>
+ %tr1 = lshr <2 x i32> <i32 1, i32 2>, %shift.upgrd.6
+ %tr2 = lshr <2 x i32> <i32 1, i32 2>, <i32 5, i32 6>
+ %tr1.l = ashr <2 x i64> <i64 1, i64 2>, <i64 4, i64 5>
+ %shift.upgrd.7 = zext <2 x i8> %shamt to <2 x i64>
+ %tr2.l = ashr <2 x i64> <i64 1, i64 2>, %shift.upgrd.7
+ %tr3.l = shl <2 x i64> <i64 1, i64 2>, <i64 4, i64 5>
+ %shift.upgrd.8 = zext <2 x i8> %shamt to <2 x i64>
+ %tr4.l = shl <2 x i64> <i64 1, i64 2>, %shift.upgrd.8
+ %tr1.u = lshr <2 x i64> <i64 1, i64 2>, <i64 5, i64 6>
+ %shift.upgrd.9 = zext <2 x i8> %shamt to <2 x i64>
+ %tr2.u = lshr <2 x i64> <i64 1, i64 2>, %shift.upgrd.9
+ %tr3.u = shl <2 x i64> <i64 1, i64 2>, <i64 5, i64 6>
+ %shift.upgrd.10 = zext <2 x i8> %shamt to <2 x i64>
+ %tr4.u = shl <2 x i64> <i64 1, i64 2>, %shift.upgrd.10
+ ret i32 0
+}
OpenPOWER on IntegriCloud