[x64] Add `VECTOR_SHA_I8_SAME_CONSTANT` unit test

This is to target the new GNFI-based optimization for the Int8 case.
This commit is contained in:
Wunkolo 2021-12-28 20:05:46 -08:00 committed by Rick Gibbed
parent 31c9f026c5
commit 5d1b53cd6f
1 changed files with 22 additions and 0 deletions

View File

@ -58,6 +58,28 @@ TEST_CASE("VECTOR_SHA_I8_CONSTANT", "[instr]") {
});
}
// This targets the "all_same" optimization of the Int8 specialization of
// VECTOR_SHA_V128
TEST_CASE("VECTOR_SHA_I8_SAME_CONSTANT", "[instr]") {
TestFunction test([](HIRBuilder& b) {
StoreVR(
b, 3,
b.VectorSha(LoadVR(b, 4), b.LoadConstantVec128(vec128b(5)), INT8_TYPE));
b.Return();
});
test.Run(
[](PPCContext* ctx) {
ctx->v[4] = vec128b(0x7E, 0x7E, 0x7E, 0x7F, 0x80, 0xFF, 0x01, 0x12,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
},
[](PPCContext* ctx) {
auto result = ctx->v[3];
REQUIRE(result == vec128b(0x03, 0x03, 0x03, 0x03, 0xfc, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00));
});
}
TEST_CASE("VECTOR_SHA_I16", "[instr]") {
TestFunction test([](HIRBuilder& b) {
StoreVR(b, 3, b.VectorSha(LoadVR(b, 4), LoadVR(b, 5), INT16_TYPE));