[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