diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td index 6076ac4596655..e4e7bdce950ac 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPU.td +++ b/llvm/lib/Target/AMDGPU/AMDGPU.td @@ -2519,6 +2519,14 @@ def HasFmaakFmamkF64Insts : Predicate<"Subtarget->hasFmaakFmamkF64Insts()">, AssemblerPredicate<(any_of FeatureGFX1250Insts)>; +def HasPkAddMinMaxInsts : + Predicate<"Subtarget->hasPkAddMinMaxInsts()">, + AssemblerPredicate<(any_of FeatureGFX1250Insts)>; + +def HasPkMinMax3Insts : + Predicate<"Subtarget->hasPkMinMax3Insts()">, + AssemblerPredicate<(any_of FeatureGFX1250Insts)>; + def HasImageInsts : Predicate<"Subtarget->hasImageInsts()">, AssemblerPredicate<(all_of FeatureImageInsts)>; diff --git a/llvm/lib/Target/AMDGPU/GCNSubtarget.h b/llvm/lib/Target/AMDGPU/GCNSubtarget.h index 56851571c6c68..8b758b011f6ad 100644 --- a/llvm/lib/Target/AMDGPU/GCNSubtarget.h +++ b/llvm/lib/Target/AMDGPU/GCNSubtarget.h @@ -1500,6 +1500,12 @@ class GCNSubtarget final : public AMDGPUGenSubtargetInfo, bool hasVOPD3() const { return GFX1250Insts; } + // \returns true if the target has V_PK_ADD_{MIN|MAX}_{I|U}16 instructions. + bool hasPkAddMinMaxInsts() const { return GFX1250Insts; } + + // \returns true if the target has V_PK_{MIN|MAX}3_{I|U}16 instructions. + bool hasPkMinMax3Insts() const { return GFX1250Insts; } + // \returns true if target has S_SETPRIO_INC_WG instruction. bool hasSetPrioIncWgInst() const { return HasSetPrioIncWgInst; } diff --git a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td index 9feea361692c1..a259e5cf4bd59 100644 --- a/llvm/lib/Target/AMDGPU/VOP3PInstructions.td +++ b/llvm/lib/Target/AMDGPU/VOP3PInstructions.td @@ -353,6 +353,49 @@ defm V_FMA_MIXHI_F16 : VOP3_VOP3PInst<"v_fma_mixhi_f16", VOP3P_Mix_Profile; } +def PK_ADD_MINMAX_Profile : VOP3P_Profile { + let HasModifiers = 0; +} + +let isCommutable = 1, isReMaterializable = 1 in { +let SubtargetPredicate = HasPkAddMinMaxInsts in { +defm V_PK_ADD_MAX_I16 : VOP3PInst<"v_pk_add_max_i16", PK_ADD_MINMAX_Profile>; +defm V_PK_ADD_MAX_U16 : VOP3PInst<"v_pk_add_max_u16", PK_ADD_MINMAX_Profile>; +defm V_PK_ADD_MIN_I16 : VOP3PInst<"v_pk_add_min_i16", PK_ADD_MINMAX_Profile>; +defm V_PK_ADD_MIN_U16 : VOP3PInst<"v_pk_add_min_u16", PK_ADD_MINMAX_Profile>; +} +let SubtargetPredicate = HasPkMinMax3Insts in { +defm V_PK_MAX3_I16 : VOP3PInst<"v_pk_max3_i16", PK_ADD_MINMAX_Profile>; +defm V_PK_MAX3_U16 : VOP3PInst<"v_pk_max3_u16", PK_ADD_MINMAX_Profile>; +defm V_PK_MIN3_I16 : VOP3PInst<"v_pk_min3_i16", PK_ADD_MINMAX_Profile>; +defm V_PK_MIN3_U16 : VOP3PInst<"v_pk_min3_u16", PK_ADD_MINMAX_Profile>; +} +} // End isCommutable = 1, isReMaterializable = 1 + +// TODO: Extend pattern to select op_sel and op_sel_hi. +class ThreeOp_OpSelClampPats .ret> : GCNPat < + (ThreeOpFrag vt:$src0, vt:$src1, vt:$src2), + (inst SRCMODS.OP_SEL_1, RC:$src0, SRCMODS.OP_SEL_1, RC:$src1, + SRCMODS.OP_SEL_1, RC:$src2, DSTCLAMP.NONE, 0) +>; + +let SubtargetPredicate = HasPkAddMinMaxInsts in { +def : ThreeOp_OpSelClampPats; +def : ThreeOp_OpSelClampPats; +def : ThreeOp_OpSelClampPats; +def : ThreeOp_OpSelClampPats; +} + +let SubtargetPredicate = HasPkMinMax3Insts in { +def : ThreeOp_OpSelClampPats; +def : ThreeOp_OpSelClampPats; +def : ThreeOp_OpSelClampPats; +def : ThreeOp_OpSelClampPats; +} + // Defines patterns that extract signed 4bit from each Idx[0]. foreach Idx = [[0,28],[4,24],[8,20],[12,16],[16,12],[20,8],[24,4]] in def ExtractSigned4bit_#Idx[0] : PatFrag<(ops node:$src), @@ -2157,6 +2200,8 @@ multiclass VOP3P_Realtriple_gfx11_gfx12 op> multiclass VOP3P_Real_gfx12 op> : VOP3P_Real_Base; +multiclass VOP3P_Real_gfx1250 op> : VOP3P_Real_Base; + multiclass VOP3P_Real_with_name_gfx12 op, string backing_ps_name = NAME, string asmName = !cast(NAME).Mnemonic> : @@ -2165,6 +2210,15 @@ multiclass VOP3P_Real_with_name_gfx12 op, defm V_PK_MIN_NUM_F16 : VOP3P_Real_with_name_gfx12<0x1b, "V_PK_MIN_F16", "v_pk_min_num_f16">; defm V_PK_MAX_NUM_F16 : VOP3P_Real_with_name_gfx12<0x1c, "V_PK_MAX_F16", "v_pk_max_num_f16">; +defm V_PK_ADD_MAX_I16 : VOP3P_Real_gfx1250<0x14>; +defm V_PK_ADD_MAX_U16 : VOP3P_Real_gfx1250<0x15>; +defm V_PK_ADD_MIN_I16 : VOP3P_Real_gfx1250<0x2d>; +defm V_PK_ADD_MIN_U16 : VOP3P_Real_gfx1250<0x2e>; +defm V_PK_MAX3_I16 : VOP3P_Real_gfx1250<0x2f>; +defm V_PK_MAX3_U16 : VOP3P_Real_gfx1250<0x30>; +defm V_PK_MIN3_I16 : VOP3P_Real_gfx1250<0x31>; +defm V_PK_MIN3_U16 : VOP3P_Real_gfx1250<0x32>; + defm V_PK_MINIMUM_F16 : VOP3P_Real_gfx12<0x1d>; defm V_PK_MAXIMUM_F16 : VOP3P_Real_gfx12<0x1e>; diff --git a/llvm/test/CodeGen/AMDGPU/add-max.ll b/llvm/test/CodeGen/AMDGPU/add-max.ll new file mode 100644 index 0000000000000..b9925060aaec4 --- /dev/null +++ b/llvm/test/CodeGen/AMDGPU/add-max.ll @@ -0,0 +1,295 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3 +; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck -check-prefixes=GCN,SDAG %s +; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck -check-prefixes=GCN,GISEL %s + +define amdgpu_ps float @add_max_u32_vvv(i32 %a, i32 %b, i32 %c) { +; GCN-LABEL: add_max_u32_vvv: +; GCN: ; %bb.0: +; GCN-NEXT: v_add_nc_u32_e32 v0, v0, v1 +; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1) +; GCN-NEXT: v_max_u32_e32 v0, v0, v2 +; GCN-NEXT: ; return to shader part epilog + %add = add i32 %a, %b + %max = call i32 @llvm.umax.i32(i32 %add, i32 %c) + %ret = bitcast i32 %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_u32_svv(i32 inreg %a, i32 %b, i32 %c) { +; GCN-LABEL: add_max_u32_svv: +; GCN: ; %bb.0: +; GCN-NEXT: v_add_nc_u32_e32 v0, s0, v0 +; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1) +; GCN-NEXT: v_max_u32_e32 v0, v0, v1 +; GCN-NEXT: ; return to shader part epilog + %add = add i32 %a, %b + %max = call i32 @llvm.umax.i32(i32 %add, i32 %c) + %ret = bitcast i32 %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_u32_ssv(i32 inreg %a, i32 inreg %b, i32 %c) { +; GCN-LABEL: add_max_u32_ssv: +; GCN: ; %bb.0: +; GCN-NEXT: s_add_co_i32 s0, s0, s1 +; GCN-NEXT: s_delay_alu instid0(SALU_CYCLE_1) +; GCN-NEXT: v_max_u32_e32 v0, s0, v0 +; GCN-NEXT: ; return to shader part epilog + %add = add i32 %a, %b + %max = call i32 @llvm.umax.i32(i32 %add, i32 %c) + %ret = bitcast i32 %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_u32_sss(i32 inreg %a, i32 inreg %b, i32 inreg %c) { +; GCN-LABEL: add_max_u32_sss: +; GCN: ; %bb.0: +; GCN-NEXT: s_add_co_i32 s0, s0, s1 +; GCN-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1) +; GCN-NEXT: s_max_u32 s0, s0, s2 +; GCN-NEXT: v_mov_b32_e32 v0, s0 +; GCN-NEXT: ; return to shader part epilog + %add = add i32 %a, %b + %max = call i32 @llvm.umax.i32(i32 %add, i32 %c) + %ret = bitcast i32 %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_u32_vsi(i32 %a, i32 inreg %b) { +; GCN-LABEL: add_max_u32_vsi: +; GCN: ; %bb.0: +; GCN-NEXT: v_add_nc_u32_e32 v0, s0, v0 +; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1) +; GCN-NEXT: v_max_u32_e32 v0, 4, v0 +; GCN-NEXT: ; return to shader part epilog + %add = add i32 %a, %b + %max = call i32 @llvm.umax.i32(i32 %add, i32 4) + %ret = bitcast i32 %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_u32_svl(i32 inreg %a, i32 %b) { +; GCN-LABEL: add_max_u32_svl: +; GCN: ; %bb.0: +; GCN-NEXT: v_add_nc_u32_e32 v0, s0, v0 +; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1) +; GCN-NEXT: v_max_u32_e32 v0, 0x64, v0 +; GCN-NEXT: ; return to shader part epilog + %add = add i32 %a, %b + %max = call i32 @llvm.umax.i32(i32 %add, i32 100) + %ret = bitcast i32 %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_u32_slv(i32 inreg %a, i32 %b) { +; GCN-LABEL: add_max_u32_slv: +; GCN: ; %bb.0: +; GCN-NEXT: s_addk_co_i32 s0, 0x64 +; GCN-NEXT: s_delay_alu instid0(SALU_CYCLE_1) +; GCN-NEXT: v_max_u32_e32 v0, s0, v0 +; GCN-NEXT: ; return to shader part epilog + %add = add i32 %a, 100 + %max = call i32 @llvm.umax.i32(i32 %add, i32 %b) + %ret = bitcast i32 %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_i32_vvv(i32 %a, i32 %b, i32 %c) { +; GCN-LABEL: add_max_i32_vvv: +; GCN: ; %bb.0: +; GCN-NEXT: v_add_nc_u32_e32 v0, v0, v1 +; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1) +; GCN-NEXT: v_max_i32_e32 v0, v0, v2 +; GCN-NEXT: ; return to shader part epilog + %add = add i32 %a, %b + %max = call i32 @llvm.smax.i32(i32 %add, i32 %c) + %ret = bitcast i32 %max to float + ret float %ret +} + +define amdgpu_ps float @add_min_u32_vvv(i32 %a, i32 %b, i32 %c) { +; GCN-LABEL: add_min_u32_vvv: +; GCN: ; %bb.0: +; GCN-NEXT: v_add_nc_u32_e32 v0, v0, v1 +; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1) +; GCN-NEXT: v_min_u32_e32 v0, v0, v2 +; GCN-NEXT: ; return to shader part epilog + %add = add i32 %a, %b + %max = call i32 @llvm.umin.i32(i32 %add, i32 %c) + %ret = bitcast i32 %max to float + ret float %ret +} + +define amdgpu_ps float @add_min_i32_vvv(i32 %a, i32 %b, i32 %c) { +; GCN-LABEL: add_min_i32_vvv: +; GCN: ; %bb.0: +; GCN-NEXT: v_add_nc_u32_e32 v0, v0, v1 +; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1) +; GCN-NEXT: v_min_i32_e32 v0, v0, v2 +; GCN-NEXT: ; return to shader part epilog + %add = add i32 %a, %b + %max = call i32 @llvm.smin.i32(i32 %add, i32 %c) + %ret = bitcast i32 %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_v2u16_vvv(<2 x i16> %a, <2 x i16> %b, <2 x i16> %c) { +; GCN-LABEL: add_max_v2u16_vvv: +; GCN: ; %bb.0: +; GCN-NEXT: v_pk_add_max_u16 v0, v0, v1, v2 +; GCN-NEXT: ; return to shader part epilog + %add = add <2 x i16> %a, %b + %max = call <2 x i16> @llvm.umax.v216(<2 x i16> %add, <2 x i16> %c) + %ret = bitcast <2 x i16> %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_v2u16_svv(<2 x i16> inreg %a, <2 x i16> %b, <2 x i16> %c) { +; GCN-LABEL: add_max_v2u16_svv: +; GCN: ; %bb.0: +; GCN-NEXT: v_pk_add_max_u16 v0, s0, v0, v1 +; GCN-NEXT: ; return to shader part epilog + %add = add <2 x i16> %a, %b + %max = call <2 x i16> @llvm.umax.v216(<2 x i16> %add, <2 x i16> %c) + %ret = bitcast <2 x i16> %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_v2u16_ssv(<2 x i16> inreg %a, <2 x i16> inreg %b, <2 x i16> %c) { +; SDAG-LABEL: add_max_v2u16_ssv: +; SDAG: ; %bb.0: +; SDAG-NEXT: v_pk_add_max_u16 v0, s0, s1, v0 +; SDAG-NEXT: ; return to shader part epilog +; +; GISEL-LABEL: add_max_v2u16_ssv: +; GISEL: ; %bb.0: +; GISEL-NEXT: s_lshr_b32 s2, s0, 16 +; GISEL-NEXT: s_lshr_b32 s3, s1, 16 +; GISEL-NEXT: s_add_co_i32 s0, s0, s1 +; GISEL-NEXT: s_add_co_i32 s2, s2, s3 +; GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1) +; GISEL-NEXT: s_pack_ll_b32_b16 s0, s0, s2 +; GISEL-NEXT: v_pk_max_u16 v0, s0, v0 +; GISEL-NEXT: ; return to shader part epilog + %add = add <2 x i16> %a, %b + %max = call <2 x i16> @llvm.umax.v216(<2 x i16> %add, <2 x i16> %c) + %ret = bitcast <2 x i16> %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_v2u16_sss(<2 x i16> inreg %a, <2 x i16> inreg %b, <2 x i16> inreg %c) { +; SDAG-LABEL: add_max_v2u16_sss: +; SDAG: ; %bb.0: +; SDAG-NEXT: v_pk_add_u16 v0, s0, s1 +; SDAG-NEXT: s_delay_alu instid0(VALU_DEP_1) +; SDAG-NEXT: v_pk_max_u16 v0, v0, s2 +; SDAG-NEXT: ; return to shader part epilog +; +; GISEL-LABEL: add_max_v2u16_sss: +; GISEL: ; %bb.0: +; GISEL-NEXT: s_lshr_b32 s3, s0, 16 +; GISEL-NEXT: s_lshr_b32 s4, s1, 16 +; GISEL-NEXT: s_add_co_i32 s0, s0, s1 +; GISEL-NEXT: s_add_co_i32 s3, s3, s4 +; GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1) +; GISEL-NEXT: s_pack_ll_b32_b16 s0, s0, s3 +; GISEL-NEXT: s_and_b32 s3, s2, 0xffff +; GISEL-NEXT: s_lshr_b32 s1, s0, 16 +; GISEL-NEXT: s_and_b32 s0, s0, 0xffff +; GISEL-NEXT: s_lshr_b32 s2, s2, 16 +; GISEL-NEXT: s_max_u32 s0, s0, s3 +; GISEL-NEXT: s_max_u32 s1, s1, s2 +; GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1) +; GISEL-NEXT: s_pack_ll_b32_b16 s0, s0, s1 +; GISEL-NEXT: v_mov_b32_e32 v0, s0 +; GISEL-NEXT: ; return to shader part epilog + %add = add <2 x i16> %a, %b + %max = call <2 x i16> @llvm.umax.v216(<2 x i16> %add, <2 x i16> %c) + %ret = bitcast <2 x i16> %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_v2u16_vsi(<2 x i16> %a, <2 x i16> inreg %b) { +; GCN-LABEL: add_max_v2u16_vsi: +; GCN: ; %bb.0: +; GCN-NEXT: v_pk_add_max_u16 v0, v0, s0, 4 +; GCN-NEXT: ; return to shader part epilog + %add = add <2 x i16> %a, %b + %max = call <2 x i16> @llvm.umax.v216(<2 x i16> %add, <2 x i16> ) + %ret = bitcast <2 x i16> %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_v2u16_svl(<2 x i16> inreg %a, <2 x i16> %b) { +; GCN-LABEL: add_max_v2u16_svl: +; GCN: ; %bb.0: +; GCN-NEXT: v_pk_add_max_u16 v0, s0, v0, 0x650064 +; GCN-NEXT: ; return to shader part epilog + %add = add <2 x i16> %a, %b + %max = call <2 x i16> @llvm.umax.v216(<2 x i16> %add, <2 x i16> ) + %ret = bitcast <2 x i16> %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_v2u16_slv(<2 x i16> inreg %a, <2 x i16> %b) { +; SDAG-LABEL: add_max_v2u16_slv: +; SDAG: ; %bb.0: +; SDAG-NEXT: v_pk_add_max_u16 v0, 0x640064, s0, v0 +; SDAG-NEXT: ; return to shader part epilog +; +; GISEL-LABEL: add_max_v2u16_slv: +; GISEL: ; %bb.0: +; GISEL-NEXT: s_lshr_b32 s1, s0, 16 +; GISEL-NEXT: s_add_co_i32 s0, s0, 0x640064 +; GISEL-NEXT: s_addk_co_i32 s1, 0x64 +; GISEL-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1) +; GISEL-NEXT: s_pack_ll_b32_b16 s0, s0, s1 +; GISEL-NEXT: v_pk_max_u16 v0, s0, v0 +; GISEL-NEXT: ; return to shader part epilog + %add = add <2 x i16> %a, + %max = call <2 x i16> @llvm.umax.v216(<2 x i16> %add, <2 x i16> %b) + %ret = bitcast <2 x i16> %max to float + ret float %ret +} + +define amdgpu_ps float @add_max_v2s16_vvv(<2 x i16> %a, <2 x i16> %b, <2 x i16> %c) { +; GCN-LABEL: add_max_v2s16_vvv: +; GCN: ; %bb.0: +; GCN-NEXT: v_pk_add_max_i16 v0, v0, v1, v2 +; GCN-NEXT: ; return to shader part epilog + %add = add <2 x i16> %a, %b + %max = call <2 x i16> @llvm.smax.v216(<2 x i16> %add, <2 x i16> %c) + %ret = bitcast <2 x i16> %max to float + ret float %ret +} + +define amdgpu_ps float @add_min_v2u16_vvv(<2 x i16> %a, <2 x i16> %b, <2 x i16> %c) { +; GCN-LABEL: add_min_v2u16_vvv: +; GCN: ; %bb.0: +; GCN-NEXT: v_pk_add_min_u16 v0, v0, v1, v2 +; GCN-NEXT: ; return to shader part epilog + %add = add <2 x i16> %a, %b + %max = call <2 x i16> @llvm.umin.v216(<2 x i16> %add, <2 x i16> %c) + %ret = bitcast <2 x i16> %max to float + ret float %ret +} + +define amdgpu_ps float @add_min_v2s16_vvv(<2 x i16> %a, <2 x i16> %b, <2 x i16> %c) { +; GCN-LABEL: add_min_v2s16_vvv: +; GCN: ; %bb.0: +; GCN-NEXT: v_pk_add_min_i16 v0, v0, v1, v2 +; GCN-NEXT: ; return to shader part epilog + %add = add <2 x i16> %a, %b + %max = call <2 x i16> @llvm.smin.v216(<2 x i16> %add, <2 x i16> %c) + %ret = bitcast <2 x i16> %max to float + ret float %ret +} + +declare <2 x i16> @llvm.smin.v216(<2 x i16>, <2 x i16>) +declare <2 x i16> @llvm.smax.v216(<2 x i16>, <2 x i16>) +declare <2 x i16> @llvm.umin.v216(<2 x i16>, <2 x i16>) +declare <2 x i16> @llvm.umax.v216(<2 x i16>, <2 x i16>) +declare i32 @llvm.smin.i32(i32, i32) +declare i32 @llvm.smax.i32(i32, i32) +declare i32 @llvm.umin.i32(i32, i32) +declare i32 @llvm.umax.i32(i32, i32) diff --git a/llvm/test/CodeGen/AMDGPU/max3.ll b/llvm/test/CodeGen/AMDGPU/max3.ll index a757bb068cf8d..b922854b9c52a 100644 --- a/llvm/test/CodeGen/AMDGPU/max3.ll +++ b/llvm/test/CodeGen/AMDGPU/max3.ll @@ -1,6 +1,7 @@ ; RUN: llc -mtriple=amdgcn < %s | FileCheck -check-prefixes=GCN,SI %s ; RUN: llc -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefixes=GCN,VI %s -; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9 %s +; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9,GFX9_1250 %s +; RUN: llc -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck -check-prefixes=GCN,GFX1250,GFX9_1250 %s ; GCN-LABEL: {{^}}v_test_imax3_sgt_i32: ; GCN: v_max3_i32 @@ -46,7 +47,7 @@ define amdgpu_kernel void @v_test_umax3_ugt_i32(ptr addrspace(1) %out, ptr addrs ; VI: v_max_i16 ; VI: v_max_i16 -; GFX9: v_max3_i16 +; GFX9_1250: v_max3_i16 define amdgpu_kernel void @v_test_imax3_sgt_i16(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i16, ptr addrspace(1) %aptr, i32 %tid @@ -70,7 +71,7 @@ define amdgpu_kernel void @v_test_imax3_sgt_i16(ptr addrspace(1) %out, ptr addrs ; VI: v_max_u16 ; VI: v_max_u16 -; GFX9: v_max3_u16 +; GFX9_1250: v_max3_u16 define amdgpu_kernel void @v_test_umax3_ugt_i16(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i16, ptr addrspace(1) %aptr, i32 %tid @@ -94,7 +95,7 @@ define amdgpu_kernel void @v_test_umax3_ugt_i16(ptr addrspace(1) %out, ptr addrs ; VI: v_max_i16 ; VI: v_max_i16 -; GFX9: v_max3_i16 +; GFX9_1250: v_max3_i16 define amdgpu_kernel void @v_test_imax3_sgt_i8(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i8, ptr addrspace(1) %aptr, i32 %tid @@ -118,7 +119,7 @@ define amdgpu_kernel void @v_test_imax3_sgt_i8(ptr addrspace(1) %out, ptr addrsp ; VI: v_max_u16 ; VI: v_max_u16 -; GFX9: v_max3_u16 +; GFX9_1250: v_max3_u16 define amdgpu_kernel void @v_test_umax3_ugt_i8(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i8, ptr addrspace(1) %aptr, i32 %tid @@ -142,7 +143,7 @@ define amdgpu_kernel void @v_test_umax3_ugt_i8(ptr addrspace(1) %out, ptr addrsp ; VI: v_max_i16 ; VI: v_max_i16 -; GFX9: v_max3_i16 +; GFX9_1250: v_max3_i16 define amdgpu_kernel void @v_test_imax3_sgt_i7(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i7, ptr addrspace(1) %aptr, i32 %tid @@ -166,7 +167,7 @@ define amdgpu_kernel void @v_test_imax3_sgt_i7(ptr addrspace(1) %out, ptr addrsp ; VI: v_max_u16 ; VI: v_max_u16 -; GFX9: v_max3_u16 +; GFX9_1250: v_max3_u16 define amdgpu_kernel void @v_test_umax3_ugt_i7(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i7, ptr addrspace(1) %aptr, i32 %tid @@ -260,6 +261,50 @@ define amdgpu_kernel void @v_test_umax3_ugt_i64(ptr addrspace(1) %out, ptr addrs ret void } +; GCN-LABEL: {{^}}v_test_imax3_sgt_v2i16: +; SI-COUNT-2: v_max3_i32 +; VI-COUNT-2: v_max_i16 +; GFX9-COUNT-2: v_pk_max_i16 +; GFX1250: v_pk_max3_i16 +define amdgpu_kernel void @v_test_imax3_sgt_v2i16(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { + %tid = call i32 @llvm.amdgcn.workitem.id.x() + %gep0 = getelementptr <2 x i16>, ptr addrspace(1) %aptr, i32 %tid + %gep1 = getelementptr <2 x i16>, ptr addrspace(1) %bptr, i32 %tid + %gep2 = getelementptr <2 x i16>, ptr addrspace(1) %cptr, i32 %tid + %outgep = getelementptr <2 x i16>, ptr addrspace(1) %out, i32 %tid + %a = load <2 x i16>, ptr addrspace(1) %gep0 + %b = load <2 x i16>, ptr addrspace(1) %gep1 + %c = load <2 x i16>, ptr addrspace(1) %gep2 + %icmp0 = icmp sgt <2 x i16> %a, %b + %i0 = select <2 x i1> %icmp0, <2 x i16> %a, <2 x i16> %b + %icmp1 = icmp sgt <2 x i16> %i0, %c + %i1 = select <2 x i1> %icmp1, <2 x i16> %i0, <2 x i16> %c + store <2 x i16> %i1, ptr addrspace(1) %out + ret void +} + +; GCN-LABEL: {{^}}v_test_imax3_ugt_v2i16: +; SI-COUNT-2: v_max3_u32 +; VI-COUNT-2: v_max_u16 +; GFX9-COUNT-2: v_pk_max_u16 +; GFX1250: v_pk_max3_u16 +define amdgpu_kernel void @v_test_imax3_ugt_v2i16(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { + %tid = call i32 @llvm.amdgcn.workitem.id.x() + %gep0 = getelementptr <2 x i16>, ptr addrspace(1) %aptr, i32 %tid + %gep1 = getelementptr <2 x i16>, ptr addrspace(1) %bptr, i32 %tid + %gep2 = getelementptr <2 x i16>, ptr addrspace(1) %cptr, i32 %tid + %outgep = getelementptr <2 x i16>, ptr addrspace(1) %out, i32 %tid + %a = load <2 x i16>, ptr addrspace(1) %gep0 + %b = load <2 x i16>, ptr addrspace(1) %gep1 + %c = load <2 x i16>, ptr addrspace(1) %gep2 + %icmp0 = icmp ugt <2 x i16> %a, %b + %i0 = select <2 x i1> %icmp0, <2 x i16> %a, <2 x i16> %b + %icmp1 = icmp ugt <2 x i16> %i0, %c + %i1 = select <2 x i1> %icmp1, <2 x i16> %i0, <2 x i16> %c + store <2 x i16> %i1, ptr addrspace(1) %out + ret void +} + declare i32 @llvm.amdgcn.workitem.id.x() #1 attributes #0 = { nounwind } diff --git a/llvm/test/CodeGen/AMDGPU/min3.ll b/llvm/test/CodeGen/AMDGPU/min3.ll index 0e25540f5dd2e..e30b929ed9a94 100644 --- a/llvm/test/CodeGen/AMDGPU/min3.ll +++ b/llvm/test/CodeGen/AMDGPU/min3.ll @@ -1,6 +1,7 @@ ; RUN: llc -mtriple=amdgcn < %s | FileCheck -check-prefixes=GCN,SI %s ; RUN: llc -mtriple=amdgcn -mcpu=tonga < %s | FileCheck -check-prefixes=GCN,VI %s -; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9 %s +; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9,GFX9_1250 %s +; RUN: llc -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck -check-prefixes=GCN,GFX1250,GFX9_1250 %s ; GCN-LABEL: {{^}}v_test_imin3_slt_i32: ; GCN: v_min3_i32 @@ -116,7 +117,7 @@ define amdgpu_kernel void @v_test_umin3_2_uses(ptr addrspace(1) %out, ptr addrsp ; VI: v_min_i16 ; VI: v_min_i16 -; GFX9: v_min3_i16 +; GFX9_1250: v_min3_i16 define amdgpu_kernel void @v_test_imin3_slt_i16(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i16, ptr addrspace(1) %aptr, i32 %tid @@ -140,7 +141,7 @@ define amdgpu_kernel void @v_test_imin3_slt_i16(ptr addrspace(1) %out, ptr addrs ; VI: v_min_u16 ; VI: v_min_u16 -; GFX9: v_min3_u16 +; GFX9_1250: v_min3_u16 define amdgpu_kernel void @v_test_umin3_ult_i16(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i16, ptr addrspace(1) %aptr, i32 %tid @@ -164,7 +165,7 @@ define amdgpu_kernel void @v_test_umin3_ult_i16(ptr addrspace(1) %out, ptr addrs ; VI: v_min_i16 ; VI: v_min_i16 -; GFX9: v_min3_i16 +; GFX9_1250: v_min3_i16 define amdgpu_kernel void @v_test_imin3_slt_i8(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i8, ptr addrspace(1) %aptr, i32 %tid @@ -188,7 +189,7 @@ define amdgpu_kernel void @v_test_imin3_slt_i8(ptr addrspace(1) %out, ptr addrsp ; VI: v_min_u16 ; VI: v_min_u16 -; GFX9: v_min3_u16 +; GFX9_1250: v_min3_u16 define amdgpu_kernel void @v_test_umin3_ult_i8(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i8, ptr addrspace(1) %aptr, i32 %tid @@ -212,7 +213,7 @@ define amdgpu_kernel void @v_test_umin3_ult_i8(ptr addrspace(1) %out, ptr addrsp ; VI: v_min_i16 ; VI: v_min_i16 -; GFX9: v_min3_i16 +; GFX9_1250: v_min3_i16 define amdgpu_kernel void @v_test_imin3_slt_i7(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i7, ptr addrspace(1) %aptr, i32 %tid @@ -236,7 +237,7 @@ define amdgpu_kernel void @v_test_imin3_slt_i7(ptr addrspace(1) %out, ptr addrsp ; VI: v_min_u16 ; VI: v_min_u16 -; GFX9: v_min3_u16 +; GFX9_1250: v_min3_u16 define amdgpu_kernel void @v_test_umin3_ult_i7(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { %tid = call i32 @llvm.amdgcn.workitem.id.x() %gep0 = getelementptr i7, ptr addrspace(1) %aptr, i32 %tid @@ -330,6 +331,50 @@ define amdgpu_kernel void @v_test_umin3_ult_i64(ptr addrspace(1) %out, ptr addrs ret void } +; GCN-LABEL: {{^}}v_test_imin3_slt_v2i16: +; SI-COUNT-2: v_min3_i32 +; VI-COUNT-2: v_min_i16 +; GFX9-COUNT-2: v_pk_min_i16 +; GFX1250: v_pk_min3_i16 +define amdgpu_kernel void @v_test_imin3_slt_v2i16(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { + %tid = call i32 @llvm.amdgcn.workitem.id.x() + %gep0 = getelementptr i32, ptr addrspace(1) %aptr, i32 %tid + %gep1 = getelementptr i32, ptr addrspace(1) %bptr, i32 %tid + %gep2 = getelementptr i32, ptr addrspace(1) %cptr, i32 %tid + %outgep = getelementptr <2 x i16>, ptr addrspace(1) %out, i32 %tid + %a = load <2 x i16>, ptr addrspace(1) %gep0 + %b = load <2 x i16>, ptr addrspace(1) %gep1 + %c = load <2 x i16>, ptr addrspace(1) %gep2 + %icmp0 = icmp slt <2 x i16> %a, %b + %i0 = select <2 x i1> %icmp0, <2 x i16> %a, <2 x i16> %b + %icmp1 = icmp slt <2 x i16> %i0, %c + %i1 = select <2 x i1> %icmp1, <2 x i16> %i0, <2 x i16> %c + store <2 x i16> %i1, ptr addrspace(1) %outgep + ret void +} + +; GCN-LABEL: {{^}}v_test_imin3_ult_v2i16: +; SI-COUNT-2: v_min3_u32 +; VI-COUNT-2: v_min_u16 +; GFX9-COUNT-2: v_pk_min_u16 +; GFX1250: v_pk_min3_u16 +define amdgpu_kernel void @v_test_imin3_ult_v2i16(ptr addrspace(1) %out, ptr addrspace(1) %aptr, ptr addrspace(1) %bptr, ptr addrspace(1) %cptr) #0 { + %tid = call i32 @llvm.amdgcn.workitem.id.x() + %gep0 = getelementptr i32, ptr addrspace(1) %aptr, i32 %tid + %gep1 = getelementptr i32, ptr addrspace(1) %bptr, i32 %tid + %gep2 = getelementptr i32, ptr addrspace(1) %cptr, i32 %tid + %outgep = getelementptr <2 x i16>, ptr addrspace(1) %out, i32 %tid + %a = load <2 x i16>, ptr addrspace(1) %gep0 + %b = load <2 x i16>, ptr addrspace(1) %gep1 + %c = load <2 x i16>, ptr addrspace(1) %gep2 + %icmp0 = icmp ult <2 x i16> %a, %b + %i0 = select <2 x i1> %icmp0, <2 x i16> %a, <2 x i16> %b + %icmp1 = icmp ult <2 x i16> %i0, %c + %i1 = select <2 x i1> %icmp1, <2 x i16> %i0, <2 x i16> %c + store <2 x i16> %i1, ptr addrspace(1) %outgep + ret void +} + declare i32 @llvm.amdgcn.workitem.id.x() #1 attributes #0 = { nounwind } diff --git a/llvm/test/MC/AMDGPU/gfx1250_asm_vop3p.s b/llvm/test/MC/AMDGPU/gfx1250_asm_vop3p.s new file mode 100644 index 0000000000000..69d46a69941a5 --- /dev/null +++ b/llvm/test/MC/AMDGPU/gfx1250_asm_vop3p.s @@ -0,0 +1,483 @@ +// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --version 5 +// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1250 -show-encoding < %s | FileCheck --check-prefix=GFX1250 %s +// RUN: not llvm-mc -triple=amdgcn -mcpu=gfx1200 -show-encoding %s 2>&1 | FileCheck --check-prefix=GFX12-ERR --implicit-check-not=error: --strict-whitespace %s + +v_pk_add_min_i16 v10, v1, v2, v3 +// GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x2d,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, s1, v2, v3 +// GFX1250: v_pk_add_min_i16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x2d,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, s1, v2, v3 clamp +// GFX1250: v_pk_add_min_i16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x2d,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, 100, v2, v3 +// GFX1250: v_pk_add_min_i16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x2d,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, 100, 100, v3 +// GFX1250: v_pk_add_min_i16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x2d,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, 100, 100, 100 +// GFX1250: v_pk_add_min_i16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2d,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, v1, 100, 100 +// GFX1250: v_pk_add_min_i16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2d,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, v1, v2, 100 +// GFX1250: v_pk_add_min_i16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x2d,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[0,1,0] +// GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x2d,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[0,1,1] +// GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x2d,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[1,0,0] +// GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x2d,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] +// GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x2d,0xcc,0x01,0x05,0x0e,0x0c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] +// GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x2d,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] +// GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x2d,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_i16 v10, s1, 100, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp +// GFX1250: v_pk_add_min_i16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x2d,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, v1, v2, v3 +// GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x14,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, s1, v2, v3 +// GFX1250: v_pk_add_max_i16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x14,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, s1, v2, v3 clamp +// GFX1250: v_pk_add_max_i16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x14,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, 100, v2, v3 +// GFX1250: v_pk_add_max_i16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x14,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, 100, 100, v3 +// GFX1250: v_pk_add_max_i16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x14,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, 100, 100, 100 +// GFX1250: v_pk_add_max_i16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x14,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, v1, 100, 100 +// GFX1250: v_pk_add_max_i16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x14,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, v1, v2, 100 +// GFX1250: v_pk_add_max_i16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x14,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[0,1,0] +// GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x14,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[0,1,1] +// GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x14,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[1,0,0] +// GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x14,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] +// GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x14,0xcc,0x01,0x05,0x0e,0x0c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] +// GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x14,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] +// GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x14,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_i16 v10, s1, 100, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp +// GFX1250: v_pk_add_max_i16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x14,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, v1, v2, v3 +// GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x2e,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, s1, v2, v3 +// GFX1250: v_pk_add_min_u16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x2e,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, s1, v2, v3 clamp +// GFX1250: v_pk_add_min_u16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x2e,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, 100, v2, v3 +// GFX1250: v_pk_add_min_u16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x2e,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, 100, 100, v3 +// GFX1250: v_pk_add_min_u16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x2e,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, 100, 100, 100 +// GFX1250: v_pk_add_min_u16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2e,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, v1, 100, 100 +// GFX1250: v_pk_add_min_u16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2e,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, v1, v2, 100 +// GFX1250: v_pk_add_min_u16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x2e,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[0,1,0] +// GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x2e,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[0,1,1] +// GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x2e,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[1,0,0] +// GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x2e,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] +// GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x2e,0xcc,0x01,0x05,0x0e,0x0c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] +// GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x2e,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] +// GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x2e,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_min_u16 v10, s1, 100, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp +// GFX1250: v_pk_add_min_u16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x2e,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, v1, v2, v3 +// GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x15,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, s1, v2, v3 +// GFX1250: v_pk_add_max_u16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x15,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, s1, v2, v3 clamp +// GFX1250: v_pk_add_max_u16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x15,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, 100, v2, v3 +// GFX1250: v_pk_add_max_u16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x15,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, 100, 100, v3 +// GFX1250: v_pk_add_max_u16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x15,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, 100, 100, 100 +// GFX1250: v_pk_add_max_u16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x15,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, v1, 100, 100 +// GFX1250: v_pk_add_max_u16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x15,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, v1, v2, 100 +// GFX1250: v_pk_add_max_u16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x15,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[0,1,0] +// GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x15,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[0,1,1] +// GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x15,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[1,0,0] +// GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x15,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] +// GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x15,0xcc,0x01,0x05,0x0e,0x0c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] +// GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x15,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] +// GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x15,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_add_max_u16 v10, s1, 100, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp +// GFX1250: v_pk_add_max_u16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x15,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, v1, v2, v3 +// GFX1250: v_pk_min3_i16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x31,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, s1, v2, v3 +// GFX1250: v_pk_min3_i16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x31,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, s1, v2, v3 clamp +// GFX1250: v_pk_min3_i16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x31,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, 100, v2, v3 +// GFX1250: v_pk_min3_i16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x31,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, 100, 100, v3 +// GFX1250: v_pk_min3_i16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x31,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, 100, 100, 100 +// GFX1250: v_pk_min3_i16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x31,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, v1, 100, 100 +// GFX1250: v_pk_min3_i16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x31,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, v1, v2, 100 +// GFX1250: v_pk_min3_i16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x31,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, v1, v2, v3 op_sel:[0,1,0] +// GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x31,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, v1, v2, v3 op_sel:[0,1,1] +// GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x31,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, v1, v2, v3 op_sel:[1,0,0] +// GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x31,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] +// GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x31,0xcc,0x01,0x05,0x0e,0x0c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] +// GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x31,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] +// GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x31,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_i16 v10, s1, 100, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp +// GFX1250: v_pk_min3_i16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x31,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, v1, v2, v3 +// GFX1250: v_pk_max3_i16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x2f,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, s1, v2, v3 +// GFX1250: v_pk_max3_i16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x2f,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, s1, v2, v3 clamp +// GFX1250: v_pk_max3_i16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x2f,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, 100, v2, v3 +// GFX1250: v_pk_max3_i16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x2f,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, 100, 100, v3 +// GFX1250: v_pk_max3_i16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x2f,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, 100, 100, 100 +// GFX1250: v_pk_max3_i16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2f,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, v1, 100, 100 +// GFX1250: v_pk_max3_i16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2f,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, v1, v2, 100 +// GFX1250: v_pk_max3_i16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x2f,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, v1, v2, v3 op_sel:[0,1,0] +// GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x2f,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, v1, v2, v3 op_sel:[0,1,1] +// GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x2f,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, v1, v2, v3 op_sel:[1,0,0] +// GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x2f,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] +// GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x2f,0xcc,0x01,0x05,0x0e,0x0c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] +// GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x2f,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] +// GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x2f,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_i16 v10, s1, 100, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp +// GFX1250: v_pk_max3_i16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x2f,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, v1, v2, v3 +// GFX1250: v_pk_min3_u16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x32,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, s1, v2, v3 +// GFX1250: v_pk_min3_u16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x32,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, s1, v2, v3 clamp +// GFX1250: v_pk_min3_u16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x32,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, 100, v2, v3 +// GFX1250: v_pk_min3_u16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x32,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, 100, 100, v3 +// GFX1250: v_pk_min3_u16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x32,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, 100, 100, 100 +// GFX1250: v_pk_min3_u16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x32,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, v1, 100, 100 +// GFX1250: v_pk_min3_u16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x32,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, v1, v2, 100 +// GFX1250: v_pk_min3_u16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x32,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, v1, v2, v3 op_sel:[0,1,0] +// GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x32,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, v1, v2, v3 op_sel:[0,1,1] +// GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x32,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, v1, v2, v3 op_sel:[1,0,0] +// GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x32,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] +// GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x32,0xcc,0x01,0x05,0x0e,0x0c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] +// GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x32,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] +// GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x32,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_min3_u16 v10, s1, 100, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp +// GFX1250: v_pk_min3_u16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x32,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, v1, v2, v3 +// GFX1250: v_pk_max3_u16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x30,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, s1, v2, v3 +// GFX1250: v_pk_max3_u16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x30,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, s1, v2, v3 clamp +// GFX1250: v_pk_max3_u16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x30,0xcc,0x01,0x04,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, 100, v2, v3 +// GFX1250: v_pk_max3_u16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x30,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, 100, 100, v3 +// GFX1250: v_pk_max3_u16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x30,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, 100, 100, 100 +// GFX1250: v_pk_max3_u16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x30,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, v1, 100, 100 +// GFX1250: v_pk_max3_u16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x30,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, v1, v2, 100 +// GFX1250: v_pk_max3_u16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x30,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, v1, v2, v3 op_sel:[0,1,0] +// GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x30,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, v1, v2, v3 op_sel:[0,1,1] +// GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x30,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, v1, v2, v3 op_sel:[1,0,0] +// GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x30,0xcc,0x01,0x05,0x0e,0x1c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] +// GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x30,0xcc,0x01,0x05,0x0e,0x0c] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] +// GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x30,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] +// GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x30,0xcc,0x01,0x05,0x0e,0x14] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU + +v_pk_max3_u16 v10, s1, 100, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp +// GFX1250: v_pk_max3_u16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x30,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +// GFX12-ERR: :[[@LINE-2]]:1: error: instruction not supported on this GPU diff --git a/llvm/test/MC/AMDGPU/gfx1250_err.s b/llvm/test/MC/AMDGPU/gfx1250_err.s index e04c6aa930150..e4598fe91a00b 100644 --- a/llvm/test/MC/AMDGPU/gfx1250_err.s +++ b/llvm/test/MC/AMDGPU/gfx1250_err.s @@ -136,3 +136,23 @@ v_fmaak_f64 v[4:5], 0x7e8, v[8:9], lit64(0x7e8) // GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: only one unique literal operand is allowed // GFX1250-ERR: v_fmaak_f64 v[4:5], 0x7e8, v[8:9], lit64(0x7e8) // GFX1250-ERR: ^ + +v_pk_add_min_i16 v10, -v1, v2, v3 +// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX1250-ERR: v_pk_add_min_i16 v10, -v1, v2, v3 +// GFX1250-ERR: ^ + +v_pk_add_min_i16 v10, sext(v1), v2, v3 +// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX1250-ERR: v_pk_add_min_i16 v10, sext(v1), v2, v3 +// GFX1250-ERR: ^ + +v_pk_add_min_i16 v10, v1, v2, v3 neg_lo:[1,0,0] +// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX1250-ERR: v_pk_add_min_i16 v10, v1, v2, v3 neg_lo:[1,0,0] +// GFX1250-ERR: ^ + +v_pk_add_min_i16 v10, v1, v2, v3 neg_hi:[1,0,0] +// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: not a valid operand. +// GFX1250-ERR: v_pk_add_min_i16 v10, v1, v2, v3 neg_hi:[1,0,0] +// GFX1250-ERR: ^ diff --git a/llvm/test/MC/Disassembler/AMDGPU/gfx1250_dasm_vop3p.txt b/llvm/test/MC/Disassembler/AMDGPU/gfx1250_dasm_vop3p.txt new file mode 100644 index 0000000000000..ae3140dd843cb --- /dev/null +++ b/llvm/test/MC/Disassembler/AMDGPU/gfx1250_dasm_vop3p.txt @@ -0,0 +1,361 @@ +# RUN: llvm-mc -triple=amdgcn -mcpu=gfx1250 -disassemble -show-encoding < %s | FileCheck -check-prefixes=GFX1250 %s + +# GFX1250: v_pk_add_min_i16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2d,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2d,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_i16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x2d,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2d,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_i16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x2d,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2d,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_i16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x2d,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +0x0a,0xc8,0x2d,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_i16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x2d,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0x40,0x2d,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_add_min_i16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x2d,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0xc0,0x2d,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_add_min_i16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2d,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2d,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_i16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x2d,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2d,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x2d,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x40,0x2d,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x2d,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x50,0x2d,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x2d,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x70,0x2d,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x2d,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x48,0x2d,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x2d,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x48,0x2d,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x2d,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x40,0x2d,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_add_min_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x2d,0xcc,0x01,0x05,0x0e,0x0c] +0x0a,0x00,0x2d,0xcc,0x01,0x05,0x0e,0x0c + +# GFX1250: v_pk_add_max_i16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x14,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x14,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_i16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x14,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x14,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_i16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x14,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x14,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_i16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x14,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +0x0a,0xc8,0x14,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_i16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x14,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0x40,0x14,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_add_max_i16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x14,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0xc0,0x14,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_add_max_i16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x14,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x14,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_i16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x14,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x14,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x14,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x40,0x14,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x14,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x50,0x14,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x14,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x70,0x14,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x14,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x48,0x14,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x14,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x48,0x14,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x14,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x40,0x14,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_add_max_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x14,0xcc,0x01,0x05,0x0e,0x0c] +0x0a,0x00,0x14,0xcc,0x01,0x05,0x0e,0x0c + +# GFX1250: v_pk_add_min_u16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2e,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2e,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_u16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x2e,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2e,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_u16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x2e,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2e,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_u16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x2e,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +0x0a,0xc8,0x2e,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_u16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x2e,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0x40,0x2e,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_add_min_u16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x2e,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0xc0,0x2e,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_add_min_u16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2e,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2e,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_u16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x2e,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2e,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x2e,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x40,0x2e,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x2e,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x50,0x2e,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x2e,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x70,0x2e,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x2e,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x48,0x2e,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x2e,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x48,0x2e,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x2e,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x40,0x2e,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_add_min_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x2e,0xcc,0x01,0x05,0x0e,0x0c] +0x0a,0x00,0x2e,0xcc,0x01,0x05,0x0e,0x0c + +# GFX1250: v_pk_add_max_u16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x15,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x15,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_u16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x15,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x15,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_u16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x15,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x15,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_u16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x15,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +0x0a,0xc8,0x15,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_u16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x15,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0x40,0x15,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_add_max_u16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x15,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0xc0,0x15,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_add_max_u16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x15,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x15,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_u16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x15,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x15,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x15,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x40,0x15,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x15,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x50,0x15,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x15,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x70,0x15,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x15,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x48,0x15,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x15,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x48,0x15,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x15,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x40,0x15,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_add_max_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x15,0xcc,0x01,0x05,0x0e,0x0c] +0x0a,0x00,0x15,0xcc,0x01,0x05,0x0e,0x0c + +# GFX1250: v_pk_min3_i16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x31,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x31,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_i16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x31,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x31,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_i16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x31,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x31,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_i16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x31,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +0x0a,0xc8,0x31,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_i16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x31,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0x40,0x31,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_min3_i16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x31,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0xc0,0x31,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_min3_i16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x31,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x31,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_i16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x31,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x31,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_i16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x31,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x40,0x31,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x31,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x50,0x31,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x31,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x70,0x31,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x31,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x48,0x31,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x31,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x48,0x31,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x31,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x40,0x31,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_min3_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x31,0xcc,0x01,0x05,0x0e,0x0c] +0x0a,0x00,0x31,0xcc,0x01,0x05,0x0e,0x0c + +# GFX1250: v_pk_max3_i16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2f,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2f,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_i16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x2f,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2f,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_i16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x2f,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2f,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_i16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x2f,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +0x0a,0xc8,0x2f,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_i16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x2f,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0x40,0x2f,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_max3_i16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x2f,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0xc0,0x2f,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_max3_i16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x2f,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2f,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_i16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x2f,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x2f,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_i16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x2f,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x40,0x2f,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x2f,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x50,0x2f,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x2f,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x70,0x2f,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x2f,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x48,0x2f,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x2f,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x48,0x2f,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x2f,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x40,0x2f,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_max3_i16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x2f,0xcc,0x01,0x05,0x0e,0x0c] +0x0a,0x00,0x2f,0xcc,0x01,0x05,0x0e,0x0c + +# GFX1250: v_pk_min3_u16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x32,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x32,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_u16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x32,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x32,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_u16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x32,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x32,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_u16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x32,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +0x0a,0xc8,0x32,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_u16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x32,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0x40,0x32,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_min3_u16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x32,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0xc0,0x32,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_min3_u16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x32,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x32,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_u16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x32,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x32,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_min3_u16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x32,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x40,0x32,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x32,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x50,0x32,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x32,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x70,0x32,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x32,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x48,0x32,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x32,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x48,0x32,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x32,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x40,0x32,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_min3_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x32,0xcc,0x01,0x05,0x0e,0x0c] +0x0a,0x00,0x32,0xcc,0x01,0x05,0x0e,0x0c + +# GFX1250: v_pk_max3_u16 v10, 0x64, 0x64, 0x64 ; encoding: [0x0a,0x40,0x30,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x30,0xcc,0xff,0xfe,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_u16 v10, 0x64, 0x64, v3 ; encoding: [0x0a,0x40,0x30,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x30,0xcc,0xff,0xfe,0x0d,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_u16 v10, 0x64, v2, v3 ; encoding: [0x0a,0x40,0x30,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00] +0x0a,0x40,0x30,0xcc,0xff,0x04,0x0e,0x1c,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_u16 v10, s1, 0x64, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] clamp ; encoding: [0x0a,0xc8,0x30,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00] +0x0a,0xc8,0x30,0xcc,0x01,0xfe,0x0d,0x14,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_u16 v10, s1, v2, v3 ; encoding: [0x0a,0x40,0x30,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0x40,0x30,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_max3_u16 v10, s1, v2, v3 clamp ; encoding: [0x0a,0xc0,0x30,0xcc,0x01,0x04,0x0e,0x1c] +0x0a,0xc0,0x30,0xcc,0x01,0x04,0x0e,0x1c + +# GFX1250: v_pk_max3_u16 v10, v1, 0x64, 0x64 ; encoding: [0x0a,0x40,0x30,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x30,0xcc,0x01,0xff,0xfd,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_u16 v10, v1, v2, 0x64 ; encoding: [0x0a,0x40,0x30,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00] +0x0a,0x40,0x30,0xcc,0x01,0x05,0xfe,0x1b,0x64,0x00,0x00,0x00 + +# GFX1250: v_pk_max3_u16 v10, v1, v2, v3 ; encoding: [0x0a,0x40,0x30,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x40,0x30,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel:[0,1,0] ; encoding: [0x0a,0x50,0x30,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x50,0x30,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel:[0,1,1] ; encoding: [0x0a,0x70,0x30,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x70,0x30,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel:[1,0,0] ; encoding: [0x0a,0x48,0x30,0xcc,0x01,0x05,0x0e,0x1c] +0x0a,0x48,0x30,0xcc,0x01,0x05,0x0e,0x1c + +# GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel:[1,0,0] op_sel_hi:[0,1,1] ; encoding: [0x0a,0x48,0x30,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x48,0x30,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel_hi:[0,1,1] ; encoding: [0x0a,0x40,0x30,0xcc,0x01,0x05,0x0e,0x14] +0x0a,0x40,0x30,0xcc,0x01,0x05,0x0e,0x14 + +# GFX1250: v_pk_max3_u16 v10, v1, v2, v3 op_sel_hi:[1,0,0] ; encoding: [0x0a,0x00,0x30,0xcc,0x01,0x05,0x0e,0x0c] +0x0a,0x00,0x30,0xcc,0x01,0x05,0x0e,0x0c