Skip to content

Commit c0dfef8

Browse files
committed
[SLP][NFC]Add a test with potential non-power-of2 (but whole reg) vectorized stores
1 parent 4281f29 commit c0dfef8

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
3+
4+
define void @test(ptr noalias %0, ptr noalias %1) {
5+
; CHECK-LABEL: define void @test(
6+
; CHECK-SAME: ptr noalias [[TMP0:%.*]], ptr noalias [[TMP1:%.*]]) {
7+
; CHECK-NEXT: [[TMP3:%.*]] = getelementptr i8, ptr [[TMP1]], i64 24
8+
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i8, ptr [[TMP1]], i64 48
9+
; CHECK-NEXT: [[TMP5:%.*]] = getelementptr i8, ptr [[TMP1]], i64 8
10+
; CHECK-NEXT: [[TMP6:%.*]] = getelementptr i8, ptr [[TMP1]], i64 16
11+
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr i8, ptr [[TMP0]], i64 24
12+
; CHECK-NEXT: [[TMP8:%.*]] = load double, ptr [[TMP7]], align 8
13+
; CHECK-NEXT: store double [[TMP8]], ptr [[TMP5]], align 8
14+
; CHECK-NEXT: [[TMP9:%.*]] = getelementptr i8, ptr [[TMP0]], i64 48
15+
; CHECK-NEXT: [[TMP10:%.*]] = load double, ptr [[TMP9]], align 16
16+
; CHECK-NEXT: store double [[TMP10]], ptr [[TMP6]], align 16
17+
; CHECK-NEXT: [[TMP11:%.*]] = getelementptr i8, ptr [[TMP0]], i64 8
18+
; CHECK-NEXT: [[TMP12:%.*]] = load double, ptr [[TMP11]], align 8
19+
; CHECK-NEXT: store double [[TMP12]], ptr [[TMP3]], align 8
20+
; CHECK-NEXT: [[TMP13:%.*]] = getelementptr i8, ptr [[TMP0]], i64 32
21+
; CHECK-NEXT: [[TMP14:%.*]] = load double, ptr [[TMP13]], align 16
22+
; CHECK-NEXT: [[TMP15:%.*]] = getelementptr i8, ptr [[TMP1]], i64 32
23+
; CHECK-NEXT: store double [[TMP14]], ptr [[TMP15]], align 16
24+
; CHECK-NEXT: [[TMP16:%.*]] = getelementptr i8, ptr [[TMP0]], i64 56
25+
; CHECK-NEXT: [[TMP17:%.*]] = load double, ptr [[TMP16]], align 8
26+
; CHECK-NEXT: [[TMP18:%.*]] = getelementptr i8, ptr [[TMP1]], i64 40
27+
; CHECK-NEXT: store double [[TMP17]], ptr [[TMP18]], align 8
28+
; CHECK-NEXT: [[TMP19:%.*]] = getelementptr i8, ptr [[TMP0]], i64 16
29+
; CHECK-NEXT: [[TMP20:%.*]] = load double, ptr [[TMP19]], align 16
30+
; CHECK-NEXT: store double [[TMP20]], ptr [[TMP4]], align 16
31+
; CHECK-NEXT: [[TMP21:%.*]] = getelementptr i8, ptr [[TMP0]], i64 40
32+
; CHECK-NEXT: [[TMP22:%.*]] = load double, ptr [[TMP21]], align 8
33+
; CHECK-NEXT: [[TMP23:%.*]] = getelementptr i8, ptr [[TMP1]], i64 56
34+
; CHECK-NEXT: store double [[TMP22]], ptr [[TMP23]], align 8
35+
; CHECK-NEXT: ret void
36+
;
37+
%3 = getelementptr i8, ptr %1, i64 24
38+
%4 = getelementptr i8, ptr %1, i64 48
39+
%5 = getelementptr i8, ptr %1, i64 8
40+
%6 = getelementptr i8, ptr %1, i64 16
41+
%8 = getelementptr i8, ptr %0, i64 24
42+
%9 = load double, ptr %8, align 8
43+
store double %9, ptr %5, align 8
44+
%10 = getelementptr i8, ptr %0, i64 48
45+
%11 = load double, ptr %10, align 16
46+
store double %11, ptr %6, align 16
47+
%12 = getelementptr i8, ptr %0, i64 8
48+
%13 = load double, ptr %12, align 8
49+
store double %13, ptr %3, align 8
50+
%14 = getelementptr i8, ptr %0, i64 32
51+
%15 = load double, ptr %14, align 16
52+
%16 = getelementptr i8, ptr %1, i64 32
53+
store double %15, ptr %16, align 16
54+
%17 = getelementptr i8, ptr %0, i64 56
55+
%18 = load double, ptr %17, align 8
56+
%19 = getelementptr i8, ptr %1, i64 40
57+
store double %18, ptr %19, align 8
58+
%20 = getelementptr i8, ptr %0, i64 16
59+
%21 = load double, ptr %20, align 16
60+
store double %21, ptr %4, align 16
61+
%22 = getelementptr i8, ptr %0, i64 40
62+
%23 = load double, ptr %22, align 8
63+
%24 = getelementptr i8, ptr %1, i64 56
64+
store double %23, ptr %24, align 8
65+
ret void
66+
}

0 commit comments

Comments
 (0)