| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2 |
| # RUN: llc -mtriple aarch64 -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s |
| --- |
| name: fadd |
| tracksRegLiveness: true |
| body: | |
| bb.1: |
| liveins: $s0 |
| |
| ; CHECK-LABEL: name: fadd |
| ; CHECK: liveins: $s0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0 |
| ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 1.000000e+00 |
| ; CHECK-NEXT: %add:_(s32) = G_FADD [[COPY]], %cst |
| ; CHECK-NEXT: $s0 = COPY %add(s32) |
| ; CHECK-NEXT: RET_ReallyLR |
| %0:_(s32) = COPY $s0 |
| %cst:_(s32) = G_FCONSTANT float 1.000000e+00 |
| %add:_(s32) = G_FADD %cst, %0 |
| $s0 = COPY %add |
| RET_ReallyLR |
| |
| ... |
| --- |
| name: fmul |
| tracksRegLiveness: true |
| body: | |
| bb.1: |
| liveins: $s0 |
| |
| ; CHECK-LABEL: name: fmul |
| ; CHECK: liveins: $s0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0 |
| ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00 |
| ; CHECK-NEXT: %mul:_(s32) = G_FMUL [[COPY]], %cst |
| ; CHECK-NEXT: $s0 = COPY %mul(s32) |
| ; CHECK-NEXT: RET_ReallyLR |
| %0:_(s32) = COPY $s0 |
| %cst:_(s32) = G_FCONSTANT float 2.000000e+00 |
| %mul:_(s32) = G_FMUL %cst, %0 |
| $s0 = COPY %mul |
| RET_ReallyLR |
| ... |
| --- |
| name: fmul_vector |
| tracksRegLiveness: true |
| body: | |
| bb.1: |
| liveins: $s0 |
| |
| ; CHECK-LABEL: name: fmul_vector |
| ; CHECK: liveins: $s0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0 |
| ; CHECK-NEXT: %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 |
| ; CHECK-NEXT: %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar(s32), %cst_scalar(s32), %cst_scalar(s32), %cst_scalar(s32) |
| ; CHECK-NEXT: %mul:_(<4 x s32>) = G_FMUL [[COPY]], %cst |
| ; CHECK-NEXT: $q0 = COPY %mul(<4 x s32>) |
| ; CHECK-NEXT: RET_ReallyLR |
| %0:_(<4 x s32>) = COPY $q0 |
| %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 |
| %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar, %cst_scalar, %cst_scalar, %cst_scalar |
| %mul:_(<4 x s32>) = G_FMUL %cst, %0 |
| $q0 = COPY %mul |
| RET_ReallyLR |
| ... |
| --- |
| name: fmul_splat_with_undef |
| tracksRegLiveness: true |
| body: | |
| bb.1: |
| liveins: $q0 |
| |
| ; CHECK-LABEL: name: fmul_splat_with_undef |
| ; CHECK: liveins: $q0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0 |
| ; CHECK-NEXT: %undef:_(s32) = G_IMPLICIT_DEF |
| ; CHECK-NEXT: %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 |
| ; CHECK-NEXT: %cst:_(<4 x s32>) = G_BUILD_VECTOR %undef(s32), %undef(s32), %cst_scalar(s32), %cst_scalar(s32) |
| ; CHECK-NEXT: %mul:_(<4 x s32>) = G_FMUL [[COPY]], %cst |
| ; CHECK-NEXT: $q0 = COPY %mul(<4 x s32>) |
| ; CHECK-NEXT: RET_ReallyLR |
| %0:_(<4 x s32>) = COPY $q0 |
| %undef:_(s32) = G_IMPLICIT_DEF |
| %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 |
| %cst:_(<4 x s32>) = G_BUILD_VECTOR %undef, %undef, %cst_scalar, %cst_scalar |
| %mul:_(<4 x s32>) = G_FMUL %cst, %0 |
| $q0 = COPY %mul |
| RET_ReallyLR |
| ... |
| --- |
| name: fmul_vector_nonsplat |
| tracksRegLiveness: true |
| body: | |
| bb.1: |
| liveins: $s0 |
| |
| ; CHECK-LABEL: name: fmul_vector_nonsplat |
| ; CHECK: liveins: $s0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0 |
| ; CHECK-NEXT: %scalar:_(s32) = COPY $s0 |
| ; CHECK-NEXT: %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 |
| ; CHECK-NEXT: %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar(s32), %cst_scalar(s32), %cst_scalar(s32), %scalar(s32) |
| ; CHECK-NEXT: %mul:_(<4 x s32>) = G_FMUL %cst, [[COPY]] |
| ; CHECK-NEXT: $q0 = COPY %mul(<4 x s32>) |
| ; CHECK-NEXT: RET_ReallyLR |
| %0:_(<4 x s32>) = COPY $q0 |
| %scalar:_(s32) = COPY $s0 |
| %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00 |
| %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar, %cst_scalar, %cst_scalar, %scalar |
| %mul:_(<4 x s32>) = G_FMUL %cst, %0 |
| $q0 = COPY %mul |
| RET_ReallyLR |
| ... |