xref: /openbmc/qemu/tests/tcg/hexagon/test_lsr.S (revision 4f9a4cd37eb2f0c4e6be83640fcc5c31d4bf99e3)
1*585a86b1SNiccolò Izzo/* Purpose: test the soundness of the lsr operation */
2*585a86b1SNiccolò Izzo
3*585a86b1SNiccolò Izzo    .text
4*585a86b1SNiccolò Izzo    .globl _start
5*585a86b1SNiccolò Izzo
6*585a86b1SNiccolò Izzo_start:
7*585a86b1SNiccolò Izzo    {
8*585a86b1SNiccolò Izzo        r0 = #-56984
9*585a86b1SNiccolò Izzo        r1 = #2147483647
10*585a86b1SNiccolò Izzo    }
11*585a86b1SNiccolò Izzo    {
12*585a86b1SNiccolò Izzo        r2 = #0x19
13*585a86b1SNiccolò Izzo    }
14*585a86b1SNiccolò Izzo    {
15*585a86b1SNiccolò Izzo        r0 &= lsr(r1, r2)
16*585a86b1SNiccolò Izzo    }
17*585a86b1SNiccolò Izzo    {
18*585a86b1SNiccolò Izzo        p0  =  cmp.eq(r0, #0x28); if (p0.new) jump:t test2
19*585a86b1SNiccolò Izzo        jump fail
20*585a86b1SNiccolò Izzo    }
21*585a86b1SNiccolò Izzo
22*585a86b1SNiccolò Izzotest2:
23*585a86b1SNiccolò Izzo    {
24*585a86b1SNiccolò Izzo        r0 = #0x0000000a
25*585a86b1SNiccolò Izzo        r1 = #0x00000000
26*585a86b1SNiccolò Izzo    }
27*585a86b1SNiccolò Izzo    {
28*585a86b1SNiccolò Izzo        r2 = #-1
29*585a86b1SNiccolò Izzo    }
30*585a86b1SNiccolò Izzo    {
31*585a86b1SNiccolò Izzo        r1:0 = lsl(r1:0, r2)
32*585a86b1SNiccolò Izzo    }
33*585a86b1SNiccolò Izzo    {
34*585a86b1SNiccolò Izzo        p0  =  cmp.eq(r0, #0x5); if (p0.new) jump:t pass
35*585a86b1SNiccolò Izzo        jump fail
36*585a86b1SNiccolò Izzo    }
37