]> granicus.if.org Git - llvm/commitdiff
AMDGPU: Partially fix reported code size for some instructions
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Thu, 6 Oct 2016 10:13:23 +0000 (10:13 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Thu, 6 Oct 2016 10:13:23 +0000 (10:13 +0000)
These ones need to have the size on the pseudo instruction set for
getInstSizeInBytes to work correctly. These also have a statically
known size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283437 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
lib/Target/AMDGPU/BUFInstructions.td
lib/Target/AMDGPU/DSInstructions.td
lib/Target/AMDGPU/SOPInstructions.td

index e9bc1191cba02a76b49541f12a9f801fc8574950..ef7321402da9df1a63405b91bcc47dd007b47d5d 100644 (file)
@@ -346,7 +346,8 @@ void AMDGPUAsmPrinter::getSIProgramInfo(SIProgramInfo &ProgInfo,
       if (MI.isDebugValue())
         continue;
 
-      CodeSize += TII->getInstSizeInBytes(MI);
+      if (isVerbose())
+        CodeSize += TII->getInstSizeInBytes(MI);
 
       unsigned numOperands = MI.getNumOperands();
       for (unsigned op_idx = 0; op_idx < numOperands; op_idx++) {
index 220dd8deeb699d68140f8b1cc41bf90491b07bed..01be18baba6cb85b539aedcc8788257b6c661380 100644 (file)
@@ -66,6 +66,7 @@ class MTBUF_Pseudo <string opName, dag outs, dag ins,
 
   let isPseudo = 1;
   let isCodeGenOnly = 1;
+  let Size = 8;
   let UseNamedOperandTable = 1;
 
   string Mnemonic = opName;
@@ -77,7 +78,6 @@ class MTBUF_Pseudo <string opName, dag outs, dag ins,
   let Uses = [EXEC];
 
   let hasSideEffects = 0;
-  let UseNamedOperandTable = 1;
   let SchedRW = [WriteVMEM];
 }
 
@@ -159,6 +159,7 @@ class MUBUF_Pseudo <string opName, dag outs, dag ins,
 
   let isPseudo = 1;
   let isCodeGenOnly = 1;
+  let Size = 8;
   let UseNamedOperandTable = 1;
 
   string Mnemonic = opName;
index 06103f3056d335ed7ad0f4e248864c8150a191bd..8adb7f6bb34553fe72c5eabd2232b701757b56aa 100644 (file)
@@ -15,6 +15,7 @@ class DS_Pseudo <string opName, dag outs, dag ins, string asmOps, list<dag> patt
 
   let LGKM_CNT = 1;
   let DS = 1;
+  let Size = 8;
   let UseNamedOperandTable = 1;
   let Uses = [M0, EXEC];
 
index 5a42016074beb25a4e97e1357763b4fea1b1b7aa..d31002b999a1386c8eab69b44e339b9aa9a1470b 100644 (file)
@@ -575,8 +575,8 @@ def S_SETREG_B32 : SOPK_Pseudo <
 def S_SETREG_IMM32_B32 : SOPK_Pseudo <
   "s_setreg_imm32_b32",
   (outs), (ins i32imm:$imm, hwreg:$simm16),
-  "$simm16, $imm"
-> {
+  "$simm16, $imm"> {
+  let Size = 8; // Unlike every other SOPK instruction.
   let has_sdst = 0;
 }
 
@@ -688,6 +688,7 @@ class SOPP <bits<7> op, dag ins, string asm, list<dag> pattern = []> :
   let hasSideEffects = 0;
   let SALU = 1;
   let SOPP = 1;
+  let Size = 4;
   let SchedRW = [WriteSALU];
 
   let UseNamedOperandTable = 1;