mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
pan/va: Make packing tests explicitly use arch v10
Once we implement packing support for v15, the encoding will drastically change. Therefore, make the packing tests explicitly use v10 to allow for adding v15 support later.
This commit is contained in:
parent
1ba1f76146
commit
e1739f271a
1 changed files with 185 additions and 190 deletions
|
|
@ -22,8 +22,6 @@
|
|||
} \
|
||||
} while (0)
|
||||
|
||||
#define CASE(instr, expected) CASE_ARCH(instr, 10, expected)
|
||||
|
||||
class ValhallPacking : public testing::Test {
|
||||
protected:
|
||||
ValhallPacking()
|
||||
|
|
@ -48,124 +46,128 @@ class ValhallPacking : public testing::Test {
|
|||
|
||||
TEST_F(ValhallPacking, Moves)
|
||||
{
|
||||
CASE(bi_mov_i32_to(b, bi_register(1), bi_register(2)),
|
||||
0x0091c10000000002ULL);
|
||||
CASE(bi_mov_i32_to(b, bi_register(1),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 5), false)),
|
||||
0x0091c1000000008aULL);
|
||||
bi_instr *I = bi_mov_i32_to(b, bi_register(1), bi_register(2));
|
||||
CASE_ARCH(I, 10, 0x0091c10000000002ULL);
|
||||
|
||||
I = bi_mov_i32_to(b, bi_register(1),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 5), false));
|
||||
CASE_ARCH(I, 10, 0x0091c1000000008aULL);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Fadd)
|
||||
{
|
||||
CASE(bi_fadd_f32_to(b, bi_register(0), bi_register(1), bi_register(2)),
|
||||
0x00a4c00000000201ULL);
|
||||
CASE(
|
||||
bi_fadd_f32_to(b, bi_register(0), bi_register(1), bi_abs(bi_register(2))),
|
||||
0x00a4c02000000201ULL);
|
||||
CASE(
|
||||
bi_fadd_f32_to(b, bi_register(0), bi_register(1), bi_neg(bi_register(2))),
|
||||
0x00a4c01000000201ULL);
|
||||
bi_instr *I =
|
||||
bi_fadd_f32_to(b, bi_register(0), bi_register(1), bi_register(2));
|
||||
CASE_ARCH(I, 10, 0x00a4c00000000201ULL);
|
||||
|
||||
CASE(bi_fadd_v2f16_to(b, bi_register(0),
|
||||
bi_swz_16(bi_register(1), false, false),
|
||||
bi_swz_16(bi_register(0), true, true)),
|
||||
0x00a5c0000c000001ULL);
|
||||
I =
|
||||
bi_fadd_f32_to(b, bi_register(0), bi_register(1), bi_abs(bi_register(2)));
|
||||
CASE_ARCH(I, 10, 0x00a4c02000000201ULL);
|
||||
|
||||
CASE(bi_fadd_v2f16_to(b, bi_register(0), bi_register(1), bi_register(0)),
|
||||
0x00a5c00028000001ULL);
|
||||
I =
|
||||
bi_fadd_f32_to(b, bi_register(0), bi_register(1), bi_neg(bi_register(2)));
|
||||
CASE_ARCH(I, 10, 0x00a4c01000000201ULL);
|
||||
|
||||
CASE(bi_fadd_v2f16_to(b, bi_register(0), bi_register(1),
|
||||
bi_swz_16(bi_register(0), true, false)),
|
||||
0x00a5c00024000001ULL);
|
||||
I = bi_fadd_v2f16_to(b, bi_register(0),
|
||||
bi_swz_16(bi_register(1), false, false),
|
||||
bi_swz_16(bi_register(0), true, true));
|
||||
CASE_ARCH(I, 10, 0x00a5c0000c000001ULL);
|
||||
|
||||
CASE(bi_fadd_v2f16_to(b, bi_register(0), bi_discard(bi_abs(bi_register(0))),
|
||||
bi_neg(zero)),
|
||||
0x00a5c0902800c040ULL);
|
||||
I = bi_fadd_v2f16_to(b, bi_register(0), bi_register(1), bi_register(0));
|
||||
CASE_ARCH(I, 10, 0x00a5c00028000001ULL);
|
||||
|
||||
CASE(bi_fadd_f32_to(b, bi_register(0), bi_register(1), zero),
|
||||
0x00a4c0000000c001ULL);
|
||||
I = bi_fadd_v2f16_to(b, bi_register(0), bi_register(1),
|
||||
bi_swz_16(bi_register(0), true, false));
|
||||
CASE_ARCH(I, 10, 0x00a5c00024000001ULL);
|
||||
|
||||
CASE(bi_fadd_f32_to(b, bi_register(0), bi_register(1), bi_neg(zero)),
|
||||
0x00a4c0100000c001ULL);
|
||||
I = bi_fadd_v2f16_to(b, bi_register(0), bi_discard(bi_abs(bi_register(0))),
|
||||
bi_neg(zero));
|
||||
CASE_ARCH(I, 10, 0x00a5c0902800c040ULL);
|
||||
|
||||
CASE(bi_fadd_f32_to(b, bi_register(0), bi_register(1),
|
||||
bi_half(bi_register(0), true)),
|
||||
0x00a4c00008000001ULL);
|
||||
I = bi_fadd_f32_to(b, bi_register(0), bi_register(1), zero);
|
||||
CASE_ARCH(I, 10, 0x00a4c0000000c001ULL);
|
||||
|
||||
CASE(bi_fadd_f32_to(b, bi_register(0), bi_register(1),
|
||||
bi_half(bi_register(0), false)),
|
||||
0x00a4c00004000001ULL);
|
||||
I = bi_fadd_f32_to(b, bi_register(0), bi_register(1), bi_neg(zero));
|
||||
CASE_ARCH(I, 10, 0x00a4c0100000c001ULL);
|
||||
|
||||
I = bi_fadd_f32_to(b, bi_register(0), bi_register(1),
|
||||
bi_half(bi_register(0), true));
|
||||
CASE_ARCH(I, 10, 0x00a4c00008000001ULL);
|
||||
|
||||
I = bi_fadd_f32_to(b, bi_register(0), bi_register(1),
|
||||
bi_half(bi_register(0), false));
|
||||
CASE_ARCH(I, 10, 0x00a4c00004000001ULL);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Clper)
|
||||
{
|
||||
CASE(bi_clper_i32_to(b, bi_register(0), bi_register(0), bi_byte(n4567, 0),
|
||||
BI_INACTIVE_RESULT_F1, BI_LANE_OP_NONE,
|
||||
BI_SUBGROUP_SUBGROUP16),
|
||||
0x00a0c030128fc900);
|
||||
bi_instr *I = bi_clper_i32_to(b, bi_register(0), bi_register(0),
|
||||
bi_byte(n4567, 0), BI_INACTIVE_RESULT_F1,
|
||||
BI_LANE_OP_NONE, BI_SUBGROUP_SUBGROUP16);
|
||||
CASE_ARCH(I, 10, 0x00a0c030128fc900);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Clamps)
|
||||
{
|
||||
bi_instr *I = bi_fadd_f32_to(b, bi_register(0), bi_register(1),
|
||||
bi_neg(bi_abs(bi_register(2))));
|
||||
CASE(I, 0x00a4c03000000201ULL);
|
||||
CASE_ARCH(I, 10, 0x00a4c03000000201ULL);
|
||||
|
||||
I->clamp = BI_CLAMP_CLAMP_M1_1;
|
||||
CASE(I, 0x00a4c03200000201ULL);
|
||||
CASE_ARCH(I, 10, 0x00a4c03200000201ULL);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Misc)
|
||||
{
|
||||
CASE(bi_fma_f32_to(b, bi_register(1), bi_discard(bi_register(1)),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 4), false),
|
||||
bi_neg(zero)),
|
||||
0x00b2c10400c08841ULL);
|
||||
bi_instr *I = bi_fma_f32_to(
|
||||
b, bi_register(1), bi_discard(bi_register(1)),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 4), false), bi_neg(zero));
|
||||
CASE_ARCH(I, 10, 0x00b2c10400c08841ULL);
|
||||
|
||||
CASE(bi_fround_f32_to(b, bi_register(2), bi_discard(bi_neg(bi_register(2))),
|
||||
BI_ROUND_RTN),
|
||||
0x0090c240800d0042ULL);
|
||||
I = bi_fround_f32_to(b, bi_register(2), bi_discard(bi_neg(bi_register(2))),
|
||||
BI_ROUND_RTN);
|
||||
CASE_ARCH(I, 10, 0x0090c240800d0042ULL);
|
||||
|
||||
CASE(bi_fround_v2f16_to(b, bi_half(bi_register(0), false), bi_register(0),
|
||||
BI_ROUND_RTN),
|
||||
0x00904000a00f0000ULL);
|
||||
I = bi_fround_v2f16_to(b, bi_half(bi_register(0), false), bi_register(0),
|
||||
BI_ROUND_RTN);
|
||||
CASE_ARCH(I, 10, 0x00904000a00f0000ULL);
|
||||
|
||||
CASE(
|
||||
bi_fround_v2f16_to(b, bi_half(bi_register(0), false),
|
||||
bi_swz_16(bi_register(1), true, false), BI_ROUND_RTN),
|
||||
0x00904000900f0001ULL);
|
||||
I = bi_fround_v2f16_to(b, bi_half(bi_register(0), false),
|
||||
bi_swz_16(bi_register(1), true, false), BI_ROUND_RTN);
|
||||
CASE_ARCH(I, 10, 0x00904000900f0001ULL);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, FaddImm)
|
||||
{
|
||||
CASE(bi_fadd_imm_f32_to(b, bi_register(2), bi_discard(bi_register(2)),
|
||||
0x4847C6C0),
|
||||
0x0114C24847C6C042ULL);
|
||||
bi_instr *I = bi_fadd_imm_f32_to(b, bi_register(2),
|
||||
bi_discard(bi_register(2)), 0x4847C6C0);
|
||||
CASE_ARCH(I, 10, 0x0114C24847C6C042ULL);
|
||||
|
||||
CASE(bi_fadd_imm_v2f16_to(b, bi_register(2), bi_discard(bi_register(2)),
|
||||
0x70AC6784),
|
||||
0x0115C270AC678442ULL);
|
||||
I = bi_fadd_imm_v2f16_to(b, bi_register(2), bi_discard(bi_register(2)),
|
||||
0x70AC6784);
|
||||
CASE_ARCH(I, 10, 0x0115C270AC678442ULL);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Comparions)
|
||||
{
|
||||
CASE(bi_icmp_or_v2s16_to(b, bi_register(2),
|
||||
bi_discard(bi_swz_16(bi_register(3), true, false)),
|
||||
bi_discard(bi_swz_16(bi_register(2), true, false)),
|
||||
zero, BI_CMPF_GT, BI_RESULT_TYPE_M1),
|
||||
0x00f9c21184c04243);
|
||||
bi_instr *I = bi_icmp_or_v2s16_to(
|
||||
b, bi_register(2), bi_discard(bi_swz_16(bi_register(3), true, false)),
|
||||
bi_discard(bi_swz_16(bi_register(2), true, false)), zero, BI_CMPF_GT,
|
||||
BI_RESULT_TYPE_M1);
|
||||
CASE_ARCH(I, 10, 0x00f9c21184c04243);
|
||||
|
||||
CASE(bi_fcmp_or_v2f16_to(b, bi_register(2),
|
||||
bi_discard(bi_swz_16(bi_register(3), true, false)),
|
||||
bi_discard(bi_swz_16(bi_register(2), false, false)),
|
||||
zero, BI_CMPF_GT, BI_RESULT_TYPE_M1),
|
||||
0x00f5c20190c04243);
|
||||
I = bi_fcmp_or_v2f16_to(b, bi_register(2),
|
||||
bi_discard(bi_swz_16(bi_register(3), true, false)),
|
||||
bi_discard(bi_swz_16(bi_register(2), false, false)),
|
||||
zero, BI_CMPF_GT, BI_RESULT_TYPE_M1);
|
||||
CASE_ARCH(I, 10, 0x00f5c20190c04243);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Conversions)
|
||||
{
|
||||
CASE(bi_v2s16_to_v2f16_to(b, bi_register(2), bi_discard(bi_register(2))),
|
||||
0x0090c22000070042);
|
||||
bi_instr *I =
|
||||
bi_v2s16_to_v2f16_to(b, bi_register(2), bi_discard(bi_register(2)));
|
||||
CASE_ARCH(I, 10, 0x0090c22000070042);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, BranchzI16)
|
||||
|
|
@ -173,88 +175,86 @@ TEST_F(ValhallPacking, BranchzI16)
|
|||
bi_instr *I =
|
||||
bi_branchz_i16(b, bi_half(bi_register(2), false), bi_null(), BI_CMPF_EQ);
|
||||
I->branch_offset = 1;
|
||||
CASE(I, 0x001fc03000000102);
|
||||
CASE_ARCH(I, 10, 0x001fc03000000102);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, BranchzI16Backwards)
|
||||
{
|
||||
bi_instr *I = bi_branchz_i16(b, zero, bi_null(), BI_CMPF_EQ);
|
||||
I->branch_offset = -8;
|
||||
CASE(I, 0x001fc017fffff8c0);
|
||||
CASE_ARCH(I, 10, 0x001fc017fffff8c0);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Blend)
|
||||
{
|
||||
CASE(
|
||||
bi_instr *I =
|
||||
bi_blend_to(b, bi_null(), bi_register(0), bi_register(60),
|
||||
bi_fau(BIR_FAU_BLEND_0, false), bi_fau(BIR_FAU_BLEND_0, true),
|
||||
bi_null(), BI_REGISTER_FORMAT_F16, 2, 0),
|
||||
0x007f4004333c00f0);
|
||||
bi_null(), BI_REGISTER_FORMAT_F16, 2, 0);
|
||||
CASE_ARCH(I, 10, 0x007f4004333c00f0);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Mux)
|
||||
{
|
||||
CASE(bi_mux_i32_to(b, bi_register(0), bi_discard(bi_register(0)),
|
||||
bi_discard(bi_register(4)),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 0), false),
|
||||
BI_MUX_BIT),
|
||||
0x00b8c00300804440ull);
|
||||
bi_instr *I = bi_mux_i32_to(
|
||||
b, bi_register(0), bi_discard(bi_register(0)), bi_discard(bi_register(4)),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 0), false), BI_MUX_BIT);
|
||||
CASE_ARCH(I, 10, 0x00b8c00300804440ull);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, AtestFP16)
|
||||
{
|
||||
CASE(bi_atest_to(b, bi_register(60), bi_register(60),
|
||||
bi_half(bi_register(1), true),
|
||||
bi_fau(BIR_FAU_ATEST_PARAM, false)),
|
||||
0x007dbc0208ea013c);
|
||||
bi_instr *I = bi_atest_to(b, bi_register(60), bi_register(60),
|
||||
bi_half(bi_register(1), true),
|
||||
bi_fau(BIR_FAU_ATEST_PARAM, false));
|
||||
CASE_ARCH(I, 10, 0x007dbc0208ea013c);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, AtestFP32)
|
||||
{
|
||||
CASE(bi_atest_to(b, bi_register(60), bi_register(60), one,
|
||||
bi_fau(BIR_FAU_ATEST_PARAM, false)),
|
||||
0x007dbc0200ead03c);
|
||||
bi_instr *I = bi_atest_to(b, bi_register(60), bi_register(60), one,
|
||||
bi_fau(BIR_FAU_ATEST_PARAM, false));
|
||||
CASE_ARCH(I, 10, 0x007dbc0200ead03c);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Transcendentals)
|
||||
{
|
||||
CASE(bi_frexpm_f32_to(b, bi_register(1), bi_register(0), false, true),
|
||||
0x0099c10001000000);
|
||||
bi_instr *I =
|
||||
bi_frexpm_f32_to(b, bi_register(1), bi_register(0), false, true);
|
||||
CASE_ARCH(I, 10, 0x0099c10001000000);
|
||||
|
||||
CASE(bi_frexpe_f32_to(b, bi_register(0), bi_discard(bi_register(0)), false,
|
||||
true),
|
||||
0x0099c00001020040);
|
||||
I = bi_frexpe_f32_to(b, bi_register(0), bi_discard(bi_register(0)), false,
|
||||
true);
|
||||
CASE_ARCH(I, 10, 0x0099c00001020040);
|
||||
|
||||
CASE(bi_frsq_f32_to(b, bi_register(2), bi_register(1)), 0x009cc20000020001);
|
||||
I = bi_frsq_f32_to(b, bi_register(2), bi_register(1));
|
||||
CASE_ARCH(I, 10, 0x009cc20000020001);
|
||||
|
||||
CASE(bi_fma_rscale_f32_to(b, bi_register(0), bi_discard(bi_register(1)),
|
||||
bi_discard(bi_register(2)), bi_neg(zero),
|
||||
bi_discard(bi_register(0)), BI_SPECIAL_LEFT),
|
||||
0x0162c00440c04241);
|
||||
I = bi_fma_rscale_f32_to(b, bi_register(0), bi_discard(bi_register(1)),
|
||||
bi_discard(bi_register(2)), bi_neg(zero),
|
||||
bi_discard(bi_register(0)), BI_SPECIAL_LEFT);
|
||||
CASE_ARCH(I, 10, 0x0162c00440c04241);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Csel)
|
||||
{
|
||||
CASE(bi_csel_u32_to(b, bi_register(1), bi_discard(bi_register(2)),
|
||||
bi_discard(bi_register(3)),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), false),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), true),
|
||||
BI_CMPF_EQ),
|
||||
0x0150c10085844342);
|
||||
bi_instr *I = bi_csel_u32_to(
|
||||
b, bi_register(1), bi_discard(bi_register(2)), bi_discard(bi_register(3)),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), false),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), true), BI_CMPF_EQ);
|
||||
CASE_ARCH(I, 10, 0x0150c10085844342);
|
||||
|
||||
CASE(bi_csel_u32_to(b, bi_register(1), bi_discard(bi_register(2)),
|
||||
bi_discard(bi_register(3)),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), false),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), true),
|
||||
BI_CMPF_LT),
|
||||
0x0150c10485844342);
|
||||
I = bi_csel_u32_to(
|
||||
b, bi_register(1), bi_discard(bi_register(2)), bi_discard(bi_register(3)),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), false),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), true), BI_CMPF_LT);
|
||||
CASE_ARCH(I, 10, 0x0150c10485844342);
|
||||
|
||||
CASE(bi_csel_s32_to(b, bi_register(1), bi_discard(bi_register(2)),
|
||||
bi_discard(bi_register(3)),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), false),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), true),
|
||||
BI_CMPF_LT),
|
||||
0x0158c10485844342);
|
||||
I = bi_csel_s32_to(
|
||||
b, bi_register(1), bi_discard(bi_register(2)), bi_discard(bi_register(3)),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), false),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 2), true), BI_CMPF_LT);
|
||||
CASE_ARCH(I, 10, 0x0158c10485844342);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, LdAttrImm)
|
||||
|
|
@ -264,64 +264,58 @@ TEST_F(ValhallPacking, LdAttrImm)
|
|||
bi_discard(bi_register(61)), BI_REGISTER_FORMAT_F16, BI_VECSIZE_V4, 1);
|
||||
I->table = 1;
|
||||
|
||||
CASE(I, 0x0066800433117d7c);
|
||||
CASE_ARCH(I, 10, 0x0066800433117d7c);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, LdVarBufImmF16)
|
||||
{
|
||||
CASE(bi_ld_var_buf_imm_f16_to(b, bi_register(2), bi_register(61),
|
||||
BI_REGISTER_FORMAT_F16, BI_SAMPLE_CENTER,
|
||||
BI_SOURCE_FORMAT_F16, BI_UPDATE_RETRIEVE,
|
||||
BI_VECSIZE_V4, 0),
|
||||
0x005d82143300003d);
|
||||
bi_instr *I = bi_ld_var_buf_imm_f16_to(
|
||||
b, bi_register(2), bi_register(61), BI_REGISTER_FORMAT_F16,
|
||||
BI_SAMPLE_CENTER, BI_SOURCE_FORMAT_F16, BI_UPDATE_RETRIEVE, BI_VECSIZE_V4,
|
||||
0);
|
||||
CASE_ARCH(I, 10, 0x005d82143300003d);
|
||||
|
||||
CASE(bi_ld_var_buf_imm_f16_to(b, bi_register(0), bi_register(61),
|
||||
BI_REGISTER_FORMAT_F16, BI_SAMPLE_SAMPLE,
|
||||
BI_SOURCE_FORMAT_F16, BI_UPDATE_STORE,
|
||||
BI_VECSIZE_V4, 0),
|
||||
0x005d80843300003d);
|
||||
I = bi_ld_var_buf_imm_f16_to(b, bi_register(0), bi_register(61),
|
||||
BI_REGISTER_FORMAT_F16, BI_SAMPLE_SAMPLE,
|
||||
BI_SOURCE_FORMAT_F16, BI_UPDATE_STORE,
|
||||
BI_VECSIZE_V4, 0);
|
||||
CASE_ARCH(I, 10, 0x005d80843300003d);
|
||||
|
||||
CASE_ARCH(bi_ld_var_buf_imm_f16_to(b, bi_register(0), bi_register(61),
|
||||
BI_REGISTER_FORMAT_F16,
|
||||
BI_SAMPLE_CENTROID, BI_SOURCE_FORMAT_F16,
|
||||
BI_UPDATE_STORE, BI_VECSIZE_V4, 8),
|
||||
10, 0x005d80443308003d);
|
||||
|
||||
CASE_ARCH(bi_ld_var_buf_imm_f16_to(b, bi_register(0), bi_register(61),
|
||||
BI_REGISTER_FORMAT_F16,
|
||||
BI_SAMPLE_CENTROID, BI_SOURCE_FORMAT_F16,
|
||||
BI_UPDATE_STORE, BI_VECSIZE_V4, 8),
|
||||
11, 0x005d80443300083d);
|
||||
I = bi_ld_var_buf_imm_f16_to(b, bi_register(0), bi_register(61),
|
||||
BI_REGISTER_FORMAT_F16, BI_SAMPLE_CENTROID,
|
||||
BI_SOURCE_FORMAT_F16, BI_UPDATE_STORE,
|
||||
BI_VECSIZE_V4, 8);
|
||||
CASE_ARCH(I, 10, 0x005d80443308003d);
|
||||
CASE_ARCH(I, 11, 0x005d80443300083d);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, LdVarBufFlatImmFormat)
|
||||
{
|
||||
CASE_ARCH(bi_ld_var_buf_flat_imm_to(b, bi_register(0),
|
||||
BI_REGISTER_FORMAT_F32,
|
||||
BI_VECSIZE_V4, 0x12),
|
||||
14, 0x0040800832001200);
|
||||
bi_instr *I = bi_ld_var_buf_flat_imm_to(
|
||||
b, bi_register(0), BI_REGISTER_FORMAT_F32, BI_VECSIZE_V4, 0x12);
|
||||
CASE_ARCH(I, 14, 0x0040800832001200);
|
||||
|
||||
CASE_ARCH(bi_ld_var_buf_flat_imm_to(b, bi_register(0),
|
||||
BI_REGISTER_FORMAT_F16,
|
||||
BI_VECSIZE_V4, 0x12),
|
||||
14, 0x0040800433001200);
|
||||
I = bi_ld_var_buf_flat_imm_to(b, bi_register(0), BI_REGISTER_FORMAT_F16,
|
||||
BI_VECSIZE_V4, 0x12);
|
||||
CASE_ARCH(I, 14, 0x0040800433001200);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, LdVarBufFlat)
|
||||
{
|
||||
CASE_ARCH(bi_ld_var_buf_flat_to(b, bi_register(0), bi_register(61),
|
||||
BI_REGISTER_FORMAT_F32, BI_VECSIZE_V4),
|
||||
14, 0x005f80083200003d);
|
||||
bi_instr *I = bi_ld_var_buf_flat_to(b, bi_register(0), bi_register(61),
|
||||
BI_REGISTER_FORMAT_F32, BI_VECSIZE_V4);
|
||||
CASE_ARCH(I, 14, 0x005f80083200003d);
|
||||
|
||||
CASE_ARCH(bi_ld_var_buf_flat_to(b, bi_register(0), bi_register(61),
|
||||
BI_REGISTER_FORMAT_F16, BI_VECSIZE_V4),
|
||||
14, 0x005f80043300003d);
|
||||
I = bi_ld_var_buf_flat_to(b, bi_register(0), bi_register(61),
|
||||
BI_REGISTER_FORMAT_F16, BI_VECSIZE_V4);
|
||||
CASE_ARCH(I, 14, 0x005f80043300003d);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, LeaBufImm)
|
||||
{
|
||||
CASE(bi_lea_buf_imm_to(b, bi_register(4), bi_discard(bi_register(59))),
|
||||
0x005e84040000007b);
|
||||
bi_instr *I =
|
||||
bi_lea_buf_imm_to(b, bi_register(4), bi_discard(bi_register(59)));
|
||||
CASE_ARCH(I, 10, 0x005e84040000007b);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, StoreMemoryAccess)
|
||||
|
|
@ -329,61 +323,62 @@ TEST_F(ValhallPacking, StoreMemoryAccess)
|
|||
bi_instr *I = bi_store_i96(b, bi_register(0), bi_discard(bi_register(4)),
|
||||
bi_discard(bi_register(5)), BI_SEG_NONE, 0);
|
||||
I->mem_access = VA_MEMORY_ACCESS_ESTREAM;
|
||||
CASE(I, 0x0061400632000044);
|
||||
CASE_ARCH(I, 10, 0x0061400632000044);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Convert16To32)
|
||||
{
|
||||
CASE(bi_u16_to_u32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), false))),
|
||||
0x0090c20000140077);
|
||||
bi_instr *I = bi_u16_to_u32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), false)));
|
||||
CASE_ARCH(I, 10, 0x0090c20000140077);
|
||||
|
||||
CASE(bi_u16_to_u32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), true))),
|
||||
0x0090c20010140077);
|
||||
I = bi_u16_to_u32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), true)));
|
||||
CASE_ARCH(I, 10, 0x0090c20010140077);
|
||||
|
||||
CASE(bi_u16_to_f32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), false))),
|
||||
0x0090c20000150077);
|
||||
I = bi_u16_to_f32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), false)));
|
||||
CASE_ARCH(I, 10, 0x0090c20000150077);
|
||||
|
||||
CASE(bi_u16_to_f32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), true))),
|
||||
0x0090c20010150077);
|
||||
I = bi_u16_to_f32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), true)));
|
||||
CASE_ARCH(I, 10, 0x0090c20010150077);
|
||||
|
||||
CASE(bi_s16_to_s32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), false))),
|
||||
0x0090c20000040077);
|
||||
I = bi_s16_to_s32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), false)));
|
||||
CASE_ARCH(I, 10, 0x0090c20000040077);
|
||||
|
||||
CASE(bi_s16_to_s32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), true))),
|
||||
0x0090c20010040077);
|
||||
I = bi_s16_to_s32_to(b, bi_register(2),
|
||||
bi_discard(bi_half(bi_register(55), true)));
|
||||
CASE_ARCH(I, 10, 0x0090c20010040077);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Swizzle8)
|
||||
{
|
||||
CASE(bi_icmp_or_v4u8_to(b, bi_register(1), bi_byte(bi_register(0), 0), zero,
|
||||
zero, BI_CMPF_NE, BI_RESULT_TYPE_I1),
|
||||
0x00f2c14300c0c000);
|
||||
bi_instr *I =
|
||||
bi_icmp_or_v4u8_to(b, bi_register(1), bi_byte(bi_register(0), 0), zero,
|
||||
zero, BI_CMPF_NE, BI_RESULT_TYPE_I1);
|
||||
CASE_ARCH(I, 10, 0x00f2c14300c0c000);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, FauPage1)
|
||||
{
|
||||
CASE(bi_mov_i32_to(b, bi_register(1),
|
||||
bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 32), false)),
|
||||
0x0291c10000000080ULL);
|
||||
bi_instr *I = bi_mov_i32_to(
|
||||
b, bi_register(1), bi_fau((enum bir_fau)(BIR_FAU_UNIFORM | 32), false));
|
||||
CASE_ARCH(I, 10, 0x0291c10000000080ULL);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, LdTileV3F16)
|
||||
{
|
||||
CASE(bi_ld_tile_to(b, bi_register(4), bi_discard(bi_register(0)),
|
||||
bi_register(60), bi_register(3), BI_REGISTER_FORMAT_F16,
|
||||
BI_VECSIZE_V3),
|
||||
0x0078840423033c40);
|
||||
bi_instr *I = bi_ld_tile_to(b, bi_register(4), bi_discard(bi_register(0)),
|
||||
bi_register(60), bi_register(3),
|
||||
BI_REGISTER_FORMAT_F16, BI_VECSIZE_V3);
|
||||
CASE_ARCH(I, 10, 0x0078840423033c40);
|
||||
}
|
||||
|
||||
TEST_F(ValhallPacking, Rhadd8)
|
||||
{
|
||||
CASE(bi_hadd_v4s8_to(b, bi_register(0), bi_discard(bi_register(1)),
|
||||
bi_discard(bi_register(0)), BI_ROUND_RTP),
|
||||
0x00aac000400b4041);
|
||||
bi_instr *I = bi_hadd_v4s8_to(b, bi_register(0), bi_discard(bi_register(1)),
|
||||
bi_discard(bi_register(0)), BI_ROUND_RTP);
|
||||
CASE_ARCH(I, 10, 0x00aac000400b4041);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue