Skip to content

[AMDGPU][True16][MC] update mc test of a few vop1 t16 inst #135588

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

broxigarchen
Copy link
Contributor

@broxigarchen broxigarchen commented Apr 14, 2025

This is a NFC patch.

Regarding a few vop1 true16 instructions, the tablegen change has been done but the test changes are not complete. This patch update mc test of a few vop1 t16 that were missing before.

@broxigarchen broxigarchen force-pushed the main-merge-true16-mc-clean-up-3 branch from cf2e496 to f1181cf Compare April 15, 2025 14:17
@broxigarchen broxigarchen marked this pull request as ready for review April 15, 2025 14:17
@llvmbot llvmbot added backend:AMDGPU mc Machine (object) code labels Apr 15, 2025
@llvmbot
Copy link
Member

llvmbot commented Apr 15, 2025

@llvm/pr-subscribers-mc

@llvm/pr-subscribers-backend-amdgpu

Author: Brox Chen (broxigarchen)

Changes

Patch is 353.07 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/135588.diff

10 Files Affected:

  • (modified) llvm/test/MC/AMDGPU/gfx11_asm_vop1_t16_promote.s (+770-308)
  • (modified) llvm/test/MC/AMDGPU/gfx11_asm_vop3_from_vop1.s (+273-210)
  • (modified) llvm/test/MC/AMDGPU/gfx12_asm_vop1.s (+84)
  • (modified) llvm/test/MC/AMDGPU/gfx12_asm_vop1_dpp16.s (+238-196)
  • (modified) llvm/test/MC/AMDGPU/gfx12_asm_vop1_dpp8.s (+84-42)
  • (modified) llvm/test/MC/AMDGPU/gfx12_asm_vop1_t16_err.s (+294)
  • (modified) llvm/test/MC/AMDGPU/gfx12_asm_vop1_t16_promote.s (+770-308)
  • (modified) llvm/test/MC/AMDGPU/gfx12_asm_vop3_from_vop1.s (+274-208)
  • (modified) llvm/test/MC/AMDGPU/gfx12_asm_vop3_from_vop1_dpp16.s (+259-196)
  • (modified) llvm/test/MC/AMDGPU/gfx12_asm_vop3_from_vop1_dpp8.s (+119-56)
diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_vop1_t16_promote.s b/llvm/test/MC/AMDGPU/gfx11_asm_vop1_t16_promote.s
index 5cb81c640f413..6facd4dca01bf 100644
--- a/llvm/test/MC/AMDGPU/gfx11_asm_vop1_t16_promote.s
+++ b/llvm/test/MC/AMDGPU/gfx11_asm_vop1_t16_promote.s
@@ -2,71 +2,137 @@
 // RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize32,+real-true16 -show-encoding %s | FileCheck --check-prefix=GFX11 --implicit-check-not=_e32 %s
 // RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64,+real-true16 -show-encoding %s | FileCheck --check-prefix=GFX11 --implicit-check-not=_e32 %s
 
-v_ceil_f16 v128, 0xfe0b
-// GFX11: v_ceil_f16_e64 v128, 0xfe0b             ; encoding: [0x80,0x00,0xdc,0xd5,0xff,0x00,0x00,0x00,0x0b,0xfe,0x00,0x00]
+v_ceil_f16 v128.h, 0xfe0b
+// GFX11: v_ceil_f16_e64 v128.h, 0xfe0b op_sel:[0,1] ; encoding: [0x80,0x40,0xdc,0xd5,0xff,0x00,0x00,0x00,0x0b,0xfe,0x00,0x00]
 
-v_ceil_f16 v255, -1
-// GFX11: v_ceil_f16_e64 v255, -1                 ; encoding: [0xff,0x00,0xdc,0xd5,0xc1,0x00,0x00,0x00]
+v_ceil_f16 v128.l, 0xfe0b
+// GFX11: v_ceil_f16_e64 v128.l, 0xfe0b           ; encoding: [0x80,0x00,0xdc,0xd5,0xff,0x00,0x00,0x00,0x0b,0xfe,0x00,0x00]
 
-v_ceil_f16 v255, 0.5
-// GFX11: v_ceil_f16_e64 v255, 0.5                ; encoding: [0xff,0x00,0xdc,0xd5,0xf0,0x00,0x00,0x00]
+v_ceil_f16 v255.h, -1
+// GFX11: v_ceil_f16_e64 v255.h, -1 op_sel:[0,1]  ; encoding: [0xff,0x40,0xdc,0xd5,0xc1,0x00,0x00,0x00]
 
