/* 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] .endm indexed_elem fmla indexed_elem fmls indexed_elem fmul indexed_elem fmulx