1.syntax unified 2.thumb 3 4.macro all_vstr op, size, ext 5.irp op1, q0, q1, q2, q4, q7 6.irp op2, r0, r1, r2, r4, r7, r8, r10, r12, r13, r14 7.irp op3, q0, q1, q2, q4, q7 8\op\()\size \op1, [\op2, \op3] 9\op\()\size \op1, [\op2, \op3, uxtw #\ext] 10.endr 11.endr 12.endr 13.endm 14 15.irp size, .8, .16, .32 16all_vstr vstrb, \size, 0 17.endr 18 19.irp size, .16, .32 20all_vstr vstrh, \size, 1 21.endr 22 23all_vstr vstrw, .32, 2 24all_vstr vstrd, .64, 3 25 26vpstete 27vstrbt.8 q1, [r0, q0] 28vstrbe.8 q1, [r2, q2] 29vstrbt.16 q2, [r3, q1] 30vstrbe.16 q3, [r4, q6] 31vpstete 32vstrbt.32 q4, [r8, q2] 33vstrbe.32 q7, [sp, q6] 34vstrht.16 q0, [r0, q1] 35vstrhe.16 q2, [r2, q0] 36vpstet 37vstrht.32 q1, [r1, q7] 38vstrhe.32 q3, [r3, q2] 39vstrht.16 q4, [r6, q5, UXTW #1] 40vpstete 41vstrht.16 q6, [r10, q3, UXTW #1] 42vstrhe.32 q5, [r7, q4, UXTW #1] 43vstrht.32 q7, [sp, q6, UXTW #1] 44vstrwe.32 q0, [r2, q1] 45vpstete 46vstrwt.32 q1, [r5, q7] 47vstrwe.32 q2, [r8, q3, UXTW #2] 48vstrwt.32 q5, [sp, q0, UXTW #2] 49vstrde.64 q0, [sp, q7] 50vpstte 51vstrdt.64 q2, [r0, q1] 52vstrdt.64 q3, [r3, q5, UXTW #3] 53vstrde.64 q7, [r7, q4, UXTW #3] 54 55.macro all_vldr op, size, ext 56.irp op2, r0, r1, r2, r4, r7, r8, r10, r12, r13, r14 57.irp op3, q1, q2, q4, q7 58\op\()\size q0, [\op2, \op3] 59\op\()\size q0, [\op2, \op3, uxtw #\ext] 60.endr 61.irp op3, q0, q2, q4, q7 62\op\()\size q1, [\op2, \op3] 63\op\()\size q1, [\op2, \op3, uxtw #\ext] 64.endr 65.irp op3, q0, q1, q4, q7 66\op\()\size q2, [\op2, \op3] 67\op\()\size q2, [\op2, \op3, uxtw #\ext] 68.endr 69.irp op3, q0, q1, q2, q7 70\op\()\size q4, [\op2, \op3] 71\op\()\size q4, [\op2, \op3, uxtw #\ext] 72.endr 73.irp op3, q0, q1, q2, q4 74\op\()\size q7, [\op2, \op3] 75\op\()\size q7, [\op2, \op3, uxtw #\ext] 76.endr 77.endr 78.endm 79 80.irp data, .u8, .s16, .u16, .s32, .u32 81all_vldr vldrb, \data, 0 82.endr 83 84.irp data, .u16, .s32, .u32 85all_vldr vldrh, \data, 1 86.endr 87 88all_vldr vldrw, .u32, 2 89all_vldr vldrd, .u64, 3 90 91vpstete 92vldrbt.u8 q1, [r0, q0] 93vldrbe.u8 q1, [r2, q2] 94vldrbt.u16 q2, [r3, q1] 95vldrbe.s16 q3, [r4, q6] 96vpstete 97vldrbt.u32 q4, [r8, q2] 98vldrbe.s32 q7, [sp, q6] 99vldrht.u16 q0, [r0, q1] 100vldrhe.u16 q2, [r2, q0] 101vpstete 102vldrht.u32 q1, [r1, q7] 103vldrhe.u32 q3, [r3, q2] 104vldrht.u16 q4, [r6, q5, UXTW #1] 105vldrhe.u16 q6, [r10, q3, UXTW #1] 106vpstete 107vldrht.u32 q5, [r7, q4, UXTW #1] 108vldrhe.u32 q7, [sp, q6, UXTW #1] 109vldrwt.u32 q0, [r2, q1] 110vldrwe.u32 q1, [r5, q7] 111vpstete 112vldrwt.u32 q2, [r8, q3, UXTW #2] 113vldrwe.u32 q5, [sp, q0, UXTW #2] 114vldrdt.u64 q0, [sp, q7] 115vldrde.u64 q2, [r0, q1] 116vpste 117vldrdt.u64 q3, [r3, q5, UXTW #3] 118vldrde.u64 q7, [r7, q4, UXTW #3] 119 120.irp dt, u8, s16, 8 121vldrb.\dt q0, [r2, q3] 122.endr 123.irp dt, 16, u16, s32, f16, p16, u32 124vldrh.\dt q0, [r2, q3, UXTW #1] 125.endr 126.irp dt, 32, u32, f32, p32 127vldrw.\dt q0, [r2, q3, UXTW #2] 128.endr 129.irp dt, 64, u64, f64, p64 130vldrd.\dt q0, [r2, q3, UXTW #3] 131.endr 132