-v_ceil_f16 v255, exec_hi
-// GFX11: v_ceil_f16_e64 v255, exec_hi            ; encoding: [0xff,0x00,0xdc,0xd5,0x7f,0x00,0x00,0x00]
+v_ceil_f16 v255.h, 0.5
+// GFX11: v_ceil_f16_e64 v255.h, 0.5 op_sel:[0,1] ; encoding: [0xff,0x40,0xdc,0xd5,0xf0,0x00,0x00,0x00]
 
-v_ceil_f16 v255, exec_lo
-// GFX11: v_ceil_f16_e64 v255, exec_lo            ; encoding: [0xff,0x00,0xdc,0xd5,0x7e,0x00,0x00,0x00]
+v_ceil_f16 v255.h, exec_hi
+// GFX11: v_ceil_f16_e64 v255.h, exec_hi op_sel:[0,1] ; encoding: [0xff,0x40,0xdc,0xd5,0x7f,0x00,0x00,0x00]
 
-v_ceil_f16 v255, m0
-// GFX11: v_ceil_f16_e64 v255, m0                 ; encoding: [0xff,0x00,0xdc,0xd5,0x7d,0x00,0x00,0x00]
+v_ceil_f16 v255.h, exec_lo
+// GFX11: v_ceil_f16_e64 v255.h, exec_lo op_sel:[0,1] ; encoding: [0xff,0x40,0xdc,0xd5,0x7e,0x00,0x00,0x00]
 
-v_ceil_f16 v255, null
-// GFX11: v_ceil_f16_e64 v255, null               ; encoding: [0xff,0x00,0xdc,0xd5,0x7c,0x00,0x00,0x00]
+v_ceil_f16 v255.h, m0
+// GFX11: v_ceil_f16_e64 v255.h, m0 op_sel:[0,1]  ; encoding: [0xff,0x40,0xdc,0xd5,0x7d,0x00,0x00,0x00]
 
-v_ceil_f16 v255, s1
-// GFX11: v_ceil_f16_e64 v255, s1                 ; encoding: [0xff,0x00,0xdc,0xd5,0x01,0x00,0x00,0x00]
+v_ceil_f16 v255.h, null
+// GFX11: v_ceil_f16_e64 v255.h, null op_sel:[0,1] ; encoding: [0xff,0x40,0xdc,0xd5,0x7c,0x00,0x00,0x00]
 
-v_ceil_f16 v255, s105
-// GFX11: v_ceil_f16_e64 v255, s105               ; encoding: [0xff,0x00,0xdc,0xd5,0x69,0x00,0x00,0x00]
+v_ceil_f16 v255.h, s1
+// GFX11: v_ceil_f16_e64 v255.h, s1 op_sel:[0,1]  ; encoding: [0xff,0x40,0xdc,0xd5,0x01,0x00,0x00,0x00]
 
-v_ceil_f16 v255, src_scc
-// GFX11: v_ceil_f16_e64 v255, src_scc            ; encoding: [0xff,0x00,0xdc,0xd5,0xfd,0x00,0x00,0x00]
+v_ceil_f16 v255.h, s105
+// GFX11: v_ceil_f16_e64 v255.h, s105 op_sel:[0,1] ; encoding: [0xff,0x40,0xdc,0xd5,0x69,0x00,0x00,0x00]
 
-v_ceil_f16 v255, ttmp15
-// GFX11: v_ceil_f16_e64 v255, ttmp15             ; encoding: [0xff,0x00,0xdc,0xd5,0x7b,0x00,0x00,0x00]
+v_ceil_f16 v255.h, src_scc
+// GFX11: v_ceil_f16_e64 v255.h, src_scc op_sel:[0,1] ; encoding: [0xff,0x40,0xdc,0xd5,0xfd,0x00,0x00,0x00]
 
-v_ceil_f16 v255, v1
-// GFX11: v_ceil_f16_e64 v255, v1                 ; encoding: [0xff,0x00,0xdc,0xd5,0x01,0x01,0x00,0x00]
+v_ceil_f16 v255.h, ttmp15
+// GFX11: v_ceil_f16_e64 v255.h, ttmp15 op_sel:[0,1] ; encoding: [0xff,0x40,0xdc,0xd5,0x7b,0x00,0x00,0x00]
 
-v_ceil_f16 v255, v1 dpp8:[7,6,5,4,3,2,1,0]
-// GFX11: v_ceil_f16_e64_dpp v255, v1 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x00,0xdc,0xd5,0xe9,0x00,0x00,0x00,0x01,0x77,0x39,0x05]
+v_ceil_f16 v255.h, v1.h
+// GFX11: v_ceil_f16_e64 v255.h, v1.h op_sel:[1,1] ; encoding: [0xff,0x48,0xdc,0xd5,0x01,0x01,0x00,0x00]
 
