mirror of
https://github.com/open-goal/jak-project
synced 2026-05-29 08:43:08 -04:00
[decompiler] clean up if/when/cond and recognize define-perm (#472)
* clean up if and when and cond decisions * recognize define perm
This commit is contained in:
@@ -539,110 +539,110 @@ TEST_F(FormRegressionTest, ExprArrayMethod2) {
|
||||
std::string expected =
|
||||
"(begin\n"
|
||||
" (format #t \"#(\")\n"
|
||||
" (if\n"
|
||||
" (type-type? (-> arg0 content-type) integer)\n"
|
||||
" (let\n"
|
||||
" ((v1-1 (-> arg0 content-type symbol)))\n"
|
||||
" (cond\n"
|
||||
" ((= v1-1 (quote int32))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-0 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" (if (zero? s5-0) \"~D\" \" ~D\")\n"
|
||||
" (-> (the-as (array int32) arg0) s5-0)\n"
|
||||
" (cond\n"
|
||||
" ((type-type? (-> arg0 content-type) integer)\n"
|
||||
" (let ((v1-1 (-> arg0 content-type symbol)))\n"
|
||||
" (cond\n"
|
||||
" ((= v1-1 (quote int32))\n"
|
||||
" (dotimes (s5-0 (-> arg0 length))\n"
|
||||
" (format #t (if (zero? s5-0)\n"
|
||||
" \"~D\"\n"
|
||||
" \" ~D\"\n"
|
||||
" )\n"
|
||||
" (-> (the-as (array int32) arg0) s5-0)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote uint32))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-1 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" (if (zero? s5-1) \"~D\" \" ~D\")\n"
|
||||
" (-> (the-as (array uint32) arg0) s5-1)\n"
|
||||
" ((= v1-1 (quote uint32))\n"
|
||||
" (dotimes (s5-1 (-> arg0 length))\n"
|
||||
" (format #t (if (zero? s5-1)\n"
|
||||
" \"~D\"\n"
|
||||
" \" ~D\"\n"
|
||||
" )\n"
|
||||
" (-> (the-as (array uint32) arg0) s5-1)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote int64))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-2 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" (if (zero? s5-2) \"~D\" \" ~D\")\n"
|
||||
" (-> (the-as (array int64) arg0) s5-2)\n"
|
||||
" ((= v1-1 (quote int64))\n"
|
||||
" (dotimes (s5-2 (-> arg0 length))\n"
|
||||
" (format #t (if (zero? s5-2)\n"
|
||||
" \"~D\"\n"
|
||||
" \" ~D\"\n"
|
||||
" )\n"
|
||||
" (-> (the-as (array int64) arg0) s5-2)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote uint64))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-3 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" (if (zero? s5-3) \"#x~X\" \" #x~X\")\n"
|
||||
" (-> (the-as (array uint64) arg0) s5-3)\n"
|
||||
" ((= v1-1 (quote uint64))\n"
|
||||
" (dotimes (s5-3 (-> arg0 length))\n"
|
||||
" (format #t (if (zero? s5-3)\n"
|
||||
" \"#x~X\"\n"
|
||||
" \" #x~X\"\n"
|
||||
" )\n"
|
||||
" (-> (the-as (array uint64) arg0) s5-3)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote int8))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-4 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" (if (zero? s5-4) \"~D\" \" ~D\")\n"
|
||||
" (-> (the-as (array int8) arg0) s5-4)\n"
|
||||
" ((= v1-1 (quote int8))\n"
|
||||
" (dotimes (s5-4 (-> arg0 length))\n"
|
||||
" (format #t (if (zero? s5-4)\n"
|
||||
" \"~D\"\n"
|
||||
" \" ~D\"\n"
|
||||
" )\n"
|
||||
" (-> (the-as (array int8) arg0) s5-4)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote uint8))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-5 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" (if (zero? s5-5) \"~D\" \" ~D\")\n"
|
||||
" (-> (the-as (array uint8) arg0) s5-5)\n"
|
||||
" ((= v1-1 (quote uint8))\n"
|
||||
" (dotimes (s5-5 (-> arg0 length))\n"
|
||||
" (format #t (if (zero? s5-5)\n"
|
||||
" \"~D\"\n"
|
||||
" \" ~D\"\n"
|
||||
" )\n"
|
||||
" (-> (the-as (array uint8) arg0) s5-5)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote int16))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-6 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" (if (zero? s5-6) \"~D\" \" ~D\")\n"
|
||||
" (-> (the-as (array int16) arg0) s5-6)\n"
|
||||
" ((= v1-1 (quote int16))\n"
|
||||
" (dotimes (s5-6 (-> arg0 length))\n"
|
||||
" (format #t (if (zero? s5-6)\n"
|
||||
" \"~D\"\n"
|
||||
" \" ~D\"\n"
|
||||
" )\n"
|
||||
" (-> (the-as (array int16) arg0) s5-6)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote uint16))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-7 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" (if (zero? s5-7) \"~D\" \" ~D\")\n"
|
||||
" (-> (the-as (array uint16) arg0) s5-7)\n"
|
||||
" ((= v1-1 (quote uint16))\n"
|
||||
" (dotimes (s5-7 (-> arg0 length))\n"
|
||||
" (format #t (if (zero? s5-7)\n"
|
||||
" \"~D\"\n"
|
||||
" \" ~D\"\n"
|
||||
" )\n"
|
||||
" (-> (the-as (array uint16) arg0) s5-7)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" (else\n"
|
||||
" (cond\n"
|
||||
" ((or (= v1-1 (quote uint128)) (= v1-1 (quote int128)))\n"
|
||||
" (dotimes (s5-8 (-> arg0 length))\n"
|
||||
" (format #t (if (zero? s5-8)\n"
|
||||
" \"#x~X\"\n"
|
||||
" \" #x~X\"\n"
|
||||
" )\n"
|
||||
" (-> (the-as (array uint128) arg0) s5-8)\n"
|
||||
" (else\n"
|
||||
" (cond\n"
|
||||
" ((or (= v1-1 (quote uint128)) (= v1-1 (quote int128)))\n"
|
||||
" (dotimes (s5-8 (-> arg0 length))\n"
|
||||
" (format #t (if (zero? s5-8)\n"
|
||||
" \"#x~X\"\n"
|
||||
" \" #x~X\"\n"
|
||||
" )\n"
|
||||
" (-> (the-as (array uint128) arg0) s5-8)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )"
|
||||
" (else\n"
|
||||
" (dotimes\n"
|
||||
" (s5-9 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" (if (zero? s5-9) \"~D\" \" ~D\")\n"
|
||||
" (-> (the-as (array int32) arg0) s5-9)\n"
|
||||
" (else\n"
|
||||
" (dotimes (s5-9 (-> arg0 length))\n"
|
||||
" (format #t (if (zero? s5-9)\n"
|
||||
" \"~D\"\n"
|
||||
" \" ~D\"\n"
|
||||
" )\n"
|
||||
" (-> (the-as (array int32) arg0) s5-9)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
@@ -650,24 +650,22 @@ TEST_F(FormRegressionTest, ExprArrayMethod2) {
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" (cond\n"
|
||||
" ((= (-> arg0 content-type) float)\n"
|
||||
" (dotimes\n"
|
||||
" (s5-10 (-> arg0 length))\n"
|
||||
" (if\n"
|
||||
" (zero? s5-10)\n"
|
||||
" (format #t \"~f\" (-> (the-as (array float) arg0) s5-10))\n"
|
||||
" (format #t \" ~f\" (-> (the-as (array float) arg0) s5-10))\n"
|
||||
" (else\n"
|
||||
" (cond\n"
|
||||
" ((= (-> arg0 content-type) float)\n"
|
||||
" (dotimes (s5-10 (-> arg0 length))\n"
|
||||
" (if (zero? s5-10)\n"
|
||||
" (format #t \"~f\" (-> (the-as (array float) arg0) s5-10))\n"
|
||||
" (format #t \" ~f\" (-> (the-as (array float) arg0) s5-10))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" (else\n"
|
||||
" (dotimes\n"
|
||||
" (s5-11 (-> arg0 length))\n"
|
||||
" (if\n"
|
||||
" (zero? s5-11)\n"
|
||||
" (format #t \"~A\" (-> (the-as (array basic) arg0) s5-11))\n"
|
||||
" (format #t \" ~A\" (-> (the-as (array basic) arg0) s5-11))\n"
|
||||
" (else\n"
|
||||
" (dotimes (s5-11 (-> arg0 length))\n"
|
||||
" (if (zero? s5-11)\n"
|
||||
" (format #t \"~A\" (-> (the-as (array basic) arg0) s5-11))\n"
|
||||
" (format #t \" ~A\" (-> (the-as (array basic) arg0) s5-11))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
@@ -1164,92 +1162,88 @@ TEST_F(FormRegressionTest, ExprArrayMethod3) {
|
||||
" (format #t \"~Tlength: ~D~%\" (-> arg0 length))\n"
|
||||
" (format #t \" ~Tcontent-type: ~A~%\" (-> arg0 content-type))\n"
|
||||
" (format #t \"~Tdata[~D]: @ #x~X~%\" (-> arg0 allocated-length) (-> arg0 data))\n"
|
||||
" (if\n"
|
||||
" (type-type? (-> arg0 content-type) integer)\n"
|
||||
" (let\n"
|
||||
" ((v1-1 (-> arg0 content-type symbol)))\n"
|
||||
" (cond\n"
|
||||
" ((= v1-1 (quote int32))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-0 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-0 (-> (the-as (array int32) arg0) s5-0))\n"
|
||||
" (cond\n"
|
||||
" ((type-type? (-> arg0 content-type) integer)\n"
|
||||
" (let ((v1-1 (-> arg0 content-type symbol)))\n"
|
||||
" (cond\n"
|
||||
" ((= v1-1 (quote int32))\n"
|
||||
" (dotimes (s5-0 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-0 (-> (the-as (array int32) arg0) s5-0))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote uint32))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-1 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-1 (-> (the-as (array uint32) arg0) s5-1))\n"
|
||||
" ((= v1-1 (quote uint32))\n"
|
||||
" (dotimes (s5-1 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-1 (-> (the-as (array uint32) arg0) s5-1))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote int64))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-2 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-2 (-> (the-as (array int64) arg0) s5-2))\n"
|
||||
" ((= v1-1 (quote int64))\n"
|
||||
" (dotimes (s5-2 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-2 (-> (the-as (array int64) arg0) s5-2))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote uint64))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-3 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] #x~X~%\" s5-3 (-> (the-as (array uint64) arg0) s5-3))\n"
|
||||
" ((= v1-1 (quote uint64))\n"
|
||||
" (dotimes (s5-3 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" \"~T [~D] #x~X~%\"\n"
|
||||
" s5-3\n"
|
||||
" (-> (the-as (array uint64) arg0) s5-3)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote int8))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-4 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-4 (-> (the-as (array int8) arg0) s5-4))\n"
|
||||
" ((= v1-1 (quote int8))\n"
|
||||
" (dotimes (s5-4 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-4 (-> (the-as (array int8) arg0) s5-4))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote uint8))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-5 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-5 (-> (the-as (array int8) arg0) s5-5))\n"
|
||||
" ((= v1-1 (quote uint8))\n"
|
||||
" (dotimes (s5-5 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-5 (-> (the-as (array int8) arg0) s5-5))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote int16))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-6 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-6 (-> (the-as (array int16) arg0) s5-6))\n"
|
||||
" ((= v1-1 (quote int16))\n"
|
||||
" (dotimes (s5-6 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-6 (-> (the-as (array int16) arg0) s5-6))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" ((= v1-1 (quote uint16))\n"
|
||||
" (dotimes\n"
|
||||
" (s5-7 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-7 (-> (the-as (array uint16) arg0) s5-7))\n"
|
||||
" ((= v1-1 (quote uint16))\n"
|
||||
" (dotimes (s5-7 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-7 (-> (the-as (array uint16) arg0) s5-7))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" (else\n"
|
||||
" (cond\n"
|
||||
" ((or (= v1-1 (quote int128)) (= v1-1 (quote uint128)))\n"
|
||||
" (dotimes (s5-8 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" \"~T [~D] #x~X~%\"\n"
|
||||
" s5-8\n"
|
||||
" (-> (the-as (array uint128) arg0) s5-8)\n"
|
||||
" (else\n"
|
||||
" (cond\n"
|
||||
" ((or (= v1-1 (quote int128)) (= v1-1 (quote uint128)))\n"
|
||||
" (dotimes (s5-8 (-> arg0 length))\n"
|
||||
" (format\n"
|
||||
" #t\n"
|
||||
" \"~T [~D] #x~X~%\"\n"
|
||||
" s5-8\n"
|
||||
" (-> (the-as (array uint128) arg0) s5-8)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )"
|
||||
" (else\n"
|
||||
" (dotimes\n"
|
||||
" (s5-9 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-9 (-> (the-as (array int32) arg0) s5-9))\n"
|
||||
" (else\n"
|
||||
" (dotimes (s5-9 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~D~%\" s5-9 (-> (the-as (array int32) arg0) s5-9))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" (cond\n"
|
||||
" ((= (-> arg0 content-type) float)\n"
|
||||
" (dotimes\n"
|
||||
" (s5-10 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~f~%\" s5-10 (-> (the-as (array float) arg0) s5-10))\n"
|
||||
" (else\n"
|
||||
" (cond\n"
|
||||
" ((= (-> arg0 content-type) float)\n"
|
||||
" (dotimes (s5-10 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~f~%\" s5-10 (-> (the-as (array float) arg0) s5-10))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" (else\n"
|
||||
" (dotimes\n"
|
||||
" (s5-11 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~A~%\" s5-11 (-> (the-as (array basic) arg0) s5-11))\n"
|
||||
" (else\n"
|
||||
" (dotimes (s5-11 (-> arg0 length))\n"
|
||||
" (format #t \"~T [~D] ~A~%\" s5-11 (-> (the-as (array basic) arg0) s5-11))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
@@ -2373,27 +2367,30 @@ TEST_F(FormRegressionTest, ExprStringToInt) {
|
||||
" (>= (the-as uint 102) (-> a0-3 0))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" (if\n"
|
||||
" (and\n"
|
||||
" (>= (-> a0-3 0) (the-as uint 65))\n"
|
||||
" (>= (the-as uint 70) (-> a0-3 0))\n"
|
||||
" )\n"
|
||||
" (set!\n"
|
||||
" v0-0\n"
|
||||
" (the-as int (+ (+ (-> a0-3 0) -55) (the-as uint (shl v0-0 4))))\n"
|
||||
" )\n"
|
||||
" (if\n"
|
||||
" (and\n"
|
||||
" (>= (-> a0-3 0) (the-as uint 97))\n"
|
||||
" (>= (the-as uint 102) (-> a0-3 0))\n"
|
||||
" (cond\n"
|
||||
" ((and\n"
|
||||
" (>= (-> a0-3 0) (the-as uint 65))\n"
|
||||
" (>= (the-as uint 70) (-> a0-3 0))\n"
|
||||
" )\n"
|
||||
" (set!\n"
|
||||
" v0-0\n"
|
||||
" (the-as int (+ (+ (-> a0-3 0) -87) (the-as uint (shl v0-0 4))))\n"
|
||||
" (the-as int (+ (+ (-> a0-3 0) -55) (the-as uint (shl v0-0 4))))\n"
|
||||
" )\n"
|
||||
" (set!\n"
|
||||
" v0-0\n"
|
||||
" (the-as int (+ (+ (-> a0-3 0) -48) (the-as uint (shl v0-0 4))))\n"
|
||||
" )\n"
|
||||
" (else\n"
|
||||
" (if\n"
|
||||
" (and\n"
|
||||
" (>= (-> a0-3 0) (the-as uint 97))\n"
|
||||
" (>= (the-as uint 102) (-> a0-3 0))\n"
|
||||
" )\n"
|
||||
" (set!\n"
|
||||
" v0-0\n"
|
||||
" (the-as int (+ (+ (-> a0-3 0) -87) (the-as uint (shl v0-0 4))))\n"
|
||||
" )\n"
|
||||
" (set!\n"
|
||||
" v0-0\n"
|
||||
" (the-as int (+ (+ (-> a0-3 0) -48) (the-as uint (shl v0-0 4))))\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
|
||||
Reference in New Issue
Block a user