summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWei Ding <wei.ding2@amd.com>2017-02-22 20:05:06 +0000
committerWei Ding <wei.ding2@amd.com>2017-02-22 20:05:06 +0000
commit4991d3570f254ef2ddba14a6b9638998227b5199 (patch)
tree3ecd9711cc6bb6fffa7685a2c7d7697d707be087
parent4ae5ec8268a54d698af32c0309526c50a5443d11 (diff)
downloadbcm5719-llvm-4991d3570f254ef2ddba14a6b9638998227b5199.tar.gz
bcm5719-llvm-4991d3570f254ef2ddba14a6b9638998227b5199.zip
AMDGPU : Update TrapCode based on Trap Handler ABI.
Differential Revision: http://reviews.llvm.org/D30232 llvm-svn: 295867
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h16
-rw-r--r--llvm/lib/Target/AMDGPU/SIISelLowering.cpp2
-rw-r--r--llvm/lib/Target/AMDGPU/SIInstrInfo.td6
-rw-r--r--llvm/lib/Target/AMDGPU/SIInstructions.td4
-rw-r--r--llvm/test/CodeGen/AMDGPU/trap.ll4
5 files changed, 18 insertions, 14 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h b/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h
index 8f1aaa1d893..1b874b97b27 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h
@@ -74,15 +74,19 @@ public:
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:
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
index 83ee856b4fe..b266d16a92c 100644
--- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -1804,7 +1804,7 @@ MachineBasicBlock *SITargetLowering::EmitInstrWithCustomInserter(
.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: {
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.td b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
index 279745db467..e832a0658d1 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.td
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
@@ -632,9 +632,9 @@ def DSTOMOD {
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;
}
//===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/AMDGPU/SIInstructions.td b/llvm/lib/Target/AMDGPU/SIInstructions.td
index 4bd759012a3..5d147b24ec9 100644
--- a/llvm/lib/Target/AMDGPU/SIInstructions.td
+++ b/llvm/lib/Target/AMDGPU/SIInstructions.td
@@ -391,12 +391,12 @@ def SI_PC_ADD_REL_OFFSET : SPseudoInstSI <
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<
diff --git a/llvm/test/CodeGen/AMDGPU/trap.ll b/llvm/test/CodeGen/AMDGPU/trap.ll
index 5c3e1ee0b3f..15f055e8c2b 100644
--- a/llvm/test/CodeGen/AMDGPU/trap.ll
+++ b/llvm/test/CodeGen/AMDGPU/trap.ll
@@ -28,7 +28,7 @@ declare void @llvm.debugtrap() #0
; 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
@@ -55,7 +55,7 @@ define void @hsa_trap() {
; 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
OpenPOWER on IntegriCloud