diff --git a/src/dynarmic/backend/x64/constants.h b/src/dynarmic/backend/x64/constants.h index c2cce2f9..0316cebc 100644 --- a/src/dynarmic/backend/x64/constants.h +++ b/src/dynarmic/backend/x64/constants.h @@ -13,6 +13,42 @@ namespace Dynarmic::Backend::X64 { +// Redefinition of _MM_CMP_* constants for use with the 'vcmp' instruction +namespace Cmp { +constexpr u8 Equal_OQ = 0; // Equal (Quiet, Ordered). +constexpr u8 LessThan_OS = 1; // Less (Signaling, Ordered). +constexpr u8 LessEqual_OS = 2; // Less/Equal (Signaling, Ordered). +constexpr u8 Unordered_Q = 3; // Unordered (Quiet). +constexpr u8 NotEqual_UQ = 4; // Not Equal (Quiet, Unordered). +constexpr u8 NotLessThan_US = 5; // Not Less (Signaling, Unordered). +constexpr u8 NotLessEqual_US = 6; // Not Less/Equal (Signaling, Unordered). +constexpr u8 Ordered_Q = 7; // Ordered (Quiet). +constexpr u8 Equal_UQ = 8; // Equal (Quiet, Unordered). +constexpr u8 NotGreaterEqual_US = 9; // Not Greater/Equal (Signaling, Unordered). +constexpr u8 NotGreaterThan_US = 10; // Not Greater (Signaling, Unordered). +constexpr u8 False_OQ = 11; // False (Quiet, Ordered). +constexpr u8 NotEqual_OQ = 12; // Not Equal (Quiet, Ordered). +constexpr u8 GreaterEqual_OS = 13; // Greater/Equal (Signaling, Ordered). +constexpr u8 GreaterThan_OS = 14; // Greater (Signaling, Ordered). +constexpr u8 True_UQ = 15; // True (Quiet, Unordered). +constexpr u8 Equal_OS = 16; // Equal (Signaling, Ordered). +constexpr u8 LessThan_OQ = 17; // Less (Quiet, Ordered). +constexpr u8 LessEqual_OQ = 18; // Less/Equal (Quiet, Ordered). +constexpr u8 Unordered_S = 19; // Unordered (Signaling). +constexpr u8 NotEqual_US = 20; // Not Equal (Signaling, Unordered). +constexpr u8 NotLessThan_UQ = 21; // Not Less (Quiet, Unordered). +constexpr u8 NotLessEqual_UQ = 22; // Not Less/Equal (Quiet, Unordered). +constexpr u8 Ordered_S = 23; // Ordered (Signaling). +constexpr u8 Equal_US = 24; // Equal (Signaling, Unordered). +constexpr u8 NotGreaterEqual_UQ = 25; // Not Greater/Equal (Quiet, Unordered). +constexpr u8 NotGreaterThan_UQ = 26; // Not Greater (Quiet, Unordered). +constexpr u8 False_OS = 27; // False (Signaling, Ordered). +constexpr u8 NotEqual_OS = 28; // Not Equal (Signaling, Ordered). +constexpr u8 GreaterEqual_OQ = 29; // Greater/Equal (Quiet, Ordered). +constexpr u8 GreaterThan_OQ = 30; // Greater (Quiet, Ordered). +constexpr u8 True_US = 31; // True (Signaling, Unordered). +} // namespace Cmp + // Redefinition of _MM_CMPINT_* constants for use with the 'vpcmp' instruction namespace CmpInt { constexpr u8 Equal = 0x0;