@@ -772,10 +772,9 @@ entry:
772
772
773
773
define i32 @test_sext (i32 %a , i32 %b ){
774
774
; CHECK-LABEL: @test_sext(
775
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[A:%.*]], 0
776
- ; CHECK-NEXT: [[SEXT:%.*]] = sext i1 [[CMP]] to i32
777
- ; CHECK-NEXT: [[ADD:%.*]] = add i32 [[SEXT]], [[B:%.*]]
778
- ; CHECK-NEXT: [[NOT:%.*]] = xor i32 [[ADD]], -1
775
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i32 [[A:%.*]], 0
776
+ ; CHECK-NEXT: [[TMP2:%.*]] = sext i1 [[TMP1]] to i32
777
+ ; CHECK-NEXT: [[NOT:%.*]] = sub i32 [[TMP2]], [[B:%.*]]
779
778
; CHECK-NEXT: ret i32 [[NOT]]
780
779
;
781
780
%cmp = icmp eq i32 %a , 0
@@ -787,10 +786,9 @@ define i32 @test_sext(i32 %a, i32 %b){
787
786
788
787
define <2 x i32 > @test_sext_vec (<2 x i32 > %a , <2 x i32 > %b ){
789
788
; CHECK-LABEL: @test_sext_vec(
790
- ; CHECK-NEXT: [[CMP:%.*]] = icmp eq <2 x i32> [[A:%.*]], zeroinitializer
791
- ; CHECK-NEXT: [[SEXT:%.*]] = sext <2 x i1> [[CMP]] to <2 x i32>
792
- ; CHECK-NEXT: [[ADD:%.*]] = add <2 x i32> [[SEXT]], [[B:%.*]]
793
- ; CHECK-NEXT: [[NOT:%.*]] = xor <2 x i32> [[ADD]], <i32 -1, i32 -1>
789
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp ne <2 x i32> [[A:%.*]], zeroinitializer
790
+ ; CHECK-NEXT: [[TMP2:%.*]] = sext <2 x i1> [[TMP1]] to <2 x i32>
791
+ ; CHECK-NEXT: [[NOT:%.*]] = sub <2 x i32> [[TMP2]], [[B:%.*]]
794
792
; CHECK-NEXT: ret <2 x i32> [[NOT]]
795
793
;
796
794
%cmp = icmp eq <2 x i32 > %a , zeroinitializer
@@ -814,11 +812,8 @@ define i32 @test_zext_nneg(i32 %a, i32 %b){
814
812
815
813
define i8 @test_trunc (i8 %a ){
816
814
; CHECK-LABEL: @test_trunc(
817
- ; CHECK-NEXT: [[ZEXT:%.*]] = zext i8 [[A:%.*]] to i32
818
- ; CHECK-NEXT: [[SUB:%.*]] = add nsw i32 [[ZEXT]], -1
819
- ; CHECK-NEXT: [[SHR:%.*]] = ashr i32 [[SUB]], 31
820
- ; CHECK-NEXT: [[CONV:%.*]] = trunc i32 [[SHR]] to i8
821
- ; CHECK-NEXT: [[NOT:%.*]] = xor i8 [[CONV]], -1
815
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp ne i8 [[A:%.*]], 0
816
+ ; CHECK-NEXT: [[NOT:%.*]] = sext i1 [[TMP1]] to i8
822
817
; CHECK-NEXT: ret i8 [[NOT]]
823
818
;
824
819
%zext = zext i8 %a to i32
@@ -831,11 +826,8 @@ define i8 @test_trunc(i8 %a){
831
826
832
827
define <2 x i8 > @test_trunc_vec (<2 x i8 > %a ){
833
828
; CHECK-LABEL: @test_trunc_vec(
834
- ; CHECK-NEXT: [[ZEXT:%.*]] = zext <2 x i8> [[A:%.*]] to <2 x i32>
835
- ; CHECK-NEXT: [[SUB:%.*]] = add nsw <2 x i32> [[ZEXT]], <i32 -1, i32 -1>
836
- ; CHECK-NEXT: [[SHR:%.*]] = ashr <2 x i32> [[SUB]], <i32 31, i32 31>
837
- ; CHECK-NEXT: [[CONV:%.*]] = trunc <2 x i32> [[SHR]] to <2 x i8>
838
- ; CHECK-NEXT: [[NOT:%.*]] = xor <2 x i8> [[CONV]], <i8 -1, i8 -1>
829
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp ne <2 x i8> [[A:%.*]], zeroinitializer
830
+ ; CHECK-NEXT: [[NOT:%.*]] = sext <2 x i1> [[TMP1]] to <2 x i8>
839
831
; CHECK-NEXT: ret <2 x i8> [[NOT]]
840
832
;
841
833
%zext = zext <2 x i8 > %a to <2 x i32 >
0 commit comments