Files
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

115 lines
4.3 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=riscv32 -mattr=+f,+d < %s | FileCheck %s
; Check the GHC call convention works (rv32)
@base = external global i32 ; assigned to register: s1
@sp = external global i32 ; assigned to register: s2
@hp = external global i32 ; assigned to register: s3
@r1 = external global i32 ; assigned to register: s4
@r2 = external global i32 ; assigned to register: s5
@r3 = external global i32 ; assigned to register: s6
@r4 = external global i32 ; assigned to register: s7
@r5 = external global i32 ; assigned to register: s8
@r6 = external global i32 ; assigned to register: s9
@r7 = external global i32 ; assigned to register: s10
@splim = external global i32 ; assigned to register: s11
@f1 = external global float ; assigned to register: fs0
@f2 = external global float ; assigned to register: fs1
@f3 = external global float ; assigned to register: fs2
@f4 = external global float ; assigned to register: fs3
@f5 = external global float ; assigned to register: fs4
@f6 = external global float ; assigned to register: fs5
@d1 = external global double ; assigned to register: fs6
@d2 = external global double ; assigned to register: fs7
@d3 = external global double ; assigned to register: fs8
@d4 = external global double ; assigned to register: fs9
@d5 = external global double ; assigned to register: fs10
@d6 = external global double ; assigned to register: fs11
define ghccc void @foo() nounwind {
; CHECK-LABEL: foo:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lui a0, %hi(d6)
; CHECK-NEXT: lui a1, %hi(d5)
; CHECK-NEXT: lui a2, %hi(d4)
; CHECK-NEXT: lui a3, %hi(d3)
; CHECK-NEXT: lui a4, %hi(d2)
; CHECK-NEXT: lui a5, %hi(d1)
; CHECK-NEXT: lui a6, %hi(f6)
; CHECK-NEXT: lui a7, %hi(f5)
; CHECK-NEXT: lui t0, %hi(f4)
; CHECK-NEXT: lui t1, %hi(f3)
; CHECK-NEXT: lui t2, %hi(f2)
; CHECK-NEXT: fld fs11, %lo(d6)(a0)
; CHECK-NEXT: lui a0, %hi(f1)
; CHECK-NEXT: fld fs10, %lo(d5)(a1)
; CHECK-NEXT: lui a1, %hi(splim)
; CHECK-NEXT: fld fs9, %lo(d4)(a2)
; CHECK-NEXT: lui a2, %hi(r7)
; CHECK-NEXT: fld fs8, %lo(d3)(a3)
; CHECK-NEXT: lui a3, %hi(r6)
; CHECK-NEXT: fld fs7, %lo(d2)(a4)
; CHECK-NEXT: lui a4, %hi(r5)
; CHECK-NEXT: fld fs6, %lo(d1)(a5)
; CHECK-NEXT: lui a5, %hi(r4)
; CHECK-NEXT: flw fs5, %lo(f6)(a6)
; CHECK-NEXT: lui a6, %hi(r3)
; CHECK-NEXT: flw fs4, %lo(f5)(a7)
; CHECK-NEXT: lui a7, %hi(r2)
; CHECK-NEXT: flw fs3, %lo(f4)(t0)
; CHECK-NEXT: lui t0, %hi(r1)
; CHECK-NEXT: flw fs2, %lo(f3)(t1)
; CHECK-NEXT: lui t1, %hi(hp)
; CHECK-NEXT: flw fs1, %lo(f2)(t2)
; CHECK-NEXT: lui t2, %hi(sp)
; CHECK-NEXT: flw fs0, %lo(f1)(a0)
; CHECK-NEXT: lui a0, %hi(base)
; CHECK-NEXT: lw s11, %lo(splim)(a1)
; CHECK-NEXT: lw s10, %lo(r7)(a2)
; CHECK-NEXT: lw s9, %lo(r6)(a3)
; CHECK-NEXT: lw s8, %lo(r5)(a4)
; CHECK-NEXT: lw s7, %lo(r4)(a5)
; CHECK-NEXT: lw s6, %lo(r3)(a6)
; CHECK-NEXT: lw s5, %lo(r2)(a7)
; CHECK-NEXT: lw s4, %lo(r1)(t0)
; CHECK-NEXT: lw s3, %lo(hp)(t1)
; CHECK-NEXT: lw s2, %lo(sp)(t2)
; CHECK-NEXT: lw s1, %lo(base)(a0)
; CHECK-NEXT: tail bar
entry:
%0 = load double, ptr @d6
%1 = load double, ptr @d5
%2 = load double, ptr @d4
%3 = load double, ptr @d3
%4 = load double, ptr @d2
%5 = load double, ptr @d1
%6 = load float, ptr @f6
%7 = load float, ptr @f5
%8 = load float, ptr @f4
%9 = load float, ptr @f3
%10 = load float, ptr @f2
%11 = load float, ptr @f1
%12 = load i32, ptr @splim
%13 = load i32, ptr @r7
%14 = load i32, ptr @r6
%15 = load i32, ptr @r5
%16 = load i32, ptr @r4
%17 = load i32, ptr @r3
%18 = load i32, ptr @r2
%19 = load i32, ptr @r1
%20 = load i32, ptr @hp
%21 = load i32, ptr @sp
%22 = load i32, ptr @base
tail call ghccc void @bar(i32 %22, i32 %21, i32 %20, i32 %19, i32 %18, i32 %17, i32 %16, i32 %15, i32 %14, i32 %13, i32 %12,
float %11, float %10, float %9, float %8, float %7, float %6,
double %5, double %4, double %3, double %2, double %1, double %0) nounwind
ret void
}
declare ghccc void @bar(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32,
float, float, float, float, float, float,
double, double, double, double, double, double)