[llvm] [AVR] Fix a crash in AVRInstrInfo::insertIndirectBranch (PR #67324)
Ben Shi via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 25 05:40:46 PDT 2023
https://github.com/benshi001 created https://github.com/llvm/llvm-project/pull/67324
Fixes https://github.com/llvm/llvm-project/issues/67042
>From 0476827cfa6925983e6b728e3d0f018e5850d2c1 Mon Sep 17 00:00:00 2001
From: Ben Shi <bennshi at tencent.com>
Date: Mon, 25 Sep 2023 20:38:26 +0800
Subject: [PATCH] [AVR] Fix a crash in AVRInstrInfo::insertIndirectBranch
Fixes https://github.com/llvm/llvm-project/issues/67042
---
llvm/lib/Target/AVR/AVRInstrInfo.cpp | 2 +-
llvm/test/CodeGen/AVR/bug-67042.ll | 7633 ++++++++++++++++++++++++++
2 files changed, 7634 insertions(+), 1 deletion(-)
create mode 100644 llvm/test/CodeGen/AVR/bug-67042.ll
diff --git a/llvm/lib/Target/AVR/AVRInstrInfo.cpp b/llvm/lib/Target/AVR/AVRInstrInfo.cpp
index b9d27c78ce8e41e..5f66168d549f94c 100644
--- a/llvm/lib/Target/AVR/AVRInstrInfo.cpp
+++ b/llvm/lib/Target/AVR/AVRInstrInfo.cpp
@@ -573,7 +573,7 @@ void AVRInstrInfo::insertIndirectBranch(MachineBasicBlock &MBB,
if (STI.hasJMPCALL())
BuildMI(&MBB, DL, get(AVR::JMPk)).addMBB(&NewDestBB);
else
- report_fatal_error("cannot create long jump without FeatureJMPCALL");
+ BuildMI(&MBB, DL, get(AVR::RJMPk)).addMBB(&NewDestBB);
}
} // end of namespace llvm
diff --git a/llvm/test/CodeGen/AVR/bug-67042.ll b/llvm/test/CodeGen/AVR/bug-67042.ll
new file mode 100644
index 000000000000000..f2d8eb930cd39cb
--- /dev/null
+++ b/llvm/test/CodeGen/AVR/bug-67042.ll
@@ -0,0 +1,7633 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
+; RUN: llc < %s -mtriple=avr -mcpu=atmega328 | FileCheck %s --check-prefix=AVR51
+; RUN: llc < %s -mtriple=avr -mcpu=at90s8515 | FileCheck %s --check-prefix=AVR2
+
+; Test for bug https://github.com/llvm/llvm-project/issues/67042
+
+%struct.my_va_list = type { ptr }
+%union.anon = type { %struct.dtoa }
+%struct.dtoa = type { i32, i8, [18 x i8] }
+%struct.__file = type { i16, i8, ptr addrspace(1), ptr addrspace(1), ptr addrspace(1) }
+
+ at .str = private unnamed_addr constant [4 x i8] c"inf\00", align 1
+ at .str.1 = private unnamed_addr constant [4 x i8] c"nan\00", align 1
+ at .str.2 = private unnamed_addr constant [7 x i8] c"(null)\00", align 1
+
+define i16 @__d_vfprintf(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2) local_unnamed_addr addrspace(1) {
+; AVR51-LABEL: __d_vfprintf:
+; AVR51: ; %bb.0:
+; AVR51-NEXT: push r2
+; AVR51-NEXT: push r3
+; AVR51-NEXT: push r4
+; AVR51-NEXT: push r5
+; AVR51-NEXT: push r6
+; AVR51-NEXT: push r7
+; AVR51-NEXT: push r8
+; AVR51-NEXT: push r9
+; AVR51-NEXT: push r10
+; AVR51-NEXT: push r11
+; AVR51-NEXT: push r12
+; AVR51-NEXT: push r13
+; AVR51-NEXT: push r14
+; AVR51-NEXT: push r15
+; AVR51-NEXT: push r16
+; AVR51-NEXT: push r17
+; AVR51-NEXT: push r28
+; AVR51-NEXT: push r29
+; AVR51-NEXT: in r28, 61
+; AVR51-NEXT: in r29, 62
+; AVR51-NEXT: subi r28, 67
+; AVR51-NEXT: sbci r29, 0
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: cli
+; AVR51-NEXT: out 62, r29
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: out 61, r28
+; AVR51-NEXT: movw r10, r22
+; AVR51-NEXT: movw r6, r24
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 4
+; AVR51-NEXT: std Y+63, r21
+; AVR51-NEXT: std Y+62, r20
+; AVR51-NEXT: sbiw r28, 4
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: movw r30, r6
+; AVR51-NEXT: ldd r18, Z+2
+; AVR51-NEXT: andi r18, 2
+; AVR51-NEXT: ldi r24, 255
+; AVR51-NEXT: ldi r25, 255
+; AVR51-NEXT: cpi r18, 0
+; AVR51-NEXT: brne .LBB0_1
+; AVR51-NEXT: ; %bb.326:
+; AVR51-NEXT: jmp .LBB0_320
+; AVR51-NEXT: .LBB0_1:
+; AVR51-NEXT: movw r30, r6
+; AVR51-NEXT: ldd r4, Z+3
+; AVR51-NEXT: ldd r5, Z+4
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 4
+; AVR51-NEXT: ldd r18, Y+62
+; AVR51-NEXT: ldd r19, Y+63
+; AVR51-NEXT: sbiw r28, 4
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r19
+; AVR51-NEXT: std Y+62, r18
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: ldi r18, 0
+; AVR51-NEXT: ldi r19, 0
+; AVR51-NEXT: ldi r16, 10
+; AVR51-NEXT: std Y+40, r19 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r18 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r18, r10
+; AVR51-NEXT: std Y+31, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+30, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: .LBB0_2: ; =>This Loop Header: Depth=1
+; AVR51-NEXT: ; Child Loop BB0_9 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_113 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_116 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_135 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_143 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_152 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_171 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_198 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_206 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_216 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_242 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_255 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_273 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_267 Depth 2
+; AVR51-NEXT: ; Child Loop BB0_211 Depth 2
+; AVR51-NEXT: movw r26, r18
+; AVR51-NEXT: ld r24, X+
+; AVR51-NEXT: cpi r24, 37
+; AVR51-NEXT: breq .LBB0_4
+; AVR51-NEXT: ; %bb.3: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r24, 0
+; AVR51-NEXT: brne .LBB0_5
+; AVR51-NEXT: ; %bb.328:
+; AVR51-NEXT: jmp .LBB0_318
+; AVR51-NEXT: .LBB0_4: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r26, r18
+; AVR51-NEXT: movw r30, r26
+; AVR51-NEXT: ldd r25, Z+1
+; AVR51-NEXT: adiw r26, 2
+; AVR51-NEXT: cpi r25, 37
+; AVR51-NEXT: brne .LBB0_6
+; AVR51-NEXT: .LBB0_5: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r14, r26
+; AVR51-NEXT: ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r30, 1
+; AVR51-NEXT: std Y+40, r31 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r30 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: movw r18, r14
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_2
+; AVR51-NEXT: ; %bb.330:
+; AVR51-NEXT: jmp .LBB0_319
+; AVR51-NEXT: .LBB0_6: ; %.preheader24
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r18, 0
+; AVR51-NEXT: ldi r19, 0
+; AVR51-NEXT: movw r12, r18
+; AVR51-NEXT: movw r8, r18
+; AVR51-NEXT: movw r30, r18
+; AVR51-NEXT: movw r22, r18
+; AVR51-NEXT: rjmp .LBB0_9
+; AVR51-NEXT: .LBB0_7: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r20, r8
+; AVR51-NEXT: muls r21, r16
+; AVR51-NEXT: mov r18, r0
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: mul r20, r16
+; AVR51-NEXT: mov r20, r1
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: add r20, r18
+; AVR51-NEXT: mov r21, r20
+; AVR51-NEXT: clr r20
+; AVR51-NEXT: mov r8, r0
+; AVR51-NEXT: clr r9
+; AVR51-NEXT: or r8, r20
+; AVR51-NEXT: or r9, r21
+; AVR51-NEXT: add r8, r24
+; AVR51-NEXT: adc r9, r25
+; AVR51-NEXT: .LBB0_8: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: ld r25, X+
+; AVR51-NEXT: cpi r25, 0
+; AVR51-NEXT: mov r17, r1
+; AVR51-NEXT: brne .LBB0_9
+; AVR51-NEXT: rjmp .LBB0_65
+; AVR51-NEXT: .LBB0_9: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: cpi r22, 32
+; AVR51-NEXT: cpc r23, r1
+; AVR51-NEXT: brsh .LBB0_14
+; AVR51-NEXT: ; %bb.10: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 43
+; AVR51-NEXT: brlt .LBB0_11
+; AVR51-NEXT: rjmp .LBB0_18
+; AVR51-NEXT: .LBB0_11: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 32
+; AVR51-NEXT: brne .LBB0_12
+; AVR51-NEXT: rjmp .LBB0_44
+; AVR51-NEXT: .LBB0_12: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 35
+; AVR51-NEXT: brne .LBB0_13
+; AVR51-NEXT: rjmp .LBB0_42
+; AVR51-NEXT: .LBB0_13: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 39
+; AVR51-NEXT: breq .LBB0_8
+; AVR51-NEXT: rjmp .LBB0_15
+; AVR51-NEXT: .LBB0_14: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r22, -128
+; AVR51-NEXT: cpc r23, r1
+; AVR51-NEXT: brlo .LBB0_15
+; AVR51-NEXT: rjmp .LBB0_22
+; AVR51-NEXT: .LBB0_15: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: mov r24, r25
+; AVR51-NEXT: subi r24, 48
+; AVR51-NEXT: cpi r24, 10
+; AVR51-NEXT: brlo .LBB0_16
+; AVR51-NEXT: rjmp .LBB0_24
+; AVR51-NEXT: .LBB0_16: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: clr r25
+; AVR51-NEXT: movw r18, r22
+; AVR51-NEXT: andi r18, 64
+; AVR51-NEXT: andi r19, 0
+; AVR51-NEXT: cp r18, r1
+; AVR51-NEXT: cpc r19, r1
+; AVR51-NEXT: breq .LBB0_17
+; AVR51-NEXT: rjmp .LBB0_7
+; AVR51-NEXT: .LBB0_17: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: muls r31, r16
+; AVR51-NEXT: mov r18, r0
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: mul r30, r16
+; AVR51-NEXT: mov r20, r1
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: add r20, r18
+; AVR51-NEXT: mov r21, r20
+; AVR51-NEXT: clr r20
+; AVR51-NEXT: mov r30, r0
+; AVR51-NEXT: clr r31
+; AVR51-NEXT: or r30, r20
+; AVR51-NEXT: or r31, r21
+; AVR51-NEXT: add r30, r24
+; AVR51-NEXT: adc r31, r25
+; AVR51-NEXT: ori r22, 32
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_18: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 43
+; AVR51-NEXT: brne .LBB0_19
+; AVR51-NEXT: rjmp .LBB0_43
+; AVR51-NEXT: .LBB0_19: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 45
+; AVR51-NEXT: brne .LBB0_20
+; AVR51-NEXT: rjmp .LBB0_45
+; AVR51-NEXT: .LBB0_20: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 48
+; AVR51-NEXT: breq .LBB0_21
+; AVR51-NEXT: rjmp .LBB0_15
+; AVR51-NEXT: .LBB0_21: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: ori r22, 1
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_22: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 108
+; AVR51-NEXT: brge .LBB0_29
+; AVR51-NEXT: ; %bb.23: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 76
+; AVR51-NEXT: breq .LBB0_332
+; AVR51-NEXT: rjmp .LBB0_33
+; AVR51-NEXT: .LBB0_332: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: rjmp .LBB0_49
+; AVR51-NEXT: .LBB0_24: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 104
+; AVR51-NEXT: brge .LBB0_25
+; AVR51-NEXT: rjmp .LBB0_35
+; AVR51-NEXT: .LBB0_25: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 108
+; AVR51-NEXT: brlt .LBB0_33
+; AVR51-NEXT: ; %bb.26: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 108
+; AVR51-NEXT: breq .LBB0_32
+; AVR51-NEXT: ; %bb.27: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 116
+; AVR51-NEXT: brne .LBB0_28
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_28: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 122
+; AVR51-NEXT: brne .LBB0_321
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_321: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: rjmp .LBB0_64
+; AVR51-NEXT: .LBB0_29: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 122
+; AVR51-NEXT: brne .LBB0_30
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_30: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 116
+; AVR51-NEXT: brne .LBB0_31
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_31: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 108
+; AVR51-NEXT: breq .LBB0_32
+; AVR51-NEXT: rjmp .LBB0_64
+; AVR51-NEXT: .LBB0_32: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r24, r22
+; AVR51-NEXT: lsl r24
+; AVR51-NEXT: rol r25
+; AVR51-NEXT: lsl r24
+; AVR51-NEXT: rol r25
+; AVR51-NEXT: andi r24, 0
+; AVR51-NEXT: andi r25, 2
+; AVR51-NEXT: or r24, r22
+; AVR51-NEXT: or r25, r23
+; AVR51-NEXT: ori r24, 128
+; AVR51-NEXT: movw r22, r24
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_33: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 104
+; AVR51-NEXT: brne .LBB0_34
+; AVR51-NEXT: rjmp .LBB0_46
+; AVR51-NEXT: .LBB0_34: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 106
+; AVR51-NEXT: brne .LBB0_322
+; AVR51-NEXT: rjmp .LBB0_49
+; AVR51-NEXT: .LBB0_322: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: rjmp .LBB0_64
+; AVR51-NEXT: .LBB0_35: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 46
+; AVR51-NEXT: brlt .LBB0_36
+; AVR51-NEXT: rjmp .LBB0_47
+; AVR51-NEXT: .LBB0_36: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 36
+; AVR51-NEXT: brne .LBB0_37
+; AVR51-NEXT: rjmp .LBB0_50
+; AVR51-NEXT: .LBB0_37: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 42
+; AVR51-NEXT: breq .LBB0_38
+; AVR51-NEXT: rjmp .LBB0_64
+; AVR51-NEXT: .LBB0_38: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cp r12, r1
+; AVR51-NEXT: cpc r13, r1
+; AVR51-NEXT: breq .LBB0_39
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_39: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r20, r30
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: ldd r24, Y+62
+; AVR51-NEXT: ldd r25, Y+63
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: adiw r30, 2
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r31
+; AVR51-NEXT: std Y+62, r30
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: ld r24, Z
+; AVR51-NEXT: ldd r25, Z+1
+; AVR51-NEXT: movw r18, r22
+; AVR51-NEXT: andi r18, 64
+; AVR51-NEXT: andi r19, 0
+; AVR51-NEXT: cp r18, r1
+; AVR51-NEXT: cpc r19, r1
+; AVR51-NEXT: breq .LBB0_40
+; AVR51-NEXT: rjmp .LBB0_61
+; AVR51-NEXT: .LBB0_40: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: mov r18, r25
+; AVR51-NEXT: tst r18
+; AVR51-NEXT: brpl .LBB0_41
+; AVR51-NEXT: rjmp .LBB0_62
+; AVR51-NEXT: .LBB0_41: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: ori r22, 32
+; AVR51-NEXT: rjmp .LBB0_63
+; AVR51-NEXT: .LBB0_42: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: ori r22, 16
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_43: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: ori r22, 2
+; AVR51-NEXT: .LBB0_44: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: ori r22, 4
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_45: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: ori r22, 8
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_46: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r24, r22
+; AVR51-NEXT: lsl r24
+; AVR51-NEXT: rol r25
+; AVR51-NEXT: andi r24, 0
+; AVR51-NEXT: andi r25, 2
+; AVR51-NEXT: or r24, r22
+; AVR51-NEXT: or r25, r23
+; AVR51-NEXT: ori r25, 1
+; AVR51-NEXT: movw r22, r24
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_47: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 46
+; AVR51-NEXT: brne .LBB0_48
+; AVR51-NEXT: rjmp .LBB0_58
+; AVR51-NEXT: .LBB0_48: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cpi r25, 76
+; AVR51-NEXT: breq .LBB0_49
+; AVR51-NEXT: rjmp .LBB0_64
+; AVR51-NEXT: .LBB0_49: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: ori r22, 128
+; AVR51-NEXT: ori r23, 2
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_50: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cp r12, r1
+; AVR51-NEXT: cpc r13, r1
+; AVR51-NEXT: brne .LBB0_51
+; AVR51-NEXT: rjmp .LBB0_60
+; AVR51-NEXT: .LBB0_51: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r14, r26
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 4
+; AVR51-NEXT: ldd r24, Y+62
+; AVR51-NEXT: ldd r25, Y+63
+; AVR51-NEXT: sbiw r28, 4
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r25
+; AVR51-NEXT: std Y+62, r24
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: std Y+35, r23 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+34, r22 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r16, r22
+; AVR51-NEXT: andi r16, 64
+; AVR51-NEXT: andi r17, 0
+; AVR51-NEXT: cp r16, r1
+; AVR51-NEXT: cpc r17, r1
+; AVR51-NEXT: movw r2, r30
+; AVR51-NEXT: movw r20, r30
+; AVR51-NEXT: breq .LBB0_53
+; AVR51-NEXT: ; %bb.52: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r20, r8
+; AVR51-NEXT: .LBB0_53: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r22, r28
+; AVR51-NEXT: subi r22, 192
+; AVR51-NEXT: sbci r23, 255
+; AVR51-NEXT: movw r24, r10
+; AVR51-NEXT: call skip_to_arg
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: ldd r24, Y+62
+; AVR51-NEXT: ldd r25, Y+63
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: adiw r30, 2
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r31
+; AVR51-NEXT: std Y+62, r30
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: ld r18, Z
+; AVR51-NEXT: ldd r19, Z+1
+; AVR51-NEXT: cp r16, r1
+; AVR51-NEXT: cpc r17, r1
+; AVR51-NEXT: movw r24, r18
+; AVR51-NEXT: breq .LBB0_55
+; AVR51-NEXT: ; %bb.54: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r24, r2
+; AVR51-NEXT: .LBB0_55: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: cp r16, r1
+; AVR51-NEXT: cpc r17, r1
+; AVR51-NEXT: movw r26, r14
+; AVR51-NEXT: breq .LBB0_57
+; AVR51-NEXT: ; %bb.56: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r8, r18
+; AVR51-NEXT: .LBB0_57: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: ldi r16, 10
+; AVR51-NEXT: ldd r22, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r23, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_58: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r24, r22
+; AVR51-NEXT: andi r24, 64
+; AVR51-NEXT: andi r25, 0
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: breq .LBB0_59
+; AVR51-NEXT: rjmp .LBB0_318
+; AVR51-NEXT: .LBB0_59: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: ori r22, 64
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_60: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: movw r12, r30
+; AVR51-NEXT: ldi r24, 0
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r8, r24
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: movw r22, r24
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_61: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: ldi r18, 0
+; AVR51-NEXT: ldi r19, 0
+; AVR51-NEXT: movw r12, r18
+; AVR51-NEXT: movw r8, r24
+; AVR51-NEXT: movw r30, r20
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_62: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: neg r25
+; AVR51-NEXT: neg r24
+; AVR51-NEXT: sbc r25, r1
+; AVR51-NEXT: ori r22, 40
+; AVR51-NEXT: .LBB0_63: ; in Loop: Header=BB0_9 Depth=2
+; AVR51-NEXT: ldi r18, 0
+; AVR51-NEXT: ldi r19, 0
+; AVR51-NEXT: movw r12, r18
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: rjmp .LBB0_8
+; AVR51-NEXT: .LBB0_64: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r17, r25
+; AVR51-NEXT: .LBB0_65: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: std Y+29, r27 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+28, r26 ; 2-byte Folded Spill
+; AVR51-NEXT: cp r12, r1
+; AVR51-NEXT: cpc r13, r1
+; AVR51-NEXT: std Y+33, r31 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+32, r30 ; 2-byte Folded Spill
+; AVR51-NEXT: breq .LBB0_67
+; AVR51-NEXT: ; %bb.66: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 4
+; AVR51-NEXT: ldd r24, Y+62
+; AVR51-NEXT: ldd r25, Y+63
+; AVR51-NEXT: sbiw r28, 4
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r25
+; AVR51-NEXT: std Y+62, r24
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: movw r14, r22
+; AVR51-NEXT: movw r22, r28
+; AVR51-NEXT: subi r22, 192
+; AVR51-NEXT: sbci r23, 255
+; AVR51-NEXT: movw r24, r10
+; AVR51-NEXT: movw r20, r12
+; AVR51-NEXT: call skip_to_arg
+; AVR51-NEXT: movw r22, r14
+; AVR51-NEXT: ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT: .LBB0_67: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r1, r8
+; AVR51-NEXT: cpc r1, r9
+; AVR51-NEXT: movw r20, r8
+; AVR51-NEXT: brlt .LBB0_69
+; AVR51-NEXT: ; %bb.68: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 0
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r20, r24
+; AVR51-NEXT: .LBB0_69: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: tst r9
+; AVR51-NEXT: brpl .LBB0_71
+; AVR51-NEXT: ; %bb.70: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: andi r22, 191
+; AVR51-NEXT: .LBB0_71: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r26, r17
+; AVR51-NEXT: ori r26, 32
+; AVR51-NEXT: cpi r26, 97
+; AVR51-NEXT: breq .LBB0_78
+; AVR51-NEXT: ; %bb.72: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r24, r26
+; AVR51-NEXT: subi r24, 101
+; AVR51-NEXT: cpi r24, 3
+; AVR51-NEXT: brlo .LBB0_78
+; AVR51-NEXT: ; %bb.73: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r17, 111
+; AVR51-NEXT: brge .LBB0_74
+; AVR51-NEXT: rjmp .LBB0_89
+; AVR51-NEXT: .LBB0_74: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r17, 115
+; AVR51-NEXT: brlt .LBB0_75
+; AVR51-NEXT: rjmp .LBB0_92
+; AVR51-NEXT: .LBB0_75: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r17, 111
+; AVR51-NEXT: brne .LBB0_76
+; AVR51-NEXT: rjmp .LBB0_119
+; AVR51-NEXT: .LBB0_76: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r17, 112
+; AVR51-NEXT: breq .LBB0_77
+; AVR51-NEXT: rjmp .LBB0_118
+; AVR51-NEXT: .LBB0_77: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ori r22, 16
+; AVR51-NEXT: rjmp .LBB0_119
+; AVR51-NEXT: .LBB0_78: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: std Y+25, r21 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+24, r20 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+35, r23 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+34, r22 ; 2-byte Folded Spill
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: ldd r24, Y+62
+; AVR51-NEXT: ldd r25, Y+63
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: adiw r30, 2
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r31
+; AVR51-NEXT: std Y+62, r30
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: ld r18, Z
+; AVR51-NEXT: ldd r19, Z+1
+; AVR51-NEXT: mov r16, r26
+; AVR51-NEXT: movw r26, r24
+; AVR51-NEXT: adiw r26, 4
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r27
+; AVR51-NEXT: std Y+62, r26
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: ldd r14, Z+2
+; AVR51-NEXT: ldd r15, Z+3
+; AVR51-NEXT: movw r26, r24
+; AVR51-NEXT: adiw r26, 6
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r27
+; AVR51-NEXT: std Y+62, r26
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: mov r26, r16
+; AVR51-NEXT: ldd r22, Z+4
+; AVR51-NEXT: ldd r23, Z+5
+; AVR51-NEXT: adiw r24, 8
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r25
+; AVR51-NEXT: std Y+62, r24
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: mov r24, r26
+; AVR51-NEXT: sub r24, r17
+; AVR51-NEXT: std Y+36, r24 ; 1-byte Folded Spill
+; AVR51-NEXT: ldd r24, Z+6
+; AVR51-NEXT: ldd r25, Z+7
+; AVR51-NEXT: cpi r26, 97
+; AVR51-NEXT: std Y+23, r11 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+22, r10 ; 2-byte Folded Spill
+; AVR51-NEXT: breq .LBB0_79
+; AVR51-NEXT: rjmp .LBB0_84
+; AVR51-NEXT: .LBB0_79: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r17, 48
+; AVR51-NEXT: std Y+46, r17
+; AVR51-NEXT: mov r30, r24
+; AVR51-NEXT: swap r30
+; AVR51-NEXT: andi r30, 15
+; AVR51-NEXT: mov r31, r25
+; AVR51-NEXT: swap r31
+; AVR51-NEXT: eor r30, r31
+; AVR51-NEXT: andi r31, 15
+; AVR51-NEXT: eor r30, r31
+; AVR51-NEXT: andi r31, 7
+; AVR51-NEXT: std Y+21, r31 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+20, r30 ; 2-byte Folded Spill
+; AVR51-NEXT: or r30, r18
+; AVR51-NEXT: or r31, r19
+; AVR51-NEXT: movw r26, r24
+; AVR51-NEXT: andi r26, 15
+; AVR51-NEXT: andi r27, 0
+; AVR51-NEXT: ldi r24, 1
+; AVR51-NEXT: cp r30, r1
+; AVR51-NEXT: cpc r31, r1
+; AVR51-NEXT: ldi r20, 0
+; AVR51-NEXT: ldi r21, 0
+; AVR51-NEXT: cpc r14, r20
+; AVR51-NEXT: cpc r15, r21
+; AVR51-NEXT: cpc r22, r20
+; AVR51-NEXT: cpc r23, r21
+; AVR51-NEXT: std Y+38, r27 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+37, r26 ; 2-byte Folded Spill
+; AVR51-NEXT: cpc r26, r20
+; AVR51-NEXT: cpc r27, r21
+; AVR51-NEXT: ldd r30, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT: movw r26, r14
+; AVR51-NEXT: breq .LBB0_81
+; AVR51-NEXT: ; %bb.80: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r24, r1
+; AVR51-NEXT: .LBB0_81: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: andi r24, 1
+; AVR51-NEXT: cpi r24, 0
+; AVR51-NEXT: breq .LBB0_82
+; AVR51-NEXT: rjmp .LBB0_127
+; AVR51-NEXT: .LBB0_82: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r20, Y+20 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+21 ; 2-byte Folded Reload
+; AVR51-NEXT: cp r20, r1
+; AVR51-NEXT: cpc r21, r1
+; AVR51-NEXT: brne .LBB0_83
+; AVR51-NEXT: rjmp .LBB0_125
+; AVR51-NEXT: .LBB0_83: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r17, 49
+; AVR51-NEXT: std Y+46, r17
+; AVR51-NEXT: ldd r20, Y+20 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+21 ; 2-byte Folded Reload
+; AVR51-NEXT: rjmp .LBB0_126
+; AVR51-NEXT: .LBB0_84: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: andi r20, 64
+; AVR51-NEXT: andi r21, 0
+; AVR51-NEXT: cp r20, r1
+; AVR51-NEXT: cpc r21, r1
+; AVR51-NEXT: ldi r20, 6
+; AVR51-NEXT: ldi r21, 0
+; AVR51-NEXT: movw r2, r20
+; AVR51-NEXT: ldd r20, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT: breq .LBB0_86
+; AVR51-NEXT: ; %bb.85: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r2, r20
+; AVR51-NEXT: .LBB0_86: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r26, 102
+; AVR51-NEXT: mov r20, r26
+; AVR51-NEXT: movw r26, r14
+; AVR51-NEXT: brne .LBB0_87
+; AVR51-NEXT: rjmp .LBB0_95
+; AVR51-NEXT: .LBB0_87: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r20, 101
+; AVR51-NEXT: breq .LBB0_88
+; AVR51-NEXT: rjmp .LBB0_96
+; AVR51-NEXT: .LBB0_88: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: ori r21, 16
+; AVR51-NEXT: std Y+35, r21 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+34, r20 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r20, r2
+; AVR51-NEXT: mov r30, r20
+; AVR51-NEXT: inc r30
+; AVR51-NEXT: ldi r20, 101
+; AVR51-NEXT: std Y+37, r20 ; 1-byte Folded Spill
+; AVR51-NEXT: rjmp .LBB0_99
+; AVR51-NEXT: .LBB0_89: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r17, 99
+; AVR51-NEXT: brne .LBB0_90
+; AVR51-NEXT: rjmp .LBB0_102
+; AVR51-NEXT: .LBB0_90: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r17, 100
+; AVR51-NEXT: brne .LBB0_91
+; AVR51-NEXT: rjmp .LBB0_119
+; AVR51-NEXT: .LBB0_91: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r17, 105
+; AVR51-NEXT: brne .LBB0_323
+; AVR51-NEXT: rjmp .LBB0_119
+; AVR51-NEXT: .LBB0_323: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: rjmp .LBB0_118
+; AVR51-NEXT: .LBB0_92: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r17, 115
+; AVR51-NEXT: brne .LBB0_93
+; AVR51-NEXT: rjmp .LBB0_103
+; AVR51-NEXT: .LBB0_93: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r17, 117
+; AVR51-NEXT: breq .LBB0_94
+; AVR51-NEXT: rjmp .LBB0_118
+; AVR51-NEXT: .LBB0_94: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: andi r22, 239
+; AVR51-NEXT: rjmp .LBB0_119
+; AVR51-NEXT: .LBB0_95: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: ori r21, 32
+; AVR51-NEXT: std Y+35, r21 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+34, r20 ; 2-byte Folded Spill
+; AVR51-NEXT: ldi r20, 102
+; AVR51-NEXT: std Y+37, r20 ; 1-byte Folded Spill
+; AVR51-NEXT: ldi r31, 1
+; AVR51-NEXT: ldi r30, 17
+; AVR51-NEXT: movw r10, r2
+; AVR51-NEXT: cpi r30, 17
+; AVR51-NEXT: brsh .LBB0_100
+; AVR51-NEXT: rjmp .LBB0_101
+; AVR51-NEXT: .LBB0_96: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r30, 1
+; AVR51-NEXT: movw r20, r2
+; AVR51-NEXT: cpi r20, 0
+; AVR51-NEXT: breq .LBB0_98
+; AVR51-NEXT: ; %bb.97: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r20, r2
+; AVR51-NEXT: mov r30, r20
+; AVR51-NEXT: .LBB0_98: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: subi r16, 2
+; AVR51-NEXT: std Y+37, r16 ; 1-byte Folded Spill
+; AVR51-NEXT: .LBB0_99: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r20, 0
+; AVR51-NEXT: ldi r21, 0
+; AVR51-NEXT: movw r10, r20
+; AVR51-NEXT: mov r31, r1
+; AVR51-NEXT: cpi r30, 17
+; AVR51-NEXT: brlo .LBB0_101
+; AVR51-NEXT: .LBB0_100: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r30, 17
+; AVR51-NEXT: .LBB0_101: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r14, r30
+; AVR51-NEXT: clr r15
+; AVR51-NEXT: movw r16, r28
+; AVR51-NEXT: subi r16, 215
+; AVR51-NEXT: sbci r17, 255
+; AVR51-NEXT: movw r20, r26
+; AVR51-NEXT: mov r12, r31
+; AVR51-NEXT: call __dtoa_engine
+; AVR51-NEXT: movw r26, r24
+; AVR51-NEXT: ldi r24, 2
+; AVR51-NEXT: ldd r18, Y+45
+; AVR51-NEXT: std Y+27, r19 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+26, r18 ; 2-byte Folded Spill
+; AVR51-NEXT: ldd r22, Y+41
+; AVR51-NEXT: ldd r23, Y+42
+; AVR51-NEXT: ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: rjmp .LBB0_181
+; AVR51-NEXT: .LBB0_102: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: ldd r26, Y+62
+; AVR51-NEXT: ldd r27, Y+63
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: movw r24, r26
+; AVR51-NEXT: adiw r24, 2
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r25
+; AVR51-NEXT: std Y+62, r24
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: ld r24, X
+; AVR51-NEXT: std Y+41, r24
+; AVR51-NEXT: movw r24, r28
+; AVR51-NEXT: adiw r24, 41
+; AVR51-NEXT: movw r12, r24
+; AVR51-NEXT: ldi r18, 1
+; AVR51-NEXT: ldi r19, 0
+; AVR51-NEXT: rjmp .LBB0_108
+; AVR51-NEXT: .LBB0_103: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: ldd r24, Y+62
+; AVR51-NEXT: ldd r25, Y+63
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: adiw r30, 2
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r31
+; AVR51-NEXT: std Y+62, r30
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: movw r14, r22
+; AVR51-NEXT: movw r18, r22
+; AVR51-NEXT: andi r18, 64
+; AVR51-NEXT: andi r19, 0
+; AVR51-NEXT: cp r18, r1
+; AVR51-NEXT: cpc r19, r1
+; AVR51-NEXT: ldi r22, 255
+; AVR51-NEXT: ldi r23, 255
+; AVR51-NEXT: breq .LBB0_105
+; AVR51-NEXT: ; %bb.104: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r22, r20
+; AVR51-NEXT: .LBB0_105: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: ld r24, Z
+; AVR51-NEXT: ldd r25, Z+1
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: ldi r18, lo8(.str.2)
+; AVR51-NEXT: ldi r19, hi8(.str.2)
+; AVR51-NEXT: breq .LBB0_107
+; AVR51-NEXT: ; %bb.106: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r18, r24
+; AVR51-NEXT: .LBB0_107: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r12, r18
+; AVR51-NEXT: movw r24, r18
+; AVR51-NEXT: call strnlen
+; AVR51-NEXT: movw r18, r24
+; AVR51-NEXT: ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT: movw r22, r14
+; AVR51-NEXT: .LBB0_108: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: andi r22, 8
+; AVR51-NEXT: andi r23, 0
+; AVR51-NEXT: cp r22, r1
+; AVR51-NEXT: cpc r23, r1
+; AVR51-NEXT: brne .LBB0_115
+; AVR51-NEXT: ; %bb.109: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r30, r18
+; AVR51-NEXT: cpc r31, r19
+; AVR51-NEXT: movw r16, r30
+; AVR51-NEXT: brlo .LBB0_113
+; AVR51-NEXT: ; %bb.110: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r16, r18
+; AVR51-NEXT: rjmp .LBB0_113
+; AVR51-NEXT: .LBB0_111: ; in Loop: Header=BB0_113 Depth=2
+; AVR51-NEXT: movw r8, r18
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: ldi r24, 32
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_112
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_112: ; in Loop: Header=BB0_113 Depth=2
+; AVR51-NEXT: movw r30, r14
+; AVR51-NEXT: sbiw r30, 1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r18, r8
+; AVR51-NEXT: .LBB0_113: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: cp r18, r30
+; AVR51-NEXT: cpc r19, r31
+; AVR51-NEXT: brlo .LBB0_111
+; AVR51-NEXT: ; %bb.114: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r30, r16
+; AVR51-NEXT: ldi r16, 10
+; AVR51-NEXT: .LBB0_115: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: add r24, r18
+; AVR51-NEXT: adc r25, r19
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: sub r30, r18
+; AVR51-NEXT: sbc r31, r19
+; AVR51-NEXT: .LBB0_116: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: cp r18, r1
+; AVR51-NEXT: cpc r19, r1
+; AVR51-NEXT: brne .LBB0_117
+; AVR51-NEXT: rjmp .LBB0_211
+; AVR51-NEXT: .LBB0_117: ; in Loop: Header=BB0_116 Depth=2
+; AVR51-NEXT: std Y+38, r19 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+37, r18 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r26, r12
+; AVR51-NEXT: ld r24, X+
+; AVR51-NEXT: movw r12, r26
+; AVR51-NEXT: ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT: sbiw r26, 1
+; AVR51-NEXT: std Y+38, r27 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+37, r26 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: ldd r18, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r19, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT: movw r30, r14
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_116
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_118: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r26, 120
+; AVR51-NEXT: breq .LBB0_119
+; AVR51-NEXT: rjmp .LBB0_137
+; AVR51-NEXT: .LBB0_119: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r22
+; AVR51-NEXT: andi r24, 128
+; AVR51-NEXT: andi r25, 0
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: brne .LBB0_121
+; AVR51-NEXT: ; %bb.120: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: ldd r24, Y+62
+; AVR51-NEXT: ldd r25, Y+63
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: adiw r24, 2
+; AVR51-NEXT: rjmp .LBB0_124
+; AVR51-NEXT: .LBB0_121: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: andi r22, 0
+; AVR51-NEXT: andi r23, 2
+; AVR51-NEXT: cp r1, r1
+; AVR51-NEXT: cpc r23, r1
+; AVR51-NEXT: brne .LBB0_123
+; AVR51-NEXT: ; %bb.122: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: ldd r24, Y+62
+; AVR51-NEXT: ldd r25, Y+63
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: adiw r24, 4
+; AVR51-NEXT: rjmp .LBB0_124
+; AVR51-NEXT: .LBB0_123: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: ldd r24, Y+62
+; AVR51-NEXT: ldd r25, Y+63
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: adiw r24, 8
+; AVR51-NEXT: .LBB0_124: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: adiw r28, 2
+; AVR51-NEXT: std Y+63, r25
+; AVR51-NEXT: std Y+62, r24
+; AVR51-NEXT: sbiw r28, 2
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: rjmp .LBB0_211
+; AVR51-NEXT: .LBB0_125: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r20, 1
+; AVR51-NEXT: ldi r21, 0
+; AVR51-NEXT: .LBB0_126: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: subi r20, 255
+; AVR51-NEXT: sbci r21, 3
+; AVR51-NEXT: std Y+21, r21 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+20, r20 ; 2-byte Folded Spill
+; AVR51-NEXT: .LBB0_127: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: lsl r25
+; AVR51-NEXT: mov r20, r1
+; AVR51-NEXT: rol r20
+; AVR51-NEXT: mov r24, r20
+; AVR51-NEXT: std Y+27, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+26, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+45, r20
+; AVR51-NEXT: ldd r24, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: andi r24, 64
+; AVR51-NEXT: andi r25, 0
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: brne .LBB0_129
+; AVR51-NEXT: ; %bb.128: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 0
+; AVR51-NEXT: rjmp .LBB0_131
+; AVR51-NEXT: .LBB0_129: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r30, 13
+; AVR51-NEXT: cpc r31, r1
+; AVR51-NEXT: brlo .LBB0_132
+; AVR51-NEXT: ; %bb.130: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 13
+; AVR51-NEXT: .LBB0_131: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r10, r24
+; AVR51-NEXT: rjmp .LBB0_163
+; AVR51-NEXT: .LBB0_132: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: std Y+3, r17 ; 1-byte Folded Spill
+; AVR51-NEXT: std Y+19, r27 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+18, r26 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+15, r5 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+14, r4 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+13, r7 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+12, r6 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r20, r30
+; AVR51-NEXT: lsl r20
+; AVR51-NEXT: rol r21
+; AVR51-NEXT: lsl r20
+; AVR51-NEXT: rol r21
+; AVR51-NEXT: ldi r24, 51
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: mov r16, r20
+; AVR51-NEXT: std Y+2, r17 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+1, r16 ; 2-byte Folded Spill
+; AVR51-NEXT: sub r24, r20
+; AVR51-NEXT: sbc r25, r21
+; AVR51-NEXT: cpi r24, 0
+; AVR51-NEXT: brne .LBB0_133
+; AVR51-NEXT: rjmp .LBB0_139
+; AVR51-NEXT: .LBB0_133: ; %shift.loop.preheader
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r25, r30
+; AVR51-NEXT: lsl r25
+; AVR51-NEXT: lsl r25
+; AVR51-NEXT: subi r25, 51
+; AVR51-NEXT: ldi r30, 1
+; AVR51-NEXT: ldi r31, 0
+; AVR51-NEXT: movw r20, r30
+; AVR51-NEXT: ldi r30, 0
+; AVR51-NEXT: ldi r31, 0
+; AVR51-NEXT: movw r2, r30
+; AVR51-NEXT: movw r12, r2
+; AVR51-NEXT: movw r10, r2
+; AVR51-NEXT: rjmp .LBB0_135
+; AVR51-NEXT: .LBB0_134: ; %shift.loop
+; AVR51-NEXT: ; in Loop: Header=BB0_135 Depth=2
+; AVR51-NEXT: mov r31, r13
+; AVR51-NEXT: lsl r31
+; AVR51-NEXT: mov r16, r1
+; AVR51-NEXT: rol r16
+; AVR51-NEXT: mov r17, r1
+; AVR51-NEXT: mov r8, r1
+; AVR51-NEXT: mov r9, r1
+; AVR51-NEXT: lsl r10
+; AVR51-NEXT: rol r11
+; AVR51-NEXT: rol r2
+; AVR51-NEXT: rol r3
+; AVR51-NEXT: or r2, r8
+; AVR51-NEXT: or r3, r9
+; AVR51-NEXT: or r10, r16
+; AVR51-NEXT: or r11, r17
+; AVR51-NEXT: lsl r20
+; AVR51-NEXT: rol r21
+; AVR51-NEXT: rol r12
+; AVR51-NEXT: rol r13
+; AVR51-NEXT: cpi r30, 1
+; AVR51-NEXT: brne .LBB0_135
+; AVR51-NEXT: rjmp .LBB0_140
+; AVR51-NEXT: .LBB0_135: ; %shift.loop
+; AVR51-NEXT: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: inc r25
+; AVR51-NEXT: ldi r30, 1
+; AVR51-NEXT: cpi r25, 0
+; AVR51-NEXT: breq .LBB0_134
+; AVR51-NEXT: ; %bb.136: ; %shift.loop
+; AVR51-NEXT: ; in Loop: Header=BB0_135 Depth=2
+; AVR51-NEXT: mov r30, r1
+; AVR51-NEXT: rjmp .LBB0_134
+; AVR51-NEXT: .LBB0_137: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 37
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_138
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_138: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 2
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: mov r24, r17
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: ldd r18, Y+28 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r19, Y+29 ; 2-byte Folded Reload
+; AVR51-NEXT: brmi .LBB0_324
+; AVR51-NEXT: rjmp .LBB0_2
+; AVR51-NEXT: .LBB0_324:
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_139: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r30, 1
+; AVR51-NEXT: ldi r31, 0
+; AVR51-NEXT: movw r20, r30
+; AVR51-NEXT: ldi r30, 0
+; AVR51-NEXT: ldi r31, 0
+; AVR51-NEXT: movw r2, r30
+; AVR51-NEXT: movw r12, r2
+; AVR51-NEXT: movw r10, r2
+; AVR51-NEXT: .LBB0_140: ; %shift.done
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r24, 0
+; AVR51-NEXT: std Y+17, r21 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+16, r20 ; 2-byte Folded Spill
+; AVR51-NEXT: brne .LBB0_141
+; AVR51-NEXT: rjmp .LBB0_145
+; AVR51-NEXT: .LBB0_141: ; %shift.loop2.preheader
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT: mov r30, r24
+; AVR51-NEXT: lsl r30
+; AVR51-NEXT: lsl r30
+; AVR51-NEXT: subi r30, 51
+; AVR51-NEXT: ldi r24, 2
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r8, r24
+; AVR51-NEXT: ldi r24, 0
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r4, r24
+; AVR51-NEXT: movw r16, r4
+; AVR51-NEXT: rjmp .LBB0_143
+; AVR51-NEXT: .LBB0_142: ; %shift.loop2
+; AVR51-NEXT: ; in Loop: Header=BB0_143 Depth=2
+; AVR51-NEXT: mov r7, r17
+; AVR51-NEXT: lsl r7
+; AVR51-NEXT: mov r6, r1
+; AVR51-NEXT: rol r6
+; AVR51-NEXT: mov r7, r1
+; AVR51-NEXT: mov r14, r1
+; AVR51-NEXT: mov r15, r1
+; AVR51-NEXT: lsl r24
+; AVR51-NEXT: rol r25
+; AVR51-NEXT: rol r4
+; AVR51-NEXT: rol r5
+; AVR51-NEXT: or r4, r14
+; AVR51-NEXT: or r5, r15
+; AVR51-NEXT: or r24, r6
+; AVR51-NEXT: or r25, r7
+; AVR51-NEXT: lsl r8
+; AVR51-NEXT: rol r9
+; AVR51-NEXT: rol r16
+; AVR51-NEXT: rol r17
+; AVR51-NEXT: cpi r31, 1
+; AVR51-NEXT: breq .LBB0_146
+; AVR51-NEXT: .LBB0_143: ; %shift.loop2
+; AVR51-NEXT: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: inc r30
+; AVR51-NEXT: ldi r31, 1
+; AVR51-NEXT: cpi r30, 0
+; AVR51-NEXT: breq .LBB0_142
+; AVR51-NEXT: ; %bb.144: ; %shift.loop2
+; AVR51-NEXT: ; in Loop: Header=BB0_143 Depth=2
+; AVR51-NEXT: mov r31, r1
+; AVR51-NEXT: rjmp .LBB0_142
+; AVR51-NEXT: .LBB0_145: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 2
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r8, r24
+; AVR51-NEXT: ldi r24, 0
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r4, r24
+; AVR51-NEXT: movw r16, r4
+; AVR51-NEXT: .LBB0_146: ; %shift.done1
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r26, r8
+; AVR51-NEXT: subi r26, 1
+; AVR51-NEXT: sbci r27, 0
+; AVR51-NEXT: movw r30, r16
+; AVR51-NEXT: sbci r30, 0
+; AVR51-NEXT: sbci r31, 0
+; AVR51-NEXT: movw r20, r30
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: sbci r30, 0
+; AVR51-NEXT: sbci r31, 0
+; AVR51-NEXT: movw r6, r30
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: sbci r30, 0
+; AVR51-NEXT: sbci r31, 0
+; AVR51-NEXT: and r26, r18
+; AVR51-NEXT: and r27, r19
+; AVR51-NEXT: std Y+11, r27 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+10, r26 ; 2-byte Folded Spill
+; AVR51-NEXT: ldd r26, Y+18 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r27, Y+19 ; 2-byte Folded Reload
+; AVR51-NEXT: and r20, r26
+; AVR51-NEXT: and r21, r27
+; AVR51-NEXT: std Y+9, r21 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+8, r20 ; 2-byte Folded Spill
+; AVR51-NEXT: and r6, r22
+; AVR51-NEXT: and r7, r23
+; AVR51-NEXT: ldd r14, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r15, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT: and r30, r14
+; AVR51-NEXT: and r31, r15
+; AVR51-NEXT: ldi r26, 1
+; AVR51-NEXT: ldd r14, Y+16 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r15, Y+17 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r20, Y+10 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+11 ; 2-byte Folded Reload
+; AVR51-NEXT: cp r14, r20
+; AVR51-NEXT: cpc r15, r21
+; AVR51-NEXT: ldd r20, Y+8 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+9 ; 2-byte Folded Reload
+; AVR51-NEXT: cpc r12, r20
+; AVR51-NEXT: cpc r13, r21
+; AVR51-NEXT: cpc r10, r6
+; AVR51-NEXT: cpc r11, r7
+; AVR51-NEXT: cpc r2, r30
+; AVR51-NEXT: cpc r3, r31
+; AVR51-NEXT: brlo .LBB0_148
+; AVR51-NEXT: ; %bb.147: ; %shift.done1
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r26, r1
+; AVR51-NEXT: .LBB0_148: ; %shift.done1
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: andi r26, 1
+; AVR51-NEXT: ldi r30, 0
+; AVR51-NEXT: ldi r31, 0
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: sub r14, r8
+; AVR51-NEXT: sbc r15, r9
+; AVR51-NEXT: std Y+11, r15 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+10, r14 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: sbc r14, r16
+; AVR51-NEXT: sbc r15, r17
+; AVR51-NEXT: std Y+9, r15 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+8, r14 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r16, r30
+; AVR51-NEXT: sbc r16, r24
+; AVR51-NEXT: sbc r17, r25
+; AVR51-NEXT: std Y+7, r17 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+6, r16 ; 2-byte Folded Spill
+; AVR51-NEXT: sbc r30, r4
+; AVR51-NEXT: sbc r31, r5
+; AVR51-NEXT: std Y+5, r31 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+4, r30 ; 2-byte Folded Spill
+; AVR51-NEXT: cpi r26, 0
+; AVR51-NEXT: ldd r20, Y+16 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+17 ; 2-byte Folded Reload
+; AVR51-NEXT: breq .LBB0_149
+; AVR51-NEXT: rjmp .LBB0_158
+; AVR51-NEXT: .LBB0_149: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+1 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+2 ; 2-byte Folded Reload
+; AVR51-NEXT: cpi r24, 52
+; AVR51-NEXT: brne .LBB0_150
+; AVR51-NEXT: rjmp .LBB0_154
+; AVR51-NEXT: .LBB0_150: ; %shift.loop4.preheader
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT: mov r30, r24
+; AVR51-NEXT: lsl r30
+; AVR51-NEXT: lsl r30
+; AVR51-NEXT: subi r30, 52
+; AVR51-NEXT: ldi r24, 1
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: ldi r16, 0
+; AVR51-NEXT: ldi r17, 0
+; AVR51-NEXT: movw r4, r16
+; AVR51-NEXT: movw r8, r4
+; AVR51-NEXT: rjmp .LBB0_152
+; AVR51-NEXT: .LBB0_151: ; %shift.loop4
+; AVR51-NEXT: ; in Loop: Header=BB0_152 Depth=2
+; AVR51-NEXT: mov r15, r17
+; AVR51-NEXT: lsl r15
+; AVR51-NEXT: mov r14, r1
+; AVR51-NEXT: rol r14
+; AVR51-NEXT: mov r15, r1
+; AVR51-NEXT: mov r6, r1
+; AVR51-NEXT: mov r7, r1
+; AVR51-NEXT: lsl r8
+; AVR51-NEXT: rol r9
+; AVR51-NEXT: rol r4
+; AVR51-NEXT: rol r5
+; AVR51-NEXT: or r4, r6
+; AVR51-NEXT: or r5, r7
+; AVR51-NEXT: or r8, r14
+; AVR51-NEXT: or r9, r15
+; AVR51-NEXT: lsl r24
+; AVR51-NEXT: rol r25
+; AVR51-NEXT: rol r16
+; AVR51-NEXT: rol r17
+; AVR51-NEXT: cpi r31, 1
+; AVR51-NEXT: breq .LBB0_155
+; AVR51-NEXT: .LBB0_152: ; %shift.loop4
+; AVR51-NEXT: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: inc r30
+; AVR51-NEXT: ldi r31, 1
+; AVR51-NEXT: cpi r30, 0
+; AVR51-NEXT: breq .LBB0_151
+; AVR51-NEXT: ; %bb.153: ; %shift.loop4
+; AVR51-NEXT: ; in Loop: Header=BB0_152 Depth=2
+; AVR51-NEXT: mov r31, r1
+; AVR51-NEXT: rjmp .LBB0_151
+; AVR51-NEXT: .LBB0_154: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 1
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: ldi r30, 0
+; AVR51-NEXT: ldi r31, 0
+; AVR51-NEXT: movw r4, r30
+; AVR51-NEXT: movw r16, r4
+; AVR51-NEXT: movw r8, r4
+; AVR51-NEXT: .LBB0_155: ; %shift.done3
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r30, Y+18 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+19 ; 2-byte Folded Reload
+; AVR51-NEXT: and r16, r30
+; AVR51-NEXT: and r17, r31
+; AVR51-NEXT: and r8, r22
+; AVR51-NEXT: and r9, r23
+; AVR51-NEXT: ldd r30, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT: and r4, r30
+; AVR51-NEXT: and r5, r31
+; AVR51-NEXT: and r24, r18
+; AVR51-NEXT: and r25, r19
+; AVR51-NEXT: ldi r30, 1
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: ldi r24, 0
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: cpc r16, r24
+; AVR51-NEXT: cpc r17, r25
+; AVR51-NEXT: cpc r8, r24
+; AVR51-NEXT: cpc r9, r25
+; AVR51-NEXT: cpc r4, r24
+; AVR51-NEXT: cpc r5, r25
+; AVR51-NEXT: breq .LBB0_157
+; AVR51-NEXT: ; %bb.156: ; %shift.done3
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r30, r1
+; AVR51-NEXT: .LBB0_157: ; %shift.done3
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: andi r30, 1
+; AVR51-NEXT: cpi r30, 0
+; AVR51-NEXT: breq .LBB0_158
+; AVR51-NEXT: rjmp .LBB0_162
+; AVR51-NEXT: .LBB0_158: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: add r18, r20
+; AVR51-NEXT: adc r19, r21
+; AVR51-NEXT: ldd r16, Y+18 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r17, Y+19 ; 2-byte Folded Reload
+; AVR51-NEXT: adc r16, r12
+; AVR51-NEXT: adc r17, r13
+; AVR51-NEXT: adc r22, r10
+; AVR51-NEXT: adc r23, r11
+; AVR51-NEXT: ldd r14, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r15, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT: adc r14, r2
+; AVR51-NEXT: adc r15, r3
+; AVR51-NEXT: ldi r24, 1
+; AVR51-NEXT: cp r18, r1
+; AVR51-NEXT: cpc r19, r1
+; AVR51-NEXT: ldi r30, 0
+; AVR51-NEXT: ldi r31, 0
+; AVR51-NEXT: std Y+19, r17 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+18, r16 ; 2-byte Folded Spill
+; AVR51-NEXT: cpc r16, r30
+; AVR51-NEXT: cpc r17, r31
+; AVR51-NEXT: cpc r22, r30
+; AVR51-NEXT: cpc r23, r31
+; AVR51-NEXT: ldi r30, 16
+; AVR51-NEXT: ldi r31, 0
+; AVR51-NEXT: std Y+38, r15 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+37, r14 ; 2-byte Folded Spill
+; AVR51-NEXT: cpc r14, r30
+; AVR51-NEXT: cpc r15, r31
+; AVR51-NEXT: brlo .LBB0_160
+; AVR51-NEXT: ; %bb.159: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r24, r1
+; AVR51-NEXT: .LBB0_160: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: andi r24, 1
+; AVR51-NEXT: cpi r24, 0
+; AVR51-NEXT: ldd r24, Y+3 ; 1-byte Folded Reload
+; AVR51-NEXT: brne .LBB0_162
+; AVR51-NEXT: ; %bb.161: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: inc r24
+; AVR51-NEXT: std Y+46, r24
+; AVR51-NEXT: .LBB0_162: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+10 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+11 ; 2-byte Folded Reload
+; AVR51-NEXT: and r18, r24
+; AVR51-NEXT: and r19, r25
+; AVR51-NEXT: ldd r26, Y+18 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r27, Y+19 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r24, Y+8 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+9 ; 2-byte Folded Reload
+; AVR51-NEXT: and r26, r24
+; AVR51-NEXT: and r27, r25
+; AVR51-NEXT: ldd r24, Y+6 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+7 ; 2-byte Folded Reload
+; AVR51-NEXT: and r22, r24
+; AVR51-NEXT: and r23, r25
+; AVR51-NEXT: ldd r24, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r20, Y+4 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+5 ; 2-byte Folded Reload
+; AVR51-NEXT: and r24, r20
+; AVR51-NEXT: and r25, r21
+; AVR51-NEXT: std Y+38, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+37, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: ldd r6, Y+12 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r7, Y+13 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r4, Y+14 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r5, Y+15 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r10, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r11, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT: .LBB0_163: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: ori r25, 24
+; AVR51-NEXT: movw r12, r24
+; AVR51-NEXT: ldd r24, Y+20 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+21 ; 2-byte Folded Reload
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: ldi r24, 4
+; AVR51-NEXT: cpc r25, r24
+; AVR51-NEXT: brne .LBB0_168
+; AVR51-NEXT: ; %bb.164: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 1
+; AVR51-NEXT: cp r18, r1
+; AVR51-NEXT: cpc r19, r1
+; AVR51-NEXT: ldi r18, 0
+; AVR51-NEXT: ldi r19, 0
+; AVR51-NEXT: cpc r26, r18
+; AVR51-NEXT: cpc r27, r19
+; AVR51-NEXT: cpc r22, r18
+; AVR51-NEXT: cpc r23, r19
+; AVR51-NEXT: ldd r20, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT: cpc r20, r18
+; AVR51-NEXT: cpc r21, r19
+; AVR51-NEXT: breq .LBB0_166
+; AVR51-NEXT: ; %bb.165: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r24, r1
+; AVR51-NEXT: .LBB0_166: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: andi r24, 1
+; AVR51-NEXT: cpi r24, 0
+; AVR51-NEXT: movw r20, r12
+; AVR51-NEXT: ldd r24, Y+26 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+27 ; 2-byte Folded Reload
+; AVR51-NEXT: breq .LBB0_167
+; AVR51-NEXT: rjmp .LBB0_179
+; AVR51-NEXT: .LBB0_167: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ori r24, 8
+; AVR51-NEXT: rjmp .LBB0_180
+; AVR51-NEXT: .LBB0_168: ; %.preheader18
+; AVR51-NEXT: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r25, 13
+; AVR51-NEXT: rjmp .LBB0_171
+; AVR51-NEXT: .LBB0_169: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT: movw r26, r2
+; AVR51-NEXT: .LBB0_170: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT: mov r17, r19
+; AVR51-NEXT: mov r20, r1
+; AVR51-NEXT: mov r19, r1
+; AVR51-NEXT: mov r18, r1
+; AVR51-NEXT: or r26, r20
+; AVR51-NEXT: or r27, r21
+; AVR51-NEXT: or r18, r16
+; AVR51-NEXT: or r19, r17
+; AVR51-NEXT: dec r25
+; AVR51-NEXT: .LBB0_171: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: cpi r25, 0
+; AVR51-NEXT: brne .LBB0_172
+; AVR51-NEXT: rjmp .LBB0_178
+; AVR51-NEXT: .LBB0_172: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT: mov r16, r18
+; AVR51-NEXT: swap r16
+; AVR51-NEXT: andi r16, 15
+; AVR51-NEXT: swap r19
+; AVR51-NEXT: eor r16, r19
+; AVR51-NEXT: andi r19, 15
+; AVR51-NEXT: eor r16, r19
+; AVR51-NEXT: swap r26
+; AVR51-NEXT: eor r19, r26
+; AVR51-NEXT: andi r26, 15
+; AVR51-NEXT: eor r19, r26
+; AVR51-NEXT: swap r27
+; AVR51-NEXT: eor r26, r27
+; AVR51-NEXT: andi r27, 15
+; AVR51-NEXT: eor r26, r27
+; AVR51-NEXT: swap r22
+; AVR51-NEXT: mov r21, r22
+; AVR51-NEXT: andi r21, 240
+; AVR51-NEXT: andi r22, 15
+; AVR51-NEXT: swap r23
+; AVR51-NEXT: eor r22, r23
+; AVR51-NEXT: andi r23, 15
+; AVR51-NEXT: eor r22, r23
+; AVR51-NEXT: ldd r30, Y+37 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+38 ; 2-byte Folded Reload
+; AVR51-NEXT: swap r30
+; AVR51-NEXT: eor r23, r30
+; AVR51-NEXT: andi r30, 15
+; AVR51-NEXT: eor r23, r30
+; AVR51-NEXT: swap r31
+; AVR51-NEXT: eor r30, r31
+; AVR51-NEXT: andi r31, 15
+; AVR51-NEXT: eor r30, r31
+; AVR51-NEXT: std Y+38, r31 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+37, r30 ; 2-byte Folded Spill
+; AVR51-NEXT: mov r14, r25
+; AVR51-NEXT: clr r15
+; AVR51-NEXT: andi r18, 15
+; AVR51-NEXT: cpi r18, 0
+; AVR51-NEXT: brne .LBB0_174
+; AVR51-NEXT: ; %bb.173: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT: cp r10, r14
+; AVR51-NEXT: cpc r11, r15
+; AVR51-NEXT: brge .LBB0_174
+; AVR51-NEXT: rjmp .LBB0_170
+; AVR51-NEXT: .LBB0_174: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT: movw r2, r26
+; AVR51-NEXT: mov r24, r18
+; AVR51-NEXT: ori r24, 48
+; AVR51-NEXT: cpi r18, 10
+; AVR51-NEXT: brlo .LBB0_176
+; AVR51-NEXT: ; %bb.175: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT: ldd r24, Y+36 ; 1-byte Folded Reload
+; AVR51-NEXT: sub r18, r24
+; AVR51-NEXT: subi r18, -87
+; AVR51-NEXT: mov r24, r18
+; AVR51-NEXT: .LBB0_176: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT: movw r30, r28
+; AVR51-NEXT: adiw r30, 41
+; AVR51-NEXT: add r30, r14
+; AVR51-NEXT: adc r31, r15
+; AVR51-NEXT: std Z+5, r24
+; AVR51-NEXT: cp r14, r10
+; AVR51-NEXT: cpc r15, r11
+; AVR51-NEXT: brge .LBB0_177
+; AVR51-NEXT: rjmp .LBB0_169
+; AVR51-NEXT: .LBB0_177: ; in Loop: Header=BB0_171 Depth=2
+; AVR51-NEXT: movw r10, r14
+; AVR51-NEXT: rjmp .LBB0_169
+; AVR51-NEXT: .LBB0_178: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 112
+; AVR51-NEXT: std Y+37, r24 ; 1-byte Folded Spill
+; AVR51-NEXT: ldi r26, 14
+; AVR51-NEXT: ldi r24, 1
+; AVR51-NEXT: movw r2, r10
+; AVR51-NEXT: movw r20, r12
+; AVR51-NEXT: ldd r22, Y+20 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r23, Y+21 ; 2-byte Folded Reload
+; AVR51-NEXT: rjmp .LBB0_181
+; AVR51-NEXT: .LBB0_179: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ori r24, 4
+; AVR51-NEXT: .LBB0_180: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r18, r24
+; AVR51-NEXT: std Y+27, r19 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+26, r18 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+45, r24
+; AVR51-NEXT: ldi r24, 112
+; AVR51-NEXT: std Y+37, r24 ; 1-byte Folded Spill
+; AVR51-NEXT: ldi r26, 14
+; AVR51-NEXT: ldi r24, 1
+; AVR51-NEXT: ldi r18, 0
+; AVR51-NEXT: ldi r19, 4
+; AVR51-NEXT: movw r22, r18
+; AVR51-NEXT: movw r2, r10
+; AVR51-NEXT: .LBB0_181: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r30, r22
+; AVR51-NEXT: sbiw r30, 10
+; AVR51-NEXT: ldi r25, 2
+; AVR51-NEXT: cpi r30, -19
+; AVR51-NEXT: ldi r18, -1
+; AVR51-NEXT: cpc r31, r18
+; AVR51-NEXT: ldd r10, Y+22 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r11, Y+23 ; 2-byte Folded Reload
+; AVR51-NEXT: brlo .LBB0_183
+; AVR51-NEXT: ; %bb.182: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r25, r24
+; AVR51-NEXT: .LBB0_183: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r18, r22
+; AVR51-NEXT: subi r18, 100
+; AVR51-NEXT: sbci r19, 0
+; AVR51-NEXT: ldi r27, 3
+; AVR51-NEXT: cpi r18, 57
+; AVR51-NEXT: ldi r24, -1
+; AVR51-NEXT: std Y+25, r19 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+24, r18 ; 2-byte Folded Spill
+; AVR51-NEXT: cpc r19, r24
+; AVR51-NEXT: ldi r16, 10
+; AVR51-NEXT: ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r18, Y+26 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r19, Y+27 ; 2-byte Folded Reload
+; AVR51-NEXT: brlo .LBB0_185
+; AVR51-NEXT: ; %bb.184: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r27, r25
+; AVR51-NEXT: .LBB0_185: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r24, r18
+; AVR51-NEXT: andi r24, 1
+; AVR51-NEXT: cpi r24, 0
+; AVR51-NEXT: brne .LBB0_190
+; AVR51-NEXT: ; %bb.186: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r20
+; AVR51-NEXT: andi r24, 2
+; AVR51-NEXT: andi r25, 0
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: brne .LBB0_191
+; AVR51-NEXT: ; %bb.187: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r20
+; AVR51-NEXT: andi r24, 4
+; AVR51-NEXT: andi r25, 0
+; AVR51-NEXT: ldi r17, 1
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: breq .LBB0_189
+; AVR51-NEXT: ; %bb.188: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r17, r1
+; AVR51-NEXT: .LBB0_189: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: lsl r24
+; AVR51-NEXT: lsl r24
+; AVR51-NEXT: lsl r24
+; AVR51-NEXT: rjmp .LBB0_193
+; AVR51-NEXT: .LBB0_190: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 45
+; AVR51-NEXT: rjmp .LBB0_192
+; AVR51-NEXT: .LBB0_191: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 43
+; AVR51-NEXT: .LBB0_192: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r17, r1
+; AVR51-NEXT: .LBB0_193: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r13, r24
+; AVR51-NEXT: andi r18, 12
+; AVR51-NEXT: cpi r18, 0
+; AVR51-NEXT: brne .LBB0_194
+; AVR51-NEXT: rjmp .LBB0_208
+; AVR51-NEXT: .LBB0_194: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r24, r17
+; AVR51-NEXT: andi r24, 1
+; AVR51-NEXT: cpi r24, 0
+; AVR51-NEXT: ldi r24, 3
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: brne .LBB0_196
+; AVR51-NEXT: ; %bb.195: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 4
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: .LBB0_196: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r24, r30
+; AVR51-NEXT: cpc r25, r31
+; AVR51-NEXT: brge .LBB0_200
+; AVR51-NEXT: ; %bb.197: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: sub r30, r24
+; AVR51-NEXT: sbc r31, r25
+; AVR51-NEXT: andi r20, 8
+; AVR51-NEXT: andi r21, 0
+; AVR51-NEXT: cp r20, r1
+; AVR51-NEXT: cpc r21, r1
+; AVR51-NEXT: brne .LBB0_201
+; AVR51-NEXT: .LBB0_198: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: ldi r24, 32
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_199
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_199: ; in Loop: Header=BB0_198 Depth=2
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r30, r14
+; AVR51-NEXT: sbiw r30, 1
+; AVR51-NEXT: cp r30, r1
+; AVR51-NEXT: cpc r31, r1
+; AVR51-NEXT: brne .LBB0_198
+; AVR51-NEXT: .LBB0_200: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 0
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: .LBB0_201: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: andi r17, 1
+; AVR51-NEXT: cpi r17, 0
+; AVR51-NEXT: mov r24, r13
+; AVR51-NEXT: brne .LBB0_204
+; AVR51-NEXT: ; %bb.202: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_203
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_203: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r30, r14
+; AVR51-NEXT: .LBB0_204: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: ldd r24, Y+45
+; AVR51-NEXT: andi r24, 8
+; AVR51-NEXT: cpi r24, 0
+; AVR51-NEXT: ldi r24, lo8(.str)
+; AVR51-NEXT: ldi r25, hi8(.str)
+; AVR51-NEXT: movw r26, r24
+; AVR51-NEXT: breq .LBB0_206
+; AVR51-NEXT: ; %bb.205: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, lo8(.str.1)
+; AVR51-NEXT: ldi r25, hi8(.str.1)
+; AVR51-NEXT: movw r26, r24
+; AVR51-NEXT: .LBB0_206: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: ld r24, X
+; AVR51-NEXT: cpi r24, 0
+; AVR51-NEXT: breq .LBB0_210
+; AVR51-NEXT: ; %bb.207: ; in Loop: Header=BB0_206 Depth=2
+; AVR51-NEXT: ldd r25, Y+36 ; 1-byte Folded Reload
+; AVR51-NEXT: sub r24, r25
+; AVR51-NEXT: ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r30, 1
+; AVR51-NEXT: std Y+40, r31 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r30 ; 2-byte Folded Spill
+; AVR51-NEXT: adiw r26, 1
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: movw r12, r26
+; AVR51-NEXT: icall
+; AVR51-NEXT: movw r26, r12
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_206
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_208: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r20
+; AVR51-NEXT: andi r24, 0
+; AVR51-NEXT: andi r25, 48
+; AVR51-NEXT: cp r1, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: breq .LBB0_214
+; AVR51-NEXT: ; %bb.209: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r30, r2
+; AVR51-NEXT: rjmp .LBB0_227
+; AVR51-NEXT: .LBB0_210: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r30, r14
+; AVR51-NEXT: .LBB0_211: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: cp r1, r30
+; AVR51-NEXT: cpc r1, r31
+; AVR51-NEXT: brge .LBB0_213
+; AVR51-NEXT: ; %bb.212: ; in Loop: Header=BB0_211 Depth=2
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: sbiw r30, 1
+; AVR51-NEXT: ldi r24, 32
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: movw r30, r14
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_211
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_213: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r18, Y+28 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r19, Y+29 ; 2-byte Folded Reload
+; AVR51-NEXT: rjmp .LBB0_2
+; AVR51-NEXT: .LBB0_214: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r2
+; AVR51-NEXT: cpi r24, 2
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: brsh .LBB0_216
+; AVR51-NEXT: ; %bb.215: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 1
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r2, r24
+; AVR51-NEXT: .LBB0_216: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: mov r30, r26
+; AVR51-NEXT: clr r31
+; AVR51-NEXT: cpi r26, 0
+; AVR51-NEXT: breq .LBB0_219
+; AVR51-NEXT: ; %bb.217: ; in Loop: Header=BB0_216 Depth=2
+; AVR51-NEXT: movw r24, r28
+; AVR51-NEXT: adiw r24, 41
+; AVR51-NEXT: add r24, r30
+; AVR51-NEXT: adc r25, r31
+; AVR51-NEXT: movw r18, r30
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: ldd r24, Z+4
+; AVR51-NEXT: movw r30, r18
+; AVR51-NEXT: cpi r24, 48
+; AVR51-NEXT: brne .LBB0_219
+; AVR51-NEXT: ; %bb.218: ; in Loop: Header=BB0_216 Depth=2
+; AVR51-NEXT: dec r26
+; AVR51-NEXT: rjmp .LBB0_216
+; AVR51-NEXT: .LBB0_219: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r20
+; AVR51-NEXT: andi r24, 16
+; AVR51-NEXT: andi r25, 0
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: breq .LBB0_221
+; AVR51-NEXT: ; %bb.220: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r30, r2
+; AVR51-NEXT: .LBB0_221: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r22, -4
+; AVR51-NEXT: ldi r24, -1
+; AVR51-NEXT: cpc r23, r24
+; AVR51-NEXT: brlt .LBB0_225
+; AVR51-NEXT: ; %bb.222: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r22, r2
+; AVR51-NEXT: cpc r23, r3
+; AVR51-NEXT: brge .LBB0_225
+; AVR51-NEXT: ; %bb.223: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ori r21, 32
+; AVR51-NEXT: cp r22, r30
+; AVR51-NEXT: cpc r23, r31
+; AVR51-NEXT: brge .LBB0_226
+; AVR51-NEXT: ; %bb.224: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r22
+; AVR51-NEXT: com r24
+; AVR51-NEXT: com r25
+; AVR51-NEXT: add r30, r24
+; AVR51-NEXT: adc r31, r25
+; AVR51-NEXT: rjmp .LBB0_227
+; AVR51-NEXT: .LBB0_225: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: sbiw r30, 1
+; AVR51-NEXT: rjmp .LBB0_227
+; AVR51-NEXT: .LBB0_226: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 0
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: .LBB0_227: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r22
+; AVR51-NEXT: subi r24, 232
+; AVR51-NEXT: sbci r25, 3
+; AVR51-NEXT: movw r18, r20
+; AVR51-NEXT: andi r18, 0
+; AVR51-NEXT: andi r19, 32
+; AVR51-NEXT: cp r1, r1
+; AVR51-NEXT: movw r8, r18
+; AVR51-NEXT: cpc r19, r1
+; AVR51-NEXT: mov r12, r26
+; AVR51-NEXT: std Y+27, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+26, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: brne .LBB0_233
+; AVR51-NEXT: ; %bb.228: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r24, 49
+; AVR51-NEXT: ldi r24, -8
+; AVR51-NEXT: cpc r25, r24
+; AVR51-NEXT: ldi r18, 4
+; AVR51-NEXT: ldi r19, 0
+; AVR51-NEXT: brlo .LBB0_230
+; AVR51-NEXT: ; %bb.229: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r18, r27
+; AVR51-NEXT: clr r19
+; AVR51-NEXT: .LBB0_230: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r20
+; AVR51-NEXT: andi r24, 0
+; AVR51-NEXT: andi r25, 8
+; AVR51-NEXT: cp r1, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: ldi r24, 3
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: breq .LBB0_232
+; AVR51-NEXT: ; %bb.231: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 5
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: .LBB0_232: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: add r24, r18
+; AVR51-NEXT: adc r25, r19
+; AVR51-NEXT: rjmp .LBB0_235
+; AVR51-NEXT: .LBB0_233: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r1, r22
+; AVR51-NEXT: cpc r1, r23
+; AVR51-NEXT: ldi r24, 1
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: brge .LBB0_235
+; AVR51-NEXT: ; %bb.234: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r22
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: .LBB0_235: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r30, r1
+; AVR51-NEXT: cpc r31, r1
+; AVR51-NEXT: movw r10, r30
+; AVR51-NEXT: breq .LBB0_237
+; AVR51-NEXT: ; %bb.236: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: adiw r30, 1
+; AVR51-NEXT: rjmp .LBB0_238
+; AVR51-NEXT: .LBB0_237: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r30, r20
+; AVR51-NEXT: swap r31
+; AVR51-NEXT: swap r30
+; AVR51-NEXT: andi r30, 15
+; AVR51-NEXT: eor r30, r31
+; AVR51-NEXT: andi r31, 15
+; AVR51-NEXT: eor r30, r31
+; AVR51-NEXT: andi r30, 1
+; AVR51-NEXT: andi r31, 0
+; AVR51-NEXT: .LBB0_238: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: mov r18, r17
+; AVR51-NEXT: com r18
+; AVR51-NEXT: andi r18, 1
+; AVR51-NEXT: andi r19, 0
+; AVR51-NEXT: add r18, r30
+; AVR51-NEXT: adc r19, r31
+; AVR51-NEXT: add r18, r24
+; AVR51-NEXT: adc r19, r25
+; AVR51-NEXT: ldd r24, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: sub r30, r18
+; AVR51-NEXT: sbc r31, r19
+; AVR51-NEXT: cp r18, r24
+; AVR51-NEXT: cpc r19, r25
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: brlt .LBB0_240
+; AVR51-NEXT: ; %bb.239: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 0
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: .LBB0_240: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r20
+; AVR51-NEXT: andi r24, 9
+; AVR51-NEXT: andi r25, 0
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: std Y+35, r21 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+34, r20 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r2, r22
+; AVR51-NEXT: std Y+20, r27 ; 1-byte Folded Spill
+; AVR51-NEXT: mov r18, r12
+; AVR51-NEXT: brne .LBB0_245
+; AVR51-NEXT: ; %bb.241: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r30, r1
+; AVR51-NEXT: cpc r31, r1
+; AVR51-NEXT: breq .LBB0_245
+; AVR51-NEXT: .LBB0_242: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: ldi r24, 32
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_243
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_243: ; in Loop: Header=BB0_242 Depth=2
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r24, r14
+; AVR51-NEXT: sbiw r24, 1
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: movw r14, r24
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: brne .LBB0_242
+; AVR51-NEXT: ; %bb.244: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 0
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: movw r22, r2
+; AVR51-NEXT: mov r18, r12
+; AVR51-NEXT: .LBB0_245: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: andi r17, 1
+; AVR51-NEXT: cpi r17, 0
+; AVR51-NEXT: mov r24, r13
+; AVR51-NEXT: brne .LBB0_248
+; AVR51-NEXT: ; %bb.246: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_247
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_247: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r30, r14
+; AVR51-NEXT: ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: movw r22, r2
+; AVR51-NEXT: mov r18, r12
+; AVR51-NEXT: .LBB0_248: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r20
+; AVR51-NEXT: andi r24, 0
+; AVR51-NEXT: andi r25, 8
+; AVR51-NEXT: cp r1, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: breq .LBB0_252
+; AVR51-NEXT: ; %bb.249: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: ldi r24, 48
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_250
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_250: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 120
+; AVR51-NEXT: ldd r25, Y+36 ; 1-byte Folded Reload
+; AVR51-NEXT: sub r24, r25
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_251
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_251: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 2
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r30, r14
+; AVR51-NEXT: ldd r20, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r21, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: movw r22, r2
+; AVR51-NEXT: mov r18, r12
+; AVR51-NEXT: .LBB0_252: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r20
+; AVR51-NEXT: andi r24, 8
+; AVR51-NEXT: andi r25, 0
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: brne .LBB0_258
+; AVR51-NEXT: ; %bb.253: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r30, r1
+; AVR51-NEXT: cpc r31, r1
+; AVR51-NEXT: breq .LBB0_258
+; AVR51-NEXT: ; %bb.254: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: add r24, r30
+; AVR51-NEXT: adc r25, r31
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: .LBB0_255: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: ldi r24, 48
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_256
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_256: ; in Loop: Header=BB0_255 Depth=2
+; AVR51-NEXT: movw r30, r14
+; AVR51-NEXT: sbiw r30, 1
+; AVR51-NEXT: cp r30, r1
+; AVR51-NEXT: cpc r31, r1
+; AVR51-NEXT: brne .LBB0_255
+; AVR51-NEXT: ; %bb.257: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 0
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: movw r22, r2
+; AVR51-NEXT: mov r18, r12
+; AVR51-NEXT: .LBB0_258: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: std Y+33, r31 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+32, r30 ; 2-byte Folded Spill
+; AVR51-NEXT: cp r8, r1
+; AVR51-NEXT: cpc r9, r1
+; AVR51-NEXT: breq .LBB0_259
+; AVR51-NEXT: rjmp .LBB0_270
+; AVR51-NEXT: .LBB0_259: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+46
+; AVR51-NEXT: cpi r24, 49
+; AVR51-NEXT: breq .LBB0_261
+; AVR51-NEXT: ; %bb.260: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r25, Y+45
+; AVR51-NEXT: andi r25, -17
+; AVR51-NEXT: std Y+45, r25
+; AVR51-NEXT: .LBB0_261: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_262
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_262: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r10
+; AVR51-NEXT: cp r1, r24
+; AVR51-NEXT: cpc r1, r25
+; AVR51-NEXT: brlt .LBB0_263
+; AVR51-NEXT: rjmp .LBB0_286
+; AVR51-NEXT: .LBB0_263: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 46
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_264
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_264: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 2
+; AVR51-NEXT: movw r14, r24
+; AVR51-NEXT: ldi r17, 1
+; AVR51-NEXT: movw r18, r10
+; AVR51-NEXT: rjmp .LBB0_267
+; AVR51-NEXT: .LBB0_265: ; in Loop: Header=BB0_267 Depth=2
+; AVR51-NEXT: movw r18, r28
+; AVR51-NEXT: subi r18, 215
+; AVR51-NEXT: sbci r19, 255
+; AVR51-NEXT: add r18, r24
+; AVR51-NEXT: adc r19, r25
+; AVR51-NEXT: movw r30, r18
+; AVR51-NEXT: ldd r24, Z+5
+; AVR51-NEXT: .LBB0_266: ; in Loop: Header=BB0_267 Depth=2
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: movw r30, r14
+; AVR51-NEXT: adiw r30, 1
+; AVR51-NEXT: movw r14, r30
+; AVR51-NEXT: inc r17
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: movw r18, r10
+; AVR51-NEXT: brpl .LBB0_267
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_267: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: mov r24, r17
+; AVR51-NEXT: clr r25
+; AVR51-NEXT: cp r18, r24
+; AVR51-NEXT: cpc r19, r25
+; AVR51-NEXT: brge .LBB0_268
+; AVR51-NEXT: rjmp .LBB0_288
+; AVR51-NEXT: .LBB0_268: ; in Loop: Header=BB0_267 Depth=2
+; AVR51-NEXT: mov r18, r12
+; AVR51-NEXT: cp r17, r18
+; AVR51-NEXT: brlo .LBB0_265
+; AVR51-NEXT: ; %bb.269: ; in Loop: Header=BB0_267 Depth=2
+; AVR51-NEXT: ldi r24, 48
+; AVR51-NEXT: rjmp .LBB0_266
+; AVR51-NEXT: .LBB0_270: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r1, r22
+; AVR51-NEXT: cpc r1, r23
+; AVR51-NEXT: movw r16, r22
+; AVR51-NEXT: brlt .LBB0_272
+; AVR51-NEXT: ; %bb.271: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r16, 0
+; AVR51-NEXT: ldi r17, 0
+; AVR51-NEXT: .LBB0_272: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: neg r11
+; AVR51-NEXT: neg r10
+; AVR51-NEXT: sbc r11, r1
+; AVR51-NEXT: mov r14, r18
+; AVR51-NEXT: clr r15
+; AVR51-NEXT: movw r12, r10
+; AVR51-NEXT: .LBB0_273: ; Parent Loop BB0_2 Depth=1
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR51-NEXT: cpi r16, -1
+; AVR51-NEXT: ldi r24, -1
+; AVR51-NEXT: cpc r17, r24
+; AVR51-NEXT: brne .LBB0_276
+; AVR51-NEXT: ; %bb.274: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT: ldi r24, 46
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_275
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_275: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r10, r12
+; AVR51-NEXT: .LBB0_276: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT: movw r20, r2
+; AVR51-NEXT: movw r18, r20
+; AVR51-NEXT: sub r18, r16
+; AVR51-NEXT: sbc r19, r17
+; AVR51-NEXT: ldi r24, 48
+; AVR51-NEXT: mov r25, r19
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brmi .LBB0_279
+; AVR51-NEXT: ; %bb.277: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT: cp r18, r14
+; AVR51-NEXT: cpc r19, r15
+; AVR51-NEXT: brge .LBB0_279
+; AVR51-NEXT: ; %bb.278: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT: movw r24, r28
+; AVR51-NEXT: adiw r24, 41
+; AVR51-NEXT: add r24, r18
+; AVR51-NEXT: adc r25, r19
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: ldd r24, Z+5
+; AVR51-NEXT: movw r10, r12
+; AVR51-NEXT: .LBB0_279: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT: movw r30, r16
+; AVR51-NEXT: sbiw r30, 1
+; AVR51-NEXT: cp r10, r16
+; AVR51-NEXT: cpc r11, r17
+; AVR51-NEXT: brge .LBB0_281
+; AVR51-NEXT: ; %bb.280: ; in Loop: Header=BB0_273 Depth=2
+; AVR51-NEXT: movw r16, r30
+; AVR51-NEXT: ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r30, 1
+; AVR51-NEXT: std Y+40, r31 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r30 ; 2-byte Folded Spill
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: movw r10, r12
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brmi .LBB0_325
+; AVR51-NEXT: rjmp .LBB0_273
+; AVR51-NEXT: .LBB0_325:
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_281: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r30, r20
+; AVR51-NEXT: cpc r31, r21
+; AVR51-NEXT: brne .LBB0_289
+; AVR51-NEXT: ; %bb.282: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r25, Y+46
+; AVR51-NEXT: cpi r25, 54
+; AVR51-NEXT: ldd r10, Y+22 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r11, Y+23 ; 2-byte Folded Reload
+; AVR51-NEXT: brge .LBB0_285
+; AVR51-NEXT: ; %bb.283: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cpi r25, 53
+; AVR51-NEXT: brne .LBB0_290
+; AVR51-NEXT: ; %bb.284: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r25, Y+45
+; AVR51-NEXT: andi r25, 16
+; AVR51-NEXT: cpi r25, 0
+; AVR51-NEXT: brne .LBB0_290
+; AVR51-NEXT: .LBB0_285: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 49
+; AVR51-NEXT: rjmp .LBB0_290
+; AVR51-NEXT: .LBB0_286: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: andi r24, 16
+; AVR51-NEXT: andi r25, 0
+; AVR51-NEXT: cp r24, r1
+; AVR51-NEXT: cpc r25, r1
+; AVR51-NEXT: breq .LBB0_287
+; AVR51-NEXT: rjmp .LBB0_296
+; AVR51-NEXT: .LBB0_287: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: rjmp .LBB0_298
+; AVR51-NEXT: .LBB0_288: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r16, 10
+; AVR51-NEXT: rjmp .LBB0_299
+; AVR51-NEXT: .LBB0_289: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r10, Y+22 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r11, Y+23 ; 2-byte Folded Reload
+; AVR51-NEXT: .LBB0_290: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_291
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_291: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: ldd r18, Y+34 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r19, Y+35 ; 2-byte Folded Reload
+; AVR51-NEXT: andi r18, 16
+; AVR51-NEXT: andi r19, 0
+; AVR51-NEXT: cp r18, r1
+; AVR51-NEXT: cpc r19, r1
+; AVR51-NEXT: breq .LBB0_295
+; AVR51-NEXT: ; %bb.292: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r16, r1
+; AVR51-NEXT: cpc r17, r1
+; AVR51-NEXT: brne .LBB0_295
+; AVR51-NEXT: ; %bb.293: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 46
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: ldi r16, 10
+; AVR51-NEXT: brpl .LBB0_294
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_294: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 2
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT: rjmp .LBB0_211
+; AVR51-NEXT: .LBB0_295: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: ldi r16, 10
+; AVR51-NEXT: ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT: rjmp .LBB0_211
+; AVR51-NEXT: .LBB0_296: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 46
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_297
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_297: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: adiw r24, 2
+; AVR51-NEXT: .LBB0_298: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r14, r24
+; AVR51-NEXT: .LBB0_299: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r25, Y+37 ; 1-byte Folded Reload
+; AVR51-NEXT: ldd r24, Y+36 ; 1-byte Folded Reload
+; AVR51-NEXT: sub r25, r24
+; AVR51-NEXT: mov r24, r25
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_300
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_300: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r18, r2
+; AVR51-NEXT: mov r24, r19
+; AVR51-NEXT: tst r24
+; AVR51-NEXT: brmi .LBB0_305
+; AVR51-NEXT: ; %bb.301: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: cp r18, r1
+; AVR51-NEXT: cpc r19, r1
+; AVR51-NEXT: breq .LBB0_303
+; AVR51-NEXT: ; %bb.302: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 43
+; AVR51-NEXT: rjmp .LBB0_306
+; AVR51-NEXT: .LBB0_303: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+45
+; AVR51-NEXT: andi r24, 16
+; AVR51-NEXT: cpi r24, 0
+; AVR51-NEXT: brne .LBB0_305
+; AVR51-NEXT: ; %bb.304: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 43
+; AVR51-NEXT: ldi r18, 0
+; AVR51-NEXT: ldi r19, 0
+; AVR51-NEXT: movw r2, r18
+; AVR51-NEXT: rjmp .LBB0_306
+; AVR51-NEXT: .LBB0_305: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: neg r19
+; AVR51-NEXT: neg r18
+; AVR51-NEXT: sbc r19, r1
+; AVR51-NEXT: movw r2, r18
+; AVR51-NEXT: ldi r24, 45
+; AVR51-NEXT: .LBB0_306: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_307
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_307: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r24, Y+26 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+27 ; 2-byte Folded Reload
+; AVR51-NEXT: cpi r24, 49
+; AVR51-NEXT: ldi r24, -8
+; AVR51-NEXT: cpc r25, r24
+; AVR51-NEXT: brlo .LBB0_308
+; AVR51-NEXT: rjmp .LBB0_310
+; AVR51-NEXT: .LBB0_308: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r10, r2
+; AVR51-NEXT: movw r24, r10
+; AVR51-NEXT: ldi r22, 232
+; AVR51-NEXT: ldi r23, 3
+; AVR51-NEXT: call __udivmodhi4
+; AVR51-NEXT: movw r16, r22
+; AVR51-NEXT: mov r24, r16
+; AVR51-NEXT: subi r24, -48
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_309
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_309: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r24, 3
+; AVR51-NEXT: muls r16, r24
+; AVR51-NEXT: mov r24, r0
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: ldi r19, -24
+; AVR51-NEXT: mul r16, r19
+; AVR51-NEXT: mov r25, r0
+; AVR51-NEXT: mov r18, r1
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: add r18, r24
+; AVR51-NEXT: muls r17, r19
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: mov r20, r0
+; AVR51-NEXT: add r20, r18
+; AVR51-NEXT: mov r21, r20
+; AVR51-NEXT: clr r20
+; AVR51-NEXT: mov r24, r25
+; AVR51-NEXT: clr r25
+; AVR51-NEXT: or r24, r20
+; AVR51-NEXT: or r25, r21
+; AVR51-NEXT: sub r10, r24
+; AVR51-NEXT: sbc r11, r25
+; AVR51-NEXT: movw r24, r14
+; AVR51-NEXT: adiw r24, 3
+; AVR51-NEXT: movw r14, r24
+; AVR51-NEXT: movw r24, r10
+; AVR51-NEXT: rjmp .LBB0_311
+; AVR51-NEXT: .LBB0_310: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r14
+; AVR51-NEXT: adiw r24, 2
+; AVR51-NEXT: movw r14, r24
+; AVR51-NEXT: ldd r24, Y+24 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+25 ; 2-byte Folded Reload
+; AVR51-NEXT: cpi r24, 57
+; AVR51-NEXT: ldi r24, -1
+; AVR51-NEXT: cpc r25, r24
+; AVR51-NEXT: movw r24, r2
+; AVR51-NEXT: brlo .LBB0_311
+; AVR51-NEXT: rjmp .LBB0_317
+; AVR51-NEXT: .LBB0_311: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r10, r24
+; AVR51-NEXT: ldi r22, 100
+; AVR51-NEXT: ldi r23, 0
+; AVR51-NEXT: call __udivmodhi4
+; AVR51-NEXT: movw r16, r22
+; AVR51-NEXT: mov r24, r16
+; AVR51-NEXT: subi r24, -48
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_312
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_312: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r25, 100
+; AVR51-NEXT: muls r17, r25
+; AVR51-NEXT: mov r24, r0
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: mul r16, r25
+; AVR51-NEXT: mov r18, r1
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: add r18, r24
+; AVR51-NEXT: mov r19, r18
+; AVR51-NEXT: clr r18
+; AVR51-NEXT: mov r24, r0
+; AVR51-NEXT: clr r25
+; AVR51-NEXT: or r24, r18
+; AVR51-NEXT: or r25, r19
+; AVR51-NEXT: sub r10, r24
+; AVR51-NEXT: sbc r11, r25
+; AVR51-NEXT: movw r24, r14
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: movw r14, r24
+; AVR51-NEXT: movw r24, r10
+; AVR51-NEXT: .LBB0_313: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r10, r24
+; AVR51-NEXT: ldi r22, 10
+; AVR51-NEXT: ldi r23, 0
+; AVR51-NEXT: call __udivmodhi4
+; AVR51-NEXT: movw r16, r22
+; AVR51-NEXT: mov r24, r16
+; AVR51-NEXT: subi r24, -48
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brpl .LBB0_314
+; AVR51-NEXT: rjmp .LBB0_319
+; AVR51-NEXT: .LBB0_314: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldi r25, 10
+; AVR51-NEXT: muls r17, r25
+; AVR51-NEXT: mov r24, r0
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: mul r16, r25
+; AVR51-NEXT: ldi r16, 10
+; AVR51-NEXT: mov r18, r1
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: add r18, r24
+; AVR51-NEXT: mov r19, r18
+; AVR51-NEXT: clr r18
+; AVR51-NEXT: movw r24, r0
+; AVR51-NEXT: or r24, r18
+; AVR51-NEXT: or r25, r19
+; AVR51-NEXT: sub r10, r24
+; AVR51-NEXT: sbc r11, r25
+; AVR51-NEXT: movw r24, r14
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: movw r14, r24
+; AVR51-NEXT: mov r24, r10
+; AVR51-NEXT: .LBB0_315: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: subi r24, -48
+; AVR51-NEXT: movw r22, r6
+; AVR51-NEXT: movw r30, r4
+; AVR51-NEXT: icall
+; AVR51-NEXT: tst r25
+; AVR51-NEXT: brmi .LBB0_319
+; AVR51-NEXT: ; %bb.316: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: movw r24, r14
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: ldd r30, Y+32 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r31, Y+33 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r10, Y+22 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r11, Y+23 ; 2-byte Folded Reload
+; AVR51-NEXT: rjmp .LBB0_211
+; AVR51-NEXT: .LBB0_317: ; in Loop: Header=BB0_2 Depth=1
+; AVR51-NEXT: ldd r18, Y+20 ; 1-byte Folded Reload
+; AVR51-NEXT: cpi r18, 2
+; AVR51-NEXT: brlo .LBB0_315
+; AVR51-NEXT: rjmp .LBB0_313
+; AVR51-NEXT: .LBB0_318:
+; AVR51-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR51-NEXT: std Y+31, r25 ; 2-byte Folded Spill
+; AVR51-NEXT: std Y+30, r24 ; 2-byte Folded Spill
+; AVR51-NEXT: .LBB0_319:
+; AVR51-NEXT: ldd r24, Y+30 ; 2-byte Folded Reload
+; AVR51-NEXT: ldd r25, Y+31 ; 2-byte Folded Reload
+; AVR51-NEXT: .LBB0_320:
+; AVR51-NEXT: subi r28, 189
+; AVR51-NEXT: sbci r29, 255
+; AVR51-NEXT: in r0, 63
+; AVR51-NEXT: cli
+; AVR51-NEXT: out 62, r29
+; AVR51-NEXT: out 63, r0
+; AVR51-NEXT: out 61, r28
+; AVR51-NEXT: pop r29
+; AVR51-NEXT: pop r28
+; AVR51-NEXT: pop r17
+; AVR51-NEXT: pop r16
+; AVR51-NEXT: pop r15
+; AVR51-NEXT: pop r14
+; AVR51-NEXT: pop r13
+; AVR51-NEXT: pop r12
+; AVR51-NEXT: pop r11
+; AVR51-NEXT: pop r10
+; AVR51-NEXT: pop r9
+; AVR51-NEXT: pop r8
+; AVR51-NEXT: pop r7
+; AVR51-NEXT: pop r6
+; AVR51-NEXT: pop r5
+; AVR51-NEXT: pop r4
+; AVR51-NEXT: pop r3
+; AVR51-NEXT: pop r2
+; AVR51-NEXT: ret
+;
+; AVR2-LABEL: __d_vfprintf:
+; AVR2: ; %bb.0:
+; AVR2-NEXT: push r2
+; AVR2-NEXT: push r3
+; AVR2-NEXT: push r4
+; AVR2-NEXT: push r5
+; AVR2-NEXT: push r6
+; AVR2-NEXT: push r7
+; AVR2-NEXT: push r8
+; AVR2-NEXT: push r9
+; AVR2-NEXT: push r10
+; AVR2-NEXT: push r11
+; AVR2-NEXT: push r12
+; AVR2-NEXT: push r13
+; AVR2-NEXT: push r14
+; AVR2-NEXT: push r15
+; AVR2-NEXT: push r16
+; AVR2-NEXT: push r17
+; AVR2-NEXT: push r28
+; AVR2-NEXT: push r29
+; AVR2-NEXT: in r28, 61
+; AVR2-NEXT: in r29, 62
+; AVR2-NEXT: subi r28, 67
+; AVR2-NEXT: sbci r29, 0
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: cli
+; AVR2-NEXT: out 62, r29
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: out 61, r28
+; AVR2-NEXT: mov r2, r22
+; AVR2-NEXT: mov r3, r23
+; AVR2-NEXT: mov r6, r24
+; AVR2-NEXT: mov r7, r25
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 4
+; AVR2-NEXT: std Y+63, r21
+; AVR2-NEXT: std Y+62, r20
+; AVR2-NEXT: sbiw r28, 4
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r30, r6
+; AVR2-NEXT: mov r31, r7
+; AVR2-NEXT: ldd r24, Z+2
+; AVR2-NEXT: andi r24, 2
+; AVR2-NEXT: ldi r18, 255
+; AVR2-NEXT: ldi r19, 255
+; AVR2-NEXT: std Y+33, r19 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+32, r18 ; 2-byte Folded Spill
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: brne .LBB0_2
+; AVR2-NEXT: .LBB0_1:
+; AVR2-NEXT: ldd r24, Y+32 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+33 ; 2-byte Folded Reload
+; AVR2-NEXT: subi r28, 189
+; AVR2-NEXT: sbci r29, 255
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: cli
+; AVR2-NEXT: out 62, r29
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: out 61, r28
+; AVR2-NEXT: pop r29
+; AVR2-NEXT: pop r28
+; AVR2-NEXT: pop r17
+; AVR2-NEXT: pop r16
+; AVR2-NEXT: pop r15
+; AVR2-NEXT: pop r14
+; AVR2-NEXT: pop r13
+; AVR2-NEXT: pop r12
+; AVR2-NEXT: pop r11
+; AVR2-NEXT: pop r10
+; AVR2-NEXT: pop r9
+; AVR2-NEXT: pop r8
+; AVR2-NEXT: pop r7
+; AVR2-NEXT: pop r6
+; AVR2-NEXT: pop r5
+; AVR2-NEXT: pop r4
+; AVR2-NEXT: pop r3
+; AVR2-NEXT: pop r2
+; AVR2-NEXT: ret
+; AVR2-NEXT: .LBB0_2:
+; AVR2-NEXT: mov r30, r6
+; AVR2-NEXT: mov r31, r7
+; AVR2-NEXT: ldd r4, Z+3
+; AVR2-NEXT: ldd r5, Z+4
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 4
+; AVR2-NEXT: ldd r24, Y+62
+; AVR2-NEXT: ldd r25, Y+63
+; AVR2-NEXT: sbiw r28, 4
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r25
+; AVR2-NEXT: std Y+62, r24
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r26, r2
+; AVR2-NEXT: mov r27, r3
+; AVR2-NEXT: .LBB0_3: ; =>This Loop Header: Depth=1
+; AVR2-NEXT: ; Child Loop BB0_11 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_118 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_121 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_140 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_149 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_158 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_177 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_205 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_216 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_221 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_248 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_262 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_280 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_274 Depth 2
+; AVR2-NEXT: ; Child Loop BB0_324 Depth 2
+; AVR2-NEXT: mov r30, r26
+; AVR2-NEXT: mov r31, r27
+; AVR2-NEXT: ld r24, Z+
+; AVR2-NEXT: cpi r24, 37
+; AVR2-NEXT: breq .LBB0_5
+; AVR2-NEXT: ; %bb.4: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: mov r26, r30
+; AVR2-NEXT: mov r27, r31
+; AVR2-NEXT: brne .LBB0_6
+; AVR2-NEXT: ; %bb.328:
+; AVR2-NEXT: rjmp .LBB0_327
+; AVR2-NEXT: .LBB0_5: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r30, r26
+; AVR2-NEXT: mov r31, r27
+; AVR2-NEXT: ldd r17, Z+1
+; AVR2-NEXT: adiw r26, 2
+; AVR2-NEXT: cpi r17, 37
+; AVR2-NEXT: brne .LBB0_7
+; AVR2-NEXT: .LBB0_6: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r30, 1
+; AVR2-NEXT: std Y+40, r31 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r30 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: mov r16, r26
+; AVR2-NEXT: mov r17, r27
+; AVR2-NEXT: icall
+; AVR2-NEXT: mov r26, r16
+; AVR2-NEXT: mov r27, r17
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_3
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_7: ; %.preheader24
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r14, r24
+; AVR2-NEXT: mov r15, r25
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: mov r18, r24
+; AVR2-NEXT: mov r19, r25
+; AVR2-NEXT: rjmp .LBB0_11
+; AVR2-NEXT: .LBB0_8: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r24, r30
+; AVR2-NEXT: mov r25, r31
+; AVR2-NEXT: ldi r22, 10
+; AVR2-NEXT: ldi r23, 0
+; AVR2-NEXT: rcall __mulhi3
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: add r30, r8
+; AVR2-NEXT: adc r31, r9
+; AVR2-NEXT: ori r16, 32
+; AVR2-NEXT: .LBB0_9: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r26, r10
+; AVR2-NEXT: mov r27, r11
+; AVR2-NEXT: mov r18, r16
+; AVR2-NEXT: mov r19, r17
+; AVR2-NEXT: .LBB0_10: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ld r17, X+
+; AVR2-NEXT: cpi r17, 0
+; AVR2-NEXT: brne .LBB0_11
+; AVR2-NEXT: rjmp .LBB0_67
+; AVR2-NEXT: .LBB0_11: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: cpi r18, 32
+; AVR2-NEXT: cpc r19, r1
+; AVR2-NEXT: brsh .LBB0_16
+; AVR2-NEXT: ; %bb.12: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 43
+; AVR2-NEXT: brlt .LBB0_13
+; AVR2-NEXT: rjmp .LBB0_20
+; AVR2-NEXT: .LBB0_13: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 32
+; AVR2-NEXT: brne .LBB0_14
+; AVR2-NEXT: rjmp .LBB0_46
+; AVR2-NEXT: .LBB0_14: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 35
+; AVR2-NEXT: brne .LBB0_15
+; AVR2-NEXT: rjmp .LBB0_44
+; AVR2-NEXT: .LBB0_15: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 39
+; AVR2-NEXT: breq .LBB0_10
+; AVR2-NEXT: rjmp .LBB0_17
+; AVR2-NEXT: .LBB0_16: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r18, -128
+; AVR2-NEXT: cpc r19, r1
+; AVR2-NEXT: brlo .LBB0_17
+; AVR2-NEXT: rjmp .LBB0_24
+; AVR2-NEXT: .LBB0_17: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r24, r17
+; AVR2-NEXT: subi r24, 48
+; AVR2-NEXT: cpi r24, 10
+; AVR2-NEXT: brlo .LBB0_18
+; AVR2-NEXT: rjmp .LBB0_26
+; AVR2-NEXT: .LBB0_18: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r10, r26
+; AVR2-NEXT: mov r11, r27
+; AVR2-NEXT: mov r8, r24
+; AVR2-NEXT: clr r9
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: mov r25, r19
+; AVR2-NEXT: andi r24, 64
+; AVR2-NEXT: andi r25, 0
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: mov r16, r18
+; AVR2-NEXT: mov r17, r19
+; AVR2-NEXT: brne .LBB0_19
+; AVR2-NEXT: rjmp .LBB0_8
+; AVR2-NEXT: .LBB0_19: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r24, r12
+; AVR2-NEXT: mov r25, r13
+; AVR2-NEXT: ldi r22, 10
+; AVR2-NEXT: ldi r23, 0
+; AVR2-NEXT: mov r12, r30
+; AVR2-NEXT: mov r13, r31
+; AVR2-NEXT: rcall __mulhi3
+; AVR2-NEXT: mov r30, r12
+; AVR2-NEXT: mov r31, r13
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: add r12, r8
+; AVR2-NEXT: adc r13, r9
+; AVR2-NEXT: rjmp .LBB0_9
+; AVR2-NEXT: .LBB0_20: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 43
+; AVR2-NEXT: brne .LBB0_21
+; AVR2-NEXT: rjmp .LBB0_45
+; AVR2-NEXT: .LBB0_21: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 45
+; AVR2-NEXT: brne .LBB0_22
+; AVR2-NEXT: rjmp .LBB0_47
+; AVR2-NEXT: .LBB0_22: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 48
+; AVR2-NEXT: breq .LBB0_23
+; AVR2-NEXT: rjmp .LBB0_17
+; AVR2-NEXT: .LBB0_23: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ori r18, 1
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_24: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 108
+; AVR2-NEXT: brge .LBB0_31
+; AVR2-NEXT: ; %bb.25: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 76
+; AVR2-NEXT: breq .LBB0_341
+; AVR2-NEXT: rjmp .LBB0_35
+; AVR2-NEXT: .LBB0_341: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: rjmp .LBB0_52
+; AVR2-NEXT: .LBB0_26: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 104
+; AVR2-NEXT: brge .LBB0_27
+; AVR2-NEXT: rjmp .LBB0_37
+; AVR2-NEXT: .LBB0_27: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 108
+; AVR2-NEXT: brlt .LBB0_35
+; AVR2-NEXT: ; %bb.28: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 108
+; AVR2-NEXT: breq .LBB0_34
+; AVR2-NEXT: ; %bb.29: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 116
+; AVR2-NEXT: brne .LBB0_30
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_30: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 122
+; AVR2-NEXT: brne .LBB0_330
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_330: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: rjmp .LBB0_68
+; AVR2-NEXT: .LBB0_31: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 122
+; AVR2-NEXT: brne .LBB0_32
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_32: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 116
+; AVR2-NEXT: brne .LBB0_33
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_33: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 108
+; AVR2-NEXT: breq .LBB0_34
+; AVR2-NEXT: rjmp .LBB0_68
+; AVR2-NEXT: .LBB0_34: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: mov r25, r19
+; AVR2-NEXT: lsl r24
+; AVR2-NEXT: rol r25
+; AVR2-NEXT: lsl r24
+; AVR2-NEXT: rol r25
+; AVR2-NEXT: andi r24, 0
+; AVR2-NEXT: andi r25, 2
+; AVR2-NEXT: or r24, r18
+; AVR2-NEXT: or r25, r19
+; AVR2-NEXT: ori r24, 128
+; AVR2-NEXT: rjmp .LBB0_49
+; AVR2-NEXT: .LBB0_35: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 104
+; AVR2-NEXT: brne .LBB0_36
+; AVR2-NEXT: rjmp .LBB0_48
+; AVR2-NEXT: .LBB0_36: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 106
+; AVR2-NEXT: brne .LBB0_331
+; AVR2-NEXT: rjmp .LBB0_52
+; AVR2-NEXT: .LBB0_331: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: rjmp .LBB0_68
+; AVR2-NEXT: .LBB0_37: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 46
+; AVR2-NEXT: brlt .LBB0_38
+; AVR2-NEXT: rjmp .LBB0_50
+; AVR2-NEXT: .LBB0_38: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 36
+; AVR2-NEXT: brne .LBB0_39
+; AVR2-NEXT: rjmp .LBB0_53
+; AVR2-NEXT: .LBB0_39: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 42
+; AVR2-NEXT: breq .LBB0_40
+; AVR2-NEXT: rjmp .LBB0_68
+; AVR2-NEXT: .LBB0_40: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cp r14, r1
+; AVR2-NEXT: cpc r15, r1
+; AVR2-NEXT: breq .LBB0_41
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_41: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r20, r30
+; AVR2-NEXT: mov r21, r31
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: ldd r24, Y+62
+; AVR2-NEXT: ldd r25, Y+63
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: adiw r30, 2
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r31
+; AVR2-NEXT: std Y+62, r30
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: ld r24, Z
+; AVR2-NEXT: ldd r25, Z+1
+; AVR2-NEXT: mov r22, r18
+; AVR2-NEXT: mov r23, r19
+; AVR2-NEXT: andi r18, 64
+; AVR2-NEXT: andi r19, 0
+; AVR2-NEXT: cp r18, r1
+; AVR2-NEXT: cpc r19, r1
+; AVR2-NEXT: breq .LBB0_42
+; AVR2-NEXT: rjmp .LBB0_64
+; AVR2-NEXT: .LBB0_42: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r18, r25
+; AVR2-NEXT: tst r18
+; AVR2-NEXT: brpl .LBB0_43
+; AVR2-NEXT: rjmp .LBB0_65
+; AVR2-NEXT: .LBB0_43: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ori r22, 32
+; AVR2-NEXT: rjmp .LBB0_66
+; AVR2-NEXT: .LBB0_44: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ori r18, 16
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_45: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ori r18, 2
+; AVR2-NEXT: .LBB0_46: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ori r18, 4
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_47: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ori r18, 8
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_48: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: mov r25, r19
+; AVR2-NEXT: lsl r24
+; AVR2-NEXT: rol r25
+; AVR2-NEXT: andi r24, 0
+; AVR2-NEXT: andi r25, 2
+; AVR2-NEXT: or r24, r18
+; AVR2-NEXT: or r25, r19
+; AVR2-NEXT: ori r25, 1
+; AVR2-NEXT: .LBB0_49: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r18, r24
+; AVR2-NEXT: mov r19, r25
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_50: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 46
+; AVR2-NEXT: brne .LBB0_51
+; AVR2-NEXT: rjmp .LBB0_61
+; AVR2-NEXT: .LBB0_51: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cpi r17, 76
+; AVR2-NEXT: breq .LBB0_52
+; AVR2-NEXT: rjmp .LBB0_68
+; AVR2-NEXT: .LBB0_52: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ori r18, 128
+; AVR2-NEXT: ori r19, 2
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_53: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cp r14, r1
+; AVR2-NEXT: cpc r15, r1
+; AVR2-NEXT: brne .LBB0_54
+; AVR2-NEXT: rjmp .LBB0_63
+; AVR2-NEXT: .LBB0_54: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r10, r26
+; AVR2-NEXT: mov r11, r27
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 4
+; AVR2-NEXT: ldd r24, Y+62
+; AVR2-NEXT: ldd r25, Y+63
+; AVR2-NEXT: sbiw r28, 4
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r25
+; AVR2-NEXT: std Y+62, r24
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: std Y+31, r19 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+30, r18 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r16, r18
+; AVR2-NEXT: mov r17, r19
+; AVR2-NEXT: andi r16, 64
+; AVR2-NEXT: andi r17, 0
+; AVR2-NEXT: cp r16, r1
+; AVR2-NEXT: cpc r17, r1
+; AVR2-NEXT: mov r8, r30
+; AVR2-NEXT: mov r9, r31
+; AVR2-NEXT: breq .LBB0_56
+; AVR2-NEXT: ; %bb.55: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r30, r12
+; AVR2-NEXT: mov r31, r13
+; AVR2-NEXT: .LBB0_56: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r22, r28
+; AVR2-NEXT: mov r23, r29
+; AVR2-NEXT: subi r22, 192
+; AVR2-NEXT: sbci r23, 255
+; AVR2-NEXT: mov r24, r2
+; AVR2-NEXT: mov r25, r3
+; AVR2-NEXT: mov r20, r30
+; AVR2-NEXT: mov r21, r31
+; AVR2-NEXT: rcall skip_to_arg
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: ldd r24, Y+62
+; AVR2-NEXT: ldd r25, Y+63
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: adiw r30, 2
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r31
+; AVR2-NEXT: std Y+62, r30
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: ld r18, Z
+; AVR2-NEXT: ldd r19, Z+1
+; AVR2-NEXT: cp r16, r1
+; AVR2-NEXT: cpc r17, r1
+; AVR2-NEXT: mov r30, r18
+; AVR2-NEXT: mov r31, r19
+; AVR2-NEXT: breq .LBB0_58
+; AVR2-NEXT: ; %bb.57: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r30, r8
+; AVR2-NEXT: mov r31, r9
+; AVR2-NEXT: .LBB0_58: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: cp r16, r1
+; AVR2-NEXT: cpc r17, r1
+; AVR2-NEXT: mov r26, r10
+; AVR2-NEXT: mov r27, r11
+; AVR2-NEXT: breq .LBB0_60
+; AVR2-NEXT: ; %bb.59: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r12, r18
+; AVR2-NEXT: mov r13, r19
+; AVR2-NEXT: .LBB0_60: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ldd r18, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r19, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_61: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: mov r25, r19
+; AVR2-NEXT: andi r24, 64
+; AVR2-NEXT: andi r25, 0
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: breq .LBB0_62
+; AVR2-NEXT: ; %bb.342:
+; AVR2-NEXT: rjmp .LBB0_327
+; AVR2-NEXT: .LBB0_62: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ori r18, 64
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_63: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: mov r14, r30
+; AVR2-NEXT: mov r15, r31
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: rjmp .LBB0_49
+; AVR2-NEXT: .LBB0_64: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ldi r18, 0
+; AVR2-NEXT: ldi r19, 0
+; AVR2-NEXT: mov r14, r18
+; AVR2-NEXT: mov r15, r19
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: mov r30, r20
+; AVR2-NEXT: mov r31, r21
+; AVR2-NEXT: mov r18, r22
+; AVR2-NEXT: mov r19, r23
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_65: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: neg r25
+; AVR2-NEXT: neg r24
+; AVR2-NEXT: sbc r25, r1
+; AVR2-NEXT: ori r22, 40
+; AVR2-NEXT: .LBB0_66: ; in Loop: Header=BB0_11 Depth=2
+; AVR2-NEXT: ldi r18, 0
+; AVR2-NEXT: ldi r19, 0
+; AVR2-NEXT: mov r14, r18
+; AVR2-NEXT: mov r15, r19
+; AVR2-NEXT: mov r18, r22
+; AVR2-NEXT: mov r19, r23
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: rjmp .LBB0_10
+; AVR2-NEXT: .LBB0_67: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r17, r1
+; AVR2-NEXT: .LBB0_68: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r14, r1
+; AVR2-NEXT: cpc r15, r1
+; AVR2-NEXT: std Y+38, r27 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+37, r26 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+29, r31 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+28, r30 ; 2-byte Folded Spill
+; AVR2-NEXT: breq .LBB0_70
+; AVR2-NEXT: ; %bb.69: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 4
+; AVR2-NEXT: ldd r24, Y+62
+; AVR2-NEXT: ldd r25, Y+63
+; AVR2-NEXT: sbiw r28, 4
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r25
+; AVR2-NEXT: std Y+62, r24
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r22, r28
+; AVR2-NEXT: mov r23, r29
+; AVR2-NEXT: subi r22, 192
+; AVR2-NEXT: sbci r23, 255
+; AVR2-NEXT: mov r24, r2
+; AVR2-NEXT: mov r25, r3
+; AVR2-NEXT: mov r20, r14
+; AVR2-NEXT: mov r21, r15
+; AVR2-NEXT: mov r14, r18
+; AVR2-NEXT: mov r15, r19
+; AVR2-NEXT: rcall skip_to_arg
+; AVR2-NEXT: mov r18, r14
+; AVR2-NEXT: mov r19, r15
+; AVR2-NEXT: ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r30, Y+28 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+29 ; 2-byte Folded Reload
+; AVR2-NEXT: .LBB0_70: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r1, r12
+; AVR2-NEXT: cpc r1, r13
+; AVR2-NEXT: std Y+27, r13 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+26, r12 ; 2-byte Folded Spill
+; AVR2-NEXT: brlt .LBB0_72
+; AVR2-NEXT: ; %bb.71: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: std Y+27, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+26, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: .LBB0_72: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: tst r13
+; AVR2-NEXT: brpl .LBB0_74
+; AVR2-NEXT: ; %bb.73: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: andi r18, 191
+; AVR2-NEXT: .LBB0_74: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r16, r17
+; AVR2-NEXT: ori r16, 32
+; AVR2-NEXT: cpi r16, 97
+; AVR2-NEXT: breq .LBB0_81
+; AVR2-NEXT: ; %bb.75: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: subi r24, 101
+; AVR2-NEXT: cpi r24, 3
+; AVR2-NEXT: brlo .LBB0_81
+; AVR2-NEXT: ; %bb.76: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r17, 111
+; AVR2-NEXT: brge .LBB0_77
+; AVR2-NEXT: rjmp .LBB0_92
+; AVR2-NEXT: .LBB0_77: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r17, 115
+; AVR2-NEXT: brlt .LBB0_78
+; AVR2-NEXT: rjmp .LBB0_95
+; AVR2-NEXT: .LBB0_78: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r17, 111
+; AVR2-NEXT: brne .LBB0_79
+; AVR2-NEXT: rjmp .LBB0_124
+; AVR2-NEXT: .LBB0_79: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r17, 112
+; AVR2-NEXT: breq .LBB0_80
+; AVR2-NEXT: rjmp .LBB0_123
+; AVR2-NEXT: .LBB0_80: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ori r18, 16
+; AVR2-NEXT: rjmp .LBB0_124
+; AVR2-NEXT: .LBB0_81: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: std Y+31, r19 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+30, r18 ; 2-byte Folded Spill
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: ldd r24, Y+62
+; AVR2-NEXT: ldd r25, Y+63
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: adiw r30, 2
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r31
+; AVR2-NEXT: std Y+62, r30
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: ld r18, Z
+; AVR2-NEXT: ldd r19, Z+1
+; AVR2-NEXT: mov r26, r24
+; AVR2-NEXT: mov r27, r25
+; AVR2-NEXT: adiw r26, 4
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r27
+; AVR2-NEXT: std Y+62, r26
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: ldd r14, Z+2
+; AVR2-NEXT: ldd r15, Z+3
+; AVR2-NEXT: mov r26, r24
+; AVR2-NEXT: mov r27, r25
+; AVR2-NEXT: adiw r26, 6
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r27
+; AVR2-NEXT: std Y+62, r26
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: ldd r22, Z+4
+; AVR2-NEXT: ldd r23, Z+5
+; AVR2-NEXT: adiw r24, 8
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r25
+; AVR2-NEXT: std Y+62, r24
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: sub r24, r17
+; AVR2-NEXT: std Y+34, r24 ; 1-byte Folded Spill
+; AVR2-NEXT: ldd r24, Z+6
+; AVR2-NEXT: ldd r25, Z+7
+; AVR2-NEXT: cpi r16, 97
+; AVR2-NEXT: breq .LBB0_82
+; AVR2-NEXT: rjmp .LBB0_87
+; AVR2-NEXT: .LBB0_82: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r17, 48
+; AVR2-NEXT: std Y+46, r17
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: swap r30
+; AVR2-NEXT: andi r30, 15
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: swap r31
+; AVR2-NEXT: eor r30, r31
+; AVR2-NEXT: andi r31, 15
+; AVR2-NEXT: eor r30, r31
+; AVR2-NEXT: andi r31, 7
+; AVR2-NEXT: std Y+25, r31 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+24, r30 ; 2-byte Folded Spill
+; AVR2-NEXT: or r30, r18
+; AVR2-NEXT: or r31, r19
+; AVR2-NEXT: mov r26, r24
+; AVR2-NEXT: mov r27, r25
+; AVR2-NEXT: andi r26, 15
+; AVR2-NEXT: andi r27, 0
+; AVR2-NEXT: ldi r24, 1
+; AVR2-NEXT: cp r30, r1
+; AVR2-NEXT: cpc r31, r1
+; AVR2-NEXT: ldi r20, 0
+; AVR2-NEXT: ldi r21, 0
+; AVR2-NEXT: cpc r14, r20
+; AVR2-NEXT: cpc r15, r21
+; AVR2-NEXT: cpc r22, r20
+; AVR2-NEXT: cpc r23, r21
+; AVR2-NEXT: std Y+36, r27 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+35, r26 ; 2-byte Folded Spill
+; AVR2-NEXT: cpc r26, r20
+; AVR2-NEXT: cpc r27, r21
+; AVR2-NEXT: mov r26, r14
+; AVR2-NEXT: mov r27, r15
+; AVR2-NEXT: breq .LBB0_84
+; AVR2-NEXT: ; %bb.83: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r1
+; AVR2-NEXT: .LBB0_84: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: andi r24, 1
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: breq .LBB0_85
+; AVR2-NEXT: rjmp .LBB0_98
+; AVR2-NEXT: .LBB0_85: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r20, Y+24 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+25 ; 2-byte Folded Reload
+; AVR2-NEXT: cp r20, r1
+; AVR2-NEXT: cpc r21, r1
+; AVR2-NEXT: brne .LBB0_86
+; AVR2-NEXT: rjmp .LBB0_130
+; AVR2-NEXT: .LBB0_86: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r17, 49
+; AVR2-NEXT: std Y+46, r17
+; AVR2-NEXT: ldd r20, Y+24 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+25 ; 2-byte Folded Reload
+; AVR2-NEXT: rjmp .LBB0_131
+; AVR2-NEXT: .LBB0_87: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r26, r14
+; AVR2-NEXT: mov r27, r15
+; AVR2-NEXT: ldd r20, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT: andi r20, 64
+; AVR2-NEXT: andi r21, 0
+; AVR2-NEXT: cp r20, r1
+; AVR2-NEXT: cpc r21, r1
+; AVR2-NEXT: ldi r20, 6
+; AVR2-NEXT: ldi r21, 0
+; AVR2-NEXT: mov r8, r20
+; AVR2-NEXT: mov r9, r21
+; AVR2-NEXT: breq .LBB0_89
+; AVR2-NEXT: ; %bb.88: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r8, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r9, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT: .LBB0_89: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r16, 102
+; AVR2-NEXT: brne .LBB0_90
+; AVR2-NEXT: rjmp .LBB0_99
+; AVR2-NEXT: .LBB0_90: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r16, 101
+; AVR2-NEXT: breq .LBB0_91
+; AVR2-NEXT: rjmp .LBB0_100
+; AVR2-NEXT: .LBB0_91: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r20, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT: ori r21, 16
+; AVR2-NEXT: std Y+31, r21 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+30, r20 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r20, r8
+; AVR2-NEXT: mov r21, r9
+; AVR2-NEXT: mov r30, r20
+; AVR2-NEXT: inc r30
+; AVR2-NEXT: ldi r16, 101
+; AVR2-NEXT: rjmp .LBB0_103
+; AVR2-NEXT: .LBB0_92: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r17, 99
+; AVR2-NEXT: brne .LBB0_93
+; AVR2-NEXT: rjmp .LBB0_107
+; AVR2-NEXT: .LBB0_93: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r17, 100
+; AVR2-NEXT: brne .LBB0_94
+; AVR2-NEXT: rjmp .LBB0_124
+; AVR2-NEXT: .LBB0_94: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r17, 105
+; AVR2-NEXT: brne .LBB0_332
+; AVR2-NEXT: rjmp .LBB0_124
+; AVR2-NEXT: .LBB0_332: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: rjmp .LBB0_123
+; AVR2-NEXT: .LBB0_95: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r17, 115
+; AVR2-NEXT: brne .LBB0_96
+; AVR2-NEXT: rjmp .LBB0_108
+; AVR2-NEXT: .LBB0_96: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r17, 117
+; AVR2-NEXT: breq .LBB0_97
+; AVR2-NEXT: rjmp .LBB0_123
+; AVR2-NEXT: .LBB0_97: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: andi r18, 239
+; AVR2-NEXT: rjmp .LBB0_124
+; AVR2-NEXT: .LBB0_98: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r30, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT: rjmp .LBB0_132
+; AVR2-NEXT: .LBB0_99: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r20, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT: ori r21, 32
+; AVR2-NEXT: std Y+31, r21 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+30, r20 ; 2-byte Folded Spill
+; AVR2-NEXT: ldi r16, 102
+; AVR2-NEXT: ldi r31, 1
+; AVR2-NEXT: ldi r30, 17
+; AVR2-NEXT: mov r10, r8
+; AVR2-NEXT: mov r11, r9
+; AVR2-NEXT: rjmp .LBB0_104
+; AVR2-NEXT: .LBB0_100: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r30, 1
+; AVR2-NEXT: mov r20, r8
+; AVR2-NEXT: mov r21, r9
+; AVR2-NEXT: cpi r20, 0
+; AVR2-NEXT: breq .LBB0_102
+; AVR2-NEXT: ; %bb.101: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r20, r8
+; AVR2-NEXT: mov r21, r9
+; AVR2-NEXT: mov r30, r20
+; AVR2-NEXT: .LBB0_102: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: subi r16, 2
+; AVR2-NEXT: .LBB0_103: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r20, 0
+; AVR2-NEXT: ldi r21, 0
+; AVR2-NEXT: mov r10, r20
+; AVR2-NEXT: mov r11, r21
+; AVR2-NEXT: mov r31, r1
+; AVR2-NEXT: .LBB0_104: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r13, r16
+; AVR2-NEXT: cpi r30, 17
+; AVR2-NEXT: brlo .LBB0_106
+; AVR2-NEXT: ; %bb.105: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r30, 17
+; AVR2-NEXT: .LBB0_106: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r14, r30
+; AVR2-NEXT: clr r15
+; AVR2-NEXT: mov r16, r28
+; AVR2-NEXT: mov r17, r29
+; AVR2-NEXT: subi r16, 215
+; AVR2-NEXT: sbci r17, 255
+; AVR2-NEXT: mov r20, r26
+; AVR2-NEXT: mov r21, r27
+; AVR2-NEXT: mov r12, r31
+; AVR2-NEXT: rcall __dtoa_engine
+; AVR2-NEXT: mov r26, r24
+; AVR2-NEXT: mov r27, r25
+; AVR2-NEXT: ldi r24, 2
+; AVR2-NEXT: ldd r22, Y+45
+; AVR2-NEXT: ldd r20, Y+41
+; AVR2-NEXT: ldd r21, Y+42
+; AVR2-NEXT: mov r27, r13
+; AVR2-NEXT: rjmp .LBB0_187
+; AVR2-NEXT: .LBB0_107: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: ldd r26, Y+62
+; AVR2-NEXT: ldd r27, Y+63
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r24, r26
+; AVR2-NEXT: mov r25, r27
+; AVR2-NEXT: adiw r24, 2
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r25
+; AVR2-NEXT: std Y+62, r24
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: ld r24, X
+; AVR2-NEXT: std Y+41, r24
+; AVR2-NEXT: mov r24, r28
+; AVR2-NEXT: mov r25, r29
+; AVR2-NEXT: adiw r24, 41
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: ldi r20, 1
+; AVR2-NEXT: ldi r21, 0
+; AVR2-NEXT: rjmp .LBB0_113
+; AVR2-NEXT: .LBB0_108: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: ldd r24, Y+62
+; AVR2-NEXT: ldd r25, Y+63
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: adiw r30, 2
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r31
+; AVR2-NEXT: std Y+62, r30
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: mov r16, r18
+; AVR2-NEXT: mov r17, r19
+; AVR2-NEXT: andi r18, 64
+; AVR2-NEXT: andi r19, 0
+; AVR2-NEXT: cp r18, r1
+; AVR2-NEXT: cpc r19, r1
+; AVR2-NEXT: ldi r22, 255
+; AVR2-NEXT: ldi r23, 255
+; AVR2-NEXT: breq .LBB0_110
+; AVR2-NEXT: ; %bb.109: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r22, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r23, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT: .LBB0_110: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: ld r24, Z
+; AVR2-NEXT: ldd r25, Z+1
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: ldi r18, lo8(.str.2)
+; AVR2-NEXT: ldi r19, hi8(.str.2)
+; AVR2-NEXT: breq .LBB0_112
+; AVR2-NEXT: ; %bb.111: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r18, r24
+; AVR2-NEXT: mov r19, r25
+; AVR2-NEXT: .LBB0_112: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r12, r18
+; AVR2-NEXT: mov r13, r19
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: mov r25, r19
+; AVR2-NEXT: rcall strnlen
+; AVR2-NEXT: mov r20, r24
+; AVR2-NEXT: mov r21, r25
+; AVR2-NEXT: ldd r30, Y+28 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+29 ; 2-byte Folded Reload
+; AVR2-NEXT: mov r18, r16
+; AVR2-NEXT: mov r19, r17
+; AVR2-NEXT: .LBB0_113: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: andi r18, 8
+; AVR2-NEXT: andi r19, 0
+; AVR2-NEXT: cp r18, r1
+; AVR2-NEXT: cpc r19, r1
+; AVR2-NEXT: breq .LBB0_114
+; AVR2-NEXT: rjmp .LBB0_120
+; AVR2-NEXT: .LBB0_114: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r30, r20
+; AVR2-NEXT: cpc r31, r21
+; AVR2-NEXT: mov r16, r30
+; AVR2-NEXT: mov r17, r31
+; AVR2-NEXT: brlo .LBB0_118
+; AVR2-NEXT: ; %bb.115: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r16, r20
+; AVR2-NEXT: mov r17, r21
+; AVR2-NEXT: rjmp .LBB0_118
+; AVR2-NEXT: .LBB0_116: ; in Loop: Header=BB0_118 Depth=2
+; AVR2-NEXT: mov r10, r20
+; AVR2-NEXT: mov r11, r21
+; AVR2-NEXT: mov r14, r30
+; AVR2-NEXT: mov r15, r31
+; AVR2-NEXT: ldi r24, 32
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_117
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_117: ; in Loop: Header=BB0_118 Depth=2
+; AVR2-NEXT: mov r30, r14
+; AVR2-NEXT: mov r31, r15
+; AVR2-NEXT: sbiw r30, 1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r20, r10
+; AVR2-NEXT: mov r21, r11
+; AVR2-NEXT: .LBB0_118: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: cp r20, r30
+; AVR2-NEXT: cpc r21, r31
+; AVR2-NEXT: brlo .LBB0_116
+; AVR2-NEXT: ; %bb.119: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r30, r16
+; AVR2-NEXT: mov r31, r17
+; AVR2-NEXT: .LBB0_120: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: add r24, r20
+; AVR2-NEXT: adc r25, r21
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: sub r30, r20
+; AVR2-NEXT: sbc r31, r21
+; AVR2-NEXT: .LBB0_121: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: cp r20, r1
+; AVR2-NEXT: cpc r21, r1
+; AVR2-NEXT: brne .LBB0_122
+; AVR2-NEXT: rjmp .LBB0_142
+; AVR2-NEXT: .LBB0_122: ; in Loop: Header=BB0_121 Depth=2
+; AVR2-NEXT: std Y+36, r21 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+35, r20 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r26, r12
+; AVR2-NEXT: mov r27, r13
+; AVR2-NEXT: ld r24, X+
+; AVR2-NEXT: mov r12, r26
+; AVR2-NEXT: mov r13, r27
+; AVR2-NEXT: ldd r26, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r27, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT: sbiw r26, 1
+; AVR2-NEXT: std Y+36, r27 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+35, r26 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r16, r30
+; AVR2-NEXT: mov r17, r31
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: ldd r20, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT: mov r30, r16
+; AVR2-NEXT: mov r31, r17
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_121
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_123: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r16, 120
+; AVR2-NEXT: breq .LBB0_124
+; AVR2-NEXT: rjmp .LBB0_143
+; AVR2-NEXT: .LBB0_124: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: mov r25, r19
+; AVR2-NEXT: andi r24, 128
+; AVR2-NEXT: andi r25, 0
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: brne .LBB0_126
+; AVR2-NEXT: ; %bb.125: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: ldd r24, Y+62
+; AVR2-NEXT: ldd r25, Y+63
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: adiw r24, 2
+; AVR2-NEXT: rjmp .LBB0_129
+; AVR2-NEXT: .LBB0_126: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: andi r18, 0
+; AVR2-NEXT: andi r19, 2
+; AVR2-NEXT: cp r1, r1
+; AVR2-NEXT: cpc r19, r1
+; AVR2-NEXT: brne .LBB0_128
+; AVR2-NEXT: ; %bb.127: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: ldd r24, Y+62
+; AVR2-NEXT: ldd r25, Y+63
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: adiw r24, 4
+; AVR2-NEXT: rjmp .LBB0_129
+; AVR2-NEXT: .LBB0_128: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: ldd r24, Y+62
+; AVR2-NEXT: ldd r25, Y+63
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: adiw r24, 8
+; AVR2-NEXT: .LBB0_129: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: std Y+63, r25
+; AVR2-NEXT: std Y+62, r24
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: rjmp .LBB0_324
+; AVR2-NEXT: .LBB0_130: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r20, 1
+; AVR2-NEXT: ldi r21, 0
+; AVR2-NEXT: .LBB0_131: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r30, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT: subi r20, 255
+; AVR2-NEXT: sbci r21, 3
+; AVR2-NEXT: std Y+25, r21 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+24, r20 ; 2-byte Folded Spill
+; AVR2-NEXT: .LBB0_132: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: lsl r25
+; AVR2-NEXT: mov r20, r1
+; AVR2-NEXT: rol r20
+; AVR2-NEXT: mov r24, r20
+; AVR2-NEXT: std Y+23, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+22, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+45, r20
+; AVR2-NEXT: ldd r24, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT: andi r24, 64
+; AVR2-NEXT: andi r25, 0
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: brne .LBB0_134
+; AVR2-NEXT: ; %bb.133: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: rjmp .LBB0_136
+; AVR2-NEXT: .LBB0_134: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r30, 13
+; AVR2-NEXT: cpc r31, r1
+; AVR2-NEXT: brlo .LBB0_137
+; AVR2-NEXT: ; %bb.135: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 13
+; AVR2-NEXT: .LBB0_136: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: rjmp .LBB0_169
+; AVR2-NEXT: .LBB0_137: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: std Y+3, r17 ; 1-byte Folded Spill
+; AVR2-NEXT: std Y+19, r27 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+18, r26 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+15, r5 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+14, r4 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+13, r7 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+12, r6 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+21, r3 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+20, r2 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r20, r30
+; AVR2-NEXT: mov r21, r31
+; AVR2-NEXT: lsl r20
+; AVR2-NEXT: rol r21
+; AVR2-NEXT: lsl r20
+; AVR2-NEXT: rol r21
+; AVR2-NEXT: ldi r24, 51
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r16, r20
+; AVR2-NEXT: std Y+2, r17 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+1, r16 ; 2-byte Folded Spill
+; AVR2-NEXT: sub r24, r20
+; AVR2-NEXT: sbc r25, r21
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: brne .LBB0_138
+; AVR2-NEXT: rjmp .LBB0_145
+; AVR2-NEXT: .LBB0_138: ; %shift.loop.preheader
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r25, r30
+; AVR2-NEXT: lsl r25
+; AVR2-NEXT: lsl r25
+; AVR2-NEXT: subi r25, 51
+; AVR2-NEXT: ldi r30, 1
+; AVR2-NEXT: ldi r31, 0
+; AVR2-NEXT: mov r20, r30
+; AVR2-NEXT: mov r21, r31
+; AVR2-NEXT: ldi r30, 0
+; AVR2-NEXT: ldi r31, 0
+; AVR2-NEXT: mov r2, r30
+; AVR2-NEXT: mov r3, r31
+; AVR2-NEXT: mov r12, r2
+; AVR2-NEXT: mov r13, r3
+; AVR2-NEXT: mov r10, r2
+; AVR2-NEXT: mov r11, r3
+; AVR2-NEXT: rjmp .LBB0_140
+; AVR2-NEXT: .LBB0_139: ; %shift.loop
+; AVR2-NEXT: ; in Loop: Header=BB0_140 Depth=2
+; AVR2-NEXT: mov r31, r13
+; AVR2-NEXT: lsl r31
+; AVR2-NEXT: mov r16, r1
+; AVR2-NEXT: rol r16
+; AVR2-NEXT: mov r17, r1
+; AVR2-NEXT: mov r8, r1
+; AVR2-NEXT: mov r9, r1
+; AVR2-NEXT: lsl r10
+; AVR2-NEXT: rol r11
+; AVR2-NEXT: rol r2
+; AVR2-NEXT: rol r3
+; AVR2-NEXT: or r2, r8
+; AVR2-NEXT: or r3, r9
+; AVR2-NEXT: or r10, r16
+; AVR2-NEXT: or r11, r17
+; AVR2-NEXT: lsl r20
+; AVR2-NEXT: rol r21
+; AVR2-NEXT: rol r12
+; AVR2-NEXT: rol r13
+; AVR2-NEXT: cpi r30, 1
+; AVR2-NEXT: brne .LBB0_140
+; AVR2-NEXT: rjmp .LBB0_146
+; AVR2-NEXT: .LBB0_140: ; %shift.loop
+; AVR2-NEXT: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: inc r25
+; AVR2-NEXT: ldi r30, 1
+; AVR2-NEXT: cpi r25, 0
+; AVR2-NEXT: breq .LBB0_139
+; AVR2-NEXT: ; %bb.141: ; %shift.loop
+; AVR2-NEXT: ; in Loop: Header=BB0_140 Depth=2
+; AVR2-NEXT: mov r30, r1
+; AVR2-NEXT: rjmp .LBB0_139
+; AVR2-NEXT: .LBB0_142: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT: rjmp .LBB0_324
+; AVR2-NEXT: .LBB0_143: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 37
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_144
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_144: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 2
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r24, r17
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT: brmi .LBB0_333
+; AVR2-NEXT: rjmp .LBB0_3
+; AVR2-NEXT: .LBB0_333:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_145: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r30, 1
+; AVR2-NEXT: ldi r31, 0
+; AVR2-NEXT: mov r20, r30
+; AVR2-NEXT: mov r21, r31
+; AVR2-NEXT: ldi r30, 0
+; AVR2-NEXT: ldi r31, 0
+; AVR2-NEXT: mov r2, r30
+; AVR2-NEXT: mov r3, r31
+; AVR2-NEXT: mov r12, r2
+; AVR2-NEXT: mov r13, r3
+; AVR2-NEXT: mov r10, r2
+; AVR2-NEXT: mov r11, r3
+; AVR2-NEXT: .LBB0_146: ; %shift.done
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: std Y+17, r21 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+16, r20 ; 2-byte Folded Spill
+; AVR2-NEXT: brne .LBB0_147
+; AVR2-NEXT: rjmp .LBB0_151
+; AVR2-NEXT: .LBB0_147: ; %shift.loop2.preheader
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: lsl r30
+; AVR2-NEXT: lsl r30
+; AVR2-NEXT: subi r30, 51
+; AVR2-NEXT: ldi r24, 2
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r8, r24
+; AVR2-NEXT: mov r9, r25
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r4, r24
+; AVR2-NEXT: mov r5, r25
+; AVR2-NEXT: mov r16, r4
+; AVR2-NEXT: mov r17, r5
+; AVR2-NEXT: rjmp .LBB0_149
+; AVR2-NEXT: .LBB0_148: ; %shift.loop2
+; AVR2-NEXT: ; in Loop: Header=BB0_149 Depth=2
+; AVR2-NEXT: mov r7, r17
+; AVR2-NEXT: lsl r7
+; AVR2-NEXT: mov r6, r1
+; AVR2-NEXT: rol r6
+; AVR2-NEXT: mov r7, r1
+; AVR2-NEXT: mov r14, r1
+; AVR2-NEXT: mov r15, r1
+; AVR2-NEXT: lsl r24
+; AVR2-NEXT: rol r25
+; AVR2-NEXT: rol r4
+; AVR2-NEXT: rol r5
+; AVR2-NEXT: or r4, r14
+; AVR2-NEXT: or r5, r15
+; AVR2-NEXT: or r24, r6
+; AVR2-NEXT: or r25, r7
+; AVR2-NEXT: lsl r8
+; AVR2-NEXT: rol r9
+; AVR2-NEXT: rol r16
+; AVR2-NEXT: rol r17
+; AVR2-NEXT: cpi r31, 1
+; AVR2-NEXT: breq .LBB0_152
+; AVR2-NEXT: .LBB0_149: ; %shift.loop2
+; AVR2-NEXT: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: inc r30
+; AVR2-NEXT: ldi r31, 1
+; AVR2-NEXT: cpi r30, 0
+; AVR2-NEXT: breq .LBB0_148
+; AVR2-NEXT: ; %bb.150: ; %shift.loop2
+; AVR2-NEXT: ; in Loop: Header=BB0_149 Depth=2
+; AVR2-NEXT: mov r31, r1
+; AVR2-NEXT: rjmp .LBB0_148
+; AVR2-NEXT: .LBB0_151: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 2
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r8, r24
+; AVR2-NEXT: mov r9, r25
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r4, r24
+; AVR2-NEXT: mov r5, r25
+; AVR2-NEXT: mov r16, r4
+; AVR2-NEXT: mov r17, r5
+; AVR2-NEXT: .LBB0_152: ; %shift.done1
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r26, r8
+; AVR2-NEXT: mov r27, r9
+; AVR2-NEXT: subi r26, 1
+; AVR2-NEXT: sbci r27, 0
+; AVR2-NEXT: mov r30, r16
+; AVR2-NEXT: mov r31, r17
+; AVR2-NEXT: sbci r30, 0
+; AVR2-NEXT: sbci r31, 0
+; AVR2-NEXT: mov r20, r30
+; AVR2-NEXT: mov r21, r31
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: sbci r30, 0
+; AVR2-NEXT: sbci r31, 0
+; AVR2-NEXT: mov r6, r30
+; AVR2-NEXT: mov r7, r31
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: sbci r30, 0
+; AVR2-NEXT: sbci r31, 0
+; AVR2-NEXT: and r26, r18
+; AVR2-NEXT: and r27, r19
+; AVR2-NEXT: std Y+11, r27 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+10, r26 ; 2-byte Folded Spill
+; AVR2-NEXT: ldd r26, Y+18 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r27, Y+19 ; 2-byte Folded Reload
+; AVR2-NEXT: and r20, r26
+; AVR2-NEXT: and r21, r27
+; AVR2-NEXT: std Y+9, r21 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+8, r20 ; 2-byte Folded Spill
+; AVR2-NEXT: and r6, r22
+; AVR2-NEXT: and r7, r23
+; AVR2-NEXT: ldd r14, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r15, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT: and r30, r14
+; AVR2-NEXT: and r31, r15
+; AVR2-NEXT: ldi r26, 1
+; AVR2-NEXT: ldd r14, Y+16 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r15, Y+17 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r20, Y+10 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+11 ; 2-byte Folded Reload
+; AVR2-NEXT: cp r14, r20
+; AVR2-NEXT: cpc r15, r21
+; AVR2-NEXT: ldd r20, Y+8 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+9 ; 2-byte Folded Reload
+; AVR2-NEXT: cpc r12, r20
+; AVR2-NEXT: cpc r13, r21
+; AVR2-NEXT: cpc r10, r6
+; AVR2-NEXT: cpc r11, r7
+; AVR2-NEXT: cpc r2, r30
+; AVR2-NEXT: cpc r3, r31
+; AVR2-NEXT: brlo .LBB0_154
+; AVR2-NEXT: ; %bb.153: ; %shift.done1
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r26, r1
+; AVR2-NEXT: .LBB0_154: ; %shift.done1
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: andi r26, 1
+; AVR2-NEXT: ldi r30, 0
+; AVR2-NEXT: ldi r31, 0
+; AVR2-NEXT: mov r14, r30
+; AVR2-NEXT: mov r15, r31
+; AVR2-NEXT: sub r14, r8
+; AVR2-NEXT: sbc r15, r9
+; AVR2-NEXT: std Y+11, r15 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+10, r14 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r14, r30
+; AVR2-NEXT: mov r15, r31
+; AVR2-NEXT: sbc r14, r16
+; AVR2-NEXT: sbc r15, r17
+; AVR2-NEXT: std Y+9, r15 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+8, r14 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r16, r30
+; AVR2-NEXT: mov r17, r31
+; AVR2-NEXT: sbc r16, r24
+; AVR2-NEXT: sbc r17, r25
+; AVR2-NEXT: std Y+7, r17 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+6, r16 ; 2-byte Folded Spill
+; AVR2-NEXT: sbc r30, r4
+; AVR2-NEXT: sbc r31, r5
+; AVR2-NEXT: std Y+5, r31 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+4, r30 ; 2-byte Folded Spill
+; AVR2-NEXT: cpi r26, 0
+; AVR2-NEXT: ldd r20, Y+16 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+17 ; 2-byte Folded Reload
+; AVR2-NEXT: breq .LBB0_155
+; AVR2-NEXT: rjmp .LBB0_164
+; AVR2-NEXT: .LBB0_155: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+1 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+2 ; 2-byte Folded Reload
+; AVR2-NEXT: cpi r24, 52
+; AVR2-NEXT: brne .LBB0_156
+; AVR2-NEXT: rjmp .LBB0_160
+; AVR2-NEXT: .LBB0_156: ; %shift.loop4.preheader
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: lsl r30
+; AVR2-NEXT: lsl r30
+; AVR2-NEXT: subi r30, 52
+; AVR2-NEXT: ldi r24, 1
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: ldi r16, 0
+; AVR2-NEXT: ldi r17, 0
+; AVR2-NEXT: mov r4, r16
+; AVR2-NEXT: mov r5, r17
+; AVR2-NEXT: mov r8, r4
+; AVR2-NEXT: mov r9, r5
+; AVR2-NEXT: rjmp .LBB0_158
+; AVR2-NEXT: .LBB0_157: ; %shift.loop4
+; AVR2-NEXT: ; in Loop: Header=BB0_158 Depth=2
+; AVR2-NEXT: mov r15, r17
+; AVR2-NEXT: lsl r15
+; AVR2-NEXT: mov r14, r1
+; AVR2-NEXT: rol r14
+; AVR2-NEXT: mov r15, r1
+; AVR2-NEXT: mov r6, r1
+; AVR2-NEXT: mov r7, r1
+; AVR2-NEXT: lsl r8
+; AVR2-NEXT: rol r9
+; AVR2-NEXT: rol r4
+; AVR2-NEXT: rol r5
+; AVR2-NEXT: or r4, r6
+; AVR2-NEXT: or r5, r7
+; AVR2-NEXT: or r8, r14
+; AVR2-NEXT: or r9, r15
+; AVR2-NEXT: lsl r24
+; AVR2-NEXT: rol r25
+; AVR2-NEXT: rol r16
+; AVR2-NEXT: rol r17
+; AVR2-NEXT: cpi r31, 1
+; AVR2-NEXT: breq .LBB0_161
+; AVR2-NEXT: .LBB0_158: ; %shift.loop4
+; AVR2-NEXT: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: inc r30
+; AVR2-NEXT: ldi r31, 1
+; AVR2-NEXT: cpi r30, 0
+; AVR2-NEXT: breq .LBB0_157
+; AVR2-NEXT: ; %bb.159: ; %shift.loop4
+; AVR2-NEXT: ; in Loop: Header=BB0_158 Depth=2
+; AVR2-NEXT: mov r31, r1
+; AVR2-NEXT: rjmp .LBB0_157
+; AVR2-NEXT: .LBB0_160: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 1
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: ldi r30, 0
+; AVR2-NEXT: ldi r31, 0
+; AVR2-NEXT: mov r4, r30
+; AVR2-NEXT: mov r5, r31
+; AVR2-NEXT: mov r16, r4
+; AVR2-NEXT: mov r17, r5
+; AVR2-NEXT: mov r8, r4
+; AVR2-NEXT: mov r9, r5
+; AVR2-NEXT: .LBB0_161: ; %shift.done3
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r30, Y+18 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+19 ; 2-byte Folded Reload
+; AVR2-NEXT: and r16, r30
+; AVR2-NEXT: and r17, r31
+; AVR2-NEXT: and r8, r22
+; AVR2-NEXT: and r9, r23
+; AVR2-NEXT: ldd r30, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT: and r4, r30
+; AVR2-NEXT: and r5, r31
+; AVR2-NEXT: and r24, r18
+; AVR2-NEXT: and r25, r19
+; AVR2-NEXT: ldi r30, 1
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: cpc r16, r24
+; AVR2-NEXT: cpc r17, r25
+; AVR2-NEXT: cpc r8, r24
+; AVR2-NEXT: cpc r9, r25
+; AVR2-NEXT: cpc r4, r24
+; AVR2-NEXT: cpc r5, r25
+; AVR2-NEXT: breq .LBB0_163
+; AVR2-NEXT: ; %bb.162: ; %shift.done3
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r30, r1
+; AVR2-NEXT: .LBB0_163: ; %shift.done3
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: andi r30, 1
+; AVR2-NEXT: cpi r30, 0
+; AVR2-NEXT: breq .LBB0_164
+; AVR2-NEXT: rjmp .LBB0_168
+; AVR2-NEXT: .LBB0_164: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: add r18, r20
+; AVR2-NEXT: adc r19, r21
+; AVR2-NEXT: ldd r16, Y+18 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r17, Y+19 ; 2-byte Folded Reload
+; AVR2-NEXT: adc r16, r12
+; AVR2-NEXT: adc r17, r13
+; AVR2-NEXT: adc r22, r10
+; AVR2-NEXT: adc r23, r11
+; AVR2-NEXT: ldd r14, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r15, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT: adc r14, r2
+; AVR2-NEXT: adc r15, r3
+; AVR2-NEXT: ldi r24, 1
+; AVR2-NEXT: cp r18, r1
+; AVR2-NEXT: cpc r19, r1
+; AVR2-NEXT: ldi r30, 0
+; AVR2-NEXT: ldi r31, 0
+; AVR2-NEXT: std Y+19, r17 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+18, r16 ; 2-byte Folded Spill
+; AVR2-NEXT: cpc r16, r30
+; AVR2-NEXT: cpc r17, r31
+; AVR2-NEXT: cpc r22, r30
+; AVR2-NEXT: cpc r23, r31
+; AVR2-NEXT: ldi r30, 16
+; AVR2-NEXT: ldi r31, 0
+; AVR2-NEXT: std Y+36, r15 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+35, r14 ; 2-byte Folded Spill
+; AVR2-NEXT: cpc r14, r30
+; AVR2-NEXT: cpc r15, r31
+; AVR2-NEXT: brlo .LBB0_166
+; AVR2-NEXT: ; %bb.165: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r1
+; AVR2-NEXT: .LBB0_166: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: andi r24, 1
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: ldd r24, Y+3 ; 1-byte Folded Reload
+; AVR2-NEXT: brne .LBB0_168
+; AVR2-NEXT: ; %bb.167: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: inc r24
+; AVR2-NEXT: std Y+46, r24
+; AVR2-NEXT: .LBB0_168: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+10 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+11 ; 2-byte Folded Reload
+; AVR2-NEXT: and r18, r24
+; AVR2-NEXT: and r19, r25
+; AVR2-NEXT: ldd r26, Y+18 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r27, Y+19 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r24, Y+8 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+9 ; 2-byte Folded Reload
+; AVR2-NEXT: and r26, r24
+; AVR2-NEXT: and r27, r25
+; AVR2-NEXT: ldd r24, Y+6 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+7 ; 2-byte Folded Reload
+; AVR2-NEXT: and r22, r24
+; AVR2-NEXT: and r23, r25
+; AVR2-NEXT: ldd r24, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r20, Y+4 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+5 ; 2-byte Folded Reload
+; AVR2-NEXT: and r24, r20
+; AVR2-NEXT: and r25, r21
+; AVR2-NEXT: std Y+36, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+35, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: ldd r2, Y+20 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r3, Y+21 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r6, Y+12 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r7, Y+13 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r4, Y+14 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r5, Y+15 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r12, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r13, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT: .LBB0_169: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT: ori r25, 24
+; AVR2-NEXT: std Y+31, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+30, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: ldd r24, Y+24 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+25 ; 2-byte Folded Reload
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: ldi r24, 4
+; AVR2-NEXT: cpc r25, r24
+; AVR2-NEXT: brne .LBB0_174
+; AVR2-NEXT: ; %bb.170: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 1
+; AVR2-NEXT: cp r18, r1
+; AVR2-NEXT: cpc r19, r1
+; AVR2-NEXT: ldi r18, 0
+; AVR2-NEXT: ldi r19, 0
+; AVR2-NEXT: cpc r26, r18
+; AVR2-NEXT: cpc r27, r19
+; AVR2-NEXT: cpc r22, r18
+; AVR2-NEXT: cpc r23, r19
+; AVR2-NEXT: ldd r20, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT: cpc r20, r18
+; AVR2-NEXT: cpc r21, r19
+; AVR2-NEXT: breq .LBB0_172
+; AVR2-NEXT: ; %bb.171: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r1
+; AVR2-NEXT: .LBB0_172: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: andi r24, 1
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: ldd r22, Y+22 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r23, Y+23 ; 2-byte Folded Reload
+; AVR2-NEXT: breq .LBB0_173
+; AVR2-NEXT: rjmp .LBB0_185
+; AVR2-NEXT: .LBB0_173: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ori r22, 8
+; AVR2-NEXT: rjmp .LBB0_186
+; AVR2-NEXT: .LBB0_174: ; %.preheader18
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r25, 13
+; AVR2-NEXT: rjmp .LBB0_177
+; AVR2-NEXT: .LBB0_175: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT: mov r26, r10
+; AVR2-NEXT: mov r27, r11
+; AVR2-NEXT: .LBB0_176: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT: mov r17, r19
+; AVR2-NEXT: mov r20, r1
+; AVR2-NEXT: mov r19, r1
+; AVR2-NEXT: mov r18, r1
+; AVR2-NEXT: or r26, r20
+; AVR2-NEXT: or r27, r21
+; AVR2-NEXT: or r18, r16
+; AVR2-NEXT: or r19, r17
+; AVR2-NEXT: dec r25
+; AVR2-NEXT: .LBB0_177: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: cpi r25, 0
+; AVR2-NEXT: brne .LBB0_178
+; AVR2-NEXT: rjmp .LBB0_184
+; AVR2-NEXT: .LBB0_178: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT: mov r16, r18
+; AVR2-NEXT: swap r16
+; AVR2-NEXT: andi r16, 15
+; AVR2-NEXT: swap r19
+; AVR2-NEXT: eor r16, r19
+; AVR2-NEXT: andi r19, 15
+; AVR2-NEXT: eor r16, r19
+; AVR2-NEXT: swap r26
+; AVR2-NEXT: eor r19, r26
+; AVR2-NEXT: andi r26, 15
+; AVR2-NEXT: eor r19, r26
+; AVR2-NEXT: swap r27
+; AVR2-NEXT: eor r26, r27
+; AVR2-NEXT: andi r27, 15
+; AVR2-NEXT: eor r26, r27
+; AVR2-NEXT: swap r22
+; AVR2-NEXT: mov r21, r22
+; AVR2-NEXT: andi r21, 240
+; AVR2-NEXT: andi r22, 15
+; AVR2-NEXT: swap r23
+; AVR2-NEXT: eor r22, r23
+; AVR2-NEXT: andi r23, 15
+; AVR2-NEXT: eor r22, r23
+; AVR2-NEXT: ldd r30, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT: swap r30
+; AVR2-NEXT: eor r23, r30
+; AVR2-NEXT: andi r30, 15
+; AVR2-NEXT: eor r23, r30
+; AVR2-NEXT: swap r31
+; AVR2-NEXT: eor r30, r31
+; AVR2-NEXT: andi r31, 15
+; AVR2-NEXT: eor r30, r31
+; AVR2-NEXT: std Y+36, r31 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+35, r30 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r14, r25
+; AVR2-NEXT: clr r15
+; AVR2-NEXT: andi r18, 15
+; AVR2-NEXT: cpi r18, 0
+; AVR2-NEXT: brne .LBB0_180
+; AVR2-NEXT: ; %bb.179: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT: cp r12, r14
+; AVR2-NEXT: cpc r13, r15
+; AVR2-NEXT: brge .LBB0_180
+; AVR2-NEXT: rjmp .LBB0_176
+; AVR2-NEXT: .LBB0_180: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT: mov r10, r26
+; AVR2-NEXT: mov r11, r27
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: ori r24, 48
+; AVR2-NEXT: cpi r18, 10
+; AVR2-NEXT: brlo .LBB0_182
+; AVR2-NEXT: ; %bb.181: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT: ldd r24, Y+34 ; 1-byte Folded Reload
+; AVR2-NEXT: sub r18, r24
+; AVR2-NEXT: subi r18, -87
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: .LBB0_182: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT: mov r30, r28
+; AVR2-NEXT: mov r31, r29
+; AVR2-NEXT: adiw r30, 41
+; AVR2-NEXT: add r30, r14
+; AVR2-NEXT: adc r31, r15
+; AVR2-NEXT: std Z+5, r24
+; AVR2-NEXT: cp r14, r12
+; AVR2-NEXT: cpc r15, r13
+; AVR2-NEXT: brge .LBB0_183
+; AVR2-NEXT: rjmp .LBB0_175
+; AVR2-NEXT: .LBB0_183: ; in Loop: Header=BB0_177 Depth=2
+; AVR2-NEXT: mov r12, r14
+; AVR2-NEXT: mov r13, r15
+; AVR2-NEXT: rjmp .LBB0_175
+; AVR2-NEXT: .LBB0_184: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r27, 112
+; AVR2-NEXT: ldi r26, 14
+; AVR2-NEXT: ldi r24, 1
+; AVR2-NEXT: mov r8, r12
+; AVR2-NEXT: mov r9, r13
+; AVR2-NEXT: ldd r20, Y+24 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r21, Y+25 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r22, Y+22 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r23, Y+23 ; 2-byte Folded Reload
+; AVR2-NEXT: rjmp .LBB0_187
+; AVR2-NEXT: .LBB0_185: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ori r22, 4
+; AVR2-NEXT: .LBB0_186: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: std Y+45, r22
+; AVR2-NEXT: ldi r27, 112
+; AVR2-NEXT: ldi r26, 14
+; AVR2-NEXT: ldi r24, 1
+; AVR2-NEXT: ldi r18, 0
+; AVR2-NEXT: ldi r19, 4
+; AVR2-NEXT: mov r20, r18
+; AVR2-NEXT: mov r21, r19
+; AVR2-NEXT: mov r8, r12
+; AVR2-NEXT: mov r9, r13
+; AVR2-NEXT: .LBB0_187: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r30, r20
+; AVR2-NEXT: mov r31, r21
+; AVR2-NEXT: sbiw r30, 10
+; AVR2-NEXT: ldi r25, 2
+; AVR2-NEXT: cpi r30, -19
+; AVR2-NEXT: ldi r18, -1
+; AVR2-NEXT: cpc r31, r18
+; AVR2-NEXT: brlo .LBB0_189
+; AVR2-NEXT: ; %bb.188: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r25, r24
+; AVR2-NEXT: .LBB0_189: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r18, r20
+; AVR2-NEXT: mov r19, r21
+; AVR2-NEXT: subi r18, 100
+; AVR2-NEXT: sbci r19, 0
+; AVR2-NEXT: ldi r23, 3
+; AVR2-NEXT: cpi r18, 57
+; AVR2-NEXT: ldi r24, -1
+; AVR2-NEXT: std Y+36, r19 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+35, r18 ; 2-byte Folded Spill
+; AVR2-NEXT: cpc r19, r24
+; AVR2-NEXT: ldd r30, Y+28 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+29 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r16, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r17, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT: brlo .LBB0_191
+; AVR2-NEXT: ; %bb.190: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r23, r25
+; AVR2-NEXT: .LBB0_191: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r22
+; AVR2-NEXT: andi r24, 1
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: brne .LBB0_196
+; AVR2-NEXT: ; %bb.192: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: mov r25, r17
+; AVR2-NEXT: andi r24, 2
+; AVR2-NEXT: andi r25, 0
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: brne .LBB0_197
+; AVR2-NEXT: ; %bb.193: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: mov r25, r17
+; AVR2-NEXT: andi r24, 4
+; AVR2-NEXT: andi r25, 0
+; AVR2-NEXT: ldi r18, 1
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: breq .LBB0_195
+; AVR2-NEXT: ; %bb.194: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r18, r1
+; AVR2-NEXT: .LBB0_195: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: lsl r24
+; AVR2-NEXT: lsl r24
+; AVR2-NEXT: lsl r24
+; AVR2-NEXT: rjmp .LBB0_199
+; AVR2-NEXT: .LBB0_196: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 45
+; AVR2-NEXT: rjmp .LBB0_198
+; AVR2-NEXT: .LBB0_197: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 43
+; AVR2-NEXT: .LBB0_198: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r18, r1
+; AVR2-NEXT: .LBB0_199: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r11, r24
+; AVR2-NEXT: andi r22, 12
+; AVR2-NEXT: cpi r22, 0
+; AVR2-NEXT: brne .LBB0_200
+; AVR2-NEXT: rjmp .LBB0_208
+; AVR2-NEXT: .LBB0_200: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: andi r24, 1
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: ldi r24, 3
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: brne .LBB0_202
+; AVR2-NEXT: ; %bb.201: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 4
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: .LBB0_202: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r24, r30
+; AVR2-NEXT: cpc r25, r31
+; AVR2-NEXT: brlt .LBB0_203
+; AVR2-NEXT: rjmp .LBB0_210
+; AVR2-NEXT: .LBB0_203: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: sub r30, r24
+; AVR2-NEXT: sbc r31, r25
+; AVR2-NEXT: andi r16, 8
+; AVR2-NEXT: andi r17, 0
+; AVR2-NEXT: cp r16, r1
+; AVR2-NEXT: cpc r17, r1
+; AVR2-NEXT: breq .LBB0_204
+; AVR2-NEXT: rjmp .LBB0_211
+; AVR2-NEXT: .LBB0_204: ; %.preheader15
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r17, r18
+; AVR2-NEXT: .LBB0_205: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: mov r14, r30
+; AVR2-NEXT: mov r15, r31
+; AVR2-NEXT: ldi r24, 32
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_206
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_206: ; in Loop: Header=BB0_205 Depth=2
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r30, r14
+; AVR2-NEXT: mov r31, r15
+; AVR2-NEXT: sbiw r30, 1
+; AVR2-NEXT: cp r30, r1
+; AVR2-NEXT: cpc r31, r1
+; AVR2-NEXT: brne .LBB0_205
+; AVR2-NEXT: ; %bb.207: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: mov r18, r17
+; AVR2-NEXT: rjmp .LBB0_211
+; AVR2-NEXT: .LBB0_208: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: mov r25, r17
+; AVR2-NEXT: andi r24, 0
+; AVR2-NEXT: andi r25, 48
+; AVR2-NEXT: cp r1, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: brne .LBB0_209
+; AVR2-NEXT: rjmp .LBB0_219
+; AVR2-NEXT: .LBB0_209: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r22, r18
+; AVR2-NEXT: mov r30, r8
+; AVR2-NEXT: mov r31, r9
+; AVR2-NEXT: rjmp .LBB0_232
+; AVR2-NEXT: .LBB0_210: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: .LBB0_211: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: andi r18, 1
+; AVR2-NEXT: cpi r18, 0
+; AVR2-NEXT: mov r24, r11
+; AVR2-NEXT: brne .LBB0_214
+; AVR2-NEXT: ; %bb.212: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r16, r30
+; AVR2-NEXT: mov r17, r31
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_213
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_213: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r30, r16
+; AVR2-NEXT: mov r31, r17
+; AVR2-NEXT: .LBB0_214: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r16, r30
+; AVR2-NEXT: mov r17, r31
+; AVR2-NEXT: ldd r24, Y+45
+; AVR2-NEXT: andi r24, 8
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: ldi r24, lo8(.str)
+; AVR2-NEXT: ldi r25, hi8(.str)
+; AVR2-NEXT: mov r26, r24
+; AVR2-NEXT: mov r27, r25
+; AVR2-NEXT: breq .LBB0_216
+; AVR2-NEXT: ; %bb.215: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, lo8(.str.1)
+; AVR2-NEXT: ldi r25, hi8(.str.1)
+; AVR2-NEXT: mov r26, r24
+; AVR2-NEXT: mov r27, r25
+; AVR2-NEXT: .LBB0_216: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: ld r24, X
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: breq .LBB0_218
+; AVR2-NEXT: ; %bb.217: ; in Loop: Header=BB0_216 Depth=2
+; AVR2-NEXT: ldd r25, Y+34 ; 1-byte Folded Reload
+; AVR2-NEXT: sub r24, r25
+; AVR2-NEXT: ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r30, 1
+; AVR2-NEXT: std Y+40, r31 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r30 ; 2-byte Folded Spill
+; AVR2-NEXT: adiw r26, 1
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: mov r14, r26
+; AVR2-NEXT: mov r15, r27
+; AVR2-NEXT: icall
+; AVR2-NEXT: mov r26, r14
+; AVR2-NEXT: mov r27, r15
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_216
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_218: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT: mov r30, r16
+; AVR2-NEXT: mov r31, r17
+; AVR2-NEXT: rjmp .LBB0_324
+; AVR2-NEXT: .LBB0_219: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r8
+; AVR2-NEXT: mov r25, r9
+; AVR2-NEXT: cpi r24, 2
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: brsh .LBB0_221
+; AVR2-NEXT: ; %bb.220: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 1
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r8, r24
+; AVR2-NEXT: mov r9, r25
+; AVR2-NEXT: .LBB0_221: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: mov r30, r26
+; AVR2-NEXT: clr r31
+; AVR2-NEXT: cpi r26, 0
+; AVR2-NEXT: breq .LBB0_224
+; AVR2-NEXT: ; %bb.222: ; in Loop: Header=BB0_221 Depth=2
+; AVR2-NEXT: mov r24, r28
+; AVR2-NEXT: mov r25, r29
+; AVR2-NEXT: adiw r24, 41
+; AVR2-NEXT: add r24, r30
+; AVR2-NEXT: adc r25, r31
+; AVR2-NEXT: mov r14, r30
+; AVR2-NEXT: mov r15, r31
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: ldd r24, Z+4
+; AVR2-NEXT: mov r30, r14
+; AVR2-NEXT: mov r31, r15
+; AVR2-NEXT: cpi r24, 48
+; AVR2-NEXT: brne .LBB0_224
+; AVR2-NEXT: ; %bb.223: ; in Loop: Header=BB0_221 Depth=2
+; AVR2-NEXT: dec r26
+; AVR2-NEXT: rjmp .LBB0_221
+; AVR2-NEXT: .LBB0_224: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: mov r25, r17
+; AVR2-NEXT: andi r24, 16
+; AVR2-NEXT: andi r25, 0
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: breq .LBB0_226
+; AVR2-NEXT: ; %bb.225: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r30, r8
+; AVR2-NEXT: mov r31, r9
+; AVR2-NEXT: .LBB0_226: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r20, -4
+; AVR2-NEXT: ldi r24, -1
+; AVR2-NEXT: cpc r21, r24
+; AVR2-NEXT: brlt .LBB0_230
+; AVR2-NEXT: ; %bb.227: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r20, r8
+; AVR2-NEXT: cpc r21, r9
+; AVR2-NEXT: brge .LBB0_230
+; AVR2-NEXT: ; %bb.228: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ori r17, 32
+; AVR2-NEXT: mov r22, r18
+; AVR2-NEXT: cp r20, r30
+; AVR2-NEXT: cpc r21, r31
+; AVR2-NEXT: brge .LBB0_231
+; AVR2-NEXT: ; %bb.229: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r20
+; AVR2-NEXT: mov r25, r21
+; AVR2-NEXT: com r24
+; AVR2-NEXT: com r25
+; AVR2-NEXT: add r30, r24
+; AVR2-NEXT: adc r31, r25
+; AVR2-NEXT: rjmp .LBB0_232
+; AVR2-NEXT: .LBB0_230: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r22, r18
+; AVR2-NEXT: sbiw r30, 1
+; AVR2-NEXT: rjmp .LBB0_232
+; AVR2-NEXT: .LBB0_231: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: .LBB0_232: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r20
+; AVR2-NEXT: mov r25, r21
+; AVR2-NEXT: subi r24, 232
+; AVR2-NEXT: sbci r25, 3
+; AVR2-NEXT: mov r18, r16
+; AVR2-NEXT: mov r19, r17
+; AVR2-NEXT: andi r18, 0
+; AVR2-NEXT: andi r19, 32
+; AVR2-NEXT: cp r1, r1
+; AVR2-NEXT: std Y+31, r19 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+30, r18 ; 2-byte Folded Spill
+; AVR2-NEXT: cpc r19, r1
+; AVR2-NEXT: mov r12, r16
+; AVR2-NEXT: mov r13, r17
+; AVR2-NEXT: std Y+21, r3 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+20, r2 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+27, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+26, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: brne .LBB0_238
+; AVR2-NEXT: ; %bb.233: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r24, 49
+; AVR2-NEXT: mov r18, r24
+; AVR2-NEXT: mov r19, r25
+; AVR2-NEXT: ldi r24, -8
+; AVR2-NEXT: cpc r19, r24
+; AVR2-NEXT: ldi r18, 4
+; AVR2-NEXT: ldi r19, 0
+; AVR2-NEXT: brlo .LBB0_235
+; AVR2-NEXT: ; %bb.234: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r18, r23
+; AVR2-NEXT: clr r19
+; AVR2-NEXT: .LBB0_235: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r12
+; AVR2-NEXT: mov r25, r13
+; AVR2-NEXT: andi r24, 0
+; AVR2-NEXT: andi r25, 8
+; AVR2-NEXT: cp r1, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: ldi r24, 3
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: breq .LBB0_237
+; AVR2-NEXT: ; %bb.236: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 5
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: .LBB0_237: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: add r24, r18
+; AVR2-NEXT: adc r25, r19
+; AVR2-NEXT: mov r16, r12
+; AVR2-NEXT: mov r17, r13
+; AVR2-NEXT: rjmp .LBB0_240
+; AVR2-NEXT: .LBB0_238: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r1, r20
+; AVR2-NEXT: cpc r1, r21
+; AVR2-NEXT: ldi r24, 1
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: brge .LBB0_240
+; AVR2-NEXT: ; %bb.239: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r20
+; AVR2-NEXT: mov r25, r21
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: .LBB0_240: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r30, r1
+; AVR2-NEXT: cpc r31, r1
+; AVR2-NEXT: mov r2, r30
+; AVR2-NEXT: mov r3, r31
+; AVR2-NEXT: breq .LBB0_242
+; AVR2-NEXT: ; %bb.241: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: adiw r30, 1
+; AVR2-NEXT: rjmp .LBB0_243
+; AVR2-NEXT: .LBB0_242: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r30, r16
+; AVR2-NEXT: mov r31, r17
+; AVR2-NEXT: swap r31
+; AVR2-NEXT: swap r30
+; AVR2-NEXT: andi r30, 15
+; AVR2-NEXT: eor r30, r31
+; AVR2-NEXT: andi r31, 15
+; AVR2-NEXT: eor r30, r31
+; AVR2-NEXT: andi r30, 1
+; AVR2-NEXT: andi r31, 0
+; AVR2-NEXT: .LBB0_243: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r16, r22
+; AVR2-NEXT: mov r18, r22
+; AVR2-NEXT: com r18
+; AVR2-NEXT: andi r18, 1
+; AVR2-NEXT: andi r19, 0
+; AVR2-NEXT: add r18, r30
+; AVR2-NEXT: adc r19, r31
+; AVR2-NEXT: add r18, r24
+; AVR2-NEXT: adc r19, r25
+; AVR2-NEXT: ldd r24, Y+28 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+29 ; 2-byte Folded Reload
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: sub r30, r18
+; AVR2-NEXT: sbc r31, r19
+; AVR2-NEXT: cp r18, r24
+; AVR2-NEXT: cpc r19, r25
+; AVR2-NEXT: mov r14, r30
+; AVR2-NEXT: mov r15, r31
+; AVR2-NEXT: brlt .LBB0_245
+; AVR2-NEXT: ; %bb.244: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: .LBB0_245: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r18, r12
+; AVR2-NEXT: mov r19, r13
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: mov r25, r19
+; AVR2-NEXT: andi r24, 9
+; AVR2-NEXT: andi r25, 0
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: mov r8, r20
+; AVR2-NEXT: mov r9, r21
+; AVR2-NEXT: std Y+24, r23 ; 1-byte Folded Spill
+; AVR2-NEXT: mov r10, r26
+; AVR2-NEXT: breq .LBB0_246
+; AVR2-NEXT: rjmp .LBB0_251
+; AVR2-NEXT: .LBB0_246: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r30, r1
+; AVR2-NEXT: cpc r31, r1
+; AVR2-NEXT: brne .LBB0_247
+; AVR2-NEXT: rjmp .LBB0_251
+; AVR2-NEXT: .LBB0_247: ; %.preheader
+; AVR2-NEXT: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r17, r27
+; AVR2-NEXT: .LBB0_248: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: ldi r24, 32
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_249
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_249: ; in Loop: Header=BB0_248 Depth=2
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r24, r14
+; AVR2-NEXT: mov r25, r15
+; AVR2-NEXT: sbiw r24, 1
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: mov r14, r24
+; AVR2-NEXT: mov r15, r25
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: brne .LBB0_248
+; AVR2-NEXT: ; %bb.250: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: mov r18, r12
+; AVR2-NEXT: mov r19, r13
+; AVR2-NEXT: mov r20, r8
+; AVR2-NEXT: mov r21, r9
+; AVR2-NEXT: mov r26, r10
+; AVR2-NEXT: mov r27, r17
+; AVR2-NEXT: .LBB0_251: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: std Y+22, r27 ; 1-byte Folded Spill
+; AVR2-NEXT: andi r16, 1
+; AVR2-NEXT: cpi r16, 0
+; AVR2-NEXT: mov r24, r11
+; AVR2-NEXT: breq .LBB0_253
+; AVR2-NEXT: ; %bb.252: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r16, 232
+; AVR2-NEXT: ldi r17, 3
+; AVR2-NEXT: rjmp .LBB0_255
+; AVR2-NEXT: .LBB0_253: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r14, r30
+; AVR2-NEXT: mov r15, r31
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: ldi r16, 232
+; AVR2-NEXT: ldi r17, 3
+; AVR2-NEXT: brpl .LBB0_254
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_254: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r30, r14
+; AVR2-NEXT: mov r31, r15
+; AVR2-NEXT: mov r18, r12
+; AVR2-NEXT: mov r19, r13
+; AVR2-NEXT: mov r20, r8
+; AVR2-NEXT: mov r21, r9
+; AVR2-NEXT: mov r26, r10
+; AVR2-NEXT: .LBB0_255: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: mov r25, r19
+; AVR2-NEXT: andi r24, 0
+; AVR2-NEXT: andi r25, 8
+; AVR2-NEXT: cp r1, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: brne .LBB0_256
+; AVR2-NEXT: rjmp .LBB0_259
+; AVR2-NEXT: .LBB0_256: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r14, r30
+; AVR2-NEXT: mov r15, r31
+; AVR2-NEXT: ldi r24, 48
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_257
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_257: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 120
+; AVR2-NEXT: ldd r25, Y+34 ; 1-byte Folded Reload
+; AVR2-NEXT: sub r24, r25
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_258
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_258: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 2
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r30, r14
+; AVR2-NEXT: mov r31, r15
+; AVR2-NEXT: mov r18, r12
+; AVR2-NEXT: mov r19, r13
+; AVR2-NEXT: mov r20, r8
+; AVR2-NEXT: mov r21, r9
+; AVR2-NEXT: mov r26, r10
+; AVR2-NEXT: .LBB0_259: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: mov r25, r19
+; AVR2-NEXT: andi r24, 8
+; AVR2-NEXT: andi r25, 0
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: breq .LBB0_260
+; AVR2-NEXT: rjmp .LBB0_265
+; AVR2-NEXT: .LBB0_260: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r30, r1
+; AVR2-NEXT: cpc r31, r1
+; AVR2-NEXT: breq .LBB0_265
+; AVR2-NEXT: ; %bb.261: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: add r24, r30
+; AVR2-NEXT: adc r25, r31
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: .LBB0_262: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: mov r14, r30
+; AVR2-NEXT: mov r15, r31
+; AVR2-NEXT: ldi r24, 48
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_263
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_263: ; in Loop: Header=BB0_262 Depth=2
+; AVR2-NEXT: mov r30, r14
+; AVR2-NEXT: mov r31, r15
+; AVR2-NEXT: sbiw r30, 1
+; AVR2-NEXT: cp r30, r1
+; AVR2-NEXT: cpc r31, r1
+; AVR2-NEXT: brne .LBB0_262
+; AVR2-NEXT: ; %bb.264: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: mov r20, r8
+; AVR2-NEXT: mov r21, r9
+; AVR2-NEXT: mov r26, r10
+; AVR2-NEXT: .LBB0_265: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: std Y+29, r31 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+28, r30 ; 2-byte Folded Spill
+; AVR2-NEXT: ldd r24, Y+30 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+31 ; 2-byte Folded Reload
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: breq .LBB0_266
+; AVR2-NEXT: rjmp .LBB0_277
+; AVR2-NEXT: .LBB0_266: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+46
+; AVR2-NEXT: cpi r24, 49
+; AVR2-NEXT: breq .LBB0_268
+; AVR2-NEXT: ; %bb.267: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r25, Y+45
+; AVR2-NEXT: andi r25, -17
+; AVR2-NEXT: std Y+45, r25
+; AVR2-NEXT: .LBB0_268: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_269
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_269: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r2
+; AVR2-NEXT: mov r25, r3
+; AVR2-NEXT: cp r1, r24
+; AVR2-NEXT: cpc r1, r25
+; AVR2-NEXT: brlt .LBB0_270
+; AVR2-NEXT: rjmp .LBB0_293
+; AVR2-NEXT: .LBB0_270: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 46
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_271
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_271: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 2
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: ldi r17, 1
+; AVR2-NEXT: mov r18, r2
+; AVR2-NEXT: mov r19, r3
+; AVR2-NEXT: rjmp .LBB0_274
+; AVR2-NEXT: .LBB0_272: ; in Loop: Header=BB0_274 Depth=2
+; AVR2-NEXT: mov r18, r28
+; AVR2-NEXT: mov r19, r29
+; AVR2-NEXT: subi r18, 215
+; AVR2-NEXT: sbci r19, 255
+; AVR2-NEXT: add r18, r24
+; AVR2-NEXT: adc r19, r25
+; AVR2-NEXT: mov r30, r18
+; AVR2-NEXT: mov r31, r19
+; AVR2-NEXT: ldd r24, Z+5
+; AVR2-NEXT: .LBB0_273: ; in Loop: Header=BB0_274 Depth=2
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: mov r30, r12
+; AVR2-NEXT: mov r31, r13
+; AVR2-NEXT: adiw r30, 1
+; AVR2-NEXT: mov r12, r30
+; AVR2-NEXT: mov r13, r31
+; AVR2-NEXT: inc r17
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: mov r18, r2
+; AVR2-NEXT: mov r19, r3
+; AVR2-NEXT: brpl .LBB0_274
+; AVR2-NEXT: ; %bb.344:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_274: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: mov r24, r17
+; AVR2-NEXT: clr r25
+; AVR2-NEXT: cp r18, r24
+; AVR2-NEXT: cpc r19, r25
+; AVR2-NEXT: brge .LBB0_275
+; AVR2-NEXT: rjmp .LBB0_295
+; AVR2-NEXT: .LBB0_275: ; in Loop: Header=BB0_274 Depth=2
+; AVR2-NEXT: mov r18, r10
+; AVR2-NEXT: cp r17, r18
+; AVR2-NEXT: brsh .LBB0_276
+; AVR2-NEXT: rjmp .LBB0_272
+; AVR2-NEXT: .LBB0_276: ; in Loop: Header=BB0_274 Depth=2
+; AVR2-NEXT: ldi r24, 48
+; AVR2-NEXT: rjmp .LBB0_273
+; AVR2-NEXT: .LBB0_277: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r1, r20
+; AVR2-NEXT: cpc r1, r21
+; AVR2-NEXT: mov r16, r20
+; AVR2-NEXT: mov r17, r21
+; AVR2-NEXT: brlt .LBB0_279
+; AVR2-NEXT: ; %bb.278: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r16, 0
+; AVR2-NEXT: ldi r17, 0
+; AVR2-NEXT: .LBB0_279: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: neg r3
+; AVR2-NEXT: neg r2
+; AVR2-NEXT: sbc r3, r1
+; AVR2-NEXT: mov r14, r26
+; AVR2-NEXT: clr r15
+; AVR2-NEXT: mov r10, r2
+; AVR2-NEXT: mov r11, r3
+; AVR2-NEXT: .LBB0_280: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: cpi r16, -1
+; AVR2-NEXT: ldi r24, -1
+; AVR2-NEXT: cpc r17, r24
+; AVR2-NEXT: brne .LBB0_283
+; AVR2-NEXT: ; %bb.281: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT: ldi r24, 46
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_282
+; AVR2-NEXT: ; %bb.346:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_282: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r2, r10
+; AVR2-NEXT: mov r3, r11
+; AVR2-NEXT: .LBB0_283: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT: mov r20, r8
+; AVR2-NEXT: mov r21, r9
+; AVR2-NEXT: mov r18, r20
+; AVR2-NEXT: mov r19, r21
+; AVR2-NEXT: sub r18, r16
+; AVR2-NEXT: sbc r19, r17
+; AVR2-NEXT: ldi r24, 48
+; AVR2-NEXT: mov r25, r19
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brmi .LBB0_286
+; AVR2-NEXT: ; %bb.284: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT: cp r18, r14
+; AVR2-NEXT: cpc r19, r15
+; AVR2-NEXT: brge .LBB0_286
+; AVR2-NEXT: ; %bb.285: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT: mov r24, r28
+; AVR2-NEXT: mov r25, r29
+; AVR2-NEXT: adiw r24, 41
+; AVR2-NEXT: add r24, r18
+; AVR2-NEXT: adc r25, r19
+; AVR2-NEXT: mov r30, r24
+; AVR2-NEXT: mov r31, r25
+; AVR2-NEXT: ldd r24, Z+5
+; AVR2-NEXT: mov r2, r10
+; AVR2-NEXT: mov r3, r11
+; AVR2-NEXT: .LBB0_286: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT: mov r30, r16
+; AVR2-NEXT: mov r31, r17
+; AVR2-NEXT: sbiw r30, 1
+; AVR2-NEXT: cp r2, r16
+; AVR2-NEXT: cpc r3, r17
+; AVR2-NEXT: brge .LBB0_288
+; AVR2-NEXT: ; %bb.287: ; in Loop: Header=BB0_280 Depth=2
+; AVR2-NEXT: mov r16, r30
+; AVR2-NEXT: mov r17, r31
+; AVR2-NEXT: ldd r30, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r30, 1
+; AVR2-NEXT: std Y+40, r31 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r30 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: mov r2, r10
+; AVR2-NEXT: mov r3, r11
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brmi .LBB0_334
+; AVR2-NEXT: rjmp .LBB0_280
+; AVR2-NEXT: .LBB0_334:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_288: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r30, r20
+; AVR2-NEXT: cpc r31, r21
+; AVR2-NEXT: breq .LBB0_289
+; AVR2-NEXT: rjmp .LBB0_297
+; AVR2-NEXT: .LBB0_289: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r25, Y+46
+; AVR2-NEXT: cpi r25, 54
+; AVR2-NEXT: ldd r2, Y+20 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r3, Y+21 ; 2-byte Folded Reload
+; AVR2-NEXT: brge .LBB0_292
+; AVR2-NEXT: ; %bb.290: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cpi r25, 53
+; AVR2-NEXT: brne .LBB0_298
+; AVR2-NEXT: ; %bb.291: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r25, Y+45
+; AVR2-NEXT: andi r25, 16
+; AVR2-NEXT: cpi r25, 0
+; AVR2-NEXT: brne .LBB0_298
+; AVR2-NEXT: .LBB0_292: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 49
+; AVR2-NEXT: rjmp .LBB0_298
+; AVR2-NEXT: .LBB0_293: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r12
+; AVR2-NEXT: mov r25, r13
+; AVR2-NEXT: andi r24, 16
+; AVR2-NEXT: andi r25, 0
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: breq .LBB0_294
+; AVR2-NEXT: rjmp .LBB0_303
+; AVR2-NEXT: .LBB0_294: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: rjmp .LBB0_296
+; AVR2-NEXT: .LBB0_295: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r16, 232
+; AVR2-NEXT: ldi r17, 3
+; AVR2-NEXT: .LBB0_296: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r2, Y+20 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r3, Y+21 ; 2-byte Folded Reload
+; AVR2-NEXT: rjmp .LBB0_305
+; AVR2-NEXT: .LBB0_297: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r2, Y+20 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r3, Y+21 ; 2-byte Folded Reload
+; AVR2-NEXT: .LBB0_298: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_299
+; AVR2-NEXT: ; %bb.348:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_299: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: mov r18, r12
+; AVR2-NEXT: mov r19, r13
+; AVR2-NEXT: andi r18, 16
+; AVR2-NEXT: andi r19, 0
+; AVR2-NEXT: cp r18, r1
+; AVR2-NEXT: cpc r19, r1
+; AVR2-NEXT: brne .LBB0_300
+; AVR2-NEXT: rjmp .LBB0_323
+; AVR2-NEXT: .LBB0_300: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r16, r1
+; AVR2-NEXT: cpc r17, r1
+; AVR2-NEXT: breq .LBB0_301
+; AVR2-NEXT: rjmp .LBB0_323
+; AVR2-NEXT: .LBB0_301: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 46
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_302
+; AVR2-NEXT: ; %bb.350:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_302: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 2
+; AVR2-NEXT: rjmp .LBB0_323
+; AVR2-NEXT: .LBB0_303: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 46
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: ldd r2, Y+20 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r3, Y+21 ; 2-byte Folded Reload
+; AVR2-NEXT: brpl .LBB0_304
+; AVR2-NEXT: ; %bb.352:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_304: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 2
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: .LBB0_305: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+34 ; 1-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+22 ; 1-byte Folded Reload
+; AVR2-NEXT: sub r25, r24
+; AVR2-NEXT: mov r24, r25
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_306
+; AVR2-NEXT: ; %bb.354:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_306: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r18, r8
+; AVR2-NEXT: mov r19, r9
+; AVR2-NEXT: mov r24, r19
+; AVR2-NEXT: tst r24
+; AVR2-NEXT: brmi .LBB0_311
+; AVR2-NEXT: ; %bb.307: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: cp r18, r1
+; AVR2-NEXT: cpc r19, r1
+; AVR2-NEXT: breq .LBB0_309
+; AVR2-NEXT: ; %bb.308: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 43
+; AVR2-NEXT: rjmp .LBB0_312
+; AVR2-NEXT: .LBB0_309: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+45
+; AVR2-NEXT: andi r24, 16
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: brne .LBB0_311
+; AVR2-NEXT: ; %bb.310: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r24, 43
+; AVR2-NEXT: ldi r18, 0
+; AVR2-NEXT: ldi r19, 0
+; AVR2-NEXT: mov r8, r18
+; AVR2-NEXT: mov r9, r19
+; AVR2-NEXT: rjmp .LBB0_312
+; AVR2-NEXT: .LBB0_311: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: neg r19
+; AVR2-NEXT: neg r18
+; AVR2-NEXT: sbc r19, r1
+; AVR2-NEXT: mov r8, r18
+; AVR2-NEXT: mov r9, r19
+; AVR2-NEXT: ldi r24, 45
+; AVR2-NEXT: .LBB0_312: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_313
+; AVR2-NEXT: ; %bb.356:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_313: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+26 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+27 ; 2-byte Folded Reload
+; AVR2-NEXT: cpi r24, 49
+; AVR2-NEXT: ldi r24, -8
+; AVR2-NEXT: cpc r25, r24
+; AVR2-NEXT: brlo .LBB0_314
+; AVR2-NEXT: rjmp .LBB0_316
+; AVR2-NEXT: .LBB0_314: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r8
+; AVR2-NEXT: mov r25, r9
+; AVR2-NEXT: mov r22, r16
+; AVR2-NEXT: mov r23, r17
+; AVR2-NEXT: rcall __udivmodhi4
+; AVR2-NEXT: mov r14, r16
+; AVR2-NEXT: mov r15, r17
+; AVR2-NEXT: mov r16, r22
+; AVR2-NEXT: mov r17, r23
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: subi r24, -48
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_315
+; AVR2-NEXT: ; %bb.358:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_315: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: mov r25, r17
+; AVR2-NEXT: mov r22, r14
+; AVR2-NEXT: mov r23, r15
+; AVR2-NEXT: rcall __mulhi3
+; AVR2-NEXT: sub r8, r24
+; AVR2-NEXT: sbc r9, r25
+; AVR2-NEXT: mov r24, r12
+; AVR2-NEXT: mov r25, r13
+; AVR2-NEXT: adiw r24, 3
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: rjmp .LBB0_317
+; AVR2-NEXT: .LBB0_316: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r12
+; AVR2-NEXT: mov r25, r13
+; AVR2-NEXT: adiw r24, 2
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: ldd r24, Y+35 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+36 ; 2-byte Folded Reload
+; AVR2-NEXT: cpi r24, 57
+; AVR2-NEXT: ldi r24, -1
+; AVR2-NEXT: cpc r25, r24
+; AVR2-NEXT: brlo .LBB0_317
+; AVR2-NEXT: rjmp .LBB0_326
+; AVR2-NEXT: .LBB0_317: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldi r22, 100
+; AVR2-NEXT: ldi r23, 0
+; AVR2-NEXT: mov r24, r8
+; AVR2-NEXT: mov r25, r9
+; AVR2-NEXT: mov r14, r22
+; AVR2-NEXT: mov r15, r23
+; AVR2-NEXT: rcall __udivmodhi4
+; AVR2-NEXT: mov r16, r22
+; AVR2-NEXT: mov r17, r23
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: subi r24, -48
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_318
+; AVR2-NEXT: ; %bb.360:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_318: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: mov r25, r17
+; AVR2-NEXT: mov r22, r14
+; AVR2-NEXT: mov r23, r15
+; AVR2-NEXT: rcall __mulhi3
+; AVR2-NEXT: sub r8, r24
+; AVR2-NEXT: sbc r9, r25
+; AVR2-NEXT: mov r24, r12
+; AVR2-NEXT: mov r25, r13
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: ldi r24, 10
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r14, r24
+; AVR2-NEXT: mov r15, r25
+; AVR2-NEXT: mov r24, r8
+; AVR2-NEXT: mov r25, r9
+; AVR2-NEXT: .LBB0_319: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r8, r24
+; AVR2-NEXT: mov r9, r25
+; AVR2-NEXT: mov r22, r14
+; AVR2-NEXT: mov r23, r15
+; AVR2-NEXT: rcall __udivmodhi4
+; AVR2-NEXT: mov r16, r22
+; AVR2-NEXT: mov r17, r23
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: subi r24, -48
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_320
+; AVR2-NEXT: ; %bb.362:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_320: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r16
+; AVR2-NEXT: mov r25, r17
+; AVR2-NEXT: mov r22, r14
+; AVR2-NEXT: mov r23, r15
+; AVR2-NEXT: rcall __mulhi3
+; AVR2-NEXT: sub r8, r24
+; AVR2-NEXT: sbc r9, r25
+; AVR2-NEXT: mov r24, r12
+; AVR2-NEXT: mov r25, r13
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: mov r24, r8
+; AVR2-NEXT: .LBB0_321: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: subi r24, -48
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_322
+; AVR2-NEXT: ; %bb.364:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_322: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: mov r24, r12
+; AVR2-NEXT: mov r25, r13
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: .LBB0_323: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r30, Y+28 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+29 ; 2-byte Folded Reload
+; AVR2-NEXT: .LBB0_324: ; Parent Loop BB0_3 Depth=1
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=2
+; AVR2-NEXT: cp r1, r30
+; AVR2-NEXT: cpc r1, r31
+; AVR2-NEXT: brlt .LBB0_325
+; AVR2-NEXT: ; %bb.366: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: rjmp .LBB0_3
+; AVR2-NEXT: .LBB0_325: ; in Loop: Header=BB0_324 Depth=2
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: adiw r24, 1
+; AVR2-NEXT: std Y+40, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+39, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: sbiw r30, 1
+; AVR2-NEXT: ldi r24, 32
+; AVR2-NEXT: mov r22, r6
+; AVR2-NEXT: mov r23, r7
+; AVR2-NEXT: mov r16, r30
+; AVR2-NEXT: mov r17, r31
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: icall
+; AVR2-NEXT: ldd r26, Y+37 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r27, Y+38 ; 2-byte Folded Reload
+; AVR2-NEXT: mov r30, r16
+; AVR2-NEXT: mov r31, r17
+; AVR2-NEXT: tst r25
+; AVR2-NEXT: brpl .LBB0_324
+; AVR2-NEXT: ; %bb.336:
+; AVR2-NEXT: rjmp .LBB0_1
+; AVR2-NEXT: .LBB0_326: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: ldd r24, Y+24 ; 1-byte Folded Reload
+; AVR2-NEXT: cpi r24, 2
+; AVR2-NEXT: ldi r24, 10
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r14, r24
+; AVR2-NEXT: mov r15, r25
+; AVR2-NEXT: mov r24, r8
+; AVR2-NEXT: mov r25, r9
+; AVR2-NEXT: brlo .LBB0_338
+; AVR2-NEXT: rjmp .LBB0_319
+; AVR2-NEXT: .LBB0_338: ; in Loop: Header=BB0_3 Depth=1
+; AVR2-NEXT: rjmp .LBB0_321
+; AVR2-NEXT: .LBB0_327:
+; AVR2-NEXT: ldd r24, Y+39 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r25, Y+40 ; 2-byte Folded Reload
+; AVR2-NEXT: std Y+33, r25 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+32, r24 ; 2-byte Folded Spill
+; AVR2-NEXT: ; %bb.339:
+; AVR2-NEXT: rjmp .LBB0_1
+ %4 = alloca ptr, align 1
+ %5 = alloca %struct.my_va_list, align 1
+ %6 = alloca %union.anon, align 1
+ store ptr %2, ptr %4, align 1
+ %7 = getelementptr inbounds %struct.__file, ptr %0, i16 0, i32 2
+ %8 = load ptr addrspace(1), ptr %7, align 1
+ call addrspace(1) void @llvm.lifetime.start.p0(i64 2, ptr nonnull %5)
+ call addrspace(1) void @llvm.lifetime.start.p0(i64 23, ptr nonnull %6)
+ %9 = getelementptr inbounds %struct.__file, ptr %0, i16 0, i32 1
+ %10 = load i8, ptr %9, align 1
+ %11 = and i8 %10, 2
+ %12 = icmp eq i8 %11, 0
+ br i1 %12, label %699, label %13
+
+13: ; preds = %3
+ call addrspace(1) void @llvm.va_copy(ptr nonnull %5, ptr nonnull %4)
+ %14 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 2
+ %15 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 1
+ br label %16
+
+16: ; preds = %30, %13
+ %17 = phi i16 [ 0, %13 ], [ %31, %30 ]
+ %18 = phi ptr [ %1, %13 ], [ %32, %30 ]
+ %19 = getelementptr inbounds i8, ptr %18, i16 1
+ %20 = load i8, ptr %18, align 1
+ switch i8 %20, label %25 [
+ i8 0, label %697
+ i8 37, label %21
+ ]
+
+21: ; preds = %16
+ %22 = getelementptr inbounds i8, ptr %18, i16 2
+ %23 = load i8, ptr %19, align 1
+ %24 = icmp eq i8 %23, 37
+ br i1 %24, label %25, label %33
+
+25: ; preds = %16, %21
+ %26 = phi ptr [ %22, %21 ], [ %19, %16 ]
+ %27 = add nsw i16 %17, 1
+ %28 = call addrspace(1) i16 %8(i8 noundef signext %20, ptr noundef %0)
+ %29 = icmp slt i16 %28, 0
+ br i1 %29, label %697, label %30
+
+30: ; preds = %688, %25, %668
+ %31 = phi i16 [ %27, %25 ], [ %669, %668 ], [ %689, %688 ]
+ %32 = phi ptr [ %26, %25 ], [ %125, %668 ], [ %125, %688 ]
+ br label %16
+
+33: ; preds = %21, %111
+ %34 = phi i16 [ %112, %111 ], [ 0, %21 ]
+ %35 = phi i16 [ %113, %111 ], [ 0, %21 ]
+ %36 = phi i16 [ %114, %111 ], [ 0, %21 ]
+ %37 = phi i16 [ %115, %111 ], [ 0, %21 ]
+ %38 = phi i8 [ %117, %111 ], [ %23, %21 ]
+ %39 = phi ptr [ %116, %111 ], [ %22, %21 ]
+ %40 = icmp ult i16 %37, 32
+ br i1 %40, label %41, label %53
+
+41: ; preds = %33
+ switch i8 %38, label %55 [
+ i8 48, label %42
+ i8 43, label %44
+ i8 32, label %46
+ i8 45, label %49
+ i8 35, label %51
+ i8 39, label %111
+ ]
+
+42: ; preds = %41
+ %43 = or i16 %37, 1
+ br label %111
+
+44: ; preds = %41
+ %45 = or i16 %37, 2
+ br label %46
+
+46: ; preds = %41, %44
+ %47 = phi i16 [ %37, %41 ], [ %45, %44 ]
+ %48 = or i16 %47, 4
+ br label %111
+
+49: ; preds = %41
+ %50 = or i16 %37, 8
+ br label %111
+
+51: ; preds = %41
+ %52 = or i16 %37, 16
+ br label %111
+
+53: ; preds = %33
+ %54 = icmp ult i16 %37, 128
+ br i1 %54, label %55, label %96
+
+55: ; preds = %41, %53
+ %56 = add i8 %38, -48
+ %57 = icmp ult i8 %56, 10
+ br i1 %57, label %58, label %69
+
+58: ; preds = %55
+ %59 = and i16 %37, 64
+ %60 = icmp eq i16 %59, 0
+ %61 = zext i8 %56 to i16
+ br i1 %60, label %65, label %62
+
+62: ; preds = %58
+ %63 = mul nsw i16 %35, 10
+ %64 = add nsw i16 %63, %61
+ br label %111
+
+65: ; preds = %58
+ %66 = mul nsw i16 %36, 10
+ %67 = add nsw i16 %66, %61
+ %68 = or i16 %37, 32
+ br label %111
+
+69: ; preds = %55
+ switch i8 %38, label %119 [
+ i8 42, label %70
+ i8 46, label %82
+ i8 36, label %87
+ i8 108, label %97
+ i8 104, label %102
+ i8 76, label %107
+ i8 106, label %109
+ i8 122, label %111
+ i8 116, label %111
+ ]
+
+70: ; preds = %69
+ %71 = icmp eq i16 %34, 0
+ br i1 %71, label %72, label %111
+
+72: ; preds = %70
+ %73 = and i16 %37, 64
+ %74 = icmp eq i16 %73, 0
+ %75 = va_arg ptr %5, i16
+ br i1 %74, label %76, label %111
+
+76: ; preds = %72
+ %77 = or i16 %37, 32
+ %78 = icmp slt i16 %75, 0
+ br i1 %78, label %79, label %111
+
+79: ; preds = %76
+ %80 = sub nsw i16 0, %75
+ %81 = or i16 %37, 40
+ br label %111
+
+82: ; preds = %69
+ %83 = and i16 %37, 64
+ %84 = icmp eq i16 %83, 0
+ br i1 %84, label %85, label %697
+
+85: ; preds = %82
+ %86 = or i16 %37, 64
+ br label %111
+
+87: ; preds = %69
+ %88 = icmp eq i16 %34, 0
+ br i1 %88, label %111, label %89
+
+89: ; preds = %87
+ call addrspace(1) void @llvm.va_end(ptr nonnull %5)
+ call addrspace(1) void @llvm.va_copy(ptr nonnull %5, ptr nonnull %4)
+ %90 = and i16 %37, 64
+ %91 = icmp eq i16 %90, 0
+ %92 = select i1 %91, i16 %36, i16 %35
+ call fastcc addrspace(1) void @skip_to_arg(ptr noundef %1, ptr noundef nonnull %5, i16 noundef %92)
+ %93 = va_arg ptr %5, i16
+ %94 = select i1 %91, i16 %35, i16 %93
+ %95 = select i1 %91, i16 %93, i16 %36
+ br label %111
+
+96: ; preds = %53
+ switch i8 %38, label %119 [
+ i8 108, label %97
+ i8 104, label %102
+ i8 76, label %107
+ i8 106, label %109
+ i8 122, label %111
+ i8 116, label %111
+ ]
+
+97: ; preds = %69, %96
+ %98 = shl i16 %37, 2
+ %99 = and i16 %98, 512
+ %100 = or i16 %37, %99
+ %101 = or i16 %100, 128
+ br label %111
+
+102: ; preds = %69, %96
+ %103 = shl i16 %37, 1
+ %104 = and i16 %103, 512
+ %105 = or i16 %37, %104
+ %106 = or i16 %105, 256
+ br label %111
+
+107: ; preds = %69, %96
+ %108 = or i16 %37, 640
+ br label %111
+
+109: ; preds = %69, %96
+ %110 = or i16 %37, 640
+ br label %111
+
+111: ; preds = %89, %72, %69, %69, %96, %96, %87, %79, %76, %70, %41, %109, %107, %102, %97, %85, %65, %62, %51, %49, %46, %42
+ %112 = phi i16 [ %34, %62 ], [ %34, %65 ], [ %34, %70 ], [ 0, %79 ], [ 0, %76 ], [ %34, %85 ], [ %34, %97 ], [ %34, %102 ], [ %34, %107 ], [ %34, %109 ], [ %34, %41 ], [ %34, %51 ], [ %34, %49 ], [ %34, %46 ], [ %34, %42 ], [ %36, %87 ], [ %34, %96 ], [ %34, %69 ], [ %34, %96 ], [ %34, %69 ], [ 0, %72 ], [ %34, %89 ]
+ %113 = phi i16 [ %64, %62 ], [ %35, %65 ], [ %35, %70 ], [ %35, %79 ], [ %35, %76 ], [ %35, %85 ], [ %35, %97 ], [ %35, %102 ], [ %35, %107 ], [ %35, %109 ], [ %35, %41 ], [ %35, %51 ], [ %35, %49 ], [ %35, %46 ], [ %35, %42 ], [ 0, %87 ], [ %35, %96 ], [ %35, %69 ], [ %35, %96 ], [ %35, %69 ], [ %75, %72 ], [ %94, %89 ]
+ %114 = phi i16 [ %36, %62 ], [ %67, %65 ], [ %36, %70 ], [ %80, %79 ], [ %75, %76 ], [ %36, %85 ], [ %36, %97 ], [ %36, %102 ], [ %36, %107 ], [ %36, %109 ], [ %36, %41 ], [ %36, %51 ], [ %36, %49 ], [ %36, %46 ], [ %36, %42 ], [ 0, %87 ], [ %36, %96 ], [ %36, %69 ], [ %36, %96 ], [ %36, %69 ], [ %36, %72 ], [ %95, %89 ]
+ %115 = phi i16 [ %37, %62 ], [ %68, %65 ], [ %37, %70 ], [ %81, %79 ], [ %77, %76 ], [ %86, %85 ], [ %101, %97 ], [ %106, %102 ], [ %108, %107 ], [ %110, %109 ], [ %37, %41 ], [ %52, %51 ], [ %50, %49 ], [ %48, %46 ], [ %43, %42 ], [ 0, %87 ], [ %37, %96 ], [ %37, %69 ], [ %37, %96 ], [ %37, %69 ], [ %37, %72 ], [ %37, %89 ]
+ %116 = getelementptr inbounds i8, ptr %39, i16 1
+ %117 = load i8, ptr %39, align 1
+ %118 = icmp eq i8 %117, 0
+ br i1 %118, label %119, label %33
+
+119: ; preds = %69, %96, %111
+ %120 = phi i16 [ %112, %111 ], [ %34, %96 ], [ %34, %69 ]
+ %121 = phi i16 [ %113, %111 ], [ %35, %96 ], [ %35, %69 ]
+ %122 = phi i16 [ %114, %111 ], [ %36, %96 ], [ %36, %69 ]
+ %123 = phi i16 [ %115, %111 ], [ %37, %96 ], [ %37, %69 ]
+ %124 = phi i8 [ 0, %111 ], [ %38, %96 ], [ %38, %69 ]
+ %125 = phi ptr [ %116, %111 ], [ %39, %96 ], [ %39, %69 ]
+ %126 = icmp eq i16 %120, 0
+ br i1 %126, label %128, label %127
+
+127: ; preds = %119
+ call addrspace(1) void @llvm.va_end(ptr nonnull %5)
+ call addrspace(1) void @llvm.va_copy(ptr nonnull %5, ptr nonnull %4)
+ call fastcc addrspace(1) void @skip_to_arg(ptr noundef %1, ptr noundef nonnull %5, i16 noundef %120)
+ br label %128
+
+128: ; preds = %127, %119
+ %129 = icmp slt i16 %121, 0
+ %130 = and i16 %123, -65
+ %131 = call addrspace(1) i16 @llvm.smax.i16(i16 %121, i16 0)
+ %132 = select i1 %129, i16 %130, i16 %123
+ %133 = or i8 %124, 32
+ %134 = add i8 %133, -101
+ %135 = icmp ult i8 %134, 3
+ %136 = icmp eq i8 %133, 97
+ %137 = or i1 %136, %135
+ br i1 %137, label %138, label %603
+
+138: ; preds = %128
+ %139 = va_arg ptr %5, double
+ %140 = sub i8 %133, %124
+ br i1 %136, label %141, label %225
+
+141: ; preds = %138
+ %142 = or i16 %132, 6144
+ %143 = bitcast double %139 to i64
+ store i8 48, ptr %14, align 1
+ %144 = lshr i64 %143, 52
+ %145 = trunc i64 %144 to i16
+ %146 = and i16 %145, 2047
+ %147 = and i64 %143, 4503599627370495
+ %148 = and i64 %144, 2047
+ %149 = or i64 %148, %147
+ %150 = icmp eq i64 %149, 0
+ br i1 %150, label %158, label %151
+
+151: ; preds = %141
+ %152 = icmp eq i16 %146, 0
+ br i1 %152, label %154, label %153
+
+153: ; preds = %151
+ store i8 49, ptr %14, align 1
+ br label %154
+
+154: ; preds = %151, %153
+ %155 = phi i8 [ 49, %153 ], [ 48, %151 ]
+ %156 = phi i16 [ %146, %153 ], [ 1, %151 ]
+ %157 = add nsw i16 %156, -1023
+ br label %158
+
+158: ; preds = %154, %141
+ %159 = phi i8 [ %155, %154 ], [ 48, %141 ]
+ %160 = phi i16 [ %157, %154 ], [ %146, %141 ]
+ %161 = lshr i64 %143, 63
+ %162 = trunc i64 %161 to i8
+ store i8 %162, ptr %15, align 1
+ %163 = and i16 %132, 64
+ %164 = icmp eq i16 %163, 0
+ br i1 %164, label %191, label %165
+
+165: ; preds = %158
+ %166 = icmp ugt i16 %131, 12
+ br i1 %166, label %191, label %167
+
+167: ; preds = %165
+ %168 = shl nuw nsw i16 %131, 2
+ %169 = sub nuw nsw i16 51, %168
+ %170 = zext i16 %169 to i64
+ %171 = shl nuw nsw i64 1, %170
+ %172 = shl nuw nsw i64 2, %170
+ %173 = add nsw i64 %172, -1
+ %174 = sub nsw i64 0, %172
+ %175 = and i64 %147, %173
+ %176 = icmp ugt i64 %175, %171
+ br i1 %176, label %183, label %177
+
+177: ; preds = %167
+ %178 = sub nuw nsw i16 52, %168
+ %179 = zext i16 %178 to i64
+ %180 = shl nuw nsw i64 1, %179
+ %181 = and i64 %147, %180
+ %182 = icmp eq i64 %181, 0
+ br i1 %182, label %188, label %183
+
+183: ; preds = %167, %177
+ %184 = add nuw nsw i64 %147, %171
+ %185 = icmp ugt i64 %184, 4503599627370495
+ br i1 %185, label %186, label %188
+
+186: ; preds = %183
+ %187 = add nuw nsw i8 %159, 1
+ store i8 %187, ptr %14, align 1
+ br label %188
+
+188: ; preds = %177, %186, %183
+ %189 = phi i64 [ %184, %186 ], [ %184, %183 ], [ %147, %177 ]
+ %190 = and i64 %189, %174
+ br label %191
+
+191: ; preds = %165, %158, %188
+ %192 = phi i64 [ %190, %188 ], [ %147, %158 ], [ %147, %165 ]
+ %193 = phi i16 [ %131, %188 ], [ 0, %158 ], [ 13, %165 ]
+ %194 = icmp eq i16 %160, 1024
+ br i1 %194, label %195, label %201
+
+195: ; preds = %191
+ %196 = icmp eq i64 %192, 0
+ br i1 %196, label %199, label %197
+
+197: ; preds = %195
+ %198 = or i8 %162, 8
+ store i8 %198, ptr %15, align 1
+ br label %254
+
+199: ; preds = %195
+ %200 = or i8 %162, 4
+ store i8 %200, ptr %15, align 1
+ br label %254
+
+201: ; preds = %191, %222
+ %202 = phi i64 [ %209, %222 ], [ %192, %191 ]
+ %203 = phi i8 [ %224, %222 ], [ 13, %191 ]
+ %204 = phi i16 [ %223, %222 ], [ %193, %191 ]
+ %205 = icmp eq i8 %203, 0
+ br i1 %205, label %254, label %206
+
+206: ; preds = %201
+ %207 = trunc i64 %202 to i8
+ %208 = and i8 %207, 15
+ %209 = lshr i64 %202, 4
+ %210 = icmp eq i8 %208, 0
+ %211 = zext i8 %203 to i16
+ %212 = icmp slt i16 %204, %211
+ %213 = select i1 %210, i1 %212, i1 false
+ br i1 %213, label %222, label %214
+
+214: ; preds = %206
+ %215 = icmp ult i8 %208, 10
+ %216 = or i8 %208, 48
+ %217 = sub i8 %208, %140
+ %218 = add i8 %217, 87
+ %219 = select i1 %215, i8 %216, i8 %218
+ %220 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 2, i16 %211
+ store i8 %219, ptr %220, align 1
+ %221 = call addrspace(1) i16 @llvm.smax.i16(i16 %204, i16 %211)
+ br label %222
+
+222: ; preds = %206, %214
+ %223 = phi i16 [ %221, %214 ], [ %204, %206 ]
+ %224 = add nsw i8 %203, -1
+ br label %201
+
+225: ; preds = %138
+ %226 = and i16 %132, 64
+ %227 = icmp eq i16 %226, 0
+ %228 = select i1 %227, i16 6, i16 %131
+ switch i8 %133, label %235 [
+ i8 101, label %229
+ i8 102, label %233
+ ]
+
+229: ; preds = %225
+ %230 = trunc i16 %228 to i8
+ %231 = add i8 %230, 1
+ %232 = or i16 %132, 4096
+ br label %241
+
+233: ; preds = %225
+ %234 = or i16 %132, 8192
+ br label %241
+
+235: ; preds = %225
+ %236 = add nsw i8 %133, -2
+ %237 = trunc i16 %228 to i8
+ %238 = and i16 %228, 255
+ %239 = icmp eq i16 %238, 0
+ %240 = select i1 %239, i8 1, i8 %237
+ br label %241
+
+241: ; preds = %233, %235, %229
+ %242 = phi i8 [ %231, %229 ], [ 17, %233 ], [ %240, %235 ]
+ %243 = phi i16 [ 0, %229 ], [ %228, %233 ], [ 0, %235 ]
+ %244 = phi i1 [ false, %229 ], [ true, %233 ], [ false, %235 ]
+ %245 = phi i16 [ %232, %229 ], [ %234, %233 ], [ %132, %235 ]
+ %246 = phi i8 [ 101, %229 ], [ 102, %233 ], [ %236, %235 ]
+ %247 = call addrspace(1) i8 @llvm.umin.i8(i8 %242, i8 17)
+ %248 = zext i8 %247 to i16
+ %249 = call addrspace(1) i16 @__dtoa_engine(double noundef %139, ptr noundef nonnull %6, i16 noundef %248, i1 noundef zeroext %244, i16 noundef %243)
+ %250 = trunc i16 %249 to i8
+ %251 = load i32, ptr %6, align 1
+ %252 = trunc i32 %251 to i16
+ %253 = load i8, ptr %15, align 1
+ br label %254
+
+254: ; preds = %201, %199, %197, %241
+ %255 = phi i8 [ %253, %241 ], [ %198, %197 ], [ %200, %199 ], [ %162, %201 ]
+ %256 = phi i8 [ 2, %241 ], [ 1, %197 ], [ 1, %199 ], [ 1, %201 ]
+ %257 = phi i16 [ %252, %241 ], [ 1024, %197 ], [ 1024, %199 ], [ %160, %201 ]
+ %258 = phi i8 [ %250, %241 ], [ 14, %197 ], [ 14, %199 ], [ 14, %201 ]
+ %259 = phi i16 [ %228, %241 ], [ %193, %197 ], [ %193, %199 ], [ %204, %201 ]
+ %260 = phi i16 [ %245, %241 ], [ %142, %197 ], [ %142, %199 ], [ %142, %201 ]
+ %261 = phi i8 [ %246, %241 ], [ 112, %197 ], [ 112, %199 ], [ 112, %201 ]
+ %262 = add i16 %257, -10
+ %263 = icmp ult i16 %262, -19
+ %264 = select i1 %263, i8 2, i8 %256
+ %265 = add i16 %257, -100
+ %266 = icmp ult i16 %265, -199
+ %267 = select i1 %266, i8 3, i8 %264
+ %268 = add i16 %257, -1000
+ %269 = icmp ult i16 %268, -1999
+ %270 = zext i8 %267 to i16
+ %271 = and i8 %255, 1
+ %272 = icmp eq i8 %271, 0
+ br i1 %272, label %273, label %281
+
+273: ; preds = %254
+ %274 = and i16 %260, 2
+ %275 = icmp eq i16 %274, 0
+ br i1 %275, label %276, label %281
+
+276: ; preds = %273
+ %277 = and i16 %260, 4
+ %278 = icmp eq i16 %277, 0
+ %279 = trunc i16 %277 to i8
+ %280 = shl nuw nsw i8 %279, 3
+ br label %281
+
+281: ; preds = %276, %273, %254
+ %282 = phi i1 [ false, %254 ], [ false, %273 ], [ %278, %276 ]
+ %283 = phi i8 [ 45, %254 ], [ 43, %273 ], [ %280, %276 ]
+ %284 = and i8 %255, 12
+ %285 = icmp eq i8 %284, 0
+ br i1 %285, label %326, label %286
+
+286: ; preds = %281
+ %287 = select i1 %282, i16 3, i16 4
+ %288 = icmp sgt i16 %122, %287
+ br i1 %288, label %289, label %302
+
+289: ; preds = %286
+ %290 = sub nuw nsw i16 %122, %287
+ %291 = and i16 %260, 8
+ %292 = icmp eq i16 %291, 0
+ br i1 %292, label %293, label %302
+
+293: ; preds = %289, %298
+ %294 = phi i16 [ %299, %298 ], [ %17, %289 ]
+ %295 = phi i16 [ %300, %298 ], [ %290, %289 ]
+ %296 = call addrspace(1) i16 %8(i8 noundef signext 32, ptr noundef %0)
+ %297 = icmp slt i16 %296, 0
+ br i1 %297, label %697, label %298
+
+298: ; preds = %293
+ %299 = add nsw i16 %294, 1
+ %300 = add nsw i16 %295, -1
+ %301 = icmp eq i16 %300, 0
+ br i1 %301, label %302, label %293
+
+302: ; preds = %298, %286, %289
+ %303 = phi i16 [ %17, %289 ], [ %17, %286 ], [ %299, %298 ]
+ %304 = phi i16 [ %290, %289 ], [ 0, %286 ], [ 0, %298 ]
+ br i1 %282, label %309, label %305
+
+305: ; preds = %302
+ %306 = add nsw i16 %303, 1
+ %307 = call addrspace(1) i16 %8(i8 noundef signext %283, ptr noundef %0)
+ %308 = icmp slt i16 %307, 0
+ br i1 %308, label %697, label %309
+
+309: ; preds = %305, %302
+ %310 = phi i16 [ %306, %305 ], [ %303, %302 ]
+ %311 = load i8, ptr %15, align 1
+ %312 = and i8 %311, 8
+ %313 = icmp eq i8 %312, 0
+ %314 = select i1 %313, ptr @.str, ptr @.str.1
+ br label %315
+
+315: ; preds = %320, %309
+ %316 = phi i16 [ %310, %309 ], [ %322, %320 ]
+ %317 = phi ptr [ %314, %309 ], [ %321, %320 ]
+ %318 = load i8, ptr %317, align 1
+ %319 = icmp eq i8 %318, 0
+ br i1 %319, label %685, label %320
+
+320: ; preds = %315
+ %321 = getelementptr inbounds i8, ptr %317, i16 1
+ %322 = add nsw i16 %316, 1
+ %323 = sub i8 %318, %140
+ %324 = call addrspace(1) i16 %8(i8 noundef signext %323, ptr noundef %0)
+ %325 = icmp slt i16 %324, 0
+ br i1 %325, label %697, label %315
+
+326: ; preds = %281
+ %327 = and i16 %260, 12288
+ %328 = icmp eq i16 %327, 0
+ br i1 %328, label %329, label %357
+
+329: ; preds = %326
+ %330 = call addrspace(1) i16 @llvm.umax.i16(i16 %259, i16 1)
+ br label %331
+
+331: ; preds = %340, %329
+ %332 = phi i8 [ %258, %329 ], [ %341, %340 ]
+ %333 = zext i8 %332 to i16
+ %334 = icmp eq i8 %332, 0
+ br i1 %334, label %342, label %335
+
+335: ; preds = %331
+ %336 = add nsw i16 %333, -1
+ %337 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 2, i16 %336
+ %338 = load i8, ptr %337, align 1
+ %339 = icmp eq i8 %338, 48
+ br i1 %339, label %340, label %342
+
+340: ; preds = %335
+ %341 = add i8 %332, -1
+ br label %331
+
+342: ; preds = %331, %335
+ %343 = and i16 %260, 16
+ %344 = icmp eq i16 %343, 0
+ %345 = select i1 %344, i16 %333, i16 %330
+ %346 = icmp sgt i16 %257, -5
+ %347 = icmp slt i16 %257, %330
+ %348 = select i1 %346, i1 %347, i1 false
+ br i1 %348, label %349, label %355
+
+349: ; preds = %342
+ %350 = or i16 %260, 8192
+ %351 = icmp slt i16 %257, %345
+ br i1 %351, label %352, label %357
+
+352: ; preds = %349
+ %353 = xor i16 %257, -1
+ %354 = add i16 %345, %353
+ br label %357
+
+355: ; preds = %342
+ %356 = add nsw i16 %345, -1
+ br label %357
+
+357: ; preds = %355, %352, %349, %326
+ %358 = phi i8 [ %258, %326 ], [ %332, %349 ], [ %332, %352 ], [ %332, %355 ]
+ %359 = phi i16 [ %259, %326 ], [ 0, %349 ], [ %354, %352 ], [ %356, %355 ]
+ %360 = phi i16 [ %260, %326 ], [ %350, %349 ], [ %350, %352 ], [ %260, %355 ]
+ %361 = and i16 %360, 8192
+ %362 = icmp eq i16 %361, 0
+ br i1 %362, label %367, label %363
+
+363: ; preds = %357
+ %364 = add nsw i16 %257, 1
+ %365 = icmp slt i16 %257, 1
+ %366 = select i1 %365, i16 1, i16 %364
+ br label %373
+
+367: ; preds = %357
+ %368 = and i16 %360, 2048
+ %369 = icmp eq i16 %368, 0
+ %370 = select i1 %369, i16 3, i16 5
+ %371 = select i1 %269, i16 4, i16 %270
+ %372 = add nuw nsw i16 %370, %371
+ br label %373
+
+373: ; preds = %367, %363
+ %374 = phi i16 [ %366, %363 ], [ %372, %367 ]
+ %375 = xor i1 %282, true
+ %376 = zext i1 %375 to i16
+ %377 = icmp eq i16 %359, 0
+ %378 = add nsw i16 %359, 1
+ %379 = lshr i16 %360, 4
+ %380 = and i16 %379, 1
+ %381 = select i1 %377, i16 %380, i16 %378
+ %382 = add i16 %381, %376
+ %383 = add i16 %382, %374
+ %384 = icmp sgt i16 %122, %383
+ %385 = sub nsw i16 %122, %383
+ %386 = select i1 %384, i16 %385, i16 0
+ %387 = and i16 %360, 9
+ %388 = icmp eq i16 %387, 0
+ %389 = icmp ne i16 %386, 0
+ %390 = select i1 %388, i1 %389, i1 false
+ br i1 %390, label %391, label %400
+
+391: ; preds = %373, %396
+ %392 = phi i16 [ %397, %396 ], [ %17, %373 ]
+ %393 = phi i16 [ %398, %396 ], [ %385, %373 ]
+ %394 = call addrspace(1) i16 %8(i8 noundef signext 32, ptr noundef %0)
+ %395 = icmp slt i16 %394, 0
+ br i1 %395, label %697, label %396
+
+396: ; preds = %391
+ %397 = add nsw i16 %392, 1
+ %398 = add nsw i16 %393, -1
+ %399 = icmp eq i16 %398, 0
+ br i1 %399, label %400, label %391
+
+400: ; preds = %396, %373
+ %401 = phi i16 [ %17, %373 ], [ %397, %396 ]
+ %402 = phi i16 [ %386, %373 ], [ 0, %396 ]
+ br i1 %282, label %407, label %403
+
+403: ; preds = %400
+ %404 = add nsw i16 %401, 1
+ %405 = call addrspace(1) i16 %8(i8 noundef signext %283, ptr noundef %0)
+ %406 = icmp slt i16 %405, 0
+ br i1 %406, label %697, label %407
+
+407: ; preds = %403, %400
+ %408 = phi i16 [ %404, %403 ], [ %401, %400 ]
+ %409 = and i16 %360, 2048
+ %410 = icmp eq i16 %409, 0
+ br i1 %410, label %419, label %411
+
+411: ; preds = %407
+ %412 = call addrspace(1) i16 %8(i8 noundef signext 48, ptr noundef %0)
+ %413 = icmp slt i16 %412, 0
+ br i1 %413, label %697, label %414
+
+414: ; preds = %411
+ %415 = add nsw i16 %408, 2
+ %416 = sub i8 120, %140
+ %417 = call addrspace(1) i16 %8(i8 noundef signext %416, ptr noundef %0)
+ %418 = icmp slt i16 %417, 0
+ br i1 %418, label %697, label %419
+
+419: ; preds = %414, %407
+ %420 = phi i16 [ %415, %414 ], [ %408, %407 ]
+ %421 = and i16 %360, 8
+ %422 = icmp eq i16 %421, 0
+ %423 = icmp ne i16 %402, 0
+ %424 = select i1 %422, i1 %423, i1 false
+ br i1 %424, label %425, label %434
+
+425: ; preds = %419
+ %426 = add i16 %402, %420
+ br label %427
+
+427: ; preds = %425, %431
+ %428 = phi i16 [ %432, %431 ], [ %402, %425 ]
+ %429 = call addrspace(1) i16 %8(i8 noundef signext 48, ptr noundef %0)
+ %430 = icmp slt i16 %429, 0
+ br i1 %430, label %697, label %431
+
+431: ; preds = %427
+ %432 = add nsw i16 %428, -1
+ %433 = icmp eq i16 %432, 0
+ br i1 %433, label %434, label %427
+
+434: ; preds = %431, %419
+ %435 = phi i16 [ %420, %419 ], [ %426, %431 ]
+ %436 = phi i16 [ %402, %419 ], [ 0, %431 ]
+ br i1 %362, label %492, label %437
+
+437: ; preds = %434
+ %438 = call addrspace(1) i16 @llvm.smax.i16(i16 %257, i16 0)
+ %439 = zext i8 %358 to i16
+ %440 = sub nsw i16 0, %359
+ br label %441
+
+441: ; preds = %462, %437
+ %442 = phi i16 [ %438, %437 ], [ %460, %462 ]
+ %443 = phi i16 [ %435, %437 ], [ %463, %462 ]
+ %444 = icmp eq i16 %442, -1
+ br i1 %444, label %445, label %449
+
+445: ; preds = %441
+ %446 = add nsw i16 %443, 1
+ %447 = call addrspace(1) i16 %8(i8 noundef signext 46, ptr noundef %0)
+ %448 = icmp slt i16 %447, 0
+ br i1 %448, label %697, label %449
+
+449: ; preds = %445, %441
+ %450 = phi i16 [ %446, %445 ], [ %443, %441 ]
+ %451 = sub nsw i16 %257, %442
+ %452 = icmp sgt i16 %451, -1
+ %453 = icmp slt i16 %451, %439
+ %454 = select i1 %452, i1 %453, i1 false
+ br i1 %454, label %455, label %458
+
+455: ; preds = %449
+ %456 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 2, i16 %451
+ %457 = load i8, ptr %456, align 1
+ br label %458
+
+458: ; preds = %449, %455
+ %459 = phi i8 [ %457, %455 ], [ 48, %449 ]
+ %460 = add nsw i16 %442, -1
+ %461 = icmp sgt i16 %442, %440
+ br i1 %461, label %462, label %466
+
+462: ; preds = %458
+ %463 = add nsw i16 %450, 1
+ %464 = call addrspace(1) i16 %8(i8 noundef signext %459, ptr noundef %0)
+ %465 = icmp slt i16 %464, 0
+ br i1 %465, label %697, label %441
+
+466: ; preds = %458
+ %467 = icmp eq i16 %460, %257
+ br i1 %467, label %468, label %478
+
+468: ; preds = %466
+ %469 = load i8, ptr %14, align 1
+ %470 = icmp sgt i8 %469, 53
+ br i1 %470, label %477, label %471
+
+471: ; preds = %468
+ %472 = icmp eq i8 %469, 53
+ br i1 %472, label %473, label %478
+
+473: ; preds = %471
+ %474 = load i8, ptr %15, align 1
+ %475 = and i8 %474, 16
+ %476 = icmp eq i8 %475, 0
+ br i1 %476, label %477, label %478
+
+477: ; preds = %473, %468
+ br label %478
+
+478: ; preds = %466, %471, %473, %477
+ %479 = phi i8 [ 49, %477 ], [ %459, %473 ], [ %459, %471 ], [ %459, %466 ]
+ %480 = call addrspace(1) i16 %8(i8 noundef signext %479, ptr noundef %0)
+ %481 = icmp slt i16 %480, 0
+ br i1 %481, label %697, label %482
+
+482: ; preds = %478
+ %483 = add nsw i16 %450, 1
+ %484 = and i16 %360, 16
+ %485 = icmp ne i16 %484, 0
+ %486 = icmp eq i16 %442, 0
+ %487 = and i1 %485, %486
+ br i1 %487, label %488, label %685
+
+488: ; preds = %482
+ %489 = add nsw i16 %450, 2
+ %490 = call addrspace(1) i16 %8(i8 noundef signext 46, ptr noundef %0)
+ %491 = icmp slt i16 %490, 0
+ br i1 %491, label %697, label %685
+
+492: ; preds = %434
+ %493 = load i8, ptr %14, align 1
+ %494 = icmp eq i8 %493, 49
+ br i1 %494, label %498, label %495
+
+495: ; preds = %492
+ %496 = load i8, ptr %15, align 1
+ %497 = and i8 %496, -17
+ store i8 %497, ptr %15, align 1
+ br label %498
+
+498: ; preds = %492, %495
+ %499 = add nsw i16 %435, 1
+ %500 = call addrspace(1) i16 %8(i8 noundef signext %493, ptr noundef %0)
+ %501 = icmp slt i16 %500, 0
+ br i1 %501, label %697, label %502
+
+502: ; preds = %498
+ %503 = icmp sgt i16 %359, 0
+ br i1 %503, label %504, label %525
+
+504: ; preds = %502
+ %505 = call addrspace(1) i16 %8(i8 noundef signext 46, ptr noundef %0)
+ %506 = icmp slt i16 %505, 0
+ br i1 %506, label %697, label %507
+
+507: ; preds = %504
+ %508 = add nsw i16 %435, 2
+ br label %509
+
+509: ; preds = %507, %520
+ %510 = phi i16 [ %515, %520 ], [ %508, %507 ]
+ %511 = phi i8 [ %524, %520 ], [ 1, %507 ]
+ %512 = zext i8 %511 to i16
+ %513 = icmp slt i16 %359, %512
+ br i1 %513, label %532, label %514
+
+514: ; preds = %509
+ %515 = add nsw i16 %510, 1
+ %516 = icmp ult i8 %511, %358
+ br i1 %516, label %517, label %520
+
+517: ; preds = %514
+ %518 = getelementptr inbounds %struct.dtoa, ptr %6, i16 0, i32 2, i16 %512
+ %519 = load i8, ptr %518, align 1
+ br label %520
+
+520: ; preds = %514, %517
+ %521 = phi i8 [ %519, %517 ], [ 48, %514 ]
+ %522 = call addrspace(1) i16 %8(i8 noundef signext %521, ptr noundef %0)
+ %523 = icmp slt i16 %522, 0
+ %524 = add i8 %511, 1
+ br i1 %523, label %697, label %509
+
+525: ; preds = %502
+ %526 = and i16 %360, 16
+ %527 = icmp eq i16 %526, 0
+ br i1 %527, label %532, label %528
+
+528: ; preds = %525
+ %529 = add nsw i16 %435, 2
+ %530 = call addrspace(1) i16 %8(i8 noundef signext 46, ptr noundef %0)
+ %531 = icmp slt i16 %530, 0
+ br i1 %531, label %697, label %532
+
+532: ; preds = %509, %528, %525
+ %533 = phi i16 [ %529, %528 ], [ %499, %525 ], [ %510, %509 ]
+ %534 = sub i8 %261, %140
+ %535 = call addrspace(1) i16 %8(i8 noundef signext %534, ptr noundef %0)
+ %536 = icmp slt i16 %535, 0
+ br i1 %536, label %697, label %537
+
+537: ; preds = %532
+ %538 = icmp slt i16 %257, 0
+ br i1 %538, label %545, label %539
+
+539: ; preds = %537
+ %540 = icmp eq i16 %257, 0
+ br i1 %540, label %541, label %547
+
+541: ; preds = %539
+ %542 = load i8, ptr %15, align 1
+ %543 = and i8 %542, 16
+ %544 = icmp eq i8 %543, 0
+ br i1 %544, label %547, label %545
+
+545: ; preds = %541, %537
+ %546 = sub nsw i16 0, %257
+ br label %547
+
+547: ; preds = %539, %541, %545
+ %548 = phi i16 [ %546, %545 ], [ 0, %541 ], [ %257, %539 ]
+ %549 = phi i8 [ 45, %545 ], [ 43, %541 ], [ 43, %539 ]
+ %550 = add nsw i16 %533, 2
+ %551 = call addrspace(1) i16 %8(i8 noundef signext %549, ptr noundef %0)
+ %552 = icmp slt i16 %551, 0
+ br i1 %552, label %697, label %553
+
+553: ; preds = %547
+ br i1 %269, label %554, label %565
+
+554: ; preds = %553
+ %555 = freeze i16 %548
+ %556 = udiv i16 %555, 1000
+ %557 = trunc i16 %556 to i8
+ %558 = add nuw nsw i8 %557, 48
+ %559 = call addrspace(1) i16 %8(i8 noundef signext %558, ptr noundef %0)
+ %560 = icmp slt i16 %559, 0
+ br i1 %560, label %697, label %561
+
+561: ; preds = %554
+ %562 = add nsw i16 %533, 3
+ %563 = mul i16 %556, 1000
+ %564 = sub i16 %555, %563
+ br label %566
+
+565: ; preds = %553
+ br i1 %266, label %566, label %579
+
+566: ; preds = %561, %565
+ %567 = phi i16 [ %562, %561 ], [ %550, %565 ]
+ %568 = phi i16 [ %564, %561 ], [ %548, %565 ]
+ %569 = freeze i16 %568
+ %570 = udiv i16 %569, 100
+ %571 = trunc i16 %570 to i8
+ %572 = add i8 %571, 48
+ %573 = call addrspace(1) i16 %8(i8 noundef signext %572, ptr noundef %0)
+ %574 = icmp slt i16 %573, 0
+ br i1 %574, label %697, label %575
+
+575: ; preds = %566
+ %576 = add nsw i16 %567, 1
+ %577 = mul i16 %570, 100
+ %578 = sub i16 %569, %577
+ br label %582
+
+579: ; preds = %565
+ %580 = icmp ugt i8 %267, 1
+ %581 = trunc i16 %548 to i8
+ br i1 %580, label %582, label %596
+
+582: ; preds = %575, %579
+ %583 = phi i16 [ %576, %575 ], [ %550, %579 ]
+ %584 = phi i16 [ %578, %575 ], [ %548, %579 ]
+ %585 = freeze i16 %584
+ %586 = udiv i16 %585, 10
+ %587 = trunc i16 %586 to i8
+ %588 = add i8 %587, 48
+ %589 = call addrspace(1) i16 %8(i8 noundef signext %588, ptr noundef %0)
+ %590 = icmp slt i16 %589, 0
+ br i1 %590, label %697, label %591
+
+591: ; preds = %582
+ %592 = add nsw i16 %583, 1
+ %593 = mul i16 %586, 10
+ %594 = sub i16 %585, %593
+ %595 = trunc i16 %594 to i8
+ br label %596
+
+596: ; preds = %579, %591
+ %597 = phi i8 [ %595, %591 ], [ %581, %579 ]
+ %598 = phi i16 [ %592, %591 ], [ %550, %579 ]
+ %599 = add nsw i16 %598, 1
+ %600 = add i8 %597, 48
+ %601 = call addrspace(1) i16 %8(i8 noundef signext %600, ptr noundef %0)
+ %602 = icmp slt i16 %601, 0
+ br i1 %602, label %697, label %685
+
+603: ; preds = %128
+ switch i8 %124, label %663 [
+ i8 99, label %604
+ i8 115, label %607
+ i8 100, label %647
+ i8 105, label %647
+ i8 117, label %659
+ i8 111, label %672
+ i8 112, label %661
+ ]
+
+604: ; preds = %603
+ %605 = va_arg ptr %5, i16
+ %606 = trunc i16 %605 to i8
+ store i8 %606, ptr %6, align 1
+ br label %615
+
+607: ; preds = %603
+ %608 = va_arg ptr %5, ptr
+ %609 = icmp eq ptr %608, null
+ %610 = select i1 %609, ptr @.str.2, ptr %608
+ %611 = and i16 %132, 64
+ %612 = icmp eq i16 %611, 0
+ %613 = select i1 %612, i16 -1, i16 %131
+ %614 = call addrspace(1) i16 @strnlen(ptr noundef nonnull %610, i16 noundef %613)
+ br label %615
+
+615: ; preds = %607, %604
+ %616 = phi i16 [ 1, %604 ], [ %614, %607 ]
+ %617 = phi ptr [ %6, %604 ], [ %610, %607 ]
+ %618 = and i16 %132, 8
+ %619 = icmp eq i16 %618, 0
+ br i1 %619, label %620, label %632
+
+620: ; preds = %615
+ %621 = call addrspace(1) i16 @llvm.umin.i16(i16 %122, i16 %616)
+ br label %622
+
+622: ; preds = %620, %629
+ %623 = phi i16 [ %630, %629 ], [ %17, %620 ]
+ %624 = phi i16 [ %631, %629 ], [ %122, %620 ]
+ %625 = icmp ugt i16 %624, %616
+ br i1 %625, label %626, label %632
+
+626: ; preds = %622
+ %627 = call addrspace(1) i16 %8(i8 noundef signext 32, ptr noundef %0)
+ %628 = icmp slt i16 %627, 0
+ br i1 %628, label %697, label %629
+
+629: ; preds = %626
+ %630 = add nsw i16 %623, 1
+ %631 = add nsw i16 %624, -1
+ br label %622
+
+632: ; preds = %622, %615
+ %633 = phi i16 [ %17, %615 ], [ %623, %622 ]
+ %634 = phi i16 [ %122, %615 ], [ %621, %622 ]
+ %635 = sub i16 %634, %616
+ %636 = add i16 %633, %616
+ br label %637
+
+637: ; preds = %641, %632
+ %638 = phi i16 [ %616, %632 ], [ %642, %641 ]
+ %639 = phi ptr [ %617, %632 ], [ %643, %641 ]
+ %640 = icmp eq i16 %638, 0
+ br i1 %640, label %685, label %641
+
+641: ; preds = %637
+ %642 = add i16 %638, -1
+ %643 = getelementptr inbounds i8, ptr %639, i16 1
+ %644 = load i8, ptr %639, align 1
+ %645 = call addrspace(1) i16 %8(i8 noundef signext %644, ptr noundef %0)
+ %646 = icmp slt i16 %645, 0
+ br i1 %646, label %697, label %637
+
+647: ; preds = %603, %603
+ %648 = and i16 %132, 128
+ %649 = icmp eq i16 %648, 0
+ br i1 %649, label %657, label %650
+
+650: ; preds = %647
+ %651 = and i16 %132, 512
+ %652 = icmp eq i16 %651, 0
+ br i1 %652, label %655, label %653
+
+653: ; preds = %650
+ %654 = va_arg ptr %5, i64
+ br label %685
+
+655: ; preds = %650
+ %656 = va_arg ptr %5, i32
+ br label %685
+
+657: ; preds = %647
+ %658 = va_arg ptr %5, i16
+ br label %685
+
+659: ; preds = %603
+ %660 = and i16 %132, -17
+ br label %672
+
+661: ; preds = %603
+ %662 = or i16 %132, 16
+ br label %672
+
+663: ; preds = %603
+ %664 = icmp eq i8 %133, 120
+ br i1 %664, label %672, label %665
+
+665: ; preds = %663
+ %666 = call addrspace(1) i16 %8(i8 noundef signext 37, ptr noundef %0)
+ %667 = icmp slt i16 %666, 0
+ br i1 %667, label %697, label %668
+
+668: ; preds = %665
+ %669 = add nsw i16 %17, 2
+ %670 = call addrspace(1) i16 %8(i8 noundef signext %124, ptr noundef %0)
+ %671 = icmp slt i16 %670, 0
+ br i1 %671, label %697, label %30
+
+672: ; preds = %603, %663, %661, %659
+ %673 = phi i16 [ %660, %659 ], [ %662, %661 ], [ %132, %663 ], [ %132, %603 ]
+ %674 = and i16 %673, 128
+ %675 = icmp eq i16 %674, 0
+ br i1 %675, label %683, label %676
+
+676: ; preds = %672
+ %677 = and i16 %673, 512
+ %678 = icmp eq i16 %677, 0
+ br i1 %678, label %681, label %679
+
+679: ; preds = %676
+ %680 = va_arg ptr %5, i64
+ br label %685
+
+681: ; preds = %676
+ %682 = va_arg ptr %5, i32
+ br label %685
+
+683: ; preds = %672
+ %684 = va_arg ptr %5, i16
+ br label %685
+
+685: ; preds = %637, %315, %683, %657, %681, %679, %655, %653, %488, %482, %596
+ %686 = phi i16 [ %17, %683 ], [ %17, %657 ], [ %17, %681 ], [ %17, %679 ], [ %17, %655 ], [ %17, %653 ], [ %483, %482 ], [ %489, %488 ], [ %599, %596 ], [ %316, %315 ], [ %636, %637 ]
+ %687 = phi i16 [ %122, %683 ], [ %122, %657 ], [ %122, %681 ], [ %122, %679 ], [ %122, %655 ], [ %122, %653 ], [ %436, %482 ], [ %436, %488 ], [ %436, %596 ], [ %304, %315 ], [ %635, %637 ]
+ br label %688
+
+688: ; preds = %685, %692
+ %689 = phi i16 [ %694, %692 ], [ %686, %685 ]
+ %690 = phi i16 [ %693, %692 ], [ %687, %685 ]
+ %691 = icmp sgt i16 %690, 0
+ br i1 %691, label %692, label %30
+
+692: ; preds = %688
+ %693 = add nsw i16 %690, -1
+ %694 = add nsw i16 %689, 1
+ %695 = call addrspace(1) i16 %8(i8 noundef signext 32, ptr noundef %0)
+ %696 = icmp slt i16 %695, 0
+ br i1 %696, label %697, label %688
+
+697: ; preds = %668, %665, %532, %488, %478, %411, %596, %582, %566, %554, %547, %528, %504, %498, %414, %403, %305, %25, %16, %82, %626, %641, %293, %320, %391, %427, %462, %445, %520, %692
+ %698 = phi i16 [ -1, %692 ], [ -1, %520 ], [ -1, %445 ], [ -1, %462 ], [ -1, %427 ], [ -1, %391 ], [ -1, %320 ], [ -1, %293 ], [ -1, %641 ], [ -1, %626 ], [ %17, %82 ], [ -1, %668 ], [ -1, %665 ], [ -1, %532 ], [ -1, %488 ], [ -1, %478 ], [ -1, %411 ], [ -1, %596 ], [ -1, %582 ], [ -1, %566 ], [ -1, %554 ], [ -1, %547 ], [ -1, %528 ], [ -1, %504 ], [ -1, %498 ], [ -1, %414 ], [ -1, %403 ], [ -1, %305 ], [ -1, %25 ], [ %17, %16 ]
+ call addrspace(1) void @llvm.va_end(ptr nonnull %5)
+ br label %699
+
+699: ; preds = %3, %697
+ %700 = phi i16 [ %698, %697 ], [ -1, %3 ]
+ call addrspace(1) void @llvm.lifetime.end.p0(i64 23, ptr nonnull %6)
+ call addrspace(1) void @llvm.lifetime.end.p0(i64 2, ptr nonnull %5)
+ ret i16 %700
+}
+
+; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) addrspace(1)
+
+; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
+declare void @llvm.va_copy(ptr, ptr) addrspace(1)
+
+; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
+declare void @llvm.va_end(ptr) addrspace(1)
+
+; Function Attrs: minsize nofree norecurse nosync nounwind optsize memory(read, argmem: readwrite, inaccessiblemem: none)
+define internal fastcc void @skip_to_arg(ptr nocapture noundef readonly %0, ptr nocapture noundef %1, i16 noundef %2) unnamed_addr addrspace(1) {
+; AVR51-LABEL: skip_to_arg:
+; AVR51: ; %bb.0:
+; AVR51-NEXT: push r4
+; AVR51-NEXT: push r5
+; AVR51-NEXT: push r6
+; AVR51-NEXT: push r7
+; AVR51-NEXT: push r8
+; AVR51-NEXT: push r9
+; AVR51-NEXT: push r10
+; AVR51-NEXT: push r11
+; AVR51-NEXT: push r12
+; AVR51-NEXT: push r13
+; AVR51-NEXT: push r14
+; AVR51-NEXT: push r15
+; AVR51-NEXT: push r16
+; AVR51-NEXT: push r17
+; AVR51-NEXT: movw r10, r22
+; AVR51-NEXT: movw r14, r24
+; AVR51-NEXT: ldi r24, 1
+; AVR51-NEXT: ldi r25, 0
+; AVR51-NEXT: movw r4, r24
+; AVR51-NEXT: ldi r18, 0
+; AVR51-NEXT: ldi r19, 0
+; AVR51-NEXT: movw r6, r18
+; AVR51-NEXT: ldi r26, 10
+; AVR51-NEXT: .LBB1_1: ; =>This Loop Header: Depth=1
+; AVR51-NEXT: ; Child Loop BB1_2 Depth 2
+; AVR51-NEXT: ; Child Loop BB1_4 Depth 3
+; AVR51-NEXT: ; Child Loop BB1_11 Depth 3
+; AVR51-NEXT: movw r30, r14
+; AVR51-NEXT: movw r24, r4
+; AVR51-NEXT: .LBB1_2: ; Parent Loop BB1_1 Depth=1
+; AVR51-NEXT: ; => This Loop Header: Depth=2
+; AVR51-NEXT: ; Child Loop BB1_4 Depth 3
+; AVR51-NEXT: ; Child Loop BB1_11 Depth 3
+; AVR51-NEXT: cp r24, r20
+; AVR51-NEXT: cpc r25, r21
+; AVR51-NEXT: brlt .LBB1_4
+; AVR51-NEXT: rjmp .LBB1_62
+; AVR51-NEXT: .LBB1_3: ; in Loop: Header=BB1_4 Depth=3
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: ldd r27, Z+1
+; AVR51-NEXT: adiw r24, 2
+; AVR51-NEXT: cpi r27, 37
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: brne .LBB1_6
+; AVR51-NEXT: .LBB1_4: ; Parent Loop BB1_1 Depth=1
+; AVR51-NEXT: ; Parent Loop BB1_2 Depth=2
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=3
+; AVR51-NEXT: movw r24, r30
+; AVR51-NEXT: ld r18, Z+
+; AVR51-NEXT: cpi r18, 37
+; AVR51-NEXT: breq .LBB1_3
+; AVR51-NEXT: ; %bb.5: ; in Loop: Header=BB1_4 Depth=3
+; AVR51-NEXT: cpi r18, 0
+; AVR51-NEXT: brne .LBB1_4
+; AVR51-NEXT: rjmp .LBB1_62
+; AVR51-NEXT: .LBB1_6: ; %.preheader
+; AVR51-NEXT: ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT: movw r16, r6
+; AVR51-NEXT: movw r8, r16
+; AVR51-NEXT: movw r12, r16
+; AVR51-NEXT: rjmp .LBB1_11
+; AVR51-NEXT: .LBB1_7: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 106
+; AVR51-NEXT: breq .LBB1_8
+; AVR51-NEXT: rjmp .LBB1_45
+; AVR51-NEXT: .LBB1_8: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: ori r16, 128
+; AVR51-NEXT: ori r17, 2
+; AVR51-NEXT: .LBB1_9: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: movw r8, r18
+; AVR51-NEXT: .LBB1_10: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: ld r27, Z+
+; AVR51-NEXT: cpi r27, 0
+; AVR51-NEXT: mov r18, r1
+; AVR51-NEXT: brne .LBB1_11
+; AVR51-NEXT: rjmp .LBB1_46
+; AVR51-NEXT: .LBB1_11: ; Parent Loop BB1_1 Depth=1
+; AVR51-NEXT: ; Parent Loop BB1_2 Depth=2
+; AVR51-NEXT: ; => This Inner Loop Header: Depth=3
+; AVR51-NEXT: movw r18, r8
+; AVR51-NEXT: cpi r16, 32
+; AVR51-NEXT: cpc r17, r1
+; AVR51-NEXT: brsh .LBB1_16
+; AVR51-NEXT: ; %bb.12: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 43
+; AVR51-NEXT: brlt .LBB1_13
+; AVR51-NEXT: rjmp .LBB1_19
+; AVR51-NEXT: .LBB1_13: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 32
+; AVR51-NEXT: breq .LBB1_9
+; AVR51-NEXT: ; %bb.14: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 35
+; AVR51-NEXT: breq .LBB1_9
+; AVR51-NEXT: ; %bb.15: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 39
+; AVR51-NEXT: breq .LBB1_9
+; AVR51-NEXT: rjmp .LBB1_17
+; AVR51-NEXT: .LBB1_16: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r16, -128
+; AVR51-NEXT: cpc r17, r1
+; AVR51-NEXT: brlo .LBB1_17
+; AVR51-NEXT: rjmp .LBB1_22
+; AVR51-NEXT: .LBB1_17: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: mov r22, r27
+; AVR51-NEXT: subi r22, 48
+; AVR51-NEXT: cpi r22, 10
+; AVR51-NEXT: brlo .LBB1_18
+; AVR51-NEXT: rjmp .LBB1_24
+; AVR51-NEXT: .LBB1_18: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: muls r19, r26
+; AVR51-NEXT: mov r19, r0
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: mul r18, r26
+; AVR51-NEXT: mov r18, r1
+; AVR51-NEXT: clr r1
+; AVR51-NEXT: add r18, r19
+; AVR51-NEXT: mov r19, r18
+; AVR51-NEXT: clr r18
+; AVR51-NEXT: movw r24, r30
+; AVR51-NEXT: mov r30, r0
+; AVR51-NEXT: clr r31
+; AVR51-NEXT: or r30, r18
+; AVR51-NEXT: or r31, r19
+; AVR51-NEXT: mov r8, r22
+; AVR51-NEXT: clr r9
+; AVR51-NEXT: add r8, r30
+; AVR51-NEXT: adc r9, r31
+; AVR51-NEXT: movw r30, r24
+; AVR51-NEXT: ori r16, 32
+; AVR51-NEXT: rjmp .LBB1_10
+; AVR51-NEXT: .LBB1_19: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 43
+; AVR51-NEXT: brne .LBB1_20
+; AVR51-NEXT: rjmp .LBB1_9
+; AVR51-NEXT: .LBB1_20: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 45
+; AVR51-NEXT: brne .LBB1_21
+; AVR51-NEXT: rjmp .LBB1_9
+; AVR51-NEXT: .LBB1_21: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 48
+; AVR51-NEXT: brne .LBB1_63
+; AVR51-NEXT: rjmp .LBB1_9
+; AVR51-NEXT: .LBB1_63: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: rjmp .LBB1_17
+; AVR51-NEXT: .LBB1_22: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 108
+; AVR51-NEXT: brge .LBB1_29
+; AVR51-NEXT: ; %bb.23: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 76
+; AVR51-NEXT: breq .LBB1_65
+; AVR51-NEXT: rjmp .LBB1_33
+; AVR51-NEXT: .LBB1_65: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: rjmp .LBB1_8
+; AVR51-NEXT: .LBB1_24: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 104
+; AVR51-NEXT: brge .LBB1_25
+; AVR51-NEXT: rjmp .LBB1_36
+; AVR51-NEXT: .LBB1_25: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 108
+; AVR51-NEXT: brlt .LBB1_33
+; AVR51-NEXT: ; %bb.26: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 108
+; AVR51-NEXT: breq .LBB1_32
+; AVR51-NEXT: ; %bb.27: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 116
+; AVR51-NEXT: brne .LBB1_28
+; AVR51-NEXT: rjmp .LBB1_9
+; AVR51-NEXT: .LBB1_28: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 122
+; AVR51-NEXT: movw r8, r18
+; AVR51-NEXT: brne .LBB1_64
+; AVR51-NEXT: rjmp .LBB1_10
+; AVR51-NEXT: .LBB1_64: ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT: rjmp .LBB1_45
+; AVR51-NEXT: .LBB1_29: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 122
+; AVR51-NEXT: brne .LBB1_30
+; AVR51-NEXT: rjmp .LBB1_9
+; AVR51-NEXT: .LBB1_30: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 116
+; AVR51-NEXT: brne .LBB1_31
+; AVR51-NEXT: rjmp .LBB1_9
+; AVR51-NEXT: .LBB1_31: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 108
+; AVR51-NEXT: breq .LBB1_32
+; AVR51-NEXT: rjmp .LBB1_45
+; AVR51-NEXT: .LBB1_32: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: movw r22, r16
+; AVR51-NEXT: lsl r22
+; AVR51-NEXT: rol r23
+; AVR51-NEXT: lsl r22
+; AVR51-NEXT: rol r23
+; AVR51-NEXT: andi r22, 0
+; AVR51-NEXT: andi r23, 2
+; AVR51-NEXT: or r22, r16
+; AVR51-NEXT: or r23, r17
+; AVR51-NEXT: ori r22, 128
+; AVR51-NEXT: rjmp .LBB1_35
+; AVR51-NEXT: .LBB1_33: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 104
+; AVR51-NEXT: breq .LBB1_34
+; AVR51-NEXT: rjmp .LBB1_7
+; AVR51-NEXT: .LBB1_34: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: movw r22, r16
+; AVR51-NEXT: lsl r22
+; AVR51-NEXT: rol r23
+; AVR51-NEXT: andi r22, 0
+; AVR51-NEXT: andi r23, 2
+; AVR51-NEXT: or r22, r16
+; AVR51-NEXT: or r23, r17
+; AVR51-NEXT: ori r23, 1
+; AVR51-NEXT: .LBB1_35: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: movw r8, r18
+; AVR51-NEXT: movw r16, r22
+; AVR51-NEXT: rjmp .LBB1_10
+; AVR51-NEXT: .LBB1_36: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 46
+; AVR51-NEXT: brge .LBB1_39
+; AVR51-NEXT: ; %bb.37: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 36
+; AVR51-NEXT: breq .LBB1_41
+; AVR51-NEXT: ; %bb.38: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 42
+; AVR51-NEXT: movw r8, r6
+; AVR51-NEXT: brne .LBB1_45
+; AVR51-NEXT: rjmp .LBB1_10
+; AVR51-NEXT: .LBB1_39: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 46
+; AVR51-NEXT: breq .LBB1_44
+; AVR51-NEXT: ; %bb.40: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cpi r27, 76
+; AVR51-NEXT: brne .LBB1_45
+; AVR51-NEXT: rjmp .LBB1_8
+; AVR51-NEXT: .LBB1_41: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: cp r12, r1
+; AVR51-NEXT: cpc r13, r1
+; AVR51-NEXT: brne .LBB1_43
+; AVR51-NEXT: ; %bb.42: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: movw r8, r6
+; AVR51-NEXT: movw r12, r18
+; AVR51-NEXT: rjmp .LBB1_10
+; AVR51-NEXT: .LBB1_43: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: movw r24, r4
+; AVR51-NEXT: cp r18, r24
+; AVR51-NEXT: cpc r19, r25
+; AVR51-NEXT: breq .LBB1_48
+; AVR51-NEXT: .LBB1_44: ; in Loop: Header=BB1_11 Depth=3
+; AVR51-NEXT: movw r8, r6
+; AVR51-NEXT: rjmp .LBB1_10
+; AVR51-NEXT: .LBB1_45: ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT: mov r18, r27
+; AVR51-NEXT: .LBB1_46: ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT: cp r12, r1
+; AVR51-NEXT: cpc r13, r1
+; AVR51-NEXT: brne .LBB1_47
+; AVR51-NEXT: rjmp .LBB1_62
+; AVR51-NEXT: .LBB1_47: ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT: movw r24, r4
+; AVR51-NEXT: cp r12, r24
+; AVR51-NEXT: cpc r13, r25
+; AVR51-NEXT: breq .LBB1_49
+; AVR51-NEXT: rjmp .LBB1_2
+; AVR51-NEXT: .LBB1_48: ; in Loop: Header=BB1_2 Depth=2
+; AVR51-NEXT: ldi r18, 99
+; AVR51-NEXT: movw r12, r4
+; AVR51-NEXT: rjmp .LBB1_46
+; AVR51-NEXT: .LBB1_49: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: mov r19, r18
+; AVR51-NEXT: ori r19, 32
+; AVR51-NEXT: cpi r19, 97
+; AVR51-NEXT: brne .LBB1_50
+; AVR51-NEXT: rjmp .LBB1_60
+; AVR51-NEXT: .LBB1_50: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: subi r19, 101
+; AVR51-NEXT: cpi r19, 3
+; AVR51-NEXT: brsh .LBB1_51
+; AVR51-NEXT: rjmp .LBB1_60
+; AVR51-NEXT: .LBB1_51: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: cpi r18, 105
+; AVR51-NEXT: brge .LBB1_54
+; AVR51-NEXT: ; %bb.52: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: cpi r18, 99
+; AVR51-NEXT: breq .LBB1_57
+; AVR51-NEXT: ; %bb.53: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: cpi r18, 100
+; AVR51-NEXT: rjmp .LBB1_56
+; AVR51-NEXT: .LBB1_54: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: cpi r18, 105
+; AVR51-NEXT: breq .LBB1_56
+; AVR51-NEXT: ; %bb.55: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: cpi r18, 115
+; AVR51-NEXT: breq .LBB1_57
+; AVR51-NEXT: .LBB1_56: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: movw r18, r16
+; AVR51-NEXT: andi r18, 128
+; AVR51-NEXT: andi r19, 0
+; AVR51-NEXT: cp r18, r1
+; AVR51-NEXT: cpc r19, r1
+; AVR51-NEXT: brne .LBB1_58
+; AVR51-NEXT: .LBB1_57: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: movw r18, r10
+; AVR51-NEXT: movw r30, r18
+; AVR51-NEXT: ld r24, Z
+; AVR51-NEXT: ldd r25, Z+1
+; AVR51-NEXT: adiw r24, 2
+; AVR51-NEXT: rjmp .LBB1_61
+; AVR51-NEXT: .LBB1_58: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: andi r16, 0
+; AVR51-NEXT: andi r17, 2
+; AVR51-NEXT: cp r1, r1
+; AVR51-NEXT: cpc r17, r1
+; AVR51-NEXT: brne .LBB1_60
+; AVR51-NEXT: ; %bb.59: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: movw r18, r10
+; AVR51-NEXT: movw r30, r18
+; AVR51-NEXT: ld r24, Z
+; AVR51-NEXT: ldd r25, Z+1
+; AVR51-NEXT: adiw r24, 4
+; AVR51-NEXT: rjmp .LBB1_61
+; AVR51-NEXT: .LBB1_60: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: movw r18, r10
+; AVR51-NEXT: movw r30, r18
+; AVR51-NEXT: ld r24, Z
+; AVR51-NEXT: ldd r25, Z+1
+; AVR51-NEXT: adiw r24, 8
+; AVR51-NEXT: .LBB1_61: ; in Loop: Header=BB1_1 Depth=1
+; AVR51-NEXT: std Z+1, r25
+; AVR51-NEXT: st Z, r24
+; AVR51-NEXT: movw r24, r4
+; AVR51-NEXT: adiw r24, 1
+; AVR51-NEXT: movw r4, r24
+; AVR51-NEXT: rjmp .LBB1_1
+; AVR51-NEXT: .LBB1_62:
+; AVR51-NEXT: pop r17
+; AVR51-NEXT: pop r16
+; AVR51-NEXT: pop r15
+; AVR51-NEXT: pop r14
+; AVR51-NEXT: pop r13
+; AVR51-NEXT: pop r12
+; AVR51-NEXT: pop r11
+; AVR51-NEXT: pop r10
+; AVR51-NEXT: pop r9
+; AVR51-NEXT: pop r8
+; AVR51-NEXT: pop r7
+; AVR51-NEXT: pop r6
+; AVR51-NEXT: pop r5
+; AVR51-NEXT: pop r4
+; AVR51-NEXT: ret
+;
+; AVR2-LABEL: skip_to_arg:
+; AVR2: ; %bb.0:
+; AVR2-NEXT: push r2
+; AVR2-NEXT: push r3
+; AVR2-NEXT: push r4
+; AVR2-NEXT: push r5
+; AVR2-NEXT: push r6
+; AVR2-NEXT: push r7
+; AVR2-NEXT: push r8
+; AVR2-NEXT: push r9
+; AVR2-NEXT: push r10
+; AVR2-NEXT: push r11
+; AVR2-NEXT: push r12
+; AVR2-NEXT: push r13
+; AVR2-NEXT: push r14
+; AVR2-NEXT: push r15
+; AVR2-NEXT: push r17
+; AVR2-NEXT: push r28
+; AVR2-NEXT: push r29
+; AVR2-NEXT: in r28, 61
+; AVR2-NEXT: in r29, 62
+; AVR2-NEXT: sbiw r28, 2
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: cli
+; AVR2-NEXT: out 62, r29
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: out 61, r28
+; AVR2-NEXT: mov r10, r20
+; AVR2-NEXT: mov r11, r21
+; AVR2-NEXT: std Y+2, r23 ; 2-byte Folded Spill
+; AVR2-NEXT: std Y+1, r22 ; 2-byte Folded Spill
+; AVR2-NEXT: mov r12, r24
+; AVR2-NEXT: mov r13, r25
+; AVR2-NEXT: ldi r26, 1
+; AVR2-NEXT: ldi r27, 0
+; AVR2-NEXT: ldi r24, 10
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r2, r24
+; AVR2-NEXT: mov r3, r25
+; AVR2-NEXT: .LBB1_1: ; =>This Loop Header: Depth=1
+; AVR2-NEXT: ; Child Loop BB1_2 Depth 2
+; AVR2-NEXT: ; Child Loop BB1_4 Depth 3
+; AVR2-NEXT: ; Child Loop BB1_11 Depth 3
+; AVR2-NEXT: mov r30, r12
+; AVR2-NEXT: mov r31, r13
+; AVR2-NEXT: .LBB1_2: ; Parent Loop BB1_1 Depth=1
+; AVR2-NEXT: ; => This Loop Header: Depth=2
+; AVR2-NEXT: ; Child Loop BB1_4 Depth 3
+; AVR2-NEXT: ; Child Loop BB1_11 Depth 3
+; AVR2-NEXT: mov r6, r26
+; AVR2-NEXT: mov r7, r27
+; AVR2-NEXT: cp r26, r10
+; AVR2-NEXT: cpc r27, r11
+; AVR2-NEXT: brlt .LBB1_4
+; AVR2-NEXT: rjmp .LBB1_62
+; AVR2-NEXT: .LBB1_3: ; in Loop: Header=BB1_4 Depth=3
+; AVR2-NEXT: mov r24, r30
+; AVR2-NEXT: mov r25, r31
+; AVR2-NEXT: ldd r18, Z+1
+; AVR2-NEXT: adiw r30, 2
+; AVR2-NEXT: cpi r18, 37
+; AVR2-NEXT: brne .LBB1_6
+; AVR2-NEXT: .LBB1_4: ; Parent Loop BB1_1 Depth=1
+; AVR2-NEXT: ; Parent Loop BB1_2 Depth=2
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=3
+; AVR2-NEXT: mov r26, r30
+; AVR2-NEXT: mov r27, r31
+; AVR2-NEXT: ld r24, X+
+; AVR2-NEXT: cpi r24, 37
+; AVR2-NEXT: breq .LBB1_3
+; AVR2-NEXT: ; %bb.5: ; in Loop: Header=BB1_4 Depth=3
+; AVR2-NEXT: cpi r24, 0
+; AVR2-NEXT: mov r30, r26
+; AVR2-NEXT: mov r31, r27
+; AVR2-NEXT: brne .LBB1_4
+; AVR2-NEXT: rjmp .LBB1_62
+; AVR2-NEXT: .LBB1_6: ; %.preheader
+; AVR2-NEXT: ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT: ldi r24, 0
+; AVR2-NEXT: ldi r25, 0
+; AVR2-NEXT: mov r20, r24
+; AVR2-NEXT: mov r21, r25
+; AVR2-NEXT: mov r8, r24
+; AVR2-NEXT: mov r9, r25
+; AVR2-NEXT: mov r22, r24
+; AVR2-NEXT: mov r23, r25
+; AVR2-NEXT: rjmp .LBB1_11
+; AVR2-NEXT: .LBB1_7: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 106
+; AVR2-NEXT: breq .LBB1_8
+; AVR2-NEXT: rjmp .LBB1_46
+; AVR2-NEXT: .LBB1_8: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: ori r22, 128
+; AVR2-NEXT: ori r23, 2
+; AVR2-NEXT: .LBB1_9: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: mov r20, r24
+; AVR2-NEXT: mov r21, r25
+; AVR2-NEXT: .LBB1_10: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: ld r18, Z+
+; AVR2-NEXT: cpi r18, 0
+; AVR2-NEXT: brne .LBB1_11
+; AVR2-NEXT: rjmp .LBB1_45
+; AVR2-NEXT: .LBB1_11: ; Parent Loop BB1_1 Depth=1
+; AVR2-NEXT: ; Parent Loop BB1_2 Depth=2
+; AVR2-NEXT: ; => This Inner Loop Header: Depth=3
+; AVR2-NEXT: mov r24, r20
+; AVR2-NEXT: mov r25, r21
+; AVR2-NEXT: cpi r22, 32
+; AVR2-NEXT: cpc r23, r1
+; AVR2-NEXT: brsh .LBB1_16
+; AVR2-NEXT: ; %bb.12: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 43
+; AVR2-NEXT: brlt .LBB1_13
+; AVR2-NEXT: rjmp .LBB1_19
+; AVR2-NEXT: .LBB1_13: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 32
+; AVR2-NEXT: breq .LBB1_9
+; AVR2-NEXT: ; %bb.14: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 35
+; AVR2-NEXT: breq .LBB1_9
+; AVR2-NEXT: ; %bb.15: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 39
+; AVR2-NEXT: breq .LBB1_9
+; AVR2-NEXT: rjmp .LBB1_17
+; AVR2-NEXT: .LBB1_16: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r22, -128
+; AVR2-NEXT: cpc r23, r1
+; AVR2-NEXT: brlo .LBB1_17
+; AVR2-NEXT: rjmp .LBB1_22
+; AVR2-NEXT: .LBB1_17: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: mov r17, r18
+; AVR2-NEXT: subi r17, 48
+; AVR2-NEXT: cpi r17, 10
+; AVR2-NEXT: brlo .LBB1_18
+; AVR2-NEXT: rjmp .LBB1_24
+; AVR2-NEXT: .LBB1_18: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: mov r14, r22
+; AVR2-NEXT: mov r15, r23
+; AVR2-NEXT: mov r22, r2
+; AVR2-NEXT: mov r23, r3
+; AVR2-NEXT: mov r4, r30
+; AVR2-NEXT: mov r5, r31
+; AVR2-NEXT: rcall __mulhi3
+; AVR2-NEXT: mov r22, r14
+; AVR2-NEXT: mov r23, r15
+; AVR2-NEXT: mov r30, r4
+; AVR2-NEXT: mov r31, r5
+; AVR2-NEXT: mov r20, r17
+; AVR2-NEXT: clr r21
+; AVR2-NEXT: add r20, r24
+; AVR2-NEXT: adc r21, r25
+; AVR2-NEXT: ori r22, 32
+; AVR2-NEXT: rjmp .LBB1_10
+; AVR2-NEXT: .LBB1_19: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 43
+; AVR2-NEXT: brne .LBB1_20
+; AVR2-NEXT: rjmp .LBB1_9
+; AVR2-NEXT: .LBB1_20: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 45
+; AVR2-NEXT: brne .LBB1_21
+; AVR2-NEXT: rjmp .LBB1_9
+; AVR2-NEXT: .LBB1_21: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 48
+; AVR2-NEXT: brne .LBB1_17
+; AVR2-NEXT: rjmp .LBB1_9
+; AVR2-NEXT: .LBB1_22: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 108
+; AVR2-NEXT: brge .LBB1_29
+; AVR2-NEXT: ; %bb.23: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 76
+; AVR2-NEXT: breq .LBB1_63
+; AVR2-NEXT: rjmp .LBB1_33
+; AVR2-NEXT: .LBB1_63: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: rjmp .LBB1_8
+; AVR2-NEXT: .LBB1_24: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 104
+; AVR2-NEXT: brge .LBB1_25
+; AVR2-NEXT: rjmp .LBB1_36
+; AVR2-NEXT: .LBB1_25: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 108
+; AVR2-NEXT: brge .LBB1_26
+; AVR2-NEXT: rjmp .LBB1_33
+; AVR2-NEXT: .LBB1_26: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 108
+; AVR2-NEXT: breq .LBB1_32
+; AVR2-NEXT: ; %bb.27: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 116
+; AVR2-NEXT: brne .LBB1_28
+; AVR2-NEXT: rjmp .LBB1_9
+; AVR2-NEXT: .LBB1_28: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 122
+; AVR2-NEXT: mov r20, r24
+; AVR2-NEXT: mov r21, r25
+; AVR2-NEXT: brne .LBB1_64
+; AVR2-NEXT: rjmp .LBB1_10
+; AVR2-NEXT: .LBB1_64: ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT: rjmp .LBB1_46
+; AVR2-NEXT: .LBB1_29: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 122
+; AVR2-NEXT: brne .LBB1_30
+; AVR2-NEXT: rjmp .LBB1_9
+; AVR2-NEXT: .LBB1_30: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 116
+; AVR2-NEXT: brne .LBB1_31
+; AVR2-NEXT: rjmp .LBB1_9
+; AVR2-NEXT: .LBB1_31: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 108
+; AVR2-NEXT: breq .LBB1_32
+; AVR2-NEXT: rjmp .LBB1_46
+; AVR2-NEXT: .LBB1_32: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: mov r18, r22
+; AVR2-NEXT: mov r19, r23
+; AVR2-NEXT: lsl r18
+; AVR2-NEXT: rol r19
+; AVR2-NEXT: lsl r18
+; AVR2-NEXT: rol r19
+; AVR2-NEXT: andi r18, 0
+; AVR2-NEXT: andi r19, 2
+; AVR2-NEXT: or r18, r22
+; AVR2-NEXT: or r19, r23
+; AVR2-NEXT: ori r18, 128
+; AVR2-NEXT: rjmp .LBB1_35
+; AVR2-NEXT: .LBB1_33: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 104
+; AVR2-NEXT: breq .LBB1_34
+; AVR2-NEXT: rjmp .LBB1_7
+; AVR2-NEXT: .LBB1_34: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: mov r18, r22
+; AVR2-NEXT: mov r19, r23
+; AVR2-NEXT: lsl r18
+; AVR2-NEXT: rol r19
+; AVR2-NEXT: andi r18, 0
+; AVR2-NEXT: andi r19, 2
+; AVR2-NEXT: or r18, r22
+; AVR2-NEXT: or r19, r23
+; AVR2-NEXT: ori r19, 1
+; AVR2-NEXT: .LBB1_35: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: mov r20, r24
+; AVR2-NEXT: mov r21, r25
+; AVR2-NEXT: mov r22, r18
+; AVR2-NEXT: mov r23, r19
+; AVR2-NEXT: rjmp .LBB1_10
+; AVR2-NEXT: .LBB1_36: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 46
+; AVR2-NEXT: brge .LBB1_39
+; AVR2-NEXT: ; %bb.37: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 36
+; AVR2-NEXT: breq .LBB1_41
+; AVR2-NEXT: ; %bb.38: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 42
+; AVR2-NEXT: ldi r20, 0
+; AVR2-NEXT: ldi r21, 0
+; AVR2-NEXT: brne .LBB1_46
+; AVR2-NEXT: rjmp .LBB1_10
+; AVR2-NEXT: .LBB1_39: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 46
+; AVR2-NEXT: breq .LBB1_44
+; AVR2-NEXT: ; %bb.40: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cpi r18, 76
+; AVR2-NEXT: brne .LBB1_46
+; AVR2-NEXT: rjmp .LBB1_8
+; AVR2-NEXT: .LBB1_41: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: cp r8, r1
+; AVR2-NEXT: cpc r9, r1
+; AVR2-NEXT: brne .LBB1_43
+; AVR2-NEXT: ; %bb.42: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: ldi r20, 0
+; AVR2-NEXT: ldi r21, 0
+; AVR2-NEXT: mov r8, r24
+; AVR2-NEXT: mov r9, r25
+; AVR2-NEXT: rjmp .LBB1_10
+; AVR2-NEXT: .LBB1_43: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: mov r20, r6
+; AVR2-NEXT: mov r21, r7
+; AVR2-NEXT: cp r24, r20
+; AVR2-NEXT: cpc r25, r21
+; AVR2-NEXT: breq .LBB1_48
+; AVR2-NEXT: .LBB1_44: ; in Loop: Header=BB1_11 Depth=3
+; AVR2-NEXT: ldi r20, 0
+; AVR2-NEXT: ldi r21, 0
+; AVR2-NEXT: rjmp .LBB1_10
+; AVR2-NEXT: .LBB1_45: ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT: mov r18, r1
+; AVR2-NEXT: .LBB1_46: ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT: cp r8, r1
+; AVR2-NEXT: cpc r9, r1
+; AVR2-NEXT: brne .LBB1_47
+; AVR2-NEXT: rjmp .LBB1_62
+; AVR2-NEXT: .LBB1_47: ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT: mov r26, r6
+; AVR2-NEXT: mov r27, r7
+; AVR2-NEXT: cp r8, r26
+; AVR2-NEXT: cpc r9, r27
+; AVR2-NEXT: breq .LBB1_49
+; AVR2-NEXT: rjmp .LBB1_2
+; AVR2-NEXT: .LBB1_48: ; in Loop: Header=BB1_2 Depth=2
+; AVR2-NEXT: ldi r18, 99
+; AVR2-NEXT: mov r8, r20
+; AVR2-NEXT: mov r9, r21
+; AVR2-NEXT: rjmp .LBB1_46
+; AVR2-NEXT: .LBB1_49: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: mov r24, r18
+; AVR2-NEXT: ori r24, 32
+; AVR2-NEXT: cpi r24, 97
+; AVR2-NEXT: brne .LBB1_50
+; AVR2-NEXT: rjmp .LBB1_60
+; AVR2-NEXT: .LBB1_50: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: subi r24, 101
+; AVR2-NEXT: cpi r24, 3
+; AVR2-NEXT: brsh .LBB1_51
+; AVR2-NEXT: rjmp .LBB1_60
+; AVR2-NEXT: .LBB1_51: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: cpi r18, 105
+; AVR2-NEXT: brge .LBB1_54
+; AVR2-NEXT: ; %bb.52: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: cpi r18, 99
+; AVR2-NEXT: breq .LBB1_57
+; AVR2-NEXT: ; %bb.53: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: cpi r18, 100
+; AVR2-NEXT: rjmp .LBB1_56
+; AVR2-NEXT: .LBB1_54: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: cpi r18, 105
+; AVR2-NEXT: breq .LBB1_56
+; AVR2-NEXT: ; %bb.55: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: cpi r18, 115
+; AVR2-NEXT: breq .LBB1_57
+; AVR2-NEXT: .LBB1_56: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: mov r24, r22
+; AVR2-NEXT: mov r25, r23
+; AVR2-NEXT: andi r24, 128
+; AVR2-NEXT: andi r25, 0
+; AVR2-NEXT: cp r24, r1
+; AVR2-NEXT: cpc r25, r1
+; AVR2-NEXT: brne .LBB1_58
+; AVR2-NEXT: .LBB1_57: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: ldd r30, Y+1 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+2 ; 2-byte Folded Reload
+; AVR2-NEXT: ld r24, Z
+; AVR2-NEXT: ldd r25, Z+1
+; AVR2-NEXT: adiw r24, 2
+; AVR2-NEXT: rjmp .LBB1_61
+; AVR2-NEXT: .LBB1_58: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: andi r22, 0
+; AVR2-NEXT: andi r23, 2
+; AVR2-NEXT: cp r1, r1
+; AVR2-NEXT: cpc r23, r1
+; AVR2-NEXT: brne .LBB1_60
+; AVR2-NEXT: ; %bb.59: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: ldd r30, Y+1 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+2 ; 2-byte Folded Reload
+; AVR2-NEXT: ld r24, Z
+; AVR2-NEXT: ldd r25, Z+1
+; AVR2-NEXT: adiw r24, 4
+; AVR2-NEXT: rjmp .LBB1_61
+; AVR2-NEXT: .LBB1_60: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: ldd r30, Y+1 ; 2-byte Folded Reload
+; AVR2-NEXT: ldd r31, Y+2 ; 2-byte Folded Reload
+; AVR2-NEXT: ld r24, Z
+; AVR2-NEXT: ldd r25, Z+1
+; AVR2-NEXT: adiw r24, 8
+; AVR2-NEXT: .LBB1_61: ; in Loop: Header=BB1_1 Depth=1
+; AVR2-NEXT: std Z+1, r25
+; AVR2-NEXT: st Z, r24
+; AVR2-NEXT: adiw r26, 1
+; AVR2-NEXT: rjmp .LBB1_1
+; AVR2-NEXT: .LBB1_62:
+; AVR2-NEXT: adiw r28, 2
+; AVR2-NEXT: in r0, 63
+; AVR2-NEXT: cli
+; AVR2-NEXT: out 62, r29
+; AVR2-NEXT: out 63, r0
+; AVR2-NEXT: out 61, r28
+; AVR2-NEXT: pop r29
+; AVR2-NEXT: pop r28
+; AVR2-NEXT: pop r17
+; AVR2-NEXT: pop r15
+; AVR2-NEXT: pop r14
+; AVR2-NEXT: pop r13
+; AVR2-NEXT: pop r12
+; AVR2-NEXT: pop r11
+; AVR2-NEXT: pop r10
+; AVR2-NEXT: pop r9
+; AVR2-NEXT: pop r8
+; AVR2-NEXT: pop r7
+; AVR2-NEXT: pop r6
+; AVR2-NEXT: pop r5
+; AVR2-NEXT: pop r4
+; AVR2-NEXT: pop r3
+; AVR2-NEXT: pop r2
+; AVR2-NEXT: ret
+ br label %4
+
+4: ; preds = %111, %3
+ %5 = phi i16 [ %112, %111 ], [ 1, %3 ]
+ %6 = icmp slt i16 %5, %2
+ br label %7
+
+7: ; preds = %4, %72
+ %8 = phi ptr [ %67, %72 ], [ %0, %4 ]
+ br i1 %6, label %9, label %113
+
+9: ; preds = %7, %13
+ %10 = phi ptr [ %14, %13 ], [ %8, %7 ]
+ %11 = getelementptr inbounds i8, ptr %10, i16 1
+ %12 = load i8, ptr %10, align 1
+ switch i8 %12, label %13 [
+ i8 0, label %113
+ i8 37, label %15
+ ]
+
+13: ; preds = %9, %15
+ %14 = phi ptr [ %16, %15 ], [ %11, %9 ]
+ br label %9
+
+15: ; preds = %9
+ %16 = getelementptr inbounds i8, ptr %10, i16 2
+ %17 = load i8, ptr %11, align 1
+ %18 = icmp eq i8 %17, 37
+ br i1 %18, label %13, label %19
+
+19: ; preds = %15, %59
+ %20 = phi ptr [ %63, %59 ], [ %16, %15 ]
+ %21 = phi i16 [ %60, %59 ], [ 0, %15 ]
+ %22 = phi i16 [ %61, %59 ], [ 0, %15 ]
+ %23 = phi i16 [ %62, %59 ], [ 0, %15 ]
+ %24 = phi i8 [ %64, %59 ], [ %17, %15 ]
+ %25 = icmp ult i16 %23, 32
+ br i1 %25, label %26, label %27
+
+26: ; preds = %19
+ switch i8 %24, label %29 [
+ i8 48, label %59
+ i8 43, label %59
+ i8 32, label %59
+ i8 45, label %59
+ i8 35, label %59
+ i8 39, label %59
+ ]
+
+27: ; preds = %19
+ %28 = icmp ult i16 %23, 128
+ br i1 %28, label %29, label %42
+
+29: ; preds = %26, %27
+ %30 = add i8 %24, -48
+ %31 = icmp ult i8 %30, 10
+ br i1 %31, label %32, label %37
+
+32: ; preds = %29
+ %33 = mul nsw i16 %21, 10
+ %34 = zext i8 %30 to i16
+ %35 = add nsw i16 %33, %34
+ %36 = or i16 %23, 32
+ br label %59
+
+37: ; preds = %29
+ switch i8 %24, label %66 [
+ i8 36, label %38
+ i8 42, label %59
+ i8 46, label %59
+ i8 108, label %43
+ i8 104, label %48
+ i8 76, label %53
+ i8 106, label %55
+ i8 122, label %57
+ i8 116, label %58
+ ]
+
+38: ; preds = %37
+ %39 = icmp eq i16 %22, 0
+ br i1 %39, label %59, label %40
+
+40: ; preds = %38
+ %41 = icmp eq i16 %21, %5
+ br i1 %41, label %66, label %59
+
+42: ; preds = %27
+ switch i8 %24, label %66 [
+ i8 108, label %43
+ i8 104, label %48
+ i8 76, label %53
+ i8 106, label %55
+ i8 122, label %59
+ i8 116, label %59
+ ]
+
+43: ; preds = %37, %42
+ %44 = shl i16 %23, 2
+ %45 = and i16 %44, 512
+ %46 = or i16 %23, %45
+ %47 = or i16 %46, 128
+ br label %59
+
+48: ; preds = %37, %42
+ %49 = shl i16 %23, 1
+ %50 = and i16 %49, 512
+ %51 = or i16 %23, %50
+ %52 = or i16 %51, 256
+ br label %59
+
+53: ; preds = %37, %42
+ %54 = or i16 %23, 640
+ br label %59
+
+55: ; preds = %37, %42
+ %56 = or i16 %23, 640
+ br label %59
+
+57: ; preds = %37
+ br label %59
+
+58: ; preds = %37
+ br label %59
+
+59: ; preds = %37, %37, %58, %42, %42, %57, %40, %38, %26, %26, %26, %26, %26, %26, %55, %53, %48, %43, %32
+ %60 = phi i16 [ %35, %32 ], [ %21, %43 ], [ %21, %48 ], [ %21, %53 ], [ %21, %55 ], [ %21, %26 ], [ %21, %26 ], [ %21, %26 ], [ %21, %26 ], [ %21, %26 ], [ %21, %26 ], [ 0, %38 ], [ 0, %40 ], [ 0, %37 ], [ 0, %37 ], [ %21, %42 ], [ %21, %57 ], [ %21, %42 ], [ %21, %58 ]
+ %61 = phi i16 [ %22, %32 ], [ %22, %43 ], [ %22, %48 ], [ %22, %53 ], [ %22, %55 ], [ %22, %26 ], [ %22, %26 ], [ %22, %26 ], [ %22, %26 ], [ %22, %26 ], [ %22, %26 ], [ %21, %38 ], [ %22, %40 ], [ %22, %37 ], [ %22, %37 ], [ %22, %42 ], [ %22, %57 ], [ %22, %42 ], [ %22, %58 ]
+ %62 = phi i16 [ %36, %32 ], [ %47, %43 ], [ %52, %48 ], [ %54, %53 ], [ %56, %55 ], [ %23, %26 ], [ %23, %26 ], [ %23, %26 ], [ %23, %26 ], [ %23, %26 ], [ %23, %26 ], [ %23, %38 ], [ %23, %40 ], [ %23, %37 ], [ %23, %37 ], [ %23, %42 ], [ %23, %57 ], [ %23, %42 ], [ %23, %58 ]
+ %63 = getelementptr inbounds i8, ptr %20, i16 1
+ %64 = load i8, ptr %20, align 1
+ %65 = icmp eq i8 %64, 0
+ br i1 %65, label %66, label %19
+
+66: ; preds = %37, %42, %40, %59
+ %67 = phi ptr [ %63, %59 ], [ %20, %40 ], [ %20, %42 ], [ %20, %37 ]
+ %68 = phi i16 [ %61, %59 ], [ %5, %40 ], [ %22, %42 ], [ %22, %37 ]
+ %69 = phi i16 [ %62, %59 ], [ %23, %40 ], [ %23, %42 ], [ %23, %37 ]
+ %70 = phi i8 [ 0, %59 ], [ 99, %40 ], [ %24, %42 ], [ %24, %37 ]
+ %71 = icmp eq i16 %68, 0
+ br i1 %71, label %113, label %72
+
+72: ; preds = %66
+ %73 = icmp eq i16 %68, %5
+ br i1 %73, label %74, label %7
+
+74: ; preds = %72
+ %75 = or i8 %70, 32
+ %76 = add i8 %75, -101
+ %77 = icmp ult i8 %76, 3
+ %78 = icmp eq i8 %75, 97
+ %79 = or i1 %78, %77
+ br i1 %79, label %80, label %82
+
+80: ; preds = %74
+ %81 = va_arg ptr %1, double
+ br label %111
+
+82: ; preds = %74
+ switch i8 %70, label %99 [
+ i8 99, label %83
+ i8 115, label %85
+ i8 100, label %87
+ i8 105, label %87
+ ]
+
+83: ; preds = %82
+ %84 = va_arg ptr %1, i16
+ br label %111
+
+85: ; preds = %82
+ %86 = va_arg ptr %1, ptr
+ br label %111
+
+87: ; preds = %82, %82
+ %88 = and i16 %69, 128
+ %89 = icmp eq i16 %88, 0
+ br i1 %89, label %97, label %90
+
+90: ; preds = %87
+ %91 = and i16 %69, 512
+ %92 = icmp eq i16 %91, 0
+ br i1 %92, label %95, label %93
+
+93: ; preds = %90
+ %94 = va_arg ptr %1, i64
+ br label %111
+
+95: ; preds = %90
+ %96 = va_arg ptr %1, i32
+ br label %111
+
+97: ; preds = %87
+ %98 = va_arg ptr %1, i16
+ br label %111
+
+99: ; preds = %82
+ %100 = and i16 %69, 128
+ %101 = icmp eq i16 %100, 0
+ br i1 %101, label %109, label %102
+
+102: ; preds = %99
+ %103 = and i16 %69, 512
+ %104 = icmp eq i16 %103, 0
+ br i1 %104, label %107, label %105
+
+105: ; preds = %102
+ %106 = va_arg ptr %1, i64
+ br label %111
+
+107: ; preds = %102
+ %108 = va_arg ptr %1, i32
+ br label %111
+
+109: ; preds = %99
+ %110 = va_arg ptr %1, i16
+ br label %111
+
+111: ; preds = %109, %97, %107, %105, %95, %93, %83, %85, %80
+ %112 = add nuw nsw i16 %5, 1
+ br label %4
+
+113: ; preds = %7, %66, %9
+ ret void
+}
+
+; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) addrspace(1)
+
+; Function Attrs: minsize optsize
+declare i16 @__dtoa_engine(double noundef, ptr noundef, i16 noundef, i1 noundef zeroext, i16 noundef) local_unnamed_addr addrspace(1)
+
+; Function Attrs: minsize mustprogress nofree nounwind optsize willreturn memory(argmem: read)
+declare i16 @strnlen(ptr nocapture noundef, i16 noundef) local_unnamed_addr addrspace(1)
+
+; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
+declare i8 @llvm.umin.i8(i8, i8) addrspace(1)
+
+; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
+declare i16 @llvm.umax.i16(i16, i16) addrspace(1)
+
+; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
+declare i16 @llvm.smax.i16(i16, i16) addrspace(1)
+
+; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
+declare i16 @llvm.umin.i16(i16, i16) addrspace(1)
More information about the llvm-commits
mailing list