mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 17:00:19 +02:00
CodeEmitter/ASIMDOps: Add crypto four-reg category
This commit is contained in:
1 parent
0f6bec4d5e
commit
95c8a70ce6
2 files changed
+23
-2
No files matched your search
@@ -4534,7 +4534,16 @@ public:
|
||||
}
|
||||
|
||||
// Cryptographic four-register
|
||||
// TODO
|
||||
void eor3(VRegister rd, VRegister rn, VRegister rm, VRegister ra) {
|
||||
Crypto4Register(0b00, rm, ra, rn, rd);
|
||||
}
|
||||
void bcax(VRegister rd, VRegister rn, VRegister rm, VRegister ra) {
|
||||
Crypto4Register(0b01, rm, ra, rn, rd);
|
||||
}
|
||||
void sm3ss1(VRegister rd, VRegister rn, VRegister rm, VRegister ra) {
|
||||
Crypto4Register(0b10, rm, ra, rn, rd);
|
||||
}
|
||||
|
||||
// Cryptographic two-register SHA 512
|
||||
// TODO
|
||||
// Conversion between floating-point and fixed-point
|
||||
@@ -5012,6 +5021,16 @@ private:
|
||||
dc32(Instr);
|
||||
}
|
||||
|
||||
void Crypto4Register(uint32_t opcode, VRegister rm, VRegister ra, VRegister rn, VRegister rd) {
|
||||
uint32_t Instr = 0b1100'1110'0000'0000'0000'0000'0000'0000;
|
||||
Instr |= opcode << 21;
|
||||
Instr |= rm.Idx() << 16;
|
||||
Instr |= ra.Idx() << 10;
|
||||
Instr |= rn.Idx() << 5;
|
||||
Instr |= rd.Idx();
|
||||
dc32(Instr);
|
||||
}
|
||||
|
||||
// Conversion between floating-point and fixed-point
|
||||
template<typename T, typename T2>
|
||||
void ScalarConvertBetweenFPAndFixed(uint32_t S, uint32_t rmode, uint32_t opcode, uint32_t scale, ARMEmitter::Size GPRSize,
|
||||
|
||||
@@ -3137,7 +3137,9 @@ TEST_CASE_METHOD(TestDisassembler, "Emitter: ASIMD: Cryptographic three-register
|
||||
TEST_SINGLE(sm4ekey(VReg::v30, VReg::v29, VReg::v15), "sm4ekey v30.4s, v29.4s, v15.4s");
|
||||
}
|
||||
TEST_CASE_METHOD(TestDisassembler, "Emitter: ASIMD: Cryptographic four-register") {
|
||||
// TODO: Implement in emitter.
|
||||
TEST_SINGLE(eor3(VReg::v30, VReg::v29, VReg::v15, VReg::v7), "eor3 v30.16b, v29.16b, v15.16b, v7.16b");
|
||||
TEST_SINGLE(bcax(VReg::v30, VReg::v29, VReg::v15, VReg::v7), "bcax v30.16b, v29.16b, v15.16b, v7.16b");
|
||||
TEST_SINGLE(sm3ss1(VReg::v30, VReg::v29, VReg::v15, VReg::v7), "sm3ss1 v30.4s, v29.4s, v15.4s, v7.4s");
|
||||
}
|
||||
TEST_CASE_METHOD(TestDisassembler, "Emitter: ASIMD: Cryptographic two-register SHA 512") {
|
||||
// TODO: Implement in emitter.
|
||||
|
||||
Reference in new issue
Block a user