xref: /openbmc/qemu/tests/tcg/hexagon/test_vspliceb.S (revision 4f9a4cd37eb2f0c4e6be83640fcc5c31d4bf99e3)
1*585a86b1SNiccolò Izzo/*
2*585a86b1SNiccolò Izzo * Purpose: test example, verify the soundness of the vspliceb operation
3*585a86b1SNiccolò Izzo * the operation is a binary splice of two 64bit operators.
4*585a86b1SNiccolò Izzo *
5*585a86b1SNiccolò Izzo *  vspliceb(0xffffffffffffffff,0x0000000000000000,5) = 0x000000ffffffffff.
6*585a86b1SNiccolò Izzo */
7*585a86b1SNiccolò Izzo    .text
8*585a86b1SNiccolò Izzo    .globl _start
9*585a86b1SNiccolò Izzo
10*585a86b1SNiccolò Izzo_start:
11*585a86b1SNiccolò Izzo    {
12*585a86b1SNiccolò Izzo        r0 = #-1
13*585a86b1SNiccolò Izzo        r1 = #-1
14*585a86b1SNiccolò Izzo    }
15*585a86b1SNiccolò Izzo    {
16*585a86b1SNiccolò Izzo        r2 = #0
17*585a86b1SNiccolò Izzo        r3 = #0
18*585a86b1SNiccolò Izzo    }
19*585a86b1SNiccolò Izzo    {
20*585a86b1SNiccolò Izzo        r5:4 = vspliceb(r1:0, r3:2, #5)
21*585a86b1SNiccolò Izzo    }
22*585a86b1SNiccolò Izzo    {
23*585a86b1SNiccolò Izzo        p0 = cmp.eq(r4, #-1); if (p0.new) jump:t test2
24*585a86b1SNiccolò Izzo        jump fail
25*585a86b1SNiccolò Izzo    }
26*585a86b1SNiccolò Izzo
27*585a86b1SNiccolò Izzotest2:
28*585a86b1SNiccolò Izzo    {
29*585a86b1SNiccolò Izzo        p0 = cmp.eq(r5, #255); if (p0.new) jump:t pass
30*585a86b1SNiccolò Izzo        jump fail
31*585a86b1SNiccolò Izzo    }
32