77 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=riscv64 -mattr=+zfinx,+zdinx < %s | FileCheck %s3 4; Check the GHC call convention works for zfinx, zdinx (rv64)5 6@f1 = external global float7@f2 = external global float8@f3 = external global float9@f4 = external global float10@f5 = external global float11@f6 = external global float12 13define ghccc void @caller_float() nounwind {14; CHECK-LABEL: caller_float:15; CHECK: # %bb.0: # %entry16; CHECK-NEXT: lui a0, %hi(f6)17; CHECK-NEXT: lui a1, %hi(f5)18; CHECK-NEXT: lui a2, %hi(f4)19; CHECK-NEXT: lui a3, %hi(f3)20; CHECK-NEXT: lui a4, %hi(f2)21; CHECK-NEXT: lui a5, %hi(f1)22; CHECK-NEXT: lw s6, %lo(f6)(a0)23; CHECK-NEXT: lw s5, %lo(f5)(a1)24; CHECK-NEXT: lw s4, %lo(f4)(a2)25; CHECK-NEXT: lw s3, %lo(f3)(a3)26; CHECK-NEXT: lw s2, %lo(f2)(a4)27; CHECK-NEXT: lw s1, %lo(f1)(a5)28; CHECK-NEXT: tail callee_float29entry:30 %0 = load float, ptr @f631 %1 = load float, ptr @f532 %2 = load float, ptr @f433 %3 = load float, ptr @f334 %4 = load float, ptr @f235 %5 = load float, ptr @f136 tail call ghccc void @callee_float(float %5, float %4, float %3, float %2, float %1, float %0) nounwind37 ret void38}39 40declare ghccc void @callee_float(float, float, float, float, float, float)41 42@d1 = external global double43@d2 = external global double44@d3 = external global double45@d4 = external global double46@d5 = external global double47@d6 = external global double48 49define ghccc void @caller_double() nounwind {50; CHECK-LABEL: caller_double:51; CHECK: # %bb.0: # %entry52; CHECK-NEXT: lui a0, %hi(d6)53; CHECK-NEXT: lui a1, %hi(d5)54; CHECK-NEXT: lui a2, %hi(d4)55; CHECK-NEXT: lui a3, %hi(d3)56; CHECK-NEXT: lui a4, %hi(d2)57; CHECK-NEXT: lui a5, %hi(d1)58; CHECK-NEXT: ld s6, %lo(d6)(a0)59; CHECK-NEXT: ld s5, %lo(d5)(a1)60; CHECK-NEXT: ld s4, %lo(d4)(a2)61; CHECK-NEXT: ld s3, %lo(d3)(a3)62; CHECK-NEXT: ld s2, %lo(d2)(a4)63; CHECK-NEXT: ld s1, %lo(d1)(a5)64; CHECK-NEXT: tail callee_double65entry:66 %0 = load double, ptr @d667 %1 = load double, ptr @d568 %2 = load double, ptr @d469 %3 = load double, ptr @d370 %4 = load double, ptr @d271 %5 = load double, ptr @d172 tail call ghccc void @callee_double(double %5, double %4, double %3, double %2, double %1, double %0) nounwind73 ret void74}75 76declare ghccc void @callee_double(double, double, double, double, double, double)77