-v_ceil_f16 v255, v1 quad_perm:[3,2,1,0]
-// GFX11: v_ceil_f16_e64_dpp v255, v1 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x00,0xdc,0xd5,0xfa,0x00,0x00,0x00,0x01,0x1b,0x00,0xff]
+v_ceil_f16 v255.h, v1.h dpp8:[7,6,5,4,3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v255.h, v1.h op_sel:[1,1] dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x48,0xdc,0xd5,0xe9,0x00,0x00,0x00,0x01,0x77,0x39,0x05]
 
-v_ceil_f16 v255, v127
-// GFX11: v_ceil_f16_e64 v255, v127               ; encoding: [0xff,0x00,0xdc,0xd5,0x7f,0x01,0x00,0x00]
+v_ceil_f16 v255.h, v1.h quad_perm:[3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v255.h, v1.h op_sel:[1,1] quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x48,0xdc,0xd5,0xfa,0x00,0x00,0x00,0x01,0x1b,0x00,0xff]
 
-v_ceil_f16 v255, v127 dpp8:[7,6,5,4,3,2,1,0]
-// GFX11: v_ceil_f16_e64_dpp v255, v127 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x00,0xdc,0xd5,0xe9,0x00,0x00,0x00,0x7f,0x77,0x39,0x05]
+v_ceil_f16 v255.h, v127.h
+// GFX11: v_ceil_f16_e64 v255.h, v127.h op_sel:[1,1] ; encoding: [0xff,0x48,0xdc,0xd5,0x7f,0x01,0x00,0x00]
 
-v_ceil_f16 v255, v127 quad_perm:[3,2,1,0]
-// GFX11: v_ceil_f16_e64_dpp v255, v127 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x00,0xdc,0xd5,0xfa,0x00,0x00,0x00,0x7f,0x1b,0x00,0xff]
+v_ceil_f16 v255.h, v127.h dpp8:[7,6,5,4,3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v255.h, v127.h op_sel:[1,1] dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x48,0xdc,0xd5,0xe9,0x00,0x00,0x00,0x7f,0x77,0x39,0x05]
 
-v_ceil_f16 v255, vcc_hi
-// GFX11: v_ceil_f16_e64 v255, vcc_hi             ; encoding: [0xff,0x00,0xdc,0xd5,0x6b,0x00,0x00,0x00]
+v_ceil_f16 v255.h, v127.h quad_perm:[3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v255.h, v127.h op_sel:[1,1] quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x48,0xdc,0xd5,0xfa,0x00,0x00,0x00,0x7f,0x1b,0x00,0xff]
 
-v_ceil_f16 v255, vcc_lo
-// GFX11: v_ceil_f16_e64 v255, vcc_lo             ; encoding: [0xff,0x00,0xdc,0xd5,0x6a,0x00,0x00,0x00]
+v_ceil_f16 v255.h, vcc_hi
+// GFX11: v_ceil_f16_e64 v255.h, vcc_hi op_sel:[0,1] ; encoding: [0xff,0x40,0xdc,0xd5,0x6b,0x00,0x00,0x00]
 
-v_ceil_f16 v5, v199
-// GFX11: v_ceil_f16_e64 v5, v199                 ; encoding: [0x05,0x00,0xdc,0xd5,0xc7,0x01,0x00,0x00]
+v_ceil_f16 v255.h, vcc_lo
+// GFX11: v_ceil_f16_e64 v255.h, vcc_lo op_sel:[0,1] ; encoding: [0xff,0x40,0xdc,0xd5,0x6a,0x00,0x00,0x00]
 
-v_ceil_f16 v5, v199 dpp8:[7,6,5,4,3,2,1,0]
-// GFX11: v_ceil_f16_e64_dpp v5, v199 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x05,0x00,0xdc,0xd5,0xe9,0x00,0x00,0x00,0xc7,0x77,0x39,0x05]
+v_ceil_f16 v255.l, -1
+// GFX11: v_ceil_f16_e64 v255.l, -1               ; encoding: [0xff,0x00,0xdc,0xd5,0xc1,0x00,0x00,0x00]
 
