@@ -39,6 +39,48 @@ define double @sqrt_f64(double %a) nounwind {
3939 ret double %1
4040}
4141
42+ define double @powi_f64 (double %a , i32 %b ) nounwind {
43+ ; RV32IFD-LABEL: powi_f64:
44+ ; RV32IFD: # %bb.0:
45+ ; RV32IFD-NEXT: addi sp, sp, -16
46+ ; RV32IFD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
47+ ; RV32IFD-NEXT: call __powidf2
48+ ; RV32IFD-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
49+ ; RV32IFD-NEXT: addi sp, sp, 16
50+ ; RV32IFD-NEXT: ret
51+ ;
52+ ; RV64IFD-LABEL: powi_f64:
53+ ; RV64IFD: # %bb.0:
54+ ; RV64IFD-NEXT: addi sp, sp, -16
55+ ; RV64IFD-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
56+ ; RV64IFD-NEXT: sext.w a0, a0
57+ ; RV64IFD-NEXT: call __powidf2
58+ ; RV64IFD-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
59+ ; RV64IFD-NEXT: addi sp, sp, 16
60+ ; RV64IFD-NEXT: ret
61+ ;
62+ ; RV32I-LABEL: powi_f64:
63+ ; RV32I: # %bb.0:
64+ ; RV32I-NEXT: addi sp, sp, -16
65+ ; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
66+ ; RV32I-NEXT: call __powidf2
67+ ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
68+ ; RV32I-NEXT: addi sp, sp, 16
69+ ; RV32I-NEXT: ret
70+ ;
71+ ; RV64I-LABEL: powi_f64:
72+ ; RV64I: # %bb.0:
73+ ; RV64I-NEXT: addi sp, sp, -16
74+ ; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
75+ ; RV64I-NEXT: sext.w a1, a1
76+ ; RV64I-NEXT: call __powidf2
77+ ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
78+ ; RV64I-NEXT: addi sp, sp, 16
79+ ; RV64I-NEXT: ret
80+ %1 = call double @llvm.powi.f64.i32 (double %a , i32 %b )
81+ ret double %1
82+ }
83+
4284declare double @llvm.sin.f64 (double )
4385
4486define double @sin_f64 (double %a ) nounwind {
@@ -1001,11 +1043,11 @@ define i1 @isnan_d_fpclass(double %x) {
10011043; RV32I-NEXT: addi a3, a2, -1
10021044; RV32I-NEXT: lui a2, 524032
10031045; RV32I-NEXT: and a1, a1, a3
1004- ; RV32I-NEXT: beq a1, a2, .LBB24_2
1046+ ; RV32I-NEXT: beq a1, a2, .LBB25_2
10051047; RV32I-NEXT: # %bb.1:
10061048; RV32I-NEXT: sltu a0, a2, a1
10071049; RV32I-NEXT: ret
1008- ; RV32I-NEXT: .LBB24_2 :
1050+ ; RV32I-NEXT: .LBB25_2 :
10091051; RV32I-NEXT: snez a0, a0
10101052; RV32I-NEXT: ret
10111053;
0 commit comments