Skip to content

Commit 683da5c

Browse files
committed
pre-commit test
1 parent 576ced5 commit 683da5c

File tree

1 file changed

+112
-0
lines changed

1 file changed

+112
-0
lines changed
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt < %s -passes=instcombine -S | FileCheck %s
3+
4+
define i40 @select_reconstruction_i40(i40 %arg0) {
5+
; CHECK-LABEL: define i40 @select_reconstruction_i40(
6+
; CHECK-SAME: i40 [[ARG0:%.*]]) {
7+
; CHECK-NEXT: [[TMP1:%.*]] = trunc i40 [[ARG0]] to i8
8+
; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP1]], 2
9+
; CHECK-NEXT: [[TMP7:%.*]] = and i40 [[ARG0]], -256
10+
; CHECK-NEXT: [[TMP4:%.*]] = select i1 [[TMP2]], i8 0, i8 [[TMP1]]
11+
; CHECK-NEXT: [[TMP5:%.*]] = select i1 [[TMP2]], i40 0, i40 [[TMP7]]
12+
; CHECK-NEXT: [[TMP6:%.*]] = zext i8 [[TMP4]] to i40
13+
; CHECK-NEXT: [[TMP3:%.*]] = or disjoint i40 [[TMP5]], [[TMP6]]
14+
; CHECK-NEXT: ret i40 [[TMP3]]
15+
;
16+
%1 = trunc i40 %arg0 to i8
17+
%2 = icmp eq i8 %1, 2
18+
%3 = and i40 %arg0, -256
19+
%4 = select i1 %2, i8 0, i8 %1
20+
%5 = select i1 %2, i40 0, i40 %3
21+
%6 = zext i8 %4 to i40
22+
%7 = or disjoint i40 %5, %6
23+
ret i40 %7
24+
}
25+
26+
define i40 @select_reconstruction_any_cmp_val(i40 %arg0, i8 %arg1) {
27+
; CHECK-LABEL: define i40 @select_reconstruction_any_cmp_val(
28+
; CHECK-SAME: i40 [[ARG0:%.*]], i8 [[ARG1:%.*]]) {
29+
; CHECK-NEXT: [[TMP1:%.*]] = trunc i40 [[ARG0]] to i8
30+
; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[ARG1]], [[TMP1]]
31+
; CHECK-NEXT: [[TMP7:%.*]] = and i40 [[ARG0]], -256
32+
; CHECK-NEXT: [[TMP4:%.*]] = select i1 [[TMP2]], i8 0, i8 [[TMP1]]
33+
; CHECK-NEXT: [[TMP5:%.*]] = select i1 [[TMP2]], i40 0, i40 [[TMP7]]
34+
; CHECK-NEXT: [[TMP6:%.*]] = zext i8 [[TMP4]] to i40
35+
; CHECK-NEXT: [[TMP3:%.*]] = or disjoint i40 [[TMP5]], [[TMP6]]
36+
; CHECK-NEXT: ret i40 [[TMP3]]
37+
;
38+
%1 = trunc i40 %arg0 to i8
39+
%2 = icmp eq i8 %1, %arg1
40+
%3 = and i40 %arg0, -256
41+
%4 = select i1 %2, i8 0, i8 %1
42+
%5 = select i1 %2, i40 0, i40 %3
43+
%6 = zext i8 %4 to i40
44+
%7 = or disjoint i40 %5, %6
45+
ret i40 %7
46+
}
47+
48+
define i40 @select_reconstruction_257_mask(i40 %arg0) {
49+
; CHECK-LABEL: define i40 @select_reconstruction_257_mask(
50+
; CHECK-SAME: i40 [[ARG0:%.*]]) {
51+
; CHECK-NEXT: [[TMP1:%.*]] = trunc i40 [[ARG0]] to i8
52+
; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP1]], 2
53+
; CHECK-NEXT: [[TMP3:%.*]] = and i40 [[ARG0]], -257
54+
; CHECK-NEXT: [[TMP5:%.*]] = select i1 [[TMP2]], i8 0, i8 [[TMP1]]
55+
; CHECK-NEXT: [[TMP4:%.*]] = select i1 [[TMP2]], i40 0, i40 [[TMP3]]
56+
; CHECK-NEXT: [[TMP6:%.*]] = zext i8 [[TMP5]] to i40
57+
; CHECK-NEXT: [[TMP7:%.*]] = or disjoint i40 [[TMP4]], [[TMP6]]
58+
; CHECK-NEXT: ret i40 [[TMP7]]
59+
;
60+
%1 = trunc i40 %arg0 to i8
61+
%2 = icmp eq i8 %1, 2
62+
%3 = and i40 %arg0, -257
63+
%4 = select i1 %2, i8 0, i8 %1
64+
%5 = select i1 %2, i40 0, i40 %3
65+
%6 = zext i8 %4 to i40
66+
%7 = or disjoint i40 %5, %6
67+
ret i40 %7
68+
}
69+
70+
define i40 @select_reconstruction_i16_mask(i40 %arg0) {
71+
; CHECK-LABEL: define i40 @select_reconstruction_i16_mask(
72+
; CHECK-SAME: i40 [[ARG0:%.*]]) {
73+
; CHECK-NEXT: [[TMP1:%.*]] = trunc i40 [[ARG0]] to i16
74+
; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i16 [[TMP1]], 2
75+
; CHECK-NEXT: [[TMP7:%.*]] = and i40 [[ARG0]], -65356
76+
; CHECK-NEXT: [[TMP4:%.*]] = select i1 [[TMP2]], i16 0, i16 [[TMP1]]
77+
; CHECK-NEXT: [[TMP5:%.*]] = select i1 [[TMP2]], i40 0, i40 [[TMP7]]
78+
; CHECK-NEXT: [[TMP6:%.*]] = zext i16 [[TMP4]] to i40
79+
; CHECK-NEXT: [[TMP3:%.*]] = or disjoint i40 [[TMP5]], [[TMP6]]
80+
; CHECK-NEXT: ret i40 [[TMP3]]
81+
;
82+
%1 = trunc i40 %arg0 to i16
83+
%2 = icmp eq i16 %1, 2
84+
%3 = and i40 %arg0, -65356
85+
%4 = select i1 %2, i16 0, i16 %1
86+
%5 = select i1 %2, i40 0, i40 %3
87+
%6 = zext i16 %4 to i40
88+
%7 = or disjoint i40 %5, %6
89+
ret i40 %7
90+
}
91+
92+
define <2 x i32> @select_reconstruction_vec_any_cmp_val(<2 x i32> %arg0, <2 x i8> %arg1) {
93+
; CHECK-LABEL: define <2 x i32> @select_reconstruction_vec_any_cmp_val(
94+
; CHECK-SAME: <2 x i32> [[ARG0:%.*]], <2 x i8> [[ARG1:%.*]]) {
95+
; CHECK-NEXT: [[TMP1:%.*]] = trunc <2 x i32> [[ARG0]] to <2 x i8>
96+
; CHECK-NEXT: [[TMP2:%.*]] = icmp eq <2 x i8> [[ARG1]], [[TMP1]]
97+
; CHECK-NEXT: [[TMP3:%.*]] = and <2 x i32> [[ARG0]], splat (i32 -256)
98+
; CHECK-NEXT: [[TMP4:%.*]] = select <2 x i1> [[TMP2]], <2 x i8> zeroinitializer, <2 x i8> [[TMP1]]
99+
; CHECK-NEXT: [[TMP5:%.*]] = select <2 x i1> [[TMP2]], <2 x i32> zeroinitializer, <2 x i32> [[TMP3]]
100+
; CHECK-NEXT: [[TMP6:%.*]] = zext <2 x i8> [[TMP4]] to <2 x i32>
101+
; CHECK-NEXT: [[TMP7:%.*]] = or disjoint <2 x i32> [[TMP5]], [[TMP6]]
102+
; CHECK-NEXT: ret <2 x i32> [[TMP7]]
103+
;
104+
%1 = trunc <2 x i32> %arg0 to <2 x i8>
105+
%2 = icmp eq <2 x i8> %1, %arg1
106+
%3 = and <2 x i32> %arg0, <i32 -256, i32 -256>
107+
%4 = select <2 x i1> %2, <2 x i8> <i8 0, i8 0>, <2 x i8> %1
108+
%5 = select <2 x i1> %2, <2 x i32> <i32 0, i32 0>, <2 x i32> %3
109+
%6 = zext <2 x i8> %4 to <2 x i32>
110+
%7 = or <2 x i32> %5, %6
111+
ret <2 x i32> %7
112+
}

0 commit comments

Comments
 (0)