-v_ceil_f16 v5, v199 quad_perm:[3,2,1,0]
-// GFX11: v_ceil_f16_e64_dpp v5, v199 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0xdc,0xd5,0xfa,0x00,0x00,0x00,0xc7,0x1b,0x00,0xff]
+v_ceil_f16 v255.l, 0.5
+// GFX11: v_ceil_f16_e64 v255.l, 0.5              ; encoding: [0xff,0x00,0xdc,0xd5,0xf0,0x00,0x00,0x00]
+
+v_ceil_f16 v255.l, exec_hi
+// GFX11: v_ceil_f16_e64 v255.l, exec_hi          ; encoding: [0xff,0x00,0xdc,0xd5,0x7f,0x00,0x00,0x00]
+
+v_ceil_f16 v255.l, exec_lo
+// GFX11: v_ceil_f16_e64 v255.l, exec_lo          ; encoding: [0xff,0x00,0xdc,0xd5,0x7e,0x00,0x00,0x00]
+
+v_ceil_f16 v255.l, m0
+// GFX11: v_ceil_f16_e64 v255.l, m0               ; encoding: [0xff,0x00,0xdc,0xd5,0x7d,0x00,0x00,0x00]
+
+v_ceil_f16 v255.l, null
+// GFX11: v_ceil_f16_e64 v255.l, null             ; encoding: [0xff,0x00,0xdc,0xd5,0x7c,0x00,0x00,0x00]
+
+v_ceil_f16 v255.l, s1
+// GFX11: v_ceil_f16_e64 v255.l, s1               ; encoding: [0xff,0x00,0xdc,0xd5,0x01,0x00,0x00,0x00]
+
+v_ceil_f16 v255.l, s105
+// GFX11: v_ceil_f16_e64 v255.l, s105             ; encoding: [0xff,0x00,0xdc,0xd5,0x69,0x00,0x00,0x00]
+
+v_ceil_f16 v255.l, src_scc
+// GFX11: v_ceil_f16_e64 v255.l, src_scc          ; encoding: [0xff,0x00,0xdc,0xd5,0xfd,0x00,0x00,0x00]
+
+v_ceil_f16 v255.l, ttmp15
+// GFX11: v_ceil_f16_e64 v255.l, ttmp15           ; encoding: [0xff,0x00,0xdc,0xd5,0x7b,0x00,0x00,0x00]
+
+v_ceil_f16 v255.l, v1.l
+// GFX11: v_ceil_f16_e64 v255.l, v1.l             ; encoding: [0xff,0x00,0xdc,0xd5,0x01,0x01,0x00,0x00]
+
+v_ceil_f16 v255.l, v1.l dpp8:[7,6,5,4,3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v255.l, v1.l dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x00,0xdc,0xd5,0xe9,0x00,0x00,0x00,0x01,0x77,0x39,0x05]
+
+v_ceil_f16 v255.l, v1.l quad_perm:[3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v255.l, v1.l quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x00,0xdc,0xd5,0xfa,0x00,0x00,0x00,0x01,0x1b,0x00,0xff]
+
+v_ceil_f16 v255.l, v127.l
+// GFX11: v_ceil_f16_e64 v255.l, v127.l           ; encoding: [0xff,0x00,0xdc,0xd5,0x7f,0x01,0x00,0x00]
+
+v_ceil_f16 v255.l, v127.l dpp8:[7,6,5,4,3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v255.l, v127.l dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x00,0xdc,0xd5,0xe9,0x00,0x00,0x00,0x7f,0x77,0x39,0x05]
+
+v_ceil_f16 v255.l, v127.l quad_perm:[3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v255.l, v127.l quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x00,0xdc,0xd5,0xfa,0x00,0x00,0x00,0x7f,0x1b,0x00,0xff]
+
+v_ceil_f16 v255.l, vcc_hi
+// GFX11: v_ceil_f16_e64 v255.l, vcc_hi           ; encoding: [0xff,0x00,0xdc,0xd5,0x6b,0x00,0x00,0x00]
+
+v_ceil_f16 v255.l, vcc_lo
+// GFX11: v_ceil_f16_e64 v255.l, vcc_lo           ; encoding: [0xff,0x00,0xdc,0xd5,0x6a,0x00,0x00,0x00]
+
+v_ceil_f16 v5.h, v199.h
+// GFX11: v_ceil_f16_e64 v5.h, v199.h op_sel:[1,1] ; encoding: [0x05,0x48,0xdc,0xd5,0xc7,0x01,0x00,0x00]
+
+v_ceil_f16 v5.h, v199.h dpp8:[7,6,5,4,3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v5.h, v199.h op_sel:[1,1] dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x05,0x48,0xdc,0xd5,0xe9,0x00,0x00,0x00,0xc7,0x77,0x39,0x05]
+
+v_ceil_f16 v5.h, v199.h quad_perm:[3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v5.h, v199.h op_sel:[1,1] quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x48,0xdc,0xd5,0xfa,0x00,0x00,0x00,0xc7,0x1b,0x00,0xff]
+
+v_ceil_f16 v5.l, v199.l
+// GFX11: v_ceil_f16_e64 v5.l, v199.l             ; encoding: [0x05,0x00,0xdc,0xd5,0xc7,0x01,0x00,0x00]
+
+v_ceil_f16 v5.l, v199.l dpp8:[7,6,5,4,3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v5.l, v199.l dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x05,0x00,0xdc,0xd5,0xe9,0x00,0x00,0x00,0xc7,0x77,0x39,0x05]
+
+v_ceil_f16 v5.l, v199.l quad_perm:[3,2,1,0]
+// GFX11: v_ceil_f16_e64_dpp v5.l, v199.l quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0xdc,0xd5,0xfa,0x00,0x00,0x00,0xc7,0x1b,0x00,0xff]
 
 v_cos_f16 v128.h, 0xfe0b
 // GFX11: v_cos_f16_e64 v128.h, 0xfe0b op_sel:[0,1] ; encoding: [0x80,0x40,0xe1,0xd5,0xff,0x00,0x00,0x00,0x0b,0xfe,0x00,0x00]
