@@ -9,8 +9,7 @@ declare i32 @llvm.ctlz.i32(i32, i1)
9
9
define signext i32 @ctlz_i32 (i32 signext %a ) nounwind {
10
10
; RV64I-LABEL: ctlz_i32:
11
11
; RV64I: # %bb.0:
12
- ; RV64I-NEXT: sext.w a1, a0
13
- ; RV64I-NEXT: beqz a1, .LBB0_2
12
+ ; RV64I-NEXT: beqz a0, .LBB0_2
14
13
; RV64I-NEXT: # %bb.1: # %cond.false
15
14
; RV64I-NEXT: addi sp, sp, -16
16
15
; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
@@ -63,8 +62,7 @@ define signext i32 @ctlz_i32(i32 signext %a) nounwind {
63
62
define signext i32 @log2_i32 (i32 signext %a ) nounwind {
64
63
; RV64I-LABEL: log2_i32:
65
64
; RV64I: # %bb.0:
66
- ; RV64I-NEXT: sext.w a1, a0
67
- ; RV64I-NEXT: beqz a1, .LBB1_2
65
+ ; RV64I-NEXT: beqz a0, .LBB1_2
68
66
; RV64I-NEXT: # %bb.1: # %cond.false
69
67
; RV64I-NEXT: addi sp, sp, -16
70
68
; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
@@ -368,34 +366,34 @@ declare i32 @llvm.cttz.i32(i32, i1)
368
366
define signext i32 @cttz_i32 (i32 signext %a ) nounwind {
369
367
; RV64I-LABEL: cttz_i32:
370
368
; RV64I: # %bb.0:
369
+ ; RV64I-NEXT: beqz a0, .LBB6_4
370
+ ; RV64I-NEXT: # %bb.1: # %cond.false
371
371
; RV64I-NEXT: addi sp, sp, -16
372
372
; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
373
373
; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill
374
- ; RV64I-NEXT: sext.w s0, a0
375
- ; RV64I-NEXT: beqz s0, .LBB6_3
376
- ; RV64I-NEXT: # %bb.1: # %cond.false
377
- ; RV64I-NEXT: neg a1, a0
378
- ; RV64I-NEXT: and a0, a0, a1
374
+ ; RV64I-NEXT: mv s0, a0
375
+ ; RV64I-NEXT: neg a0, a0
376
+ ; RV64I-NEXT: and a0, s0, a0
379
377
; RV64I-NEXT: lui a1, 30667
380
378
; RV64I-NEXT: addiw a1, a1, 1329
381
379
; RV64I-NEXT: call __muldi3@plt
382
380
; RV64I-NEXT: mv a1, a0
383
381
; RV64I-NEXT: li a0, 32
384
- ; RV64I-NEXT: beqz s0, .LBB6_4
382
+ ; RV64I-NEXT: beqz s0, .LBB6_3
385
383
; RV64I-NEXT: # %bb.2: # %cond.false
386
384
; RV64I-NEXT: srliw a0, a1, 27
387
385
; RV64I-NEXT: lui a1, %hi(.LCPI6_0)
388
386
; RV64I-NEXT: addi a1, a1, %lo(.LCPI6_0)
389
387
; RV64I-NEXT: add a0, a1, a0
390
388
; RV64I-NEXT: lbu a0, 0(a0)
391
- ; RV64I-NEXT: j .LBB6_4
392
- ; RV64I-NEXT: .LBB6_3:
393
- ; RV64I-NEXT: li a0, 32
394
- ; RV64I-NEXT: .LBB6_4: # %cond.end
389
+ ; RV64I-NEXT: .LBB6_3: # %cond.false
395
390
; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
396
391
; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload
397
392
; RV64I-NEXT: addi sp, sp, 16
398
393
; RV64I-NEXT: ret
394
+ ; RV64I-NEXT: .LBB6_4:
395
+ ; RV64I-NEXT: li a0, 32
396
+ ; RV64I-NEXT: ret
399
397
;
400
398
; RV64ZBB-LABEL: cttz_i32:
401
399
; RV64ZBB: # %bb.0:
@@ -928,7 +926,7 @@ define i32 @abs_i32(i32 %x) {
928
926
define signext i32 @abs_i32_sext (i32 signext %x ) {
929
927
; RV64I-LABEL: abs_i32_sext:
930
928
; RV64I: # %bb.0:
931
- ; RV64I-NEXT: sraiw a1, a0, 31
929
+ ; RV64I-NEXT: srai a1, a0, 31
932
930
; RV64I-NEXT: xor a0, a0, a1
933
931
; RV64I-NEXT: subw a0, a0, a1
934
932
; RV64I-NEXT: ret
0 commit comments