xref: /openbmc/qemu/tests/tcg/hexagon/test_packet.S (revision 4f9a4cd37eb2f0c4e6be83640fcc5c31d4bf99e3)
1*585a86b1SNiccolò Izzo/*
2*585a86b1SNiccolò Izzo * Purpose: test that writes of a register in a packet are performed only after
3*585a86b1SNiccolò Izzo * that packet has finished its execution.
4*585a86b1SNiccolò Izzo */
5*585a86b1SNiccolò Izzo
6*585a86b1SNiccolò Izzo    .text
7*585a86b1SNiccolò Izzo    .globl _start
8*585a86b1SNiccolò Izzo
9*585a86b1SNiccolò Izzo_start:
10*585a86b1SNiccolò Izzo    {
11*585a86b1SNiccolò Izzo        allocframe(#8)
12*585a86b1SNiccolò Izzo    }
13*585a86b1SNiccolò Izzo    {
14*585a86b1SNiccolò Izzo        r2 = #4
15*585a86b1SNiccolò Izzo        r3 = #6
16*585a86b1SNiccolò Izzo    }
17*585a86b1SNiccolò Izzo    {
18*585a86b1SNiccolò Izzo        memw(sp+#0) = r2
19*585a86b1SNiccolò Izzo    }
20*585a86b1SNiccolò Izzo    {
21*585a86b1SNiccolò Izzo        r3 = memw(sp+#0)
22*585a86b1SNiccolò Izzo        r0 = add(r2, r3)
23*585a86b1SNiccolò Izzo    }
24*585a86b1SNiccolò Izzo    {
25*585a86b1SNiccolò Izzo        deallocframe
26*585a86b1SNiccolò Izzo        p0 = cmp.eq(r3, #4)
27*585a86b1SNiccolò Izzo        p0 = cmp.eq(r0, #10); if (p0.new) jump:t pass
28*585a86b1SNiccolò Izzo        jump fail
29*585a86b1SNiccolò Izzo    }
30