@@ -525,7 +525,7 @@ define <2 x i32> @and_demanded_bits_splat_vec(<2 x i32> %x) {
525
525
define i32 @and_zext_demanded (i16 %x , i32 %y ) {
526
526
; CHECK-LABEL: @and_zext_demanded(
527
527
; CHECK-NEXT: [[S:%.*]] = lshr i16 [[X:%.*]], 8
528
- ; CHECK-NEXT: [[Z:%.*]] = zext i16 [[S]] to i32
528
+ ; CHECK-NEXT: [[Z:%.*]] = zext nneg i16 [[S]] to i32
529
529
; CHECK-NEXT: ret i32 [[Z]]
530
530
;
531
531
%s = lshr i16 %x , 8
@@ -618,7 +618,7 @@ define i64 @test35(i32 %X) {
618
618
; CHECK-LABEL: @test35(
619
619
; CHECK-NEXT: [[TMP1:%.*]] = sub i32 0, [[X:%.*]]
620
620
; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], 240
621
- ; CHECK-NEXT: [[RES:%.*]] = zext i32 [[TMP2]] to i64
621
+ ; CHECK-NEXT: [[RES:%.*]] = zext nneg i32 [[TMP2]] to i64
622
622
; CHECK-NEXT: ret i64 [[RES]]
623
623
;
624
624
%zext = zext i32 %X to i64
@@ -631,7 +631,7 @@ define <2 x i64> @test35_uniform(<2 x i32> %X) {
631
631
; CHECK-LABEL: @test35_uniform(
632
632
; CHECK-NEXT: [[TMP1:%.*]] = sub <2 x i32> zeroinitializer, [[X:%.*]]
633
633
; CHECK-NEXT: [[TMP2:%.*]] = and <2 x i32> [[TMP1]], <i32 240, i32 240>
634
- ; CHECK-NEXT: [[RES:%.*]] = zext <2 x i32> [[TMP2]] to <2 x i64>
634
+ ; CHECK-NEXT: [[RES:%.*]] = zext nneg <2 x i32> [[TMP2]] to <2 x i64>
635
635
; CHECK-NEXT: ret <2 x i64> [[RES]]
636
636
;
637
637
%zext = zext <2 x i32 > %X to <2 x i64 >
@@ -644,7 +644,7 @@ define i64 @test36(i32 %X) {
644
644
; CHECK-LABEL: @test36(
645
645
; CHECK-NEXT: [[TMP1:%.*]] = add i32 [[X:%.*]], 7
646
646
; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], 240
647
- ; CHECK-NEXT: [[RES:%.*]] = zext i32 [[TMP2]] to i64
647
+ ; CHECK-NEXT: [[RES:%.*]] = zext nneg i32 [[TMP2]] to i64
648
648
; CHECK-NEXT: ret i64 [[RES]]
649
649
;
650
650
%zext = zext i32 %X to i64
@@ -657,7 +657,7 @@ define <2 x i64> @test36_uniform(<2 x i32> %X) {
657
657
; CHECK-LABEL: @test36_uniform(
658
658
; CHECK-NEXT: [[TMP1:%.*]] = add <2 x i32> [[X:%.*]], <i32 7, i32 7>
659
659
; CHECK-NEXT: [[TMP2:%.*]] = and <2 x i32> [[TMP1]], <i32 240, i32 240>
660
- ; CHECK-NEXT: [[RES:%.*]] = zext <2 x i32> [[TMP2]] to <2 x i64>
660
+ ; CHECK-NEXT: [[RES:%.*]] = zext nneg <2 x i32> [[TMP2]] to <2 x i64>
661
661
; CHECK-NEXT: ret <2 x i64> [[RES]]
662
662
;
663
663
%zext = zext <2 x i32 > %X to <2 x i64 >
@@ -683,7 +683,7 @@ define i64 @test37(i32 %X) {
683
683
; CHECK-LABEL: @test37(
684
684
; CHECK-NEXT: [[TMP1:%.*]] = mul i32 [[X:%.*]], 7
685
685
; CHECK-NEXT: [[TMP2:%.*]] = and i32 [[TMP1]], 240
686
- ; CHECK-NEXT: [[RES:%.*]] = zext i32 [[TMP2]] to i64
686
+ ; CHECK-NEXT: [[RES:%.*]] = zext nneg i32 [[TMP2]] to i64
687
687
; CHECK-NEXT: ret i64 [[RES]]
688
688
;
689
689
%zext = zext i32 %X to i64
@@ -696,7 +696,7 @@ define <2 x i64> @test37_uniform(<2 x i32> %X) {
696
696
; CHECK-LABEL: @test37_uniform(
697
697
; CHECK-NEXT: [[TMP1:%.*]] = mul <2 x i32> [[X:%.*]], <i32 7, i32 7>
698
698
; CHECK-NEXT: [[TMP2:%.*]] = and <2 x i32> [[TMP1]], <i32 240, i32 240>
699
- ; CHECK-NEXT: [[RES:%.*]] = zext <2 x i32> [[TMP2]] to <2 x i64>
699
+ ; CHECK-NEXT: [[RES:%.*]] = zext nneg <2 x i32> [[TMP2]] to <2 x i64>
700
700
; CHECK-NEXT: ret <2 x i64> [[RES]]
701
701
;
702
702
%zext = zext <2 x i32 > %X to <2 x i64 >
@@ -721,7 +721,7 @@ define <2 x i64> @test37_nonuniform(<2 x i32> %X) {
721
721
define i64 @test38 (i32 %X ) {
722
722
; CHECK-LABEL: @test38(
723
723
; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[X:%.*]], 240
724
- ; CHECK-NEXT: [[RES:%.*]] = zext i32 [[TMP1]] to i64
724
+ ; CHECK-NEXT: [[RES:%.*]] = zext nneg i32 [[TMP1]] to i64
725
725
; CHECK-NEXT: ret i64 [[RES]]
726
726
;
727
727
%zext = zext i32 %X to i64
@@ -733,7 +733,7 @@ define i64 @test38(i32 %X) {
733
733
define i64 @test39 (i32 %X ) {
734
734
; CHECK-LABEL: @test39(
735
735
; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[X:%.*]], 240
736
- ; CHECK-NEXT: [[RES:%.*]] = zext i32 [[TMP1]] to i64
736
+ ; CHECK-NEXT: [[RES:%.*]] = zext nneg i32 [[TMP1]] to i64
737
737
; CHECK-NEXT: ret i64 [[RES]]
738
738
;
739
739
%zext = zext i32 %X to i64
0 commit comments