| @ Neon tests. Basic bitfield tests, using zero for as many registers/fields as |
| @ possible, but without causing instructions to be badly-formed. |
| |
| .arm |
| .syntax unified |
| .text |
| |
| .macro regs3_1 op opq vtype |
| \op\vtype q0,q0,q0 |
| \opq\vtype q0,q0,q0 |
| \op\vtype d0,d0,d0 |
| .endm |
| |
| .macro dregs3_1 op vtype |
| \op\vtype d0,d0,d0 |
| .endm |
| |
| .macro regn3_1 op operand2 vtype |
| \op\vtype d0,q0,\operand2 |
| .endm |
| |
| .macro regl3_1 op operand2 vtype |
| \op\vtype q0,d0,\operand2 |
| .endm |
| |
| .macro regw3_1 op operand2 vtype |
| \op\vtype q0,q0,\operand2 |
| .endm |
| |
| .macro regs2_1 op opq vtype |
| \op\vtype q0,q0 |
| \opq\vtype q0,q0 |
| \op\vtype d0,d0 |
| .endm |
| |
| .macro regs3_su_32 op opq |
| regs3_1 \op \opq .s8 |
| regs3_1 \op \opq .s16 |
| regs3_1 \op \opq .s32 |
| regs3_1 \op \opq .u8 |
| regs3_1 \op \opq .u16 |
| regs3_1 \op \opq .u32 |
| .endm |
| |
| regs3_su_32 vaba vabaq |
| regs3_su_32 vhadd vhaddq |
| regs3_su_32 vrhadd vrhaddq |
| regs3_su_32 vhsub vhsubq |
| |
| .macro regs3_su_64 op opq |
| regs3_1 \op \opq .s8 |
| regs3_1 \op \opq .s16 |
| regs3_1 \op \opq .s32 |
| regs3_1 \op \opq .s64 |
| regs3_1 \op \opq .u8 |
| regs3_1 \op \opq .u16 |
| regs3_1 \op \opq .u32 |
| regs3_1 \op \opq .u64 |
| .endm |
| |
| regs3_su_64 vqadd vqaddq |
| regs3_su_64 vqsub vqsubq |
| regs3_su_64 vrshl vrshlq |
| regs3_su_64 vqrshl vqrshlq |
| |
| regs3_su_64 vshl vshlq |
| regs3_su_64 vqshl vqshlq |
| |
| .macro regs2i_1 op opq imm vtype |
| \op\vtype q0,q0,\imm |
| \opq\vtype q0,q0,\imm |
| \op\vtype d0,d0,\imm |
| .endm |
| |
| .macro regs2i_su_64 op opq imm |
| regs2i_1 \op \opq \imm .s8 |
| regs2i_1 \op \opq \imm .s16 |
| regs2i_1 \op \opq \imm .s32 |
| regs2i_1 \op \opq \imm .s64 |
| regs2i_1 \op \opq \imm .u8 |
| regs2i_1 \op \opq \imm .u16 |
| regs2i_1 \op \opq \imm .u32 |
| regs2i_1 \op \opq \imm .u64 |
| .endm |
| |
| .macro regs2i_i_64 op opq imm |
| regs2i_1 \op \opq \imm .i8 |
| regs2i_1 \op \opq \imm .i16 |
| regs2i_1 \op \opq \imm .i32 |
| regs2i_1 \op \opq \imm .s32 |
| regs2i_1 \op \opq \imm .u32 |
| regs2i_1 \op \opq \imm .i64 |
| .endm |
| |
| regs2i_i_64 vshl vshlq 0 |
| regs2i_su_64 vqshl vqshlq 0 |
| |
| .macro regs3_ntyp op opq |
| regs3_1 \op \opq .8 |
| .endm |
| |
| regs3_ntyp vand vandq |
| regs3_ntyp vbic vbicq |
| regs3_ntyp vorr vorrq |
| regs3_ntyp vorn vornq |
| regs3_ntyp veor veorq |
| |
| .macro logic_imm_1 op opq imm vtype |
| \op\vtype q0,\imm |
| \opq\vtype q0,\imm |
| \op\vtype d0,\imm |
| .endm |
| |
| .macro logic_imm op opq |
| logic_imm_1 \op \opq 0x000000a5000000a5 .i64 |
| logic_imm_1 \op \opq 0x0000a5000000a500 .i64 |
| logic_imm_1 \op \opq 0x00a5000000a50000 .i64 |
| logic_imm_1 \op \opq 0xa5000000a5000000 .i64 |
| logic_imm_1 \op \opq 0x00a500a500a500a5 .i64 |
| logic_imm_1 \op \opq 0xa500a500a500a500 .i64 |
| logic_imm_1 \op \opq 0x000000ff .i32 |
| logic_imm_1 \op \opq 0x000000ff .s32 |
| logic_imm_1 \op \opq 0x000000ff .u32 |
| logic_imm_1 \op \opq 0x0000ff00 .i32 |
| logic_imm_1 \op \opq 0x00ff0000 .i32 |
| logic_imm_1 \op \opq 0xff000000 .i32 |
| logic_imm_1 \op \opq 0x00a500a5 .i32 |
| logic_imm_1 \op \opq 0xa500a500 .i32 |
| logic_imm_1 \op \opq 0x00ff .i16 |
| logic_imm_1 \op \opq 0xff00 .i16 |
| logic_imm_1 \op \opq 0x00 .i8 |
| .endm |
| |
| logic_imm vbic vbicq |
| logic_imm vorr vorrq |
| |
| .macro logic_inv_imm op opq |
| logic_imm_1 \op \opq 0xffffff5affffff5a .i64 |
| logic_imm_1 \op \opq 0xffff5affffff5aff .i64 |
| logic_imm_1 \op \opq 0xff5affffff5affff .i64 |
| logic_imm_1 \op \opq 0x5affffff5affffff .i64 |
| logic_imm_1 \op \opq 0xff5aff5aff5aff5a .i64 |
| logic_imm_1 \op \opq 0x5aff5aff5aff5aff .i64 |
| logic_imm_1 \op \opq 0xffffff00 .i32 |
| logic_imm_1 \op \opq 0xffffff00 .s32 |
| logic_imm_1 \op \opq 0xffffff00 .u32 |
| logic_imm_1 \op \opq 0xffff00ff .i32 |
| logic_imm_1 \op \opq 0xff00ffff .i32 |
| logic_imm_1 \op \opq 0x00ffffff .i32 |
| logic_imm_1 \op \opq 0xff5aff5a .i32 |
| logic_imm_1 \op \opq 0x5aff5aff .i32 |
| logic_imm_1 \op \opq 0xff00 .i16 |
| logic_imm_1 \op \opq 0x00ff .i16 |
| logic_imm_1 \op \opq 0xff .i8 |
| .endm |
| |
| logic_inv_imm vand vandq |
| logic_inv_imm vorn vornq |
| |
| regs3_ntyp vbsl vbslq |
| regs3_ntyp vbit vbitq |
| regs3_ntyp vbif vbifq |
| |
| .macro regs3_suf_32 op opq |
| regs3_1 \op \opq .s8 |
| regs3_1 \op \opq .s16 |
| regs3_1 \op \opq .s32 |
| regs3_1 \op \opq .u8 |
| regs3_1 \op \opq .u16 |
| regs3_1 \op \opq .u32 |
| regs3_1 \op \opq .f32 |
| .endm |
| |
| .macro regs3_if_32 op opq |
| regs3_1 \op \opq .i8 |
| regs3_1 \op \opq .i16 |
| regs3_1 \op \opq .i32 |
| regs3_1 \op \opq .s32 |
| regs3_1 \op \opq .u32 |
| regs3_1 \op \opq .f32 |
| .endm |
| |
| regs3_suf_32 vabd vabdq |
| regs3_suf_32 vmax vmaxq |
| regs3_suf_32 vmin vminq |
| |
| regs3_suf_32 vcge vcgeq |
| regs3_suf_32 vcgt vcgtq |
| regs3_suf_32 vcle vcleq |
| regs3_suf_32 vclt vcltq |
| |
| regs3_if_32 vceq vceqq |
| |
| .macro regs2i_sf_0 op opq |
| regs2i_1 \op \opq 0 .s8 |
| regs2i_1 \op \opq 0 .s16 |
| regs2i_1 \op \opq 0 .s32 |
| regs2i_1 \op \opq 0 .f32 |
| .endm |
| |
| regs2i_sf_0 vcge vcgeq |
| regs2i_sf_0 vcgt vcgtq |
| regs2i_sf_0 vcle vcleq |
| regs2i_sf_0 vclt vcltq |
| |
| .macro regs2i_if_0 op opq |
| regs2i_1 \op \opq 0 .i8 |
| regs2i_1 \op \opq 0 .i16 |
| regs2i_1 \op \opq 0 .i32 |
| regs2i_1 \op \opq 0 .s32 |
| regs2i_1 \op \opq 0 .u32 |
| regs2i_1 \op \opq 0 .f32 |
| .endm |
| |
| regs2i_if_0 vceq vceqq |
| |
| .macro dregs3_suf_32 op |
| dregs3_1 \op .s8 |
| dregs3_1 \op .s16 |
| dregs3_1 \op .s32 |
| dregs3_1 \op .u8 |
| dregs3_1 \op .u16 |
| dregs3_1 \op .u32 |
| dregs3_1 \op .f32 |
| .endm |
| |
| dregs3_suf_32 vpmax |
| dregs3_suf_32 vpmin |
| |
| .macro sregs3_1 op opq vtype |
| \op\vtype q0,q0,q0 |
| \opq\vtype q0,q0,q0 |
| \op\vtype d0,d0,d0 |
| .endm |
| |
| .macro sclr21_1 op opq vtype |
| \op\vtype q0,q0,d0[0] |
| \opq\vtype q0,q0,d0[0] |
| \op\vtype d0,d0,d0[0] |
| .endm |
| |
| .macro mul_incl_scalar op opq |
| regs3_1 \op \opq .i8 |
| regs3_1 \op \opq .i16 |
| regs3_1 \op \opq .i32 |
| regs3_1 \op \opq .s32 |
| regs3_1 \op \opq .u32 |
| regs3_1 \op \opq .f32 |
| sclr21_1 \op \opq .i16 |
| sclr21_1 \op \opq .i32 |
| sclr21_1 \op \opq .s32 |
| sclr21_1 \op \opq .u32 |
| sclr21_1 \op \opq .f32 |
| .endm |
| |
| mul_incl_scalar vmla vmlaq |
| mul_incl_scalar vmls vmlsq |
| |
| .macro dregs3_if_32 op |
| dregs3_1 \op .i8 |
| dregs3_1 \op .i16 |
| dregs3_1 \op .i32 |
| dregs3_1 \op .s32 |
| dregs3_1 \op .u32 |
| dregs3_1 \op .f32 |
| .endm |
| |
| dregs3_if_32 vpadd |
| |
| .macro regs3_if_64 op opq |
| regs3_1 \op \opq .i8 |
| regs3_1 \op \opq .i16 |
| regs3_1 \op \opq .i32 |
| regs3_1 \op \opq .s32 |
| regs3_1 \op \opq .u32 |
| regs3_1 \op \opq .i64 |
| regs3_1 \op \opq .f32 |
| .endm |
| |
| regs3_if_64 vadd vaddq |
| regs3_if_64 vsub vsubq |
| |
| .macro regs3_sz_32 op opq |
| regs3_1 \op \opq .8 |
| regs3_1 \op \opq .16 |
| regs3_1 \op \opq .32 |
| .endm |
| |
| regs3_sz_32 vtst vtstq |
| |
| .macro regs3_ifp_32 op opq |
| regs3_1 \op \opq .i8 |
| regs3_1 \op \opq .i16 |
| regs3_1 \op \opq .i32 |
| regs3_1 \op \opq .s32 |
| regs3_1 \op \opq .u32 |
| regs3_1 \op \opq .f32 |
| regs3_1 \op \opq .p8 |
| .endm |
| |
| regs3_ifp_32 vmul vmulq |
| |
| .macro dqmulhs op opq |
| regs3_1 \op \opq .s16 |
| regs3_1 \op \opq .s32 |
| sclr21_1 \op \opq .s16 |
| sclr21_1 \op \opq .s32 |
| .endm |
| |
| dqmulhs vqdmulh vqdmulhq |
| dqmulhs vqrdmulh vqrdmulhq |
| |
| regs3_1 vacge vacgeq .f32 |
| regs3_1 vacgt vacgtq .f32 |
| regs3_1 vacle vacleq .f32 |
| regs3_1 vaclt vacltq .f32 |
| regs3_1 vrecps vrecpsq .f32 |
| regs3_1 vrsqrts vrsqrtsq .f32 |
| |
| .macro regs2_sf_32 op opq |
| regs2_1 \op \opq .s8 |
| regs2_1 \op \opq .s16 |
| regs2_1 \op \opq .s32 |
| regs2_1 \op \opq .f32 |
| .endm |
| |
| regs2_sf_32 vabs vabsq |
| regs2_sf_32 vneg vnegq |
| |
| .macro rshift_imm op opq |
| regs2i_1 \op \opq 7 .s8 |
| regs2i_1 \op \opq 15 .s16 |
| regs2i_1 \op \opq 31 .s32 |
| regs2i_1 \op \opq 63 .s64 |
| regs2i_1 \op \opq 7 .u8 |
| regs2i_1 \op \opq 15 .u16 |
| regs2i_1 \op \opq 31 .u32 |
| regs2i_1 \op \opq 63 .u64 |
| .endm |
| |
| rshift_imm vshr vshrq |
| rshift_imm vrshr vrshrq |
| rshift_imm vsra vsraq |
| rshift_imm vrsra vrsraq |
| |
| regs2i_1 vsli vsliq 0 .8 |
| regs2i_1 vsli vsliq 0 .16 |
| regs2i_1 vsli vsliq 0 .32 |
| regs2i_1 vsli vsliq 0 .64 |
| |
| regs2i_1 vsri vsriq 7 .8 |
| regs2i_1 vsri vsriq 15 .16 |
| regs2i_1 vsri vsriq 31 .32 |
| regs2i_1 vsri vsriq 63 .64 |
| |
| regs2i_1 vqshlu vqshluq 0 .s8 |
| regs2i_1 vqshlu vqshluq 0 .s16 |
| regs2i_1 vqshlu vqshluq 0 .s32 |
| regs2i_1 vqshlu vqshluq 0 .s64 |
| |
| .macro qrshift_imm op |
| regn3_1 \op 7 .s16 |
| regn3_1 \op 15 .s32 |
| regn3_1 \op 31 .s64 |
| regn3_1 \op 7 .u16 |
| regn3_1 \op 15 .u32 |
| regn3_1 \op 31 .u64 |
| .endm |
| |
| .macro qrshiftu_imm op |
| regn3_1 \op 7 .s16 |
| regn3_1 \op 15 .s32 |
| regn3_1 \op 31 .s64 |
| .endm |
| |
| .macro qrshifti_imm op |
| regn3_1 \op 7 .i16 |
| regn3_1 \op 15 .i32 |
| regn3_1 \op 15 .s32 |
| regn3_1 \op 15 .u32 |
| regn3_1 \op 31 .i64 |
| .endm |
| |
| qrshift_imm vqshrn |
| qrshift_imm vqrshrn |
| qrshiftu_imm vqshrun |
| qrshiftu_imm vqrshrun |
| |
| qrshifti_imm vshrn |
| qrshifti_imm vrshrn |
| |
| regl3_1 vshll 1 .s8 |
| regl3_1 vshll 1 .s16 |
| regl3_1 vshll 1 .s32 |
| regl3_1 vshll 1 .u8 |
| regl3_1 vshll 1 .u16 |
| regl3_1 vshll 1 .u32 |
| |
| regl3_1 vshll 8 .i8 |
| regl3_1 vshll 16 .i16 |
| regl3_1 vshll 32 .i32 |
| regl3_1 vshll 32 .s32 |
| regl3_1 vshll 32 .u32 |
| |
| .macro convert op opr arg="" t1=".s32.f32" t2=".u32.f32" t3=".f32.s32" t4=".f32.u32" |
| \op\t1 \opr,\opr\arg |
| \op\t2 \opr,\opr\arg |
| \op\t3 \opr,\opr\arg |
| \op\t4 \opr,\opr\arg |
| .endm |
| |
| convert vcvt q0 |
| convert vcvtq q0 |
| convert vcvt d0 |
| convert vcvt q0 ",1" |
| convert vcvtq q0 ",1" |
| convert vcvt d0 ",1" |
| |
| vmov q0,q0 |
| vmov d0,d0 |
| vmov.8 d0[0],r0 |
| vmov.16 d0[0],r0 |
| vmov.32 d0[0],r0 |
| vmov d0,r0,r0 |
| vmov.s8 r0,d0[0] |
| vmov.s16 r0,d0[0] |
| vmov.u8 r0,d0[0] |
| vmov.u16 r0,d0[0] |
| vmov.32 r0,d0[0] |
| vmov r0,r1,d0 |
| |
| .macro mov_imm op imm vtype |
| \op\vtype q0,\imm |
| \op\vtype d0,\imm |
| .endm |
| |
| mov_imm vmov 0x00000077 .i32 |
| mov_imm vmov 0x00000077 .s32 |
| mov_imm vmov 0x00000077 .u32 |
| mov_imm vmvn 0x00000077 .i32 |
| mov_imm vmvn 0x00000077 .s32 |
| mov_imm vmvn 0x00000077 .u32 |
| mov_imm vmov 0x00007700 .i32 |
| mov_imm vmvn 0x00007700 .i32 |
| mov_imm vmov 0x00770000 .i32 |
| mov_imm vmvn 0x00770000 .i32 |
| mov_imm vmov 0x77000000 .i32 |
| mov_imm vmvn 0x77000000 .i32 |
| mov_imm vmov 0x0077 .i16 |
| mov_imm vmvn 0x0077 .i16 |
| mov_imm vmov 0x7700 .i16 |
| mov_imm vmvn 0x7700 .i16 |
| mov_imm vmov 0x000077ff .i32 |
| mov_imm vmvn 0x000077ff .i32 |
| mov_imm vmov 0x0077ffff .i32 |
| mov_imm vmvn 0x0077ffff .i32 |
| mov_imm vmov 0x77 .i8 |
| mov_imm vmov 0xff0000ff000000ff .i64 |
| mov_imm vmov 4.25 .f32 |
| |
| mov_imm vmov 0xa5a5 .i16 |
| mov_imm vmvn 0xa5a5 .i16 |
| mov_imm vmov 0xa5a5a5a5 .i32 |
| mov_imm vmvn 0xa5a5a5a5 .i32 |
| mov_imm vmov 0x00a500a5 .i32 |
| mov_imm vmov 0xa500a500 .i32 |
| mov_imm vmov 0xa5a5a5a5a5a5a5a5 .i64 |
| mov_imm vmvn 0xa5a5a5a5a5a5a5a5 .i64 |
| mov_imm vmov 0x00a500a500a500a5 .i64 |
| mov_imm vmov 0xa500a500a500a500 .i64 |
| mov_imm vmov 0x000000a5000000a5 .i64 |
| mov_imm vmov 0x0000a5000000a500 .i64 |
| mov_imm vmov 0x00a5000000a50000 .i64 |
| mov_imm vmov 0xa5000000a5000000 .i64 |
| mov_imm vmov 0x0000a5ff0000a5ff .i64 |
| mov_imm vmov 0x00a5ffff00a5ffff .i64 |
| mov_imm vmov 0xa5ffffffa5ffffff .i64 |
| |
| vmvn q0,q0 |
| vmvnq q0,q0 |
| vmvn d0,d0 |
| |
| .macro long_ops op |
| regl3_1 \op d0 .s8 |
| regl3_1 \op d0 .s16 |
| regl3_1 \op d0 .s32 |
| regl3_1 \op d0 .u8 |
| regl3_1 \op d0 .u16 |
| regl3_1 \op d0 .u32 |
| .endm |
| |
| long_ops vabal |
| long_ops vabdl |
| long_ops vaddl |
| long_ops vsubl |
| |
| .macro long_mac op |
| regl3_1 \op d0 .s8 |
| regl3_1 \op d0 .s16 |
| regl3_1 \op d0 .s32 |
| regl3_1 \op d0 .u8 |
| regl3_1 \op d0 .u16 |
| regl3_1 \op d0 .u32 |
| regl3_1 \op "d0[0]" .s16 |
| regl3_1 \op "d0[0]" .s32 |
| regl3_1 \op "d0[0]" .u16 |
| regl3_1 \op "d0[0]" .u32 |
| .endm |
| |
| long_mac vmlal |
| long_mac vmlsl |
| |
| .macro wide_ops op |
| regw3_1 \op d0 .s8 |
| regw3_1 \op d0 .s16 |
| regw3_1 \op d0 .s32 |
| regw3_1 \op d0 .u8 |
| regw3_1 \op d0 .u16 |
| regw3_1 \op d0 .u32 |
| .endm |
| |
| wide_ops vaddw |
| wide_ops vsubw |
| |
| .macro narr_ops op |
| regn3_1 \op q0 .i16 |
| regn3_1 \op q0 .i32 |
| regn3_1 \op q0 .s32 |
| regn3_1 \op q0 .u32 |
| regn3_1 \op q0 .i64 |
| .endm |
| |
| narr_ops vaddhn |
| narr_ops vraddhn |
| narr_ops vsubhn |
| narr_ops vrsubhn |
| |
| .macro long_dmac op |
| regl3_1 \op d0 .s16 |
| regl3_1 \op d0 .s32 |
| regl3_1 \op "d0[0]" .s16 |
| regl3_1 \op "d0[0]" .s32 |
| .endm |
| |
| long_dmac vqdmlal |
| long_dmac vqdmlsl |
| long_dmac vqdmull |
| |
| regl3_1 vmull d0 .s8 |
| regl3_1 vmull d0 .s16 |
| regl3_1 vmull d0 .s32 |
| regl3_1 vmull d0 .u8 |
| regl3_1 vmull d0 .u16 |
| regl3_1 vmull d0 .u32 |
| regl3_1 vmull d0 .p8 |
| regl3_1 vmull "d0[0]" .s16 |
| regl3_1 vmull "d0[0]" .s32 |
| regl3_1 vmull "d0[0]" .u16 |
| regl3_1 vmull "d0[0]" .u32 |
| |
| vext.8 q0,q0,q0,0 |
| vextq.8 q0,q0,q0,0 |
| vext.8 d0,d0,d0,0 |
| vext.8 q0,q0,q0,8 |
| |
| .macro revs op opq vtype |
| \op\vtype q0,q0 |
| \opq\vtype q0,q0 |
| \op\vtype d0,d0 |
| .endm |
| |
| revs vrev64 vrev64q .8 |
| revs vrev64 vrev64q .16 |
| revs vrev64 vrev64q .32 |
| revs vrev32 vrev32q .8 |
| revs vrev32 vrev32q .16 |
| revs vrev16 vrev16q .8 |
| |
| .macro dups op opq vtype |
| \op\vtype q0,r0 |
| \opq\vtype q0,r0 |
| \op\vtype d0,r0 |
| \op\vtype q0,d0[0] |
| \opq\vtype q0,d0[0] |
| \op\vtype d0,d0[0] |
| .endm |
| |
| dups vdup vdupq .8 |
| dups vdup vdupq .16 |
| dups vdup vdupq .32 |
| |
| .macro binop_3typ op op1 op2 t1 t2 t3 |
| \op\t1 \op1,\op2 |
| \op\t2 \op1,\op2 |
| \op\t3 \op1,\op2 |
| .endm |
| |
| binop_3typ vmovl q0 d0 .s8 .s16 .s32 |
| binop_3typ vmovl q0 d0 .u8 .u16 .u32 |
| binop_3typ vmovn d0 q0 .i16 .i32 .i64 |
| vmovn.s32 d0, q0 |
| vmovn.u32 d0, q0 |
| binop_3typ vqmovn d0 q0 .s16 .s32 .s64 |
| binop_3typ vqmovn d0 q0 .u16 .u32 .u64 |
| binop_3typ vqmovun d0 q0 .s16 .s32 .s64 |
| |
| .macro binops op opq vtype="" rhs="0" |
| \op\vtype q0,q\rhs |
| \opq\vtype q0,q\rhs |
| \op\vtype d0,d\rhs |
| .endm |
| |
| .macro regs2_sz_32 op opq |
| binops \op \opq .8 1 |
| binops \op \opq .16 1 |
| binops \op \opq .32 1 |
| .endm |
| |
| regs2_sz_32 vzip vzipq |
| regs2_sz_32 vuzp vuzpq |
| |
| .macro regs2_s_32 op opq |
| binops \op \opq .s8 |
| binops \op \opq .s16 |
| binops \op \opq .s32 |
| .endm |
| |
| regs2_s_32 vqabs vqabsq |
| regs2_s_32 vqneg vqnegq |
| |
| .macro regs2_su_32 op opq |
| regs2_s_32 \op \opq |
| binops \op \opq .u8 |
| binops \op \opq .u16 |
| binops \op \opq .u32 |
| .endm |
| |
| regs2_su_32 vpadal vpadalq |
| regs2_su_32 vpaddl vpaddlq |
| |
| binops vrecpe vrecpeq .u32 |
| binops vrecpe vrecpeq .f32 |
| binops vrsqrte vrsqrteq .u32 |
| binops vrsqrte vrsqrteq .f32 |
| |
| regs2_s_32 vcls vclsq |
| |
| .macro regs2_i_32 op opq |
| binops \op \opq .i8 |
| binops \op \opq .i16 |
| binops \op \opq .i32 |
| binops \op \opq .s32 |
| binops \op \opq .u32 |
| .endm |
| |
| regs2_i_32 vclz vclzq |
| |
| binops vcnt vcntq .8 |
| |
| binops vswp vswpq "" 1 |
| |
| regs2_sz_32 vtrn vtrnq |
| |
| vtbl.8 d0,{d0},d0 |
| vtbx.8 d0,{d0},d0 |
| |