1; RUN: llc < %s -mtriple=avr | FileCheck %s 2; RUN: llc < %s -mtriple=avr -mcpu=avr5 | FileCheck -check-prefix=AVR5 %s 3 4; CHECK-LABEL: relax_breq 5; CHECK: cpi r{{[0-9]+}}, 0 6; CHECK: brne .LBB0_1 7; CHECK: rjmp .LBB0_2 8; CHECK: .LBB0_1: 9; CHECK: nop 10; CHECK: .LBB0_2: 11 12; AVR5-LABEL: relax_breq 13; AVR5: andi r24, 1 14; AVR5: cpi r24, 0 15; AVR5: brne .LBB0_1 16; AVR5: rjmp .LBB0_2 17; AVR5: .LBB0_1: 18; AVR5: nop 19; AVR5: .LBB0_2: 20 21define i8 @relax_breq(i1 %a) { 22entry-block: 23 br i1 %a, label %hello, label %finished 24 25hello: 26 call void asm sideeffect "nop", ""() 27 call void asm sideeffect "nop", ""() 28 call void asm sideeffect "nop", ""() 29 call void asm sideeffect "nop", ""() 30 call void asm sideeffect "nop", ""() 31 call void asm sideeffect "nop", ""() 32 call void asm sideeffect "nop", ""() 33 call void asm sideeffect "nop", ""() 34 call void asm sideeffect "nop", ""() 35 call void asm sideeffect "nop", ""() 36 call void asm sideeffect "nop", ""() 37 call void asm sideeffect "nop", ""() 38 call void asm sideeffect "nop", ""() 39 call void asm sideeffect "nop", ""() 40 call void asm sideeffect "nop", ""() 41 call void asm sideeffect "nop", ""() 42 call void asm sideeffect "nop", ""() 43 call void asm sideeffect "nop", ""() 44 call void asm sideeffect "nop", ""() 45 call void asm sideeffect "nop", ""() 46 call void asm sideeffect "nop", ""() 47 call void asm sideeffect "nop", ""() 48 call void asm sideeffect "nop", ""() 49 call void asm sideeffect "nop", ""() 50 call void asm sideeffect "nop", ""() 51 call void asm sideeffect "nop", ""() 52 call void asm sideeffect "nop", ""() 53 call void asm sideeffect "nop", ""() 54 call void asm sideeffect "nop", ""() 55 call void asm sideeffect "nop", ""() 56 call void asm sideeffect "nop", ""() 57 call void asm sideeffect "nop", ""() 58 call void asm sideeffect "nop", ""() 59 call void asm sideeffect "nop", ""() 60 call void asm sideeffect "nop", ""() 61 call void asm sideeffect "nop", ""() 62 call void asm sideeffect "nop", ""() 63 call void asm sideeffect "nop", ""() 64 call void asm sideeffect "nop", ""() 65 call void asm sideeffect "nop", ""() 66 call void asm sideeffect "nop", ""() 67 call void asm sideeffect "nop", ""() 68 call void asm sideeffect "nop", ""() 69 call void asm sideeffect "nop", ""() 70 call void asm sideeffect "nop", ""() 71 call void asm sideeffect "nop", ""() 72 call void asm sideeffect "nop", ""() 73 call void asm sideeffect "nop", ""() 74 call void asm sideeffect "nop", ""() 75 call void asm sideeffect "nop", ""() 76 br label %finished 77finished: 78 ret i8 3 79} 80 81; CHECK-LABEL: no_relax_breq 82; CHECK: cpi r{{[0-9]+}}, 0 83; CHECK: breq [[END_BB:.LBB[0-9]+_[0-9]+]] 84; CHECK: nop 85; CHECK: [[END_BB]] 86 87; AVR5-LABEL: no_relax_breq 88; AVR5: cpi r{{[0-9]+}}, 0 89; AVR5: breq [[END_BB:.LBB[0-9]+_[0-9]+]] 90; AVR5: nop 91; AVR5: [[END_BB]] 92 93define i8 @no_relax_breq(i1 %a) { 94entry-block: 95 br i1 %a, label %hello, label %finished 96 97hello: 98 ; There are not enough NOPs to require relaxation. 99 call void asm sideeffect "nop", ""() 100 call void asm sideeffect "nop", ""() 101 call void asm sideeffect "nop", ""() 102 call void asm sideeffect "nop", ""() 103 call void asm sideeffect "nop", ""() 104 call void asm sideeffect "nop", ""() 105 call void asm sideeffect "nop", ""() 106 call void asm sideeffect "nop", ""() 107 call void asm sideeffect "nop", ""() 108 call void asm sideeffect "nop", ""() 109 call void asm sideeffect "nop", ""() 110 br label %finished 111finished: 112 ret i8 3 113} 114 115