R600/SI: Fix emitting trailing whitespace after s_waitcnt
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 26 Sep 2014 01:09:46 +0000 (01:09 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 26 Sep 2014 01:09:46 +0000 (01:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218486 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/R600/InstPrinter/AMDGPUInstPrinter.cpp
test/CodeGen/R600/wait.ll

index fa7e0de90fa7aae0ff146fe7213b95c5a3796f7e..6d893b2779020c027e6ba9466e81eecab21d3a5c 100644 (file)
@@ -493,12 +493,26 @@ void AMDGPUInstPrinter::printWaitFlag(const MCInst *MI, unsigned OpNo,
   unsigned Vmcnt = SImm16 & 0xF;
   unsigned Expcnt = (SImm16 >> 4) & 0xF;
   unsigned Lgkmcnt = (SImm16 >> 8) & 0xF;
-  if (Vmcnt != 0xF)
-    O << "vmcnt(" << Vmcnt << ") ";
-  if (Expcnt != 0x7)
-    O << "expcnt(" << Expcnt << ") ";
-  if (Lgkmcnt != 0x7)
+
+  bool NeedSpace = false;
+
+  if (Vmcnt != 0xF) {
+    O << "vmcnt(" << Vmcnt << ')';
+    NeedSpace = true;
+  }
+
+  if (Expcnt != 0x7) {
+    if (NeedSpace)
+      O << ' ';
+    O << "expcnt(" << Expcnt << ')';
+    NeedSpace = true;
+  }
+
+  if (Lgkmcnt != 0x7) {
+    if (NeedSpace)
+      O << ' ';
     O << "lgkmcnt(" << Lgkmcnt << ')';
+  }
 }
 
 #include "AMDGPUGenAsmWriter.inc"
index 17e0b82e8a7b5e9dcabf50daffda71da99f8879a..b0b7e91958619eb1dc4d4ec90fd5954c30e0a26d 100644 (file)
@@ -1,11 +1,11 @@
-; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck %s
+; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck -strict-whitespace %s
 
 ; CHECK-LABEL: @main
 ; CHECK: S_LOAD_DWORDX4
 ; CHECK: S_LOAD_DWORDX4
-; CHECK: S_WAITCNT lgkmcnt(0)
-; CHECK: S_WAITCNT vmcnt(0)
-; CHECK: S_WAITCNT expcnt(0) lgkmcnt(0)
+; CHECK: S_WAITCNT lgkmcnt(0){{$}}
+; CHECK: S_WAITCNT vmcnt(0){{$}}
+; CHECK: S_WAITCNT expcnt(0) lgkmcnt(0){{$}}
 define void @main(<16 x i8> addrspace(2)* inreg %arg, <16 x i8> addrspace(2)* inreg %arg1, <32 x i8> addrspace(2)* inreg %arg2, <16 x i8> addrspace(2)* inreg %arg3, <16 x i8> addrspace(2)* inreg %arg4, i32 inreg %arg5, i32 %arg6, i32 %arg7, i32 %arg8, i32 %arg9, float addrspace(2)* inreg %constptr) #0 {
 main_body:
   %tmp = getelementptr <16 x i8> addrspace(2)* %arg3, i32 0