@@ -1160,137 +1226,269 @@ v_cvt_u32_u16 v5, v199.l dpp8:[7,6,5,4,3,2,1,0]
 v_cvt_u32_u16 v5, v199.l quad_perm:[3,2,1,0]
 // GFX11: v_cvt_u32_u16_e64_dpp v5, v199.l quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0xeb,0xd5,0xfa,0x00,0x00,0x00,0xc7,0x1b,0x00,0xff]
 
-v_exp_f16 v128, 0xfe0b
-// GFX11: v_exp_f16_e64 v128, 0xfe0b              ; encoding: [0x80,0x00,0xd8,0xd5,0xff,0x00,0x00,0x00,0x0b,0xfe,0x00,0x00]
+v_exp_f16 v128.h, 0xfe0b
+// GFX11: v_exp_f16_e64 v128.h, 0xfe0b op_sel:[0,1] ; encoding: [0x80,0x40,0xd8,0xd5,0xff,0x00,0x00,0x00,0x0b,0xfe,0x00,0x00]
+
+v_exp_f16 v128.l, 0xfe0b
+// GFX11: v_exp_f16_e64 v128.l, 0xfe0b            ; encoding: [0x80,0x00,0xd8,0xd5,0xff,0x00,0x00,0x00,0x0b,0xfe,0x00,0x00]
+
+v_exp_f16 v255.h, -1
+// GFX11: v_exp_f16_e64 v255.h, -1 op_sel:[0,1]   ; encoding: [0xff,0x40,0xd8,0xd5,0xc1,0x00,0x00,0x00]
+
+v_exp_f16 v255.h, 0.5
+// GFX11: v_exp_f16_e64 v255.h, 0.5 op_sel:[0,1]  ; encoding: [0xff,0x40,0xd8,0xd5,0xf0,0x00,0x00,0x00]
+
+v_exp_f16 v255.h, exec_hi
+// GFX11: v_exp_f16_e64 v255.h, exec_hi op_sel:[0,1] ; encoding: [0xff,0x40,0xd8,0xd5,0x7f,0x00,0x00,0x00]
+
+v_exp_f16 v255.h, exec_lo
+// GFX11: v_exp_f16_e64 v255.h, exec_lo op_sel:[0,1] ; encoding: [0xff,0x40,0xd8,0xd5,0x7e,0x00,0x00,0x00]
+
+v_exp_f16 v255.h, m0
+// GFX11: v_exp_f16_e64 v255.h, m0 op_sel:[0,1]   ; encoding: [0xff,0x40,0xd8,0xd5,0x7d,0x00,0x00,0x00]
+
+v_exp_f16 v255.h, null
+// GFX11: v_exp_f16_e64 v255.h, null op_sel:[0,1] ; encoding: [0xff,0x40,0xd8,0xd5,0x7c,0x00,0x00,0x00]
+
+v_exp_f16 v255.h, s1
+// GFX11: v_exp_f16_e64 v255.h, s1 op_sel:[0,1]   ; encoding: [0xff,0x40,0xd8,0xd5,0x01,0x00,0x00,0x00]
+
+v_exp_f16 v255.h, s105
+// GFX11: v_exp_f16_e64 v255.h, s105 op_sel:[0,1] ; encoding: [0xff,0x40,0xd8,0xd5,0x69,0x00,0x00,0x00]
+
+v_exp_f16 v255.h, src_scc
+// GFX11: v_exp_f16_e64 v255.h, src_scc op_sel:[0,1] ; encoding: [0xff,0x40,0xd8,0xd5,0xfd,0x00,0x00,0x00]
+
+v_exp_f16 v255.h, ttmp15
+// GFX11: v_exp_f16_e64 v255.h, ttmp15 op_sel:[0,1] ; encoding: [0xff,0x40,0xd8,0xd5,0x7b,0x00,0x00,0x00]
+
+v_exp_f16 v255.h, v1.h
+// GFX11: v_exp_f16_e64 v255.h, v1.h op_sel:[1,1] ; encoding: [0xff,0x48,0xd8,0xd5,0x01,0x01,0x00,0x00]
+
+v_exp_f16 v255.h, v1.h dpp8:[7,6,5,4,3,2,1,0]
+// GFX11: v_exp_f16_e64_dpp v255.h, v1.h op_sel:[1,1] dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x48,0xd8,0xd5,0xe9,0x00,0x00,0x00,0x01,0x77,0x39,0x05]
+
+v_exp_f16 v255.h, v1.h quad_perm:[3,2,1,0]
+// GFX11: v_exp_f16_e64_dpp v255.h, v1.h op_sel:[1,1] quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x48,0xd8,0xd5,0xfa,0x00,0x00,0x00,0x01,0x1b,0x00,0xff]
+
+v_exp_f16 v255.h, v127.h
+// GFX11: v_exp_f16_e64 v255.h, v127.h op_sel:[1,1] ; encoding: [0xff,0x48,0xd8,0xd5,0x7f,0x01,0x00,0x00]
+
+v_exp_f16 v255.h, v127.h dpp8:[7,6,5,4,3,2,1,0]
+// GFX11: v_exp_f16_e64_dpp v255.h, v127.h op_sel:[1,1] dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x48,0xd8,0xd5,0xe9,0x00,0x00,0x00,0x7f,0x77,0x39,0x05]
+
+v_exp_f16 v255.h, v127.h quad_perm:[3,2,1,0]
+// GFX11: v_exp_f16_e64_dpp v255.h, v127.h op_sel:[1,1] quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x48,0xd8,0xd5,0xfa,0x00,0x00,0x00,0x7f,0x1b,0x00,0xff]
 
