TrapHandlerAbiHsa = 1
};
- enum TrapCode {
- TrapCodeBreakPoint = 0,
- TrapCodeLLVMTrap = 1,
- TrapCodeLLVMDebugTrap = 2,
- TrapCodeHSADebugTrap = 3
+ enum TrapID {
+ TrapIDHardwareReserved = 0,
+ TrapIDHSADebugTrap = 1,
+ TrapIDLLVMTrap = 2,
+ TrapIDLLVMDebugTrap = 3,
+ TrapIDDebugBreakpoint = 7,
+ TrapIDDebugReserved8 = 8,
+ TrapIDDebugReservedFE = 0xfe,
+ TrapIDDebugReservedFF = 0xff
};
enum TrapRegValues {
- TrapCodeLLVMTrapRegValue = 1
+ LLVMTrapHandlerRegValue = 1
};
protected:
.addReg(AMDGPU::SGPR0_SGPR1, RegState::Implicit);
} else {
switch (TrapType) {
- case SISubtarget::TrapCodeLLVMTrap:
+ case SISubtarget::TrapIDLLVMTrap:
BuildMI(*BB, MI, DL, TII->get(AMDGPU::S_ENDPGM));
break;
- case SISubtarget::TrapCodeLLVMDebugTrap: {
+ case SISubtarget::TrapIDLLVMDebugTrap: {
DiagnosticInfoUnsupported NoTrap(*MF->getFunction(),
"debugtrap handler not supported",
DL,
int NONE = 0;
}
-def TRAPTYPE {
- int LLVM_TRAP = 1;
- int LLVM_DEBUG_TRAP = 2;
+def TRAPID{
+ int LLVM_TRAP = 2;
+ int LLVM_DEBUG_TRAP = 3;
}
//===----------------------------------------------------------------------===//
let Predicates = [isGCN] in {
def : Pat<
(trap),
- (S_TRAP_PSEUDO TRAPTYPE.LLVM_TRAP)
+ (S_TRAP_PSEUDO TRAPID.LLVM_TRAP)
>;
def : Pat<
(debugtrap),
- (S_TRAP_PSEUDO TRAPTYPE.LLVM_DEBUG_TRAP)
+ (S_TRAP_PSEUDO TRAPID.LLVM_DEBUG_TRAP)
>;
def : Pat<
; GCN-LABEL: {{^}}hsa_trap:
; HSA-TRAP: enable_trap_handler = 1
; HSA-TRAP: s_mov_b64 s[0:1], s[4:5]
-; HSA-TRAP: s_trap 1
+; HSA-TRAP: s_trap 2
; for llvm.trap in hsa path without ABI, direct generate s_endpgm instruction without any warning information
; NO-HSA-TRAP: enable_trap_handler = 0
; GCN-LABEL: {{^}}hsa_debugtrap:
; HSA-TRAP: enable_trap_handler = 1
; HSA-TRAP: s_mov_b64 s[0:1], s[4:5]
-; HSA-TRAP: s_trap 2
+; HSA-TRAP: s_trap 3
; for llvm.debugtrap in non-hsa path without ABI, generate a warning and a s_endpgm instruction
; NO-HSA-TRAP: enable_trap_handler = 0