Skip to content

Commit 2b02d32

Browse files
author
git apple-llvm automerger
committed
Merge commit '75db91b478fc' from llvm.org/master into apple/master
2 parents 57d182d + 75db91b commit 2b02d32

File tree

1 file changed

+33
-12
lines changed

1 file changed

+33
-12
lines changed

llvm/test/CodeGen/X86/vector-width-store-merge.ll

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,65 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
12
; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s
23

34
; This tests whether or not we generate vectors large than preferred vector width when
45
; lowering memmove.
56

67
; Function Attrs: nounwind uwtable
78
define weak_odr dso_local void @A(i8* %src, i8* %dst) local_unnamed_addr #0 {
9+
; CHECK-LABEL: A:
10+
; CHECK: # %bb.0: # %entry
11+
; CHECK-NEXT: vmovups (%rdi), %xmm0
12+
; CHECK-NEXT: vmovups 16(%rdi), %xmm1
13+
; CHECK-NEXT: vmovups %xmm1, 16(%rsi)
14+
; CHECK-NEXT: vmovups %xmm0, (%rsi)
15+
; CHECK-NEXT: retq
816
entry:
9-
; CHECK: A
10-
; CHECK-NOT: vmovups %ymm
11-
; CHECK: vmovups %xmm
1217
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 1 %dst, i8* align 1 %src, i64 32, i1 false)
1318
ret void
1419
}
1520

1621
; Function Attrs: nounwind uwtable
1722
define weak_odr dso_local void @B(i8* %src, i8* %dst) local_unnamed_addr #0 {
23+
; CHECK-LABEL: B:
24+
; CHECK: # %bb.0: # %entry
25+
; CHECK-NEXT: vmovups (%rdi), %xmm0
26+
; CHECK-NEXT: vmovups 16(%rdi), %xmm1
27+
; CHECK-NEXT: vmovups 32(%rdi), %xmm2
28+
; CHECK-NEXT: vmovups 48(%rdi), %xmm3
29+
; CHECK-NEXT: vmovups %xmm3, 48(%rsi)
30+
; CHECK-NEXT: vmovups %xmm2, 32(%rsi)
31+
; CHECK-NEXT: vmovups %xmm1, 16(%rsi)
32+
; CHECK-NEXT: vmovups %xmm0, (%rsi)
33+
; CHECK-NEXT: retq
1834
entry:
19-
; CHECK: B
20-
; CHECK-NOT: vmovups %zmm
21-
; CHECK: vmovups %xmm
2235
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 1 %dst, i8* align 1 %src, i64 64, i1 false)
2336
ret void
2437
}
2538

2639
; Function Attrs: nounwind uwtable
2740
define weak_odr dso_local void @C(i8* %src, i8* %dst) local_unnamed_addr #2 {
41+
; CHECK-LABEL: C:
42+
; CHECK: # %bb.0: # %entry
43+
; CHECK-NEXT: vmovups (%rdi), %ymm0
44+
; CHECK-NEXT: vmovups %ymm0, (%rsi)
45+
; CHECK-NEXT: vzeroupper
46+
; CHECK-NEXT: retq
2847
entry:
29-
; CHECK: C
30-
; CHECK-NOT: vmovups %ymm
31-
; CHECK: vmovups %ymm
3248
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 1 %dst, i8* align 1 %src, i64 32, i1 false)
3349
ret void
3450
}
3551

3652
; Function Attrs: nounwind uwtable
3753
define weak_odr dso_local void @D(i8* %src, i8* %dst) local_unnamed_addr #2 {
54+
; CHECK-LABEL: D:
55+
; CHECK: # %bb.0: # %entry
56+
; CHECK-NEXT: vmovups (%rdi), %ymm0
57+
; CHECK-NEXT: vmovups 32(%rdi), %ymm1
58+
; CHECK-NEXT: vmovups %ymm1, 32(%rsi)
59+
; CHECK-NEXT: vmovups %ymm0, (%rsi)
60+
; CHECK-NEXT: vzeroupper
61+
; CHECK-NEXT: retq
3862
entry:
39-
; CHECK: D
40-
; CHECK-NOT: vmovups %zmm
41-
; CHECK: vmovups %ymm
4263
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 1 %dst, i8* align 1 %src, i64 64, i1 false)
4364
ret void
4465
}

0 commit comments

Comments
 (0)