-v_exp_f16 v255, -1
-// GFX11: v_exp_f16_e64 v255, -1                  ; encoding: [0xff,0x00,0xd8,0xd5,0xc1,0x00,0x00,0x00]
+v_exp_f16 v255.h, vcc_hi
+// GFX11: v_exp_f16_e64 v255.h, vcc_hi op_sel:[0,1] ; encoding: [0xff,0x40,0xd8,0xd5,0x6b,0x00,0x00,0x00]
 
-v_exp_f16 v255, 0.5
-// GFX11: v_exp_f16_e64 v255, 0.5                 ; encoding: [0xff,0x00,0xd8,0xd5,0xf0,0x00,0x00,0x00]
+v_exp_f16 v255.h, vcc_lo
+// GFX11: v_exp_f16_e64 v255.h, vcc_lo op_sel:[0,1] ; encoding: [0xff,0x40,0xd8,0xd5,0x6a,0x00,0x00,0x00]
 
-v_exp_f16 v255, exec_hi
-// GFX11: v_exp_f16_e64 v255, exec_hi             ; encoding: [0xff,0x00,0xd8,0xd5,0x7f,0x00,0x00,0x00]
+v_exp_f16 v255.l, -1
+// GFX11: v_exp_f16_e64 v255.l, -1                ; encoding: [0xff,0x00,0xd8,0xd5,0xc1,0x00,0x00,0x00]
 
-v_exp_f16 v255, exec_lo
-// GFX11: v_exp_f16_e64 v255, exec_lo             ; encoding: [0xff,0x00,0xd8,0xd5,0x7e,0x00,0x00,0x00]
+v_exp_f16 v255.l, 0.5
+// GFX11: v_exp_f16_e64 v255.l, 0.5               ; encoding: [0xff,0x00,0xd8,0xd5,0xf0,0x00,0x00,0x00]
 
-v_exp_f16 v255, m0
-// GFX11: v_exp_f16_e64 v255, m0                  ; encoding: [0xff,0x00,0xd8,0xd5,0x7d,0x00,0x00,0x00]
+v_exp_f16 v255.l, exec_hi
+// GFX11: v_exp_f16_e64 v255.l, exec_hi           ; encoding: [0xff,0x00,0xd8,0xd5,0x7f,0x00,0x00,0x00]
 
-v_exp_f16 v255, null
-// GFX11: v_exp_f16_e64 v255, null                ; encoding: [0xff,0x00,0xd8,0xd5,0x7c,0x00,0x00,0x00]
+v_exp_f16 v255.l, exec_lo
+// GFX11: v_exp_f16_e64 v255.l, exec_lo           ; encoding: [0xff,0x00,0xd8,0xd5,0x7e,0x00,0x00,0x00]
 
