@@ -72,38 +72,34 @@ define i32 @testsize4(i32 %x) minsize nounwind {
7272define i128 @i128_sdiv (i128 %arg0 ) minsize nounwind {
7373; RV32IM-LABEL: i128_sdiv:
7474; RV32IM: # %bb.0:
75- ; RV32IM-NEXT: addi sp, sp, -64
76- ; RV32IM-NEXT: sw ra, 60(sp) # 4-byte Folded Spill
77- ; RV32IM-NEXT: sw s0, 56(sp) # 4-byte Folded Spill
78- ; RV32IM-NEXT: lw a3, 0(a1)
79- ; RV32IM-NEXT: lw a4, 4(a1)
80- ; RV32IM-NEXT: lw a5, 8(a1)
81- ; RV32IM-NEXT: lw a6, 12(a1)
82- ; RV32IM-NEXT: mv s0, a0
83- ; RV32IM-NEXT: li a7, 4
84- ; RV32IM-NEXT: addi a0, sp, 40
85- ; RV32IM-NEXT: addi a1, sp, 24
86- ; RV32IM-NEXT: addi a2, sp, 8
87- ; RV32IM-NEXT: sw a7, 8(sp)
88- ; RV32IM-NEXT: sw zero, 12(sp)
89- ; RV32IM-NEXT: sw zero, 16(sp)
90- ; RV32IM-NEXT: sw zero, 20(sp)
91- ; RV32IM-NEXT: sw a3, 24(sp)
92- ; RV32IM-NEXT: sw a4, 28(sp)
93- ; RV32IM-NEXT: sw a5, 32(sp)
94- ; RV32IM-NEXT: sw a6, 36(sp)
95- ; RV32IM-NEXT: call __divti3
96- ; RV32IM-NEXT: lw a0, 40(sp)
97- ; RV32IM-NEXT: lw a1, 44(sp)
98- ; RV32IM-NEXT: lw a2, 48(sp)
99- ; RV32IM-NEXT: lw a3, 52(sp)
100- ; RV32IM-NEXT: sw a0, 0(s0)
101- ; RV32IM-NEXT: sw a1, 4(s0)
102- ; RV32IM-NEXT: sw a2, 8(s0)
103- ; RV32IM-NEXT: sw a3, 12(s0)
104- ; RV32IM-NEXT: lw ra, 60(sp) # 4-byte Folded Reload
105- ; RV32IM-NEXT: lw s0, 56(sp) # 4-byte Folded Reload
106- ; RV32IM-NEXT: addi sp, sp, 64
75+ ; RV32IM-NEXT: lw a2, 12(a1)
76+ ; RV32IM-NEXT: lw a3, 8(a1)
77+ ; RV32IM-NEXT: lw a4, 0(a1)
78+ ; RV32IM-NEXT: lw a1, 4(a1)
79+ ; RV32IM-NEXT: srai a5, a2, 31
80+ ; RV32IM-NEXT: srli a5, a5, 30
81+ ; RV32IM-NEXT: add a5, a4, a5
82+ ; RV32IM-NEXT: sltu a4, a5, a4
83+ ; RV32IM-NEXT: srli a5, a5, 2
84+ ; RV32IM-NEXT: add a6, a1, a4
85+ ; RV32IM-NEXT: sltu a1, a6, a1
86+ ; RV32IM-NEXT: and a1, a4, a1
87+ ; RV32IM-NEXT: srli a4, a6, 2
88+ ; RV32IM-NEXT: slli a6, a6, 30
89+ ; RV32IM-NEXT: or a5, a5, a6
90+ ; RV32IM-NEXT: add a1, a3, a1
91+ ; RV32IM-NEXT: srli a6, a1, 2
92+ ; RV32IM-NEXT: sltu a3, a1, a3
93+ ; RV32IM-NEXT: slli a1, a1, 30
94+ ; RV32IM-NEXT: add a2, a2, a3
95+ ; RV32IM-NEXT: or a1, a4, a1
96+ ; RV32IM-NEXT: slli a3, a2, 30
97+ ; RV32IM-NEXT: srai a2, a2, 2
98+ ; RV32IM-NEXT: or a3, a6, a3
99+ ; RV32IM-NEXT: sw a5, 0(a0)
100+ ; RV32IM-NEXT: sw a1, 4(a0)
101+ ; RV32IM-NEXT: sw a3, 8(a0)
102+ ; RV32IM-NEXT: sw a2, 12(a0)
107103; RV32IM-NEXT: ret
108104;
109105; RV64IM-LABEL: i128_sdiv:
0 commit comments