1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s 3 4--- 5name: fptrunc_s16_s32_fpr 6legalized: true 7regBankSelected: true 8 9registers: 10 - { id: 0, class: fpr } 11 - { id: 1, class: fpr } 12 13body: | 14 bb.0: 15 liveins: $s0 16 17 ; CHECK-LABEL: name: fptrunc_s16_s32_fpr 18 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 19 ; CHECK: [[FCVTHSr:%[0-9]+]]:fpr16 = FCVTHSr [[COPY]] 20 ; CHECK: $h0 = COPY [[FCVTHSr]] 21 %0(s32) = COPY $s0 22 %1(s16) = G_FPTRUNC %0 23 $h0 = COPY %1(s16) 24... 25 26--- 27name: fptrunc_s16_s64_fpr 28legalized: true 29regBankSelected: true 30 31registers: 32 - { id: 0, class: fpr } 33 - { id: 1, class: fpr } 34 35body: | 36 bb.0: 37 liveins: $d0 38 39 ; CHECK-LABEL: name: fptrunc_s16_s64_fpr 40 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 41 ; CHECK: [[FCVTHDr:%[0-9]+]]:fpr16 = FCVTHDr [[COPY]] 42 ; CHECK: $h0 = COPY [[FCVTHDr]] 43 %0(s64) = COPY $d0 44 %1(s16) = G_FPTRUNC %0 45 $h0 = COPY %1(s16) 46... 47 48--- 49name: fptrunc_s32_s64_fpr 50legalized: true 51regBankSelected: true 52 53registers: 54 - { id: 0, class: fpr } 55 - { id: 1, class: fpr } 56 57body: | 58 bb.0: 59 liveins: $d0 60 61 ; CHECK-LABEL: name: fptrunc_s32_s64_fpr 62 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 63 ; CHECK: [[FCVTSDr:%[0-9]+]]:fpr32 = FCVTSDr [[COPY]] 64 ; CHECK: $s0 = COPY [[FCVTSDr]] 65 %0(s64) = COPY $d0 66 %1(s32) = G_FPTRUNC %0 67 $s0 = COPY %1(s32) 68... 69 70--- 71name: fptrunc_v4s16_v4s32_fpr 72legalized: true 73regBankSelected: true 74 75registers: 76 - { id: 0, class: fpr } 77 - { id: 1, class: fpr } 78 79body: | 80 bb.0: 81 liveins: $d0 82 ; CHECK-LABEL: name: fptrunc_v4s16_v4s32_fpr 83 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 84 ; CHECK: [[FCVTNv4i16:%[0-9]+]]:fpr64 = FCVTNv4i16 [[COPY]] 85 ; CHECK: $d0 = COPY [[FCVTNv4i16]] 86 %0(<4 x s32>) = COPY $q0 87 %1(<4 x s16>) = G_FPTRUNC %0 88 $d0 = COPY %1(<4 x s16>) 89... 90 91--- 92name: fptrunc_v2s32_v2s64_fpr 93legalized: true 94regBankSelected: true 95 96registers: 97 - { id: 0, class: fpr } 98 - { id: 1, class: fpr } 99 100body: | 101 bb.0: 102 liveins: $q0 103 ; CHECK-LABEL: name: fptrunc_v2s32_v2s64_fpr 104 ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 105 ; CHECK: [[FCVTNv2i32:%[0-9]+]]:fpr64 = FCVTNv2i32 [[COPY]] 106 ; CHECK: $d0 = COPY [[FCVTNv2i32]] 107 %0(<2 x s64>) = COPY $q0 108 %1(<2 x s32>) = G_FPTRUNC %0 109 $d0 = COPY %1(<2 x s32>) 110... 111 112--- 113name: fpext_s32_s16_fpr 114legalized: true 115regBankSelected: true 116 117registers: 118 - { id: 0, class: fpr } 119 - { id: 1, class: fpr } 120 121body: | 122 bb.0: 123 liveins: $h0 124 125 ; CHECK-LABEL: name: fpext_s32_s16_fpr 126 ; CHECK: [[COPY:%[0-9]+]]:fpr16 = COPY $h0 127 ; CHECK: [[FCVTSHr:%[0-9]+]]:fpr32 = FCVTSHr [[COPY]] 128 ; CHECK: $s0 = COPY [[FCVTSHr]] 129 %0(s16) = COPY $h0 130 %1(s32) = G_FPEXT %0 131 $s0 = COPY %1(s32) 132... 133 134--- 135name: fpext_s64_s16_fpr 136legalized: true 137regBankSelected: true 138 139registers: 140 - { id: 0, class: fpr } 141 - { id: 1, class: fpr } 142 143body: | 144 bb.0: 145 liveins: $h0 146 147 ; CHECK-LABEL: name: fpext_s64_s16_fpr 148 ; CHECK: [[COPY:%[0-9]+]]:fpr16 = COPY $h0 149 ; CHECK: [[FCVTDHr:%[0-9]+]]:fpr64 = FCVTDHr [[COPY]] 150 ; CHECK: $d0 = COPY [[FCVTDHr]] 151 %0(s16) = COPY $h0 152 %1(s64) = G_FPEXT %0 153 $d0 = COPY %1(s64) 154... 155 156--- 157name: fpext_s64_s32_fpr 158legalized: true 159regBankSelected: true 160 161registers: 162 - { id: 0, class: fpr } 163 - { id: 1, class: fpr } 164 165body: | 166 bb.0: 167 liveins: $d0 168 169 ; CHECK-LABEL: name: fpext_s64_s32_fpr 170 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 171 ; CHECK: [[FCVTDSr:%[0-9]+]]:fpr64 = FCVTDSr [[COPY]] 172 ; CHECK: $d0 = COPY [[FCVTDSr]] 173 %0(s32) = COPY $s0 174 %1(s64) = G_FPEXT %0 175 $d0 = COPY %1(s64) 176... 177 178--- 179name: fpext_v4s32_v4s16_fpr 180legalized: true 181regBankSelected: true 182 183registers: 184 - { id: 0, class: fpr } 185 - { id: 1, class: fpr } 186 187body: | 188 bb.0: 189 liveins: $d0 190 ; CHECK-LABEL: name: fpext_v4s32_v4s16_fpr 191 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 192 ; CHECK: [[FCVTLv4i16:%[0-9]+]]:fpr128 = FCVTLv4i16 [[COPY]] 193 ; CHECK: $q0 = COPY [[FCVTLv4i16]] 194 %0(<4 x s16>) = COPY $d0 195 %1(<4 x s32>) = G_FPEXT %0 196 $q0 = COPY %1(<4 x s32>) 197... 198 199--- 200name: fpext_v2s64_v2s32_fpr 201legalized: true 202regBankSelected: true 203 204registers: 205 - { id: 0, class: fpr } 206 - { id: 1, class: fpr } 207 208body: | 209 bb.0: 210 liveins: $d0 211 ; CHECK-LABEL: name: fpext_v2s64_v2s32_fpr 212 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 213 ; CHECK: [[FCVTLv2i32:%[0-9]+]]:fpr128 = FCVTLv2i32 [[COPY]] 214 ; CHECK: $q0 = COPY [[FCVTLv2i32]] 215 %0(<2 x s32>) = COPY $d0 216 %1(<2 x s64>) = G_FPEXT %0 217 $q0 = COPY %1(<2 x s64>) 218... 219 220--- 221name: sitofp_s32_s32_fpr 222legalized: true 223regBankSelected: true 224 225registers: 226 - { id: 0, class: gpr } 227 - { id: 1, class: fpr } 228 229body: | 230 bb.0: 231 liveins: $w0 232 233 ; CHECK-LABEL: name: sitofp_s32_s32_fpr 234 ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0 235 ; CHECK: [[SCVTFUWSri:%[0-9]+]]:fpr32 = SCVTFUWSri [[COPY]] 236 ; CHECK: $s0 = COPY [[SCVTFUWSri]] 237 %0(s32) = COPY $w0 238 %1(s32) = G_SITOFP %0 239 $s0 = COPY %1(s32) 240... 241 242--- 243name: sitofp_s32_s64_fpr 244legalized: true 245regBankSelected: true 246 247registers: 248 - { id: 0, class: gpr } 249 - { id: 1, class: fpr } 250 251body: | 252 bb.0: 253 liveins: $x0 254 255 ; CHECK-LABEL: name: sitofp_s32_s64_fpr 256 ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 257 ; CHECK: [[SCVTFUXSri:%[0-9]+]]:fpr32 = SCVTFUXSri [[COPY]] 258 ; CHECK: $s0 = COPY [[SCVTFUXSri]] 259 %0(s64) = COPY $x0 260 %1(s32) = G_SITOFP %0 261 $s0 = COPY %1(s32) 262... 263 264--- 265name: sitofp_s64_s32_fpr 266legalized: true 267regBankSelected: true 268 269registers: 270 - { id: 0, class: gpr } 271 - { id: 1, class: fpr } 272 273body: | 274 bb.0: 275 liveins: $w0 276 277 ; CHECK-LABEL: name: sitofp_s64_s32_fpr 278 ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0 279 ; CHECK: [[SCVTFUWDri:%[0-9]+]]:fpr64 = SCVTFUWDri [[COPY]] 280 ; CHECK: $d0 = COPY [[SCVTFUWDri]] 281 %0(s32) = COPY $w0 282 %1(s64) = G_SITOFP %0 283 $d0 = COPY %1(s64) 284... 285 286--- 287name: sitofp_s64_s64_fpr 288legalized: true 289regBankSelected: true 290 291registers: 292 - { id: 0, class: gpr } 293 - { id: 1, class: fpr } 294 295body: | 296 bb.0: 297 liveins: $x0 298 299 ; CHECK-LABEL: name: sitofp_s64_s64_fpr 300 ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 301 ; CHECK: [[SCVTFUXDri:%[0-9]+]]:fpr64 = SCVTFUXDri [[COPY]] 302 ; CHECK: $d0 = COPY [[SCVTFUXDri]] 303 %0(s64) = COPY $x0 304 %1(s64) = G_SITOFP %0 305 $d0 = COPY %1(s64) 306... 307 308--- 309name: uitofp_s32_s32_fpr 310legalized: true 311regBankSelected: true 312 313registers: 314 - { id: 0, class: gpr } 315 - { id: 1, class: fpr } 316 317body: | 318 bb.0: 319 liveins: $w0 320 321 ; CHECK-LABEL: name: uitofp_s32_s32_fpr 322 ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0 323 ; CHECK: [[UCVTFUWSri:%[0-9]+]]:fpr32 = UCVTFUWSri [[COPY]] 324 ; CHECK: $s0 = COPY [[UCVTFUWSri]] 325 %0(s32) = COPY $w0 326 %1(s32) = G_UITOFP %0 327 $s0 = COPY %1(s32) 328... 329 330--- 331name: uitofp_s32_s64_fpr 332legalized: true 333regBankSelected: true 334 335registers: 336 - { id: 0, class: gpr } 337 - { id: 1, class: fpr } 338 339body: | 340 bb.0: 341 liveins: $x0 342 343 ; CHECK-LABEL: name: uitofp_s32_s64_fpr 344 ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 345 ; CHECK: [[UCVTFUXSri:%[0-9]+]]:fpr32 = UCVTFUXSri [[COPY]] 346 ; CHECK: $s0 = COPY [[UCVTFUXSri]] 347 %0(s64) = COPY $x0 348 %1(s32) = G_UITOFP %0 349 $s0 = COPY %1(s32) 350... 351 352--- 353name: uitofp_s64_s32_fpr 354legalized: true 355regBankSelected: true 356 357registers: 358 - { id: 0, class: gpr } 359 - { id: 1, class: fpr } 360 361body: | 362 bb.0: 363 liveins: $w0 364 365 ; CHECK-LABEL: name: uitofp_s64_s32_fpr 366 ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0 367 ; CHECK: [[UCVTFUWDri:%[0-9]+]]:fpr64 = UCVTFUWDri [[COPY]] 368 ; CHECK: $d0 = COPY [[UCVTFUWDri]] 369 %0(s32) = COPY $w0 370 %1(s64) = G_UITOFP %0 371 $d0 = COPY %1(s64) 372... 373 374--- 375name: uitofp_s64_s64_fpr 376legalized: true 377regBankSelected: true 378 379registers: 380 - { id: 0, class: gpr } 381 - { id: 1, class: fpr } 382 383body: | 384 bb.0: 385 liveins: $x0 386 387 ; CHECK-LABEL: name: uitofp_s64_s64_fpr 388 ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 389 ; CHECK: [[UCVTFUXDri:%[0-9]+]]:fpr64 = UCVTFUXDri [[COPY]] 390 ; CHECK: $d0 = COPY [[UCVTFUXDri]] 391 %0(s64) = COPY $x0 392 %1(s64) = G_UITOFP %0 393 $d0 = COPY %1(s64) 394... 395 396--- 397name: fptosi_s32_s32_gpr 398legalized: true 399regBankSelected: true 400 401registers: 402 - { id: 0, class: fpr } 403 - { id: 1, class: gpr } 404 405body: | 406 bb.0: 407 liveins: $s0 408 409 ; CHECK-LABEL: name: fptosi_s32_s32_gpr 410 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 411 ; CHECK: [[FCVTZSUWSr:%[0-9]+]]:gpr32 = FCVTZSUWSr [[COPY]] 412 ; CHECK: $w0 = COPY [[FCVTZSUWSr]] 413 %0(s32) = COPY $s0 414 %1(s32) = G_FPTOSI %0 415 $w0 = COPY %1(s32) 416... 417 418--- 419name: fptosi_s32_s64_gpr 420legalized: true 421regBankSelected: true 422 423registers: 424 - { id: 0, class: fpr } 425 - { id: 1, class: gpr } 426 427body: | 428 bb.0: 429 liveins: $d0 430 431 ; CHECK-LABEL: name: fptosi_s32_s64_gpr 432 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 433 ; CHECK: [[FCVTZSUWDr:%[0-9]+]]:gpr32 = FCVTZSUWDr [[COPY]] 434 ; CHECK: $w0 = COPY [[FCVTZSUWDr]] 435 %0(s64) = COPY $d0 436 %1(s32) = G_FPTOSI %0 437 $w0 = COPY %1(s32) 438... 439 440--- 441name: fptosi_s64_s32_gpr 442legalized: true 443regBankSelected: true 444 445registers: 446 - { id: 0, class: fpr } 447 - { id: 1, class: gpr } 448 449body: | 450 bb.0: 451 liveins: $s0 452 453 ; CHECK-LABEL: name: fptosi_s64_s32_gpr 454 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 455 ; CHECK: [[FCVTZSUXSr:%[0-9]+]]:gpr64 = FCVTZSUXSr [[COPY]] 456 ; CHECK: $x0 = COPY [[FCVTZSUXSr]] 457 %0(s32) = COPY $s0 458 %1(s64) = G_FPTOSI %0 459 $x0 = COPY %1(s64) 460... 461 462--- 463name: fptosi_s64_s64_gpr 464legalized: true 465regBankSelected: true 466 467registers: 468 - { id: 0, class: fpr } 469 - { id: 1, class: gpr } 470 471body: | 472 bb.0: 473 liveins: $d0 474 475 ; CHECK-LABEL: name: fptosi_s64_s64_gpr 476 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 477 ; CHECK: [[FCVTZSUXDr:%[0-9]+]]:gpr64 = FCVTZSUXDr [[COPY]] 478 ; CHECK: $x0 = COPY [[FCVTZSUXDr]] 479 %0(s64) = COPY $d0 480 %1(s64) = G_FPTOSI %0 481 $x0 = COPY %1(s64) 482... 483 484--- 485name: fptoui_s32_s32_gpr 486legalized: true 487regBankSelected: true 488 489registers: 490 - { id: 0, class: fpr } 491 - { id: 1, class: gpr } 492 493body: | 494 bb.0: 495 liveins: $s0 496 497 ; CHECK-LABEL: name: fptoui_s32_s32_gpr 498 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 499 ; CHECK: [[FCVTZUUWSr:%[0-9]+]]:gpr32 = FCVTZUUWSr [[COPY]] 500 ; CHECK: $w0 = COPY [[FCVTZUUWSr]] 501 %0(s32) = COPY $s0 502 %1(s32) = G_FPTOUI %0 503 $w0 = COPY %1(s32) 504... 505 506--- 507name: fptoui_s32_s64_gpr 508legalized: true 509regBankSelected: true 510 511registers: 512 - { id: 0, class: fpr } 513 - { id: 1, class: gpr } 514 515body: | 516 bb.0: 517 liveins: $d0 518 519 ; CHECK-LABEL: name: fptoui_s32_s64_gpr 520 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 521 ; CHECK: [[FCVTZUUWDr:%[0-9]+]]:gpr32 = FCVTZUUWDr [[COPY]] 522 ; CHECK: $w0 = COPY [[FCVTZUUWDr]] 523 %0(s64) = COPY $d0 524 %1(s32) = G_FPTOUI %0 525 $w0 = COPY %1(s32) 526... 527 528--- 529name: fptoui_s64_s32_gpr 530legalized: true 531regBankSelected: true 532 533registers: 534 - { id: 0, class: fpr } 535 - { id: 1, class: gpr } 536 537body: | 538 bb.0: 539 liveins: $s0 540 541 ; CHECK-LABEL: name: fptoui_s64_s32_gpr 542 ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 543 ; CHECK: [[FCVTZUUXSr:%[0-9]+]]:gpr64 = FCVTZUUXSr [[COPY]] 544 ; CHECK: $x0 = COPY [[FCVTZUUXSr]] 545 %0(s32) = COPY $s0 546 %1(s64) = G_FPTOUI %0 547 $x0 = COPY %1(s64) 548... 549 550--- 551name: fptoui_s64_s64_gpr 552legalized: true 553regBankSelected: true 554 555registers: 556 - { id: 0, class: fpr } 557 - { id: 1, class: gpr } 558 559body: | 560 bb.0: 561 liveins: $d0 562 563 ; CHECK-LABEL: name: fptoui_s64_s64_gpr 564 ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 565 ; CHECK: [[FCVTZUUXDr:%[0-9]+]]:gpr64 = FCVTZUUXDr [[COPY]] 566 ; CHECK: $x0 = COPY [[FCVTZUUXDr]] 567 %0(s64) = COPY $d0 568 %1(s64) = G_FPTOUI %0 569 $x0 = COPY %1(s64) 570... 571