115 lines · plain
1; RUN: llc < %s -mtriple=avr | FileCheck %s2; RUN: llc < %s -mtriple=avr -mcpu=avr5 | FileCheck -check-prefix=AVR5 %s3 4; CHECK-LABEL: relax_breq5; CHECK: cpi r{{[0-9]+}}, 06; CHECK: brne .LBB0_17; CHECK: rjmp .LBB0_28; CHECK: .LBB0_1:9; CHECK: nop10; CHECK: .LBB0_2:11 12; AVR5-LABEL: relax_breq13; AVR5: andi r24, 114; AVR5: cpi r24, 015; AVR5: brne .LBB0_116; AVR5: rjmp .LBB0_217; AVR5: .LBB0_1:18; AVR5: nop19; AVR5: .LBB0_2:20 21define i8 @relax_breq(i1 %a) {22entry-block:23 br i1 %a, label %hello, label %finished24 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 %finished77finished:78 ret i8 379}80 81; CHECK-LABEL: no_relax_breq82; CHECK: cpi r{{[0-9]+}}, 083; CHECK: breq [[END_BB:.LBB[0-9]+_[0-9]+]]84; CHECK: nop85; CHECK: [[END_BB]]86 87; AVR5-LABEL: no_relax_breq88; AVR5: cpi r{{[0-9]+}}, 089; AVR5: breq [[END_BB:.LBB[0-9]+_[0-9]+]]90; AVR5: nop91; AVR5: [[END_BB]]92 93define i8 @no_relax_breq(i1 %a) {94entry-block:95 br i1 %a, label %hello, label %finished96 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 %finished111finished:112 ret i8 3113}114 115