xref: /openbmc/qemu/tests/tcg/hexagon/test_reorder.S (revision 4f9a4cd37eb2f0c4e6be83640fcc5c31d4bf99e3)
1*585a86b1SNiccolò Izzo/*
2*585a86b1SNiccolò Izzo * Purpose: demonstrate handling of .new uses appearing before the associated
3*585a86b1SNiccolò Izzo * definition.
4*585a86b1SNiccolò Izzo * Here we perform a jump that skips the code resetting R2 from 0xDEADBEEF to 0,
5*585a86b1SNiccolò Izzo * only if P0.new is true, but P0 is assigned to 1 (R4) in the next instruction
6*585a86b1SNiccolò Izzo * in the packet.
7*585a86b1SNiccolò Izzo */
8*585a86b1SNiccolò Izzo
9*585a86b1SNiccolò Izzo    .text
10*585a86b1SNiccolò Izzo    .globl _start
11*585a86b1SNiccolò Izzo
12*585a86b1SNiccolò Izzo_start:
13*585a86b1SNiccolò Izzo    {
14*585a86b1SNiccolò Izzo        r2 = #-559038737
15*585a86b1SNiccolò Izzo    }
16*585a86b1SNiccolò Izzo    {
17*585a86b1SNiccolò Izzo        r4 = #1
18*585a86b1SNiccolò Izzo    }
19*585a86b1SNiccolò Izzo    {
20*585a86b1SNiccolò Izzo        if (p0.new) jump:nt skip
21*585a86b1SNiccolò Izzo        p0 = r4;
22*585a86b1SNiccolò Izzo    }
23*585a86b1SNiccolò Izzo
24*585a86b1SNiccolò Izzofallthrough:
25*585a86b1SNiccolò Izzo    {
26*585a86b1SNiccolò Izzo        r2 = #0
27*585a86b1SNiccolò Izzo    }
28*585a86b1SNiccolò Izzo
29*585a86b1SNiccolò Izzoskip:
30*585a86b1SNiccolò Izzo    {
31*585a86b1SNiccolò Izzo        p0 = cmp.eq(r2, #-559038737); if (p0.new) jump:t pass
32*585a86b1SNiccolò Izzo        jump fail
33*585a86b1SNiccolò Izzo    }
34