-v_exp_f16 v255, s1
-// GFX11: v_exp_f16_e64 v255, s1                  ; encoding: [0xff,0x00,0xd8,0xd5,0x01,0x00,0x00,0x00]
+v_exp_f16 v255.l, m0
+// GFX11: v_exp_f16_e64 v255.l, m0                ; encoding: [0xff,0x00,0xd8,0xd5,0x7d,0x00,0x00,0x00]
 
-v_exp_f16 v255, s105
-// GFX11: v_exp_f16_e64 v255, s105                ; encoding: [0xff,0x00,0xd8,0xd5,0x69,0x00,0x00,0x00]
+v_exp_f16 v255.l, null
+// GFX11: v_exp_f16_e64 v255.l, null              ; encoding: [0xff,0x00,0xd8,0xd5,0x7c,0x00,0x00,0x00]
 
-v_exp_f16 v255, src_scc
-// GFX11: v_exp_f16_e64 v255, src_scc             ; encoding: [0xff,0x00,0xd8,0xd5,0xfd,0x00,0x00,0x00]
+v_exp_f16 v255.l, s1
+// GFX11: v_exp_f16_e64 v255.l, s1                ; encoding: [0xff,0x00,0xd8,0xd5,0x01,0x00,0x00,0x00]
 
-v_exp_f16 v255, ttmp15
-// GFX11: v_exp_f16_e64 v255, ttmp15              ; encoding: [0xff,0x00,0xd8,0xd5,0x7b,0x00,0x00,0x00]
+v_exp_f16 v255.l, s105
+// GFX11: v_exp_f16_e64 v255.l, s105              ; encoding: [0xff,0x00,0xd8,0xd5,0x69,0x00,0x00,0x00]
 
-v_exp_f16 v255, v1
-// GFX11: v_exp_f16_e64 v255, v1                  ; encoding: [0xff,0x00,0xd8,0xd5,0x01,0x01,0x00,0x00]
+v_exp_f16 v255.l, src_scc
+// GFX11: v_exp_f16_e64 v255.l, src_scc           ; encoding: [0xff,0x00,0xd8,0xd5,0xfd,0x00,0x00,0x00]
 
-v_exp_f16 v255, v1 dpp8:[7,6,5,4,3,2,1,0]
-// GFX11: v_exp_f16_e64_dpp v255, v1 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x00,0xd8,0xd5,0xe9,0x00,0x00,0x00,0x01,0x77,0x39,0x05]
+v_exp_f16 v255.l, ttmp15
+// GFX11: v_exp_f16_e64 v255.l, ttmp15            ; encoding: [0xff,0x00,0xd8,0xd5,0x7b,0x00,0x00,0x00]
 
-v_exp_f16 v255, v1 quad_perm:[3,2,1,0]
-// GFX11: v_exp_f16_e64_dpp v255, v1 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x00,0xd8,0xd5,0xfa,0x00,0x00,0x00,0x01,0x1b,0x00,0xff]
+v_exp_f16 v255.l, v1.l
+// GFX11: v_exp_f16_e64 v255.l, v1.l              ; encoding: [0xff,0x00,0xd8,0xd5,0x01,0x01,0x00,0x00]
 
-v_exp_f16 v255, v127
-// GFX11: v_exp_f16_e64 v255, v127                ; encoding: [0xff,0x00,0xd8,0xd5,0x7f,0x01,0x00,0x00]
+v_exp_f16 v255.l, v1.l dpp8:[7,6,5,4,3,2,1,0]
+// GFX11: v_exp_f16_e64_dpp v255.l, v1.l dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x00,0xd8,0xd5,0xe9,0x00,0x00,0x00,0x01,0x77,0x39,0x05]
 
-v_exp_f16 v255, v127 dpp8:[7,6,5,4,3,2,1,0]
-// GFX11: v_exp_f16_e64_dpp v255, v127 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x00,0xd8,0xd5,0xe9,0x00,0x00,0x00,0x7f,0x77,0x39,0x05]
+v_exp_f16 v255.l, v1.l quad_perm:[3,2,1,0]
+// GFX11: v_exp_f16_e64_dpp v255.l, v1.l quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x00,0xd8,0xd5,0xfa,0x00,0x00,0x00,0x01,0x1b,0x00,0xff]
 
-v_exp_f16 v255, v127 quad_perm:[3,2,1,0]
-// GFX11: v_exp_f16_e64_dpp v255, v127 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x00,0xd8,0xd5,0xfa,0x00,0x00,0x00,0x7f,0x1b,0x00,0xff]
+v_exp_f16 v255.l, v127.l
+// GFX11: v_exp_f16_e64 v255.l, v127.l            ; encoding: [0xff,0x00,0xd8,0xd5,0x7f,0x01,0x00,0x00]
 
