Skip to content

Commit 9d004e1

Browse files
committed
Moving end-to-end test to PhaseOrdering (comment 3)
1 parent 5fc1476 commit 9d004e1

File tree

2 files changed

+126
-19
lines changed

2 files changed

+126
-19
lines changed

clang/test/CodeGen/X86/min_max.c

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
; RUN: opt < %s --O3 -S | FileCheck %s
2+
3+
define signext i16 @vecreduce_smax_v2i16(i32 noundef %0, ptr noundef %1) #0 {
4+
;; CHECK: @llvm.smax
5+
%3 = alloca i32, align 4
6+
%4 = alloca ptr, align 8
7+
%5 = alloca i16, align 2
8+
%6 = alloca i32, align 4
9+
store i32 %0, ptr %3, align 4
10+
store ptr %1, ptr %4, align 8
11+
store i16 0, ptr %5, align 2
12+
store i32 0, ptr %6, align 4
13+
br label %7
14+
15+
7: ; preds = %34, %2
16+
%8 = load i32, ptr %6, align 4
17+
%9 = load i32, ptr %3, align 4
18+
%10 = icmp slt i32 %8, %9
19+
br i1 %10, label %11, label %37
20+
21+
11: ; preds = %7
22+
%12 = load i16, ptr %5, align 2
23+
%13 = sext i16 %12 to i32
24+
%14 = load ptr, ptr %4, align 8
25+
%15 = load i32, ptr %6, align 4
26+
%16 = sext i32 %15 to i64
27+
%17 = getelementptr inbounds i16, ptr %14, i64 %16
28+
%18 = load i16, ptr %17, align 2
29+
%19 = sext i16 %18 to i32
30+
%20 = icmp slt i32 %13, %19
31+
br i1 %20, label %21, label %28
32+
33+
21: ; preds = %11
34+
%22 = load ptr, ptr %4, align 8
35+
%23 = load i32, ptr %6, align 4
36+
%24 = sext i32 %23 to i64
37+
%25 = getelementptr inbounds i16, ptr %22, i64 %24
38+
%26 = load i16, ptr %25, align 2
39+
%27 = sext i16 %26 to i32
40+
br label %31
41+
42+
28: ; preds = %11
43+
%29 = load i16, ptr %5, align 2
44+
%30 = sext i16 %29 to i32
45+
br label %31
46+
47+
31: ; preds = %28, %21
48+
%32 = phi i32 [ %27, %21 ], [ %30, %28 ]
49+
%33 = trunc i32 %32 to i16
50+
store i16 %33, ptr %5, align 2
51+
br label %34
52+
53+
34: ; preds = %31
54+
%35 = load i32, ptr %6, align 4
55+
%36 = add nsw i32 %35, 1
56+
store i32 %36, ptr %6, align 4
57+
br label %7
58+
59+
37: ; preds = %7
60+
%38 = load i16, ptr %5, align 2
61+
ret i16 %38
62+
}
63+
64+
define signext i16 @vecreduce_smin_v2i16(i32 noundef %0, ptr noundef %1) #0 {
65+
; CHECK: @llvm.smin
66+
%3 = alloca i32, align 4
67+
%4 = alloca ptr, align 8
68+
%5 = alloca i16, align 2
69+
%6 = alloca i32, align 4
70+
store i32 %0, ptr %3, align 4
71+
store ptr %1, ptr %4, align 8
72+
store i16 0, ptr %5, align 2
73+
store i32 0, ptr %6, align 4
74+
br label %7
75+
76+
7: ; preds = %34, %2
77+
%8 = load i32, ptr %6, align 4
78+
%9 = load i32, ptr %3, align 4
79+
%10 = icmp slt i32 %8, %9
80+
br i1 %10, label %11, label %37
81+
82+
11: ; preds = %7
83+
%12 = load i16, ptr %5, align 2
84+
%13 = sext i16 %12 to i32
85+
%14 = load ptr, ptr %4, align 8
86+
%15 = load i32, ptr %6, align 4
87+
%16 = sext i32 %15 to i64
88+
%17 = getelementptr inbounds i16, ptr %14, i64 %16
89+
%18 = load i16, ptr %17, align 2
90+
%19 = sext i16 %18 to i32
91+
%20 = icmp sgt i32 %13, %19
92+
br i1 %20, label %21, label %28
93+
94+
21: ; preds = %11
95+
%22 = load ptr, ptr %4, align 8
96+
%23 = load i32, ptr %6, align 4
97+
%24 = sext i32 %23 to i64
98+
%25 = getelementptr inbounds i16, ptr %22, i64 %24
99+
%26 = load i16, ptr %25, align 2
100+
%27 = sext i16 %26 to i32
101+
br label %31
102+
103+
28: ; preds = %11
104+
%29 = load i16, ptr %5, align 2
105+
%30 = sext i16 %29 to i32
106+
br label %31
107+
108+
31: ; preds = %28, %21
109+
%32 = phi i32 [ %27, %21 ], [ %30, %28 ]
110+
%33 = trunc i32 %32 to i16
111+
store i16 %33, ptr %5, align 2
112+
br label %34
113+
114+
34: ; preds = %31
115+
%35 = load i32, ptr %6, align 4
116+
%36 = add nsw i32 %35, 1
117+
store i32 %36, ptr %6, align 4
118+
br label %7
119+
120+
37: ; preds = %7
121+
%38 = load i16, ptr %5, align 2
122+
ret i16 %38
123+
}
124+
125+
126+

0 commit comments

Comments
 (0)