mirror of
https://github.com/FEX-Emu/FEX.git
synced 2025-03-06 05:27:18 +00:00
AVX128: Implement support for variable vpermil{ps,pd}
This commit is contained in:
parent
563bf342d5
commit
1d41002dfe
@ -1203,6 +1203,9 @@ public:
|
||||
void AVX128_VTESTP(OpcodeArgs);
|
||||
void AVX128_PTest(OpcodeArgs);
|
||||
|
||||
template<size_t ElementSize>
|
||||
void AVX128_VPERMILReg(OpcodeArgs);
|
||||
|
||||
// End of AVX 128-bit implementation
|
||||
void InvalidOp(OpcodeArgs);
|
||||
|
||||
|
@ -263,8 +263,8 @@ void OpDispatchBuilder::InstallAVX128Handlers() {
|
||||
{OPD(2, 0b01, 0x09), 1, &OpDispatchBuilder::AVX128_VPSIGN<2>},
|
||||
{OPD(2, 0b01, 0x0A), 1, &OpDispatchBuilder::AVX128_VPSIGN<4>},
|
||||
{OPD(2, 0b01, 0x0B), 1, &OpDispatchBuilder::AVX128_VPMULHRSW},
|
||||
// TODO: {OPD(2, 0b01, 0x0C), 1, &OpDispatchBuilder::VPERMILRegOp<4>},
|
||||
// TODO: {OPD(2, 0b01, 0x0D), 1, &OpDispatchBuilder::VPERMILRegOp<8>},
|
||||
{OPD(2, 0b01, 0x0C), 1, &OpDispatchBuilder::AVX128_VPERMILReg<4>},
|
||||
{OPD(2, 0b01, 0x0D), 1, &OpDispatchBuilder::AVX128_VPERMILReg<8>},
|
||||
{OPD(2, 0b01, 0x0E), 1, &OpDispatchBuilder::AVX128_VTESTP<OpSize::i32Bit>},
|
||||
{OPD(2, 0b01, 0x0F), 1, &OpDispatchBuilder::AVX128_VTESTP<OpSize::i64Bit>},
|
||||
|
||||
@ -2209,4 +2209,11 @@ void OpDispatchBuilder::AVX128_PTest(OpcodeArgs) {
|
||||
ZeroPF_AF();
|
||||
}
|
||||
|
||||
template<size_t ElementSize>
|
||||
void OpDispatchBuilder::AVX128_VPERMILReg(OpcodeArgs) {
|
||||
AVX128_VectorBinaryImpl(Op, GetSrcSize(Op), ElementSize, [this](size_t _ElementSize, Ref Src, Ref Indices) {
|
||||
return VPERMILRegOpImpl(OpSize::i128Bit, ElementSize, Src, Indices);
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace FEXCore::IR
|
||||
|
Loading…
x
Reference in New Issue
Block a user