intel/mi_builder: Rewrite unit tests in terms of constant folding

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9116>
This commit is contained in:
Jason Ekstrand 2021-02-17 18:20:24 -06:00 committed by Marge Bot
parent efdbe53eda
commit 9145d77707
1 changed files with 19 additions and 19 deletions

View File

@ -476,6 +476,8 @@ TEST_F(gen_mi_builder_test, memcpy)
/* Start of MI_MATH section */
#if GEN_GEN >= 8 || GEN_IS_HASWELL
#define EXPECT_EQ_IMM(x, imm) EXPECT_EQ(x, gen_mi_value_to_u64(imm))
/* Test adding of immediates of all kinds including
*
* - All zeroes
@ -551,9 +553,9 @@ TEST_F(gen_mi_builder_test, ilt_uge)
for (unsigned i = 0; i < ARRAY_SIZE(values); i++) {
for (unsigned j = 0; j < ARRAY_SIZE(values); j++) {
gen_mi_store(&b, out_mem32(i * 64 + j * 8 + 0),
gen_mi_store(&b, out_mem64(i * 128 + j * 16 + 0),
gen_mi_ult(&b, in_mem64(i * 8), in_mem64(j * 8)));
gen_mi_store(&b, out_mem32(i * 64 + j * 8 + 4),
gen_mi_store(&b, out_mem64(i * 128 + j * 16 + 8),
gen_mi_uge(&b, in_mem64(i * 8), in_mem64(j * 8)));
}
}
@ -562,9 +564,11 @@ TEST_F(gen_mi_builder_test, ilt_uge)
for (unsigned i = 0; i < ARRAY_SIZE(values); i++) {
for (unsigned j = 0; j < ARRAY_SIZE(values); j++) {
uint32_t *out_u32 = (uint32_t *)(output + i * 64 + j * 8);
EXPECT_EQ(out_u32[0], values[i] < values[j] ? ~0u : 0u);
EXPECT_EQ(out_u32[1], values[i] >= values[j] ? ~0u : 0u);
uint64_t *out_u64 = (uint64_t *)(output + i * 128 + j * 16);
EXPECT_EQ_IMM(out_u64[0], gen_mi_ult(&b, gen_mi_imm(values[i]),
gen_mi_imm(values[j])));
EXPECT_EQ_IMM(out_u64[1], gen_mi_uge(&b, gen_mi_imm(values[i]),
gen_mi_imm(values[j])));
}
}
}
@ -581,7 +585,8 @@ TEST_F(gen_mi_builder_test, iand)
submit_batch();
EXPECT_EQ(*(uint64_t *)output, values[0] & values[1]);
EXPECT_EQ_IMM(*(uint64_t *)output, gen_mi_iand(&b, gen_mi_imm(values[0]),
gen_mi_imm(values[1])));
}
TEST_F(gen_mi_builder_test, imul_imm)
@ -615,7 +620,8 @@ TEST_F(gen_mi_builder_test, imul_imm)
for (unsigned i = 0; i < ARRAY_SIZE(lhs); i++) {
for (unsigned j = 0; j < ARRAY_SIZE(rhs); j++) {
EXPECT_EQ(*(uint64_t *)(output + i * 160 + j * 8), lhs[i] * rhs[j]);
EXPECT_EQ_IMM(*(uint64_t *)(output + i * 160 + j * 8),
gen_mi_imul_imm(&b, gen_mi_imm(lhs[i]), rhs[j]));
}
}
}
@ -633,11 +639,8 @@ TEST_F(gen_mi_builder_test, ishl_imm)
submit_batch();
for (unsigned i = 0; i <= max_shift; i++) {
if (i >= 64) {
EXPECT_EQ(*(uint64_t *)(output + i * 8), 0);
} else {
EXPECT_EQ(*(uint64_t *)(output + i * 8), value << i);
}
EXPECT_EQ_IMM(*(uint64_t *)(output + i * 8),
gen_mi_ishl_imm(&b, gen_mi_imm(value), i));
}
}
@ -654,11 +657,8 @@ TEST_F(gen_mi_builder_test, ushr32_imm)
submit_batch();
for (unsigned i = 0; i <= max_shift; i++) {
if (i >= 64) {
EXPECT_EQ(*(uint64_t *)(output + i * 8), 0);
} else {
EXPECT_EQ(*(uint64_t *)(output + i * 8), (value >> i) & UINT32_MAX);
}
EXPECT_EQ_IMM(*(uint64_t *)(output + i * 8),
gen_mi_ushr32_imm(&b, gen_mi_imm(value), i));
}
}
@ -688,8 +688,8 @@ TEST_F(gen_mi_builder_test, udiv32_imm)
for (unsigned i = 0; i < ARRAY_SIZE(values); i++) {
for (unsigned j = 0; j < ARRAY_SIZE(values); j++) {
EXPECT_EQ(*(uint32_t *)(output + i * 80 + j * 4),
values[i] / values[j]);
EXPECT_EQ_IMM(*(uint32_t *)(output + i * 80 + j * 4),
gen_mi_udiv32_imm(&b, gen_mi_imm(values[i]), values[j]));
}
}
}