[decompiler] More inline vector functions (#3861)

This adds more recognition for inlined vector functions to the
decompiler, which can clean up a bunch of ugly looking code/`rlet`s.


![image](https://github.com/user-attachments/assets/1f7b4627-81bd-481b-b828-76b9f7ba13b3)

Unfortunately, this changes the numbering of ops in the decomp, since
all the vector instructions get combined in a single "operation" by the
decompiler. I really tried to avoid having this ever happen in the
decompiler and this is one of the few cases where it has. So I had to
update a bunch of type casts.

For that reason I haven't turned this on in Jak 2 yet, although I am
planning to do that at some point. (probably at the same time as porting
back a bunch of jak 3 improvements to jak 2)

---------

Co-authored-by: water111 <awaterford1111445@gmail.com>
This commit is contained in:
water111
2025-02-16 15:59:17 -05:00
committed by GitHub
parent b07d0d9ced
commit 2a4d3d7a4a
340 changed files with 22771 additions and 36134 deletions
+4
View File
@@ -1890,8 +1890,12 @@ std::string fixed_operator_to_string(FixedOperatorKind kind) {
return "mouse-hold?";
case FixedOperatorKind::VECTOR_LENGTH:
return "vector-length";
case FixedOperatorKind::VECTOR_LENGTH_SQUARED:
return "vector-length-squared";
case FixedOperatorKind::VECTOR_PLUS_FLOAT_TIMES:
return "vector+float*!";
case FixedOperatorKind::VECTOR_PLUS_TIMES:
return "vector+*!";
case FixedOperatorKind::FOCUS_TEST:
return "focus-test?";
default: