2
2
; RUN: llc %s -mtriple=riscv64 -regalloc-csr-first-time-cost=0 | FileCheck %s -check-prefix=ZERO-COST
3
3
; RUN: llc %s -mtriple=riscv64 | FileCheck %s -check-prefix=DEFAULT-COST
4
4
5
- define fastcc void @Perl_sv_setnv (ptr %.str.54.3682 ) nounwind {
5
+ define fastcc void @Perl_sv_setnv (i8 %c , ptr %.str.54.3682 ) nounwind {
6
6
; ZERO-COST-LABEL: Perl_sv_setnv:
7
7
; ZERO-COST: # %bb.0: # %entry
8
8
; ZERO-COST-NEXT: addi sp, sp, -32
9
9
; ZERO-COST-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
10
10
; ZERO-COST-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
11
11
; ZERO-COST-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
12
- ; ZERO-COST-NEXT: bnez zero, .LBB0_5
12
+ ; ZERO-COST-NEXT: andi a0, a0, 255
13
+ ; ZERO-COST-NEXT: li a2, 2
14
+ ; ZERO-COST-NEXT: blt a2, a0, .LBB0_3
13
15
; ZERO-COST-NEXT: # %bb.1: # %entry
16
+ ; ZERO-COST-NEXT: beqz a0, .LBB0_4
17
+ ; ZERO-COST-NEXT: # %bb.2: # %entry
18
+ ; ZERO-COST-NEXT: mv s0, a1
14
19
; ZERO-COST-NEXT: li a1, 1
15
- ; ZERO-COST-NEXT: bnez a1, .LBB0_6
16
- ; ZERO-COST-NEXT: .LBB0_2: # %entry
17
- ; ZERO-COST-NEXT: mv s0, a0
18
- ; ZERO-COST-NEXT: beqz zero, .LBB0_4
19
- ; ZERO-COST-NEXT: # %bb.3: # %sw.bb34.i
20
+ ; ZERO-COST-NEXT: beq a0, a1, .LBB0_6
21
+ ; ZERO-COST-NEXT: j .LBB0_7
22
+ ; ZERO-COST-NEXT: .LBB0_3: # %entry
23
+ ; ZERO-COST-NEXT: li a2, 3
24
+ ; ZERO-COST-NEXT: bne a0, a2, .LBB0_5
25
+ ; ZERO-COST-NEXT: .LBB0_4: # %sw.bb3
26
+ ; ZERO-COST-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
27
+ ; ZERO-COST-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
28
+ ; ZERO-COST-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
29
+ ; ZERO-COST-NEXT: addi sp, sp, 32
30
+ ; ZERO-COST-NEXT: ret
31
+ ; ZERO-COST-NEXT: .LBB0_5: # %entry
32
+ ; ZERO-COST-NEXT: mv s0, a1
33
+ ; ZERO-COST-NEXT: li a1, 12
34
+ ; ZERO-COST-NEXT: bne a0, a1, .LBB0_7
35
+ ; ZERO-COST-NEXT: .LBB0_6: # %sw.bb34.i
20
36
; ZERO-COST-NEXT: li s0, 0
21
- ; ZERO-COST-NEXT: .LBB0_4 : # %Perl_sv_reftype.exit
37
+ ; ZERO-COST-NEXT: .LBB0_7 : # %Perl_sv_reftype.exit
22
38
; ZERO-COST-NEXT: li s1, 0
23
39
; ZERO-COST-NEXT: li a0, 0
24
40
; ZERO-COST-NEXT: li a1, 0
@@ -27,30 +43,37 @@ define fastcc void @Perl_sv_setnv(ptr %.str.54.3682) nounwind {
27
43
; ZERO-COST-NEXT: mv a1, s0
28
44
; ZERO-COST-NEXT: li a2, 0
29
45
; ZERO-COST-NEXT: jalr s1
30
- ; ZERO-COST-NEXT: .LBB0_5: # %entry
31
- ; ZERO-COST-NEXT: beqz zero, .LBB0_2
32
- ; ZERO-COST-NEXT: .LBB0_6: # %sw.bb3
33
- ; ZERO-COST-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
34
- ; ZERO-COST-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
35
- ; ZERO-COST-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
36
- ; ZERO-COST-NEXT: addi sp, sp, 32
37
- ; ZERO-COST-NEXT: ret
38
46
;
39
47
; DEFAULT-COST-LABEL: Perl_sv_setnv:
40
48
; DEFAULT-COST: # %bb.0: # %entry
41
49
; DEFAULT-COST-NEXT: addi sp, sp, -32
42
50
; DEFAULT-COST-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
43
51
; DEFAULT-COST-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
44
- ; DEFAULT-COST-NEXT: bnez zero, .LBB0_5
52
+ ; DEFAULT-COST-NEXT: andi a0, a0, 255
53
+ ; DEFAULT-COST-NEXT: li a2, 2
54
+ ; DEFAULT-COST-NEXT: blt a2, a0, .LBB0_3
45
55
; DEFAULT-COST-NEXT: # %bb.1: # %entry
56
+ ; DEFAULT-COST-NEXT: beqz a0, .LBB0_4
57
+ ; DEFAULT-COST-NEXT: # %bb.2: # %entry
58
+ ; DEFAULT-COST-NEXT: sd a1, 8(sp) # 8-byte Folded Spill
46
59
; DEFAULT-COST-NEXT: li a1, 1
47
- ; DEFAULT-COST-NEXT: bnez a1, .LBB0_6
48
- ; DEFAULT-COST-NEXT: .LBB0_2: # %entry
49
- ; DEFAULT-COST-NEXT: sd a0, 8(sp) # 8-byte Folded Spill
50
- ; DEFAULT-COST-NEXT: beqz zero, .LBB0_4
51
- ; DEFAULT-COST-NEXT: # %bb.3: # %sw.bb34.i
60
+ ; DEFAULT-COST-NEXT: beq a0, a1, .LBB0_6
61
+ ; DEFAULT-COST-NEXT: j .LBB0_7
62
+ ; DEFAULT-COST-NEXT: .LBB0_3: # %entry
63
+ ; DEFAULT-COST-NEXT: li a2, 3
64
+ ; DEFAULT-COST-NEXT: bne a0, a2, .LBB0_5
65
+ ; DEFAULT-COST-NEXT: .LBB0_4: # %sw.bb3
66
+ ; DEFAULT-COST-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
67
+ ; DEFAULT-COST-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
68
+ ; DEFAULT-COST-NEXT: addi sp, sp, 32
69
+ ; DEFAULT-COST-NEXT: ret
70
+ ; DEFAULT-COST-NEXT: .LBB0_5: # %entry
71
+ ; DEFAULT-COST-NEXT: sd a1, 8(sp) # 8-byte Folded Spill
72
+ ; DEFAULT-COST-NEXT: li a1, 12
73
+ ; DEFAULT-COST-NEXT: bne a0, a1, .LBB0_7
74
+ ; DEFAULT-COST-NEXT: .LBB0_6: # %sw.bb34.i
52
75
; DEFAULT-COST-NEXT: sd zero, 8(sp) # 8-byte Folded Spill
53
- ; DEFAULT-COST-NEXT: .LBB0_4 : # %Perl_sv_reftype.exit
76
+ ; DEFAULT-COST-NEXT: .LBB0_7 : # %Perl_sv_reftype.exit
54
77
; DEFAULT-COST-NEXT: li s0, 0
55
78
; DEFAULT-COST-NEXT: li a0, 0
56
79
; DEFAULT-COST-NEXT: li a1, 0
@@ -59,15 +82,8 @@ define fastcc void @Perl_sv_setnv(ptr %.str.54.3682) nounwind {
59
82
; DEFAULT-COST-NEXT: ld a1, 8(sp) # 8-byte Folded Reload
60
83
; DEFAULT-COST-NEXT: li a2, 0
61
84
; DEFAULT-COST-NEXT: jalr s0
62
- ; DEFAULT-COST-NEXT: .LBB0_5: # %entry
63
- ; DEFAULT-COST-NEXT: beqz zero, .LBB0_2
64
- ; DEFAULT-COST-NEXT: .LBB0_6: # %sw.bb3
65
- ; DEFAULT-COST-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
66
- ; DEFAULT-COST-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
67
- ; DEFAULT-COST-NEXT: addi sp, sp, 32
68
- ; DEFAULT-COST-NEXT: ret
69
85
entry:
70
- switch i8 0 , label %Perl_sv_reftype.exit [
86
+ switch i8 %c , label %Perl_sv_reftype.exit [
71
87
i8 1 , label %sw.bb4
72
88
i8 12 , label %sw.bb34.i
73
89
i8 3 , label %sw.bb3
0 commit comments