/* simdhp.s Test file for AArch64 half-precision floating-point vector instructions. */ /* Vector three-same. */ .macro three_same, op \op v1.2d, v2.2d, v3.2d \op v1.2s, v2.2s, v3.2s \op v1.4s, v2.4s, v3.4s \op v0.4h, v0.4h, v0.4h \op v1.4h, v2.4h, v3.4h \op v0.8h, v0.8h, v0.8h \op v1.8h, v2.8h, v3.8h .endm .text three_same fmaxnm three_same fmaxnmp three_same fminnm three_same fminnmp three_same fmla three_same fmls three_same fadd three_same faddp three_same fsub three_same fmulx three_same fmul three_same fcmeq three_same fcmge three_same fcmgt three_same facge three_same facgt three_same fmax three_same fmaxp three_same fmin three_same fminp three_same frecps three_same fdiv three_same frsqrts /* Scalar three-same. */ .macro sthree_same, op \op d0, d1, d2 \op s0, s1, s2 \op h0, h1, h2 \op h0, h0, h0 .endm sthree_same fabd sthree_same fmulx sthree_same fcmeq sthree_same fcmgt sthree_same fcmge sthree_same facge sthree_same facgt sthree_same frecps sthree_same frsqrts /* Vector two-register misc. */ .macro tworeg_zero, op \op v0.2d, v1.2d, #0.0 \op v0.2s, v1.2s, #0.0 \op v0.4s, v1.4s, #0.0 \op v0.4h, v1.4h, #0.0 \op v0.8h, v1.8h, #0.0 .endm tworeg_zero fcmgt tworeg_zero fcmge tworeg_zero fcmeq tworeg_zero fcmle tworeg_zero fcmlt .macro tworeg_misc, op \op v0.2d, v1.2d \op v0.2s, v1.2s \op v0.4s, v1.4s \op v0.4h, v1.4h \op v0.8h, v1.8h .endm tworeg_misc fabs tworeg_misc fneg tworeg_misc frintn tworeg_misc frinta tworeg_misc frintp tworeg_misc frintm tworeg_misc frintx tworeg_misc frintz tworeg_misc frinti tworeg_misc fcvtns tworeg_misc fcvtnu tworeg_misc fcvtps tworeg_misc fcvtpu tworeg_misc fcvtms tworeg_misc fcvtmu tworeg_misc fcvtzs tworeg_misc fcvtzu tworeg_misc fcvtas tworeg_misc fcvtau tworeg_misc scvtf tworeg_misc ucvtf tworeg_misc frecpe tworeg_misc frsqrte tworeg_misc fsqrt /* Scalar two-register misc. */ .macro stworeg_zero, op \op d0, d1, #0.0 \op s0, s1, #0.0 \op h0, h1, #0.0 \op h0, h0, #0.0 .endm stworeg_zero fcmgt stworeg_zero fcmge stworeg_zero fcmeq stworeg_zero fcmle stworeg_zero fcmlt .macro stworeg_misc, op \op d0, d1 \op s0, s1 \op h0, h1 \op h0, h0 .endm stworeg_misc fcvtns stworeg_misc fcvtnu stworeg_misc fcvtps stworeg_misc fcvtpu stworeg_misc fcvtms stworeg_misc fcvtmu stworeg_misc fcvtzs stworeg_misc fcvtzu stworeg_misc fcvtas stworeg_misc fcvtau stworeg_misc scvtf stworeg_misc ucvtf stworeg_misc frecpe stworeg_misc frsqrte stworeg_misc frecpx /* Vector indexed element. */ .macro indexed_elem, op \op v1.2d, v2.2d, v3.d[1] \op v1.2s, v2.2s, v3.s[2] \op v1.4s, v2.4s, v3.s[1] \op v0.4h, v0.4h, v0.h[0] \op v1.4h, v2.4h, v3.h[0] \op v0.8h, v0.8h, v0.h[0] \op v1.8h, v2.8h, v3.h[0] \op v1.2d, v5.2d, v10.d[0] \op v8.2s, v0.2s, v11.s[3] \op v0.4h, v9.4h, v15.h[7] .endm indexed_elem fmla indexed_elem fmls indexed_elem fmul indexed_elem fmulx /* Scalar indexed element. */ .macro sindexed_elem, op \op d1, d2, v3.d[1] \op s1, s2, v3.s[1] \op h1, h2, v3.h[1] \op h0, h0, v0.h[0] .endm sindexed_elem fmla sindexed_elem fmls sindexed_elem fmul sindexed_elem fmulx /* Adv.SIMD across lanes. */ .macro across_lanes, op \op s1, v2.4s \op h1, v2.4h \op h1, v2.8h \op h0, v0.4h \op h0, v0.8h .endm across_lanes fmaxnmv across_lanes fmaxv across_lanes fminnmv across_lanes fminv /* Adv.SIMD modified immediate. */ fmov v1.2d, #2.0 fmov v1.2s, #2.0 fmov v1.4s, #2.0 fmov v1.4h, #2.0 fmov v1.8h, #2.0 fmov v0.4h, #1.0 fmov v0.8h, #1.0 /* Adv.SIMD scalar pairwise. */ .macro scalar_pairwise, op \op d1, v2.2d \op s1, v2.2s \op h1, v2.2h \op h0, v0.2h .endm scalar_pairwise fmaxnmp scalar_pairwise faddp scalar_pairwise fmaxp scalar_pairwise fminnmp scalar_pairwise fminp /* Adv.SIMD shift by immediate. */ .macro shift_imm, op \op v1.2d, v2.2d, #3 \op v1.2s, v2.2s, #3 \op v1.4s, v2.4s, #3 \op v1.4h, v2.4h, #3 \op v1.8h, v2.8h, #3 \op v0.4h, v0.4h, #1 \op v0.8h, v0.8h, #1 .endm shift_imm scvtf shift_imm fcvtzs shift_imm ucvtf shift_imm fcvtzu /* Adv.SIMD scalar shift by immediate. */ .macro sshift_imm, op \op d1, d2, #3 \op s1, s2, #3 \op h1, h2, #3 \op h0, h0, #1 .endm sshift_imm scvtf sshift_imm fcvtzs sshift_imm ucvtf sshift_imm fcvtzu