add a thp-based huge page alloc fallback
[pcsx_rearmed.git] / deps / lightning / check / ret.tst
1 .data   16
2 ok:
3 .c      "ok"
4
5 .code
6         jmpi main
7
8 /*
9  * very simple test on purpose because otherwise it would not trigger
10  * the bug where the retr %r0 or retr_d %f0 would be omitted because
11  * the argument was already the return register, but the register end
12  * clobbered by another instruction, like the div*, and the wrong
13  * value returned because the retr* was removed and this way, lost
14  * information that the register was live at function exit.
15  */
16
17 check_r0:
18         prolog
19         movi %r0 1
20         movi %r2 10
21         // on x86 this changes %rax on other arches could use %r0 as temporary
22         divi %r1 %r2 3
23         // %r0 must still be 1
24         retr %r0
25         epilog
26
27 check_f0:
28         prolog
29         movi_d %f0 0.5
30         movi_d %f2 10
31         divi_d %f1 %f2 3
32         retr_d %f0
33         epilog
34
35 main:
36         prolog
37         calli check_r0
38         retval %r1
39         beqi r0_ok %r1 1
40         calli @abort
41 r0_ok:
42         calli check_f0
43         retval_d %f1
44         beqi_d f0_ok %f1 0.5
45         calli @abort
46 f0_ok:
47         prepare
48                 pushargi ok
49         finishi @puts
50         ret
51         epilog