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
79 lines
2.7 KiB
TableGen
79 lines
2.7 KiB
TableGen
// RUN: llvm-tblgen -gen-callingconv -I %p/../../include -I %p/Common %s | FileCheck %s
|
|
// RUN: not llvm-tblgen -gen-callingconv -DERROR1 -I %p/../../include -I %p/Common %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR1 %s
|
|
// RUN: not llvm-tblgen -gen-callingconv -DERROR2 -I %p/../../include -I %p/Common %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR2 %s
|
|
|
|
include "reg-with-subregs-common.td"
|
|
|
|
def CC_ABI1 : CallingConv<[
|
|
// Use singleton definitions directly.
|
|
CCIfType<[i32, f32],
|
|
CCAssignToReg<[R8, R9, R10, R11, R12, R13, R14, R15]>>,
|
|
|
|
// Use tuple definitions indirectly as strings.
|
|
CCIfType<[i64, f64],
|
|
CCAssignToRegTuple<["R8_R9", "R10_R11", "R12_R13", "R14_R15"]>>,
|
|
|
|
CCIfType<[i128],
|
|
CCAssignToRegTuple<["R8_R9_R10_R11", "R12_R13_R14_R15"]>>,
|
|
|
|
CCIfType<[v8i32],
|
|
CCAssignToRegTuple<["R8_R9_R10_R11_R12_R13_R14_R15"]>>,
|
|
]>;
|
|
|
|
// CHECK: if (LocVT == MVT::i32 ||
|
|
// CHECK: LocVT == MVT::f32) {
|
|
// CHECK: static const MCPhysReg RegList1[] = {
|
|
// CHECK: R8, R9, R10, R11, R12, R13, R14, R15
|
|
// CHECK: };
|
|
// CHECK: if (MCRegister Reg = State.AllocateReg(RegList1)) {
|
|
// CHECK: State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
|
|
// CHECK: return false;
|
|
// CHECK: }
|
|
// CHECK: }
|
|
|
|
// CHECK: if (LocVT == MVT::i64 ||
|
|
// CHECK: LocVT == MVT::f64) {
|
|
// CHECK: static const MCPhysReg RegList2[] = {
|
|
// CHECK: R8_R9, R10_R11, R12_R13, R14_R15
|
|
// CHECK: };
|
|
// CHECK: if (MCRegister Reg = State.AllocateReg(RegList2)) {
|
|
// CHECK: State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
|
|
// CHECK: return false;
|
|
// CHECK: }
|
|
// CHECK: }
|
|
|
|
// CHECK: if (LocVT == MVT::i128) {
|
|
// CHECK: static const MCPhysReg RegList3[] = {
|
|
// CHECK: R8_R9_R10_R11, R12_R13_R14_R15
|
|
// CHECK: };
|
|
// CHECK: if (MCRegister Reg = State.AllocateReg(RegList3)) {
|
|
// CHECK: State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
|
|
// CHECK: return false;
|
|
// CHECK: }
|
|
// CHECK: }
|
|
|
|
// CHECK: if (LocVT == MVT::v8i32) {
|
|
// CHECK: if (MCRegister Reg = State.AllocateReg(R8_R9_R10_R11_R12_R13_R14_R15)) {
|
|
// CHECK: State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
|
|
// CHECK: return false;
|
|
// CHECK: }
|
|
// CHECK: }
|
|
|
|
#ifdef ERROR1
|
|
def CC_ABI2 : CallingConv<[
|
|
// Test that referencing an undefined tuple is diagnosed as an error.
|
|
// CHECK-ERROR1: error: register not defined: "R89_R33"
|
|
CCIfType<[i64, f64],
|
|
CCAssignToRegTuple<["R89_R33", "R12_R13", "R14_R15"]>>,
|
|
]>;
|
|
#endif
|
|
|
|
#ifdef ERROR2
|
|
def CC_ABI3 : CallingConv<[
|
|
// Currently an error: Use tuple definitions directly.
|
|
// CHECK-ERROR2: error: Variable not defined: 'R8_R9_R10_R11'
|
|
CCIfType<[i128],
|
|
CCAssignToRegTuple<[R8_R9_R10_R11, R12_R13_R14_R15]>>,
|
|
]>;
|
|
#endif
|