summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2016-02-01 22:05:50 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2016-02-01 22:05:50 +0000
commit025a3d857a3649dff84f4c3cd02e8e6132b24613 (patch)
tree8d7bf67f2b58d417ebe371c910d3c4203962597c
parent3f88eabe9396624efd391ce6fa543e6ce4b5ec5c (diff)
downloadbcm5719-llvm-025a3d857a3649dff84f4c3cd02e8e6132b24613.tar.gz
bcm5719-llvm-025a3d857a3649dff84f4c3cd02e8e6132b24613.zip
[X86][AVX512] Add support for AVX512 VINSERTPS shuffle decoding
llvm-svn: 259420
-rw-r--r--llvm/lib/Target/X86/InstPrinter/X86InstComments.cpp2
-rw-r--r--llvm/test/CodeGen/X86/merge-consecutive-loads-128.ll44
-rw-r--r--llvm/test/CodeGen/X86/merge-consecutive-loads-256.ll2
3 files changed, 13 insertions, 35 deletions
diff --git a/llvm/lib/Target/X86/InstPrinter/X86InstComments.cpp b/llvm/lib/Target/X86/InstPrinter/X86InstComments.cpp
index 73f654cba38..9dd91444557 100644
--- a/llvm/lib/Target/X86/InstPrinter/X86InstComments.cpp
+++ b/llvm/lib/Target/X86/InstPrinter/X86InstComments.cpp
@@ -278,10 +278,12 @@ bool llvm::EmitAnyX86InstComments(const MCInst *MI, raw_ostream &OS,
case X86::INSERTPSrr:
case X86::VINSERTPSrr:
+ case X86::VINSERTPSzrr:
Src2Name = getRegName(MI->getOperand(2).getReg());
// FALL THROUGH.
case X86::INSERTPSrm:
case X86::VINSERTPSrm:
+ case X86::VINSERTPSzrm:
DestName = getRegName(MI->getOperand(0).getReg());
Src1Name = getRegName(MI->getOperand(1).getReg());
if (MI->getOperand(MI->getNumOperands() - 1).isImm())
diff --git a/llvm/test/CodeGen/X86/merge-consecutive-loads-128.ll b/llvm/test/CodeGen/X86/merge-consecutive-loads-128.ll
index d2d5bcbb9f6..81aba5e79a5 100644
--- a/llvm/test/CodeGen/X86/merge-consecutive-loads-128.ll
+++ b/llvm/test/CodeGen/X86/merge-consecutive-loads-128.ll
@@ -188,23 +188,11 @@ define <4 x float> @merge_4f32_f32_012u(float* %ptr) nounwind uwtable noinline s
; SSE41-NEXT: insertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]
; SSE41-NEXT: retq
;
-; AVX1-LABEL: merge_4f32_f32_012u:
-; AVX1: # BB#0:
-; AVX1-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX1-NEXT: vinsertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]
-; AVX1-NEXT: retq
-;
-; AVX2-LABEL: merge_4f32_f32_012u:
-; AVX2: # BB#0:
-; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX2-NEXT: vinsertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]
-; AVX2-NEXT: retq
-;
-; AVX512F-LABEL: merge_4f32_f32_012u:
-; AVX512F: # BB#0:
-; AVX512F-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX512F-NEXT: vinsertps $32, 8(%rdi), %xmm0, %xmm0
-; AVX512F-NEXT: retq
+; AVX-LABEL: merge_4f32_f32_012u:
+; AVX: # BB#0:
+; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
+; AVX-NEXT: vinsertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]
+; AVX-NEXT: retq
%ptr0 = getelementptr inbounds float, float* %ptr, i64 0
%ptr1 = getelementptr inbounds float, float* %ptr, i64 1
%ptr2 = getelementptr inbounds float, float* %ptr, i64 2
@@ -234,23 +222,11 @@ define <4 x float> @merge_4f32_f32_019u(float* %ptr) nounwind uwtable noinline s
; SSE41-NEXT: insertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]
; SSE41-NEXT: retq
;
-; AVX1-LABEL: merge_4f32_f32_019u:
-; AVX1: # BB#0:
-; AVX1-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX1-NEXT: vinsertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]
-; AVX1-NEXT: retq
-;
-; AVX2-LABEL: merge_4f32_f32_019u:
-; AVX2: # BB#0:
-; AVX2-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX2-NEXT: vinsertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]
-; AVX2-NEXT: retq
-;
-; AVX512F-LABEL: merge_4f32_f32_019u:
-; AVX512F: # BB#0:
-; AVX512F-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
-; AVX512F-NEXT: vinsertps $32, 36(%rdi), %xmm0, %xmm0
-; AVX512F-NEXT: retq
+; AVX-LABEL: merge_4f32_f32_019u:
+; AVX: # BB#0:
+; AVX-NEXT: vmovq {{.*#+}} xmm0 = mem[0],zero
+; AVX-NEXT: vinsertps {{.*#+}} xmm0 = xmm0[0,1],mem[0],xmm0[3]
+; AVX-NEXT: retq
%ptr0 = getelementptr inbounds float, float* %ptr, i64 0
%ptr1 = getelementptr inbounds float, float* %ptr, i64 1
%ptr2 = getelementptr inbounds float, float* %ptr, i64 9
diff --git a/llvm/test/CodeGen/X86/merge-consecutive-loads-256.ll b/llvm/test/CodeGen/X86/merge-consecutive-loads-256.ll
index 4f3427ab513..efcc323a327 100644
--- a/llvm/test/CodeGen/X86/merge-consecutive-loads-256.ll
+++ b/llvm/test/CodeGen/X86/merge-consecutive-loads-256.ll
@@ -319,7 +319,7 @@ define <8 x float> @merge_8f32_f32_1u3u5zu8(float* %ptr) nounwind uwtable noinli
; AVX512F-NEXT: vmovss 20(%rdi), %xmm1
; AVX512F-NEXT: vshufps {{.*#+}} xmm0 = xmm1[0,1],xmm0[1,0]
; AVX512F-NEXT: vmovss 4(%rdi), %xmm1
-; AVX512F-NEXT: vinsertps $32, 12(%rdi), %xmm1, %xmm1
+; AVX512F-NEXT: vinsertps {{.*#+}} xmm1 = xmm1[0,1],mem[0],xmm1[3]
; AVX512F-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0
; AVX512F-NEXT: retq
%ptr0 = getelementptr inbounds float, float* %ptr, i64 1
OpenPOWER on IntegriCloud