diff options
Diffstat (limited to 'test/CodeGen/RISCV/calling-conv.ll')
-rw-r--r-- | test/CodeGen/RISCV/calling-conv.ll | 114 |
1 files changed, 57 insertions, 57 deletions
diff --git a/test/CodeGen/RISCV/calling-conv.ll b/test/CodeGen/RISCV/calling-conv.ll index 3a55752d2cb..7e1736576bd 100644 --- a/test/CodeGen/RISCV/calling-conv.ll +++ b/test/CodeGen/RISCV/calling-conv.ll @@ -19,15 +19,15 @@ define i32 @callee_scalars(i32 %a, i64 %b, i32 %c, i32 %d, double %e) nounwind { ; RV32I-NEXT: sw s3, 12(sp) ; RV32I-NEXT: sw s4, 8(sp) ; RV32I-NEXT: addi s0, sp, 32 -; RV32I-NEXT: addi s1, a4, 0 -; RV32I-NEXT: addi s2, a3, 0 -; RV32I-NEXT: addi s3, a1, 0 -; RV32I-NEXT: addi s4, a0, 0 +; RV32I-NEXT: mv s1, a4 +; RV32I-NEXT: mv s2, a3 +; RV32I-NEXT: mv s3, a1 +; RV32I-NEXT: mv s4, a0 ; RV32I-NEXT: lui a0, %hi(__fixdfsi) ; RV32I-NEXT: addi a2, a0, %lo(__fixdfsi) -; RV32I-NEXT: addi a0, a5, 0 -; RV32I-NEXT: addi a1, a6, 0 -; RV32I-NEXT: jalr ra, a2, 0 +; RV32I-NEXT: mv a0, a5 +; RV32I-NEXT: mv a1, a6 +; RV32I-NEXT: jalr a2 ; RV32I-NEXT: add a1, s4, s3 ; RV32I-NEXT: add a1, a1, s2 ; RV32I-NEXT: add a1, a1, s1 @@ -39,7 +39,7 @@ define i32 @callee_scalars(i32 %a, i64 %b, i32 %c, i32 %d, double %e) nounwind { ; RV32I-NEXT: lw s0, 24(sp) ; RV32I-NEXT: lw ra, 28(sp) ; RV32I-NEXT: addi sp, sp, 32 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %b_trunc = trunc i64 %b to i32 %e_fptosi = fptosi double %e to i32 %1 = add i32 %a, %b_trunc @@ -57,20 +57,20 @@ define i32 @caller_scalars() nounwind { ; RV32I-NEXT: sw s0, 8(sp) ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: lui a0, 262464 -; RV32I-NEXT: addi a6, a0, 0 +; RV32I-NEXT: mv a6, a0 ; RV32I-NEXT: lui a0, %hi(callee_scalars) ; RV32I-NEXT: addi a7, a0, %lo(callee_scalars) ; RV32I-NEXT: addi a0, zero, 1 ; RV32I-NEXT: addi a1, zero, 2 ; RV32I-NEXT: addi a3, zero, 3 ; RV32I-NEXT: addi a4, zero, 4 -; RV32I-NEXT: addi a2, zero, 0 -; RV32I-NEXT: addi a5, zero, 0 -; RV32I-NEXT: jalr ra, a7, 0 +; RV32I-NEXT: mv a2, zero +; RV32I-NEXT: mv a5, zero +; RV32I-NEXT: jalr a7 ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = call i32 @callee_scalars(i32 1, i64 2, i32 3, i32 4, double 5.000000e+00) ret i32 %1 } @@ -100,11 +100,11 @@ define i32 @callee_large_scalars(i128 %a, fp128 %b) nounwind { ; RV32I-NEXT: or a0, a0, a3 ; RV32I-NEXT: or a0, a0, a2 ; RV32I-NEXT: xor a0, a0, zero -; RV32I-NEXT: sltiu a0, a0, 1 +; RV32I-NEXT: seqz a0, a0 ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %b_bitcast = bitcast fp128 %b to i128 %1 = icmp eq i128 %a, %b_bitcast %2 = zext i1 %1 to i32 @@ -127,17 +127,17 @@ define i32 @caller_large_scalars() nounwind { ; RV32I-NEXT: addi a0, zero, 1 ; RV32I-NEXT: sw a0, -24(s0) ; RV32I-NEXT: lui a0, 524272 -; RV32I-NEXT: addi a0, a0, 0 +; RV32I-NEXT: mv a0, a0 ; RV32I-NEXT: sw a0, -36(s0) ; RV32I-NEXT: lui a0, %hi(callee_large_scalars) ; RV32I-NEXT: addi a2, a0, %lo(callee_large_scalars) ; RV32I-NEXT: addi a0, s0, -24 ; RV32I-NEXT: addi a1, s0, -48 -; RV32I-NEXT: jalr ra, a2, 0 +; RV32I-NEXT: jalr a2 ; RV32I-NEXT: lw s0, 40(sp) ; RV32I-NEXT: lw ra, 44(sp) ; RV32I-NEXT: addi sp, sp, 48 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = call i32 @callee_large_scalars(i128 1, fp128 0xL00000000000000007FFF000000000000) ret i32 %1 } @@ -169,11 +169,11 @@ define i32 @callee_large_scalars_exhausted_regs(i32 %a, i32 %b, i32 %c, i32 %d, ; RV32I-NEXT: or a0, a0, a2 ; RV32I-NEXT: or a0, a0, a1 ; RV32I-NEXT: xor a0, a0, zero -; RV32I-NEXT: sltiu a0, a0, 1 +; RV32I-NEXT: seqz a0, a0 ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %j_bitcast = bitcast fp128 %j to i128 %1 = icmp eq i128 %h, %j_bitcast %2 = zext i1 %1 to i32 @@ -200,7 +200,7 @@ define i32 @caller_large_scalars_exhausted_regs() nounwind { ; RV32I-NEXT: addi a0, zero, 8 ; RV32I-NEXT: sw a0, -24(s0) ; RV32I-NEXT: lui a0, 524272 -; RV32I-NEXT: addi a0, a0, 0 +; RV32I-NEXT: mv a0, a0 ; RV32I-NEXT: sw a0, -36(s0) ; RV32I-NEXT: lui a0, %hi(callee_large_scalars_exhausted_regs) ; RV32I-NEXT: addi t0, a0, %lo(callee_large_scalars_exhausted_regs) @@ -212,11 +212,11 @@ define i32 @caller_large_scalars_exhausted_regs() nounwind { ; RV32I-NEXT: addi a5, zero, 6 ; RV32I-NEXT: addi a6, zero, 7 ; RV32I-NEXT: addi a7, s0, -24 -; RV32I-NEXT: jalr ra, t0, 0 +; RV32I-NEXT: jalr t0 ; RV32I-NEXT: lw s0, 56(sp) ; RV32I-NEXT: lw ra, 60(sp) ; RV32I-NEXT: addi sp, sp, 64 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = call i32 @callee_large_scalars_exhausted_regs( i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i128 8, i32 9, fp128 0xL00000000000000007FFF000000000000) @@ -232,17 +232,17 @@ define i32 @caller_mixed_scalar_libcalls(i64 %a) nounwind { ; RV32I-NEXT: sw ra, 28(sp) ; RV32I-NEXT: sw s0, 24(sp) ; RV32I-NEXT: addi s0, sp, 32 -; RV32I-NEXT: addi a2, a1, 0 -; RV32I-NEXT: addi a1, a0, 0 +; RV32I-NEXT: mv a2, a1 +; RV32I-NEXT: mv a1, a0 ; RV32I-NEXT: lui a0, %hi(__floatditf) ; RV32I-NEXT: addi a3, a0, %lo(__floatditf) ; RV32I-NEXT: addi a0, s0, -24 -; RV32I-NEXT: jalr ra, a3, 0 +; RV32I-NEXT: jalr a3 ; RV32I-NEXT: lw a0, -24(s0) ; RV32I-NEXT: lw s0, 24(sp) ; RV32I-NEXT: lw ra, 28(sp) ; RV32I-NEXT: addi sp, sp, 32 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = sitofp i64 %a to fp128 %2 = bitcast fp128 %1 to i128 %3 = trunc i128 %2 to i32 @@ -269,7 +269,7 @@ define i32 @callee_many_scalars(i8 %a, i16 %b, i32 %c, i64 %d, i32 %e, i32 %f, i ; RV32I-NEXT: andi a0, a0, 255 ; RV32I-NEXT: add a0, a0, a1 ; RV32I-NEXT: add a0, a0, a2 -; RV32I-NEXT: sltiu a1, a3, 1 +; RV32I-NEXT: seqz a1, a3 ; RV32I-NEXT: add a0, a1, a0 ; RV32I-NEXT: add a0, a0, a5 ; RV32I-NEXT: add a0, a0, a6 @@ -278,7 +278,7 @@ define i32 @callee_many_scalars(i8 %a, i16 %b, i32 %c, i64 %d, i32 %e, i32 %f, i ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %a_ext = zext i8 %a to i32 %b_ext = zext i16 %b to i32 %1 = add i32 %a_ext, %b_ext @@ -311,12 +311,12 @@ define i32 @caller_many_scalars() nounwind { ; RV32I-NEXT: addi a5, zero, 5 ; RV32I-NEXT: addi a6, zero, 6 ; RV32I-NEXT: addi a7, zero, 7 -; RV32I-NEXT: addi a4, zero, 0 -; RV32I-NEXT: jalr ra, t0, 0 +; RV32I-NEXT: mv a4, zero +; RV32I-NEXT: jalr t0 ; RV32I-NEXT: lw s0, 24(sp) ; RV32I-NEXT: lw ra, 28(sp) ; RV32I-NEXT: addi sp, sp, 32 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = call i32 @callee_many_scalars(i8 1, i16 2, i32 3, i64 4, i32 5, i32 6, i64 7, i32 8) ret i32 %1 } @@ -333,11 +333,11 @@ define i32 @callee_small_coerced_struct([2 x i32] %a.coerce) nounwind { ; RV32I-NEXT: sw s0, 8(sp) ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: xor a0, a0, a1 -; RV32I-NEXT: sltiu a0, a0, 1 +; RV32I-NEXT: seqz a0, a0 ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = extractvalue [2 x i32] %a.coerce, 0 %2 = extractvalue [2 x i32] %a.coerce, 1 %3 = icmp eq i32 %1, %2 @@ -356,11 +356,11 @@ define i32 @caller_small_coerced_struct() nounwind { ; RV32I-NEXT: addi a2, a0, %lo(callee_small_coerced_struct) ; RV32I-NEXT: addi a0, zero, 1 ; RV32I-NEXT: addi a1, zero, 2 -; RV32I-NEXT: jalr ra, a2, 0 +; RV32I-NEXT: jalr a2 ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = call i32 @callee_small_coerced_struct([2 x i32] [i32 1, i32 2]) ret i32 %1 } @@ -382,7 +382,7 @@ define i32 @callee_large_struct(%struct.large* byval align 4 %a) nounwind { ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = getelementptr inbounds %struct.large, %struct.large* %a, i32 0, i32 0 %2 = getelementptr inbounds %struct.large, %struct.large* %a, i32 0, i32 3 %3 = load i32, i32* %1 @@ -413,11 +413,11 @@ define i32 @caller_large_struct() nounwind { ; RV32I-NEXT: lui a0, %hi(callee_large_struct) ; RV32I-NEXT: addi a1, a0, %lo(callee_large_struct) ; RV32I-NEXT: addi a0, s0, -40 -; RV32I-NEXT: jalr ra, a1, 0 +; RV32I-NEXT: jalr a1 ; RV32I-NEXT: lw s0, 40(sp) ; RV32I-NEXT: lw ra, 44(sp) ; RV32I-NEXT: addi sp, sp, 48 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %ls = alloca %struct.large, align 4 %1 = bitcast %struct.large* %ls to i8* %a = getelementptr inbounds %struct.large, %struct.large* %ls, i32 0, i32 0 @@ -456,7 +456,7 @@ define i32 @callee_aligned_stack(i32 %a, i32 %b, fp128 %c, i32 %d, i32 %e, i64 % ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = bitcast fp128 %c to i128 %2 = trunc i128 %1 to i32 %3 = add i32 %2, %g @@ -516,11 +516,11 @@ define void @caller_aligned_stack() nounwind { ; RV32I-NEXT: addi a4, zero, 13 ; RV32I-NEXT: addi a6, zero, 4 ; RV32I-NEXT: addi a7, zero, 14 -; RV32I-NEXT: jalr ra, t0, 0 +; RV32I-NEXT: jalr t0 ; RV32I-NEXT: lw s0, 56(sp) ; RV32I-NEXT: lw ra, 60(sp) ; RV32I-NEXT: addi sp, sp, 64 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = call i32 @callee_aligned_stack(i32 1, i32 11, fp128 0xLEB851EB851EB851F400091EB851EB851, i32 12, i32 13, i64 20000000000, i32 14, i32 15, double 2.720000e+00, i32 16, @@ -543,7 +543,7 @@ define i64 @callee_small_scalar_ret() nounwind { ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret ret i64 1234567898765 } @@ -556,7 +556,7 @@ define i32 @caller_small_scalar_ret() nounwind { ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: lui a0, %hi(callee_small_scalar_ret) ; RV32I-NEXT: addi a0, a0, %lo(callee_small_scalar_ret) -; RV32I-NEXT: jalr ra, a0, 0 +; RV32I-NEXT: jalr a0 ; RV32I-NEXT: lui a2, 56 ; RV32I-NEXT: addi a2, a2, 580 ; RV32I-NEXT: xor a1, a1, a2 @@ -565,11 +565,11 @@ define i32 @caller_small_scalar_ret() nounwind { ; RV32I-NEXT: xor a0, a0, a2 ; RV32I-NEXT: or a0, a0, a1 ; RV32I-NEXT: xor a0, a0, zero -; RV32I-NEXT: sltiu a0, a0, 1 +; RV32I-NEXT: seqz a0, a0 ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = call i64 @callee_small_scalar_ret() %2 = icmp eq i64 987654321234567, %1 %3 = zext i1 %2 to i32 @@ -586,11 +586,11 @@ define %struct.small @callee_small_struct_ret() nounwind { ; RV32I-NEXT: sw s0, 8(sp) ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: addi a0, zero, 1 -; RV32I-NEXT: addi a1, zero, 0 +; RV32I-NEXT: mv a1, zero ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret ret %struct.small { i32 1, i32* null } } @@ -603,12 +603,12 @@ define i32 @caller_small_struct_ret() nounwind { ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: lui a0, %hi(callee_small_struct_ret) ; RV32I-NEXT: addi a0, a0, %lo(callee_small_struct_ret) -; RV32I-NEXT: jalr ra, a0, 0 +; RV32I-NEXT: jalr a0 ; RV32I-NEXT: add a0, a0, a1 ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = call %struct.small @callee_small_struct_ret() %2 = extractvalue %struct.small %1, 0 %3 = extractvalue %struct.small %1, 1 @@ -627,7 +627,7 @@ define fp128 @callee_large_scalar_ret() nounwind { ; RV32I-NEXT: sw s0, 8(sp) ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: lui a1, 524272 -; RV32I-NEXT: addi a1, a1, 0 +; RV32I-NEXT: mv a1, a1 ; RV32I-NEXT: sw a1, 12(a0) ; RV32I-NEXT: sw zero, 8(a0) ; RV32I-NEXT: sw zero, 4(a0) @@ -635,7 +635,7 @@ define fp128 @callee_large_scalar_ret() nounwind { ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret ret fp128 0xL00000000000000007FFF000000000000 } @@ -649,11 +649,11 @@ define void @caller_large_scalar_ret() nounwind { ; RV32I-NEXT: lui a0, %hi(callee_large_scalar_ret) ; RV32I-NEXT: addi a1, a0, %lo(callee_large_scalar_ret) ; RV32I-NEXT: addi a0, s0, -32 -; RV32I-NEXT: jalr ra, a1, 0 +; RV32I-NEXT: jalr a1 ; RV32I-NEXT: lw s0, 24(sp) ; RV32I-NEXT: lw ra, 28(sp) ; RV32I-NEXT: addi sp, sp, 32 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = call fp128 @callee_large_scalar_ret() ret void } @@ -678,7 +678,7 @@ define void @callee_large_struct_ret(%struct.large* noalias sret %agg.result) no ; RV32I-NEXT: lw s0, 8(sp) ; RV32I-NEXT: lw ra, 12(sp) ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %a = getelementptr inbounds %struct.large, %struct.large* %agg.result, i32 0, i32 0 store i32 1, i32* %a, align 4 %b = getelementptr inbounds %struct.large, %struct.large* %agg.result, i32 0, i32 1 @@ -700,14 +700,14 @@ define i32 @caller_large_struct_ret() nounwind { ; RV32I-NEXT: lui a0, %hi(callee_large_struct_ret) ; RV32I-NEXT: addi a1, a0, %lo(callee_large_struct_ret) ; RV32I-NEXT: addi a0, s0, -24 -; RV32I-NEXT: jalr ra, a1, 0 +; RV32I-NEXT: jalr a1 ; RV32I-NEXT: lw a0, -12(s0) ; RV32I-NEXT: lw a1, -24(s0) ; RV32I-NEXT: add a0, a1, a0 ; RV32I-NEXT: lw s0, 24(sp) ; RV32I-NEXT: lw ra, 28(sp) ; RV32I-NEXT: addi sp, sp, 32 -; RV32I-NEXT: jalr zero, ra, 0 +; RV32I-NEXT: ret %1 = alloca %struct.large call void @callee_large_struct_ret(%struct.large* sret %1) %2 = getelementptr inbounds %struct.large, %struct.large* %1, i32 0, i32 0 |