mirror of
https://github.com/open-goal/jak-project
synced 2026-06-11 13:10:44 -04:00
Make buttons a bitfield and fix let bug (#399)
* make pad buttons bitfields * fix stupid let bug * update tests
This commit is contained in:
@@ -1025,3 +1025,113 @@ TEST_F(FormRegressionTest, DmaBucketInsertTag) {
|
||||
" [3, \"a0\", \"dma-bucket\"]\n"
|
||||
" ]");
|
||||
}
|
||||
|
||||
TEST_F(FormRegressionTest, StupidFloatMove) {
|
||||
std::string func =
|
||||
"sll r0, r0, 0\n"
|
||||
" daddiu sp, sp, -48\n"
|
||||
" sd ra, 0(sp)\n"
|
||||
" sd fp, 8(sp)\n"
|
||||
" or fp, t9, r0\n"
|
||||
" sq s5, 16(sp)\n"
|
||||
" sq gp, 32(sp)\n"
|
||||
|
||||
" or gp, a0, r0\n"
|
||||
//" lwc1 f0, L47(fp)\n"
|
||||
" mtc1 f0, r0\n"
|
||||
" mtc1 f1, a1\n"
|
||||
" min.s f0, f0, f1\n"
|
||||
" mfc1 s5, f0\n"
|
||||
" mtc1 f0, s5\n"
|
||||
" swc1 f0, 900(gp)\n"
|
||||
" lw t9, get-video-mode(s7)\n"
|
||||
" jalr ra, t9\n"
|
||||
" sll v0, ra, 0\n"
|
||||
|
||||
" or v1, v0, r0\n"
|
||||
" daddiu a0, s7, pal\n"
|
||||
" bne v1, a0, L37\n"
|
||||
" sll r0, r0, 0\n"
|
||||
|
||||
//" lwc1 f0, L42(fp)\n"
|
||||
" mtc1 f0, r0\n"
|
||||
" mtc1 f1, s5\n"
|
||||
" mul.s f0, f0, f1\n"
|
||||
" swc1 f0, 916(gp)\n"
|
||||
//" lwc1 f0, L43(fp)\n"
|
||||
" mtc1 f0, r0\n"
|
||||
" mtc1 f1, s5\n"
|
||||
" mul.s f0, f0, f1\n"
|
||||
" swc1 f0, 904(gp)\n"
|
||||
//" lwc1 f0, L46(fp)\n"
|
||||
" mtc1 f0, r0\n"
|
||||
//" lwc1 f1, L50(fp)\n"
|
||||
" mtc1 f1, r0\n"
|
||||
" mtc1 f2, s5\n"
|
||||
" div.s f1, f1, f2\n"
|
||||
" mul.s f0, f0, f1\n"
|
||||
" swc1 f0, 908(gp)\n"
|
||||
//" lwc1 f0, L49(fp)\n"
|
||||
" mtc1 f0, r0\n"
|
||||
" swc1 f0, 912(gp)\n"
|
||||
" mfc1 v1, f0\n"
|
||||
" beq r0, r0, L38\n"
|
||||
" sll r0, r0, 0\n"
|
||||
|
||||
"L37:\n"
|
||||
" mtc1 f0, s5\n"
|
||||
" swc1 f0, 916(gp)\n"
|
||||
//" lwc1 f0, L44(fp)\n"
|
||||
" mtc1 f0, r0\n"
|
||||
" mtc1 f1, s5\n"
|
||||
" mul.s f0, f0, f1\n"
|
||||
" swc1 f0, 904(gp)\n"
|
||||
//" lwc1 f0, L45(fp)\n"
|
||||
" mtc1 f0, r0\n"
|
||||
//" lwc1 f1, L50(fp)\n"
|
||||
" mtc1 f1, r0\n"
|
||||
" mtc1 f2, s5\n"
|
||||
" div.s f1, f1, f2\n"
|
||||
" mul.s f0, f0, f1\n"
|
||||
" swc1 f0, 908(gp)\n"
|
||||
//" lwc1 f0, L48(fp)\n"
|
||||
" mtc1 f0, r0\n"
|
||||
" swc1 f0, 912(gp)\n"
|
||||
" mfc1 v1, f0\n"
|
||||
|
||||
"L38:\n"
|
||||
//" lwc1 f0, 900(gp)\n"
|
||||
" mtc1 f0, r0\n"
|
||||
" mfc1 v0, f0\n"
|
||||
" ld ra, 0(sp)\n"
|
||||
" ld fp, 8(sp)\n"
|
||||
" lq gp, 32(sp)\n"
|
||||
" lq s5, 16(sp)\n"
|
||||
" jr ra\n"
|
||||
" daddiu sp, sp, 48";
|
||||
std::string type = "(function display float float)";
|
||||
std::string expected =
|
||||
"(begin\n"
|
||||
" (let ((s5-0 (fmin 0.0 arg1)))\n"
|
||||
" (set! (-> arg0 time-ratio) s5-0)\n"
|
||||
" (let ((v1-0 (get-video-mode)))\n"
|
||||
" (cond\n"
|
||||
" ((= v1-0 (quote pal))\n"
|
||||
" (set! (-> arg0 time-adjust-ratio) (* 0.0 s5-0))\n"
|
||||
" (set! (-> arg0 seconds-per-frame) (* 0.0 s5-0))\n"
|
||||
" (set! (-> arg0 frames-per-second) (* 0.0 (/ 0.0 s5-0)))\n"
|
||||
" (set! (-> arg0 time-factor) 0.0)\n"
|
||||
" )\n"
|
||||
" (else\n"
|
||||
" (set! (-> arg0 time-adjust-ratio) s5-0)\n"
|
||||
" (set! (-> arg0 seconds-per-frame) (* 0.0 s5-0))\n"
|
||||
" (set! (-> arg0 frames-per-second) (* 0.0 (/ 0.0 s5-0)))\n"
|
||||
" (set! (-> arg0 time-factor) 0.0)\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" )\n"
|
||||
" 0.0\n"
|
||||
" )";
|
||||
test_with_expr(func, type, expected);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user