add a thp-based huge page alloc fallback
[pcsx_rearmed.git] / deps / lightning / check / jmpr.tst
CommitLineData
4a71579b
PC
1/*
2This is a very simple check to a condition that on lightning 2.0.5
3could cause an assertion on some backends, due to correcting a problem
4with temporaries that could not be saved/reloaded due to being used only
5in the hardware instruction, or being considered live for too long on the
6lightning instruction, and that could not be reloaded after the jump target
7(or after false/true target on conditional branches).
8
9If this code in lib/lightning.c:_jit_update():
10
11 for (regno = 0; regno < _jitc->reglen; regno++) {
12 spec = jit_class(_rvs[regno].spec);
13 if (jit_regset_tstbit(mask, regno) &&
14 (spec & (jit_class_gpr|jit_class_fpr)) &&
15 !(spec & jit_class_sav))
16 jit_regset_clrbit(mask, regno);
17 }
18
19were removed, this test case, on x86_64 would fail like this:
20
21lt-lightning: lightning.c:305: _jit_get_reg: Assertion `regspec & 0x02000000' failed.
22Aborted (core dumped)
23 */
24
25.data 32
26ret:
27#if __WORDSIZE == 32
28.i 0
29#else
30.l 0
31#endif
32ok:
33.c "ok"
34
35.code
36 prolog
37 jmpi start
38
39add_v1_v2:
40 addr %v1 %v1 %v2
41 ldi %r0 ret
42 jmpr %r0
43
44start:
45 movi %v1 1
46 movi %v2 2
47 movi %r0 ret_add_v1_v2
48 sti ret %r0
49 movi %v0 add_v1_v2
50 jmpr %v0
51 movi_d %f0 3
52 beqi_d pass_movi_f0 %f0 3
53 calli @abort
54pass_movi_f0:
55 beqi pass_check_v2 %v2 2
56 calli @abort
57pass_check_v2:
58ret_add_v1_v2:
59 beqi pass_add_v1_v2 %v1 3
60 calli @abort
61pass_add_v1_v2:
62 prepare
63 pushargi ok
64 finishi @puts
65 ret
66 epilog