Make buttons a bitfield and fix let bug (#399)

* make pad buttons bitfields

* fix stupid let bug

* update tests
This commit is contained in:
water111
2021-04-29 20:25:45 -04:00
committed by GitHub
parent 70d93354eb
commit 56625bb0ee
15 changed files with 336 additions and 220 deletions
@@ -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);
}