diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-04-15 20:51:12 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-04-15 20:51:12 +0000 |
commit | 101abd219b3dc77fb531e569e4b6bd86ed48b5c1 (patch) | |
tree | 2080b22e94f198de5319ccfbe1e685cff7ff7d85 | |
parent | fbdd2a18874d216c40b2aced5083416c6150402c (diff) | |
download | bcm5719-llvm-101abd219b3dc77fb531e569e4b6bd86ed48b5c1.tar.gz bcm5719-llvm-101abd219b3dc77fb531e569e4b6bd86ed48b5c1.zip |
AMDGPU: Fix unreachable when counting register usage of SGPR96
llvm-svn: 358447
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp | 3 | ||||
-rw-r--r-- | llvm/test/CodeGen/AMDGPU/call-graph-register-usage.ll | 13 |
2 files changed, 16 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp index ea63ae35df1..cc37d152750 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp @@ -705,6 +705,9 @@ AMDGPUAsmPrinter::SIFunctionResourceInfo AMDGPUAsmPrinter::analyzeResourceUsage( } else if (AMDGPU::VReg_512RegClass.contains(Reg)) { IsSGPR = false; Width = 16; + } else if (AMDGPU::SReg_96RegClass.contains(Reg)) { + IsSGPR = true; + Width = 3; } else { llvm_unreachable("Unknown register class"); } diff --git a/llvm/test/CodeGen/AMDGPU/call-graph-register-usage.ll b/llvm/test/CodeGen/AMDGPU/call-graph-register-usage.ll index 384d9dd4576..acc062eca25 100644 --- a/llvm/test/CodeGen/AMDGPU/call-graph-register-usage.ll +++ b/llvm/test/CodeGen/AMDGPU/call-graph-register-usage.ll @@ -224,6 +224,19 @@ define amdgpu_kernel void @usage_direct_recursion(i32 %n) #0 { ret void } +; Make sure there's no assert when a sgpr96 is used. +; GCN-LABEL: {{^}}count_use_sgpr96_external_call +; GCN: ; sgpr96 s[{{[0-9]+}}:{{[0-9]+}}] +; CI: NumSgprs: 48 +; VI-NOBUG: NumSgprs: 48 +; VI-BUG: NumSgprs: 96 +; GCN: NumVgprs: 24 +define amdgpu_kernel void @count_use_sgpr96_external_call() { +entry: + tail call void asm sideeffect "; sgpr96 $0", "s"(<3 x i32> <i32 10, i32 11, i32 12>) #1 + call void @external() + ret void +} attributes #0 = { nounwind noinline norecurse } attributes #1 = { nounwind noinline norecurse } |