@@ -6,11 +6,7 @@ define i40 @select_reconstruction_i40(i40 %arg0) {
6
6
; CHECK-SAME: i40 [[ARG0:%.*]]) {
7
7
; CHECK-NEXT: [[TMP1:%.*]] = trunc i40 [[ARG0]] to i8
8
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]]
9
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP2]], i40 0, i40 [[ARG0]]
14
10
; CHECK-NEXT: ret i40 [[TMP3]]
15
11
;
16
12
%1 = trunc i40 %arg0 to i8
@@ -28,11 +24,7 @@ define i40 @select_reconstruction_any_cmp_val(i40 %arg0, i8 %arg1) {
28
24
; CHECK-SAME: i40 [[ARG0:%.*]], i8 [[ARG1:%.*]]) {
29
25
; CHECK-NEXT: [[TMP1:%.*]] = trunc i40 [[ARG0]] to i8
30
26
; 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]]
27
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP2]], i40 0, i40 [[ARG0]]
36
28
; CHECK-NEXT: ret i40 [[TMP3]]
37
29
;
38
30
%1 = trunc i40 %arg0 to i8
@@ -51,11 +43,8 @@ define i40 @select_reconstruction_257_mask(i40 %arg0) {
51
43
; CHECK-NEXT: [[TMP1:%.*]] = trunc i40 [[ARG0]] to i8
52
44
; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP1]], 2
53
45
; CHECK-NEXT: [[TMP3:%.*]] = and i40 [[ARG0]], -257
54
- ; CHECK-NEXT: [[TMP5:%.*]] = select i1 [[TMP2]], i8 0, i8 [[TMP1]]
55
46
; 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]]
47
+ ; CHECK-NEXT: ret i40 [[TMP4]]
59
48
;
60
49
%1 = trunc i40 %arg0 to i8
61
50
%2 = icmp eq i8 %1 , 2
@@ -72,11 +61,7 @@ define i40 @select_reconstruction_i16_mask(i40 %arg0) {
72
61
; CHECK-SAME: i40 [[ARG0:%.*]]) {
73
62
; CHECK-NEXT: [[TMP1:%.*]] = trunc i40 [[ARG0]] to i16
74
63
; 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]]
64
+ ; CHECK-NEXT: [[TMP3:%.*]] = select i1 [[TMP2]], i40 0, i40 [[ARG0]]
80
65
; CHECK-NEXT: ret i40 [[TMP3]]
81
66
;
82
67
%1 = trunc i40 %arg0 to i16
@@ -94,11 +79,7 @@ define <2 x i32> @select_reconstruction_vec_any_cmp_val(<2 x i32> %arg0, <2 x i8
94
79
; CHECK-SAME: <2 x i32> [[ARG0:%.*]], <2 x i8> [[ARG1:%.*]]) {
95
80
; CHECK-NEXT: [[TMP1:%.*]] = trunc <2 x i32> [[ARG0]] to <2 x i8>
96
81
; 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]]
82
+ ; CHECK-NEXT: [[TMP7:%.*]] = select <2 x i1> [[TMP2]], <2 x i32> zeroinitializer, <2 x i32> [[ARG0]]
102
83
; CHECK-NEXT: ret <2 x i32> [[TMP7]]
103
84
;
104
85
%1 = trunc <2 x i32 > %arg0 to <2 x i8 >
0 commit comments