Make MOPS tests tolerant of implementation options.
Most MOPS sequences implement one of options "A" or "B", with slightly
different flags in each case. Some `cpy` sequences also permit either
forward or backward iteration, with different register results.
This relies on a new overloaded form of `Equal64` that checks that a
register matches any one of the listed reference values.
In addition, renumber registers to avoid the use of `x16` in a couple of
tests, because this is a MacroAssembler scratch register and could cause
issues in the future.
diff --git a/test/aarch64/test-utils-aarch64.h b/test/aarch64/test-utils-aarch64.h
index 9cf9154..40a5aa5 100644
--- a/test/aarch64/test-utils-aarch64.h
+++ b/test/aarch64/test-utils-aarch64.h
@@ -345,6 +345,10 @@
const RegisterDump*,
uint64_t result,
ExpectedResult option = kExpectEqual);
+bool Equal64(std::vector<uint64_t> reference_list,
+ const RegisterDump*,
+ uint64_t result,
+ ExpectedResult option = kExpectEqual);
bool Equal128(QRegisterValue expected,
const RegisterDump*,
QRegisterValue result);
@@ -358,6 +362,10 @@
const RegisterDump* core,
const Register& reg,
ExpectedResult option = kExpectEqual);
+bool Equal64(std::vector<uint64_t> reference_list,
+ const RegisterDump* core,
+ const Register& reg,
+ ExpectedResult option = kExpectEqual);
bool Equal64(uint64_t expected,
const RegisterDump* core,
const VRegister& vreg);