xref: /openbmc/qemu/tests/tcg/hexagon/test_bitcnt.S (revision 4f9a4cd37eb2f0c4e6be83640fcc5c31d4bf99e3)
1*585a86b1SNiccolò Izzo/*
2*585a86b1SNiccolò Izzo * Purpose: test example, verify the soundness of the cl[01] operations.
3*585a86b1SNiccolò Izzo *
4*585a86b1SNiccolò Izzo * The number 0x000001aa has 23 leading zeroes
5*585a86b1SNiccolò Izzo * they become 55 when considered as 64 bit register
6*585a86b1SNiccolò Izzo * and it has 1 trailing zero.
7*585a86b1SNiccolò Izzo */
8*585a86b1SNiccolò Izzo    .text
9*585a86b1SNiccolò Izzo    .globl _start
10*585a86b1SNiccolò Izzo
11*585a86b1SNiccolò Izzo_start:
12*585a86b1SNiccolò Izzo    {
13*585a86b1SNiccolò Izzo        r0 = #426
14*585a86b1SNiccolò Izzo        r1 = #0
15*585a86b1SNiccolò Izzo    }
16*585a86b1SNiccolò Izzo    {
17*585a86b1SNiccolò Izzo        r2 = cl0(r0)
18*585a86b1SNiccolò Izzo    }
19*585a86b1SNiccolò Izzo    {
20*585a86b1SNiccolò Izzo        p0 = cmp.eq(r2, #23); if (p0.new) jump:t test2
21*585a86b1SNiccolò Izzo        jump fail
22*585a86b1SNiccolò Izzo    }
23*585a86b1SNiccolò Izzo
24*585a86b1SNiccolò Izzotest2:
25*585a86b1SNiccolò Izzo    {
26*585a86b1SNiccolò Izzo        r2 = cl0(r1:0)
27*585a86b1SNiccolò Izzo    }
28*585a86b1SNiccolò Izzo    {
29*585a86b1SNiccolò Izzo        p0 = cmp.eq(r2, #55); if (p0.new) jump:t test3
30*585a86b1SNiccolò Izzo        jump fail
31*585a86b1SNiccolò Izzo    }
32*585a86b1SNiccolò Izzo
33*585a86b1SNiccolò Izzotest3:
34*585a86b1SNiccolò Izzo    {
35*585a86b1SNiccolò Izzo        r2 = ct0(r0)
36*585a86b1SNiccolò Izzo    }
37*585a86b1SNiccolò Izzo    {
38*585a86b1SNiccolò Izzo        p0 = cmp.eq(r2, #1); if (p0.new) jump:t pass
39*585a86b1SNiccolò Izzo        jump fail
40*585a86b1SNiccolò Izzo    }
41