@@ -12,7 +12,7 @@ declare void @use_vec(<2 x i5>)
12
12
define i64 @test1 (i32 %x ) {
13
13
; CHECK-LABEL: @test1(
14
14
; CHECK-NEXT: [[T:%.*]] = call i32 @llvm.ctpop.i32(i32 [[X:%.*]]), !range [[RNG0:![0-9]+]]
15
- ; CHECK-NEXT: [[S:%.*]] = zext i32 [[T]] to i64
15
+ ; CHECK-NEXT: [[S:%.*]] = zext nneg i32 [[T]] to i64
16
16
; CHECK-NEXT: ret i64 [[S]]
17
17
;
18
18
%t = call i32 @llvm.ctpop.i32 (i32 %x )
@@ -23,7 +23,7 @@ define i64 @test1(i32 %x) {
23
23
define i64 @test2 (i32 %x ) {
24
24
; CHECK-LABEL: @test2(
25
25
; CHECK-NEXT: [[T:%.*]] = call i32 @llvm.ctlz.i32(i32 [[X:%.*]], i1 true), !range [[RNG0]]
26
- ; CHECK-NEXT: [[S:%.*]] = zext i32 [[T]] to i64
26
+ ; CHECK-NEXT: [[S:%.*]] = zext nneg i32 [[T]] to i64
27
27
; CHECK-NEXT: ret i64 [[S]]
28
28
;
29
29
%t = call i32 @llvm.ctlz.i32 (i32 %x , i1 true )
@@ -34,7 +34,7 @@ define i64 @test2(i32 %x) {
34
34
define i64 @test3 (i32 %x ) {
35
35
; CHECK-LABEL: @test3(
36
36
; CHECK-NEXT: [[T:%.*]] = call i32 @llvm.cttz.i32(i32 [[X:%.*]], i1 true), !range [[RNG0]]
37
- ; CHECK-NEXT: [[S:%.*]] = zext i32 [[T]] to i64
37
+ ; CHECK-NEXT: [[S:%.*]] = zext nneg i32 [[T]] to i64
38
38
; CHECK-NEXT: ret i64 [[S]]
39
39
;
40
40
%t = call i32 @llvm.cttz.i32 (i32 %x , i1 true )
@@ -45,7 +45,7 @@ define i64 @test3(i32 %x) {
45
45
define i64 @test4 (i32 %x ) {
46
46
; CHECK-LABEL: @test4(
47
47
; CHECK-NEXT: [[T:%.*]] = udiv i32 [[X:%.*]], 3
48
- ; CHECK-NEXT: [[S:%.*]] = zext i32 [[T]] to i64
48
+ ; CHECK-NEXT: [[S:%.*]] = zext nneg i32 [[T]] to i64
49
49
; CHECK-NEXT: ret i64 [[S]]
50
50
;
51
51
%t = udiv i32 %x , 3
@@ -56,7 +56,7 @@ define i64 @test4(i32 %x) {
56
56
define i64 @test5 (i32 %x ) {
57
57
; CHECK-LABEL: @test5(
58
58
; CHECK-NEXT: [[T:%.*]] = urem i32 [[X:%.*]], 30000
59
- ; CHECK-NEXT: [[S:%.*]] = zext i32 [[T]] to i64
59
+ ; CHECK-NEXT: [[S:%.*]] = zext nneg i32 [[T]] to i64
60
60
; CHECK-NEXT: ret i64 [[S]]
61
61
;
62
62
%t = urem i32 %x , 30000
@@ -68,7 +68,7 @@ define i64 @test6(i32 %x) {
68
68
; CHECK-LABEL: @test6(
69
69
; CHECK-NEXT: [[U:%.*]] = lshr i32 [[X:%.*]], 3
70
70
; CHECK-NEXT: [[T:%.*]] = mul nuw nsw i32 [[U]], 3
71
- ; CHECK-NEXT: [[S:%.*]] = zext i32 [[T]] to i64
71
+ ; CHECK-NEXT: [[S:%.*]] = zext nneg i32 [[T]] to i64
72
72
; CHECK-NEXT: ret i64 [[S]]
73
73
;
74
74
%u = lshr i32 %x , 3
@@ -81,7 +81,7 @@ define i64 @test7(i32 %x) {
81
81
; CHECK-LABEL: @test7(
82
82
; CHECK-NEXT: [[T:%.*]] = and i32 [[X:%.*]], 511
83
83
; CHECK-NEXT: [[U:%.*]] = sub nuw nsw i32 20000, [[T]]
84
- ; CHECK-NEXT: [[S:%.*]] = zext i32 [[U]] to i64
84
+ ; CHECK-NEXT: [[S:%.*]] = zext nneg i32 [[U]] to i64
85
85
; CHECK-NEXT: ret i64 [[S]]
86
86
;
87
87
%t = and i32 %x , 511
@@ -296,7 +296,7 @@ define i32 @test17(i1 %x) {
296
296
define i32 @test18 (i16 %x ) {
297
297
; CHECK-LABEL: @test18(
298
298
; CHECK-NEXT: [[SEL:%.*]] = call i16 @llvm.smax.i16(i16 [[X:%.*]], i16 0)
299
- ; CHECK-NEXT: [[EXT:%.*]] = zext i16 [[SEL]] to i32
299
+ ; CHECK-NEXT: [[EXT:%.*]] = zext nneg i16 [[SEL]] to i32
300
300
; CHECK-NEXT: ret i32 [[EXT]]
301
301
;
302
302
%cmp = icmp slt i16 %x , 0
0 commit comments