Added tests for the ARM parallel halving instructions. (#49)

This commit is contained in:
Sebastian Valle 2016-11-26 12:24:57 -05:00 committed by Merry
parent c0c1bb1094
commit cda25c12b3

View file

@ -850,11 +850,32 @@ TEST_CASE("Fuzz ARM parallel instructions", "[JitX64]") {
InstructionGenerator("cccc01100110nnnndddd11110111mmmm", is_valid), // UQSUB16 InstructionGenerator("cccc01100110nnnndddd11110111mmmm", is_valid), // UQSUB16
}}; }};
const std::array<InstructionGenerator, 12> halving_instructions = {{
InstructionGenerator("cccc01100011nnnndddd11111001mmmm", is_valid), // SHADD8
InstructionGenerator("cccc01100011nnnndddd11110001mmmm", is_valid), // SHADD16
InstructionGenerator("cccc01100011nnnndddd11110011mmmm", is_valid), // SHASX
InstructionGenerator("cccc01100011nnnndddd11110101mmmm", is_valid), // SHSAX
InstructionGenerator("cccc01100011nnnndddd11111111mmmm", is_valid), // SHSUB8
InstructionGenerator("cccc01100011nnnndddd11110111mmmm", is_valid), // SHSUB16
InstructionGenerator("cccc01100111nnnndddd11111001mmmm", is_valid), // UHADD8
InstructionGenerator("cccc01100111nnnndddd11110001mmmm", is_valid), // UHADD16
InstructionGenerator("cccc01100111nnnndddd11110011mmmm", is_valid), // UHASX
InstructionGenerator("cccc01100111nnnndddd11110101mmmm", is_valid), // UHSAX
InstructionGenerator("cccc01100111nnnndddd11111111mmmm", is_valid), // UHSUB8
InstructionGenerator("cccc01100111nnnndddd11110111mmmm", is_valid), // UHSUB16
}};
SECTION("Parallel Add/Subtract (Saturating)") { SECTION("Parallel Add/Subtract (Saturating)") {
FuzzJitArm(1, 1, 10000, [&saturating_instructions]() -> u32 { FuzzJitArm(1, 1, 10000, [&saturating_instructions]() -> u32 {
return saturating_instructions[RandInt<size_t>(0, saturating_instructions.size() - 1)].Generate(); return saturating_instructions[RandInt<size_t>(0, saturating_instructions.size() - 1)].Generate();
}); });
} }
SECTION("Parallel Add/Subtract (Halving)") {
FuzzJitArm(1, 1, 10000, [&halving_instructions]() -> u32 {
return halving_instructions[RandInt<size_t>(0, halving_instructions.size() - 1)].Generate();
});
}
} }
TEST_CASE( "SMUAD", "[JitX64]" ) { TEST_CASE( "SMUAD", "[JitX64]" ) {