diff options
author | Paul Redmond <paul.redmond@intel.com> | 2013-08-19 20:01:35 +0000 |
---|---|---|
committer | Paul Redmond <paul.redmond@intel.com> | 2013-08-19 20:01:35 +0000 |
commit | d345395ec97a303ffd420c3e761af7b9e3e4c338 (patch) | |
tree | 51c7846b1fcf5c930ba0d5f268bfce5a670e8184 /test | |
parent | 32bd10b1a33df2cc4d067a16901d56665f4ba085 (diff) | |
download | external_llvm-d345395ec97a303ffd420c3e761af7b9e3e4c338.zip external_llvm-d345395ec97a303ffd420c3e761af7b9e3e4c338.tar.gz external_llvm-d345395ec97a303ffd420c3e761af7b9e3e4c338.tar.bz2 |
Improve the widening of integral binary vector operations
- split WidenVecRes_Binary into WidenVecRes_Binary and WidenVecRes_BinaryCanTrap
- WidenVecRes_BinaryCanTrap preserves the original behaviour for operations
that can trap
- WidenVecRes_Binary simply widens the operation and improves codegen for
3-element vectors by allowing widening and promotion on x86 (matches the
behaviour of unary and ternary operation widening)
- use WidenVecRes_Binary for operations on integers.
Reviewed by: nrotem
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188699 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/X86/vsplit-and.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/widen_arith-3.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/widen_load-2.ll | 8 |
3 files changed, 4 insertions, 10 deletions
diff --git a/test/CodeGen/X86/vsplit-and.ll b/test/CodeGen/X86/vsplit-and.ll index 3b7fdff..c16b294 100644 --- a/test/CodeGen/X86/vsplit-and.ll +++ b/test/CodeGen/X86/vsplit-and.ll @@ -14,7 +14,7 @@ define void @t0(<2 x i64>* %dst, <2 x i64> %src1, <2 x i64> %src2) nounwind read define void @t2(<3 x i64>* %dst, <3 x i64> %src1, <3 x i64> %src2) nounwind readonly { ; CHECK: t2 -; CHECK-NOT: pand +; CHECK: pand ; CHECK: ret %cmp1 = icmp ne <3 x i64> %src1, zeroinitializer %cmp2 = icmp ne <3 x i64> %src2, zeroinitializer diff --git a/test/CodeGen/X86/widen_arith-3.ll b/test/CodeGen/X86/widen_arith-3.ll index d86042a..cf6346b 100644 --- a/test/CodeGen/X86/widen_arith-3.ll +++ b/test/CodeGen/X86/widen_arith-3.ll @@ -1,7 +1,5 @@ ; RUN: llc < %s -mcpu=generic -march=x86 -mattr=+sse42 -post-RA-scheduler=true | FileCheck %s -; CHECK: incl -; CHECK: incl -; CHECK: incl +; CHECK: paddd ; Widen a v3i16 to v8i16 to do a vector add diff --git a/test/CodeGen/X86/widen_load-2.ll b/test/CodeGen/X86/widen_load-2.ll index f0f94e4..2f20349 100644 --- a/test/CodeGen/X86/widen_load-2.ll +++ b/test/CodeGen/X86/widen_load-2.ll @@ -73,9 +73,7 @@ define void @add12i32(%i32vec12* sret %ret, %i32vec12* %ap, %i32vec12* %bp) { ; CHECK: add3i16 %i16vec3 = type <3 x i16> define void @add3i16(%i16vec3* nocapture sret %ret, %i16vec3* %ap, %i16vec3* %bp) nounwind { -; CHECK: addl -; CHECK: addl -; CHECK: addl +; CHECK: paddd ; CHECK: ret %a = load %i16vec3* %ap, align 16 %b = load %i16vec3* %bp, align 16 @@ -135,9 +133,7 @@ define void @add18i16(%i16vec18* nocapture sret %ret, %i16vec18* %ap, %i16vec18* ; CHECK: add3i8 %i8vec3 = type <3 x i8> define void @add3i8(%i8vec3* nocapture sret %ret, %i8vec3* %ap, %i8vec3* %bp) nounwind { -; CHECK: addb -; CHECK: addb -; CHECK: addb +; CHECK: paddd ; CHECK: ret %a = load %i8vec3* %ap, align 16 %b = load %i8vec3* %bp, align 16 |