1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -o - %s -mtriple=x86_64-- -run-pass peephole-opt -mattr=+ndd | FileCheck %s 3 4--- 5name: opt_redundant_flags_0 6body: | 7 bb.0: 8 ; CHECK-LABEL: name: opt_redundant_flags_0 9 ; CHECK: [[COPY:%[0-9]+]]:gr32 = COPY $esi 10 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gr32 = COPY $edi 11 ; CHECK-NEXT: [[SUB32rr_ND:%[0-9]+]]:gr32 = SUB32rr_ND [[COPY]], [[COPY1]], implicit-def $eflags 12 ; CHECK-NEXT: $eax = COPY [[SUB32rr_ND]] 13 ; CHECK-NEXT: $bl = SETCCr 2, implicit $eflags 14 %0:gr32 = COPY $esi 15 %1:gr32 = COPY $edi 16 %2:gr32 = SUB32rr_ND %0, %1, implicit-def dead $eflags 17 $eax = COPY %2 18 ; CMP should be removed. 19 CMP32rr %0, %1, implicit-def $eflags 20 $bl = SETCCr 2, implicit $eflags 21... 22--- 23name: opt_redundant_flags_1 24body: | 25 bb.0: 26 ; CHECK-LABEL: name: opt_redundant_flags_1 27 ; CHECK: [[COPY:%[0-9]+]]:gr32 = COPY $esi 28 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gr32 = COPY $edi 29 ; CHECK-NEXT: [[SUB32rr_ND:%[0-9]+]]:gr32 = SUB32rr_ND [[COPY]], [[COPY1]], implicit-def $eflags 30 ; CHECK-NEXT: $eax = COPY [[SUB32rr_ND]] 31 ; CHECK-NEXT: $bl = SETCCr 6, implicit $eflags 32 %0:gr32 = COPY $esi 33 %1:gr32 = COPY $edi 34 %2:gr32 = SUB32rr_ND %0, %1, implicit-def dead $eflags 35 $eax = COPY %2 36 ; CMP should be removed. 37 CMP32rr %1, %0, implicit-def $eflags 38 $bl = SETCCr 3, implicit $eflags 39... 40--- 41name: opt_redundant_flags_2 42body: | 43 bb.0: 44 ; CHECK-LABEL: name: opt_redundant_flags_2 45 ; CHECK: [[COPY:%[0-9]+]]:gr32 = COPY $esi 46 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gr32 = COPY $edi 47 ; CHECK-NEXT: [[SUB32rr_ND:%[0-9]+]]:gr32 = SUB32rr_ND [[COPY]], [[COPY1]], implicit-def $eflags 48 ; CHECK-NEXT: $cl = SETCCr 2, implicit $eflags 49 ; CHECK-NEXT: $eax = COPY [[SUB32rr_ND]] 50 ; CHECK-NEXT: $bl = SETCCr 2, implicit $eflags 51 %0:gr32 = COPY $esi 52 %1:gr32 = COPY $edi 53 %2:gr32 = SUB32rr_ND %0, %1, implicit-def $eflags 54 ; an extra eflags reader shouldn't stop optimization. 55 $cl = SETCCr 2, implicit $eflags 56 $eax = COPY %2 57 CMP32rr %0, %1, implicit-def $eflags 58 $bl = SETCCr 2, implicit $eflags 59... 60--- 61name: opt_zerocmp_user_0 62body: | 63 bb.0: 64 ; CHECK-LABEL: name: opt_zerocmp_user_0 65 ; CHECK: [[COPY:%[0-9]+]]:gr32 = COPY $esi 66 ; CHECK-NEXT: [[NEG32r_ND:%[0-9]+]]:gr32 = NEG32r_ND [[COPY]], implicit-def $eflags 67 ; CHECK-NEXT: $al = SETCCr 3, implicit $eflags 68 %0:gr32 = COPY $esi 69 %1:gr32 = NEG32r_ND %0, implicit-def dead $eflags 70 ; TEST should be removed. 71 TEST32rr %0, %0, implicit-def $eflags 72 $al = SETCCr 4, implicit $eflags 73... 74