]> granicus.if.org Git - llvm/commitdiff
[AMDGPU][MC][GFX9] Corrected encoding of flat_scratch* for SDWA opcodes
authorDmitry Preobrazhensky <dmitry.preobrazhensky@amd.com>
Fri, 26 May 2017 18:01:29 +0000 (18:01 +0000)
committerDmitry Preobrazhensky <dmitry.preobrazhensky@amd.com>
Fri, 26 May 2017 18:01:29 +0000 (18:01 +0000)
See bug 33171: https://bugs.llvm.org/show_bug.cgi?id=33171

Reviewers: Sam Kolton

Differential Revision: https://reviews.llvm.org/D33553

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

lib/Target/AMDGPU/MCTargetDesc/SIMCCodeEmitter.cpp
test/MC/AMDGPU/vop_sdwa.s

index 4b2c3fa9b562ca43701f34df9ebbccffe4b798bc..e02acf516c0dbfd27d9542707bfc2ef1aeb04043 100644 (file)
@@ -340,7 +340,7 @@ SIMCCodeEmitter::getSDWA9SrcEncoding(const MCInst &MI, unsigned OpNo,
   unsigned Reg = MO.getReg();
   RegEnc |= MRI.getEncodingValue(Reg);
   RegEnc &= SDWA9EncValues::SRC_VGPR_MASK;
-  if (AMDGPU::isSGPR(Reg, &MRI)) {
+  if (AMDGPU::isSGPR(AMDGPU::mc2PseudoReg(Reg), &MRI)) {
     RegEnc |= SDWA9EncValues::SRC_SGPR_MASK;
   }
   return RegEnc;
index 83faec16fd0fe66cc7fe3e4c7adf579e16188a8e..59dd30ed0e4839ea5a5d74e58a02d8bc9ce6dcf3 100644 (file)
@@ -686,6 +686,10 @@ v_cmp_eq_f32_sdwa vcc, v1, s22 src0_sel:WORD_1 src1_sel:BYTE_2
 // NOGFX9: error: invalid operand (violates constant bus restrictions)
 v_cmp_eq_f32_sdwa vcc, exec, vcc src0_sel:WORD_1 src1_sel:BYTE_2
 
+// NOSICI: error:
+// NOVI: error:
+// GFX9: v_ceil_f16_sdwa v5, flat_scratch_lo dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD ; encoding: [0xf9,0x8a,0x0a,0x7e,0x66,0x06,0x86,0x06]
+v_ceil_f16_sdwa v5, flat_scratch_lo dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD
 
 //===----------------------------------------------------------------------===//
 // VOPC with arbitrary SGPR destination