.syntax unified .thumb .macro n_vstr_w_vldr op, imm .irp op1, q0, q1, q2, q4, q7 .irp op2, r0, r1, r2, r4, r7 \op \op1, [\op2, #\imm] \op \op1, [\op2, #-\imm] \op \op1, [\op2, #\imm]! \op \op1, [\op2, #-\imm]! \op \op1, [\op2], #\imm \op \op1, [\op2], #-\imm .endr .endr .endm .irp mnem, vstrb.16, vstrb.32 .irp imm, 0, 1, 2, 4, 8, 16, 32, 64, 127, 120, 15 n_vstr_w_vldr \mnem, \imm .endr .endr .irp imm, 0, 2, 4, 8, 16, 32, 64, 128, 254, 240, 30 n_vstr_w_vldr vstrh.32, \imm .endr .macro wb_same_size_vstr_vldr op, imm .irp op1, q0, q1, q2, q4, q7 .irp op2, r0, r1, r2, r4, r7, r8, r10, r12, r14 \op \op1, [\op2, #\imm]! \op \op1, [\op2, #-\imm]! \op \op1, [\op2], #\imm \op \op1, [\op2], #-\imm .endr .endr .endm .macro no_wb_same_size_vstr_vldr op, imm .irp op1, q0, q1, q2, q4, q7 .irp op2, r0, r1, r2, r4, r7, r8, r10, r12, r13, r14 \op \op1, [\op2, #\imm] \op \op1, [\op2, #-\imm] .endr .endr .endm .irp mnem, vstrb.8, vstrb.s8, vstrb.u8 .irp imm, 0, 1, 2, 4, 8, 16, 32, 64, 127, 120, 15 wb_same_size_vstr_vldr \mnem, \imm no_wb_same_size_vstr_vldr \mnem, \imm .endr .endr .irp mnem, vstrh.16, vstrh.s16, vstrh.u16, vstrh.f16 .irp imm, 0, 2, 4, 8, 16, 32, 64, 128, 254, 240, 30 wb_same_size_vstr_vldr \mnem, \imm no_wb_same_size_vstr_vldr \mnem, \imm .endr .endr .irp mnem, vstrw.32, vstrw.s32, vstrw.u32, vstrw.f32 .irp imm, 0, 4, 8, 16, 32, 64, 128, 256, 508, 480, 60 wb_same_size_vstr_vldr \mnem, \imm no_wb_same_size_vstr_vldr \mnem, \imm .endr .endr vpstet vstrbt.u8 q0, [r12, #1] vstrbe.16 q3, [r2, #-127] vstrbt.32 q3, [r3, #-93]! vpstete vstrht.f16 q5, [r4], #254 vstrhe.32 q5, [r0, #126] vstrwt.32 q3, [r5, #508] vstrwe.u32 q5, [r8], #244 .irp mnem, vldrb.s16, vldrb.u16, vldrb.s32, vldrb.u32 .irp imm, 0, 1, 2, 4, 8, 16, 32, 64, 127, 120, 15 n_vstr_w_vldr \mnem, \imm .endr .endr .irp mnem, vldrh.s32, vldrh.u32 .irp imm, 0, 2, 4, 8, 16, 32, 64, 128, 254, 240, 30 n_vstr_w_vldr \mnem, \imm .endr .endr .irp mnem, vldrb.8, vldrb.s8, vldrb.u8 .irp imm, 0, 1, 2, 4, 8, 16, 32, 64, 127, 120, 15 wb_same_size_vstr_vldr \mnem, \imm no_wb_same_size_vstr_vldr \mnem, \imm .endr .endr .irp mnem, vldrh.16, vldrh.s16, vldrh.u16, vldrh.f16 .irp imm, 0, 2, 4, 8, 16, 32, 64, 128, 254, 240, 30 wb_same_size_vstr_vldr \mnem, \imm no_wb_same_size_vstr_vldr \mnem, \imm .endr .endr .irp mnem, vldrw.32, vldrw.s32, vldrw.u32, vldrw.f32 .irp imm, 0, 4, 8, 16, 32, 64, 128, 256, 508, 480, 60 wb_same_size_vstr_vldr \mnem, \imm no_wb_same_size_vstr_vldr \mnem, \imm .endr .endr vpstet vldrbt.u8 q0, [r12, #1] vldrbe.u16 q3, [r2, #-127] vldrbt.u32 q3, [r3, #-93]! vpstete vldrht.f16 q5, [r4], #254 vldrhe.s32 q5, [r0, #126] vldrwt.32 q3, [r5, #508] vldrwe.u32 q5, [r8], #244