diff options
Diffstat (limited to 'test/CodeGen/AVR/branch-relaxation.ll')
-rw-r--r-- | test/CodeGen/AVR/branch-relaxation.ll | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/test/CodeGen/AVR/branch-relaxation.ll b/test/CodeGen/AVR/branch-relaxation.ll new file mode 100644 index 000000000000..d6f07f653576 --- /dev/null +++ b/test/CodeGen/AVR/branch-relaxation.ll @@ -0,0 +1,96 @@ +; RUN: llc < %s -march=avr | FileCheck %s + +; CHECKC-LABEL: relax_breq +; CHECK: cpi r{{[0-9]+}}, 0 +; CHECK: brne LBB0_1 +; CHECK: rjmp LBB0_2 +; LBB0_1: + +define i8 @relax_breq(i1 %a) { +entry-block: + br i1 %a, label %hello, label %finished + +hello: + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + br label %finished +finished: + ret i8 3 +} + +; CHECKC-LABEL: no_relax_breq +; CHECK: cpi r{{[0-9]+}}, 0 +; CHECK: breq [[END_BB:LBB[0-9]+_[0-9]+]] +; CHECK: nop +; ... +; LBB0_1: +define i8 @no_relax_breq(i1 %a) { +entry-block: + br i1 %a, label %hello, label %finished + +hello: + ; There are not enough NOPs to require relaxation. + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + call void asm sideeffect "nop", ""() + br label %finished +finished: + ret i8 3 +} + |