ARMEmitter: Handle SVE conditionally terminate scalars group

This commit is contained in:
Lioncache committed 2023-02-27 14:22:57 -05:00
1 parent ad37c19043
commit 5ee2db34a7
2 files changed
+18 -2

No files matched your search

@@ -1469,7 +1469,19 @@ public:
}
// SVE conditionally terminate scalars
// XXX:
template <typename T>
requires IsXOrWRegister<T>
void ctermeq(T rn, T rm) {
constexpr auto size = std::is_same_v<T, XRegister> ? SubRegSize::i64Bit : SubRegSize::i32Bit;
SVEIntCompareScalar(0b1000, 0, 0b0000, size, rn, rm);
}
template <typename T>
requires IsXOrWRegister<T>
void ctermne(T rn, T rm) {
constexpr auto size = std::is_same_v<T, XRegister> ? SubRegSize::i64Bit : SubRegSize::i32Bit;
SVEIntCompareScalar(0b1000, 1, 0b0000, size, rn, rm);
}
// SVE pointer conflict compare
// XXX:
+5 -1
View File
@@ -1675,7 +1675,11 @@ TEST_CASE_METHOD(TestDisassembler, "Emitter: SVE: SVE integer compare scalar cou
}
TEST_CASE_METHOD(TestDisassembler, "Emitter: SVE: SVE conditionally terminate scalars") {
// TODO: Implement in emitter.
TEST_SINGLE(ctermeq(XReg::x30, XReg::x29), "ctermeq x30, x29");
TEST_SINGLE(ctermeq(WReg::w30, WReg::w29), "ctermeq w30, w29");
TEST_SINGLE(ctermne(XReg::x30, XReg::x29), "ctermne x30, x29");
TEST_SINGLE(ctermne(WReg::w30, WReg::w29), "ctermne w30, w29");
}
TEST_CASE_METHOD(TestDisassembler, "Emitter: SVE: SVE pointer conflict compare") {