[llvm] r301025 - [AMDGPU] Handle SI_MASKED_UNREACHABLE in instruction emitter
Yaxun Liu via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 21 12:32:02 PDT 2017
Author: yaxunl
Date: Fri Apr 21 14:32:02 2017
New Revision: 301025
URL: http://llvm.org/viewvc/llvm-project?rev=301025&view=rev
Log:
[AMDGPU] Handle SI_MASKED_UNREACHABLE in instruction emitter
SI_MASKED_UNREACHABLE does not have machine instruction encoding.
It needs special handling in AMDGPUAsmPrinter::EmitInstruction like some
other pseudo instructions.
This patch fixes compilation failure of RadeonRays.
Differential Revision: https://reviews.llvm.org/D32364
Added:
llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.unreachable.ll
Modified:
llvm/trunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp
Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp?rev=301025&r1=301024&r2=301025&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp (original)
+++ llvm/trunk/lib/Target/AMDGPU/AMDGPUMCInstLower.cpp Fri Apr 21 14:32:02 2017
@@ -225,6 +225,12 @@ void AMDGPUAsmPrinter::EmitInstruction(c
return;
}
+ if (MI->getOpcode() == AMDGPU::SI_MASKED_UNREACHABLE) {
+ if (isVerbose())
+ OutStreamer->emitRawComment(" divergent unreachable");
+ return;
+ }
+
MCInst TmpInst;
MCInstLowering.lower(MI, TmpInst);
EmitToStreamer(*OutStreamer, TmpInst);
Added: llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.unreachable.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.unreachable.ll?rev=301025&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.unreachable.ll (added)
+++ llvm/trunk/test/CodeGen/AMDGPU/llvm.amdgcn.unreachable.ll Fri Apr 21 14:32:02 2017
@@ -0,0 +1,9 @@
+; RUN: llc -march amdgcn %s -filetype=obj
+; RUN: llc -march amdgcn <%s | FileCheck %s
+define amdgpu_kernel void @f() {
+ ; CHECK: ; divergent unreachable
+ call void @llvm.amdgcn.unreachable()
+ ret void
+}
+
+declare void @llvm.amdgcn.unreachable()
More information about the llvm-commits
mailing list