| @ Test file for ARM/GAS -- vldr reg, =... expressions. |
| .fpu neon |
| .text |
| .align |
| foo: |
| # test both low and high index of the |
| # Advanced SIMD and Floating-point reg. |
| .macro vlxr regtype const |
| .irp regindex, 0, 14, 28, 31 |
| vldr \regtype\regindex, \const |
| .endr |
| .endm |
| |
| .macro vlxreq regtype const |
| .irp regindex, 0, 14, 28, 31 |
| vldreq \regtype\regindex, \const |
| .endr |
| .endm |
| |
| .macro vlxrmi regtype const |
| .irp regindex, 0, 14, 28, 31 |
| vldrmi \regtype\regindex, \const |
| .endr |
| .endm |
| |
| vlxr s "=0" |
| vlxr s "=0xff000000" |
| vlxr s "=-1" |
| vlxr s "=0x0fff0000" |
| .pool |
| |
| vlxr s "=0" |
| vlxr s "=0x00ff0000" |
| vlxr s "=0xff00ffff" |
| vlxr s "=0x00fff000" |
| .pool |
| |
| vlxreq s "=0" |
| vlxreq s "=0x0000ff00" |
| vlxreq s "=0xffff00ff" |
| vlxreq s "=0x000fff00" |
| .pool |
| |
| vlxrmi s "=0" |
| vlxrmi s "=0x000000ff" |
| vlxrmi s "=0xffffff00" |
| vlxrmi s "=0x0000fff0" |
| .pool |
| |
| vlxr d "=0" |
| vlxr d "=0xca000000" |
| vlxr d "=-1" |
| vlxr d "=0x0fff0000" |
| .pool |
| |
| vlxr d "=0" |
| vlxr d "=0x00ff0000" |
| vlxr d "=0xff0000ff" |
| vlxr d "=0x00fff000" |
| .pool |
| |
| vlxreq d "=0" |
| vlxreq d "=0x0000ff00" |
| vlxreq d "=0xffff00ff" |
| vlxreq d "=0x000fff00" |
| .pool |
| |
| vlxrmi d "=0" |
| vlxrmi d "=0x000000ff" |
| vlxrmi d "=0xffffff00" |
| vlxrmi d "=0x0000ffff" |
| .pool |
| |
| vlxr d "=0" |
| vlxr d "=0xff00000000000000" |
| vlxr d "=-1" |
| vlxr d "=0x0fff000000000000" |
| .pool |
| |
| vlxr d "=0" |
| vlxr d "=0x00ff00000000000" |
| vlxr d "=0xff00ffff0000000" |
| vlxr d "=0x00fff0000000000" |
| .pool |
| |
| vlxreq d "=0" |
| vlxreq d "=0x0000ff0000000000" |
| vlxreq d "=0xffff00ff00000000" |
| vlxreq d "=0x000fff0000000000" |
| .pool |
| |
| vlxrmi d "=0" |
| vlxrmi d "=0x000000ff00000000" |
| vlxrmi d "=0xffffff0000000000" |
| vlxrmi d "=0x0000fff000000000" |
| .pool |
| |
| # pool should be aligned to 8-byte. |
| .p2align 3 |
| vldr d1, =0x0000fff000000000 |
| .pool |
| |
| # no error when code is align already. |
| .p2align 3 |
| add r0, r1, #0 |
| vldr d1, =0x0000fff000000000 |
| .pool |
| |
| .p2align 3 |
| vldr d1, =0x0000fff000000000 |
| vldr s2, =0xff000000 |
| # padding A |
| vldr d3, =0x0000fff000000001 |
| # reuse padding slot A |
| vldr s4, =0xff000001 |
| # reuse d3 |
| vldr d5, =0x0000fff000000001 |
| # new 8-byte entry |
| vldr d6, =0x0000fff000000002 |
| # new 8-byte entry |
| vldr d7, =0x0000fff000000003 |
| # new 4-byte entry |
| vldr s8, =0xff000002 |
| # padding B |
| vldr d9, =0x0000fff000000004 |
| # reuse padding slot B |
| vldr s10, =0xff000003 |
| # new 8-byte entry |
| vldr d11, =0x0000fff000000005 |
| # new 4 entry |
| vldr s12, =0xff000004 |
| # new 4 entry |
| vldr s13, =0xff000005 |
| # reuse value of s4 in pool |
| vldr s14, =0xff000001 |
| # reuse high part of d1 in pool |
| vldr s15, =0x0000fff0 |
| # 8-byte entry reuse two 4-byte entries. |
| # this reuse should only happen for |
| # little-endian |
| # d16 reuse s12, s13 |
| vldr d16, =0xff000005ff000004 |
| # d17 should not reuse high part of d11 and s12. |
| # because the it's align 8-byte aligned. |
| vldr d17, =0xff0000040000fff0 |
| .pool |