55 lines · plain
1# RUN: llc %s -o - -run-pass=peephole-opt | FileCheck %s2 3# Check that we don't optimize out a subs due to areCFlagsAccessedBetweenInstrs4# returning the wrong result; it should check the cneg before the subs which does5# modify cflags.6 7# CHECK-LABEL: f8# CHECK: SUBSWrr9# CHECK-NEXT: SUBWrr10# CHECK-NEXT: CSNEGWr11# CHECK-NEXT: SUBSWri12# CHECK-NEXT: CSNEGWr13# CHECK-NEXT: Bcc14 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"18 19 define dso_local void @f() {20 ret void21 }22 23...24---25name: f26registers: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: '' }37body: |38 bb.0:39 successors: %bb.040 41 %43 = MOVi32imm 142 %44 = MOVi32imm 143 %46 = MOVi32imm 144 %47 = MOVi32imm 145 %48 = nsw SUBSWrr killed %43, killed %46, implicit-def dead $nzcv46 %49 = nsw SUBSWrr killed %44, killed %47, implicit-def dead $nzcv47 %50 = SUBSWri %48, 0, 0, implicit-def $nzcv48 %51 = CSNEGWr %48, %48, 5, implicit $nzcv49 %52 = SUBSWri %49, 0, 0, implicit-def $nzcv50 %53 = CSNEGWr %49, %49, 5, implicit $nzcv51 Bcc 1, %bb.0, implicit $nzcv52 RET_ReallyLR53 54...55