| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py | |
| # RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s | |
| --- | | |
| target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" | |
| define void @fptrunc_s16_s32_fpr() { ret void } | |
| define void @fptrunc_s16_s64_fpr() { ret void } | |
| define void @fptrunc_s32_s64_fpr() { ret void } | |
| define void @fpext_s32_s16_fpr() { ret void } | |
| define void @fpext_s64_s16_fpr() { ret void } | |
| define void @fpext_s64_s32_fpr() { ret void } | |
| define void @sitofp_s32_s32_fpr() { ret void } | |
| define void @sitofp_s32_s64_fpr() { ret void } | |
| define void @sitofp_s64_s32_fpr() { ret void } | |
| define void @sitofp_s64_s64_fpr() { ret void } | |
| define void @uitofp_s32_s32_fpr() { ret void } | |
| define void @uitofp_s32_s64_fpr() { ret void } | |
| define void @uitofp_s64_s32_fpr() { ret void } | |
| define void @uitofp_s64_s64_fpr() { ret void } | |
| define void @fptosi_s32_s32_gpr() { ret void } | |
| define void @fptosi_s32_s64_gpr() { ret void } | |
| define void @fptosi_s64_s32_gpr() { ret void } | |
| define void @fptosi_s64_s64_gpr() { ret void } | |
| define void @fptoui_s32_s32_gpr() { ret void } | |
| define void @fptoui_s32_s64_gpr() { ret void } | |
| define void @fptoui_s64_s32_gpr() { ret void } | |
| define void @fptoui_s64_s64_gpr() { ret void } | |
| ... | |
| --- | |
| name: fptrunc_s16_s32_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $s0 | |
| ; CHECK-LABEL: name: fptrunc_s16_s32_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 | |
| ; CHECK: [[FCVTHSr:%[0-9]+]]:fpr16 = FCVTHSr [[COPY]] | |
| ; CHECK: $h0 = COPY [[FCVTHSr]] | |
| %0(s32) = COPY $s0 | |
| %1(s16) = G_FPTRUNC %0 | |
| $h0 = COPY %1(s16) | |
| ... | |
| --- | |
| name: fptrunc_s16_s64_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $d0 | |
| ; CHECK-LABEL: name: fptrunc_s16_s64_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | |
| ; CHECK: [[FCVTHDr:%[0-9]+]]:fpr16 = FCVTHDr [[COPY]] | |
| ; CHECK: $h0 = COPY [[FCVTHDr]] | |
| %0(s64) = COPY $d0 | |
| %1(s16) = G_FPTRUNC %0 | |
| $h0 = COPY %1(s16) | |
| ... | |
| --- | |
| name: fptrunc_s32_s64_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $d0 | |
| ; CHECK-LABEL: name: fptrunc_s32_s64_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | |
| ; CHECK: [[FCVTSDr:%[0-9]+]]:fpr32 = FCVTSDr [[COPY]] | |
| ; CHECK: $s0 = COPY [[FCVTSDr]] | |
| %0(s64) = COPY $d0 | |
| %1(s32) = G_FPTRUNC %0 | |
| $s0 = COPY %1(s32) | |
| ... | |
| --- | |
| name: fpext_s32_s16_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $h0 | |
| ; CHECK-LABEL: name: fpext_s32_s16_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr16 = COPY $h0 | |
| ; CHECK: [[FCVTSHr:%[0-9]+]]:fpr32 = FCVTSHr [[COPY]] | |
| ; CHECK: $s0 = COPY [[FCVTSHr]] | |
| %0(s16) = COPY $h0 | |
| %1(s32) = G_FPEXT %0 | |
| $s0 = COPY %1(s32) | |
| ... | |
| --- | |
| name: fpext_s64_s16_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $h0 | |
| ; CHECK-LABEL: name: fpext_s64_s16_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr16 = COPY $h0 | |
| ; CHECK: [[FCVTDHr:%[0-9]+]]:fpr64 = FCVTDHr [[COPY]] | |
| ; CHECK: $d0 = COPY [[FCVTDHr]] | |
| %0(s16) = COPY $h0 | |
| %1(s64) = G_FPEXT %0 | |
| $d0 = COPY %1(s64) | |
| ... | |
| --- | |
| name: fpext_s64_s32_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $d0 | |
| ; CHECK-LABEL: name: fpext_s64_s32_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 | |
| ; CHECK: [[FCVTDSr:%[0-9]+]]:fpr64 = FCVTDSr [[COPY]] | |
| ; CHECK: $d0 = COPY [[FCVTDSr]] | |
| %0(s32) = COPY $s0 | |
| %1(s64) = G_FPEXT %0 | |
| $d0 = COPY %1(s64) | |
| ... | |
| --- | |
| name: sitofp_s32_s32_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: gpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $w0 | |
| ; CHECK-LABEL: name: sitofp_s32_s32_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0 | |
| ; CHECK: [[SCVTFUWSri:%[0-9]+]]:fpr32 = SCVTFUWSri [[COPY]] | |
| ; CHECK: $s0 = COPY [[SCVTFUWSri]] | |
| %0(s32) = COPY $w0 | |
| %1(s32) = G_SITOFP %0 | |
| $s0 = COPY %1(s32) | |
| ... | |
| --- | |
| name: sitofp_s32_s64_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: gpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $x0 | |
| ; CHECK-LABEL: name: sitofp_s32_s64_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 | |
| ; CHECK: [[SCVTFUXSri:%[0-9]+]]:fpr32 = SCVTFUXSri [[COPY]] | |
| ; CHECK: $s0 = COPY [[SCVTFUXSri]] | |
| %0(s64) = COPY $x0 | |
| %1(s32) = G_SITOFP %0 | |
| $s0 = COPY %1(s32) | |
| ... | |
| --- | |
| name: sitofp_s64_s32_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: gpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $w0 | |
| ; CHECK-LABEL: name: sitofp_s64_s32_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0 | |
| ; CHECK: [[SCVTFUWDri:%[0-9]+]]:fpr64 = SCVTFUWDri [[COPY]] | |
| ; CHECK: $d0 = COPY [[SCVTFUWDri]] | |
| %0(s32) = COPY $w0 | |
| %1(s64) = G_SITOFP %0 | |
| $d0 = COPY %1(s64) | |
| ... | |
| --- | |
| name: sitofp_s64_s64_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: gpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $x0 | |
| ; CHECK-LABEL: name: sitofp_s64_s64_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 | |
| ; CHECK: [[SCVTFUXDri:%[0-9]+]]:fpr64 = SCVTFUXDri [[COPY]] | |
| ; CHECK: $d0 = COPY [[SCVTFUXDri]] | |
| %0(s64) = COPY $x0 | |
| %1(s64) = G_SITOFP %0 | |
| $d0 = COPY %1(s64) | |
| ... | |
| --- | |
| name: uitofp_s32_s32_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: gpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $w0 | |
| ; CHECK-LABEL: name: uitofp_s32_s32_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0 | |
| ; CHECK: [[UCVTFUWSri:%[0-9]+]]:fpr32 = UCVTFUWSri [[COPY]] | |
| ; CHECK: $s0 = COPY [[UCVTFUWSri]] | |
| %0(s32) = COPY $w0 | |
| %1(s32) = G_UITOFP %0 | |
| $s0 = COPY %1(s32) | |
| ... | |
| --- | |
| name: uitofp_s32_s64_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: gpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $x0 | |
| ; CHECK-LABEL: name: uitofp_s32_s64_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 | |
| ; CHECK: [[UCVTFUXSri:%[0-9]+]]:fpr32 = UCVTFUXSri [[COPY]] | |
| ; CHECK: $s0 = COPY [[UCVTFUXSri]] | |
| %0(s64) = COPY $x0 | |
| %1(s32) = G_UITOFP %0 | |
| $s0 = COPY %1(s32) | |
| ... | |
| --- | |
| name: uitofp_s64_s32_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: gpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $w0 | |
| ; CHECK-LABEL: name: uitofp_s64_s32_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY $w0 | |
| ; CHECK: [[UCVTFUWDri:%[0-9]+]]:fpr64 = UCVTFUWDri [[COPY]] | |
| ; CHECK: $d0 = COPY [[UCVTFUWDri]] | |
| %0(s32) = COPY $w0 | |
| %1(s64) = G_UITOFP %0 | |
| $d0 = COPY %1(s64) | |
| ... | |
| --- | |
| name: uitofp_s64_s64_fpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: gpr } | |
| - { id: 1, class: fpr } | |
| body: | | |
| bb.0: | |
| liveins: $x0 | |
| ; CHECK-LABEL: name: uitofp_s64_s64_fpr | |
| ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 | |
| ; CHECK: [[UCVTFUXDri:%[0-9]+]]:fpr64 = UCVTFUXDri [[COPY]] | |
| ; CHECK: $d0 = COPY [[UCVTFUXDri]] | |
| %0(s64) = COPY $x0 | |
| %1(s64) = G_UITOFP %0 | |
| $d0 = COPY %1(s64) | |
| ... | |
| --- | |
| name: fptosi_s32_s32_gpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: gpr } | |
| body: | | |
| bb.0: | |
| liveins: $s0 | |
| ; CHECK-LABEL: name: fptosi_s32_s32_gpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 | |
| ; CHECK: [[FCVTZSUWSr:%[0-9]+]]:gpr32 = FCVTZSUWSr [[COPY]] | |
| ; CHECK: $w0 = COPY [[FCVTZSUWSr]] | |
| %0(s32) = COPY $s0 | |
| %1(s32) = G_FPTOSI %0 | |
| $w0 = COPY %1(s32) | |
| ... | |
| --- | |
| name: fptosi_s32_s64_gpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: gpr } | |
| body: | | |
| bb.0: | |
| liveins: $d0 | |
| ; CHECK-LABEL: name: fptosi_s32_s64_gpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | |
| ; CHECK: [[FCVTZSUWDr:%[0-9]+]]:gpr32 = FCVTZSUWDr [[COPY]] | |
| ; CHECK: $w0 = COPY [[FCVTZSUWDr]] | |
| %0(s64) = COPY $d0 | |
| %1(s32) = G_FPTOSI %0 | |
| $w0 = COPY %1(s32) | |
| ... | |
| --- | |
| name: fptosi_s64_s32_gpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: gpr } | |
| body: | | |
| bb.0: | |
| liveins: $s0 | |
| ; CHECK-LABEL: name: fptosi_s64_s32_gpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 | |
| ; CHECK: [[FCVTZSUXSr:%[0-9]+]]:gpr64 = FCVTZSUXSr [[COPY]] | |
| ; CHECK: $x0 = COPY [[FCVTZSUXSr]] | |
| %0(s32) = COPY $s0 | |
| %1(s64) = G_FPTOSI %0 | |
| $x0 = COPY %1(s64) | |
| ... | |
| --- | |
| name: fptosi_s64_s64_gpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: gpr } | |
| body: | | |
| bb.0: | |
| liveins: $d0 | |
| ; CHECK-LABEL: name: fptosi_s64_s64_gpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | |
| ; CHECK: [[FCVTZSUXDr:%[0-9]+]]:gpr64 = FCVTZSUXDr [[COPY]] | |
| ; CHECK: $x0 = COPY [[FCVTZSUXDr]] | |
| %0(s64) = COPY $d0 | |
| %1(s64) = G_FPTOSI %0 | |
| $x0 = COPY %1(s64) | |
| ... | |
| --- | |
| name: fptoui_s32_s32_gpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: gpr } | |
| body: | | |
| bb.0: | |
| liveins: $s0 | |
| ; CHECK-LABEL: name: fptoui_s32_s32_gpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 | |
| ; CHECK: [[FCVTZUUWSr:%[0-9]+]]:gpr32 = FCVTZUUWSr [[COPY]] | |
| ; CHECK: $w0 = COPY [[FCVTZUUWSr]] | |
| %0(s32) = COPY $s0 | |
| %1(s32) = G_FPTOUI %0 | |
| $w0 = COPY %1(s32) | |
| ... | |
| --- | |
| name: fptoui_s32_s64_gpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: gpr } | |
| body: | | |
| bb.0: | |
| liveins: $d0 | |
| ; CHECK-LABEL: name: fptoui_s32_s64_gpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | |
| ; CHECK: [[FCVTZUUWDr:%[0-9]+]]:gpr32 = FCVTZUUWDr [[COPY]] | |
| ; CHECK: $w0 = COPY [[FCVTZUUWDr]] | |
| %0(s64) = COPY $d0 | |
| %1(s32) = G_FPTOUI %0 | |
| $w0 = COPY %1(s32) | |
| ... | |
| --- | |
| name: fptoui_s64_s32_gpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: gpr } | |
| body: | | |
| bb.0: | |
| liveins: $s0 | |
| ; CHECK-LABEL: name: fptoui_s64_s32_gpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0 | |
| ; CHECK: [[FCVTZUUXSr:%[0-9]+]]:gpr64 = FCVTZUUXSr [[COPY]] | |
| ; CHECK: $x0 = COPY [[FCVTZUUXSr]] | |
| %0(s32) = COPY $s0 | |
| %1(s64) = G_FPTOUI %0 | |
| $x0 = COPY %1(s64) | |
| ... | |
| --- | |
| name: fptoui_s64_s64_gpr | |
| legalized: true | |
| regBankSelected: true | |
| registers: | |
| - { id: 0, class: fpr } | |
| - { id: 1, class: gpr } | |
| body: | | |
| bb.0: | |
| liveins: $d0 | |
| ; CHECK-LABEL: name: fptoui_s64_s64_gpr | |
| ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 | |
| ; CHECK: [[FCVTZUUXDr:%[0-9]+]]:gpr64 = FCVTZUUXDr [[COPY]] | |
| ; CHECK: $x0 = COPY [[FCVTZUUXDr]] | |
| %0(s64) = COPY $d0 | |
| %1(s64) = G_FPTOUI %0 | |
| $x0 = COPY %1(s64) | |
| ... |