mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-14 08:00:50 +02:00
Arm64/VectorOps: Simplify FADDP result merging
Keeps the implementation similarly in sync with VAddP.
This commit is contained in:
1 parent
8ce6c08152
commit
122aa8a69a
1 file changed
+8
-13
@@ -978,20 +978,20 @@ DEF_OP(VFAddP) {
|
||||
switch (ElementSize) {
|
||||
case 2: {
|
||||
faddp(VTMP1.Z().VnH(), Pred, VTMP1.Z().VnH(), VectorUpper.Z().VnH());
|
||||
uzp1(VTMP2.Z().VnH(), VTMP1.Z().VnH(), VTMP1.Z().VnH());
|
||||
uzp2(VTMP3.Z().VnH(), VTMP1.Z().VnH(), VTMP1.Z().VnH());
|
||||
uzp1(Dst.Z().VnH(), VTMP1.Z().VnH(), VTMP1.Z().VnH());
|
||||
uzp2(VTMP2.Z().VnH(), VTMP1.Z().VnH(), VTMP1.Z().VnH());
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
faddp(VTMP1.Z().VnS(), Pred, VTMP1.Z().VnS(), VectorUpper.Z().VnS());
|
||||
uzp1(VTMP2.Z().VnS(), VTMP1.Z().VnS(), VTMP1.Z().VnS());
|
||||
uzp2(VTMP3.Z().VnS(), VTMP1.Z().VnS(), VTMP1.Z().VnS());
|
||||
uzp1(Dst.Z().VnS(), VTMP1.Z().VnS(), VTMP1.Z().VnS());
|
||||
uzp2(VTMP2.Z().VnS(), VTMP1.Z().VnS(), VTMP1.Z().VnS());
|
||||
break;
|
||||
}
|
||||
case 8: {
|
||||
faddp(VTMP1.Z().VnD(), Pred, VTMP1.Z().VnD(), VectorUpper.Z().VnD());
|
||||
uzp1(VTMP2.Z().VnD(), VTMP1.Z().VnD(), VTMP1.Z().VnD());
|
||||
uzp2(VTMP3.Z().VnD(), VTMP1.Z().VnD(), VTMP1.Z().VnD());
|
||||
uzp1(Dst.Z().VnD(), VTMP1.Z().VnD(), VTMP1.Z().VnD());
|
||||
uzp2(VTMP2.Z().VnD(), VTMP1.Z().VnD(), VTMP1.Z().VnD());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -999,13 +999,8 @@ DEF_OP(VFAddP) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Shift the entire vector over by 128 bits.
|
||||
mov(TMP1, 0);
|
||||
insr(VTMP3.Z().VnD(), TMP1);
|
||||
insr(VTMP3.Z().VnD(), TMP1);
|
||||
|
||||
// Now combine the lower and upper halves.
|
||||
orr(Dst.Z().VnD(), VTMP2.Z().VnD(), VTMP3.Z().VnD());
|
||||
// Merge upper half with lower half.
|
||||
splice(Dst.Z().VnD(), PRED_TMP_16B, Dst.Z().VnD(), VTMP2.Z().VnD());
|
||||
} else {
|
||||
switch (ElementSize) {
|
||||
case 2: {
|
||||
|
||||
Reference in new issue
Block a user