AMDGPU/MC: Fix decoders for VSrc_v2b32 and VSrc_v2f32 RegisterOperands
authorPetar Avramovic <Petar.Avramovic@amd.com>
Thu, 9 Feb 2023 10:29:56 +0000 (11:29 +0100)
committerPetar Avramovic <Petar.Avramovic@amd.com>
Thu, 9 Feb 2023 11:16:46 +0000 (12:16 +0100)
Decoder should make 32 bit value when decoding immediates, not 64 bit.

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

llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
llvm/lib/Target/AMDGPU/SIRegisterInfo.td
llvm/test/MC/Disassembler/AMDGPU/gfx90a_features.txt

index 575aedc3f6b9a72ba94bdafbd2a47eb255f2713d..fc8f701c6bb6f0dd3de4145d350eb830a10712e2 100644 (file)
@@ -245,6 +245,7 @@ DECODE_OPERAND_SRC_REG_OR_IMM_9(VS_32_Lo128, OPW16, 16)
 DECODE_OPERAND_SRC_REG_OR_IMM_9(VS_32, OPW32, 16)
 DECODE_OPERAND_SRC_REG_OR_IMM_9(VS_32, OPW32, 32)
 DECODE_OPERAND_SRC_REG_OR_IMM_9(VS_64, OPW64, 64)
+DECODE_OPERAND_SRC_REG_OR_IMM_9(VS_64, OPW64, 32)
 DECODE_OPERAND_SRC_REG_OR_IMM_9(VReg_64, OPW64, 64)
 DECODE_OPERAND_SRC_REG_OR_IMM_9(VReg_128, OPW128, 32)
 DECODE_OPERAND_SRC_REG_OR_IMM_9(VReg_256, OPW256, 64)
index 77bcd488354d1ce76a2b426505b99a64a5074ebb..cf44bf7c35fbd4f112822ee8b47db19559aa1555 100644 (file)
@@ -1109,11 +1109,11 @@ class RegOrB64 <string RegisterClass, string OperandTypePrefix>
 
 class RegOrV2F32 <string RegisterClass, string OperandTypePrefix>
   : RegOrImmOperand <RegisterClass, OperandTypePrefix # "_V2FP32",
-                     !subst("_v2f32", "V2FP32", NAME), "_Imm64">;
+                     !subst("_v2f32", "V2FP32", NAME), "_Imm32">;
 
 class RegOrV2B32 <string RegisterClass, string OperandTypePrefix>
   : RegOrImmOperand <RegisterClass, OperandTypePrefix # "_V2INT32",
-                     !subst("_v2b32", "V2INT32", NAME), "_Imm64">;
+                     !subst("_v2b32", "V2INT32", NAME), "_Imm32">;
 
 // For VOP1,2,C True16 instructions. _Lo128 use first 128 32-bit VGPRs only.
 class RegOrB16_Lo128 <string RegisterClass, string OperandTypePrefix>
index 220f7a589f3f213094b911d9a2169f5c58d261ea..1fcc37ea2ee6fccbf4b257f62911cd362c1f5101 100644 (file)
@@ -51,7 +51,7 @@
 # GFX90A: v_pk_fma_f32 v[0:1], v[4:5], v[8:9], v[16:17] ; encoding: [0x00,0x40,0xb0,0xd3,0x04,0x11,0x42,0x1c]
 0x00,0x40,0xb0,0xd3,0x04,0x11,0x42,0x1c
 
-# GFX90A: v_pk_fma_f32 v[0:1], v[2:3], v[4:5], 0  ; encoding: [0x00,0x40,0xb0,0xd3,0x02,0x09,0x02,0x1a]
+# GFX90A: v_pk_fma_f32 v[0:1], v[2:3], v[4:5], 1.0 ; encoding: [0x00,0x40,0xb0,0xd3,0x02,0x09,0xca,0x1b]
 0x00,0x40,0xb0,0xd3,0x02,0x09,0xca,0x1b
 
 # GFX90A: v_pk_mul_f32 v[254:255], v[8:9], v[16:17] ; encoding: [0xfe,0x40,0xb1,0xd3,0x08,0x21,0x02,0x18]
 # GFX90A: v_pk_mul_f32 v[4:5], v[8:9], v[16:17] clamp ; encoding: [0x04,0xc0,0xb1,0xd3,0x08,0x21,0x02,0x18]
 0x04,0x80,0xb1,0xd3,0x08,0x21,0x02,0x18
 
-# GFX90A: v_pk_mul_f32 v[0:1], v[2:3], 0 ; encoding: [0x00,0x40,0xb1,0xd3,0x02,0x01,0x01,0x18]
+# GFX90A: v_pk_mul_f32 v[0:1], v[2:3], 1.0 ; encoding: [0x00,0x40,0xb1,0xd3,0x02,0xe5,0x01,0x18]
 0x00,0x40,0xb1,0xd3,0x02,0xe5,0x01,0x18
 
 # GFX90A: v_pk_add_f32 v[254:255], v[8:9], v[16:17] ; encoding: [0xfe,0x40,0xb2,0xd3,0x08,0x21,0x02,0x18]
 # GFX90A: v_pk_add_f32 v[4:5], v[8:9], v[16:17] clamp ; encoding: [0x04,0xc0,0xb2,0xd3,0x08,0x21,0x02,0x18]
 0x04,0x80,0xb2,0xd3,0x08,0x21,0x02,0x18
 
-# GFX90A: v_pk_add_f32 v[0:1], v[2:3], 0 ; encoding: [0x00,0x40,0xb2,0xd3,0x02,0x01,0x01,0x18]
+# GFX90A: v_pk_add_f32 v[0:1], v[2:3], 1.0 ; encoding: [0x00,0x40,0xb2,0xd3,0x02,0xe5,0x01,0x18]
 0x00,0x40,0xb2,0xd3,0x02,0xe5,0x01,0x18
 
 # GFX90A: v_pk_mov_b32 v[0:1], v[2:3], v[4:5] ; encoding: [0x00,0x40,0xb3,0xd3,0x02,0x09,0x02,0x18]
 # GFX90A: v_pk_mov_b32 v[0:1], v[2:3], 4 ; encoding: [0x00,0x40,0xb3,0xd3,0x02,0x09,0x01,0x18]
 0x00,0x40,0xb3,0xd3,0x02,0x09,0x01,0x18
 
-# GFX90A: v_pk_mov_b32 v[0:1], v[2:3], 0 ; encoding: [0x00,0x40,0xb3,0xd3,0x02,0x01,0x01,0x18]
+# GFX90A: v_pk_mov_b32 v[0:1], v[2:3], 2.0 ; encoding: [0x00,0x40,0xb3,0xd3,0x02,0xe9,0x01,0x18]
 0x00,0x40,0xb3,0xd3,0x02,0xe9,0x01,0x18
 
 # GFX90A: buffer_wbl2 ; encoding: [0x00,0x00,0xa0,0xe0,0x00,0x00,0x00,0x00]