[llvm] 524c89e - AMDGPU/MC: Add assembler tests for v2f32 and v2b32 with imm operand

Petar Avramovic via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 9 03:17:31 PST 2023


Author: Petar Avramovic
Date: 2023-02-09T12:16:46+01:00
New Revision: 524c89e837ec19529f6190d1def7cb7cd345166b

URL: https://github.com/llvm/llvm-project/commit/524c89e837ec19529f6190d1def7cb7cd345166b
DIFF: https://github.com/llvm/llvm-project/commit/524c89e837ec19529f6190d1def7cb7cd345166b.diff

LOG: AMDGPU/MC: Add assembler tests for v2f32 and v2b32 with imm operand

Add test coverage for https://github.com/llvm/llvm-project/issues/60563.
D142636 introduced a bug: incorrect disassembly of floating point inline
constants for v_pk_mov_b32, v_pk_add_f32, v_pk_mul_f32 and v_pk_fma_f32.
Precommit for D143574.

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

Added: 
    

Modified: 
    llvm/test/MC/AMDGPU/gfx90a_asm_features.s
    llvm/test/MC/Disassembler/AMDGPU/gfx90a_features.txt

Removed: 
    


################################################################################
diff  --git a/llvm/test/MC/AMDGPU/gfx90a_asm_features.s b/llvm/test/MC/AMDGPU/gfx90a_asm_features.s
index 5e33cdc25fde3..2bebc855930e6 100644
--- a/llvm/test/MC/AMDGPU/gfx90a_asm_features.s
+++ b/llvm/test/MC/AMDGPU/gfx90a_asm_features.s
@@ -70,6 +70,10 @@ v_pk_fma_f32 v[8:9], v[0:1], s[0:1], v[4:5] clamp
 // 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]
 v_pk_fma_f32 v[0:1], v[4:5], v[8:9], v[16:17]
 
+// NOT-GFX90A: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
+// 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]
+v_pk_fma_f32 v[0:1], v[2:3], v[4:5], 1.0
+
 // NOT-GFX90A: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
 // GFX90A: v_pk_mul_f32 v[254:255], v[8:9], v[16:17] ; encoding: [0xfe,0x40,0xb1,0xd3,0x08,0x21,0x02,0x18]
 v_pk_mul_f32 v[254:255], v[8:9], v[16:17]
@@ -182,6 +186,10 @@ v_pk_mul_f32 v[4:5], v[8:9], v[16:17] neg_hi:[1,1]
 // GFX90A: v_pk_mul_f32 v[4:5], v[8:9], v[16:17] clamp ; encoding: [0x04,0xc0,0xb1,0xd3,0x08,0x21,0x02,0x18]
 v_pk_mul_f32 v[4:5], v[8:9], v[16:17] clamp
 
+// NOT-GFX90A: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
+// GFX90A: v_pk_mul_f32 v[0:1], v[2:3], 1.0        ; encoding: [0x00,0x40,0xb1,0xd3,0x02,0xe5,0x01,0x18]
+v_pk_mul_f32 v[0:1], v[2:3], 1.0
+
 // NOT-GFX90A: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
 // GFX90A: v_pk_add_f32 v[254:255], v[8:9], v[16:17] ; encoding: [0xfe,0x40,0xb2,0xd3,0x08,0x21,0x02,0x18]
 v_pk_add_f32 v[254:255], v[8:9], v[16:17]
@@ -294,6 +302,10 @@ v_pk_add_f32 v[4:5], v[8:9], v[16:17] neg_hi:[1,1]
 // GFX90A: v_pk_add_f32 v[4:5], v[8:9], v[16:17] clamp ; encoding: [0x04,0xc0,0xb2,0xd3,0x08,0x21,0x02,0x18]
 v_pk_add_f32 v[4:5], v[8:9], v[16:17] clamp
 
+// NOT-GFX90A: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
+// GFX90A: v_pk_add_f32 v[0:1], v[2:3], 1.0 ; encoding: [0x00,0x40,0xb2,0xd3,0x02,0xe5,0x01,0x18]
+v_pk_add_f32 v[0:1], v[2:3], 1.0
+
 // NOT-GFX90A: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
 // GFX90A: v_pk_mov_b32 v[0:1], v[2:3], v[4:5] ; encoding: [0x00,0x40,0xb3,0xd3,0x02,0x09,0x02,0x18]
 v_pk_mov_b32 v[0:1], v[2:3], v[4:5]
@@ -322,6 +334,14 @@ v_pk_mov_b32 v[0:1], v[2:3], v[4:5] op_sel:[1,0]
 // GFX90A: v_pk_mov_b32 v[0:1], v[2:3], v[4:5] op_sel:[1,1] ; encoding: [0x00,0x58,0xb3,0xd3,0x02,0x09,0x02,0x18]
 v_pk_mov_b32 v[0:1], v[2:3], v[4:5] op_sel:[1,1]
 
+// NOT-GFX90A: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
+// GFX90A: v_pk_mov_b32 v[0:1], v[2:3], 4 ; encoding: [0x00,0x40,0xb3,0xd3,0x02,0x09,0x01,0x18]
+v_pk_mov_b32 v[0:1], v[2:3], 4
+
+// NOT-GFX90A: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
+// GFX90A: v_pk_mov_b32 v[0:1], v[2:3], 2.0 ; encoding: [0x00,0x40,0xb3,0xd3,0x02,0xe9,0x01,0x18]
+v_pk_mov_b32 v[0:1], v[2:3], 2.0
+
 // NOT-GFX90A: :[[@LINE+2]]:{{[0-9]+}}: error: instruction not supported on this GPU
 // GFX90A: buffer_wbl2 ; encoding: [0x00,0x00,0xa0,0xe0,0x00,0x00,0x00,0x00]
 buffer_wbl2

diff  --git a/llvm/test/MC/Disassembler/AMDGPU/gfx90a_features.txt b/llvm/test/MC/Disassembler/AMDGPU/gfx90a_features.txt
index adf15e899468b..220f7a589f3f2 100644
--- a/llvm/test/MC/Disassembler/AMDGPU/gfx90a_features.txt
+++ b/llvm/test/MC/Disassembler/AMDGPU/gfx90a_features.txt
@@ -51,6 +51,9 @@
 # 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]
+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]
 0xfe,0x00,0xb1,0xd3,0x08,0x21,0x02,0x18
 
@@ -135,6 +138,9 @@
 # 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]
+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]
 0xfe,0x00,0xb2,0xd3,0x08,0x21,0x02,0x18
 
@@ -219,6 +225,9 @@
 # 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]
+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]
 0x00,0x00,0xb3,0xd3,0x02,0x09,0x02,0x18
 
@@ -240,6 +249,12 @@
 # GFX90A: v_pk_mov_b32 v[0:1], v[2:3], v[4:5] op_sel:[1,1] ; encoding: [0x00,0x58,0xb3,0xd3,0x02,0x09,0x02,0x18]
 0x00,0x18,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]
+0x00,0x40,0xb3,0xd3,0x02,0xe9,0x01,0x18
+
 # GFX90A: buffer_wbl2 ; encoding: [0x00,0x00,0xa0,0xe0,0x00,0x00,0x00,0x00]
 0x00,0x00,0xa0,0xe0,0x00,0x00,0x00,0x00
 


        


More information about the llvm-commits mailing list