1 // REQUIRES: aarch64-registered-target 2 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +neon \ 3 // RUN: -ffp-contract=fast -S -O3 -o - %s | FileCheck %s 4 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +neon \ 5 // RUN: -S -O3 -o - %s | FileCheck %s 6 7 // Test new aarch64 intrinsics and types 8 9 #include <arm_neon.h> 10 11 int16x4_t test_vmla_lane_s16(int16x4_t a, int16x4_t b, int16x4_t v) { 12 // CHECK: test_vmla_lane_s16 13 return vmla_lane_s16(a, b, v, 1); 14 // CHECK: mla {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 15 } 16 17 int16x8_t test_vmlaq_lane_s16(int16x8_t a, int16x8_t b, int16x4_t v) { 18 // CHECK: test_vmlaq_lane_s16 19 return vmlaq_lane_s16(a, b, v, 1); 20 // CHECK: mla {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 21 } 22 23 int32x2_t test_vmla_lane_s32(int32x2_t a, int32x2_t b, int32x2_t v) { 24 // CHECK: test_vmla_lane_s32 25 return vmla_lane_s32(a, b, v, 1); 26 // CHECK: mla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 27 } 28 29 int32x4_t test_vmlaq_lane_s32(int32x4_t a, int32x4_t b, int32x2_t v) { 30 // CHECK: test_vmlaq_lane_s32 31 return vmlaq_lane_s32(a, b, v, 1); 32 // CHECK: mla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 33 } 34 35 int16x4_t test_vmla_laneq_s16(int16x4_t a, int16x4_t b, int16x8_t v) { 36 // CHECK: test_vmla_laneq_s16 37 return vmla_laneq_s16(a, b, v, 1); 38 // CHECK: mla {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 39 } 40 41 int16x8_t test_vmlaq_laneq_s16(int16x8_t a, int16x8_t b, int16x8_t v) { 42 // CHECK: test_vmlaq_laneq_s16 43 return vmlaq_laneq_s16(a, b, v, 1); 44 // CHECK: mla {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 45 } 46 47 int32x2_t test_vmla_laneq_s32(int32x2_t a, int32x2_t b, int32x4_t v) { 48 // CHECK: test_vmla_laneq_s32 49 return vmla_laneq_s32(a, b, v, 1); 50 // CHECK: mla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 51 } 52 53 int32x4_t test_vmlaq_laneq_s32(int32x4_t a, int32x4_t b, int32x4_t v) { 54 // CHECK: test_vmlaq_laneq_s32 55 return vmlaq_laneq_s32(a, b, v, 1); 56 // CHECK: mla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 57 } 58 59 int16x4_t test_vmls_lane_s16(int16x4_t a, int16x4_t b, int16x4_t v) { 60 // CHECK: test_vmls_lane_s16 61 return vmls_lane_s16(a, b, v, 1); 62 // CHECK: mls {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 63 } 64 65 int16x8_t test_vmlsq_lane_s16(int16x8_t a, int16x8_t b, int16x4_t v) { 66 // CHECK: test_vmlsq_lane_s16 67 return vmlsq_lane_s16(a, b, v, 1); 68 // CHECK: mls {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 69 } 70 71 int32x2_t test_vmls_lane_s32(int32x2_t a, int32x2_t b, int32x2_t v) { 72 // CHECK: test_vmls_lane_s32 73 return vmls_lane_s32(a, b, v, 1); 74 // CHECK: mls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 75 } 76 77 int32x4_t test_vmlsq_lane_s32(int32x4_t a, int32x4_t b, int32x2_t v) { 78 // CHECK: test_vmlsq_lane_s32 79 return vmlsq_lane_s32(a, b, v, 1); 80 // CHECK: mls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 81 } 82 83 int16x4_t test_vmls_laneq_s16(int16x4_t a, int16x4_t b, int16x8_t v) { 84 // CHECK: test_vmls_laneq_s16 85 return vmls_laneq_s16(a, b, v, 1); 86 // CHECK: mls {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 87 } 88 89 int16x8_t test_vmlsq_laneq_s16(int16x8_t a, int16x8_t b, int16x8_t v) { 90 // CHECK: test_vmlsq_laneq_s16 91 return vmlsq_laneq_s16(a, b, v, 1); 92 // CHECK: mls {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 93 } 94 95 int32x2_t test_vmls_laneq_s32(int32x2_t a, int32x2_t b, int32x4_t v) { 96 // CHECK: test_vmls_laneq_s32 97 return vmls_laneq_s32(a, b, v, 1); 98 // CHECK: mls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 99 } 100 101 int32x4_t test_vmlsq_laneq_s32(int32x4_t a, int32x4_t b, int32x4_t v) { 102 // CHECK: test_vmlsq_laneq_s32 103 return vmlsq_laneq_s32(a, b, v, 1); 104 // CHECK: mls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 105 } 106 107 int16x4_t test_vmul_lane_s16(int16x4_t a, int16x4_t v) { 108 // CHECK: test_vmul_lane_s16 109 return vmul_lane_s16(a, v, 1); 110 // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 111 } 112 113 int16x8_t test_vmulq_lane_s16(int16x8_t a, int16x4_t v) { 114 // CHECK: test_vmulq_lane_s16 115 return vmulq_lane_s16(a, v, 1); 116 // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 117 } 118 119 int32x2_t test_vmul_lane_s32(int32x2_t a, int32x2_t v) { 120 // CHECK: test_vmul_lane_s32 121 return vmul_lane_s32(a, v, 1); 122 // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 123 } 124 125 int32x4_t test_vmulq_lane_s32(int32x4_t a, int32x2_t v) { 126 // CHECK: test_vmulq_lane_s32 127 return vmulq_lane_s32(a, v, 1); 128 // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 129 } 130 131 uint16x4_t test_vmul_lane_u16(uint16x4_t a, uint16x4_t v) { 132 // CHECK: test_vmul_lane_u16 133 return vmul_lane_u16(a, v, 1); 134 // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 135 } 136 137 uint16x8_t test_vmulq_lane_u16(uint16x8_t a, uint16x4_t v) { 138 // CHECK: test_vmulq_lane_u16 139 return vmulq_lane_u16(a, v, 1); 140 // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 141 } 142 143 uint32x2_t test_vmul_lane_u32(uint32x2_t a, uint32x2_t v) { 144 // CHECK: test_vmul_lane_u32 145 return vmul_lane_u32(a, v, 1); 146 // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 147 } 148 149 uint32x4_t test_vmulq_lane_u32(uint32x4_t a, uint32x2_t v) { 150 // CHECK: test_vmulq_lane_u32 151 return vmulq_lane_u32(a, v, 1); 152 // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 153 } 154 155 int16x4_t test_vmul_laneq_s16(int16x4_t a, int16x8_t v) { 156 // CHECK: test_vmul_laneq_s16 157 return vmul_laneq_s16(a, v, 1); 158 // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 159 } 160 161 int16x8_t test_vmulq_laneq_s16(int16x8_t a, int16x8_t v) { 162 // CHECK: test_vmulq_laneq_s16 163 return vmulq_laneq_s16(a, v, 1); 164 // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 165 } 166 167 int32x2_t test_vmul_laneq_s32(int32x2_t a, int32x4_t v) { 168 // CHECK: test_vmul_laneq_s32 169 return vmul_laneq_s32(a, v, 1); 170 // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 171 } 172 173 int32x4_t test_vmulq_laneq_s32(int32x4_t a, int32x4_t v) { 174 // CHECK: test_vmulq_laneq_s32 175 return vmulq_laneq_s32(a, v, 1); 176 // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 177 } 178 179 uint16x4_t test_vmul_laneq_u16(uint16x4_t a, uint16x8_t v) { 180 // CHECK: test_vmul_laneq_u16 181 return vmul_laneq_u16(a, v, 1); 182 // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 183 } 184 185 uint16x8_t test_vmulq_laneq_u16(uint16x8_t a, uint16x8_t v) { 186 // CHECK: test_vmulq_laneq_u16 187 return vmulq_laneq_u16(a, v, 1); 188 // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 189 } 190 191 uint32x2_t test_vmul_laneq_u32(uint32x2_t a, uint32x4_t v) { 192 // CHECK: test_vmul_laneq_u32 193 return vmul_laneq_u32(a, v, 1); 194 // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 195 } 196 197 uint32x4_t test_vmulq_laneq_u32(uint32x4_t a, uint32x4_t v) { 198 // CHECK: test_vmulq_laneq_u32 199 return vmulq_laneq_u32(a, v, 1); 200 // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 201 } 202 203 float32x2_t test_vfma_lane_f32(float32x2_t a, float32x2_t b, float32x2_t v) { 204 // CHECK: test_vfma_lane_f32 205 return vfma_lane_f32(a, b, v, 1); 206 // CHECK: fmla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 207 } 208 209 float32x4_t test_vfmaq_lane_f32(float32x4_t a, float32x4_t b, float32x2_t v) { 210 // CHECK: test_vfmaq_lane_f32 211 return vfmaq_lane_f32(a, b, v, 1); 212 // CHECK: fmla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 213 } 214 215 float32x2_t test_vfma_laneq_f32(float32x2_t a, float32x2_t b, float32x4_t v) { 216 // CHECK: test_vfma_laneq_f32 217 return vfma_laneq_f32(a, b, v, 1); 218 // CHECK: fmla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 219 } 220 221 float32x4_t test_vfmaq_laneq_f32(float32x4_t a, float32x4_t b, float32x4_t v) { 222 // CHECK: test_vfmaq_laneq_f32 223 return vfmaq_laneq_f32(a, b, v, 1); 224 // CHECK: fmla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 225 } 226 227 float32x2_t test_vfms_lane_f32(float32x2_t a, float32x2_t b, float32x2_t v) { 228 // CHECK: test_vfms_lane_f32 229 return vfms_lane_f32(a, b, v, 1); 230 // CHECK: fmls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 231 } 232 233 float32x4_t test_vfmsq_lane_f32(float32x4_t a, float32x4_t b, float32x2_t v) { 234 // CHECK: test_vfmsq_lane_f32 235 return vfmsq_lane_f32(a, b, v, 1); 236 // CHECK: fmls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 237 } 238 239 float32x2_t test_vfms_laneq_f32(float32x2_t a, float32x2_t b, float32x4_t v) { 240 // CHECK: test_vfms_laneq_f32 241 return vfms_laneq_f32(a, b, v, 1); 242 // CHECK: fmls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 243 } 244 245 float32x4_t test_vfmsq_laneq_f32(float32x4_t a, float32x4_t b, float32x4_t v) { 246 // CHECK: test_vfmsq_laneq_f32 247 return vfmsq_laneq_f32(a, b, v, 1); 248 // CHECK: fmls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 249 } 250 251 float64x2_t test_vfmaq_lane_f64(float64x2_t a, float64x2_t b, float64x1_t v) { 252 // CHECK: test_vfmaq_lane_f64 253 return vfmaq_lane_f64(a, b, v, 0); 254 // CHECK: fmla {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0] 255 } 256 257 float64x2_t test_vfmaq_laneq_f64_0(float64x2_t a, float64x2_t b, float64x2_t v) { 258 // CHECK: test_vfmaq_laneq_f64 259 return vfmaq_laneq_f64(a, b, v, 0); 260 // CHECK: fmla {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0] 261 } 262 263 float64x2_t test_vfmaq_laneq_f64(float64x2_t a, float64x2_t b, float64x2_t v) { 264 // CHECK: test_vfmaq_laneq_f64 265 return vfmaq_laneq_f64(a, b, v, 1); 266 // CHECK: fmla {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[1] 267 } 268 269 float64x2_t test_vfmsq_lane_f64(float64x2_t a, float64x2_t b, float64x1_t v) { 270 // CHECK: test_vfmsq_lane_f64 271 return vfmsq_lane_f64(a, b, v, 0); 272 // CHECK: fmls {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0] 273 } 274 275 float64x2_t test_vfmsq_laneq_f64_0(float64x2_t a, float64x2_t b, float64x2_t v) { 276 // CHECK: test_vfmsq_laneq_f64 277 return vfmsq_laneq_f64(a, b, v, 0); 278 // CHECK: fmls {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0] 279 } 280 281 float64x2_t test_vfmsq_laneq_f64(float64x2_t a, float64x2_t b, float64x2_t v) { 282 // CHECK: test_vfmsq_laneq_f64 283 return vfmsq_laneq_f64(a, b, v, 1); 284 // CHECK: fmls {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[1] 285 } 286 287 int32x4_t test_vmlal_lane_s16(int32x4_t a, int16x4_t b, int16x4_t v) { 288 // CHECK: test_vmlal_lane_s16 289 return vmlal_lane_s16(a, b, v, 1); 290 // CHECK: smlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 291 } 292 293 int64x2_t test_vmlal_lane_s32(int64x2_t a, int32x2_t b, int32x2_t v) { 294 // CHECK: test_vmlal_lane_s32 295 return vmlal_lane_s32(a, b, v, 1); 296 // CHECK: smlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 297 } 298 299 int32x4_t test_vmlal_laneq_s16(int32x4_t a, int16x4_t b, int16x8_t v) { 300 // CHECK: test_vmlal_laneq_s16 301 return vmlal_laneq_s16(a, b, v, 1); 302 // CHECK: smlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 303 } 304 305 int64x2_t test_vmlal_laneq_s32(int64x2_t a, int32x2_t b, int32x4_t v) { 306 // CHECK: test_vmlal_laneq_s32 307 return vmlal_laneq_s32(a, b, v, 1); 308 // CHECK: smlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 309 } 310 311 int32x4_t test_vmlal_high_lane_s16(int32x4_t a, int16x8_t b, int16x4_t v) { 312 // CHECK: test_vmlal_high_lane_s16 313 return vmlal_high_lane_s16(a, b, v, 1); 314 // CHECK: smlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 315 } 316 317 int64x2_t test_vmlal_high_lane_s32(int64x2_t a, int32x4_t b, int32x2_t v) { 318 // CHECK: test_vmlal_high_lane_s32 319 return vmlal_high_lane_s32(a, b, v, 1); 320 // CHECK: smlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 321 } 322 323 int32x4_t test_vmlal_high_laneq_s16(int32x4_t a, int16x8_t b, int16x8_t v) { 324 // CHECK: test_vmlal_high_laneq_s16 325 return vmlal_high_laneq_s16(a, b, v, 1); 326 // CHECK: smlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 327 } 328 329 int64x2_t test_vmlal_high_laneq_s32(int64x2_t a, int32x4_t b, int32x4_t v) { 330 // CHECK: test_vmlal_high_laneq_s32 331 return vmlal_high_laneq_s32(a, b, v, 1); 332 // CHECK: smlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 333 } 334 335 int32x4_t test_vmlsl_lane_s16(int32x4_t a, int16x4_t b, int16x4_t v) { 336 // CHECK: test_vmlsl_lane_s16 337 return vmlsl_lane_s16(a, b, v, 1); 338 // CHECK: smlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 339 } 340 341 int64x2_t test_vmlsl_lane_s32(int64x2_t a, int32x2_t b, int32x2_t v) { 342 // CHECK: test_vmlsl_lane_s32 343 return vmlsl_lane_s32(a, b, v, 1); 344 // CHECK: smlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 345 } 346 347 int32x4_t test_vmlsl_laneq_s16(int32x4_t a, int16x4_t b, int16x8_t v) { 348 // CHECK: test_vmlsl_laneq_s16 349 return vmlsl_laneq_s16(a, b, v, 1); 350 // CHECK: smlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 351 } 352 353 int64x2_t test_vmlsl_laneq_s32(int64x2_t a, int32x2_t b, int32x4_t v) { 354 // CHECK: test_vmlsl_laneq_s32 355 return vmlsl_laneq_s32(a, b, v, 1); 356 // CHECK: smlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 357 } 358 359 int32x4_t test_vmlsl_high_lane_s16(int32x4_t a, int16x8_t b, int16x4_t v) { 360 // CHECK: test_vmlsl_high_lane_s16 361 return vmlsl_high_lane_s16(a, b, v, 1); 362 // CHECK: smlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 363 } 364 365 int64x2_t test_vmlsl_high_lane_s32(int64x2_t a, int32x4_t b, int32x2_t v) { 366 // CHECK: test_vmlsl_high_lane_s32 367 return vmlsl_high_lane_s32(a, b, v, 1); 368 // CHECK: smlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 369 } 370 371 int32x4_t test_vmlsl_high_laneq_s16(int32x4_t a, int16x8_t b, int16x8_t v) { 372 // CHECK: test_vmlsl_high_laneq_s16 373 return vmlsl_high_laneq_s16(a, b, v, 1); 374 // CHECK: smlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 375 } 376 377 int64x2_t test_vmlsl_high_laneq_s32(int64x2_t a, int32x4_t b, int32x4_t v) { 378 // CHECK: test_vmlsl_high_laneq_s32 379 return vmlsl_high_laneq_s32(a, b, v, 1); 380 // CHECK: smlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 381 } 382 383 int32x4_t test_vmlal_lane_u16(int32x4_t a, int16x4_t b, int16x4_t v) { 384 // CHECK: test_vmlal_lane_u16 385 return vmlal_lane_u16(a, b, v, 1); 386 // CHECK: umlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 387 } 388 389 int64x2_t test_vmlal_lane_u32(int64x2_t a, int32x2_t b, int32x2_t v) { 390 // CHECK: test_vmlal_lane_u32 391 return vmlal_lane_u32(a, b, v, 1); 392 // CHECK: umlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 393 } 394 395 int32x4_t test_vmlal_laneq_u16(int32x4_t a, int16x4_t b, int16x8_t v) { 396 // CHECK: test_vmlal_laneq_u16 397 return vmlal_laneq_u16(a, b, v, 1); 398 // CHECK: umlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 399 } 400 401 int64x2_t test_vmlal_laneq_u32(int64x2_t a, int32x2_t b, int32x4_t v) { 402 // CHECK: test_vmlal_laneq_u32 403 return vmlal_laneq_u32(a, b, v, 1); 404 // CHECK: umlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 405 } 406 407 int32x4_t test_vmlal_high_lane_u16(int32x4_t a, int16x8_t b, int16x4_t v) { 408 // CHECK: test_vmlal_high_lane_u16 409 return vmlal_high_lane_u16(a, b, v, 1); 410 // CHECK: umlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 411 } 412 413 int64x2_t test_vmlal_high_lane_u32(int64x2_t a, int32x4_t b, int32x2_t v) { 414 // CHECK: test_vmlal_high_lane_u32 415 return vmlal_high_lane_u32(a, b, v, 1); 416 // CHECK: umlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 417 } 418 419 int32x4_t test_vmlal_high_laneq_u16(int32x4_t a, int16x8_t b, int16x8_t v) { 420 // CHECK: test_vmlal_high_laneq_u16 421 return vmlal_high_laneq_u16(a, b, v, 1); 422 // CHECK: umlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 423 } 424 425 int64x2_t test_vmlal_high_laneq_u32(int64x2_t a, int32x4_t b, int32x4_t v) { 426 // CHECK: test_vmlal_high_laneq_u32 427 return vmlal_high_laneq_u32(a, b, v, 1); 428 // CHECK: umlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 429 } 430 431 int32x4_t test_vmlsl_lane_u16(int32x4_t a, int16x4_t b, int16x4_t v) { 432 // CHECK: test_vmlsl_lane_u16 433 return vmlsl_lane_u16(a, b, v, 1); 434 // CHECK: umlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 435 } 436 437 int64x2_t test_vmlsl_lane_u32(int64x2_t a, int32x2_t b, int32x2_t v) { 438 // CHECK: test_vmlsl_lane_u32 439 return vmlsl_lane_u32(a, b, v, 1); 440 // CHECK: umlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 441 } 442 443 int32x4_t test_vmlsl_laneq_u16(int32x4_t a, int16x4_t b, int16x8_t v) { 444 // CHECK: test_vmlsl_laneq_u16 445 return vmlsl_laneq_u16(a, b, v, 1); 446 // CHECK: umlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 447 } 448 449 int64x2_t test_vmlsl_laneq_u32(int64x2_t a, int32x2_t b, int32x4_t v) { 450 // CHECK: test_vmlsl_laneq_u32 451 return vmlsl_laneq_u32(a, b, v, 1); 452 // CHECK: umlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 453 } 454 455 int32x4_t test_vmlsl_high_lane_u16(int32x4_t a, int16x8_t b, int16x4_t v) { 456 // CHECK: test_vmlsl_high_lane_u16 457 return vmlsl_high_lane_u16(a, b, v, 1); 458 // CHECK: umlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 459 } 460 461 int64x2_t test_vmlsl_high_lane_u32(int64x2_t a, int32x4_t b, int32x2_t v) { 462 // CHECK: test_vmlsl_high_lane_u32 463 return vmlsl_high_lane_u32(a, b, v, 1); 464 // CHECK: umlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 465 } 466 467 int32x4_t test_vmlsl_high_laneq_u16(int32x4_t a, int16x8_t b, int16x8_t v) { 468 // CHECK: test_vmlsl_high_laneq_u16 469 return vmlsl_high_laneq_u16(a, b, v, 1); 470 // CHECK: umlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 471 } 472 473 int64x2_t test_vmlsl_high_laneq_u32(int64x2_t a, int32x4_t b, int32x4_t v) { 474 // CHECK: test_vmlsl_high_laneq_u32 475 return vmlsl_high_laneq_u32(a, b, v, 1); 476 // CHECK: umlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 477 } 478 479 int32x4_t test_vmull_lane_s16(int16x4_t a, int16x4_t v) { 480 // CHECK: test_vmull_lane_s16 481 return vmull_lane_s16(a, v, 1); 482 // CHECK: smull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 483 } 484 485 int64x2_t test_vmull_lane_s32(int32x2_t a, int32x2_t v) { 486 // CHECK: test_vmull_lane_s32 487 return vmull_lane_s32(a, v, 1); 488 // CHECK: smull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 489 } 490 491 uint32x4_t test_vmull_lane_u16(uint16x4_t a, uint16x4_t v) { 492 // CHECK: test_vmull_lane_u16 493 return vmull_lane_u16(a, v, 1); 494 // CHECK: umull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 495 } 496 497 uint64x2_t test_vmull_lane_u32(uint32x2_t a, uint32x2_t v) { 498 // CHECK: test_vmull_lane_u32 499 return vmull_lane_u32(a, v, 1); 500 // CHECK: umull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 501 } 502 503 int32x4_t test_vmull_high_lane_s16(int16x8_t a, int16x4_t v) { 504 // CHECK: test_vmull_high_lane_s16 505 return vmull_high_lane_s16(a, v, 1); 506 // CHECK: smull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 507 } 508 509 int64x2_t test_vmull_high_lane_s32(int32x4_t a, int32x2_t v) { 510 // CHECK: test_vmull_high_lane_s32 511 return vmull_high_lane_s32(a, v, 1); 512 // CHECK: smull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 513 } 514 515 uint32x4_t test_vmull_high_lane_u16(uint16x8_t a, uint16x4_t v) { 516 // CHECK: test_vmull_high_lane_u16 517 return vmull_high_lane_u16(a, v, 1); 518 // CHECK: umull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 519 } 520 521 uint64x2_t test_vmull_high_lane_u32(uint32x4_t a, uint32x2_t v) { 522 // CHECK: test_vmull_high_lane_u32 523 return vmull_high_lane_u32(a, v, 1); 524 // CHECK: umull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 525 } 526 527 int32x4_t test_vmull_laneq_s16(int16x4_t a, int16x8_t v) { 528 // CHECK: test_vmull_laneq_s16 529 return vmull_laneq_s16(a, v, 1); 530 // CHECK: smull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 531 } 532 533 int64x2_t test_vmull_laneq_s32(int32x2_t a, int32x4_t v) { 534 // CHECK: test_vmull_laneq_s32 535 return vmull_laneq_s32(a, v, 1); 536 // CHECK: smull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 537 } 538 539 uint32x4_t test_vmull_laneq_u16(uint16x4_t a, uint16x8_t v) { 540 // CHECK: test_vmull_laneq_u16 541 return vmull_laneq_u16(a, v, 1); 542 // CHECK: umull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 543 } 544 545 uint64x2_t test_vmull_laneq_u32(uint32x2_t a, uint32x4_t v) { 546 // CHECK: test_vmull_laneq_u32 547 return vmull_laneq_u32(a, v, 1); 548 // CHECK: umull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 549 } 550 551 int32x4_t test_vmull_high_laneq_s16(int16x8_t a, int16x8_t v) { 552 // CHECK: test_vmull_high_laneq_s16 553 return vmull_high_laneq_s16(a, v, 1); 554 // CHECK: smull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 555 } 556 557 int64x2_t test_vmull_high_laneq_s32(int32x4_t a, int32x4_t v) { 558 // CHECK: test_vmull_high_laneq_s32 559 return vmull_high_laneq_s32(a, v, 1); 560 // CHECK: smull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 561 } 562 563 uint32x4_t test_vmull_high_laneq_u16(uint16x8_t a, uint16x8_t v) { 564 // CHECK: test_vmull_high_laneq_u16 565 return vmull_high_laneq_u16(a, v, 1); 566 // CHECK: umull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 567 } 568 569 uint64x2_t test_vmull_high_laneq_u32(uint32x4_t a, uint32x4_t v) { 570 // CHECK: test_vmull_high_laneq_u32 571 return vmull_high_laneq_u32(a, v, 1); 572 // CHECK: umull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 573 } 574 575 int32x4_t test_vqdmlal_lane_s16(int32x4_t a, int16x4_t b, int16x4_t v) { 576 // CHECK: test_vqdmlal_lane_s16 577 return vqdmlal_lane_s16(a, b, v, 1); 578 // CHECK: sqdmlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 579 } 580 581 int64x2_t test_vqdmlal_lane_s32(int64x2_t a, int32x2_t b, int32x2_t v) { 582 // CHECK: test_vqdmlal_lane_s32 583 return vqdmlal_lane_s32(a, b, v, 1); 584 // CHECK: sqdmlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 585 } 586 587 int32x4_t test_vqdmlal_high_lane_s16(int32x4_t a, int16x8_t b, int16x4_t v) { 588 // CHECK: test_vqdmlal_high_lane_s16 589 return vqdmlal_high_lane_s16(a, b, v, 1); 590 // CHECK: sqdmlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 591 } 592 593 int64x2_t test_vqdmlal_high_lane_s32(int64x2_t a, int32x4_t b, int32x2_t v) { 594 // CHECK: test_vqdmlal_high_lane_s32 595 return vqdmlal_high_lane_s32(a, b, v, 1); 596 // CHECK: sqdmlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 597 } 598 599 int32x4_t test_vqdmlsl_lane_s16(int32x4_t a, int16x4_t b, int16x4_t v) { 600 // CHECK: test_vqdmlsl_lane_s16 601 return vqdmlsl_lane_s16(a, b, v, 1); 602 // CHECK: sqdmlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 603 } 604 605 int64x2_t test_vqdmlsl_lane_s32(int64x2_t a, int32x2_t b, int32x2_t v) { 606 // CHECK: test_vqdmlsl_lane_s32 607 return vqdmlsl_lane_s32(a, b, v, 1); 608 // CHECK: sqdmlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 609 } 610 611 int32x4_t test_vqdmlsl_high_lane_s16(int32x4_t a, int16x8_t b, int16x4_t v) { 612 // CHECK: test_vqdmlsl_high_lane_s16 613 return vqdmlsl_high_lane_s16(a, b, v, 1); 614 // CHECK: sqdmlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 615 } 616 617 int64x2_t test_vqdmlsl_high_lane_s32(int64x2_t a, int32x4_t b, int32x2_t v) { 618 // CHECK: test_vqdmlsl_high_lane_s32 619 return vqdmlsl_high_lane_s32(a, b, v, 1); 620 // CHECK: sqdmlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 621 } 622 623 int32x4_t test_vqdmull_lane_s16(int16x4_t a, int16x4_t v) { 624 // CHECK: test_vqdmull_lane_s16 625 return vqdmull_lane_s16(a, v, 1); 626 // CHECK: sqdmull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 627 } 628 629 int64x2_t test_vqdmull_lane_s32(int32x2_t a, int32x2_t v) { 630 // CHECK: test_vqdmull_lane_s32 631 return vqdmull_lane_s32(a, v, 1); 632 // CHECK: sqdmull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 633 } 634 635 int32x4_t test_vqdmull_laneq_s16(int16x4_t a, int16x8_t v) { 636 // CHECK: test_vqdmull_laneq_s16 637 return vqdmull_laneq_s16(a, v, 1); 638 // CHECK: sqdmull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 639 } 640 641 int64x2_t test_vqdmull_laneq_s32(int32x2_t a, int32x4_t v) { 642 // CHECK: test_vqdmull_laneq_s32 643 return vqdmull_laneq_s32(a, v, 1); 644 // CHECK: sqdmull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 645 } 646 647 int32x4_t test_vqdmull_high_lane_s16(int16x8_t a, int16x4_t v) { 648 // CHECK: test_vqdmull_high_lane_s16 649 return vqdmull_high_lane_s16(a, v, 1); 650 // CHECK: sqdmull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 651 } 652 653 int64x2_t test_vqdmull_high_lane_s32(int32x4_t a, int32x2_t v) { 654 // CHECK: test_vqdmull_high_lane_s32 655 return vqdmull_high_lane_s32(a, v, 1); 656 // CHECK: sqdmull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 657 } 658 659 int32x4_t test_vqdmull_high_laneq_s16(int16x8_t a, int16x8_t v) { 660 // CHECK: test_vqdmull_high_laneq_s16 661 return vqdmull_high_laneq_s16(a, v, 1); 662 // CHECK: sqdmull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 663 } 664 665 int64x2_t test_vqdmull_high_laneq_s32(int32x4_t a, int32x4_t v) { 666 // CHECK: test_vqdmull_high_laneq_s32 667 return vqdmull_high_laneq_s32(a, v, 1); 668 // CHECK: sqdmull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 669 } 670 671 int16x4_t test_vqdmulh_lane_s16(int16x4_t a, int16x4_t v) { 672 // CHECK: test_vqdmulh_lane_s16 673 return vqdmulh_lane_s16(a, v, 1); 674 // CHECK: sqdmulh {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 675 } 676 677 int16x8_t test_vqdmulhq_lane_s16(int16x8_t a, int16x4_t v) { 678 // CHECK: test_vqdmulhq_lane_s16 679 return vqdmulhq_lane_s16(a, v, 1); 680 // CHECK: sqdmulh {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 681 } 682 683 int32x2_t test_vqdmulh_lane_s32(int32x2_t a, int32x2_t v) { 684 // CHECK: test_vqdmulh_lane_s32 685 return vqdmulh_lane_s32(a, v, 1); 686 // CHECK: sqdmulh {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 687 } 688 689 int32x4_t test_vqdmulhq_lane_s32(int32x4_t a, int32x2_t v) { 690 // CHECK: test_vqdmulhq_lane_s32 691 return vqdmulhq_lane_s32(a, v, 1); 692 // CHECK: sqdmulh {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 693 } 694 695 int16x4_t test_vqrdmulh_lane_s16(int16x4_t a, int16x4_t v) { 696 // CHECK: test_vqrdmulh_lane_s16 697 return vqrdmulh_lane_s16(a, v, 1); 698 // CHECK: sqrdmulh {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.h[1] 699 } 700 701 int16x8_t test_vqrdmulhq_lane_s16(int16x8_t a, int16x4_t v) { 702 // CHECK: test_vqrdmulhq_lane_s16 703 return vqrdmulhq_lane_s16(a, v, 1); 704 // CHECK: sqrdmulh {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.h[1] 705 } 706 707 int32x2_t test_vqrdmulh_lane_s32(int32x2_t a, int32x2_t v) { 708 // CHECK: test_vqrdmulh_lane_s32 709 return vqrdmulh_lane_s32(a, v, 1); 710 // CHECK: sqrdmulh {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 711 } 712 713 int32x4_t test_vqrdmulhq_lane_s32(int32x4_t a, int32x2_t v) { 714 // CHECK: test_vqrdmulhq_lane_s32 715 return vqrdmulhq_lane_s32(a, v, 1); 716 // CHECK: sqrdmulh {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 717 } 718 719 float32x2_t test_vmul_lane_f32(float32x2_t a, float32x2_t v) { 720 // CHECK: test_vmul_lane_f32 721 return vmul_lane_f32(a, v, 1); 722 // CHECK: fmul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 723 } 724 725 726 float64x1_t test_vmul_lane_f64(float64x1_t a, float64x1_t v) { 727 // CHECK: test_vmul_lane_f64 728 return vmul_lane_f64(a, v, 0); 729 // CHECK: fmul {{d[0-9]+}}, {{d[0-9]+}}, {{v[0-9]+}}.d[0] 730 } 731 732 733 float32x4_t test_vmulq_lane_f32(float32x4_t a, float32x2_t v) { 734 // CHECK: test_vmulq_lane_f32 735 return vmulq_lane_f32(a, v, 1); 736 // CHECK: fmul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 737 } 738 739 float64x2_t test_vmulq_lane_f64(float64x2_t a, float64x1_t v) { 740 // CHECK: test_vmulq_lane_f64 741 return vmulq_lane_f64(a, v, 0); 742 // CHECK: fmul {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0] 743 } 744 745 float32x2_t test_vmul_laneq_f32(float32x2_t a, float32x4_t v) { 746 // CHECK: test_vmul_laneq_f32 747 return vmul_laneq_f32(a, v, 1); 748 // CHECK: fmul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 749 } 750 751 float64x1_t test_vmul_laneq_f64_0(float64x1_t a, float64x2_t v) { 752 // CHECK: test_vmul_laneq_f64_0 753 return vmul_laneq_f64(a, v, 0); 754 // CHECK: fmul {{d[0-9]+}}, {{d[0-9]+}}, {{v[0-9]+}}.d[0] 755 } 756 757 758 float32x4_t test_vmulq_laneq_f32(float32x4_t a, float32x4_t v) { 759 // CHECK: test_vmulq_laneq_f32 760 return vmulq_laneq_f32(a, v, 1); 761 // CHECK: fmul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 762 } 763 764 float64x2_t test_vmulq_laneq_f64_0(float64x2_t a, float64x2_t v) { 765 // CHECK: test_vmulq_laneq_f64 766 return vmulq_laneq_f64(a, v, 0); 767 // CHECK: fmul {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0] 768 } 769 770 float64x2_t test_vmulq_laneq_f64(float64x2_t a, float64x2_t v) { 771 // CHECK: test_vmulq_laneq_f64 772 return vmulq_laneq_f64(a, v, 1); 773 // CHECK: fmul {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[1] 774 } 775 776 float32x2_t test_vmulx_lane_f32(float32x2_t a, float32x2_t v) { 777 // CHECK: test_vmulx_lane_f32 778 return vmulx_lane_f32(a, v, 1); 779 // CHECK: fmulx {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 780 } 781 782 float32x4_t test_vmulxq_lane_f32(float32x4_t a, float32x2_t v) { 783 // CHECK: test_vmulxq_lane_f32 784 return vmulxq_lane_f32(a, v, 1); 785 // CHECK: fmulx {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 786 } 787 788 float64x2_t test_vmulxq_lane_f64(float64x2_t a, float64x1_t v) { 789 // CHECK: test_vmulxq_lane_f64 790 return vmulxq_lane_f64(a, v, 0); 791 // CHECK: fmulx {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0] 792 } 793 794 float32x2_t test_vmulx_laneq_f32(float32x2_t a, float32x4_t v) { 795 // CHECK: test_vmulx_laneq_f32 796 return vmulx_laneq_f32(a, v, 1); 797 // CHECK: fmulx {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.s[1] 798 } 799 800 float32x4_t test_vmulxq_laneq_f32(float32x4_t a, float32x4_t v) { 801 // CHECK: test_vmulxq_laneq_f32 802 return vmulxq_laneq_f32(a, v, 1); 803 // CHECK: fmulx {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.s[1] 804 } 805 806 float64x2_t test_vmulxq_laneq_f64_0(float64x2_t a, float64x2_t v) { 807 // CHECK: test_vmulxq_laneq_f64 808 return vmulxq_laneq_f64(a, v, 0); 809 // CHECK: fmulx {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0] 810 } 811 812 float64x2_t test_vmulxq_laneq_f64(float64x2_t a, float64x2_t v) { 813 // CHECK: test_vmulxq_laneq_f64 814 return vmulxq_laneq_f64(a, v, 1); 815 // CHECK: fmulx {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.d[1] 816 } 817 818