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
71 lines
3.0 KiB
TableGen
71 lines
3.0 KiB
TableGen
// RUN: llvm-tblgen -gen-asm-writer -I %S -I %p/../../include %s -o - | FileCheck %s
|
|
|
|
include "Common/RegClassByHwModeCommon.td"
|
|
|
|
def IsPtrY : Predicate<"Subtarget->isPtrY()">;
|
|
defvar PtrX = DefaultMode;
|
|
def PtrY : HwMode<[IsPtrY]>;
|
|
|
|
// Define more restrictive subset classes to check that those are handled.
|
|
def EvenXRegs : RegisterClass<"MyTarget", [i64], 64, (add X0, X2, X4, X6)>;
|
|
def EvenYRegs : RegisterClass<"MyTarget", [i64], 64, (add Y0, Y2, Y4, Y6)>;
|
|
def PtrRC : RegClassByHwMode<[PtrX, PtrY], [XRegs, YRegs]>;
|
|
def EvenPtrRC : RegClassByHwMode<[PtrX, PtrY], [EvenXRegs, EvenYRegs]>;
|
|
def NullReg : RegisterByHwMode<PtrRC, [PtrX, PtrY], [X0, Y0]>;
|
|
|
|
def TEST_XREG : TestInstruction {
|
|
let OutOperandList = (outs XRegs:$dst);
|
|
let InOperandList = (ins XRegs:$src);
|
|
let AsmString = "t_x $dst, $src";
|
|
let opcode = 0;
|
|
}
|
|
def TEST_PTR : TestInstruction {
|
|
let OutOperandList = (outs PtrRC:$dst);
|
|
let InOperandList = (ins PtrRC:$src);
|
|
let AsmString = "t_ptr $dst, $src";
|
|
let opcode = 0;
|
|
}
|
|
|
|
def MY_T_X : InstAlias<"t_x $src", (TEST_XREG X0, XRegs:$src)>;
|
|
def MY_T_X_EVEN : InstAlias<"t_x.even $src", (TEST_XREG EvenXRegs:$dst, EvenXRegs:$src)>;
|
|
|
|
def MY_T_PTR : InstAlias<"t_ptr $src", (TEST_PTR NullReg, PtrRC:$src)>;
|
|
def MY_T_PTR_EVEN : InstAlias<"t_ptr.even $src", (TEST_PTR EvenPtrRC:$dst, EvenPtrRC:$src)>;
|
|
|
|
// CHECK-LABEL: static const AliasPatternCond Conds[] = {
|
|
// CHECK-NEXT: // (TEST_PTR NullReg, PtrRC:$src) - 0
|
|
// CHECK-NEXT: {AliasPatternCond::K_Custom, 1/*NullReg*/},
|
|
// CHECK-NEXT: {AliasPatternCond::K_RegClassByHwMode, MyTarget::PtrRC},
|
|
// CHECK-NEXT: // (TEST_PTR EvenPtrRC:$dst, EvenPtrRC:$src) - 2
|
|
// CHECK-NEXT: {AliasPatternCond::K_RegClassByHwMode, MyTarget::EvenPtrRC},
|
|
// CHECK-NEXT: {AliasPatternCond::K_RegClassByHwMode, MyTarget::EvenPtrRC},
|
|
// CHECK-NEXT: // (TEST_XREG X0, XRegs:$src) - 4
|
|
// CHECK-NEXT: {AliasPatternCond::K_Reg, MyTarget::X0},
|
|
// CHECK-NEXT: {AliasPatternCond::K_RegClass, MyTarget::XRegsRegClassID},
|
|
// CHECK-NEXT: // (TEST_XREG EvenXRegs:$dst, EvenXRegs:$src) - 6
|
|
// CHECK-NEXT: {AliasPatternCond::K_RegClass, MyTarget::EvenXRegsRegClassID},
|
|
// CHECK-NEXT: {AliasPatternCond::K_RegClass, MyTarget::EvenXRegsRegClassID},
|
|
// CHECK-NEXT: };
|
|
|
|
// CHECK-LABEL: static bool MyTargetInstPrinterValidateMCOperand(const MCOperand &MCOp,
|
|
// CHECK-NEXT: const MCSubtargetInfo &STI,
|
|
// CHECK-NEXT: unsigned PredicateIndex) {
|
|
// CHECK-NEXT: switch (PredicateIndex) {
|
|
// CHECK-NEXT: default:
|
|
// CHECK-NEXT: llvm_unreachable("Unknown MCOperandPredicate kind");
|
|
// CHECK-NEXT: break;
|
|
// CHECK-NEXT: case 1: {
|
|
// CHECK-NEXT: return MCOp.isReg() && MCOp.getReg() == MyTarget::RegisterByHwMode::getNullReg(STI.getHwMode(MCSubtargetInfo::HwMode_RegInfo));
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: }
|
|
|
|
def MyTargetISA : InstrInfo;
|
|
def MyTargetAsmWriter : AsmWriter {
|
|
int PassSubtarget = 1;
|
|
}
|
|
def MyTarget : Target {
|
|
let InstructionSet = MyTargetISA;
|
|
let AssemblyWriters = [MyTargetAsmWriter];
|
|
}
|