-v_exp_f16 v255, vcc_hi
-// GFX11: v_exp_f16_e64 v255, vcc_hi              ; encoding: [0xff,0x00,0xd8,0xd5,0x6b,0x00,0x00,0x00]
+v_exp_f16 v255.l, v127.l dpp8:[7,6,5,4,3,2,1,0]
+// GFX11: v_exp_f16_e64_dpp v255.l, v127.l dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0xff,0x00,0xd8,0xd5,0xe9,0x00,0x00,0x00,0x7f,0x77,0x39,0x05]
 
-v_exp_f16 v255, vcc_lo
-// GFX11: v_exp_f16_e64 v255, vcc_lo              ; encoding: [0xff,0x00,0xd8,0xd5,0x6a,0x00,0x00,0x00]
+v_exp_f16 v255.l, v127.l quad_perm:[3,2,1,0]
+// GFX11: v_exp_f16_e64_dpp v255.l, v127.l quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0xff,0x00,0xd8,0xd5,0xfa,0x00,0x00,0x00,0x7f,0x1b,0x00,0xff]
 
-v_exp_f16 v5, v199
-// GFX11: v_exp_f16_e64 v5, v199                  ; encoding: [0x05,0x00,0xd8,0xd5,0xc7,0x01,0x00,0x00]
+v_exp_f16 v255.l, vcc_hi
+// GFX11: v_exp_f16_e64 v255.l, vcc_hi            ; encoding: [0xff,0x00,0xd8,0xd5,0x6b,0x00,0x00,0x00]
 
-v_exp_f16 v5, v199 dpp8:[7,6,5,4,3,2,1,0]
-// GFX11: v_exp_f16_e64_dpp v5, v199 dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x05,0x00,0xd8,0xd5,0xe9,0x00,0x00,0x00,0xc7,0x77,0x39,0x05]
+v_exp_f16 v255.l, vcc_lo
+// GFX11: v_exp_f16_e64 v255.l, vcc_lo            ; encoding: [0xff,0x00,0xd8,0xd5,0x6a,0x00,0x00,0x00]
 
-v_exp_f16 v5, v199 quad_perm:[3,2,1,0]
-// GFX11: v_exp_f16_e64_dpp v5, v199 quad_perm:[3,2,1,0] row_mask:0xf bank_mask:0xf ; encoding: [0x05,0x00,0xd8,0xd5,0xfa,0x00,0x00,0x00,0xc7,0x1b,0x00,0xff]
+v_exp_f16 v5.h, v199.h
+// GFX11: v_exp_f16_e64 v5.h, v199.h op_sel:[1,1] ; encoding: [0x05,0x48,0xd8,0xd5,0xc7,0x01,0x00,0x00]
 
-v_floor_f16 v128, 0xfe0b
-// GFX11: v_floor_f16_e64 v128, 0xfe0b            ; encoding: [0x80,0x00,0xdb,0xd5,0xff,0x00,0x00,0x00,0x0b,0xfe,0x00,0x00]
+v_exp_f16 v5.h, v199.h dpp8:[7,6,5,4,3,2,1,0]
+// GFX11: v_exp_f16_e64_dpp v5.h, v199.h op_sel:[1,1] dpp8:[7,6,5,4,3,2,1,0] ; encoding: [0x05,0x48,0xd8,0xd5,0xe9,0x00,0x00,0x00,0xc7,0x77,0x39,0x05]
 
-v_floor_f16 v255, -1
-// GFX11: v_...
[truncated]

@broxigarchen broxigarchen changed the title Main merge true16 mc clean up 3 [AMDGPU][True16][MC] update mc test of a few vop1 t16 inst Apr 15, 2025
@@ -2,71 +2,137 @@
// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize32,+real-true16 -show-encoding %s | FileCheck --check-prefix=GFX11 --implicit-check-not=_e32 %s
// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64,+real-true16 -show-encoding %s | FileCheck --check-prefix=GFX11 --implicit-check-not=_e32 %s

v_ceil_f16 v128, 0xfe0b
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file and all the *_t16_promote files should have fake16 and real16 versions. The reason is, we still need this test coverage of promoting fake16 instructions to the _e64 encoding if they use registers above 127.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see. I will open a seperate patch for that

Copy link
Contributor Author

@broxigarchen broxigarchen Apr 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

opened a patch here #135984

@broxigarchen broxigarchen requested a review from Sisyph April 16, 2025 14:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:AMDGPU mc Machine (object) code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants