mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 21:00:17 +02:00
x86_64/VectorOps: Separate 128-bit VFSub path
This commit is contained in:
1 parent
1b32ca0b93
commit
aac0824fd3
1 file changed
+11
-6
@@ -837,6 +837,7 @@ DEF_OP(VFSub) {
|
||||
const auto OpSize = IROp->Size;
|
||||
|
||||
const auto ElementSize = Op->Header.ElementSize;
|
||||
const auto Is256Bit = OpSize == Core::CPUState::XMM_AVX_REG_SIZE;
|
||||
const auto IsScalar = ElementSize == OpSize;
|
||||
|
||||
const auto Dst = GetDst(Node);
|
||||
@@ -858,17 +859,21 @@ DEF_OP(VFSub) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
const auto DstYMM = ToYMM(Dst);
|
||||
const auto Vector1YMM = ToYMM(Vector1);
|
||||
const auto Vector2YMM = ToYMM(Vector2);
|
||||
|
||||
switch (ElementSize) {
|
||||
case 4: {
|
||||
vsubps(DstYMM, Vector1YMM, Vector2YMM);
|
||||
if (Is256Bit) {
|
||||
vsubps(ToYMM(Dst), ToYMM(Vector1), ToYMM(Vector2));
|
||||
} else {
|
||||
vsubps(Dst, Vector1, Vector2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 8: {
|
||||
vsubpd(DstYMM, Vector1YMM, Vector2YMM);
|
||||
if (Is256Bit) {
|
||||
vsubpd(ToYMM(Dst), ToYMM(Vector1), ToYMM(Vector2));
|
||||
} else {
|
||||
vsubpd(Dst, Vector1, Vector2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
Reference in new issue
Block a user