summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Renouf <tpr.llvm@botech.co.uk>2019-06-24 17:35:20 +0000
committerTim Renouf <tpr.llvm@botech.co.uk>2019-06-24 17:35:20 +0000
commitd2fdb956e0442707b69df4107cd64c2022c1cb54 (patch)
tree34756c861e3dc548cd1942b6b3f231c4e9006508
parent7fccb2ac5e32c074b91411f80da5a038c12489a5 (diff)
downloadbcm5719-llvm-d2fdb956e0442707b69df4107cd64c2022c1cb54.tar.gz
bcm5719-llvm-d2fdb956e0442707b69df4107cd64c2022c1cb54.zip
[AMDGPU] Allow any value in unused src0 field in v_nop
Summary: The LLVM disassembler assumes that the unused src0 operand of v_nop is zero. Other tools can put another value in that field, which is still valid. This commit fixes the LLVM disassembler to recognize such an encoding as v_nop, in the same way as we already do for s_getpc. Differential Revision: https://reviews.llvm.org/D63724 Change-Id: Iaf0363eae26ff92fc4ebc716216476adbff37a6f llvm-svn: 364208
-rw-r--r--llvm/lib/Target/AMDGPU/VOP1Instructions.td2
-rw-r--r--llvm/test/MC/Disassembler/AMDGPU/nop.txt3
-rw-r--r--llvm/test/MC/Disassembler/AMDGPU/vop1.txt3
-rw-r--r--llvm/test/MC/Disassembler/AMDGPU/vop1_vi.txt3
4 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/Target/AMDGPU/VOP1Instructions.td b/llvm/lib/Target/AMDGPU/VOP1Instructions.td
index a916091d6fb..6bc416ed7d4 100644
--- a/llvm/lib/Target/AMDGPU/VOP1Instructions.td
+++ b/llvm/lib/Target/AMDGPU/VOP1Instructions.td
@@ -14,7 +14,7 @@ class VOP1e <bits<8> op, VOPProfile P> : Enc32 {
bits<8> vdst;
bits<9> src0;
- let Inst{8-0} = !if(P.HasSrc0, src0{8-0}, 0);
+ let Inst{8-0} = !if(P.HasSrc0, src0{8-0}, ?);
let Inst{16-9} = op;
let Inst{24-17} = !if(P.EmitDst, vdst{7-0}, 0);
let Inst{31-25} = 0x3f; //encoding
diff --git a/llvm/test/MC/Disassembler/AMDGPU/nop.txt b/llvm/test/MC/Disassembler/AMDGPU/nop.txt
index 0305765e6f5..d27c0bc6a58 100644
--- a/llvm/test/MC/Disassembler/AMDGPU/nop.txt
+++ b/llvm/test/MC/Disassembler/AMDGPU/nop.txt
@@ -2,3 +2,6 @@
# CHECK: v_nop ; encoding: [0x00,0x00,0x00,0x7e]
0x00 0x00 0x00 0x7e
+
+# CHECK: v_nop ; encoding: [0x00,0x00,0x00,0x7e]
+0x80 0x00 0x00 0x7e
diff --git a/llvm/test/MC/Disassembler/AMDGPU/vop1.txt b/llvm/test/MC/Disassembler/AMDGPU/vop1.txt
index 02540848796..3e65f6142b7 100644
--- a/llvm/test/MC/Disassembler/AMDGPU/vop1.txt
+++ b/llvm/test/MC/Disassembler/AMDGPU/vop1.txt
@@ -3,6 +3,9 @@
# CHECK: v_nop ; encoding: [0x00,0x00,0x00,0x7e]
0x00 0x00 0x00 0x7e
+# CHECK: v_nop ; encoding: [0x00,0x00,0x00,0x7e]
+0x80 0x00 0x00 0x7e
+
# CHECK: v_clrexcp ; encoding: [0x00,0x6a,0x00,0x7e]
0x00 0x6a 0x00 0x7e
diff --git a/llvm/test/MC/Disassembler/AMDGPU/vop1_vi.txt b/llvm/test/MC/Disassembler/AMDGPU/vop1_vi.txt
index c42c0a62810..8e1a13e2589 100644
--- a/llvm/test/MC/Disassembler/AMDGPU/vop1_vi.txt
+++ b/llvm/test/MC/Disassembler/AMDGPU/vop1_vi.txt
@@ -6,6 +6,9 @@
# VI: v_nop ; encoding: [0x00,0x00,0x00,0x7e]
0x00 0x00 0x00 0x7e
+# VI: v_nop ; encoding: [0x00,0x00,0x00,0x7e]
+0x80 0x00 0x00 0x7e
+
# VI: v_clrexcp ; encoding: [0x00,0x6a,0x00,0x7e]
0x00 0x6a 0x00 0x7e
OpenPOWER on IntegriCloud