1@ Test file for ARM/GAS -- vldr reg, =... expressions. 2.fpu neon 3.text 4.align 5foo: 6 # test both low and high index of the 7 # Advanced SIMD and Floating-point reg. 8 .macro vlxr regtype const 9 .irp regindex, 0, 14, 28, 31 10 vldr \regtype\regindex, \const 11 .endr 12 .endm 13 14 .macro vlxreq regtype const 15 .irp regindex, 0, 14, 28, 31 16 vldreq \regtype\regindex, \const 17 .endr 18 .endm 19 20 .macro vlxrmi regtype const 21 .irp regindex, 0, 14, 28, 31 22 vldrmi \regtype\regindex, \const 23 .endr 24 .endm 25 26 vlxr s "=0" 27 vlxr s "=0xff000000" 28 vlxr s "=-1" 29 vlxr s "=0x0fff0000" 30 .pool 31 32 vlxr s "=0" 33 vlxr s "=0x00ff0000" 34 vlxr s "=0xff00ffff" 35 vlxr s "=0x00fff000" 36 .pool 37 38 vlxreq s "=0" 39 vlxreq s "=0x0000ff00" 40 vlxreq s "=0xffff00ff" 41 vlxreq s "=0x000fff00" 42 .pool 43 44 vlxrmi s "=0" 45 vlxrmi s "=0x000000ff" 46 vlxrmi s "=0xffffff00" 47 vlxrmi s "=0x0000fff0" 48 .pool 49 50 vlxr d "=0" 51 vlxr d "=0xca000000" 52 vlxr d "=-1" 53 vlxr d "=0x0fff0000" 54 .pool 55 56 vlxr d "=0" 57 vlxr d "=0x00ff0000" 58 vlxr d "=0xff0000ff" 59 vlxr d "=0x00fff000" 60 .pool 61 62 vlxreq d "=0" 63 vlxreq d "=0x0000ff00" 64 vlxreq d "=0xffff00ff" 65 vlxreq d "=0x000fff00" 66 .pool 67 68 vlxrmi d "=0" 69 vlxrmi d "=0x000000ff" 70 vlxrmi d "=0xffffff00" 71 vlxrmi d "=0x0000ffff" 72 .pool 73 74 vlxr d "=0" 75 vlxr d "=0xff00000000000000" 76 vlxr d "=-1" 77 vlxr d "=0x0fff000000000000" 78 .pool 79 80 vlxr d "=0" 81 vlxr d "=0x00ff00000000000" 82 vlxr d "=0xff00ffff0000000" 83 vlxr d "=0x00fff0000000000" 84 .pool 85 86 vlxreq d "=0" 87 vlxreq d "=0x0000ff0000000000" 88 vlxreq d "=0xffff00ff00000000" 89 vlxreq d "=0x000fff0000000000" 90 .pool 91 92 vlxrmi d "=0" 93 vlxrmi d "=0x000000ff00000000" 94 vlxrmi d "=0xffffff0000000000" 95 vlxrmi d "=0x0000fff000000000" 96 .pool 97 98 # pool should be aligned to 8-byte. 99 .p2align 3 100 vldr d1, =0x0000fff000000000 101 .pool 102 103 # no error when code is align already. 104 .p2align 3 105 add r0, r1, #0 106 vldr d1, =0x0000fff000000000 107 .pool 108 109 .p2align 3 110 vldr d1, =0x0000fff000000000 111 vldr s2, =0xff000000 112 # padding A 113 vldr d3, =0x0000fff000000001 114 # reuse padding slot A 115 vldr s4, =0xff000001 116 # reuse d3 117 vldr d5, =0x0000fff000000001 118 # new 8-byte entry 119 vldr d6, =0x0000fff000000002 120 # new 8-byte entry 121 vldr d7, =0x0000fff000000003 122 # new 4-byte entry 123 vldr s8, =0xff000002 124 # padding B 125 vldr d9, =0x0000fff000000004 126 # reuse padding slot B 127 vldr s10, =0xff000003 128 # new 8-byte entry 129 vldr d11, =0x0000fff000000005 130 # new 4 entry 131 vldr s12, =0xff000004 132 # new 4 entry 133 vldr s13, =0xff000005 134 # reuse value of s4 in pool 135 vldr s14, =0xff000001 136 # reuse high part of d1 in pool 137 vldr s15, =0x0000fff0 138 # 8-byte entry reuse two 4-byte entries. 139 # this reuse should only happen for 140 # little-endian 141 # d16 reuse s12, s13 142 vldr d16, =0xff000005ff000004 143 # d17 should not reuse high part of d11 and s12. 144 # because the it's align 8-byte aligned. 145 vldr d17, =0xff0000040000fff0 146 .pool 147