@@ -598,33 +598,31 @@ define double @fnmadd_d(double %a, double %b, double %c) nounwind {
598
598
;
599
599
; RV64I-LABEL: fnmadd_d:
600
600
; RV64I: # %bb.0:
601
- ; RV64I-NEXT: addi sp, sp, -48
602
- ; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill
603
- ; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill
604
- ; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill
605
- ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill
606
- ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill
601
+ ; RV64I-NEXT: addi sp, sp, -32
602
+ ; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
603
+ ; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
604
+ ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
605
+ ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill
607
606
; RV64I-NEXT: mv s0, a1
608
607
; RV64I-NEXT: mv s1, a2
609
608
; RV64I-NEXT: li a1, 0
610
609
; RV64I-NEXT: call __adddf3
611
- ; RV64I-NEXT: mv s3 , a0
610
+ ; RV64I-NEXT: mv s2 , a0
612
611
; RV64I-NEXT: mv a0, s1
613
612
; RV64I-NEXT: li a1, 0
614
613
; RV64I-NEXT: call __adddf3
615
614
; RV64I-NEXT: li a1, -1
616
615
; RV64I-NEXT: slli a2, a1, 63
617
- ; RV64I-NEXT: xor a1, s3 , a2
616
+ ; RV64I-NEXT: xor a1, s2 , a2
618
617
; RV64I-NEXT: xor a2, a0, a2
619
618
; RV64I-NEXT: mv a0, a1
620
619
; RV64I-NEXT: mv a1, s0
621
620
; RV64I-NEXT: call fma
622
- ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
623
- ; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload
624
- ; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload
625
- ; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload
626
- ; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload
627
- ; RV64I-NEXT: addi sp, sp, 48
621
+ ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
622
+ ; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
623
+ ; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
624
+ ; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload
625
+ ; RV64I-NEXT: addi sp, sp, 32
628
626
; RV64I-NEXT: ret
629
627
%a_ = fadd double 0 .0 , %a
630
628
%c_ = fadd double 0 .0 , %c
@@ -705,33 +703,31 @@ define double @fnmadd_d_2(double %a, double %b, double %c) nounwind {
705
703
;
706
704
; RV64I-LABEL: fnmadd_d_2:
707
705
; RV64I: # %bb.0:
708
- ; RV64I-NEXT: addi sp, sp, -48
709
- ; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill
710
- ; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill
711
- ; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill
712
- ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill
713
- ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill
706
+ ; RV64I-NEXT: addi sp, sp, -32
707
+ ; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
708
+ ; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
709
+ ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
710
+ ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill
714
711
; RV64I-NEXT: mv s0, a0
715
712
; RV64I-NEXT: mv a0, a1
716
713
; RV64I-NEXT: mv s1, a2
717
714
; RV64I-NEXT: li a1, 0
718
715
; RV64I-NEXT: call __adddf3
719
- ; RV64I-NEXT: mv s3 , a0
716
+ ; RV64I-NEXT: mv s2 , a0
720
717
; RV64I-NEXT: mv a0, s1
721
718
; RV64I-NEXT: li a1, 0
722
719
; RV64I-NEXT: call __adddf3
723
720
; RV64I-NEXT: li a1, -1
724
721
; RV64I-NEXT: slli a2, a1, 63
725
- ; RV64I-NEXT: xor a1, s3 , a2
722
+ ; RV64I-NEXT: xor a1, s2 , a2
726
723
; RV64I-NEXT: xor a2, a0, a2
727
724
; RV64I-NEXT: mv a0, s0
728
725
; RV64I-NEXT: call fma
729
- ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
730
- ; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload
731
- ; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload
732
- ; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload
733
- ; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload
734
- ; RV64I-NEXT: addi sp, sp, 48
726
+ ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
727
+ ; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
728
+ ; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
729
+ ; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload
730
+ ; RV64I-NEXT: addi sp, sp, 32
735
731
; RV64I-NEXT: ret
736
732
%b_ = fadd double 0 .0 , %b
737
733
%c_ = fadd double 0 .0 , %c
@@ -1178,17 +1174,16 @@ define double @fnmadd_d_contract(double %a, double %b, double %c) nounwind {
1178
1174
;
1179
1175
; RV64I-LABEL: fnmadd_d_contract:
1180
1176
; RV64I: # %bb.0:
1181
- ; RV64I-NEXT: addi sp, sp, -48
1182
- ; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill
1183
- ; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill
1184
- ; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill
1185
- ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill
1186
- ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill
1177
+ ; RV64I-NEXT: addi sp, sp, -32
1178
+ ; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
1179
+ ; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
1180
+ ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
1181
+ ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill
1187
1182
; RV64I-NEXT: mv s0, a1
1188
1183
; RV64I-NEXT: mv s1, a2
1189
1184
; RV64I-NEXT: li a1, 0
1190
1185
; RV64I-NEXT: call __adddf3
1191
- ; RV64I-NEXT: mv s3 , a0
1186
+ ; RV64I-NEXT: mv s2 , a0
1192
1187
; RV64I-NEXT: mv a0, s0
1193
1188
; RV64I-NEXT: li a1, 0
1194
1189
; RV64I-NEXT: call __adddf3
@@ -1197,20 +1192,19 @@ define double @fnmadd_d_contract(double %a, double %b, double %c) nounwind {
1197
1192
; RV64I-NEXT: li a1, 0
1198
1193
; RV64I-NEXT: call __adddf3
1199
1194
; RV64I-NEXT: mv s1, a0
1200
- ; RV64I-NEXT: mv a0, s3
1195
+ ; RV64I-NEXT: mv a0, s2
1201
1196
; RV64I-NEXT: mv a1, s0
1202
1197
; RV64I-NEXT: call __muldf3
1203
1198
; RV64I-NEXT: li a1, -1
1204
1199
; RV64I-NEXT: slli a1, a1, 63
1205
1200
; RV64I-NEXT: xor a0, a0, a1
1206
1201
; RV64I-NEXT: mv a1, s1
1207
1202
; RV64I-NEXT: call __subdf3
1208
- ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
1209
- ; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload
1210
- ; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload
1211
- ; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload
1212
- ; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload
1213
- ; RV64I-NEXT: addi sp, sp, 48
1203
+ ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
1204
+ ; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
1205
+ ; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
1206
+ ; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload
1207
+ ; RV64I-NEXT: addi sp, sp, 32
1214
1208
; RV64I-NEXT: ret
1215
1209
%a_ = fadd double 0 .0 , %a ; avoid negation using xor
1216
1210
%b_ = fadd double 0 .0 , %b ; avoid negation using xor
@@ -1292,32 +1286,30 @@ define double @fnmsub_d_contract(double %a, double %b, double %c) nounwind {
1292
1286
;
1293
1287
; RV64I-LABEL: fnmsub_d_contract:
1294
1288
; RV64I: # %bb.0:
1295
- ; RV64I-NEXT: addi sp, sp, -48
1296
- ; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill
1297
- ; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill
1298
- ; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill
1299
- ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill
1300
- ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill
1289
+ ; RV64I-NEXT: addi sp, sp, -32
1290
+ ; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill
1291
+ ; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill
1292
+ ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill
1293
+ ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill
1301
1294
; RV64I-NEXT: mv s0, a1
1302
1295
; RV64I-NEXT: mv s1, a2
1303
1296
; RV64I-NEXT: li a1, 0
1304
1297
; RV64I-NEXT: call __adddf3
1305
- ; RV64I-NEXT: mv s3 , a0
1298
+ ; RV64I-NEXT: mv s2 , a0
1306
1299
; RV64I-NEXT: mv a0, s0
1307
1300
; RV64I-NEXT: li a1, 0
1308
1301
; RV64I-NEXT: call __adddf3
1309
1302
; RV64I-NEXT: mv a1, a0
1310
- ; RV64I-NEXT: mv a0, s3
1303
+ ; RV64I-NEXT: mv a0, s2
1311
1304
; RV64I-NEXT: call __muldf3
1312
1305
; RV64I-NEXT: mv a1, a0
1313
1306
; RV64I-NEXT: mv a0, s1
1314
1307
; RV64I-NEXT: call __subdf3
1315
- ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload
1316
- ; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload
1317
- ; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload
1318
- ; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload
1319
- ; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload
1320
- ; RV64I-NEXT: addi sp, sp, 48
1308
+ ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload
1309
+ ; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload
1310
+ ; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload
1311
+ ; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload
1312
+ ; RV64I-NEXT: addi sp, sp, 32
1321
1313
; RV64I-NEXT: ret
1322
1314
%a_ = fadd double 0 .0 , %a ; avoid negation using xor
1323
1315
%b_ = fadd double 0 .0 , %b ; avoid negation using xor
0 commit comments