[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / postselectopt-constrain-new-regop.mir
bloba6bdcf26f3337a6727a3e5ab25d3fe489447b2dc
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple aarch64 -run-pass=aarch64-post-select-optimize -verify-machineinstrs %s -o - | FileCheck %s
3 ---
4 name:            pluto
5 alignment:       4
6 legalized:       true
7 regBankSelected: true
8 selected:        true
9 tracksRegLiveness: true
10 liveins:
11   - { reg: '$x0' }
12   - { reg: '$w1' }
13   - { reg: '$x2' }
14 frameInfo:
15   maxAlignment:    1
16   maxCallFrameSize: 0
17 body:             |
18   ; CHECK-LABEL: name: pluto
19   ; CHECK: bb.0:
20   ; CHECK:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
21   ; CHECK:   liveins: $w1, $x0, $x2
22   ; CHECK:   [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
23   ; CHECK:   [[COPY1:%[0-9]+]]:gpr32sp = COPY $w1
24   ; CHECK:   [[COPY2:%[0-9]+]]:gpr64sp = COPY $x2
25   ; CHECK:   [[DEF:%[0-9]+]]:gpr32 = IMPLICIT_DEF
26   ; CHECK:   [[COPY3:%[0-9]+]]:fpr32 = COPY [[DEF]]
27   ; CHECK:   [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 872415232
28   ; CHECK:   [[COPY4:%[0-9]+]]:fpr32 = COPY [[MOVi32imm]]
29   ; CHECK:   FCMPSrr [[COPY3]], [[COPY4]], implicit-def $nzcv, implicit $fpcr
30   ; CHECK:   [[CSINCWr:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 13, implicit $nzcv
31   ; CHECK:   [[SUBWri:%[0-9]+]]:gpr32common = SUBWri [[COPY1]], 1, 0
32   ; CHECK:   [[SUBREG_TO_REG:%[0-9]+]]:gpr64 = SUBREG_TO_REG 0, [[SUBWri]], %subreg.sub_32
33   ; CHECK:   [[COPY5:%[0-9]+]]:fpr32 = COPY [[DEF]]
34   ; CHECK:   FCMPSrr [[COPY5]], [[COPY4]], implicit-def $nzcv, implicit $fpcr
35   ; CHECK:   [[CSINCWr1:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 12, implicit $nzcv
36   ; CHECK:   [[EORWrr:%[0-9]+]]:gpr32 = EORWrr [[CSINCWr]], [[CSINCWr1]]
37   ; CHECK:   TBNZW [[EORWrr]], 0, %bb.2
38   ; CHECK:   B %bb.1
39   ; CHECK: bb.1:
40   ; CHECK:   successors: %bb.2(0x80000000)
41   ; CHECK:   [[UBFMXri:%[0-9]+]]:gpr64 = UBFMXri [[SUBREG_TO_REG]], 60, 59
42   ; CHECK:   [[LDRSroX:%[0-9]+]]:fpr32 = LDRSroX [[COPY]], [[UBFMXri]], 0, 0 :: (load (s32))
43   ; CHECK:   [[COPY6:%[0-9]+]]:fpr32 = COPY [[DEF]]
44   ; CHECK:   [[FMULSrr:%[0-9]+]]:fpr32 = FMULSrr [[COPY6]], [[LDRSroX]], implicit $fpcr
45   ; CHECK:   [[COPY7:%[0-9]+]]:fpr32 = COPY [[DEF]]
46   ; CHECK:   [[FADDSrr:%[0-9]+]]:fpr32 = FADDSrr [[FMULSrr]], [[COPY7]], implicit $fpcr
47   ; CHECK:   STRSui [[FADDSrr]], [[COPY2]], 0 :: (store (s32))
48   ; CHECK: bb.2:
49   ; CHECK:   RET_ReallyLR
50   bb.1:
51     liveins: $w1, $x0, $x2
53     %0:gpr64sp = COPY $x0
54     %1:gpr32sp = COPY $w1
55     %2:gpr64sp = COPY $x2
56     %3:gpr32 = IMPLICIT_DEF
57     %29:fpr32 = COPY %3
58     %33:gpr32 = MOVi32imm 872415232
59     %4:fpr32 = COPY %33
60     FCMPSrr %29, %4, implicit-def $nzcv, implicit $fpcr
61     %28:gpr32 = CSINCWr $wzr, $wzr, 13, implicit $nzcv
62     %7:gpr32 = SUBSWri %1, 1, 0, implicit-def $nzcv
63     %8:gpr64 = SUBREG_TO_REG 0, %7, %subreg.sub_32
64     %30:fpr32 = COPY %3
65     FCMPSrr %30, %4, implicit-def $nzcv, implicit $fpcr
66     %27:gpr32 = CSINCWr $wzr, $wzr, 12, implicit $nzcv
67     %26:gpr32 = EORWrr %28, %27
68     TBNZW %26, 0, %bb.3
69     B %bb.2
71   bb.2:
72     %12:gpr64 = UBFMXri %8, 60, 59
73     %15:fpr32 = LDRSroX %0, %12, 0, 0 :: (load (s32))
74     %31:fpr32 = COPY %3
75     %16:fpr32 = FMULSrr %31, %15, implicit $fpcr
76     %32:fpr32 = COPY %3
77     %17:fpr32 = FADDSrr %16, %32, implicit $fpcr
78     STRSui %17, %2, 0 :: (store (s32))
80   bb.3:
81     RET_ReallyLR
83 ...