| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 |
| # RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass machine-combiner -verify-machineinstrs -o - %s | FileCheck %s |
| |
| --- |
| name: madd_addwi |
| alignment: 4 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| liveins: $w0, $w1 |
| |
| ; CHECK-LABEL: name: madd_addwi |
| ; CHECK: liveins: $w0, $w1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0 |
| ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1 |
| ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = nsw MOVi32imm 79 |
| ; CHECK-NEXT: [[MADDWrrr:%[0-9]+]]:gpr32common = nsw MADDWrrr [[COPY1]], [[COPY]], [[MOVi32imm]] |
| ; CHECK-NEXT: $w0 = COPY [[MADDWrrr]] |
| ; CHECK-NEXT: RET_ReallyLR implicit $w0 |
| %0:gpr32 = COPY $w0 |
| %1:gpr32 = COPY $w1 |
| %2:gpr32common = nsw MADDWrrr %1:gpr32, %0:gpr32, $wzr |
| %3:gpr32sp = nsw ADDWri killed %2:gpr32common, 79, 0 |
| $w0 = COPY %3:gpr32sp |
| RET_ReallyLR implicit $w0 |
| ... |
| --- |
| name: madd_addxi |
| alignment: 4 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| liveins: $x0, $x1 |
| |
| ; CHECK-LABEL: name: madd_addxi |
| ; CHECK: liveins: $x0, $x1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 |
| ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1 |
| ; CHECK-NEXT: [[MOVi64imm:%[0-9]+]]:gpr64 = nsw MOVi64imm 79 |
| ; CHECK-NEXT: [[MADDXrrr:%[0-9]+]]:gpr64common = nsw MADDXrrr [[COPY1]], [[COPY]], [[MOVi64imm]] |
| ; CHECK-NEXT: $x0 = COPY [[MADDXrrr]] |
| ; CHECK-NEXT: RET_ReallyLR implicit $x0 |
| %0:gpr64 = COPY $x0 |
| %1:gpr64 = COPY $x1 |
| %2:gpr64common = nsw MADDXrrr %1:gpr64, %0:gpr64, $xzr |
| %3:gpr64sp = nsw ADDXri killed %2:gpr64common, 79, 0 |
| $x0 = COPY %3:gpr64sp |
| RET_ReallyLR implicit $x0 |
| ... |
| --- |
| name: madd_subwi |
| alignment: 4 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| liveins: $w0, $w1 |
| |
| ; CHECK-LABEL: name: madd_subwi |
| ; CHECK: liveins: $w0, $w1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0 |
| ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1 |
| ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = nsw MOVi32imm -1 |
| ; CHECK-NEXT: [[MADDWrrr:%[0-9]+]]:gpr32 = nsw MADDWrrr [[COPY1]], [[COPY]], [[MOVi32imm]] |
| ; CHECK-NEXT: $w0 = COPY [[MADDWrrr]] |
| ; CHECK-NEXT: RET_ReallyLR implicit $w0 |
| %0:gpr32 = COPY $w0 |
| %1:gpr32 = COPY $w1 |
| %2:gpr32common = nsw MADDWrrr %1:gpr32, %0:gpr32, $wzr |
| %3:gpr32 = nsw SUBSWri killed %2:gpr32common, 1, 0, implicit-def dead $nzcv |
| $w0 = COPY %3:gpr32 |
| RET_ReallyLR implicit $w0 |
| ... |
| --- |
| name: madd_subxi |
| alignment: 4 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| liveins: $x0, $x1 |
| |
| ; CHECK-LABEL: name: madd_subxi |
| ; CHECK: liveins: $x0, $x1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 |
| ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1 |
| ; CHECK-NEXT: [[MOVi64imm:%[0-9]+]]:gpr64 = nsw MOVi64imm -1 |
| ; CHECK-NEXT: [[MADDXrrr:%[0-9]+]]:gpr64 = nsw MADDXrrr [[COPY1]], [[COPY]], [[MOVi64imm]] |
| ; CHECK-NEXT: $x0 = COPY [[MADDXrrr]] |
| ; CHECK-NEXT: RET_ReallyLR implicit $x0 |
| %0:gpr64 = COPY $x0 |
| %1:gpr64 = COPY $x1 |
| %2:gpr64common = nsw MADDXrrr %1:gpr64, %0:gpr64, $xzr |
| %3:gpr64 = nsw SUBSXri killed %2:gpr64common, 1, 0, implicit-def dead $nzcv |
| $x0 = COPY %3:gpr64 |
| RET_ReallyLR implicit $x0 |
| ... |
| --- |
| name: madd_addorwi |
| alignment: 4 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| liveins: $w0, $w1 |
| |
| ; CHECK-LABEL: name: madd_addorwi |
| ; CHECK: liveins: $w0, $w1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0 |
| ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1 |
| ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = nsw MOVi32imm 16773120 |
| ; CHECK-NEXT: [[MADDWrrr:%[0-9]+]]:gpr32common = nsw MADDWrrr [[COPY1]], [[COPY]], [[MOVi32imm]] |
| ; CHECK-NEXT: $w0 = COPY [[MADDWrrr]] |
| ; CHECK-NEXT: RET_ReallyLR implicit $w0 |
| %0:gpr32 = COPY $w0 |
| %1:gpr32 = COPY $w1 |
| %2:gpr32common = nsw MADDWrrr %1:gpr32, %0:gpr32, $wzr |
| %3:gpr32sp = nsw ADDWri killed %2:gpr32common, 4095, 12 |
| $w0 = COPY %3:gpr32sp |
| RET_ReallyLR implicit $w0 |
| ... |
| --- |
| name: madd_addorxi |
| alignment: 4 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| liveins: $x0, $x1 |
| |
| ; CHECK-LABEL: name: madd_addorxi |
| ; CHECK: liveins: $x0, $x1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 |
| ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1 |
| ; CHECK-NEXT: [[MOVi64imm:%[0-9]+]]:gpr64 = nsw MOVi64imm 16773120 |
| ; CHECK-NEXT: [[MADDXrrr:%[0-9]+]]:gpr64common = nsw MADDXrrr [[COPY1]], [[COPY]], [[MOVi64imm]] |
| ; CHECK-NEXT: $x0 = COPY [[MADDXrrr]] |
| ; CHECK-NEXT: RET_ReallyLR implicit $x0 |
| %0:gpr64 = COPY $x0 |
| %1:gpr64 = COPY $x1 |
| %2:gpr64common = nsw MADDXrrr %1:gpr64, %0:gpr64, $xzr |
| %3:gpr64sp = nsw ADDXri killed %2:gpr64common, 4095, 12 |
| $x0 = COPY %3:gpr64sp |
| RET_ReallyLR implicit $x0 |
| ... |