| 1 | /* simdhp.s Test file for AArch64 half-precision floating-point |
| 2 | vector instructions. */ |
| 3 | |
| 4 | /* Vector three-same. */ |
| 5 | |
| 6 | .macro three_same, op |
| 7 | \op v1.2d, v2.2d, v3.2d |
| 8 | \op v1.2s, v2.2s, v3.2s |
| 9 | \op v1.4s, v2.4s, v3.4s |
| 10 | \op v0.4h, v0.4h, v0.4h |
| 11 | \op v1.4h, v2.4h, v3.4h |
| 12 | \op v0.8h, v0.8h, v0.8h |
| 13 | \op v1.8h, v2.8h, v3.8h |
| 14 | .endm |
| 15 | |
| 16 | .text |
| 17 | |
| 18 | three_same fmaxnm |
| 19 | three_same fmaxnmp |
| 20 | three_same fminnm |
| 21 | three_same fminnmp |
| 22 | three_same fmla |
| 23 | three_same fmls |
| 24 | three_same fadd |
| 25 | three_same faddp |
| 26 | three_same fsub |
| 27 | three_same fmulx |
| 28 | three_same fmul |
| 29 | three_same fcmeq |
| 30 | three_same fcmge |
| 31 | three_same fcmgt |
| 32 | three_same facge |
| 33 | three_same facgt |
| 34 | three_same fmax |
| 35 | three_same fmaxp |
| 36 | three_same fmin |
| 37 | three_same fminp |
| 38 | three_same frecps |
| 39 | three_same fdiv |
| 40 | three_same frsqrts |
| 41 | |
| 42 | /* Scalar three-same. */ |
| 43 | |
| 44 | .macro sthree_same, op |
| 45 | \op d0, d1, d2 |
| 46 | \op s0, s1, s2 |
| 47 | \op h0, h1, h2 |
| 48 | \op h0, h0, h0 |
| 49 | .endm |
| 50 | |
| 51 | sthree_same fabd |
| 52 | sthree_same fmulx |
| 53 | sthree_same fcmeq |
| 54 | sthree_same fcmgt |
| 55 | sthree_same fcmge |
| 56 | sthree_same facge |
| 57 | sthree_same facgt |
| 58 | sthree_same frecps |
| 59 | sthree_same frsqrts |
| 60 | |
| 61 | /* Vector two-register misc. */ |
| 62 | |
| 63 | .macro tworeg_zero, op |
| 64 | \op v0.2d, v1.2d, #0.0 |
| 65 | \op v0.2s, v1.2s, #0.0 |
| 66 | \op v0.4s, v1.4s, #0.0 |
| 67 | \op v0.4h, v1.4h, #0.0 |
| 68 | \op v0.8h, v1.8h, #0.0 |
| 69 | .endm |
| 70 | |
| 71 | tworeg_zero fcmgt |
| 72 | tworeg_zero fcmge |
| 73 | tworeg_zero fcmeq |
| 74 | tworeg_zero fcmle |
| 75 | tworeg_zero fcmlt |
| 76 | |
| 77 | .macro tworeg_misc, op |
| 78 | \op v0.2d, v1.2d |
| 79 | \op v0.2s, v1.2s |
| 80 | \op v0.4s, v1.4s |
| 81 | \op v0.4h, v1.4h |
| 82 | \op v0.8h, v1.8h |
| 83 | .endm |
| 84 | |
| 85 | tworeg_misc fabs |
| 86 | tworeg_misc fneg |
| 87 | |
| 88 | tworeg_misc frintn |
| 89 | tworeg_misc frinta |
| 90 | tworeg_misc frintp |
| 91 | |
| 92 | tworeg_misc frintm |
| 93 | tworeg_misc frintx |
| 94 | tworeg_misc frintz |
| 95 | tworeg_misc frinti |
| 96 | |
| 97 | tworeg_misc fcvtns |
| 98 | tworeg_misc fcvtnu |
| 99 | tworeg_misc fcvtps |
| 100 | tworeg_misc fcvtpu |
| 101 | |
| 102 | tworeg_misc fcvtms |
| 103 | tworeg_misc fcvtmu |
| 104 | tworeg_misc fcvtzs |
| 105 | tworeg_misc fcvtzu |
| 106 | |
| 107 | tworeg_misc fcvtas |
| 108 | tworeg_misc fcvtau |
| 109 | |
| 110 | tworeg_misc scvtf |
| 111 | tworeg_misc ucvtf |
| 112 | tworeg_misc frecpe |
| 113 | tworeg_misc frsqrte |
| 114 | tworeg_misc fsqrt |
| 115 | |
| 116 | /* Scalar two-register misc. */ |
| 117 | |
| 118 | .macro stworeg_zero, op |
| 119 | \op d0, d1, #0.0 |
| 120 | \op s0, s1, #0.0 |
| 121 | \op h0, h1, #0.0 |
| 122 | \op h0, h0, #0.0 |
| 123 | .endm |
| 124 | |
| 125 | stworeg_zero fcmgt |
| 126 | stworeg_zero fcmge |
| 127 | stworeg_zero fcmeq |
| 128 | stworeg_zero fcmle |
| 129 | stworeg_zero fcmlt |
| 130 | |
| 131 | .macro stworeg_misc, op |
| 132 | \op d0, d1 |
| 133 | \op s0, s1 |
| 134 | \op h0, h1 |
| 135 | \op h0, h0 |
| 136 | .endm |
| 137 | |
| 138 | stworeg_misc fcvtns |
| 139 | stworeg_misc fcvtnu |
| 140 | stworeg_misc fcvtps |
| 141 | stworeg_misc fcvtpu |
| 142 | |
| 143 | stworeg_misc fcvtms |
| 144 | stworeg_misc fcvtmu |
| 145 | stworeg_misc fcvtzs |
| 146 | stworeg_misc fcvtzu |
| 147 | |
| 148 | stworeg_misc fcvtas |
| 149 | stworeg_misc fcvtau |
| 150 | |
| 151 | stworeg_misc scvtf |
| 152 | stworeg_misc ucvtf |
| 153 | |
| 154 | stworeg_misc frecpe |
| 155 | stworeg_misc frsqrte |
| 156 | stworeg_misc frecpx |