R600: Make Export Instruction not duplicable
authorVincent Lejeune <vljn@ovi.com>
Wed, 17 Apr 2013 15:17:39 +0000 (15:17 +0000)
committerVincent Lejeune <vljn@ovi.com>
Wed, 17 Apr 2013 15:17:39 +0000 (15:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179686 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/R600/R600Instructions.td
test/CodeGen/R600/jump_address.ll

index 1408966a1927d56a23e4fae0a18d30c775bd90e6..da8228dc725b3c8bf889e21457332470e758a8d2 100644 (file)
@@ -738,7 +738,9 @@ multiclass SteamOutputExportPattern<Instruction ExportInst,
       4095, imm:$mask, buf3inst, 0)>;
 }
 
-let usesCustomInserter = 1 in {
+// Export Instructions should not be duplicated by TailDuplication pass
+// (which assumes that duplicable instruction are affected by exec mask)
+let usesCustomInserter = 1, isNotDuplicable = 1 in {
 
 class ExportSwzInst : InstR600ISA<(
     outs),
index cd35bffb1304e31b871d9a375180b12c64b2c25b..ae9c8bba4fd67b73ab44b295cd64c9b878c37f61 100644 (file)
@@ -1,6 +1,8 @@
 ;RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s
 
-; CHECK: JUMP @4
+; CHECK: JUMP @3
+; CHECK: EXPORT
+; CHECK-NOT: EXPORT
 
 define void @main() #0 {
 main_body: