Lioncache
ecf02846e6
Arm64/VectorOps: Remove redundant moves from SVE VFMin is possible
...
If Dst and Vector1 alias one another, then we can do the merging move
in place instead of shuffling data around.
2023-08-23 17:16:25 -04:00
Ryan Houdek
a40526a541
Merge pull request #2977 from lioncash/pack
...
OpcodeDispatcher: Remove redundant moves from VPACKUSOP/VPACKSSOp
2023-08-23 12:33:05 -07:00
Lioncache
735e2060a3
OpcodeDispatcher: Remove redundant moves from VPACKUSOP/VPACKSSOp
...
Zero-extension will occur automatically if necessary.
2023-08-23 15:09:57 -04:00
Ryan Houdek
86ef6fe48d
Merge pull request #2976 from lioncash/mov
...
OpcodeDispatcher: Remove unnecessary moves from AVX move ops where applicable
2023-08-23 12:02:05 -07:00
Lioncache
8e7e91d61f
OpcodeDispatcher: Remove redundant moves in VMOVLPOp
...
Zero-extension will automatically occur upon storing if necessary.
2023-08-23 14:23:57 -04:00
Lioncache
bcba3700c8
OpcodeDispatcher: Remove redundant moves from VMOVVectorNTOp
...
Zero-extension will automatically occur if necessary upon storing.
We can also join the SSE and AVX implementations.
2023-08-23 14:17:27 -04:00
Lioncache
7d05797e82
OpcodeDispatcher: Remove redundant moves from VMOVHPOp
...
Zero-extension will automatically occur if necessary upon storing.
2023-08-23 14:14:35 -04:00
Lioncache
c409ea78bc
OpcodeDispatcher: Remove unnecessary moves from VMOV{A,U}PS/VMOV{A,U}PD
...
Zero-extension will occur automatically upon storing if necessary.
We can also join the SSE and AVX implementations together.
2023-08-23 14:10:49 -04:00
Ryan Houdek
a62ba75ede
Merge pull request #2975 from lioncash/scalar
...
Arm64/ConversionOps: Add scalar support to Vector_FToI
2023-08-23 10:57:38 -07:00
Lioncache
4a7ef3da13
OpcodeDispatcher: Remove unnecessary moves in AVXVectorRound
...
Zero-extension will occur automatically if necessary upon storing.
2023-08-23 13:41:56 -04:00
Lioncache
990b70dcd6
OpcodeDispatcher: Use scalar rounding for scalar round instructions
2023-08-23 13:34:01 -04:00
Lioncache
393cea2e8b
Arm64/ConversionOps: Correct AdvSIMD round-to-nearest Vector_FToI case
...
This was previously using frinti, which uses the host rounding mode, rather
than round to nearest.
2023-08-23 13:27:44 -04:00
Ryan Houdek
6624f50abf
Merge pull request #2974 from lioncash/extend
...
OpcodeDispatcher: Remove unnecessary moves from AVXExtendVectorElements
2023-08-23 10:25:56 -07:00
Ryan Houdek
cd1f401363
Merge pull request #2973 from lioncash/vfcmp
...
OpcodeDispatcher: Remove unnecessary moves in AVXVFCMPOp
2023-08-23 10:25:16 -07:00
Lioncache
e89321dc60
Arm64/ConversionOps: Add scalar support to Vector_FToI
...
This can be used for the scalar conversions instead of always using the
vector variants.
2023-08-23 13:23:07 -04:00
Lioncache
d99bcbf01b
OpcodeDispatcher: Remove unnecessary moves from AVXExtendVectorElements
...
Zero-extension will already occur if necessary upon storing.
Also we can join the AVX and SSE implementations together and get
rid of some template instantiations, now that the only differing
behavior is removed.
2023-08-23 12:47:31 -04:00
Mai
0819338dbf
Merge pull request #2970 from Sonicadvance1/optimize_pminmax
...
Arm64: Optimize VFMin/VFMax
2023-08-23 12:39:37 -04:00
Lioncache
f516aed4b7
OpcodeDispatcher: Remove unnecessary moves in AVXVFCMPOp
...
Zero-extension will already occur if necessary upon storing.
2023-08-23 12:37:45 -04:00
Ryan Houdek
76430baf88
Merge pull request #2971 from lioncash/blend
...
OpcodeDispatcher: Remove redundant moves in AVX blend special cases
2023-08-22 21:42:07 -07:00
Lioncache
3858e4124b
OpcodeDispatcher: Remove redundant moves in AVX blend special cases
...
Zero-extension will happen if necessary upon storing.
2023-08-23 00:08:33 -04:00
Mai
819fe110da
Merge pull request #2967 from Sonicadvance1/optimize_storeelement
...
OpcodeDispatcher: Optimize MOVHP{S,D}
2023-08-23 00:01:25 -04:00
Ryan Houdek
5db5944ad2
InstCountCI: Update for min/max optimization
2023-08-22 21:00:27 -07:00
Ryan Houdek
f0b1030e54
Arm64: Optimize VFMin/VFMax
...
We can be more optimal on the selects. This makes 3DNow! and SSE packed
min/max operations optimal.
2023-08-22 20:59:11 -07:00
Ryan Houdek
adfd6787c0
Merge pull request #2969 from lioncash/insert
...
OpcodeDispatcher: Remove unnecessary moves from AVX inserts
2023-08-22 20:51:55 -07:00
Ryan Houdek
b35ad8d8ed
InstCountCI: Update for movhp{s,d} optimization
2023-08-22 20:42:24 -07:00
Ryan Houdek
0ee2579a5e
OpcodeDispatcher: Optimize MOVHP{S,D}
...
Loads can turn in to element Loads.
Stores can turn in to element stores.
These four instruction variants are now optimal.
2023-08-22 20:42:24 -07:00
Ryan Houdek
6aa2cab41c
IR: Implement support for vector store element
...
Matches ARM64 ST1 semantics
2023-08-22 20:42:24 -07:00
Mai
bb2f7107cd
Merge pull request #2963 from Sonicadvance1/optimize_loadelement
...
OpcodeDispatcher: Optimize MOVLP{S,D} loads
2023-08-22 23:41:59 -04:00
Lioncache
c33f3ff8df
OpcodeDispatcher: Remove unnecessary moves from AVX inserts
...
We already zero-extend on stores when necessary.
2023-08-22 23:29:40 -04:00
Ryan Houdek
5d44a445dd
Merge pull request #2968 from lioncash/shift2
...
OpcodeDispatcher: Remove unnecessary moves from AVX register shifts
2023-08-22 20:23:12 -07:00
Ryan Houdek
519c670374
InstCountCI: Update for load element optimization
...
Adds movhlps special case which was missed before.
2023-08-22 20:15:16 -07:00
Ryan Houdek
de239cde67
OpcodeDispatcher: Optimize MOVLP{S,D} loads
...
This now uses the new load element IR operation and makes these
instructions optimal.
LRPCPC3 will introduce instructions in the future for TSO emulation to
help these operations, but that doesn't exist today.
2023-08-22 20:15:16 -07:00
Ryan Houdek
5e57ec94cf
IR: Implement support for vector load element
...
Matches Arm64 LD1 semantics.
2023-08-22 20:15:16 -07:00
Lioncache
2f5fae7677
OpcodeDispatcher: Remove unnecessary moves from AVX register shifts
...
Zero-extension will occur automatically when necessary upon storing.
2023-08-22 23:06:53 -04:00
Ryan Houdek
fb65fb29c7
Merge pull request #2966 from lioncash/shift
...
OpcodeDispatcher: Remove redundant moves from AVX immediate shifts
2023-08-22 20:02:14 -07:00
Lioncache
8f8062eb4e
OpcodeDispatcher: Remove redundant moves from AVX immediate shifts
...
These zero-extensions will occur automatically when applicable.
2023-08-22 22:50:10 -04:00
Ryan Houdek
36a54183f5
Merge pull request #2965 from lioncash/mov
...
OpcodeDispatcher: Remove unnecessary moves from AVX conversion operations
2023-08-22 19:38:46 -07:00
Lioncache
e5f5629ffc
OpcodeDispatcher: Remove unnecessary moves from AVX conversion operations
...
These zero-extensions will already happen automatically if necessary.
2023-08-22 22:20:13 -04:00
Ryan Houdek
4443c667ec
Merge pull request #2964 from Sonicadvance1/missed_optimal
...
InstCountCI: Fix some mislabeled instructions
2023-08-22 19:05:14 -07:00
Ryan Houdek
ead141fd90
Merge pull request #2962 from lioncash/variable
...
OpcodeDispatcher: Remove unnecessary moves from AVXVariableShiftImpl
2023-08-22 18:52:47 -07:00
Ryan Houdek
2c64523317
InstCountCI: Fix some mislabeled instructions
...
These were all optimal. Fixed now.
2023-08-22 18:47:17 -07:00
Lioncache
2b071e282e
OpcodeDispatcher: Remove unnecessary moves from AVXVariableShiftImpl
...
We already zero-extend on a store if necessary.
2023-08-22 21:20:34 -04:00
Ryan Houdek
14144523f7
Merge pull request #2961 from lioncash/minpos
...
OpcodeDispatcher: Remove unnecessary move from VPHMINPOSUW
2023-08-22 18:19:46 -07:00
Ryan Houdek
1f2c5fc6c6
Merge pull request #2960 from lioncash/index
...
Arm64: Optimize SVE VInsElement
2023-08-22 18:19:13 -07:00
Mai
42200bf7b6
Merge pull request #2959 from Sonicadvance1/movlpd_store
...
X86Tables: Optimize MOVLPD stores
2023-08-22 21:02:23 -04:00
Lioncache
fa17d9fae9
OpcodeDispatcher: Remove unnecessary move from VPHMINPOSUW
...
We already do a zero-extend if necessary in StoreResult.
This also lets us unify both the SSE and AVX handling code.
2023-08-22 20:59:56 -04:00
Lioncache
398a70312e
Arm64: Optimize SVE VInsElement
...
This can be done without storing any data to memory and also
compressing the amount of instructions being used.
Thanks to @dougallj for the optimization suggestions.
2023-08-22 20:36:29 -04:00
Ryan Houdek
76afc653e8
InstCountCI: Update for movlpd store optimization
2023-08-22 17:34:15 -07:00
Ryan Houdek
d3ed9766e8
X86Tables: Optimize MOVLPD stores
...
Just use the full register size and store the lower bits.
2023-08-22 17:33:34 -07:00
Ryan Houdek
ed7f1b017d
Merge pull request #2958 from Sonicadvance1/optimize_phminpos
...
OpcodeDispatcher: Optimize phminposuw
2023-08-22 16:58:27 -07:00