[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / peephole-opt-check-cflags.mir
blobd8d9b64b0116aeb3e44883e834bc42fea5a14f7b
1 # RUN: llc %s -o - -run-pass=peephole-opt | FileCheck %s
3 # Check that we don't optimize out a subs due to areCFlagsAccessedBetweenInstrs
4 # returning the wrong result; it should check the cneg before the subs which does
5 # modify cflags.
7 # CHECK-LABEL: f
8 # CHECK:      SUBSWrr
9 # CHECK-NEXT: SUBWrr
10 # CHECK-NEXT: CSNEGWr
11 # CHECK-NEXT: SUBSWri
12 # CHECK-NEXT: CSNEGWr
13 # CHECK-NEXT: Bcc
15 --- |
16   target datalayout = "e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128"
17   target triple = "aarch64-w64-windows-gnu"
19   define dso_local void @f() {
20     ret void
21   }
23 ...
24 ---
25 name:            f
26 registers:
27   - { id: 43, class: gpr32, preferred-register: '' }
28   - { id: 44, class: gpr32, preferred-register: '' }
29   - { id: 46, class: gpr32, preferred-register: '' }
30   - { id: 47, class: gpr32, preferred-register: '' }
31   - { id: 48, class: gpr32common, preferred-register: '' }
32   - { id: 49, class: gpr32common, preferred-register: '' }
33   - { id: 50, class: gpr32, preferred-register: '' }
34   - { id: 51, class: gpr32, preferred-register: '' }
35   - { id: 52, class: gpr32, preferred-register: '' }
36   - { id: 53, class: gpr32, preferred-register: '' }
37 body:             |
38   bb.0:
39     successors: %bb.0
41     %43 = MOVi32imm 1
42     %44 = MOVi32imm 1
43     %46 = MOVi32imm 1
44     %47 = MOVi32imm 1
45     %48 = nsw SUBSWrr killed %43, killed %46, implicit-def dead $nzcv
46     %49 = nsw SUBSWrr killed %44, killed %47, implicit-def dead $nzcv
47     %50 = SUBSWri %48, 0, 0, implicit-def $nzcv
48     %51 = CSNEGWr %48, %48, 5, implicit $nzcv
49     %52 = SUBSWri %49, 0, 0, implicit-def $nzcv
50     %53 = CSNEGWr %49, %49, 5, implicit $nzcv
51     Bcc 1, %bb.0, implicit $nzcv
52     RET_ReallyLR
54 ...