diff --git a/llvm/test/MC/AMDGPU/gfx11_asm_vop1.s b/llvm/test/MC/AMDGPU/gfx11_asm_vop1.s index f1438532d7c5e..5b4689b2954df 100644 --- a/llvm/test/MC/AMDGPU/gfx11_asm_vop1.s +++ b/llvm/test/MC/AMDGPU/gfx11_asm_vop1.s @@ -1,8 +1,195 @@ -// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --unique --version 5 +// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --version 5 // RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -mattr=+real-true16,+wavefrontsize32 -show-encoding %s | FileCheck --check-prefix=GFX11 %s // RUN: llvm-mc -triple=amdgcn -mcpu=gfx1100 -mattr=+real-true16,+wavefrontsize64 -show-encoding %s | FileCheck --check-prefix=GFX11 %s -v_bfrev_b32_e32 v5, v1 +// INSTS= +// v_bfrev_b32 OPS32 +// v_ceil_f16 OPS16 +// v_ceil_f32 OPS32 +// v_ceil_f64 OPS64 +// v_cls_i32 OPS32 +// v_clz_i32_u32 OPS32 +// v_cos_f16 OPS16 +// v_cos_f32 OPS32 +// v_ctz_i32_b32 OPS32 +// v_cvt_f16_f32 v5.l, SRC32 +// v_cvt_f16_f32 v127.h, 0xaf123456 +// v_cvt_f16_f32 v127.l, 0.5 +// v_cvt_f16_i16 OPS16 +// v_cvt_f16_u16 OPS16 +// v_cvt_f32_f16 OPS_32_16 +// v_cvt_f32_f64 OPS_32_64 +// v_cvt_f32_i32 OPS32 +// v_cvt_f32_u32 OPS32 +// v_cvt_f32_ubyte0 OPS32 +// v_cvt_f32_ubyte1 OPS32 +// v_cvt_f32_ubyte2 OPS32 +// v_cvt_f32_ubyte3 OPS32 +// v_cvt_f64_f32 OPS_64_32 +// v_cvt_f64_i32 OPS_64_32 +// v_cvt_f64_u32 OPS_64_32 +// v_cvt_floor_i32_f32 OPS32 +// v_cvt_flr_i32_f32 OPS32 +// v_cvt_i16_f16 OPS16 +// v_cvt_i32_f32 OPS32 +// v_cvt_i32_f64 OPS_32_64 +// v_cvt_i32_i16 OPS_32_16 +// v_cvt_nearest_i32_f32 OPS32 +// v_cvt_norm_i16_f16 OPS16 +// v_cvt_norm_u16_f16 OPS16 +// v_cvt_off_f32_i4 v5, SRC32 +// v_cvt_off_f32_i4 v255, 0x4f +// v_cvt_rpi_i32_f32 OPS32 +// v_cvt_u16_f16 OPS16 +// v_cvt_u32_f32 OPS32 +// v_cvt_u32_f64 OPS_32_64 +// v_cvt_u32_u16 OPS_32_16 +// v_exp_f16 OPS16 +// v_exp_f32 OPS32 +// v_ffbh_i32 OPS32 +// v_ffbh_u32 OPS32 +// v_ffbl_b32 OPS32 +// v_floor_f16 OPS16 +// v_floor_f32 OPS32 +// v_floor_f64 OPS64 +// v_fract_f16 OPS16 +// v_fract_f32 OPS32 +// v_fract_f64 OPS64 +// v_frexp_exp_i16_f16 OPS16 +// v_frexp_exp_i32_f32 OPS32 +// v_frexp_exp_i32_f64 OPS_32_64 +// v_frexp_mant_f16 OPS16 +// v_frexp_mant_f32 OPS32 +// v_frexp_mant_f64 OPS64 +// v_log_f16 OPS16 +// v_log_f32 OPS32 +// v_mov_b16_e32 OPS16 +// v_mov_b16_e64 OPS16 +// v_mov_b32 OPS32 +// v_movreld_b32 OPS32 +// v_movrels_b32 v5, v1 +// v_movrels_b32 v255, v255 +// v_movrelsd_2_b32 v5, v1 +// v_movrelsd_2_b32 v255, v255 +// v_movrelsd_b32 v5, v1 +// v_movrelsd_b32 v255, v255 +// v_nop +// v_not_b16 OPS16 +// v_not_b32 OPS32 +// v_permlane64_b32 v5, v1 +// v_permlane64_b32 v255, v255 +// v_pipeflush +// v_rcp_f16 OPS16 +// v_rcp_f32 OPS32 +// v_rcp_f64 OPS64 +// v_rcp_iflag_f32 OPS32 +// v_readfirstlane_b32 s5, v1 +// v_readfirstlane_b32 s105, v1 +// v_readfirstlane_b32 vcc_lo, v1 +// v_readfirstlane_b32 vcc_hi, v1 +// v_readfirstlane_b32 ttmp15, v1 +// v_readfirstlane_b32 null, v255 +// v_rndne_f16 OPS16 +// v_rndne_f32 OPS32 +// v_rndne_f64 OPS64 +// v_rsq_f16 OPS16 +// v_rsq_f32 OPS32 +// v_rsq_f64 OPS64 +// v_sat_pk_u8_i16 v5.l, SRC32 +// v_sat_pk_u8_i16 v127.l, 0xfe0b +// v_sat_pk_u8_i16 v127.l, 0.5 +// v_sat_pk_u8_i16 v5.h, src_scc +// v_sat_pk_u8_i16 v127.h, 0xfe0b +// v_sin_f16 OPS16 +// v_sin_f32 OPS32 +// v_sqrt_f16 OPS16 +// v_sqrt_f32 OPS32 +// v_sqrt_f64 OPS64 +// v_swap_b16 v5.l, v1.h +// v_swap_b16 v5.h, v1.l +// v_swap_b16 v127.l, v127.l +// v_swap_b32 v5, v1 +// v_swap_b32 v255, v255 +// v_swaprel_b32 v5, v1 +// v_swaprel_b32 v255, v255 +// v_trunc_f16 OPS16 +// v_trunc_f32 OPS32 +// v_trunc_f64 OPS64 +// +// SRC16= +// v1.l +// v127.l +// v1.h +// v127.h +// s1 +// s105 +// vcc_lo +// vcc_hi +// ttmp15 +// m0 +// exec_lo +// exec_hi +// null +// -1 +// 0.5 +// src_scc +// +// OPS16= +// v5.l, SRC16 +// v5.l, 0xfe0b +// v5.h, src_scc +// v127.h, 0xfe0b +// +// SRC32= +// v1 +// v255 +// s1 +// s105 +// vcc_lo +// vcc_hi +// ttmp15 +// m0 +// exec_lo +// exec_hi +// null +// -1 +// 0.5 +// src_scc +// +// OPS32= +// v5, SRC32 +// v255, 0xaf123456 +// +// SRC64= +// v[1:2] +// v[254:255] +// s[2:3] +// s[104:105] +// vcc +// ttmp[14:15] +// exec +// null +// -1 +// 0.5 +// src_scc +// +// OPS64= +// v[5:6], SRC64 +// v[254:255], 0xaf123456 +// +// OPS_32_16= +// v5, SRC16 +// v255, 0xfe0b +// +// OPS_32_64= +// v5, SRC64 +// v255, 0xaf123456 +// +// OPS_64_32= +// v[5:6], SRC32 +// v[254:255], 0xaf123456 + +v_bfrev_b32 v5, v1 // GFX11: v_bfrev_b32_e32 v5, v1 ; encoding: [0x01,0x71,0x0a,0x7e] v_bfrev_b32 v5, v255 @@ -89,8 +276,14 @@ v_ceil_f16 v5.l, null v_ceil_f16 v5.l, -1 // GFX11: v_ceil_f16_e32 v5.l, -1 ; encoding: [0xc1,0xb8,0x0a,0x7e] -v_ceil_f16 v127.l, 0.5 -// GFX11: v_ceil_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xb8,0xfe,0x7e] +v_ceil_f16 v5.l, 0.5 +// GFX11: v_ceil_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xb8,0x0a,0x7e] + +v_ceil_f16 v5.l, src_scc +// GFX11: v_ceil_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xb8,0x0a,0x7e] + +v_ceil_f16 v5.l, 0xfe0b +// GFX11: v_ceil_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xb8,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_ceil_f16 v5.h, src_scc // GFX11: v_ceil_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xb8,0x0a,0x7f] @@ -275,6 +468,12 @@ v_cos_f16 v5.l, v1.l v_cos_f16 v5.l, v127.l // GFX11: v_cos_f16_e32 v5.l, v127.l ; encoding: [0x7f,0xc3,0x0a,0x7e] +v_cos_f16 v5.l, v1.h +// GFX11: v_cos_f16_e32 v5.l, v1.h ; encoding: [0x81,0xc3,0x0a,0x7e] + +v_cos_f16 v5.l, v127.h +// GFX11: v_cos_f16_e32 v5.l, v127.h ; encoding: [0xff,0xc3,0x0a,0x7e] + v_cos_f16 v5.l, s1 // GFX11: v_cos_f16_e32 v5.l, s1 ; encoding: [0x01,0xc2,0x0a,0x7e] @@ -311,17 +510,8 @@ v_cos_f16 v5.l, 0.5 v_cos_f16 v5.l, src_scc // GFX11: v_cos_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xc2,0x0a,0x7e] -v_cos_f16 v127.l, 0xfe0b -// GFX11: v_cos_f16_e32 v127.l, 0xfe0b ; encoding: [0xff,0xc2,0xfe,0x7e,0x0b,0xfe,0x00,0x00] - -v_cos_f16 v5.l, v1.h -// GFX11: v_cos_f16_e32 v5.l, v1.h ; encoding: [0x81,0xc3,0x0a,0x7e] - -v_cos_f16 v5.l, v127.h -// GFX11: v_cos_f16_e32 v5.l, v127.h ; encoding: [0xff,0xc3,0x0a,0x7e] - -v_cos_f16 v127.l, 0.5 -// GFX11: v_cos_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xc2,0xfe,0x7e] +v_cos_f16 v5.l, 0xfe0b +// GFX11: v_cos_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xc2,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_cos_f16 v5.h, src_scc // GFX11: v_cos_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xc2,0x0a,0x7f] @@ -458,8 +648,8 @@ v_cvt_f16_f32 v5.l, -1 v_cvt_f16_f32 v5.l, 0.5 // GFX11: v_cvt_f16_f32_e32 v5.l, 0.5 ; encoding: [0xf0,0x14,0x0a,0x7e] -v_cvt_f16_f32 v5.h, src_scc -// GFX11: v_cvt_f16_f32_e32 v5.h, src_scc ; encoding: [0xfd,0x14,0x0a,0x7f] +v_cvt_f16_f32 v5.l, src_scc +// GFX11: v_cvt_f16_f32_e32 v5.l, src_scc ; encoding: [0xfd,0x14,0x0a,0x7e] v_cvt_f16_f32 v127.h, 0xaf123456 // GFX11: v_cvt_f16_f32_e32 v127.h, 0xaf123456 ; encoding: [0xff,0x14,0xfe,0x7f,0x56,0x34,0x12,0xaf] @@ -509,12 +699,15 @@ v_cvt_f16_i16 v5.l, null v_cvt_f16_i16 v5.l, -1 // GFX11: v_cvt_f16_i16_e32 v5.l, -1 ; encoding: [0xc1,0xa2,0x0a,0x7e] -v_cvt_f16_i16 v127.l, 0.5 -// GFX11: v_cvt_f16_i16_e32 v127.l, 0.5 ; encoding: [0xf0,0xa2,0xfe,0x7e] - v_cvt_f16_i16 v5.l, 0.5 // GFX11: v_cvt_f16_i16_e32 v5.l, 0.5 ; encoding: [0xf0,0xa2,0x0a,0x7e] +v_cvt_f16_i16 v5.l, src_scc +// GFX11: v_cvt_f16_i16_e32 v5.l, src_scc ; encoding: [0xfd,0xa2,0x0a,0x7e] + +v_cvt_f16_i16 v5.l, 0xfe0b +// GFX11: v_cvt_f16_i16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xa2,0x0a,0x7e,0x0b,0xfe,0x00,0x00] + v_cvt_f16_i16 v5.h, src_scc // GFX11: v_cvt_f16_i16_e32 v5.h, src_scc ; encoding: [0xfd,0xa2,0x0a,0x7f] @@ -563,11 +756,14 @@ v_cvt_f16_u16 v5.l, null v_cvt_f16_u16 v5.l, -1 // GFX11: v_cvt_f16_u16_e32 v5.l, -1 ; encoding: [0xc1,0xa0,0x0a,0x7e] -v_cvt_f16_u16 v127.l, 0.5 -// GFX11: v_cvt_f16_u16_e32 v127.l, 0.5 ; encoding: [0xf0,0xa0,0xfe,0x7e] +v_cvt_f16_u16 v5.l, 0.5 +// GFX11: v_cvt_f16_u16_e32 v5.l, 0.5 ; encoding: [0xf0,0xa0,0x0a,0x7e] + +v_cvt_f16_u16 v5.l, src_scc +// GFX11: v_cvt_f16_u16_e32 v5.l, src_scc ; encoding: [0xfd,0xa0,0x0a,0x7e] -v_cvt_f16_u16 v5, 0.5 -// GFX11: v_cvt_f16_u16_e32 v5, 0.5 ; encoding: [0xf0,0xa0,0x0a,0x7e] +v_cvt_f16_u16 v5.l, 0xfe0b +// GFX11: v_cvt_f16_u16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xa0,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_cvt_f16_u16 v5.h, src_scc // GFX11: v_cvt_f16_u16_e32 v5.h, src_scc ; encoding: [0xfd,0xa0,0x0a,0x7f] @@ -1199,8 +1395,14 @@ v_cvt_i16_f16 v5.l, null v_cvt_i16_f16 v5.l, -1 // GFX11: v_cvt_i16_f16_e32 v5.l, -1 ; encoding: [0xc1,0xa6,0x0a,0x7e] -v_cvt_i16_f16 v127.l, 0.5 -// GFX11: v_cvt_i16_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xa6,0xfe,0x7e] +v_cvt_i16_f16 v5.l, 0.5 +// GFX11: v_cvt_i16_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xa6,0x0a,0x7e] + +v_cvt_i16_f16 v5.l, src_scc +// GFX11: v_cvt_i16_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xa6,0x0a,0x7e] + +v_cvt_i16_f16 v5.l, 0xfe0b +// GFX11: v_cvt_i16_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xa6,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_cvt_i16_f16 v5.h, src_scc // GFX11: v_cvt_i16_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xa6,0x0a,0x7f] @@ -1295,6 +1497,12 @@ v_cvt_i32_i16 v5, v1.l v_cvt_i32_i16 v5, v127.l // GFX11: v_cvt_i32_i16_e32 v5, v127.l ; encoding: [0x7f,0xd5,0x0a,0x7e] +v_cvt_i32_i16 v5, v1.h +// GFX11: v_cvt_i32_i16_e32 v5, v1.h ; encoding: [0x81,0xd5,0x0a,0x7e] + +v_cvt_i32_i16 v5, v127.h +// GFX11: v_cvt_i32_i16_e32 v5, v127.h ; encoding: [0xff,0xd5,0x0a,0x7e] + v_cvt_i32_i16 v5, s1 // GFX11: v_cvt_i32_i16_e32 v5, s1 ; encoding: [0x01,0xd4,0x0a,0x7e] @@ -1334,12 +1542,6 @@ v_cvt_i32_i16 v5, src_scc v_cvt_i32_i16 v255, 0xfe0b // GFX11: v_cvt_i32_i16_e32 v255, 0xfe0b ; encoding: [0xff,0xd4,0xfe,0x7f,0x0b,0xfe,0x00,0x00] -v_cvt_i32_i16 v5, v1.h -// GFX11: v_cvt_i32_i16_e32 v5, v1.h ; encoding: [0x81,0xd5,0x0a,0x7e] - -v_cvt_i32_i16 v5, v127.h -// GFX11: v_cvt_i32_i16_e32 v5, v127.h ; encoding: [0xff,0xd5,0x0a,0x7e] - v_cvt_nearest_i32_f32 v5, v1 // GFX11: v_cvt_nearest_i32_f32_e32 v5, v1 ; encoding: [0x01,0x19,0x0a,0x7e] @@ -1427,8 +1629,14 @@ v_cvt_norm_i16_f16 v5.l, null v_cvt_norm_i16_f16 v5.l, -1 // GFX11: v_cvt_norm_i16_f16_e32 v5.l, -1 ; encoding: [0xc1,0xc6,0x0a,0x7e] -v_cvt_norm_i16_f16 v127.l, 0.5 -// GFX11: v_cvt_norm_i16_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xc6,0xfe,0x7e] +v_cvt_norm_i16_f16 v5.l, 0.5 +// GFX11: v_cvt_norm_i16_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xc6,0x0a,0x7e] + +v_cvt_norm_i16_f16 v5.l, src_scc +// GFX11: v_cvt_norm_i16_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xc6,0x0a,0x7e] + +v_cvt_norm_i16_f16 v5.l, 0xfe0b +// GFX11: v_cvt_norm_i16_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xc6,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_cvt_norm_i16_f16 v5.h, src_scc // GFX11: v_cvt_norm_i16_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xc6,0x0a,0x7f] @@ -1478,8 +1686,14 @@ v_cvt_norm_u16_f16 v5.l, null v_cvt_norm_u16_f16 v5.l, -1 // GFX11: v_cvt_norm_u16_f16_e32 v5.l, -1 ; encoding: [0xc1,0xc8,0x0a,0x7e] -v_cvt_norm_u16_f16 v127.l, 0.5 -// GFX11: v_cvt_norm_u16_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xc8,0xfe,0x7e] +v_cvt_norm_u16_f16 v5.l, 0.5 +// GFX11: v_cvt_norm_u16_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xc8,0x0a,0x7e] + +v_cvt_norm_u16_f16 v5.l, src_scc +// GFX11: v_cvt_norm_u16_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xc8,0x0a,0x7e] + +v_cvt_norm_u16_f16 v5.l, 0xfe0b +// GFX11: v_cvt_norm_u16_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xc8,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_cvt_norm_u16_f16 v5.h, src_scc // GFX11: v_cvt_norm_u16_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xc8,0x0a,0x7f] @@ -1619,8 +1833,14 @@ v_cvt_u16_f16 v5.l, null v_cvt_u16_f16 v5.l, -1 // GFX11: v_cvt_u16_f16_e32 v5.l, -1 ; encoding: [0xc1,0xa4,0x0a,0x7e] -v_cvt_u16_f16 v127.l, 0.5 -// GFX11: v_cvt_u16_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xa4,0xfe,0x7e] +v_cvt_u16_f16 v5.l, 0.5 +// GFX11: v_cvt_u16_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xa4,0x0a,0x7e] + +v_cvt_u16_f16 v5.l, src_scc +// GFX11: v_cvt_u16_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xa4,0x0a,0x7e] + +v_cvt_u16_f16 v5.l, 0xfe0b +// GFX11: v_cvt_u16_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xa4,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_cvt_u16_f16 v5.h, src_scc // GFX11: v_cvt_u16_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xa4,0x0a,0x7f] @@ -1715,6 +1935,12 @@ v_cvt_u32_u16 v5, v1.l v_cvt_u32_u16 v5, v127.l // GFX11: v_cvt_u32_u16_e32 v5, v127.l ; encoding: [0x7f,0xd7,0x0a,0x7e] +v_cvt_u32_u16 v5, v1.h +// GFX11: v_cvt_u32_u16_e32 v5, v1.h ; encoding: [0x81,0xd7,0x0a,0x7e] + +v_cvt_u32_u16 v5, v127.h +// GFX11: v_cvt_u32_u16_e32 v5, v127.h ; encoding: [0xff,0xd7,0x0a,0x7e] + v_cvt_u32_u16 v5, s1 // GFX11: v_cvt_u32_u16_e32 v5, s1 ; encoding: [0x01,0xd6,0x0a,0x7e] @@ -1754,12 +1980,6 @@ v_cvt_u32_u16 v5, src_scc v_cvt_u32_u16 v255, 0xfe0b // GFX11: v_cvt_u32_u16_e32 v255, 0xfe0b ; encoding: [0xff,0xd6,0xfe,0x7f,0x0b,0xfe,0x00,0x00] -v_cvt_u32_u16 v5, v1.h -// GFX11: v_cvt_u32_u16_e32 v5, v1.h ; encoding: [0x81,0xd7,0x0a,0x7e] - -v_cvt_u32_u16 v5, v127.h -// GFX11: v_cvt_u32_u16_e32 v5, v127.h ; encoding: [0xff,0xd7,0x0a,0x7e] - v_exp_f16 v5.l, v1.l // GFX11: v_exp_f16_e32 v5.l, v1.l ; encoding: [0x01,0xb1,0x0a,0x7e] @@ -1802,8 +2022,14 @@ v_exp_f16 v5.l, null v_exp_f16 v5.l, -1 // GFX11: v_exp_f16_e32 v5.l, -1 ; encoding: [0xc1,0xb0,0x0a,0x7e] -v_exp_f16 v127.l, 0.5 -// GFX11: v_exp_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xb0,0xfe,0x7e] +v_exp_f16 v5.l, 0.5 +// GFX11: v_exp_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xb0,0x0a,0x7e] + +v_exp_f16 v5.l, src_scc +// GFX11: v_exp_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xb0,0x0a,0x7e] + +v_exp_f16 v5.l, 0xfe0b +// GFX11: v_exp_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xb0,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_exp_f16 v5.h, src_scc // GFX11: v_exp_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xb0,0x0a,0x7f] @@ -2033,8 +2259,14 @@ v_floor_f16 v5.l, null v_floor_f16 v5.l, -1 // GFX11: v_floor_f16_e32 v5.l, -1 ; encoding: [0xc1,0xb6,0x0a,0x7e] -v_floor_f16 v127.l, 0.5 -// GFX11: v_floor_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xb6,0xfe,0x7e] +v_floor_f16 v5.l, 0.5 +// GFX11: v_floor_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xb6,0x0a,0x7e] + +v_floor_f16 v5.l, src_scc +// GFX11: v_floor_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xb6,0x0a,0x7e] + +v_floor_f16 v5.l, 0xfe0b +// GFX11: v_floor_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xb6,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_floor_f16 v5.h, src_scc // GFX11: v_floor_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xb6,0x0a,0x7f] @@ -2129,6 +2361,12 @@ v_fract_f16 v5.l, v1.l v_fract_f16 v5.l, v127.l // GFX11: v_fract_f16_e32 v5.l, v127.l ; encoding: [0x7f,0xbf,0x0a,0x7e] +v_fract_f16 v5.l, v1.h +// GFX11: v_fract_f16_e32 v5.l, v1.h ; encoding: [0x81,0xbf,0x0a,0x7e] + +v_fract_f16 v5.l, v127.h +// GFX11: v_fract_f16_e32 v5.l, v127.h ; encoding: [0xff,0xbf,0x0a,0x7e] + v_fract_f16 v5.l, s1 // GFX11: v_fract_f16_e32 v5.l, s1 ; encoding: [0x01,0xbe,0x0a,0x7e] @@ -2165,17 +2403,8 @@ v_fract_f16 v5.l, 0.5 v_fract_f16 v5.l, src_scc // GFX11: v_fract_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xbe,0x0a,0x7e] -v_fract_f16 v127.l, 0xfe0b -// GFX11: v_fract_f16_e32 v127.l, 0xfe0b ; encoding: [0xff,0xbe,0xfe,0x7e,0x0b,0xfe,0x00,0x00] - -v_fract_f16 v5.l, v1.h -// GFX11: v_fract_f16_e32 v5.l, v1.h ; encoding: [0x81,0xbf,0x0a,0x7e] - -v_fract_f16 v5.l, v127.h -// GFX11: v_fract_f16_e32 v5.l, v127.h ; encoding: [0xff,0xbf,0x0a,0x7e] - -v_fract_f16 v127.l, 0.5 -// GFX11: v_fract_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xbe,0xfe,0x7e] +v_fract_f16 v5.l, 0xfe0b +// GFX11: v_fract_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xbe,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_fract_f16 v5.h, src_scc // GFX11: v_fract_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xbe,0x0a,0x7f] @@ -2306,8 +2535,14 @@ v_frexp_exp_i16_f16 v5.l, null v_frexp_exp_i16_f16 v5.l, -1 // GFX11: v_frexp_exp_i16_f16_e32 v5.l, -1 ; encoding: [0xc1,0xb4,0x0a,0x7e] -v_frexp_exp_i16_f16 v127.l, 0.5 -// GFX11: v_frexp_exp_i16_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xb4,0xfe,0x7e] +v_frexp_exp_i16_f16 v5.l, 0.5 +// GFX11: v_frexp_exp_i16_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xb4,0x0a,0x7e] + +v_frexp_exp_i16_f16 v5.l, src_scc +// GFX11: v_frexp_exp_i16_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xb4,0x0a,0x7e] + +v_frexp_exp_i16_f16 v5.l, 0xfe0b +// GFX11: v_frexp_exp_i16_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xb4,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_frexp_exp_i16_f16 v5.h, src_scc // GFX11: v_frexp_exp_i16_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xb4,0x0a,0x7f] @@ -2402,6 +2637,12 @@ v_frexp_mant_f16 v5.l, v1.l v_frexp_mant_f16 v5.l, v127.l // GFX11: v_frexp_mant_f16_e32 v5.l, v127.l ; encoding: [0x7f,0xb3,0x0a,0x7e] +v_frexp_mant_f16 v5.l, v1.h +// GFX11: v_frexp_mant_f16_e32 v5.l, v1.h ; encoding: [0x81,0xb3,0x0a,0x7e] + +v_frexp_mant_f16 v5.l, v127.h +// GFX11: v_frexp_mant_f16_e32 v5.l, v127.h ; encoding: [0xff,0xb3,0x0a,0x7e] + v_frexp_mant_f16 v5.l, s1 // GFX11: v_frexp_mant_f16_e32 v5.l, s1 ; encoding: [0x01,0xb2,0x0a,0x7e] @@ -2438,17 +2679,8 @@ v_frexp_mant_f16 v5.l, 0.5 v_frexp_mant_f16 v5.l, src_scc // GFX11: v_frexp_mant_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xb2,0x0a,0x7e] -v_frexp_mant_f16 v127.l, 0xfe0b -// GFX11: v_frexp_mant_f16_e32 v127.l, 0xfe0b ; encoding: [0xff,0xb2,0xfe,0x7e,0x0b,0xfe,0x00,0x00] - -v_frexp_mant_f16 v5.l, v1.h -// GFX11: v_frexp_mant_f16_e32 v5.l, v1.h ; encoding: [0x81,0xb3,0x0a,0x7e] - -v_frexp_mant_f16 v5.l, v127.h -// GFX11: v_frexp_mant_f16_e32 v5.l, v127.h ; encoding: [0xff,0xb3,0x0a,0x7e] - -v_frexp_mant_f16 v127.l, 0.5 -// GFX11: v_frexp_mant_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xb2,0xfe,0x7e] +v_frexp_mant_f16 v5.l, 0xfe0b +// GFX11: v_frexp_mant_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xb2,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_frexp_mant_f16 v5.h, src_scc // GFX11: v_frexp_mant_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xb2,0x0a,0x7f] @@ -2579,8 +2811,14 @@ v_log_f16 v5.l, null v_log_f16 v5.l, -1 // GFX11: v_log_f16_e32 v5.l, -1 ; encoding: [0xc1,0xae,0x0a,0x7e] -v_log_f16 v127.l, 0.5 -// GFX11: v_log_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xae,0xfe,0x7e] +v_log_f16 v5.l, 0.5 +// GFX11: v_log_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xae,0x0a,0x7e] + +v_log_f16 v5.l, src_scc +// GFX11: v_log_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xae,0x0a,0x7e] + +v_log_f16 v5.l, 0xfe0b +// GFX11: v_log_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xae,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_log_f16 v5.h, src_scc // GFX11: v_log_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xae,0x0a,0x7f] @@ -2633,35 +2871,119 @@ v_log_f32 v5, src_scc v_log_f32 v255, 0xaf123456 // GFX11: v_log_f32_e32 v255, 0xaf123456 ; encoding: [0xff,0x4e,0xfe,0x7f,0x56,0x34,0x12,0xaf] -v_mov_b16_e32 v0.l, v1.l -// GFX11: v_mov_b16_e32 v0.l, v1.l ; encoding: [0x01,0x39,0x00,0x7e] +v_mov_b16_e32 v5.l, v1.l +// GFX11: v_mov_b16_e32 v5.l, v1.l ; encoding: [0x01,0x39,0x0a,0x7e] + +v_mov_b16_e32 v5.l, v127.l +// GFX11: v_mov_b16_e32 v5.l, v127.l ; encoding: [0x7f,0x39,0x0a,0x7e] + +v_mov_b16_e32 v5.l, v1.h +// GFX11: v_mov_b16_e32 v5.l, v1.h ; encoding: [0x81,0x39,0x0a,0x7e] + +v_mov_b16_e32 v5.l, v127.h +// GFX11: v_mov_b16_e32 v5.l, v127.h ; encoding: [0xff,0x39,0x0a,0x7e] -v_mov_b16_e32 v0.l, s1 -// GFX11: v_mov_b16_e32 v0.l, s1 ; encoding: [0x01,0x38,0x00,0x7e] +v_mov_b16_e32 v5.l, s1 +// GFX11: v_mov_b16_e32 v5.l, s1 ; encoding: [0x01,0x38,0x0a,0x7e] -v_mov_b16_e32 v0.h, 0 -// GFX11: v_mov_b16_e32 v0.h, 0 ; encoding: [0x80,0x38,0x00,0x7f] +v_mov_b16_e32 v5.l, s105 +// GFX11: v_mov_b16_e32 v5.l, s105 ; encoding: [0x69,0x38,0x0a,0x7e] -v_mov_b16_e32 v0.h, 1.0 -// GFX11: v_mov_b16_e32 v0.h, 1.0 ; encoding: [0xf2,0x38,0x00,0x7f] +v_mov_b16_e32 v5.l, vcc_lo +// GFX11: v_mov_b16_e32 v5.l, vcc_lo ; encoding: [0x6a,0x38,0x0a,0x7e] -v_mov_b16_e32 v0.l, 0x1234 -// GFX11: v_mov_b16_e32 v0.l, 0x1234 ; encoding: [0xff,0x38,0x00,0x7e,0x34,0x12,0x00,0x00] +v_mov_b16_e32 v5.l, vcc_hi +// GFX11: v_mov_b16_e32 v5.l, vcc_hi ; encoding: [0x6b,0x38,0x0a,0x7e] -v_mov_b16_e64 v0.l, v1.l -// GFX11: v_mov_b16_e64 v0.l, v1.l ; encoding: [0x00,0x00,0x9c,0xd5,0x01,0x01,0x00,0x00] +v_mov_b16_e32 v5.l, ttmp15 +// GFX11: v_mov_b16_e32 v5.l, ttmp15 ; encoding: [0x7b,0x38,0x0a,0x7e] -v_mov_b16_e64 v200.l, v1.h -// GFX11: v_mov_b16_e64 v200.l, v1.h op_sel:[1,0] ; encoding: [0xc8,0x08,0x9c,0xd5,0x01,0x01,0x00,0x00] +v_mov_b16_e32 v5.l, m0 +// GFX11: v_mov_b16_e32 v5.l, m0 ; encoding: [0x7d,0x38,0x0a,0x7e] -v_mov_b16_e64 v0.l, s1 -// GFX11: v_mov_b16_e64 v0.l, s1 ; encoding: [0x00,0x00,0x9c,0xd5,0x01,0x00,0x00,0x00] +v_mov_b16_e32 v5.l, exec_lo +// GFX11: v_mov_b16_e32 v5.l, exec_lo ; encoding: [0x7e,0x38,0x0a,0x7e] -v_mov_b16_e64 v200.h, 1 -// GFX11: v_mov_b16_e64 v200.h, 1 op_sel:[0,1] ; encoding: [0xc8,0x40,0x9c,0xd5,0x81,0x00,0x00,0x00] +v_mov_b16_e32 v5.l, exec_hi +// GFX11: v_mov_b16_e32 v5.l, exec_hi ; encoding: [0x7f,0x38,0x0a,0x7e] -v_mov_b16_e64 v0.l, 0x1234 -// GFX11: v_mov_b16_e64 v0.l, 0x1234 ; encoding: [0x00,0x00,0x9c,0xd5,0xff,0x00,0x00,0x00,0x34,0x12,0x00,0x00] +v_mov_b16_e32 v5.l, null +// GFX11: v_mov_b16_e32 v5.l, null ; encoding: [0x7c,0x38,0x0a,0x7e] + +v_mov_b16_e32 v5.l, -1 +// GFX11: v_mov_b16_e32 v5.l, -1 ; encoding: [0xc1,0x38,0x0a,0x7e] + +v_mov_b16_e32 v5.l, 0.5 +// GFX11: v_mov_b16_e32 v5.l, 0.5 ; encoding: [0xf0,0x38,0x0a,0x7e] + +v_mov_b16_e32 v5.l, src_scc +// GFX11: v_mov_b16_e32 v5.l, src_scc ; encoding: [0xfd,0x38,0x0a,0x7e] + +v_mov_b16_e32 v5.l, 0xfe0b +// GFX11: v_mov_b16_e32 v5.l, 0xfe0b ; encoding: [0xff,0x38,0x0a,0x7e,0x0b,0xfe,0x00,0x00] + +v_mov_b16_e32 v5.h, src_scc +// GFX11: v_mov_b16_e32 v5.h, src_scc ; encoding: [0xfd,0x38,0x0a,0x7f] + +v_mov_b16_e32 v127.h, 0xfe0b +// GFX11: v_mov_b16_e32 v127.h, 0xfe0b ; encoding: [0xff,0x38,0xfe,0x7f,0x0b,0xfe,0x00,0x00] + +v_mov_b16_e64 v5.l, v1.l +// GFX11: v_mov_b16_e64 v5.l, v1.l ; encoding: [0x05,0x00,0x9c,0xd5,0x01,0x01,0x00,0x00] + +v_mov_b16_e64 v5.l, v127.l +// GFX11: v_mov_b16_e64 v5.l, v127.l ; encoding: [0x05,0x00,0x9c,0xd5,0x7f,0x01,0x00,0x00] + +v_mov_b16_e64 v5.l, v1.h +// GFX11: v_mov_b16_e64 v5.l, v1.h op_sel:[1,0] ; encoding: [0x05,0x08,0x9c,0xd5,0x01,0x01,0x00,0x00] + +v_mov_b16_e64 v5.l, v127.h +// GFX11: v_mov_b16_e64 v5.l, v127.h op_sel:[1,0] ; encoding: [0x05,0x08,0x9c,0xd5,0x7f,0x01,0x00,0x00] + +v_mov_b16_e64 v5.l, s1 +// GFX11: v_mov_b16_e64 v5.l, s1 ; encoding: [0x05,0x00,0x9c,0xd5,0x01,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, s105 +// GFX11: v_mov_b16_e64 v5.l, s105 ; encoding: [0x05,0x00,0x9c,0xd5,0x69,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, vcc_lo +// GFX11: v_mov_b16_e64 v5.l, vcc_lo ; encoding: [0x05,0x00,0x9c,0xd5,0x6a,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, vcc_hi +// GFX11: v_mov_b16_e64 v5.l, vcc_hi ; encoding: [0x05,0x00,0x9c,0xd5,0x6b,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, ttmp15 +// GFX11: v_mov_b16_e64 v5.l, ttmp15 ; encoding: [0x05,0x00,0x9c,0xd5,0x7b,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, m0 +// GFX11: v_mov_b16_e64 v5.l, m0 ; encoding: [0x05,0x00,0x9c,0xd5,0x7d,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, exec_lo +// GFX11: v_mov_b16_e64 v5.l, exec_lo ; encoding: [0x05,0x00,0x9c,0xd5,0x7e,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, exec_hi +// GFX11: v_mov_b16_e64 v5.l, exec_hi ; encoding: [0x05,0x00,0x9c,0xd5,0x7f,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, null +// GFX11: v_mov_b16_e64 v5.l, null ; encoding: [0x05,0x00,0x9c,0xd5,0x7c,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, -1 +// GFX11: v_mov_b16_e64 v5.l, -1 ; encoding: [0x05,0x00,0x9c,0xd5,0xc1,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, 0.5 +// GFX11: v_mov_b16_e64 v5.l, 0.5 ; encoding: [0x05,0x00,0x9c,0xd5,0xf0,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, src_scc +// GFX11: v_mov_b16_e64 v5.l, src_scc ; encoding: [0x05,0x00,0x9c,0xd5,0xfd,0x00,0x00,0x00] + +v_mov_b16_e64 v5.l, 0xfe0b +// GFX11: v_mov_b16_e64 v5.l, 0xfe0b ; encoding: [0x05,0x00,0x9c,0xd5,0xff,0x00,0x00,0x00,0x0b,0xfe,0x00,0x00] + +v_mov_b16_e64 v5.h, src_scc +// GFX11: v_mov_b16_e64 v5.h, src_scc op_sel:[0,1] ; encoding: [0x05,0x40,0x9c,0xd5,0xfd,0x00,0x00,0x00] + +v_mov_b16_e64 v127.h, 0xfe0b +// GFX11: v_mov_b16_e64 v127.h, 0xfe0b op_sel:[0,1] ; encoding: [0x7f,0x40,0x9c,0xd5,0xff,0x00,0x00,0x00,0x0b,0xfe,0x00,0x00] v_mov_b32 v5, v1 // GFX11: v_mov_b32_e32 v5, v1 ; encoding: [0x01,0x03,0x0a,0x7e] @@ -2780,6 +3102,12 @@ v_not_b16 v5.l, v1.l v_not_b16 v5.l, v127.l // GFX11: v_not_b16_e32 v5.l, v127.l ; encoding: [0x7f,0xd3,0x0a,0x7e] +v_not_b16 v5.l, v1.h +// GFX11: v_not_b16_e32 v5.l, v1.h ; encoding: [0x81,0xd3,0x0a,0x7e] + +v_not_b16 v5.l, v127.h +// GFX11: v_not_b16_e32 v5.l, v127.h ; encoding: [0xff,0xd3,0x0a,0x7e] + v_not_b16 v5.l, s1 // GFX11: v_not_b16_e32 v5.l, s1 ; encoding: [0x01,0xd2,0x0a,0x7e] @@ -2816,17 +3144,8 @@ v_not_b16 v5.l, 0.5 v_not_b16 v5.l, src_scc // GFX11: v_not_b16_e32 v5.l, src_scc ; encoding: [0xfd,0xd2,0x0a,0x7e] -v_not_b16 v127.l, 0xfe0b -// GFX11: v_not_b16_e32 v127.l, 0xfe0b ; encoding: [0xff,0xd2,0xfe,0x7e,0x0b,0xfe,0x00,0x00] - -v_not_b16 v5.l, v1.h -// GFX11: v_not_b16_e32 v5.l, v1.h ; encoding: [0x81,0xd3,0x0a,0x7e] - -v_not_b16 v5.l, v127.h -// GFX11: v_not_b16_e32 v5.l, v127.h ; encoding: [0xff,0xd3,0x0a,0x7e] - -v_not_b16 v127.l, 0.5 -// GFX11: v_not_b16_e32 v127.l, 0.5 ; encoding: [0xf0,0xd2,0xfe,0x7e] +v_not_b16 v5.l, 0xfe0b +// GFX11: v_not_b16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xd2,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_not_b16 v5.h, src_scc // GFX11: v_not_b16_e32 v5.h, src_scc ; encoding: [0xfd,0xd2,0x0a,0x7f] @@ -2930,8 +3249,14 @@ v_rcp_f16 v5.l, null v_rcp_f16 v5.l, -1 // GFX11: v_rcp_f16_e32 v5.l, -1 ; encoding: [0xc1,0xa8,0x0a,0x7e] -v_rcp_f16 v127.l, 0.5 -// GFX11: v_rcp_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xa8,0xfe,0x7e] +v_rcp_f16 v5.l, 0.5 +// GFX11: v_rcp_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xa8,0x0a,0x7e] + +v_rcp_f16 v5.l, src_scc +// GFX11: v_rcp_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xa8,0x0a,0x7e] + +v_rcp_f16 v5.l, 0xfe0b +// GFX11: v_rcp_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xa8,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_rcp_f16 v5.h, src_scc // GFX11: v_rcp_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xa8,0x0a,0x7f] @@ -3089,6 +3414,12 @@ v_rndne_f16 v5.l, v1.l v_rndne_f16 v5.l, v127.l // GFX11: v_rndne_f16_e32 v5.l, v127.l ; encoding: [0x7f,0xbd,0x0a,0x7e] +v_rndne_f16 v5.l, v1.h +// GFX11: v_rndne_f16_e32 v5.l, v1.h ; encoding: [0x81,0xbd,0x0a,0x7e] + +v_rndne_f16 v5.l, v127.h +// GFX11: v_rndne_f16_e32 v5.l, v127.h ; encoding: [0xff,0xbd,0x0a,0x7e] + v_rndne_f16 v5.l, s1 // GFX11: v_rndne_f16_e32 v5.l, s1 ; encoding: [0x01,0xbc,0x0a,0x7e] @@ -3125,17 +3456,8 @@ v_rndne_f16 v5.l, 0.5 v_rndne_f16 v5.l, src_scc // GFX11: v_rndne_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xbc,0x0a,0x7e] -v_rndne_f16 v127.l, 0xfe0b -// GFX11: v_rndne_f16_e32 v127.l, 0xfe0b ; encoding: [0xff,0xbc,0xfe,0x7e,0x0b,0xfe,0x00,0x00] - -v_rndne_f16 v5.l, v1.h -// GFX11: v_rndne_f16_e32 v5.l, v1.h ; encoding: [0x81,0xbd,0x0a,0x7e] - -v_rndne_f16 v5.l, v127.h -// GFX11: v_rndne_f16_e32 v5.l, v127.h ; encoding: [0xff,0xbd,0x0a,0x7e] - -v_rndne_f16 v127.l, 0.5 -// GFX11: v_rndne_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xbc,0xfe,0x7e] +v_rndne_f16 v5.l, 0xfe0b +// GFX11: v_rndne_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xbc,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_rndne_f16 v5.h, src_scc // GFX11: v_rndne_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xbc,0x0a,0x7f] @@ -3266,8 +3588,14 @@ v_rsq_f16 v5.l, null v_rsq_f16 v5.l, -1 // GFX11: v_rsq_f16_e32 v5.l, -1 ; encoding: [0xc1,0xac,0x0a,0x7e] -v_rsq_f16 v127.l, 0.5 -// GFX11: v_rsq_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xac,0xfe,0x7e] +v_rsq_f16 v5.l, 0.5 +// GFX11: v_rsq_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xac,0x0a,0x7e] + +v_rsq_f16 v5.l, src_scc +// GFX11: v_rsq_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xac,0x0a,0x7e] + +v_rsq_f16 v5.l, 0xfe0b +// GFX11: v_rsq_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xac,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_rsq_f16 v5.h, src_scc // GFX11: v_rsq_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xac,0x0a,0x7f] @@ -3416,6 +3744,12 @@ v_sin_f16 v5.l, v1.l v_sin_f16 v5.l, v127.l // GFX11: v_sin_f16_e32 v5.l, v127.l ; encoding: [0x7f,0xc1,0x0a,0x7e] +v_sin_f16 v5.l, v1.h +// GFX11: v_sin_f16_e32 v5.l, v1.h ; encoding: [0x81,0xc1,0x0a,0x7e] + +v_sin_f16 v5.l, v127.h +// GFX11: v_sin_f16_e32 v5.l, v127.h ; encoding: [0xff,0xc1,0x0a,0x7e] + v_sin_f16 v5.l, s1 // GFX11: v_sin_f16_e32 v5.l, s1 ; encoding: [0x01,0xc0,0x0a,0x7e] @@ -3452,17 +3786,8 @@ v_sin_f16 v5.l, 0.5 v_sin_f16 v5.l, src_scc // GFX11: v_sin_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xc0,0x0a,0x7e] -v_sin_f16 v127.l, 0xfe0b -// GFX11: v_sin_f16_e32 v127.l, 0xfe0b ; encoding: [0xff,0xc0,0xfe,0x7e,0x0b,0xfe,0x00,0x00] - -v_sin_f16 v5.l, v1.h -// GFX11: v_sin_f16_e32 v5.l, v1.h ; encoding: [0x81,0xc1,0x0a,0x7e] - -v_sin_f16 v5.l, v127.h -// GFX11: v_sin_f16_e32 v5.l, v127.h ; encoding: [0xff,0xc1,0x0a,0x7e] - -v_sin_f16 v127.l, 0.5 -// GFX11: v_sin_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xc0,0xfe,0x7e] +v_sin_f16 v5.l, 0xfe0b +// GFX11: v_sin_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xc0,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_sin_f16 v5.h, src_scc // GFX11: v_sin_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xc0,0x0a,0x7f] @@ -3557,8 +3882,14 @@ v_sqrt_f16 v5.l, null v_sqrt_f16 v5.l, -1 // GFX11: v_sqrt_f16_e32 v5.l, -1 ; encoding: [0xc1,0xaa,0x0a,0x7e] -v_sqrt_f16 v127.l, 0.5 -// GFX11: v_sqrt_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xaa,0xfe,0x7e] +v_sqrt_f16 v5.l, 0.5 +// GFX11: v_sqrt_f16_e32 v5.l, 0.5 ; encoding: [0xf0,0xaa,0x0a,0x7e] + +v_sqrt_f16 v5.l, src_scc +// GFX11: v_sqrt_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xaa,0x0a,0x7e] + +v_sqrt_f16 v5.l, 0xfe0b +// GFX11: v_sqrt_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xaa,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_sqrt_f16 v5.h, src_scc // GFX11: v_sqrt_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xaa,0x0a,0x7f] @@ -3674,6 +4005,12 @@ v_trunc_f16 v5.l, v1.l v_trunc_f16 v5.l, v127.l // GFX11: v_trunc_f16_e32 v5.l, v127.l ; encoding: [0x7f,0xbb,0x0a,0x7e] +v_trunc_f16 v5.l, v1.h +// GFX11: v_trunc_f16_e32 v5.l, v1.h ; encoding: [0x81,0xbb,0x0a,0x7e] + +v_trunc_f16 v5.l, v127.h +// GFX11: v_trunc_f16_e32 v5.l, v127.h ; encoding: [0xff,0xbb,0x0a,0x7e] + v_trunc_f16 v5.l, s1 // GFX11: v_trunc_f16_e32 v5.l, s1 ; encoding: [0x01,0xba,0x0a,0x7e] @@ -3710,17 +4047,8 @@ v_trunc_f16 v5.l, 0.5 v_trunc_f16 v5.l, src_scc // GFX11: v_trunc_f16_e32 v5.l, src_scc ; encoding: [0xfd,0xba,0x0a,0x7e] -v_trunc_f16 v127.l, 0xfe0b -// GFX11: v_trunc_f16_e32 v127.l, 0xfe0b ; encoding: [0xff,0xba,0xfe,0x7e,0x0b,0xfe,0x00,0x00] - -v_trunc_f16 v5.l, v1.h -// GFX11: v_trunc_f16_e32 v5.l, v1.h ; encoding: [0x81,0xbb,0x0a,0x7e] - -v_trunc_f16 v5.l, v127.h -// GFX11: v_trunc_f16_e32 v5.l, v127.h ; encoding: [0xff,0xbb,0x0a,0x7e] - -v_trunc_f16 v127.l, 0.5 -// GFX11: v_trunc_f16_e32 v127.l, 0.5 ; encoding: [0xf0,0xba,0xfe,0x7e] +v_trunc_f16 v5.l, 0xfe0b +// GFX11: v_trunc_f16_e32 v5.l, 0xfe0b ; encoding: [0xff,0xba,0x0a,0x7e,0x0b,0xfe,0x00,0x00] v_trunc_f16 v5.h, src_scc // GFX11: v_trunc_f16_e32 v5.h, src_scc ; encoding: [0xfd,0xba,0x0a,0x7f] @@ -3808,9 +4136,3 @@ v_trunc_f64 v[5:6], src_scc v_trunc_f64 v[254:255], 0xaf123456 // GFX11: v_trunc_f64_e32 v[254:255], 0xaf123456 ; encoding: [0xff,0x2e,0xfc,0x7f,0x56,0x34,0x12,0xaf] - -v_trunc_f16 v[5].l, v[1].h -// GFX11: v_trunc_f16_e32 v5.l, v1.h ; encoding: [0x81,0xbb,0x0a,0x7e] - -v_trunc_f16 v[5:5].l, v[1:1].h -// GFX11: v_trunc_f16_e32 v5.l, v1.h ; encoding: [0x81,0xbb,0x0a,0x7e] diff --git a/llvm/utils/update_mc_test_checks.py b/llvm/utils/update_mc_test_checks.py index 363278d1b1f97..d569d2a70e5d5 100755 --- a/llvm/utils/update_mc_test_checks.py +++ b/llvm/utils/update_mc_test_checks.py @@ -29,6 +29,11 @@ ] +class Error(Exception): + def __init__(self, test_info, line_no, msg): + super().__init__(f"{test_info.path}:{line_no}: {msg}") + + def invoke_tool(exe, check_rc, cmd_args, testline, verbose=False): substs = SUBSTITUTIONS + [(t, exe) for t in mc_LIKE_TOOLS] args = [common.applySubstitutions(cmd, substs) for cmd in cmd_args.split("|")] @@ -125,6 +130,62 @@ def getErrCheckLine(prefix, output, mc_mode, line_offset=1): ) +def parse_token_defs(test_info): + tokens = {} + current_token = None + for line_no, line in enumerate(test_info.input_lines, start=1): + # Remove comments. + line = line.split("#")[0].rstrip() + + # Skip everything up to the instructions definition. + if not tokens and not current_token and line != "// INSTS=": + continue + + if not line.startswith("//"): + break + + original_len = len(line) + line = line[2:].lstrip(" ") + indent = original_len - len(line) + + if not line: + current_token = None + continue + + # Define a new token. + if not current_token: + if indent != 4 or not line.endswith("="): + raise Error(test_info, line_no, "token definition expected") + + current_token = line[:-1].strip() + if current_token in tokens: + raise Error(test_info, line_no, f"'{current_token}' redefined") + + tokens[current_token] = [] + continue + + # Add token value. + if indent != 8: + raise Error(test_info, line_no, "wrong indentation for token value") + + tokens[current_token].append(line) + + return tokens + + +def expand_insts(tokens): + def subst(s): + for token, values in tokens.items(): + if token in s: + for value in values: + yield from subst(s.replace(token, value, 1)) + return + + yield s + + yield from subst("INSTS") + + def update_test(ti: common.TestInfo): if ti.path.endswith(".s"): mc_mode = "asm" @@ -209,6 +270,14 @@ def update_test(ti: common.TestInfo): testlines = list(dict.fromkeys(testlines)) common.debug("Valid test line found: ", len(testlines)) + # Where instruction templates are specified, use them instead. + regenerate = False + if mc_mode == "asm": + tokens = parse_token_defs(ti) + if "INSTS" in tokens: + testlines = list(expand_insts(tokens)) + regenerate = True + raw_output = [] raw_prefixes = [] for ( @@ -244,7 +313,6 @@ def update_test(ti: common.TestInfo): raw_prefixes.append(prefixes) - output_lines = [] generated_prefixes = {} sort_keys = {} used_prefixes = set() @@ -321,14 +389,32 @@ def update_test(ti: common.TestInfo): generated_prefixes[input_line] = "\n".join(check_lines) # write output - for input_info in ti.iterlines(output_lines): - input_line = input_info.line - if input_line in testlines: - output_lines.append(input_line) - output_lines.append(generated_prefixes[input_line]) - - elif should_add_line_to_output(input_line, prefix_set, mc_mode): - output_lines.append(input_line) + output_lines = [] + if regenerate: + # Keep all leading comments and empty lines. + for input_info in ti.iterlines(output_lines): + input_line = input_info.line + if not input_line or input_line.startswith(COMMENT[mc_mode]): + output_lines.append(input_line) + continue + break + + # Remove tail empty lines. + while not output_lines[-1]: + del output_lines[-1] + + # Emit test and check lines. + for input_line in testlines: + output_lines.extend(["", input_line, generated_prefixes[input_line]]) + else: + for input_info in ti.iterlines(output_lines): + input_line = input_info.line + if input_line in testlines: + output_lines.append(input_line) + output_lines.append(generated_prefixes[input_line]) + + elif should_add_line_to_output(input_line, prefix_set, mc_mode): + output_lines.append(input_line) if ti.args.unique or ti.args.sort: # split with double newlines