# 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 ...