Skip to content

Commit abc4c21

Browse files
committed
[X86] Add test case for #93000
1 parent d8c8c8c commit abc4c21

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

llvm/test/CodeGen/X86/pr93000.ll

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
2+
; RUN: llc < %s -mtriple=x86_64- -mcpu=x86-64-v4 | FileCheck %s
3+
4+
define void @PR93000(ptr %a0, ptr %a1, ptr %a2, <32 x i16> %a3) {
5+
; CHECK-LABEL: PR93000:
6+
; CHECK: # %bb.0: # %Entry
7+
; CHECK-NEXT: movl (%rdi), %eax
8+
; CHECK-NEXT: addq $4, %rdi
9+
; CHECK-NEXT: .p2align 4, 0x90
10+
; CHECK-NEXT: .LBB0_1: # %Loop
11+
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
12+
; CHECK-NEXT: kmovd %eax, %k1
13+
; CHECK-NEXT: notl %eax
14+
; CHECK-NEXT: kmovd %eax, %k2
15+
; CHECK-NEXT: vpblendmw (%rsi), %zmm0, %zmm1 {%k1}
16+
; CHECK-NEXT: vmovdqu16 (%rdx), %zmm1 {%k2}
17+
; CHECK-NEXT: vmovdqu64 %zmm1, (%rsi)
18+
; CHECK-NEXT: movl (%rdi), %eax
19+
; CHECK-NEXT: addq $4, %rdi
20+
; CHECK-NEXT: testl %eax, %eax
21+
; CHECK-NEXT: jne .LBB0_1
22+
; CHECK-NEXT: # %bb.2: # %Then
23+
; CHECK-NEXT: vzeroupper
24+
; CHECK-NEXT: retq
25+
Entry:
26+
%pre = load i32, ptr %a0, align 4
27+
br label %Loop
28+
29+
Loop: ; preds = %Loop, %Entry
30+
%p = phi i32 [ %limit, %Loop ], [ %pre, %Entry ]
31+
%lsr.iv.pn = phi ptr [ %lsr.iv, %Loop ], [ %a0, %Entry ]
32+
%lsr.iv = getelementptr i8, ptr %lsr.iv.pn, i64 4
33+
%pn = xor i32 %p, -1
34+
%m = bitcast i32 %p to <32 x i1>
35+
%mn = bitcast i32 %pn to <32 x i1>
36+
%mload0 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %a1, i32 2, <32 x i1> %m, <32 x i16> %a3)
37+
%mload1 = tail call <32 x i16> @llvm.masked.load.v32i16.p0(ptr %a2, i32 2, <32 x i1> %mn, <32 x i16> %mload0)
38+
store <32 x i16> %mload1, ptr %a1, align 2
39+
%limit = load i32, ptr %lsr.iv, align 4
40+
%icmp = icmp eq i32 %limit, 0
41+
br i1 %icmp, label %Then, label %Loop
42+
43+
Then: ; preds = %Loop
44+
ret void
45+
}

0 commit comments

Comments
 (0)