@@ -6,11 +6,7 @@ define i40 @select_reconstruction_i40(i40 %arg0) {
66; CHECK-SAME: i40 [[ARG0:%.*]]) { 
77; CHECK-NEXT:    [[TMP1:%.*]] = trunc i40 [[ARG0]] to i8 
88; 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]] 
1410; CHECK-NEXT:    ret i40 [[TMP3]] 
1511; 
1612  %1  = trunc  i40  %arg0  to  i8 
@@ -28,11 +24,7 @@ define i40 @select_reconstruction_any_cmp_val(i40 %arg0, i8 %arg1) {
2824; CHECK-SAME: i40 [[ARG0:%.*]], i8 [[ARG1:%.*]]) { 
2925; CHECK-NEXT:    [[TMP1:%.*]] = trunc i40 [[ARG0]] to i8 
3026; 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]] 
3628; CHECK-NEXT:    ret i40 [[TMP3]] 
3729; 
3830  %1  = trunc  i40  %arg0  to  i8 
@@ -51,11 +43,8 @@ define i40 @select_reconstruction_257_mask(i40 %arg0) {
5143; CHECK-NEXT:    [[TMP1:%.*]] = trunc i40 [[ARG0]] to i8 
5244; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i8 [[TMP1]], 2 
5345; CHECK-NEXT:    [[TMP3:%.*]] = and i40 [[ARG0]], -257 
54- ; CHECK-NEXT:    [[TMP5:%.*]] = select i1 [[TMP2]], i8 0, i8 [[TMP1]] 
5546; 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]] 
5948; 
6049  %1  = trunc  i40  %arg0  to  i8 
6150  %2  = icmp  eq  i8  %1 , 2 
@@ -72,11 +61,7 @@ define i40 @select_reconstruction_i16_mask(i40 %arg0) {
7261; CHECK-SAME: i40 [[ARG0:%.*]]) { 
7362; CHECK-NEXT:    [[TMP1:%.*]] = trunc i40 [[ARG0]] to i16 
7463; 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]] 
8065; CHECK-NEXT:    ret i40 [[TMP3]] 
8166; 
8267  %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
9479; CHECK-SAME: <2 x i32> [[ARG0:%.*]], <2 x i8> [[ARG1:%.*]]) { 
9580; CHECK-NEXT:    [[TMP1:%.*]] = trunc <2 x i32> [[ARG0]] to <2 x i8> 
9681; 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]] 
10283; CHECK-NEXT:    ret <2 x i32> [[TMP7]] 
10384; 
10485  %1  = trunc  <2  x i32 > %arg0  to  <2  x i8 >
0 commit comments