Jean-Philip Desjardins
aee4e00be7
Reduce overhead of VCALLMS.
2024-01-08 11:57:16 -05:00
Jean-Philip Desjardins
a9f54cbe3e
Minor optimization to LQ and SQ when not accessing all lanes.
2023-12-20 09:41:00 -05:00
Jean-Philip Desjardins
10748be6b5
Add clamping to fix issues in Mt. Doom rendering in LOTR: ROTK.
2023-12-20 09:41:00 -05:00
Jean-Philip Desjardins
267e1bc115
Avoid saving vector if it doesn't change its value.
2023-12-20 09:41:00 -05:00
Jean-Philip Desjardins
65cee7e4c3
Fix some potential issues with VU0 micro & macro sync.
2023-09-25 10:53:52 -04:00
Jean-Philip Desjardins
5f32f19f3b
Fix some register clobbering cases.
2023-09-25 10:53:52 -04:00
Jean-Philip Desjardins
033c7c9c99
Properly clear stack when skipping LQ.
2023-08-30 10:21:25 -04:00
Jean-Philip Desjardins
3c8a36a2af
Some clever improvements to mem accesses.
2023-07-26 14:10:05 -04:00
Jean-Philip Desjardins
1eb8ad505b
Update CodeGen submodule.
2023-07-21 11:54:36 -04:00
Jean-Philip Desjardins
e14548d931
Add check.
2023-07-20 18:04:47 -04:00
Jean-Philip Desjardins
d7653a2f25
Fix warnings.
2023-07-10 17:17:57 -04:00
Jean-Philip Desjardins
9bcbe1f699
Update pipeTime when syncing EFU operations.
...
Fixes issues with Shinobi where WAITP is used and FDIV pipeline needs to be updated as a side-effect.
2023-05-11 10:01:48 -04:00
Jean-Philip Desjardins
2f737651fb
Add function to check for NaNs in vectors.
2023-05-10 09:07:19 -04:00
Jean-Philip Desjardins
d302c318d4
Do simple move when adding 0.
...
Avoids destructive clamping that might be against the intent of the instruction.
2023-05-10 09:07:18 -04:00
Jean-Philip Desjardins
b5d8aad96e
Use CodeGen's native MD_ClampS to clamp vectors.
2023-03-03 16:50:59 -05:00
Jean-Philip Desjardins
db6ffbc111
Support writing VU1 registers from VU0 macro mode.
2022-07-11 14:09:46 -04:00
Jean-Philip Desjardins
6708e394db
Add comment to explain why we don't use FpAddTruncate on JS.
2022-02-14 13:07:15 -05:00
Jean-Philip Desjardins
e0bfe0223c
Disable accurate ADDi on JavaScript.
...
Could be enabled later.
2022-02-14 13:07:15 -05:00
Jean-Philip Desjardins
aebd6eb9bc
Prevent clobbering of VF0.
2022-02-11 13:15:38 -05:00
Jean-Philip Desjardins
34171f12e5
Prevent VI0 clobbering.
2022-02-09 12:38:32 -05:00
Jean-Philip Desjardins
69531b84bc
Don't recompute the clamping mask.
...
Removes a few instructions in generated code.
2021-07-09 10:03:27 -04:00
Jean-Philip Desjardins
80e6554cdc
Use StoreAtRefIdx to clear flags pipeline.
...
Using PullRel would cause array items to be register allocated which is not a good thing
since they are accessed through array operations in other places.
2021-07-02 10:22:27 -04:00
darkpigeon
6dd820d734
Merge branch 'jpd002:master' into fatalframe1
2021-05-15 15:33:20 +07:00
Jean-Philip Desjardins
4ceef01615
Prevent MOVE on VF0.
2021-04-27 13:51:57 -04:00
darkpigeon
e0c3d55007
Add clamping to VU
...
Fixes Fatal Frame 1's door-blocking bug, which allows further proceeding ingame
2021-04-07 22:22:34 +07:00
Jean-Philip Desjardins
650f129545
Clamp some input vectors.
...
Fixes issues entering some areas in Samurai Legend Musashi.
2021-01-26 19:30:24 -05:00
Jean-Philip Desjardins
efbbeb057b
Merge ADD code in a single function.
...
Except for ADDi which has an exception.
2021-01-26 19:30:24 -05:00
Jean-Philip Desjardins
29ebcafec5
Preserve W component of FD in OPMSUB.
...
Fixes a ton of problems (KH2, Musashi Samurai Legends, Wild Arms 5 & probably others).
2020-11-26 16:29:46 -05:00
Jean-Philip Desjardins
935427fa6e
Remove unused include.
2020-11-25 09:54:55 -05:00
Jean-Philip Desjardins
239f6c53c7
Make sure sticky flags arrive at the proper time.
2020-06-02 15:12:27 -04:00
Jean-Philip Desjardins
d207c648ac
Formatting niceties.
2020-06-02 15:12:27 -04:00
Mahmood - Zer0xFF
e503f3eae6
improve VU MOVE/RNEXT instruction
2020-05-21 19:22:16 +01:00
Jean-Philip Desjardins
2bfe87ff52
Clamp vectors before comparing in MINI/MAX.
2020-05-15 16:44:08 -04:00
Jean-Philip Desjardins
ff488e17db
Implement ADDAq.
2020-05-15 12:37:55 -04:00
Jean-Philip Desjardins
53db596365
Prevent ITOF0 & ITOF12 from clobbering VF0.
2020-05-15 12:37:54 -04:00
Jean-Philip Desjardins
50608f6453
Use LoadFromRefIdx in ILW.
2020-05-11 13:15:21 -04:00
Jean-Philip Desjardins
ece02c072c
Use StoreAtRefIdx in ISW.
2020-05-11 13:15:21 -04:00
Jean-Philip Desjardins
cda03da746
Use StoreAtRefIdx4 in QueueInFlagPipeline.
2020-05-11 13:15:21 -04:00
Jean-Philip Desjardins
409743e6d5
Fix stylin issues.
2020-04-22 16:24:01 -04:00
Jean-Philip Desjardins
ae83c9caba
Implement MINI/MAX VU operations differently.
...
These seem to be only moving from a register to another without FP processing.
On our target CPUs (x86 & ARM), the same operations flush denormals to zero.
2020-04-22 14:53:07 -04:00
Jean-Philip Desjardins
66684a16b0
Skip flags update when we're sure result won't be used.
...
This is proof of concept, needs to be cleaned.
2020-02-10 21:40:08 -05:00
Jean-Philip Desjardins
0a39bd9827
Code style fix.
2019-11-17 10:56:21 -05:00
Jean-Philip Desjardins
9ef60706e1
Add exception for VU SUB instruction which is meant to clear a register.
...
Avoid potential NaN FPU exceptions.
2019-11-16 16:22:06 -05:00
Jean-Philip Desjardins
7a3f25dbd1
Prevent VF0 from being clobbered.
2019-10-17 21:13:32 -04:00
Jean-Philip Desjardins
21afd31033
Use new primitive to compute SZ flags.
2019-08-30 19:03:31 -04:00
Jean-Philip Desjardins
c34fe4ec11
Move operation latency definitions.
...
(cherry picked from commit 8485a66453ec75621cbfbce4091ed52f7dfb7382)
2019-08-14 20:44:51 -04:00
Jean-Philip Desjardins
cbd56aac40
Code style fixes.
2018-12-04 18:53:29 -05:00
Jean-Philip Desjardins
e32a8efbbb
Standardize handling of DIV by 0.
2018-12-04 13:00:34 -05:00
Jean-Philip Desjardins
f167c11e39
Get absolute value before computing square root.
2018-12-04 13:00:34 -05:00
Jean-Philip Desjardins
5f109ff50c
Update RSQRT code to update D flag properly.
2018-11-07 12:43:59 -05:00