1// REQUIRES: aarch64-registered-target 2// RUN: %clang_cc1 -triple arm64-apple-ios7.0 -target-feature +neon \ 3// RUN: -S -O1 -o - -ffreestanding %s | FileCheck %s 4 5// We're explicitly using arm_neon.h here: some types probably don't match 6// the ACLE definitions, but we want to check current codegen. 7#include <arm_neon.h> 8 9float test_vrsqrtss_f32(float a, float b) { 10// CHECK: test_vrsqrtss_f32 11 return vrsqrtss_f32(a, b); 12// CHECK: frsqrts {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}} 13} 14 15double test_vrsqrtsd_f64(double a, double b) { 16// CHECK: test_vrsqrtsd_f64 17 return vrsqrtsd_f64(a, b); 18// CHECK: frsqrts {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 19} 20 21int64x1_t test_vrshl_s64(int64x1_t a, int64x1_t b) { 22// CHECK: test_vrshl_s64 23 return vrshl_s64(a, b); 24// CHECK: srshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 25} 26 27uint64x1_t test_vrshl_u64(uint64x1_t a, int64x1_t b) { 28// CHECK: test_vrshl_u64 29 return vrshl_u64(a, b); 30// CHECK: urshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 31} 32 33// CHECK: test_vrshld_s64 34int64_t test_vrshld_s64(int64_t a, int64_t b) { 35 return vrshld_s64(a, b); 36// CHECK: srshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 37} 38 39// CHECK: test_vrshld_u64 40uint64_t test_vrshld_u64(uint64_t a, uint64_t b) { 41 return vrshld_u64(a, b); 42// CHECK: urshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 43} 44 45// CHECK: test_vqrshlb_s8 46int8_t test_vqrshlb_s8(int8_t a, int8_t b) { 47 return vqrshlb_s8(a, b); 48// CHECK: sqrshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 49} 50 51// CHECK: test_vqrshlh_s16 52int16_t test_vqrshlh_s16(int16_t a, int16_t b) { 53 return vqrshlh_s16(a, b); 54// CHECK: sqrshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 55} 56 57// CHECK: test_vqrshls_s32 58int32_t test_vqrshls_s32(int32_t a, int32_t b) { 59 return vqrshls_s32(a, b); 60// CHECK: sqrshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}} 61} 62 63// CHECK: test_vqrshld_s64 64int64_t test_vqrshld_s64(int64_t a, int64_t b) { 65 return vqrshld_s64(a, b); 66// CHECK: sqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 67} 68 69// CHECK: test_vqrshlb_u8 70uint8_t test_vqrshlb_u8(uint8_t a, uint8_t b) { 71 return vqrshlb_u8(a, b); 72// CHECK: uqrshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 73} 74 75// CHECK: test_vqrshlh_u16 76uint16_t test_vqrshlh_u16(uint16_t a, uint16_t b) { 77 return vqrshlh_u16(a, b); 78// CHECK: uqrshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 79} 80 81// CHECK: test_vqrshls_u32 82uint32_t test_vqrshls_u32(uint32_t a, uint32_t b) { 83 return vqrshls_u32(a, b); 84// CHECK: uqrshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}} 85} 86 87// CHECK: test_vqrshld_u64 88uint64_t test_vqrshld_u64(uint64_t a, uint64_t b) { 89 return vqrshld_u64(a, b); 90// CHECK: uqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 91} 92 93// CHECK: test_vqshlb_s8 94int8_t test_vqshlb_s8(int8_t a, int8_t b) { 95 return vqshlb_s8(a, b); 96// CHECK: sqshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 97} 98 99// CHECK: test_vqshlh_s16 100int16_t test_vqshlh_s16(int16_t a, int16_t b) { 101 return vqshlh_s16(a, b); 102// CHECK: sqshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 103} 104 105// CHECK: test_vqshls_s32 106int32_t test_vqshls_s32(int32_t a, int32_t b) { 107 return vqshls_s32(a, b); 108// CHECK: sqshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}} 109} 110 111// CHECK: test_vqshld_s64 112int64_t test_vqshld_s64(int64_t a, int64_t b) { 113 return vqshld_s64(a, b); 114// CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 115} 116 117// CHECK: test_vqshld_s64_i 118int64_t test_vqshld_s64_i(int64_t a) { 119 return vqshld_s64(a, 36); 120// CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, #36 121} 122 123// CHECK: test_vqshlb_u8 124uint8_t test_vqshlb_u8(uint8_t a, uint8_t b) { 125 return vqshlb_u8(a, b); 126// CHECK: uqshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 127} 128 129// CHECK: test_vqshlh_u16 130uint16_t test_vqshlh_u16(uint16_t a, uint16_t b) { 131 return vqshlh_u16(a, b); 132// CHECK: uqshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 133} 134 135// CHECK: test_vqshls_u32 136uint32_t test_vqshls_u32(uint32_t a, uint32_t b) { 137 return vqshls_u32(a, b); 138// CHECK: uqshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}} 139} 140 141// CHECK: test_vqshld_u64 142uint64_t test_vqshld_u64(uint64_t a, uint64_t b) { 143 return vqshld_u64(a, b); 144// CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 145} 146 147// CHECK: test_vqshld_u64_i 148uint64_t test_vqshld_u64_i(uint64_t a) { 149 return vqshld_u64(a, 36); 150// CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, #36 151} 152 153// CHECK: test_vshld_u64 154uint64_t test_vshld_u64(uint64_t a, uint64_t b) { 155 return vshld_u64(a, b); 156// CHECK: ushl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 157} 158 159// CHECK: test_vshld_s64 160int64_t test_vshld_s64(int64_t a, int64_t b) { 161 return vshld_s64(a, b); 162// CHECK: sshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 163} 164 165// CHECK: test_vqdmullh_s16 166int32_t test_vqdmullh_s16(int16_t a, int16_t b) { 167 return vqdmullh_s16(a, b); 168// CHECK: sqdmull.4s {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 169} 170 171// CHECK: test_vqdmulls_s32 172int64_t test_vqdmulls_s32(int32_t a, int32_t b) { 173 return vqdmulls_s32(a, b); 174// CHECK: sqdmull {{d[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}} 175} 176 177// CHECK: test_vqaddb_s8 178int8_t test_vqaddb_s8(int8_t a, int8_t b) { 179 return vqaddb_s8(a, b); 180// CHECK: sqadd.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 181} 182 183// CHECK: test_vqaddh_s16 184int16_t test_vqaddh_s16(int16_t a, int16_t b) { 185 return vqaddh_s16(a, b); 186// CHECK: sqadd.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 187} 188 189// CHECK: test_vqadds_s32 190int32_t test_vqadds_s32(int32_t a, int32_t b) { 191 return vqadds_s32(a, b); 192// CHECK: sqadd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}} 193} 194 195// CHECK: test_vqaddd_s64 196int64_t test_vqaddd_s64(int64_t a, int64_t b) { 197 return vqaddd_s64(a, b); 198// CHECK: sqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 199} 200 201// CHECK: test_vqaddb_u8 202uint8_t test_vqaddb_u8(uint8_t a, uint8_t b) { 203 return vqaddb_u8(a, b); 204// CHECK: uqadd.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 205} 206 207// CHECK: test_vqaddh_u16 208uint16_t test_vqaddh_u16(uint16_t a, uint16_t b) { 209 return vqaddh_u16(a, b); 210// CHECK: uqadd.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 211} 212 213// CHECK: test_vqadds_u32 214uint32_t test_vqadds_u32(uint32_t a, uint32_t b) { 215 return vqadds_u32(a, b); 216// CHECK: uqadd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}} 217} 218 219// CHECK: test_vqaddd_u64 220uint64_t test_vqaddd_u64(uint64_t a, uint64_t b) { 221 return vqaddd_u64(a, b); 222// CHECK: uqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 223} 224 225// CHECK: test_vqsubb_s8 226int8_t test_vqsubb_s8(int8_t a, int8_t b) { 227 return vqsubb_s8(a, b); 228// CHECK: sqsub.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 229} 230 231// CHECK: test_vqsubh_s16 232int16_t test_vqsubh_s16(int16_t a, int16_t b) { 233 return vqsubh_s16(a, b); 234// CHECK: sqsub.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 235} 236 237// CHECK: test_vqsubs_s32 238int32_t test_vqsubs_s32(int32_t a, int32_t b) { 239 return vqsubs_s32(a, b); 240// CHECK: sqsub {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}} 241} 242 243// CHECK: test_vqsubd_s64 244int64_t test_vqsubd_s64(int64_t a, int64_t b) { 245 return vqsubd_s64(a, b); 246// CHECK: sqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 247} 248 249// CHECK: test_vqsubb_u8 250uint8_t test_vqsubb_u8(uint8_t a, uint8_t b) { 251 return vqsubb_u8(a, b); 252// CHECK: uqsub.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 253} 254 255// CHECK: test_vqsubh_u16 256uint16_t test_vqsubh_u16(uint16_t a, uint16_t b) { 257 return vqsubh_u16(a, b); 258// CHECK: uqsub.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}} 259} 260 261// CHECK: test_vqsubs_u32 262uint32_t test_vqsubs_u32(uint32_t a, uint32_t b) { 263 return vqsubs_u32(a, b); 264// CHECK: uqsub {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}} 265} 266 267// CHECK: test_vqsubd_u64 268uint64_t test_vqsubd_u64(uint64_t a, uint64_t b) { 269 return vqsubd_u64(a, b); 270// CHECK: uqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}} 271} 272 273// CHECK: test_vqmovnh_s16 274int8_t test_vqmovnh_s16(int16_t a) { 275 return vqmovnh_s16(a); 276// CHECK: sqxtn.8b {{v[0-9]+}}, {{v[0-9]+}} 277} 278 279// CHECK: test_vqmovnh_u16 280uint8_t test_vqmovnh_u16(uint16_t a) { 281 return vqmovnh_u16(a); 282// CHECK: uqxtn.8b {{v[0-9]+}}, {{v[0-9]+}} 283} 284 285// CHECK: test_vqmovns_s32 286int16_t test_vqmovns_s32(int32_t a) { 287 return vqmovns_s32(a); 288// CHECK: sqxtn.4h {{v[0-9]+}}, {{v[0-9]+}} 289} 290 291// CHECK: test_vqmovns_u32 292uint16_t test_vqmovns_u32(uint32_t a) { 293 return vqmovns_u32(a); 294// CHECK: uqxtn.4h {{v[0-9]+}}, {{v[0-9]+}} 295} 296 297// CHECK: test_vqmovnd_s64 298int32_t test_vqmovnd_s64(int64_t a) { 299 return vqmovnd_s64(a); 300// CHECK: sqxtn {{s[0-9]+}}, {{d[0-9]+}} 301} 302 303// CHECK: test_vqmovnd_u64 304uint32_t test_vqmovnd_u64(uint64_t a) { 305 return vqmovnd_u64(a); 306// CHECK: uqxtn {{s[0-9]+}}, {{d[0-9]+}} 307} 308 309// CHECK: test_vqmovunh_s16 310int8_t test_vqmovunh_s16(int16_t a) { 311 return vqmovunh_s16(a); 312// CHECK: sqxtun.8b {{v[0-9]+}}, {{v[0-9]+}} 313} 314 315// CHECK: test_vqmovuns_s32 316int16_t test_vqmovuns_s32(int32_t a) { 317 return vqmovuns_s32(a); 318// CHECK: sqxtun.4h {{v[0-9]+}}, {{v[0-9]+}} 319} 320 321// CHECK: test_vqmovund_s64 322int32_t test_vqmovund_s64(int64_t a) { 323 return vqmovund_s64(a); 324// CHECK: sqxtun {{s[0-9]+}}, {{d[0-9]+}} 325} 326 327// CHECK: test_vqabsb_s8 328int8_t test_vqabsb_s8(int8_t a) { 329 return vqabsb_s8(a); 330// CHECK: sqabs.8b {{v[0-9]+}}, {{v[0-9]+}} 331} 332 333// CHECK: test_vqabsh_s16 334int16_t test_vqabsh_s16(int16_t a) { 335 return vqabsh_s16(a); 336// CHECK: sqabs.4h {{v[0-9]+}}, {{v[0-9]+}} 337} 338 339// CHECK: test_vqabss_s32 340int32_t test_vqabss_s32(int32_t a) { 341 return vqabss_s32(a); 342// CHECK: sqabs {{s[0-9]+}}, {{s[0-9]+}} 343} 344 345// CHECK: test_vqabsd_s64 346int64_t test_vqabsd_s64(int64_t a) { 347 return vqabsd_s64(a); 348// CHECK: sqabs {{d[0-9]+}}, {{d[0-9]+}} 349} 350 351// CHECK: test_vqnegb_s8 352int8_t test_vqnegb_s8(int8_t a) { 353 return vqnegb_s8(a); 354// CHECK: sqneg.8b {{v[0-9]+}}, {{v[0-9]+}} 355} 356 357// CHECK: test_vqnegh_s16 358int16_t test_vqnegh_s16(int16_t a) { 359 return vqnegh_s16(a); 360// CHECK: sqneg.4h {{v[0-9]+}}, {{v[0-9]+}} 361} 362 363// CHECK: test_vqnegs_s32 364int32_t test_vqnegs_s32(int32_t a) { 365 return vqnegs_s32(a); 366// CHECK: sqneg {{s[0-9]+}}, {{s[0-9]+}} 367} 368 369// CHECK: test_vqnegd_s64 370int64_t test_vqnegd_s64(int64_t a) { 371 return vqnegd_s64(a); 372// CHECK: sqneg {{d[0-9]+}}, {{d[0-9]+}} 373} 374 375// CHECK: test_vcvts_n_f32_s32 376float32_t test_vcvts_n_f32_s32(int32_t a) { 377 return vcvts_n_f32_s32(a, 3); 378// CHECK: scvtf {{s[0-9]+}}, {{s[0-9]+}}, #3 379} 380 381// CHECK: test_vcvts_n_f32_u32 382float32_t test_vcvts_n_f32_u32(uint32_t a) { 383 return vcvts_n_f32_u32(a, 3); 384// CHECK: ucvtf {{s[0-9]+}}, {{s[0-9]+}}, #3 385} 386 387// CHECK: test_vcvtd_n_f64_s64 388float64_t test_vcvtd_n_f64_s64(int64_t a) { 389 return vcvtd_n_f64_s64(a, 3); 390// CHECK: scvtf {{d[0-9]+}}, {{d[0-9]+}}, #3 391} 392 393// CHECK: test_vcvtd_n_f64_u64 394float64_t test_vcvtd_n_f64_u64(uint64_t a) { 395 return vcvtd_n_f64_u64(a, 3); 396// CHECK: ucvtf {{d[0-9]+}}, {{d[0-9]+}}, #3 397} 398 399// CHECK: test_vcvts_n_s32_f32 400int32_t test_vcvts_n_s32_f32(float32_t a) { 401 return vcvts_n_s32_f32(a, 3); 402// CHECK: fcvtzs {{s[0-9]+}}, {{s[0-9]+}}, #3 403} 404 405// CHECK: test_vcvts_n_u32_f32 406uint32_t test_vcvts_n_u32_f32(float32_t a) { 407 return vcvts_n_u32_f32(a, 3); 408// CHECK: fcvtzu {{s[0-9]+}}, {{s[0-9]+}}, #3 409} 410 411// CHECK: test_vcvtd_n_s64_f64 412int64_t test_vcvtd_n_s64_f64(float64_t a) { 413 return vcvtd_n_s64_f64(a, 3); 414// CHECK: fcvtzs {{d[0-9]+}}, {{d[0-9]+}}, #3 415} 416 417// CHECK: test_vcvtd_n_u64_f64 418uint64_t test_vcvtd_n_u64_f64(float64_t a) { 419 return vcvtd_n_u64_f64(a, 3); 420// CHECK: fcvtzu {{d[0-9]+}}, {{d[0-9]+}}, #3 421} 422 423// CHECK: test_vcvtas_s32_f32 424int32_t test_vcvtas_s32_f32(float32_t a) { 425 return vcvtas_s32_f32(a); 426// CHECK: fcvtas {{w[0-9]+}}, {{s[0-9]+}} 427} 428 429// CHECK: test_vcvtas_u32_f32 430uint32_t test_vcvtas_u32_f32(float32_t a) { 431 return vcvtas_u32_f32(a); 432// CHECK: fcvtau {{w[0-9]+}}, {{s[0-9]+}} 433} 434 435// CHECK: test_vcvtad_s64_f64 436int64_t test_vcvtad_s64_f64(float64_t a) { 437 return vcvtad_s64_f64(a); 438// CHECK: fcvtas {{x[0-9]+}}, {{d[0-9]+}} 439} 440 441// CHECK: test_vcvtad_u64_f64 442uint64_t test_vcvtad_u64_f64(float64_t a) { 443 return vcvtad_u64_f64(a); 444// CHECK: fcvtau {{x[0-9]+}}, {{d[0-9]+}} 445} 446 447// CHECK: test_vcvtms_s32_f32 448int32_t test_vcvtms_s32_f32(float32_t a) { 449 return vcvtms_s32_f32(a); 450// CHECK: fcvtms {{w[0-9]+}}, {{s[0-9]+}} 451} 452 453// CHECK: test_vcvtms_u32_f32 454uint32_t test_vcvtms_u32_f32(float32_t a) { 455 return vcvtms_u32_f32(a); 456// CHECK: fcvtmu {{w[0-9]+}}, {{s[0-9]+}} 457} 458 459// CHECK: test_vcvtmd_s64_f64 460int64_t test_vcvtmd_s64_f64(float64_t a) { 461 return vcvtmd_s64_f64(a); 462// CHECK: fcvtms {{x[0-9]+}}, {{d[0-9]+}} 463} 464 465// CHECK: test_vcvtmd_u64_f64 466uint64_t test_vcvtmd_u64_f64(float64_t a) { 467 return vcvtmd_u64_f64(a); 468// CHECK: fcvtmu {{x[0-9]+}}, {{d[0-9]+}} 469} 470 471// CHECK: test_vcvtns_s32_f32 472int32_t test_vcvtns_s32_f32(float32_t a) { 473 return vcvtns_s32_f32(a); 474// CHECK: fcvtns {{w[0-9]+}}, {{s[0-9]+}} 475} 476 477// CHECK: test_vcvtns_u32_f32 478uint32_t test_vcvtns_u32_f32(float32_t a) { 479 return vcvtns_u32_f32(a); 480// CHECK: fcvtnu {{w[0-9]+}}, {{s[0-9]+}} 481} 482 483// CHECK: test_vcvtnd_s64_f64 484int64_t test_vcvtnd_s64_f64(float64_t a) { 485 return vcvtnd_s64_f64(a); 486// CHECK: fcvtns {{x[0-9]+}}, {{d[0-9]+}} 487} 488 489// CHECK: test_vcvtnd_u64_f64 490uint64_t test_vcvtnd_u64_f64(float64_t a) { 491 return vcvtnd_u64_f64(a); 492// CHECK: fcvtnu {{x[0-9]+}}, {{d[0-9]+}} 493} 494 495// CHECK: test_vcvtps_s32_f32 496int32_t test_vcvtps_s32_f32(float32_t a) { 497 return vcvtps_s32_f32(a); 498// CHECK: fcvtps {{w[0-9]+}}, {{s[0-9]+}} 499} 500 501// CHECK: test_vcvtps_u32_f32 502uint32_t test_vcvtps_u32_f32(float32_t a) { 503 return vcvtps_u32_f32(a); 504// CHECK: fcvtpu {{w[0-9]+}}, {{s[0-9]+}} 505} 506 507// CHECK: test_vcvtpd_s64_f64 508int64_t test_vcvtpd_s64_f64(float64_t a) { 509 return vcvtpd_s64_f64(a); 510// CHECK: fcvtps {{x[0-9]+}}, {{d[0-9]+}} 511} 512 513// CHECK: test_vcvtpd_u64_f64 514uint64_t test_vcvtpd_u64_f64(float64_t a) { 515 return vcvtpd_u64_f64(a); 516// CHECK: fcvtpu {{x[0-9]+}}, {{d[0-9]+}} 517} 518 519// CHECK: test_vcvtxd_f32_f64 520float32_t test_vcvtxd_f32_f64(float64_t a) { 521 return vcvtxd_f32_f64(a); 522// CHECK: fcvtxn {{s[0-9]+}}, {{d[0-9]+}} 523} 524 525// CHECK: test_vabds_f32 526float32_t test_vabds_f32(float32_t a, float32_t b) { 527 return vabds_f32(a, b); 528 // CHECK: fabd {{s[0-9]+}}, {{s[0-9]+}} 529} 530 531// CHECK: test_vabdd_f64 532float64_t test_vabdd_f64(float64_t a, float64_t b) { 533 return vabdd_f64(a, b); 534 // CHECK: fabd {{d[0-9]+}}, {{d[0-9]+}} 535} 536 537// CHECK: test_vmulxs_f32 538float32_t test_vmulxs_f32(float32_t a, float32_t b) { 539 return vmulxs_f32(a, b); 540 // CHECK: fmulx {{s[0-9]+}}, {{s[0-9]+}} 541} 542 543// CHECK: test_vmulxd_f64 544float64_t test_vmulxd_f64(float64_t a, float64_t b) { 545 return vmulxd_f64(a, b); 546 // CHECK: fmulx {{d[0-9]+}}, {{d[0-9]+}} 547} 548