Skip to content

Commit 538dbb9

Browse files
committed
[SLP][NFC]Add a test with the operand reordering and bad reused values decision
1 parent b4130be commit 538dbb9

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
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 -mcpu=core-avx2 < %s | FileCheck %s
3+
4+
define i32 @a() {
5+
; CHECK-LABEL: define i32 @a(
6+
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
7+
; CHECK-NEXT: br label %[[BB1:.*]]
8+
; CHECK: [[BB1]]:
9+
; CHECK-NEXT: [[TMP2:%.*]] = phi i8 [ 0, [[TMP0:%.*]] ], [ [[TMP7:%.*]], %[[BB1]] ]
10+
; CHECK-NEXT: [[TMP3:%.*]] = phi i8 [ 0, [[TMP0]] ], [ [[TMP8:%.*]], %[[BB1]] ]
11+
; CHECK-NEXT: [[TMP4:%.*]] = phi <4 x i8> [ zeroinitializer, [[TMP0]] ], [ [[TMP6:%.*]], %[[BB1]] ]
12+
; CHECK-NEXT: [[TMP5:%.*]] = shufflevector <4 x i8> [[TMP4]], <4 x i8> poison, <8 x i32> <i32 0, i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3>
13+
; CHECK-NEXT: [[TMP6]] = load <4 x i8>, ptr null, align 4
14+
; CHECK-NEXT: [[TMP7]] = extractelement <4 x i8> [[TMP6]], i32 3
15+
; CHECK-NEXT: [[TMP8]] = extractelement <4 x i8> [[TMP6]], i32 2
16+
; CHECK-NEXT: [[TMP9:%.*]] = extractelement <4 x i8> [[TMP6]], i32 0
17+
; CHECK-NEXT: [[TMP10:%.*]] = xor i8 [[TMP9]], [[TMP3]]
18+
; CHECK-NEXT: [[TMP11:%.*]] = extractelement <4 x i8> [[TMP6]], i32 1
19+
; CHECK-NEXT: [[TMP12:%.*]] = xor i8 [[TMP11]], [[TMP2]]
20+
; CHECK-NEXT: [[TMP13:%.*]] = xor i8 [[TMP8]], [[TMP9]]
21+
; CHECK-NEXT: [[TMP14:%.*]] = xor i8 [[TMP7]], [[TMP11]]
22+
; CHECK-NEXT: [[TMP15:%.*]] = shufflevector <4 x i8> [[TMP6]], <4 x i8> poison, <8 x i32> <i32 poison, i32 0, i32 poison, i32 1, i32 poison, i32 2, i32 0, i32 3>
23+
; CHECK-NEXT: [[TMP16:%.*]] = insertelement <8 x i8> [[TMP15]], i8 [[TMP10]], i32 0
24+
; CHECK-NEXT: [[TMP17:%.*]] = insertelement <8 x i8> [[TMP16]], i8 [[TMP12]], i32 2
25+
; CHECK-NEXT: [[TMP18:%.*]] = insertelement <8 x i8> [[TMP17]], i8 [[TMP13]], i32 4
26+
; CHECK-NEXT: [[TMP19:%.*]] = shufflevector <4 x i8> [[TMP4]], <4 x i8> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 poison, i32 poison, i32 poison, i32 poison>
27+
; CHECK-NEXT: [[TMP20:%.*]] = shufflevector <8 x i8> [[TMP19]], <8 x i8> [[TMP18]], <8 x i32> <i32 1, i32 3, i32 2, i32 9, i32 3, i32 11, i32 poison, i32 13>
28+
; CHECK-NEXT: [[TMP21:%.*]] = insertelement <8 x i8> [[TMP20]], i8 [[TMP14]], i32 6
29+
; CHECK-NEXT: [[TMP22:%.*]] = xor <8 x i8> [[TMP18]], [[TMP21]]
30+
; CHECK-NEXT: [[TMP23:%.*]] = xor <8 x i8> [[TMP22]], [[TMP5]]
31+
; CHECK-NEXT: store <8 x i8> [[TMP23]], ptr null, align 4
32+
; CHECK-NEXT: br label %[[BB1]]
33+
;
34+
br label %1
35+
36+
1:
37+
%2 = phi i8 [ 0, %0 ], [ %40, %1 ]
38+
%3 = phi i8 [ 0, %0 ], [ %28, %1 ]
39+
%4 = phi i8 [ 0, %0 ], [ %16, %1 ]
40+
%5 = phi i8 [ 0, %0 ], [ %6, %1 ]
41+
%6 = load i8, ptr null, align 4
42+
%7 = xor i8 %6, %3
43+
%8 = xor i8 %7, %4
44+
%9 = xor i8 %8, %5
45+
store i8 %9, ptr null, align 4
46+
%10 = xor i8 %6, %2
47+
%11 = xor i8 %10, %5
48+
%12 = add i64 0, 1
49+
%13 = getelementptr i8, ptr null, i64 %12
50+
store i8 %11, ptr %13, align 1
51+
%14 = add i64 0, 1
52+
%15 = getelementptr i8, ptr null, i64 %14
53+
%16 = load i8, ptr %15, align 1
54+
%17 = xor i8 %16, %2
55+
%18 = xor i8 %17, %3
56+
%19 = xor i8 %18, %4
57+
%20 = add i64 0, 2
58+
%21 = getelementptr i8, ptr null, i64 %20
59+
store i8 %19, ptr %21, align 2
60+
%22 = xor i8 %16, %6
61+
%23 = xor i8 %22, %4
62+
%24 = add i64 0, 3
63+
%25 = getelementptr i8, ptr null, i64 %24
64+
store i8 %23, ptr %25, align 1
65+
%26 = add i64 0, 2
66+
%27 = getelementptr i8, ptr null, i64 %26
67+
%28 = load i8, ptr %27, align 2
68+
%29 = xor i8 %28, %6
69+
%30 = xor i8 %29, %2
70+
%31 = xor i8 %30, %3
71+
%32 = add i64 0, 4
72+
%33 = getelementptr i8, ptr null, i64 %32
73+
store i8 %31, ptr %33, align 4
74+
%34 = xor i8 %28, %16
75+
%35 = xor i8 %34, %3
76+
%36 = add i64 0, 5
77+
%37 = getelementptr i8, ptr null, i64 %36
78+
store i8 %35, ptr %37, align 1
79+
%38 = add i64 0, 3
80+
%39 = getelementptr i8, ptr null, i64 %38
81+
%40 = load i8, ptr %39, align 1
82+
%41 = xor i8 %40, %16
83+
%42 = xor i8 %41, %6
84+
%43 = xor i8 %42, %2
85+
%44 = add i64 0, 6
86+
%45 = getelementptr i8, ptr null, i64 %44
87+
store i8 %43, ptr %45, align 2
88+
%46 = xor i8 %40, %28
89+
%47 = xor i8 %46, %2
90+
%48 = add i64 0, 7
91+
%49 = getelementptr i8, ptr null, i64 %48
92+
store i8 %47, ptr %49, align 1
93+
br label %1
94+
}
95+

0 commit comments

Comments
 (0)