From 355226113d31bdbe328c930b6e6e04788bac03ad Mon Sep 17 00:00:00 2001 From: Jay Foad Date: Fri, 6 Dec 2024 14:06:03 +0000 Subject: [PATCH] [AMDGPU] New GFX11 v_cmp_tru_* aliases for integer comparisons This is for compatibility with SP3. It only affects GFX11 because the v_cmp_t_* instructions were removed in GFX12. --- llvm/lib/Target/AMDGPU/VOPCInstructions.td | 11 +++++++++++ llvm/test/MC/AMDGPU/gfx11_asm_vopc_alias.s | 14 ++++++++++++++ llvm/test/MC/AMDGPU/gfx11_asm_vopcx_alias.s | 14 ++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 llvm/test/MC/AMDGPU/gfx11_asm_vopc_alias.s create mode 100644 llvm/test/MC/AMDGPU/gfx11_asm_vopcx_alias.s diff --git a/llvm/lib/Target/AMDGPU/VOPCInstructions.td b/llvm/lib/Target/AMDGPU/VOPCInstructions.td index 0a4b51c4ac631..9bf043ea334fe 100644 --- a/llvm/lib/Target/AMDGPU/VOPCInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOPCInstructions.td @@ -1956,6 +1956,17 @@ defm V_CMPX_CLASS_F16_fake16 : VOPCX_Real_t16_gfx11_gfx12<0x0fd, "v_cmpx_class_f defm V_CMPX_CLASS_F32 : VOPCX_Real_gfx11_gfx12<0x0fe>; defm V_CMPX_CLASS_F64 : VOPCX_Real_gfx11_gfx12<0x0ff>; +let AssemblerPredicate = isGFX11Only in { + def : AMDGPUMnemonicAlias<"v_cmp_tru_i32", "v_cmp_t_i32">; + def : AMDGPUMnemonicAlias<"v_cmp_tru_u32", "v_cmp_t_u32">; + def : AMDGPUMnemonicAlias<"v_cmp_tru_i64", "v_cmp_t_i64">; + def : AMDGPUMnemonicAlias<"v_cmp_tru_u64", "v_cmp_t_u64">; + def : AMDGPUMnemonicAlias<"v_cmpx_tru_i32", "v_cmpx_t_i32">; + def : AMDGPUMnemonicAlias<"v_cmpx_tru_u32", "v_cmpx_t_u32">; + def : AMDGPUMnemonicAlias<"v_cmpx_tru_i64", "v_cmpx_t_i64">; + def : AMDGPUMnemonicAlias<"v_cmpx_tru_u64", "v_cmpx_t_u64">; +} + //===----------------------------------------------------------------------===// // GFX10. //===----------------------------------------------------------------------===// diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_vopc_alias.s b/llvm/test/MC/AMDGPU/gfx11_asm_vopc_alias.s new file mode 100644 index 0000000000000..2b95e6a948746 --- /dev/null +++ b/llvm/test/MC/AMDGPU/gfx11_asm_vopc_alias.s @@ -0,0 +1,14 @@ +// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --version 5 +// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -show-encoding %s | FileCheck -check-prefix=GFX11 %s + +v_cmp_tru_i32 vcc, v1, v2 +// GFX11: v_cmp_t_i32_e32 vcc, v1, v2 ; encoding: [0x01,0x05,0x8e,0x7c] + +v_cmp_tru_u32 vcc, v1, v2 +// GFX11: v_cmp_t_u32_e32 vcc, v1, v2 ; encoding: [0x01,0x05,0x9e,0x7c] + +v_cmp_tru_i64 vcc, v[1:2], v[2:3] +// GFX11: v_cmp_t_i64_e32 vcc, v[1:2], v[2:3] ; encoding: [0x01,0x05,0xae,0x7c] + +v_cmp_tru_u64 vcc, v[1:2], v[2:3] +// GFX11: v_cmp_t_u64_e32 vcc, v[1:2], v[2:3] ; encoding: [0x01,0x05,0xbe,0x7c] diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_vopcx_alias.s b/llvm/test/MC/AMDGPU/gfx11_asm_vopcx_alias.s new file mode 100644 index 0000000000000..636ec3c19d70f --- /dev/null +++ b/llvm/test/MC/AMDGPU/gfx11_asm_vopcx_alias.s @@ -0,0 +1,14 @@ +// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --version 5 +// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -show-encoding %s | FileCheck -check-prefix=GFX11 %s + +v_cmpx_tru_i32 v1, v2 +// GFX11: v_cmpx_t_i32_e32 v1, v2 ; encoding: [0x01,0x05,0x8e,0x7d] + +v_cmpx_tru_u32 v1, v2 +// GFX11: v_cmpx_t_u32_e32 v1, v2 ; encoding: [0x01,0x05,0x9e,0x7d] + +v_cmpx_tru_i64 v[1:2], v[2:3] +// GFX11: v_cmpx_t_i64_e32 v[1:2], v[2:3] ; encoding: [0x01,0x05,0xae,0x7d] + +v_cmpx_tru_u64 v[1:2], v[2:3] +// GFX11: v_cmpx_t_u64_e32 v[1:2], v[2:3] ; encoding: [0x01,0x05,0xbe,0x7d]