Skip to content

Instantly share code, notes, and snippets.

@carlos4242
Created January 11, 2019 12:15
Show Gist options
  • Save carlos4242/bb47ee95ba4b3638a58be92316c80c88 to your computer and use it in GitHub Desktop.
Save carlos4242/bb47ee95ba4b3638a58be92316c80c88 to your computer and use it in GitHub Desktop.
debug output issue
Carls-MacBook-Air:AVR carlpeto$ /Users/carlpeto/llvm/llvm2/llvm-avr/build/llvm/bin/llc < mc-block-order-regression.ll -O1 -march=avr -debug -print-after-all
Args: /Users/carlpeto/llvm/llvm2/llvm-avr/build/llvm/bin/llc -O1 -march=avr -debug -print-after-all
Features:
CPU:avr2
discovered a new reachable node %entry
discovered a new reachable node %9
discovered a new reachable node %2
discovered a new reachable node %8
.text
.file "<stdin>"
*** IR Dump After Pre-ISel Intrinsic Lowering ***; ModuleID = '<stdin>'
source_filename = "<stdin>"
target datalayout = "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8"
target triple = "x86_64-apple-macosx10.9"
%Vs5UInt8 = type <{ i8 }>
%Vs6UInt32 = type <{ i32 }>
%Sb = type <{ i1 }>
@_Tv4main11delayFactorVs5UInt8 = hidden local_unnamed_addr global %Vs5UInt8 zeroinitializer, align 1
@_Tv4main7delayUsVs6UInt32 = hidden local_unnamed_addr global %Vs6UInt32 zeroinitializer, align 4
@_Tv4main7enabledSb = hidden local_unnamed_addr global %Sb zeroinitializer, align 1
declare void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16, i8) local_unnamed_addr addrspace(0)
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
discovered a new reachable node %entry
discovered a new reachable node %9
discovered a new reachable node %2
discovered a new reachable node %8
discovered a new reachable node %entry
discovered a new reachable node %9
discovered a new reachable node %2
discovered a new reachable node %8
*** IR Dump After Module Verifier ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Canonicalize natural loops ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
MergeICmpsPass: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
*** IR Dump After Merge contiguous icmps into a memcmp ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Expand memcmp() to load/stores ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Lower Garbage Collection Instructions ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Shadow Stack GC Lowering ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Remove unreachable blocks from the CFG ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
discovered a new reachable node %entry
discovered a new reachable node %9
discovered a new reachable node %2
discovered a new reachable node %8
---- Branch Probability Info : _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_ ----
Computing probabilities for
Computing probabilities for
Computing probabilities for
Computing probabilities for entry
block-frequency: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
==================================================================
reverse-post-order-traversal
- 0: entry
- 1:
- 2:
- 3:
loop-detection
compute-mass-in-function
- node: entry
=> [ local ] weight = 715827883, succ =
=> [ local ] weight = 715827883, succ =
=> [ local ] weight = 715827883, succ =
=> mass: ffffffffffffffff
=> assign 55555555ffffffff (aaaaaaaa00000000) to
=> assign 5555555500000000 (5555555500000000) to
=> assign 5555555500000000 (0000000000000000) to
- node:
=> [ local ] weight = 2147483648, succ =
=> mass: 55555555ffffffff
=> assign 55555555ffffffff (0000000000000000) to
- node:
=> [ local ] weight = 2147483648, succ =
=> mass: 5555555500000000
=> assign 5555555500000000 (0000000000000000) to
- node:
=> mass: ffffffffffffffff
float-to-int: min = 0.3333333333, max = 1.0, factor = 24.00000001
- entry: float = 1.0, scaled = 24.00000001, int = 24
- : float = 0.3333333335, scaled = 8.000000006, int = 8
- : float = 0.3333333333, scaled = 8.0, int = 7
- : float = 1.0, scaled = 24.00000001, int = 24
block-frequency-info: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
- entry: float = 1.0, int = 24
- : float = 0.33333, int = 7
- : float = 0.33333, int = 8
- : float = 1.0, int = 24
********** Begin Constant Hoisting **********
********** Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
********** End Constant Hoisting **********
*** IR Dump After Constant Hoisting ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Partially inline calls to library functions ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Instrument function entry/exit with calls to e.g. mcount() (post inlining) ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Scalarize Masked Memory Intrinsics ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Expand reduction intrinsics ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
discovered a new reachable node %entry
discovered a new reachable node %9
discovered a new reachable node %2
discovered a new reachable node %8
---- Branch Probability Info : _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_ ----
Computing probabilities for
Computing probabilities for
Computing probabilities for
Computing probabilities for entry
block-frequency: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
==================================================================
reverse-post-order-traversal
- 0: entry
- 1:
- 2:
- 3:
loop-detection
compute-mass-in-function
- node: entry
=> [ local ] weight = 715827883, succ =
=> [ local ] weight = 715827883, succ =
=> [ local ] weight = 715827883, succ =
=> mass: ffffffffffffffff
=> assign 55555555ffffffff (aaaaaaaa00000000) to
=> assign 5555555500000000 (5555555500000000) to
=> assign 5555555500000000 (0000000000000000) to
- node:
=> [ local ] weight = 2147483648, succ =
=> mass: 55555555ffffffff
=> assign 55555555ffffffff (0000000000000000) to
- node:
=> [ local ] weight = 2147483648, succ =
=> mass: 5555555500000000
=> assign 5555555500000000 (0000000000000000) to
- node:
=> mass: ffffffffffffffff
float-to-int: min = 0.3333333333, max = 1.0, factor = 24.00000001
- entry: float = 1.0, scaled = 24.00000001, int = 24
- : float = 0.3333333335, scaled = 8.000000006, int = 8
- : float = 0.3333333333, scaled = 8.0, int = 7
- : float = 1.0, scaled = 24.00000001, int = 24
block-frequency-info: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
- entry: float = 1.0, int = 24
- : float = 0.33333, int = 7
- : float = 0.33333, int = 8
- : float = 1.0, int = 24
CGP: Found local addrmode: [GV:@_Tv4main11delayFactorVs5UInt8]
CGP: Found local addrmode: [GV:@_Tv4main7delayUsVs6UInt32]
CGP: Found local addrmode: [GV:@_Tv4main7enabledSb]
*** IR Dump After CodeGen Prepare ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Rewrite Symbols ***; ModuleID = '<stdin>'
source_filename = "<stdin>"
target datalayout = "e-P1-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8"
target triple = "x86_64-apple-macosx10.9"
%Vs5UInt8 = type <{ i8 }>
%Vs6UInt32 = type <{ i32 }>
%Sb = type <{ i1 }>
@_Tv4main11delayFactorVs5UInt8 = hidden local_unnamed_addr global %Vs5UInt8 zeroinitializer, align 1
@_Tv4main7delayUsVs6UInt32 = hidden local_unnamed_addr global %Vs6UInt32 zeroinitializer, align 4
@_Tv4main7enabledSb = hidden local_unnamed_addr global %Sb zeroinitializer, align 1
declare void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16, i8) local_unnamed_addr addrspace(0)
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Lower invoke and unwind, for unwindless code generators ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
*** IR Dump After Remove unreachable blocks from the CFG ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
[SafeStack] Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
[SafeStack] safestack is not requested for this function
*** IR Dump After Safe Stack instrumentation pass ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
discovered a new reachable node %entry
discovered a new reachable node %9
discovered a new reachable node %2
discovered a new reachable node %8
*** IR Dump After Module Verifier ***
define hidden void @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_(i8, i8) local_unnamed_addr addrspace(0) {
entry:
switch i8 %0, label %9 [
i8 6, label %2
i8 7, label %8
]
; <label>:2: ; preds = %entry
%3 = icmp ugt i8 %1, 90
%4 = icmp ult i8 %1, 5
%. = select i1 %4, i8 5, i8 %1
%5 = select i1 %3, i8 90, i8 %.
store i8 %5, i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0), align 1
%6 = zext i8 %5 to i32
%7 = mul nuw nsw i32 %6, 100
store i32 %7, i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0), align 4
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 34, i8 %5)
br label %9
; <label>:8: ; preds = %entry
%not. = icmp ne i8 %1, 0
%.2 = zext i1 %not. to i8
store i1 %not., i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0), align 1
tail call addrspace(0) void @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_(i16 35, i8 %.2)
br label %9
; <label>:9: ; preds = %8, %2, %entry
ret void
}
discovered a new reachable node %entry
discovered a new reachable node %9
discovered a new reachable node %2
discovered a new reachable node %8
---- Branch Probability Info : _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_ ----
Computing probabilities for
Computing probabilities for
Computing probabilities for
Computing probabilities for entry
=== _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
Creating new node: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Creating new node: t4: i8,ch = CopyFromReg t0, Register:i8 %1
Case clusters: 6 7
Creating constant: t5: i8 = Constant<7>
Creating new node: t7: i1 = setcc t2, Constant:i8<7>, seteq:ch
Creating new node: t9: ch = brcond t0, t7, BasicBlock:ch< 0x7f8103002608>
Creating new node: t11: ch = br t9, BasicBlock:ch<entry 0x7f8103002798>
Initial selection DAG: %bb.0 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 12 nodes:
t0: ch = EntryToken
t4: i8,ch = CopyFromReg t0, Register:i8 %1
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t7: i1 = setcc t2, Constant:i8<7>, seteq:ch
t9: ch = brcond t0, t7, BasicBlock:ch< 0x7f8103002608>
t11: ch = br t9, BasicBlock:ch<entry 0x7f8103002798>
Combining: t11: ch = br t9, BasicBlock:ch<entry 0x7f8103002798>
Combining: t10: ch = BasicBlock<entry 0x7f8103002798>
Combining: t9: ch = brcond t0, t7, BasicBlock:ch< 0x7f8103002608>
Creating new node: t12: ch = br_cc t0, seteq:ch, t2, Constant:i8<7>, BasicBlock:ch< 0x7f8103002608>
... into: t12: ch = br_cc t0, seteq:ch, t2, Constant:i8<7>, BasicBlock:ch< 0x7f8103002608>
Combining: t11: ch = br t12, BasicBlock:ch<entry 0x7f8103002798>
Combining: t12: ch = br_cc t0, seteq:ch, t2, Constant:i8<7>, BasicBlock:ch< 0x7f8103002608>
Combining: t8: ch = BasicBlock< 0x7f8103002608>
Combining: t6: ch = seteq
Combining: t5: i8 = Constant<7>
Combining: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Combining: t1: i8 = Register %0
Combining: t0: ch = EntryToken
Optimized lowered selection DAG: %bb.0 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 9 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t12: ch = br_cc t0, seteq:ch, t2, Constant:i8<7>, BasicBlock:ch< 0x7f8103002608>
t11: ch = br t12, BasicBlock:ch<entry 0x7f8103002798>
Legalizing node: t10: ch = BasicBlock<entry 0x7f8103002798>
Analyzing result type: ch
Legal result type
Legally typed node: t10: ch = BasicBlock<entry 0x7f8103002798>
Legalizing node: t8: ch = BasicBlock< 0x7f8103002608>
Analyzing result type: ch
Legal result type
Legally typed node: t8: ch = BasicBlock< 0x7f8103002608>
Legalizing node: t6: ch = seteq
Analyzing result type: ch
Legal result type
Legally typed node: t6: ch = seteq
Legalizing node: t5: i8 = Constant<7>
Analyzing result type: i8
Legal result type
Legally typed node: t5: i8 = Constant<7>
Legalizing node: t1: i8 = Register %0
Ignoring node results
Legally typed node: t1: i8 = Register %0
Legalizing node: t0: ch = EntryToken
Analyzing result type: ch
Legal result type
Legally typed node: t0: ch = EntryToken
Legalizing node: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Analyzing result type: i8
Legal result type
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Legally typed node: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Legalizing node: t12: ch = br_cc t0, seteq:ch, t2, Constant:i8<7>, BasicBlock:ch< 0x7f8103002608>
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Analyzing operand: t6: ch = seteq
Legal operand
Analyzing operand: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Legal operand
Analyzing operand: t5: i8 = Constant<7>
Legal operand
Analyzing operand: t8: ch = BasicBlock< 0x7f8103002608>
Legal operand
Legally typed node: t12: ch = br_cc t0, seteq:ch, t2, Constant:i8<7>, BasicBlock:ch< 0x7f8103002608>
Legalizing node: t11: ch = br t12, BasicBlock:ch<entry 0x7f8103002798>
Analyzing result type: ch
Legal result type
Analyzing operand: t12: ch = br_cc t0, seteq:ch, t2, Constant:i8<7>, BasicBlock:ch< 0x7f8103002608>
Legal operand
Analyzing operand: t10: ch = BasicBlock<entry 0x7f8103002798>
Legal operand
Legally typed node: t11: ch = br t12, BasicBlock:ch<entry 0x7f8103002798>
Legalizing node: t65535: ch = handlenode t11
Analyzing result type: ch
Legal result type
Analyzing operand: t11: ch = br t12, BasicBlock:ch<entry 0x7f8103002798>
Legal operand
Legally typed node: t65535: ch = handlenode t11
Type-legalized selection DAG: %bb.0 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 9 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t12: ch = br_cc t0, seteq:ch, t2, Constant:i8<7>, BasicBlock:ch< 0x7f8103002608>
t11: ch = br t12, BasicBlock:ch<entry 0x7f8103002798>
Legalizing: t11: ch = br t12, BasicBlock:ch<entry 0x7f8103002798>
Legal node: nothing to do
Legalizing: t12: ch = br_cc t0, seteq:ch, t2, Constant:i8<7>, BasicBlock:ch< 0x7f8103002608>
Trying custom legalization
Creating new node: t13: glue = CMP t2, Constant:i8<7>
Creating constant: t14: i8 = Constant<0>
Creating new node: t15: ch = BRCOND t0, BasicBlock:ch< 0x7f8103002608>, Constant:i8<0>, t13
Successfully custom legalized node
... replacing: t12: ch = br_cc t0, seteq:ch, t2, Constant:i8<7>, BasicBlock:ch< 0x7f8103002608>
with: t15: ch = BRCOND t0, BasicBlock:ch< 0x7f8103002608>, Constant:i8<0>, t13
Legalizing: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Legal node: nothing to do
Legalizing: t10: ch = BasicBlock<entry 0x7f8103002798>
Legal node: nothing to do
Legalizing: t8: ch = BasicBlock< 0x7f8103002608>
Legal node: nothing to do
Legalizing: t5: i8 = Constant<7>
Legal node: nothing to do
Legalizing: t1: i8 = Register %0
Legalizing: t0: ch = EntryToken
Legal node: nothing to do
Legalizing: t15: ch = BRCOND t0, BasicBlock:ch< 0x7f8103002608>, Constant:i8<0>, t13
Legal node: nothing to do
Legalizing: t14: i8 = Constant<0>
Legal node: nothing to do
Legalizing: t13: glue = CMP t2, Constant:i8<7>
Legal node: nothing to do
Legalized selection DAG: %bb.0 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 10 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t13: glue = CMP t2, Constant:i8<7>
t15: ch = BRCOND t0, BasicBlock:ch< 0x7f8103002608>, Constant:i8<0>, t13
t11: ch = br t15, BasicBlock:ch<entry 0x7f8103002798>
Legalizing: t15: ch = BRCOND t0, BasicBlock:ch< 0x7f8103002608>, Constant:i8<0>, t13
Legal node: nothing to do
Combining: t15: ch = BRCOND t0, BasicBlock:ch< 0x7f8103002608>, Constant:i8<0>, t13
Legalizing: t14: i8 = Constant<0>
Legal node: nothing to do
Combining: t14: i8 = Constant<0>
Legalizing: t13: glue = CMP t2, Constant:i8<7>
Legal node: nothing to do
Combining: t13: glue = CMP t2, Constant:i8<7>
Legalizing: t11: ch = br t15, BasicBlock:ch<entry 0x7f8103002798>
Legal node: nothing to do
Combining: t11: ch = br t15, BasicBlock:ch<entry 0x7f8103002798>
Legalizing: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Legal node: nothing to do
Combining: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Legalizing: t10: ch = BasicBlock<entry 0x7f8103002798>
Legal node: nothing to do
Combining: t10: ch = BasicBlock<entry 0x7f8103002798>
Legalizing: t8: ch = BasicBlock< 0x7f8103002608>
Legal node: nothing to do
Combining: t8: ch = BasicBlock< 0x7f8103002608>
Legalizing: t5: i8 = Constant<7>
Legal node: nothing to do
Combining: t5: i8 = Constant<7>
Legalizing: t1: i8 = Register %0
Combining: t1: i8 = Register %0
Legalizing: t0: ch = EntryToken
Legal node: nothing to do
Combining: t0: ch = EntryToken
Optimized legalized selection DAG: %bb.0 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 10 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t13: glue = CMP t2, Constant:i8<7>
t15: ch = BRCOND t0, BasicBlock:ch< 0x7f8103002608>, Constant:i8<0>, t13
t11: ch = br t15, BasicBlock:ch<entry 0x7f8103002798>
===== Instruction selection begins: %bb.0 'entry'
ISEL: Starting selection on root node: t11: ch = br t15, BasicBlock:ch<entry 0x7f8103002798>
ISEL: Starting pattern match
Morphed node: t11: ch = RJMPk BasicBlock:ch<entry 0x7f8103002798>, t15
ISEL: Match complete!
ISEL: Starting selection on root node: t15: ch = BRCOND t0, BasicBlock:ch< 0x7f8103002608>, Constant:i8<0>, t13
ISEL: Starting pattern match
Initial Opcode index to 1237
Morphed node: t15: ch = BREQk BasicBlock:ch< 0x7f8103002608>, t0, t13
ISEL: Match complete!
ISEL: Starting selection on root node: t13: glue = CMP t2, Constant:i8<7>
ISEL: Starting pattern match
Initial Opcode index to 1607
Creating constant: t16: i8 = TargetConstant<7>
Morphed node: t13: i8,glue = CPIRdK t2, TargetConstant:i8<7>
ISEL: Match complete!
ISEL: Starting selection on root node: t2: i8,ch = CopyFromReg t0, Register:i8 %0
ISEL: Starting selection on root node: t10: ch = BasicBlock<entry 0x7f8103002798>
ISEL: Starting selection on root node: t8: ch = BasicBlock< 0x7f8103002608>
ISEL: Starting selection on root node: t1: i8 = Register %0
ISEL: Starting selection on root node: t0: ch = EntryToken
===== Instruction selection ends:
Selected selection DAG: %bb.0 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 9 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t13: i8,glue = CPIRdK t2, TargetConstant:i8<7>
t15: ch = BREQk BasicBlock:ch< 0x7f8103002608>, t0, t13:1
t11: ch = RJMPk BasicBlock:ch<entry 0x7f8103002798>, t15
********** List Scheduling %bb.0 'entry' **********
SU(0): t11: ch = RJMPk BasicBlock:ch<entry 0x7f8103002798>, t15
# preds left : 1
# succs left : 0
# rdefs left : 0
Latency : 1
Depth : 2
Height : 0
Predecessors:
SU(1): Ord Latency=1 Barrier
SU(1): t15: ch = BREQk BasicBlock:ch< 0x7f8103002608>, t0, t13:1
t13: i8,glue = CPIRdK t2, TargetConstant:i8<7>
# preds left : 1
# succs left : 1
# rdefs left : 0
Latency : 1
Depth : 1
Height : 1
Predecessors:
SU(2): Data Latency=1
Successors:
SU(0): Ord Latency=1 Barrier
SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %0
# preds left : 0
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 0
Height : 2
Successors:
SU(1): Data Latency=1
Examining Available:
Height 0: SU(0): t11: ch = RJMPk BasicBlock:ch<entry 0x7f8103002798>, t15
*** Scheduling [0]: SU(0): t11: ch = RJMPk BasicBlock:ch<entry 0x7f8103002798>, t15
Examining Available:
Height 1: SU(1): t15: ch = BREQk BasicBlock:ch< 0x7f8103002608>, t0, t13:1
t13: i8,glue = CPIRdK t2, TargetConstant:i8<7>
*** Scheduling [1]: SU(1): t15: ch = BREQk BasicBlock:ch< 0x7f8103002608>, t0, t13:1
t13: i8,glue = CPIRdK t2, TargetConstant:i8<7>
Examining Available:
Height 2: SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %0
*** Scheduling [2]: SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %0
*** Final schedule ***
SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %0
SU(1): t15: ch = BREQk BasicBlock:ch< 0x7f8103002608>, t0, t13:1
t13: i8,glue = CPIRdK t2, TargetConstant:i8<7>
SU(0): t11: ch = RJMPk BasicBlock:ch<entry 0x7f8103002798>, t15
Total amount of phi nodes to update: 0
Creating new node: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Creating constant: t3: i8 = Constant<6>
Creating new node: t5: i1 = setcc t2, Constant:i8<6>, seteq:ch
Creating constant: t6: i1 = Constant<-1>
Creating new node: t7: i1 = xor t5, Constant:i1<-1>
Creating new node: t9: ch = brcond t0, t7, BasicBlock:ch< 0x7f81030026d0>
Creating new node: t11: ch = br t9, BasicBlock:ch< 0x7f8103002540>
Initial selection DAG: %bb.4 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 12 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t5: i1 = setcc t2, Constant:i8<6>, seteq:ch
t7: i1 = xor t5, Constant:i1<-1>
t9: ch = brcond t0, t7, BasicBlock:ch< 0x7f81030026d0>
t11: ch = br t9, BasicBlock:ch< 0x7f8103002540>
Combining: t11: ch = br t9, BasicBlock:ch< 0x7f8103002540>
Combining: t10: ch = BasicBlock< 0x7f8103002540>
Combining: t9: ch = brcond t0, t7, BasicBlock:ch< 0x7f81030026d0>
Creating new node: t13: i1 = setcc t2, Constant:i8<6>, setne:ch
Creating new node: t14: ch = brcond t0, t13, BasicBlock:ch< 0x7f81030026d0>
... into: t14: ch = brcond t0, t13, BasicBlock:ch< 0x7f81030026d0>
Combining: t11: ch = br t14, BasicBlock:ch< 0x7f8103002540>
Combining: t14: ch = brcond t0, t13, BasicBlock:ch< 0x7f81030026d0>
Creating new node: t15: ch = br_cc t0, setne:ch, t2, Constant:i8<6>, BasicBlock:ch< 0x7f81030026d0>
... into: t15: ch = br_cc t0, setne:ch, t2, Constant:i8<6>, BasicBlock:ch< 0x7f81030026d0>
Combining: t12: ch = setne
Combining: t11: ch = br t15, BasicBlock:ch< 0x7f8103002540>
Combining: t15: ch = br_cc t0, setne:ch, t2, Constant:i8<6>, BasicBlock:ch< 0x7f81030026d0>
Combining: t8: ch = BasicBlock< 0x7f81030026d0>
Combining: t3: i8 = Constant<6>
Combining: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Combining: t1: i8 = Register %0
Combining: t0: ch = EntryToken
Optimized lowered selection DAG: %bb.4 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 9 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t15: ch = br_cc t0, setne:ch, t2, Constant:i8<6>, BasicBlock:ch< 0x7f81030026d0>
t11: ch = br t15, BasicBlock:ch< 0x7f8103002540>
Legalizing node: t12: ch = setne
Analyzing result type: ch
Legal result type
Legally typed node: t12: ch = setne
Legalizing node: t10: ch = BasicBlock< 0x7f8103002540>
Analyzing result type: ch
Legal result type
Legally typed node: t10: ch = BasicBlock< 0x7f8103002540>
Legalizing node: t8: ch = BasicBlock< 0x7f81030026d0>
Analyzing result type: ch
Legal result type
Legally typed node: t8: ch = BasicBlock< 0x7f81030026d0>
Legalizing node: t3: i8 = Constant<6>
Analyzing result type: i8
Legal result type
Legally typed node: t3: i8 = Constant<6>
Legalizing node: t1: i8 = Register %0
Ignoring node results
Legally typed node: t1: i8 = Register %0
Legalizing node: t0: ch = EntryToken
Analyzing result type: ch
Legal result type
Legally typed node: t0: ch = EntryToken
Legalizing node: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Analyzing result type: i8
Legal result type
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Legally typed node: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Legalizing node: t15: ch = br_cc t0, setne:ch, t2, Constant:i8<6>, BasicBlock:ch< 0x7f81030026d0>
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Analyzing operand: t12: ch = setne
Legal operand
Analyzing operand: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Legal operand
Analyzing operand: t3: i8 = Constant<6>
Legal operand
Analyzing operand: t8: ch = BasicBlock< 0x7f81030026d0>
Legal operand
Legally typed node: t15: ch = br_cc t0, setne:ch, t2, Constant:i8<6>, BasicBlock:ch< 0x7f81030026d0>
Legalizing node: t11: ch = br t15, BasicBlock:ch< 0x7f8103002540>
Analyzing result type: ch
Legal result type
Analyzing operand: t15: ch = br_cc t0, setne:ch, t2, Constant:i8<6>, BasicBlock:ch< 0x7f81030026d0>
Legal operand
Analyzing operand: t10: ch = BasicBlock< 0x7f8103002540>
Legal operand
Legally typed node: t11: ch = br t15, BasicBlock:ch< 0x7f8103002540>
Legalizing node: t65535: ch = handlenode t11
Analyzing result type: ch
Legal result type
Analyzing operand: t11: ch = br t15, BasicBlock:ch< 0x7f8103002540>
Legal operand
Legally typed node: t65535: ch = handlenode t11
Type-legalized selection DAG: %bb.4 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 9 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t15: ch = br_cc t0, setne:ch, t2, Constant:i8<6>, BasicBlock:ch< 0x7f81030026d0>
t11: ch = br t15, BasicBlock:ch< 0x7f8103002540>
Legalizing: t11: ch = br t15, BasicBlock:ch< 0x7f8103002540>
Legal node: nothing to do
Legalizing: t15: ch = br_cc t0, setne:ch, t2, Constant:i8<6>, BasicBlock:ch< 0x7f81030026d0>
Trying custom legalization
Creating new node: t16: glue = CMP t2, Constant:i8<6>
Creating constant: t17: i8 = Constant<1>
Creating new node: t18: ch = BRCOND t0, BasicBlock:ch< 0x7f81030026d0>, Constant:i8<1>, t16
Successfully custom legalized node
... replacing: t15: ch = br_cc t0, setne:ch, t2, Constant:i8<6>, BasicBlock:ch< 0x7f81030026d0>
with: t18: ch = BRCOND t0, BasicBlock:ch< 0x7f81030026d0>, Constant:i8<1>, t16
Legalizing: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Legal node: nothing to do
Legalizing: t10: ch = BasicBlock< 0x7f8103002540>
Legal node: nothing to do
Legalizing: t8: ch = BasicBlock< 0x7f81030026d0>
Legal node: nothing to do
Legalizing: t3: i8 = Constant<6>
Legal node: nothing to do
Legalizing: t1: i8 = Register %0
Legalizing: t0: ch = EntryToken
Legal node: nothing to do
Legalizing: t18: ch = BRCOND t0, BasicBlock:ch< 0x7f81030026d0>, Constant:i8<1>, t16
Legal node: nothing to do
Legalizing: t17: i8 = Constant<1>
Legal node: nothing to do
Legalizing: t16: glue = CMP t2, Constant:i8<6>
Legal node: nothing to do
Legalized selection DAG: %bb.4 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 10 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t16: glue = CMP t2, Constant:i8<6>
t18: ch = BRCOND t0, BasicBlock:ch< 0x7f81030026d0>, Constant:i8<1>, t16
t11: ch = br t18, BasicBlock:ch< 0x7f8103002540>
Legalizing: t18: ch = BRCOND t0, BasicBlock:ch< 0x7f81030026d0>, Constant:i8<1>, t16
Legal node: nothing to do
Combining: t18: ch = BRCOND t0, BasicBlock:ch< 0x7f81030026d0>, Constant:i8<1>, t16
Legalizing: t17: i8 = Constant<1>
Legal node: nothing to do
Combining: t17: i8 = Constant<1>
Legalizing: t16: glue = CMP t2, Constant:i8<6>
Legal node: nothing to do
Combining: t16: glue = CMP t2, Constant:i8<6>
Legalizing: t11: ch = br t18, BasicBlock:ch< 0x7f8103002540>
Legal node: nothing to do
Combining: t11: ch = br t18, BasicBlock:ch< 0x7f8103002540>
Legalizing: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Legal node: nothing to do
Combining: t2: i8,ch = CopyFromReg t0, Register:i8 %0
Legalizing: t10: ch = BasicBlock< 0x7f8103002540>
Legal node: nothing to do
Combining: t10: ch = BasicBlock< 0x7f8103002540>
Legalizing: t8: ch = BasicBlock< 0x7f81030026d0>
Legal node: nothing to do
Combining: t8: ch = BasicBlock< 0x7f81030026d0>
Legalizing: t3: i8 = Constant<6>
Legal node: nothing to do
Combining: t3: i8 = Constant<6>
Legalizing: t1: i8 = Register %0
Combining: t1: i8 = Register %0
Legalizing: t0: ch = EntryToken
Legal node: nothing to do
Combining: t0: ch = EntryToken
Optimized legalized selection DAG: %bb.4 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 10 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t16: glue = CMP t2, Constant:i8<6>
t18: ch = BRCOND t0, BasicBlock:ch< 0x7f81030026d0>, Constant:i8<1>, t16
t11: ch = br t18, BasicBlock:ch< 0x7f8103002540>
===== Instruction selection begins: %bb.4 'entry'
ISEL: Starting selection on root node: t11: ch = br t18, BasicBlock:ch< 0x7f8103002540>
ISEL: Starting pattern match
Initial Opcode index to 2206
Morphed node: t11: ch = RJMPk BasicBlock:ch< 0x7f8103002540>, t18
ISEL: Match complete!
ISEL: Starting selection on root node: t18: ch = BRCOND t0, BasicBlock:ch< 0x7f81030026d0>, Constant:i8<1>, t16
ISEL: Starting pattern match
Initial Opcode index to 1237
Skipped scope entry (due to false predicate) at index 1247, continuing at 1256
Morphed node: t18: ch = BRNEk BasicBlock:ch< 0x7f81030026d0>, t0, t16
ISEL: Match complete!
ISEL: Starting selection on root node: t16: glue = CMP t2, Constant:i8<6>
ISEL: Starting pattern match
Initial Opcode index to 1607
Creating constant: t19: i8 = TargetConstant<6>
Morphed node: t16: i8,glue = CPIRdK t2, TargetConstant:i8<6>
ISEL: Match complete!
ISEL: Starting selection on root node: t2: i8,ch = CopyFromReg t0, Register:i8 %0
ISEL: Starting selection on root node: t10: ch = BasicBlock< 0x7f8103002540>
ISEL: Starting selection on root node: t8: ch = BasicBlock< 0x7f81030026d0>
ISEL: Starting selection on root node: t1: i8 = Register %0
ISEL: Starting selection on root node: t0: ch = EntryToken
===== Instruction selection ends:
Selected selection DAG: %bb.4 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:entry'
SelectionDAG has 9 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %0
t16: i8,glue = CPIRdK t2, TargetConstant:i8<6>
t18: ch = BRNEk BasicBlock:ch< 0x7f81030026d0>, t0, t16:1
t11: ch = RJMPk BasicBlock:ch< 0x7f8103002540>, t18
********** List Scheduling %bb.4 'entry' **********
SU(0): t11: ch = RJMPk BasicBlock:ch< 0x7f8103002540>, t18
# preds left : 1
# succs left : 0
# rdefs left : 0
Latency : 1
Depth : 2
Height : 0
Predecessors:
SU(1): Ord Latency=1 Barrier
SU(1): t18: ch = BRNEk BasicBlock:ch< 0x7f81030026d0>, t0, t16:1
t16: i8,glue = CPIRdK t2, TargetConstant:i8<6>
# preds left : 1
# succs left : 1
# rdefs left : 0
Latency : 1
Depth : 1
Height : 1
Predecessors:
SU(2): Data Latency=1
Successors:
SU(0): Ord Latency=1 Barrier
SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %0
# preds left : 0
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 0
Height : 2
Successors:
SU(1): Data Latency=1
Examining Available:
Height 0: SU(0): t11: ch = RJMPk BasicBlock:ch< 0x7f8103002540>, t18
*** Scheduling [0]: SU(0): t11: ch = RJMPk BasicBlock:ch< 0x7f8103002540>, t18
Examining Available:
Height 1: SU(1): t18: ch = BRNEk BasicBlock:ch< 0x7f81030026d0>, t0, t16:1
t16: i8,glue = CPIRdK t2, TargetConstant:i8<6>
*** Scheduling [1]: SU(1): t18: ch = BRNEk BasicBlock:ch< 0x7f81030026d0>, t0, t16:1
t16: i8,glue = CPIRdK t2, TargetConstant:i8<6>
Examining Available:
Height 2: SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %0
*** Scheduling [2]: SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %0
*** Final schedule ***
SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %0
SU(1): t18: ch = BRNEk BasicBlock:ch< 0x7f81030026d0>, t0, t16:1
t16: i8,glue = CPIRdK t2, TargetConstant:i8<6>
SU(0): t11: ch = RJMPk BasicBlock:ch< 0x7f8103002540>, t18
Creating new node: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Creating constant: t3: i8 = Constant<0>
Creating new node: t5: i1 = setcc t2, Constant:i8<0>, setne:ch
Creating new node: t6: i8 = zero_extend t5
Creating constant: t8: i16 = Constant<0>
Creating new node: t9: i16 = undef
Creating new node: t10: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t5, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Creating constant: t12: i16 = Constant<35>
Creating constant: t14: i16 = TargetConstant<0>
Creating new node: t15: ch,glue = callseq_start t10, TargetConstant:i16<0>, TargetConstant:i16<0>
Creating new node: t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
Creating new node: t19: ch,glue = CopyToReg t17, Register:i8 $r22, t6, t17:1
Creating new node: t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
Creating new node: t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Initial selection DAG: %bb.2 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 23 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t5: i1 = setcc t2, Constant:i8<0>, setne:ch
t8: i16 = Constant<0>
t11: i16 = GlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
t10: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t5, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
t15: ch,glue = callseq_start t10, TargetConstant:i16<0>, TargetConstant:i16<0>
t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
t6: i8 = zero_extend t5
t19: ch,glue = CopyToReg t17, Register:i8 $r22, t6, t17:1
t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Combining: t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Combining: t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
Combining: t20: Untyped = RegisterMask
Combining: t19: ch,glue = CopyToReg t17, Register:i8 $r22, t6, t17:1
Combining: t18: i8 = Register $r22
Combining: t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
Combining: t16: i16 = Register $r25r24
Combining: t15: ch,glue = callseq_start t10, TargetConstant:i16<0>, TargetConstant:i16<0>
Combining: t14: i16 = TargetConstant<0>
Combining: t13: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Combining: t12: i16 = Constant<35>
Combining: t10: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t5, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Combining: t9: i16 = undef
Combining: t7: i16 = GlobalAddress<%Sb* @_Tv4main7enabledSb> 0
Combining: t6: i8 = zero_extend t5
Creating constant: t23: i8 = Constant<1>
Combining: t5: i1 = setcc t2, Constant:i8<0>, setne:ch
Combining: t4: ch = setne
Combining: t3: i8 = Constant<0>
Combining: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Combining: t1: i8 = Register %1
Combining: t0: ch = EntryToken
Optimized lowered selection DAG: %bb.2 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 21 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t5: i1 = setcc t2, Constant:i8<0>, setne:ch
t10: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t5, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
t15: ch,glue = callseq_start t10, TargetConstant:i16<0>, TargetConstant:i16<0>
t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
t6: i8 = zero_extend t5
t19: ch,glue = CopyToReg t17, Register:i8 $r22, t6, t17:1
t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Legalizing node: t20: Untyped = RegisterMask
Analyzing result type: Untyped
Legal result type
Legally typed node: t20: Untyped = RegisterMask
Legalizing node: t18: i8 = Register $r22
Ignoring node results
Legally typed node: t18: i8 = Register $r22
Legalizing node: t16: i16 = Register $r25r24
Ignoring node results
Legally typed node: t16: i16 = Register $r25r24
Legalizing node: t14: i16 = TargetConstant<0>
Ignoring node results
Legally typed node: t14: i16 = TargetConstant<0>
Legalizing node: t13: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Analyzing result type: i16
Legal result type
Legally typed node: t13: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Legalizing node: t12: i16 = Constant<35>
Analyzing result type: i16
Legal result type
Legally typed node: t12: i16 = Constant<35>
Legalizing node: t9: i16 = undef
Analyzing result type: i16
Legal result type
Legally typed node: t9: i16 = undef
Legalizing node: t7: i16 = GlobalAddress<%Sb* @_Tv4main7enabledSb> 0
Analyzing result type: i16
Legal result type
Legally typed node: t7: i16 = GlobalAddress<%Sb* @_Tv4main7enabledSb> 0
Legalizing node: t4: ch = setne
Analyzing result type: ch
Legal result type
Legally typed node: t4: ch = setne
Legalizing node: t3: i8 = Constant<0>
Analyzing result type: i8
Legal result type
Legally typed node: t3: i8 = Constant<0>
Legalizing node: t1: i8 = Register %1
Ignoring node results
Legally typed node: t1: i8 = Register %1
Legalizing node: t0: ch = EntryToken
Analyzing result type: ch
Legal result type
Legally typed node: t0: ch = EntryToken
Legalizing node: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Analyzing result type: i8
Legal result type
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Legally typed node: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legalizing node: t5: i1 = setcc t2, Constant:i8<0>, setne:ch
Analyzing result type: i1
Promote integer result: t5: i1 = setcc t2, Constant:i8<0>, setne:ch
Creating new node: t24: i8 = setcc t2, Constant:i8<0>, setne:ch
Legalizing node: t6: i8 = zero_extend t5
Analyzing result type: i8
Legal result type
Analyzing operand: t5: i1 = setcc t2, Constant:i8<0>, setne:ch
Promote integer operand: t6: i8 = zero_extend t5
Creating constant: t25: i8 = Constant<1>
Creating new node: t26: i8 = and t24, Constant:i8<1>
Legalizing node: t25: i8 = Constant<1>
Analyzing result type: i8
Legal result type
Legally typed node: t25: i8 = Constant<1>
Legalizing node: t10: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t5, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Analyzing operand: t5: i1 = setcc t2, Constant:i8<0>, setne:ch
Promote integer operand: t10: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t5, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Creating new node: t27: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`), trunc to i1> t0, t24, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Legalizing node: t24: i8 = setcc t2, Constant:i8<0>, setne:ch
Analyzing result type: i8
Legal result type
Analyzing operand: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legal operand
Analyzing operand: t3: i8 = Constant<0>
Legal operand
Analyzing operand: t4: ch = setne
Legal operand
Legally typed node: t24: i8 = setcc t2, Constant:i8<0>, setne:ch
Legalizing node: t26: i8 = and t24, Constant:i8<1>
Analyzing result type: i8
Legal result type
Analyzing operand: t24: i8 = setcc t2, Constant:i8<0>, setne:ch
Legal operand
Analyzing operand: t25: i8 = Constant<1>
Legal operand
Legally typed node: t26: i8 = and t24, Constant:i8<1>
Legalizing node: t27: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`), trunc to i1> t0, t24, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Analyzing operand: t24: i8 = setcc t2, Constant:i8<0>, setne:ch
Legal operand
Analyzing operand: t7: i16 = GlobalAddress<%Sb* @_Tv4main7enabledSb> 0
Legal operand
Analyzing operand: t9: i16 = undef
Legal operand
Legally typed node: t27: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`), trunc to i1> t0, t24, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Legalizing node: t15: ch,glue = callseq_start t27, TargetConstant:i16<0>, TargetConstant:i16<0>
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t27: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`), trunc to i1> t0, t24, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Legal operand
Legally typed node: t15: ch,glue = callseq_start t27, TargetConstant:i16<0>, TargetConstant:i16<0>
Legalizing node: t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t15: ch,glue = callseq_start t27, TargetConstant:i16<0>, TargetConstant:i16<0>
Legal operand
Analyzing operand: t12: i16 = Constant<35>
Legal operand
Legally typed node: t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
Legalizing node: t19: ch,glue = CopyToReg t17, Register:i8 $r22, t26, t17:1
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
Legal operand
Analyzing operand: t26: i8 = and t24, Constant:i8<1>
Legal operand
Analyzing operand: t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
Legal operand
Legally typed node: t19: ch,glue = CopyToReg t17, Register:i8 $r22, t26, t17:1
Legalizing node: t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t19: ch,glue = CopyToReg t17, Register:i8 $r22, t26, t17:1
Legal operand
Analyzing operand: t13: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Legal operand
Analyzing operand: t20: Untyped = RegisterMask
Legal operand
Analyzing operand: t19: ch,glue = CopyToReg t17, Register:i8 $r22, t26, t17:1
Legal operand
Legally typed node: t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
Legalizing node: t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
Legal operand
Analyzing operand: t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
Legal operand
Legally typed node: t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Legalizing node: t65535: ch = handlenode t22
Analyzing result type: ch
Legal result type
Analyzing operand: t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Legal operand
Legally typed node: t65535: ch = handlenode t22
Type-legalized selection DAG: %bb.2 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 22 nodes:
t0: ch = EntryToken
t27: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`), trunc to i1> t0, t24, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
t15: ch,glue = callseq_start t27, TargetConstant:i16<0>, TargetConstant:i16<0>
t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
t26: i8 = and t24, Constant:i8<1>
t19: ch,glue = CopyToReg t17, Register:i8 $r22, t26, t17:1
t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t24: i8 = setcc t2, Constant:i8<0>, setne:ch
t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Combining: t27: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`), trunc to i1> t0, t24, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Combining: t26: i8 = and t24, Constant:i8<1>
Replacing.2 t26: i8 = and t24, Constant:i8<1>
With: t24: i8 = setcc t2, Constant:i8<0>, setne:ch
Combining: t27: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`), trunc to i1> t0, t24, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Combining: t24: i8 = setcc t2, Constant:i8<0>, setne:ch
Combining: t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Combining: t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
Combining: t20: Untyped = RegisterMask
Combining: t19: ch,glue = CopyToReg t17, Register:i8 $r22, t24, t17:1
Combining: t18: i8 = Register $r22
Combining: t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
Combining: t16: i16 = Register $r25r24
Combining: t15: ch,glue = callseq_start t27, TargetConstant:i16<0>, TargetConstant:i16<0>
Combining: t14: i16 = TargetConstant<0>
Combining: t13: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Combining: t12: i16 = Constant<35>
Combining: t9: i16 = undef
Combining: t7: i16 = GlobalAddress<%Sb* @_Tv4main7enabledSb> 0
Combining: t4: ch = setne
Combining: t3: i8 = Constant<0>
Combining: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Combining: t1: i8 = Register %1
Combining: t0: ch = EntryToken
Optimized type-legalized selection DAG: %bb.2 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 20 nodes:
t0: ch = EntryToken
t27: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`), trunc to i1> t0, t24, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
t15: ch,glue = callseq_start t27, TargetConstant:i16<0>, TargetConstant:i16<0>
t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
t19: ch,glue = CopyToReg t17, Register:i8 $r22, t24, t17:1
t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t24: i8 = setcc t2, Constant:i8<0>, setne:ch
t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Legalizing: t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Legalizing: t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
Legal node: nothing to do
Legalizing: t19: ch,glue = CopyToReg t17, Register:i8 $r22, t24, t17:1
Legal node: nothing to do
Legalizing: t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
Legal node: nothing to do
Legalizing: t15: ch,glue = callseq_start t27, TargetConstant:i16<0>, TargetConstant:i16<0>
Legalizing: t27: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`), trunc to i1> t0, t24, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Legalizing truncating store operations
Creating constant: t28: i8 = Constant<1>
Creating new node: t29: i8 = and t24, Constant:i8<1>
Creating new node: t30: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t29, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
... replacing: t27: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`), trunc to i1> t0, t24, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
with: t30: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t29, GlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, undef:i16
Legalizing: t24: i8 = setcc t2, Constant:i8<0>, setne:ch
Trying custom legalization
Creating new node: t31: glue = CMP t2, Constant:i8<0>
Creating new node: t32: i8,glue = SELECT_CC Constant:i8<1>, Constant:i8<0>, Constant:i8<1>, t31
Successfully custom legalized node
... replacing: t24: i8 = setcc t2, Constant:i8<0>, setne:ch
with: t32: i8,glue = SELECT_CC Constant:i8<1>, Constant:i8<0>, Constant:i8<1>, t31
Legalizing: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legal node: nothing to do
Legalizing: t20: Untyped = RegisterMask
Legal node: nothing to do
Legalizing: t18: i8 = Register $r22
Legalizing: t16: i16 = Register $r25r24
Legalizing: t14: i16 = TargetConstant<0>
Legalizing: t13: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Legal node: nothing to do
Legalizing: t12: i16 = Constant<35>
Legal node: nothing to do
Legalizing: t9: i16 = undef
Legal node: nothing to do
Legalizing: t7: i16 = GlobalAddress<%Sb* @_Tv4main7enabledSb> 0
Trying custom legalization
Creating new node: t34: i16 = WRAPPER TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0
Successfully custom legalized node
... replacing: t7: i16 = GlobalAddress<%Sb* @_Tv4main7enabledSb> 0
with: t34: i16 = WRAPPER TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0
Legalizing: t3: i8 = Constant<0>
Legal node: nothing to do
Legalizing: t1: i8 = Register %1
Legalizing: t0: ch = EntryToken
Legal node: nothing to do
Legalizing: t34: i16 = WRAPPER TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0
Legal node: nothing to do
Legalizing: t33: i16 = TargetGlobalAddress<%Sb* @_Tv4main7enabledSb> 0
Legal node: nothing to do
Legalizing: t32: i8,glue = SELECT_CC Constant:i8<1>, Constant:i8<0>, Constant:i8<1>, t31
Legal node: nothing to do
Legalizing: t31: glue = CMP t2, Constant:i8<0>
Legal node: nothing to do
Legalizing: t30: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t29, t34, undef:i16
Legalizing store operation
Optimizing float store operations
Legal store
Legalizing: t29: i8 = and t32, Constant:i8<1>
Legal node: nothing to do
Legalizing: t28: i8 = Constant<1>
Legal node: nothing to do
Legalized selection DAG: %bb.2 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 23 nodes:
t0: ch = EntryToken
t29: i8 = and t32, Constant:i8<1>
t34: i16 = WRAPPER TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0
t30: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t29, t34, undef:i16
t15: ch,glue = callseq_start t30, TargetConstant:i16<0>, TargetConstant:i16<0>
t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
t19: ch,glue = CopyToReg t17, Register:i8 $r22, t32, t17:1
t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t31: glue = CMP t2, Constant:i8<0>
t32: i8,glue = SELECT_CC Constant:i8<1>, Constant:i8<0>, Constant:i8<1>, t31
t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Legalizing: t34: i16 = WRAPPER TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0
Legal node: nothing to do
Combining: t34: i16 = WRAPPER TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0
Legalizing: t33: i16 = TargetGlobalAddress<%Sb* @_Tv4main7enabledSb> 0
Legal node: nothing to do
Combining: t33: i16 = TargetGlobalAddress<%Sb* @_Tv4main7enabledSb> 0
Legalizing: t32: i8,glue = SELECT_CC Constant:i8<1>, Constant:i8<0>, Constant:i8<1>, t31
Legal node: nothing to do
Combining: t32: i8,glue = SELECT_CC Constant:i8<1>, Constant:i8<0>, Constant:i8<1>, t31
Legalizing: t31: glue = CMP t2, Constant:i8<0>
Legal node: nothing to do
Combining: t31: glue = CMP t2, Constant:i8<0>
Legalizing: t30: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t29, t34, undef:i16
Legalizing store operation
Optimizing float store operations
Legal store
Combining: t30: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t29, t34, undef:i16
Legalizing: t29: i8 = and t32, Constant:i8<1>
Legal node: nothing to do
Combining: t29: i8 = and t32, Constant:i8<1>
Legalizing: t28: i8 = Constant<1>
Legal node: nothing to do
Combining: t28: i8 = Constant<1>
Legalizing: t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Combining: t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
Legalizing: t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
Legal node: nothing to do
Combining: t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
Legalizing: t19: ch,glue = CopyToReg t17, Register:i8 $r22, t32, t17:1
Legal node: nothing to do
Combining: t19: ch,glue = CopyToReg t17, Register:i8 $r22, t32, t17:1
Legalizing: t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
Legal node: nothing to do
Combining: t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
Legalizing: t15: ch,glue = callseq_start t30, TargetConstant:i16<0>, TargetConstant:i16<0>
Combining: t15: ch,glue = callseq_start t30, TargetConstant:i16<0>, TargetConstant:i16<0>
Legalizing: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legal node: nothing to do
Combining: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legalizing: t20: Untyped = RegisterMask
Legal node: nothing to do
Combining: t20: Untyped = RegisterMask
Legalizing: t18: i8 = Register $r22
Combining: t18: i8 = Register $r22
Legalizing: t16: i16 = Register $r25r24
Combining: t16: i16 = Register $r25r24
Legalizing: t14: i16 = TargetConstant<0>
Combining: t14: i16 = TargetConstant<0>
Legalizing: t13: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Legal node: nothing to do
Combining: t13: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Legalizing: t12: i16 = Constant<35>
Legal node: nothing to do
Combining: t12: i16 = Constant<35>
Legalizing: t9: i16 = undef
Legal node: nothing to do
Combining: t9: i16 = undef
Legalizing: t3: i8 = Constant<0>
Legal node: nothing to do
Combining: t3: i8 = Constant<0>
Legalizing: t1: i8 = Register %1
Combining: t1: i8 = Register %1
Legalizing: t0: ch = EntryToken
Legal node: nothing to do
Combining: t0: ch = EntryToken
Optimized legalized selection DAG: %bb.2 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 23 nodes:
t0: ch = EntryToken
t29: i8 = and t32, Constant:i8<1>
t34: i16 = WRAPPER TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0
t30: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t29, t34, undef:i16
t15: ch,glue = callseq_start t30, TargetConstant:i16<0>, TargetConstant:i16<0>
t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
t19: ch,glue = CopyToReg t17, Register:i8 $r22, t32, t17:1
t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t31: glue = CMP t2, Constant:i8<0>
t32: i8,glue = SELECT_CC Constant:i8<1>, Constant:i8<0>, Constant:i8<1>, t31
t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
===== Instruction selection begins: %bb.2 ''
ISEL: Starting selection on root node: t22: ch,glue = callseq_end t21, TargetConstant:i16<0>, TargetConstant:i16<0>, t21:1
ISEL: Starting pattern match
Initial Opcode index to 817
Morphed node: t22: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t21, t21:1
ISEL: Match complete!
ISEL: Starting selection on root node: t21: ch,glue = CALL t19, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19:1
ISEL: Starting pattern match
Initial Opcode index to 1557
OpcodeSwitch from 1561 to 1580
Morphed node: t21: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19, t19:1
ISEL: Match complete!
ISEL: Starting selection on root node: t19: ch,glue = CopyToReg t17, Register:i8 $r22, t32, t17:1
ISEL: Starting selection on root node: t17: ch,glue = CopyToReg t15, Register:i16 $r25r24, Constant:i16<35>
ISEL: Starting selection on root node: t15: ch,glue = callseq_start t30, TargetConstant:i16<0>, TargetConstant:i16<0>
ISEL: Starting pattern match
Initial Opcode index to 792
Morphed node: t15: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t30
ISEL: Match complete!
ISEL: Starting selection on root node: t30: ch = store<(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> t0, t29, t34, undef:i16
ISEL: Starting pattern match
Initial Opcode index to 76
OpcodeSwitch from 81 to 146
Match failed at index 147
Continuing at 205
Match failed at index 224
Continuing at 236
Match failed at index 237
Continuing at 250
Continuing at 251
Morphed node: t30: ch = STSKRr<Mem:(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, t29, t0
ISEL: Match complete!
ISEL: Starting selection on root node: t29: i8 = and t32, Constant:i8<1>
ISEL: Starting pattern match
Initial Opcode index to 1414
TypeSwitch[i8] from 1423 to 1426
Creating constant: t35: i8 = TargetConstant<1>
Morphed node: t29: i8,i8 = ANDIRdK t32, TargetConstant:i8<1>
ISEL: Match complete!
ISEL: Starting selection on root node: t32: i8,glue = SELECT_CC Constant:i8<1>, Constant:i8<0>, Constant:i8<1>, t31
ISEL: Starting pattern match
Initial Opcode index to 1897
TypeSwitch[i8] from 1906 to 1909
Morphed node: t32: i8 = Select8 Constant:i8<1>, Constant:i8<0>, TargetConstant:i8<1>, t31
ISEL: Match complete!
ISEL: Starting selection on root node: t31: glue = CMP t2, Constant:i8<0>
ISEL: Starting pattern match
Initial Opcode index to 1607
Creating constant: t36: i8 = TargetConstant<0>
Morphed node: t31: i8,glue = CPIRdK t2, TargetConstant:i8<0>
ISEL: Match complete!
ISEL: Starting selection on root node: t2: i8,ch = CopyFromReg t0, Register:i8 %1
ISEL: Starting selection on root node: t33: i16 = TargetGlobalAddress<%Sb* @_Tv4main7enabledSb> 0
ISEL: Starting selection on root node: t28: i8 = Constant<1>
ISEL: Starting pattern match
Initial Opcode index to 2276
TypeSwitch[i8] from 2277 to 2280
Morphed node: t28: i8 = LDIRdK TargetConstant:i8<1>
ISEL: Match complete!
ISEL: Starting selection on root node: t20: Untyped = RegisterMask
ISEL: Starting selection on root node: t18: i8 = Register $r22
ISEL: Starting selection on root node: t16: i16 = Register $r25r24
ISEL: Starting selection on root node: t14: i16 = TargetConstant<0>
ISEL: Starting selection on root node: t13: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
ISEL: Starting selection on root node: t12: i16 = Constant<35>
ISEL: Starting pattern match
Initial Opcode index to 2276
TypeSwitch[i16] from 2277 to 2291
Creating constant: t37: i16 = TargetConstant<35>
Morphed node: t12: i16 = LDIWRdK TargetConstant:i16<35>
ISEL: Match complete!
ISEL: Starting selection on root node: t3: i8 = Constant<0>
ISEL: Starting pattern match
Initial Opcode index to 2276
TypeSwitch[i8] from 2277 to 2280
Morphed node: t3: i8 = LDIRdK TargetConstant:i8<0>
ISEL: Match complete!
ISEL: Starting selection on root node: t1: i8 = Register %1
ISEL: Starting selection on root node: t0: ch = EntryToken
===== Instruction selection ends:
Selected selection DAG: %bb.2 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 24 nodes:
t0: ch = EntryToken
t28: i8 = LDIRdK TargetConstant:i8<1>
t3: i8 = LDIRdK TargetConstant:i8<0>
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t31: i8,glue = CPIRdK t2, TargetConstant:i8<0>
t32: i8 = Select8 t28, t3, TargetConstant:i8<1>, t31:1
t29: i8,i8 = ANDIRdK t32, TargetConstant:i8<1>
t30: ch = STSKRr<Mem:(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, t29, t0
t15: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t30
t12: i16 = LDIWRdK TargetConstant:i16<35>
t17: ch,glue = CopyToReg t15:1, Register:i16 $r25r24, t12
t19: ch,glue = CopyToReg t17, Register:i8 $r22, t32, t17:1
t21: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19, t19:1
t22: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t21, t21:1
********** List Scheduling %bb.2 '' **********
SU(0): t22: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t21, t21:1
t17: ch,glue = CopyToReg t15:1, Register:i16 $r25r24, t12
t19: ch,glue = CopyToReg t17, Register:i8 $r22, t32, t17:1
t21: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19, t19:1
# preds left : 3
# succs left : 0
# rdefs left : 0
Latency : 1
Depth : 5
Height : 0
Predecessors:
SU(1): Data Latency=1
SU(6): Ord Latency=1 Barrier
SU(5): Data Latency=1
SU(1): t32: i8 = Select8 t28, t3, TargetConstant:i8<1>, t31:1
t31: i8,glue = CPIRdK t2, TargetConstant:i8<0>
# preds left : 3
# succs left : 2
# rdefs left : 1
Latency : 1
Depth : 1
Height : 4
Predecessors:
SU(4): Data Latency=1
SU(3): Data Latency=1
SU(2): Data Latency=1
Successors:
SU(0): Data Latency=1
SU(8): Data Latency=1
SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %1
# preds left : 0
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 0
Height : 5
Successors:
SU(1): Data Latency=1
SU(3): t3: i8 = LDIRdK TargetConstant:i8<0>
# preds left : 0
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 0
Height : 5
Successors:
SU(1): Data Latency=1
SU(4): t28: i8 = LDIRdK TargetConstant:i8<1>
# preds left : 0
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 0
Height : 5
Successors:
SU(1): Data Latency=1
SU(5): t12: i16 = LDIWRdK TargetConstant:i16<35>
# preds left : 0
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 0
Height : 1
Successors:
SU(0): Data Latency=1
SU(6): t15: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t30
# preds left : 1
# succs left : 1
# rdefs left : 0
Latency : 1
Depth : 4
Height : 1
Predecessors:
SU(7): Ord Latency=1 Barrier
Successors:
SU(0): Ord Latency=1 Barrier
SU(7): t30: ch = STSKRr<Mem:(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, t29, t0
# preds left : 1
# succs left : 1
# rdefs left : 0
Latency : 1
Depth : 3
Height : 2
Predecessors:
SU(8): Data Latency=1
Successors:
SU(6): Ord Latency=1 Barrier
SU(8): t29: i8,i8 = ANDIRdK t32, TargetConstant:i8<1>
# preds left : 1
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 2
Height : 3
Predecessors:
SU(1): Data Latency=1
Successors:
SU(7): Data Latency=1
Examining Available:
Height 0: SU(0): t22: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t21, t21:1
t17: ch,glue = CopyToReg t15:1, Register:i16 $r25r24, t12
t19: ch,glue = CopyToReg t17, Register:i8 $r22, t32, t17:1
t21: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19, t19:1
*** Scheduling [0]: SU(0): t22: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t21, t21:1
t17: ch,glue = CopyToReg t15:1, Register:i16 $r25r24, t12
t19: ch,glue = CopyToReg t17, Register:i8 $r22, t32, t17:1
t21: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19, t19:1
Examining Available:
Height 1: SU(5): t12: i16 = LDIWRdK TargetConstant:i16<35>
Height 1: SU(6): t15: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t30
*** Scheduling [1]: SU(5): t12: i16 = LDIWRdK TargetConstant:i16<35>
Examining Available:
Height 1: SU(6): t15: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t30
*** Scheduling [2]: SU(6): t15: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t30
Examining Available:
Height 3: SU(7): t30: ch = STSKRr<Mem:(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, t29, t0
*** Scheduling [3]: SU(7): t30: ch = STSKRr<Mem:(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, t29, t0
Examining Available:
Height 4: SU(8): t29: i8,i8 = ANDIRdK t32, TargetConstant:i8<1>
*** Scheduling [4]: SU(8): t29: i8,i8 = ANDIRdK t32, TargetConstant:i8<1>
Examining Available:
Height 5: SU(1): t32: i8 = Select8 t28, t3, TargetConstant:i8<1>, t31:1
t31: i8,glue = CPIRdK t2, TargetConstant:i8<0>
*** Scheduling [5]: SU(1): t32: i8 = Select8 t28, t3, TargetConstant:i8<1>, t31:1
t31: i8,glue = CPIRdK t2, TargetConstant:i8<0>
Examining Available:
Height 6: SU(4): t28: i8 = LDIRdK TargetConstant:i8<1>
Height 6: SU(3): t3: i8 = LDIRdK TargetConstant:i8<0>
Height 6: SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %1
*** Scheduling [6]: SU(4): t28: i8 = LDIRdK TargetConstant:i8<1>
Examining Available:
Height 6: SU(3): t3: i8 = LDIRdK TargetConstant:i8<0>
Height 6: SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %1
*** Scheduling [7]: SU(3): t3: i8 = LDIRdK TargetConstant:i8<0>
Examining Available:
Height 6: SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %1
*** Scheduling [8]: SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %1
*** Final schedule ***
SU(2): t2: i8,ch = CopyFromReg t0, Register:i8 %1
SU(3): t3: i8 = LDIRdK TargetConstant:i8<0>
SU(4): t28: i8 = LDIRdK TargetConstant:i8<1>
SU(1): t32: i8 = Select8 t28, t3, TargetConstant:i8<1>, t31:1
t31: i8,glue = CPIRdK t2, TargetConstant:i8<0>
SU(8): t29: i8,i8 = ANDIRdK t32, TargetConstant:i8<1>
SU(7): t30: ch = STSKRr<Mem:(store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Sb* @_Tv4main7enabledSb> 0, t29, t0
SU(6): t15: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t30
SU(5): t12: i16 = LDIWRdK TargetConstant:i16<35>
SU(0): t22: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t21, t21:1
t17: ch,glue = CopyToReg t15:1, Register:i16 $r25r24, t12
t19: ch,glue = CopyToReg t17, Register:i8 $r22, t32, t17:1
t21: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t19, t19:1
Total amount of phi nodes to update: 0
Creating new node: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Creating constant: t3: i8 = Constant<90>
Creating new node: t5: i1 = setcc t2, Constant:i8<90>, setugt:ch
Creating constant: t6: i8 = Constant<5>
Creating new node: t8: i1 = setcc t2, Constant:i8<5>, setult:ch
Creating new node: t9: i8 = select t8, Constant:i8<5>, t2
Creating new node: t10: i8 = select t5, Constant:i8<90>, t9
Creating constant: t12: i16 = Constant<0>
Creating new node: t13: i16 = undef
Creating new node: t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t10, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
Creating new node: t15: i32 = zero_extend t10
Creating constant: t16: i32 = Constant<100>
Creating new node: t17: i32 = mul nuw nsw t15, Constant:i32<100>
Creating new node: t19: ch = store<(store 4 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`)> t14, t17, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Creating constant: t21: i16 = Constant<34>
Creating constant: t23: i16 = TargetConstant<0>
Creating new node: t24: ch,glue = callseq_start t19, TargetConstant:i16<0>, TargetConstant:i16<0>
Creating new node: t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
Creating new node: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t10, t26:1
Creating new node: t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
Creating new node: t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
Creating new node: t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Initial selection DAG: %bb.1 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 34 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t5: i1 = setcc t2, Constant:i8<90>, setugt:ch
t8: i1 = setcc t2, Constant:i8<5>, setult:ch
t9: i8 = select t8, Constant:i8<5>, t2
t10: i8 = select t5, Constant:i8<90>, t9
t12: i16 = Constant<0>
t20: i16 = GlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t10, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
t15: i32 = zero_extend t10
t17: i32 = mul nuw nsw t15, Constant:i32<100>
t19: ch = store<(store 4 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`)> t14, t17, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
t24: ch,glue = callseq_start t19, TargetConstant:i16<0>, TargetConstant:i16<0>
t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
t28: ch,glue = CopyToReg t26, Register:i8 $r22, t10, t26:1
t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Combining: t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Combining: t32: ch = BasicBlock< 0x7f81030026d0>
Combining: t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
Combining: t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
Combining: t29: Untyped = RegisterMask
Combining: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t10, t26:1
Combining: t27: i8 = Register $r22
Combining: t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
Combining: t25: i16 = Register $r25r24
Combining: t24: ch,glue = callseq_start t19, TargetConstant:i16<0>, TargetConstant:i16<0>
Combining: t23: i16 = TargetConstant<0>
Combining: t22: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Combining: t21: i16 = Constant<34>
Combining: t19: ch = store<(store 4 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`)> t14, t17, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Creating new node: t34: ch = store<(store 4 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`)> t0, t17, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Creating new node: t35: ch = TokenFactor t14, t34
Replacing.1 t19: ch = store<(store 4 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`)> t14, t17, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
With: t35: ch = TokenFactor t14, t34
and 0 other values
Combining: t35: ch = TokenFactor t14, t34
Combining: t34: ch = store<(store 4 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`)> t0, t17, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Combining: t18: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Combining: t17: i32 = mul nuw nsw t15, Constant:i32<100>
Combining: t16: i32 = Constant<100>
Combining: t15: i32 = zero_extend t10
Combining: t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t10, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
Combining: t13: i16 = undef
Combining: t11: i16 = GlobalAddress<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Combining: t10: i8 = select t5, Constant:i8<90>, t9
Creating new node: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t9, setugt:ch
... into: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t9, setugt:ch
Combining: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t36, t26:1
Combining: t15: i32 = zero_extend t36
Combining: t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t36, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
Combining: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t9, setugt:ch
Combining: t9: i8 = select t8, Constant:i8<5>, t2
Creating new node: t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
... into: t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
Combining: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
Combining: t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
Combining: t7: ch = setult
Combining: t6: i8 = Constant<5>
Combining: t4: ch = setugt
Combining: t3: i8 = Constant<90>
Combining: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Combining: t1: i8 = Register %1
Combining: t0: ch = EntryToken
Optimized lowered selection DAG: %bb.1 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 31 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t36, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
t15: i32 = zero_extend t36
t17: i32 = mul nuw nsw t15, Constant:i32<100>
t34: ch = store<(store 4 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`)> t0, t17, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
t35: ch = TokenFactor t14, t34
t24: ch,glue = callseq_start t35, TargetConstant:i16<0>, TargetConstant:i16<0>
t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
t28: ch,glue = CopyToReg t26, Register:i8 $r22, t36, t26:1
t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Legalizing node: t32: ch = BasicBlock< 0x7f81030026d0>
Analyzing result type: ch
Legal result type
Legally typed node: t32: ch = BasicBlock< 0x7f81030026d0>
Legalizing node: t29: Untyped = RegisterMask
Analyzing result type: Untyped
Legal result type
Legally typed node: t29: Untyped = RegisterMask
Legalizing node: t27: i8 = Register $r22
Ignoring node results
Legally typed node: t27: i8 = Register $r22
Legalizing node: t25: i16 = Register $r25r24
Ignoring node results
Legally typed node: t25: i16 = Register $r25r24
Legalizing node: t23: i16 = TargetConstant<0>
Ignoring node results
Legally typed node: t23: i16 = TargetConstant<0>
Legalizing node: t22: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Analyzing result type: i16
Legal result type
Legally typed node: t22: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Legalizing node: t21: i16 = Constant<34>
Analyzing result type: i16
Legal result type
Legally typed node: t21: i16 = Constant<34>
Legalizing node: t18: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Analyzing result type: i16
Legal result type
Legally typed node: t18: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Legalizing node: t16: i32 = Constant<100>
Analyzing result type: i32
Expand integer result: t16: i32 = Constant<100>
Creating constant: t38: i16 = Constant<100>
Creating constant: t39: i16 = Constant<0>
Legalizing node: t39: i16 = Constant<0>
Analyzing result type: i16
Legal result type
Legally typed node: t39: i16 = Constant<0>
Legalizing node: t38: i16 = Constant<100>
Analyzing result type: i16
Legal result type
Legally typed node: t38: i16 = Constant<100>
Legalizing node: t13: i16 = undef
Analyzing result type: i16
Legal result type
Legally typed node: t13: i16 = undef
Legalizing node: t11: i16 = GlobalAddress<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Analyzing result type: i16
Legal result type
Legally typed node: t11: i16 = GlobalAddress<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Legalizing node: t7: ch = setult
Analyzing result type: ch
Legal result type
Legally typed node: t7: ch = setult
Legalizing node: t6: i8 = Constant<5>
Analyzing result type: i8
Legal result type
Legally typed node: t6: i8 = Constant<5>
Legalizing node: t4: ch = setugt
Analyzing result type: ch
Legal result type
Legally typed node: t4: ch = setugt
Legalizing node: t3: i8 = Constant<90>
Analyzing result type: i8
Legal result type
Legally typed node: t3: i8 = Constant<90>
Legalizing node: t1: i8 = Register %1
Ignoring node results
Legally typed node: t1: i8 = Register %1
Legalizing node: t0: ch = EntryToken
Analyzing result type: ch
Legal result type
Legally typed node: t0: ch = EntryToken
Legalizing node: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Analyzing result type: i8
Legal result type
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Legally typed node: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legalizing node: t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
Analyzing result type: i8
Legal result type
Analyzing operand: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legal operand
Analyzing operand: t6: i8 = Constant<5>
Legal operand
Analyzing operand: t6: i8 = Constant<5>
Legal operand
Analyzing operand: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legal operand
Analyzing operand: t7: ch = setult
Legal operand
Legally typed node: t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
Legalizing node: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
Analyzing result type: i8
Legal result type
Analyzing operand: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legal operand
Analyzing operand: t3: i8 = Constant<90>
Legal operand
Analyzing operand: t3: i8 = Constant<90>
Legal operand
Analyzing operand: t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
Legal operand
Analyzing operand: t4: ch = setugt
Legal operand
Legally typed node: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
Legalizing node: t15: i32 = zero_extend t36
Analyzing result type: i32
Expand integer result: t15: i32 = zero_extend t36
Creating new node: t40: i16 = zero_extend t36
Legalizing node: t17: i32 = mul nuw nsw t15, Constant:i32<100>
Analyzing result type: i32
Expand integer result: t17: i32 = mul nuw nsw t15, Constant:i32<100>
Creating constant: t42: i16 = Constant<1>
Creating new node: t43: i16 = extract_element t15, Constant:i16<1>
Creating new node: t44: i16 = extract_element t15, Constant:i16<0>
Creating new node: t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
Creating new node: t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t44
Creating new node: t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, t43, t48:1
Creating new node: t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
Creating new node: t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
Creating new node: t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
Creating new node: t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
Creating new node: t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
Creating new node: t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
Creating new node: t58: i32 = build_pair t56, t57
Creating new node: t59: i16 = truncate t58
Creating constant: t60: i8 = Constant<16>
Creating new node: t61: i32 = srl t58, Constant:i8<16>
Creating new node: t62: i16 = truncate t61
Legalizing node: t34: ch = store<(store 4 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`)> t0, t17, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Analyzing operand: t17: i32 = mul nuw nsw t15, Constant:i32<100>
Expand integer operand: t34: ch = store<(store 4 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`)> t0, t17, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Creating new node: t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t59, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Creating constant: t64: i16 = Constant<2>
Creating new node: t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t62, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, undef:i16
Creating new node: t67: ch = TokenFactor t63, t66
Legalizing node: t65: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Analyzing result type: i16
Legal result type
Legally typed node: t65: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Legalizing node: t60: i8 = Constant<16>
Analyzing result type: i8
Legal result type
Legally typed node: t60: i8 = Constant<16>
Legalizing node: t45: i16 = TargetExternalSymbol'__mulsi3'
Analyzing result type: i16
Legal result type
Legally typed node: t45: i16 = TargetExternalSymbol'__mulsi3'
Legalizing node: t52: i16 = Register $r21r20
Ignoring node results
Legally typed node: t52: i16 = Register $r21r20
Legalizing node: t50: i16 = Register $r19r18
Ignoring node results
Legally typed node: t50: i16 = Register $r19r18
Legalizing node: t42: i16 = Constant<1>
Analyzing result type: i16
Legal result type
Legally typed node: t42: i16 = Constant<1>
Legalizing node: t43: i16 = extract_element t15, Constant:i16<1>
Analyzing result type: i16
Legal result type
Analyzing operand: t15: i32 = zero_extend t36
Expand integer operand: t43: i16 = extract_element t15, Constant:i16<1>
Legalizing node: t44: i16 = extract_element t15, Constant:i16<0>
Analyzing result type: i16
Legal result type
Analyzing operand: t15: i32 = zero_extend t36
Expand integer operand: t44: i16 = extract_element t15, Constant:i16<0>
Legalizing node: t47: i16 = Register $r23r22
Ignoring node results
Legally typed node: t47: i16 = Register $r23r22
Legalizing node: t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Legally typed node: t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
Legalizing node: t40: i16 = zero_extend t36
Analyzing result type: i16
Legal result type
Analyzing operand: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
Legal operand
Legally typed node: t40: i16 = zero_extend t36
Legalizing node: t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
Legal operand
Analyzing operand: t40: i16 = zero_extend t36
Legal operand
Legally typed node: t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
Legalizing node: t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
Legal operand
Analyzing operand: t39: i16 = Constant<0>
Legal operand
Analyzing operand: t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
Legal operand
Legally typed node: t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
Legalizing node: t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
Legal operand
Analyzing operand: t38: i16 = Constant<100>
Legal operand
Analyzing operand: t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
Legal operand
Legally typed node: t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
Legalizing node: t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
Legal operand
Analyzing operand: t39: i16 = Constant<0>
Legal operand
Analyzing operand: t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
Legal operand
Legally typed node: t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
Legalizing node: t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
Legal operand
Analyzing operand: t45: i16 = TargetExternalSymbol'__mulsi3'
Legal operand
Analyzing operand: t29: Untyped = RegisterMask
Legal operand
Analyzing operand: t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
Legal operand
Legally typed node: t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
Legalizing node: t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
Legal operand
Analyzing operand: t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
Legal operand
Legally typed node: t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
Legalizing node: t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
Analyzing result type: i16
Legal result type
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
Legal operand
Analyzing operand: t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
Legal operand
Legally typed node: t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
Legalizing node: t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
Analyzing result type: i16
Legal result type
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
Legal operand
Analyzing operand: t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
Legal operand
Legally typed node: t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
Legalizing node: t58: i32 = build_pair t56, t57
Analyzing result type: i32
Expand integer result: t58: i32 = build_pair t56, t57
Legalizing node: t59: i16 = truncate t58
Analyzing result type: i16
Legal result type
Analyzing operand: t58: i32 = build_pair t56, t57
Expand integer operand: t59: i16 = truncate t58
Legalizing node: t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Analyzing operand: t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
Legal operand
Analyzing operand: t18: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Legal operand
Analyzing operand: t13: i16 = undef
Legal operand
Legally typed node: t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Legalizing node: t61: i32 = srl t58, Constant:i8<16>
Analyzing result type: i32
Expand integer result: t61: i32 = srl t58, Constant:i8<16>
Legalizing node: t62: i16 = truncate t61
Analyzing result type: i16
Legal result type
Analyzing operand: t61: i32 = srl t58, Constant:i8<16>
Expand integer operand: t62: i16 = truncate t61
Legalizing node: t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, undef:i16
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Analyzing operand: t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
Legal operand
Analyzing operand: t65: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Legal operand
Analyzing operand: t13: i16 = undef
Legal operand
Legally typed node: t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, undef:i16
Legalizing node: t67: ch = TokenFactor t63, t66
Analyzing result type: ch
Legal result type
Analyzing operand: t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Legal operand
Analyzing operand: t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, undef:i16
Legal operand
Legally typed node: t67: ch = TokenFactor t63, t66
Legalizing node: t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t36, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Analyzing operand: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
Legal operand
Analyzing operand: t11: i16 = GlobalAddress<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Legal operand
Analyzing operand: t13: i16 = undef
Legal operand
Legally typed node: t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t36, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
Legalizing node: t35: ch = TokenFactor t14, t67
Analyzing result type: ch
Legal result type
Analyzing operand: t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t36, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
Legal operand
Analyzing operand: t67: ch = TokenFactor t63, t66
Legal operand
Legally typed node: t35: ch = TokenFactor t14, t67
Legalizing node: t24: ch,glue = callseq_start t35, TargetConstant:i16<0>, TargetConstant:i16<0>
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t35: ch = TokenFactor t14, t67
Legal operand
Legally typed node: t24: ch,glue = callseq_start t35, TargetConstant:i16<0>, TargetConstant:i16<0>
Legalizing node: t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t24: ch,glue = callseq_start t35, TargetConstant:i16<0>, TargetConstant:i16<0>
Legal operand
Analyzing operand: t21: i16 = Constant<34>
Legal operand
Legally typed node: t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
Legalizing node: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t36, t26:1
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
Legal operand
Analyzing operand: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
Legal operand
Analyzing operand: t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
Legal operand
Legally typed node: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t36, t26:1
Legalizing node: t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t36, t26:1
Legal operand
Analyzing operand: t22: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Legal operand
Analyzing operand: t29: Untyped = RegisterMask
Legal operand
Analyzing operand: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t36, t26:1
Legal operand
Legally typed node: t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
Legalizing node: t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
Analyzing result type: ch
Legal result type
Analyzing result type: glue
Legal result type
Analyzing operand: t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
Legal operand
Analyzing operand: t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
Legal operand
Legally typed node: t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
Legalizing node: t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Analyzing result type: ch
Legal result type
Analyzing operand: t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
Legal operand
Analyzing operand: t32: ch = BasicBlock< 0x7f81030026d0>
Legal operand
Legally typed node: t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Legalizing node: t65535: ch = handlenode t33
Analyzing result type: ch
Legal result type
Analyzing operand: t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Legal operand
Legally typed node: t65535: ch = handlenode t33
Type-legalized selection DAG: %bb.1 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 47 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t36, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, undef:i16
t67: ch = TokenFactor t63, t66
t35: ch = TokenFactor t14, t67
t24: ch,glue = callseq_start t35, TargetConstant:i16<0>, TargetConstant:i16<0>
t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
t28: ch,glue = CopyToReg t26, Register:i8 $r22, t36, t26:1
t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
t40: i16 = zero_extend t36
t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Combining: t67: ch = TokenFactor t63, t66
Combining: t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, undef:i16
Combining: t65: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Combining: t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Combining: t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
Combining: t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
Combining: t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
Combining: t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
Combining: t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
Combining: t52: i16 = Register $r21r20
Combining: t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
Combining: t50: i16 = Register $r19r18
Combining: t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
Combining: t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
Combining: t47: i16 = Register $r23r22
Combining: t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
Combining: t45: i16 = TargetExternalSymbol'__mulsi3'
Combining: t40: i16 = zero_extend t36
Combining: t39: i16 = Constant<0>
Combining: t38: i16 = Constant<100>
Combining: t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
Combining: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
Combining: t35: ch = TokenFactor t14, t67
Creating new node: t68: ch = TokenFactor t14, t63, t66
... into: t68: ch = TokenFactor t14, t63, t66
Combining: t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Combining: t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, undef:i16
Combining: t68: ch = TokenFactor t14, t63, t66
Combining: t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Combining: t32: ch = BasicBlock< 0x7f81030026d0>
Combining: t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
Combining: t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
Combining: t29: Untyped = RegisterMask
Combining: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t36, t26:1
Combining: t27: i8 = Register $r22
Combining: t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
Combining: t25: i16 = Register $r25r24
Combining: t24: ch,glue = callseq_start t68, TargetConstant:i16<0>, TargetConstant:i16<0>
Combining: t23: i16 = TargetConstant<0>
Combining: t22: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Combining: t21: i16 = Constant<34>
Combining: t18: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Combining: t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t36, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
Combining: t13: i16 = undef
Combining: t11: i16 = GlobalAddress<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Combining: t7: ch = setult
Combining: t6: i8 = Constant<5>
Combining: t4: ch = setugt
Combining: t3: i8 = Constant<90>
Combining: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Combining: t1: i8 = Register %1
Combining: t0: ch = EntryToken
Optimized type-legalized selection DAG: %bb.1 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 46 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t36, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, undef:i16
t68: ch = TokenFactor t14, t63, t66
t24: ch,glue = callseq_start t68, TargetConstant:i16<0>, TargetConstant:i16<0>
t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
t28: ch,glue = CopyToReg t26, Register:i8 $r22, t36, t26:1
t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
t40: i16 = zero_extend t36
t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Legalizing: t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Legal node: nothing to do
Legalizing: t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
Legalizing: t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
Legal node: nothing to do
Legalizing: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t36, t26:1
Legal node: nothing to do
Legalizing: t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
Legal node: nothing to do
Legalizing: t24: ch,glue = callseq_start t68, TargetConstant:i16<0>, TargetConstant:i16<0>
Legalizing: t68: ch = TokenFactor t14, t63, t66
Legal node: nothing to do
Legalizing: t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, undef:i16
Legalizing store operation
Optimizing float store operations
Legal store
Legalizing: t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
Legal node: nothing to do
Legalizing: t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, GlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, undef:i16
Legalizing store operation
Optimizing float store operations
Legal store
Legalizing: t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
Legal node: nothing to do
Legalizing: t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
Legalizing: t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
Legal node: nothing to do
Legalizing: t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
Legal node: nothing to do
Legalizing: t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
Legal node: nothing to do
Legalizing: t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
Legal node: nothing to do
Legalizing: t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
Legal node: nothing to do
Legalizing: t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t36, GlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, undef:i16
Legalizing store operation
Optimizing float store operations
Legal store
Legalizing: t40: i16 = zero_extend t36
Legal node: nothing to do
Legalizing: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
Trying custom legalization
Creating constant: t69: i8 = Constant<91>
Creating new node: t70: glue = CMP t2, Constant:i8<91>
Creating constant: t71: i8 = Constant<4>
Creating new node: t72: i8,glue = SELECT_CC Constant:i8<90>, t37, Constant:i8<4>, t70
Successfully custom legalized node
... replacing: t36: i8 = select_cc t2, Constant:i8<90>, Constant:i8<90>, t37, setugt:ch
with: t72: i8,glue = SELECT_CC Constant:i8<90>, t37, Constant:i8<4>, t70
Legalizing: t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
Trying custom legalization
Creating new node: t73: glue = CMP t2, Constant:i8<5>
Creating new node: t74: i8,glue = SELECT_CC Constant:i8<5>, t2, Constant:i8<5>, t73
Successfully custom legalized node
... replacing: t37: i8 = select_cc t2, Constant:i8<5>, Constant:i8<5>, t2, setult:ch
with: t74: i8,glue = SELECT_CC Constant:i8<5>, t2, Constant:i8<5>, t73
Legalizing: t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
Legalizing: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legal node: nothing to do
Legalizing: t65: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Trying custom legalization
Creating new node: t76: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Successfully custom legalized node
... replacing: t65: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
with: t76: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Legalizing: t52: i16 = Register $r21r20
Legalizing: t50: i16 = Register $r19r18
Legalizing: t47: i16 = Register $r23r22
Legalizing: t45: i16 = TargetExternalSymbol'__mulsi3'
Legal node: nothing to do
Legalizing: t39: i16 = Constant<0>
Legal node: nothing to do
Legalizing: t38: i16 = Constant<100>
Legal node: nothing to do
Legalizing: t32: ch = BasicBlock< 0x7f81030026d0>
Legal node: nothing to do
Legalizing: t29: Untyped = RegisterMask
Legal node: nothing to do
Legalizing: t27: i8 = Register $r22
Legalizing: t25: i16 = Register $r25r24
Legalizing: t23: i16 = TargetConstant<0>
Legalizing: t22: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Legal node: nothing to do
Legalizing: t21: i16 = Constant<34>
Legal node: nothing to do
Legalizing: t18: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Trying custom legalization
Creating new node: t78: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Successfully custom legalized node
... replacing: t18: i16 = GlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
with: t78: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Legalizing: t13: i16 = undef
Legal node: nothing to do
Legalizing: t11: i16 = GlobalAddress<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Trying custom legalization
Creating new node: t80: i16 = WRAPPER TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Successfully custom legalized node
... replacing: t11: i16 = GlobalAddress<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
with: t80: i16 = WRAPPER TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Legalizing: t6: i8 = Constant<5>
Legal node: nothing to do
Legalizing: t3: i8 = Constant<90>
Legal node: nothing to do
Legalizing: t1: i8 = Register %1
Legalizing: t0: ch = EntryToken
Legal node: nothing to do
Legalizing: t80: i16 = WRAPPER TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Legal node: nothing to do
Legalizing: t79: i16 = TargetGlobalAddress<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Legal node: nothing to do
Legalizing: t78: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Legal node: nothing to do
Legalizing: t77: i16 = TargetGlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Legal node: nothing to do
Legalizing: t76: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Legal node: nothing to do
Legalizing: t75: i16 = TargetGlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Legal node: nothing to do
Legalizing: t74: i8,glue = SELECT_CC Constant:i8<5>, t2, Constant:i8<5>, t73
Legal node: nothing to do
Legalizing: t73: glue = CMP t2, Constant:i8<5>
Legal node: nothing to do
Legalizing: t72: i8,glue = SELECT_CC Constant:i8<90>, t74, Constant:i8<4>, t70
Legal node: nothing to do
Legalizing: t71: i8 = Constant<4>
Legal node: nothing to do
Legalizing: t70: glue = CMP t2, Constant:i8<91>
Legal node: nothing to do
Legalizing: t69: i8 = Constant<91>
Legal node: nothing to do
Legalized selection DAG: %bb.1 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 51 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
t40: i16 = zero_extend t72
t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
t80: i16 = WRAPPER TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t72, t80, undef:i16
t78: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, t78, undef:i16
t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
t76: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, t76, undef:i16
t68: ch = TokenFactor t14, t63, t66
t24: ch,glue = callseq_start t68, TargetConstant:i16<0>, TargetConstant:i16<0>
t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
t28: ch,glue = CopyToReg t26, Register:i8 $r22, t72, t26:1
t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
t73: glue = CMP t2, Constant:i8<5>
t74: i8,glue = SELECT_CC Constant:i8<5>, t2, Constant:i8<5>, t73
t70: glue = CMP t2, Constant:i8<91>
t72: i8,glue = SELECT_CC Constant:i8<90>, t74, Constant:i8<4>, t70
t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Legalizing: t80: i16 = WRAPPER TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Legal node: nothing to do
Combining: t80: i16 = WRAPPER TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Legalizing: t79: i16 = TargetGlobalAddress<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Legal node: nothing to do
Combining: t79: i16 = TargetGlobalAddress<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
Legalizing: t78: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Legal node: nothing to do
Combining: t78: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Legalizing: t77: i16 = TargetGlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Legal node: nothing to do
Combining: t77: i16 = TargetGlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
Legalizing: t76: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Legal node: nothing to do
Combining: t76: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Legalizing: t75: i16 = TargetGlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Legal node: nothing to do
Combining: t75: i16 = TargetGlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
Legalizing: t74: i8,glue = SELECT_CC Constant:i8<5>, t2, Constant:i8<5>, t73
Legal node: nothing to do
Combining: t74: i8,glue = SELECT_CC Constant:i8<5>, t2, Constant:i8<5>, t73
Legalizing: t73: glue = CMP t2, Constant:i8<5>
Legal node: nothing to do
Combining: t73: glue = CMP t2, Constant:i8<5>
Legalizing: t72: i8,glue = SELECT_CC Constant:i8<90>, t74, Constant:i8<4>, t70
Legal node: nothing to do
Combining: t72: i8,glue = SELECT_CC Constant:i8<90>, t74, Constant:i8<4>, t70
Legalizing: t71: i8 = Constant<4>
Legal node: nothing to do
Combining: t71: i8 = Constant<4>
Legalizing: t70: glue = CMP t2, Constant:i8<91>
Legal node: nothing to do
Combining: t70: glue = CMP t2, Constant:i8<91>
Legalizing: t69: i8 = Constant<91>
Legal node: nothing to do
Combining: t69: i8 = Constant<91>
Legalizing: t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Legal node: nothing to do
Combining: t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
Legalizing: t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
Combining: t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
Legalizing: t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
Legal node: nothing to do
Combining: t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
Legalizing: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t72, t26:1
Legal node: nothing to do
Combining: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t72, t26:1
Legalizing: t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
Legal node: nothing to do
Combining: t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
Legalizing: t24: ch,glue = callseq_start t68, TargetConstant:i16<0>, TargetConstant:i16<0>
Combining: t24: ch,glue = callseq_start t68, TargetConstant:i16<0>, TargetConstant:i16<0>
Legalizing: t68: ch = TokenFactor t14, t63, t66
Legal node: nothing to do
Combining: t68: ch = TokenFactor t14, t63, t66
Legalizing: t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, t76, undef:i16
Legalizing store operation
Optimizing float store operations
Legal store
Combining: t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, t76, undef:i16
Legalizing: t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
Legal node: nothing to do
Combining: t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
Legalizing: t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, t78, undef:i16
Legalizing store operation
Optimizing float store operations
Legal store
Combining: t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, t78, undef:i16
Legalizing: t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
Legal node: nothing to do
Combining: t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
Legalizing: t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
Combining: t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
Legalizing: t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
Legal node: nothing to do
Combining: t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
Legalizing: t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
Legal node: nothing to do
Combining: t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
Legalizing: t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
Legal node: nothing to do
Combining: t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
Legalizing: t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
Legal node: nothing to do
Combining: t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
Legalizing: t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
Legal node: nothing to do
Combining: t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
Legalizing: t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t72, t80, undef:i16
Legalizing store operation
Optimizing float store operations
Legal store
Combining: t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t72, t80, undef:i16
Legalizing: t40: i16 = zero_extend t72
Legal node: nothing to do
Combining: t40: i16 = zero_extend t72
Legalizing: t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
Combining: t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
Legalizing: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legal node: nothing to do
Combining: t2: i8,ch = CopyFromReg t0, Register:i8 %1
Legalizing: t52: i16 = Register $r21r20
Combining: t52: i16 = Register $r21r20
Legalizing: t50: i16 = Register $r19r18
Combining: t50: i16 = Register $r19r18
Legalizing: t47: i16 = Register $r23r22
Combining: t47: i16 = Register $r23r22
Legalizing: t45: i16 = TargetExternalSymbol'__mulsi3'
Legal node: nothing to do
Combining: t45: i16 = TargetExternalSymbol'__mulsi3'
Legalizing: t39: i16 = Constant<0>
Legal node: nothing to do
Combining: t39: i16 = Constant<0>
Legalizing: t38: i16 = Constant<100>
Legal node: nothing to do
Combining: t38: i16 = Constant<100>
Legalizing: t32: ch = BasicBlock< 0x7f81030026d0>
Legal node: nothing to do
Combining: t32: ch = BasicBlock< 0x7f81030026d0>
Legalizing: t29: Untyped = RegisterMask
Legal node: nothing to do
Combining: t29: Untyped = RegisterMask
Legalizing: t27: i8 = Register $r22
Combining: t27: i8 = Register $r22
Legalizing: t25: i16 = Register $r25r24
Combining: t25: i16 = Register $r25r24
Legalizing: t23: i16 = TargetConstant<0>
Combining: t23: i16 = TargetConstant<0>
Legalizing: t22: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Legal node: nothing to do
Combining: t22: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
Legalizing: t21: i16 = Constant<34>
Legal node: nothing to do
Combining: t21: i16 = Constant<34>
Legalizing: t13: i16 = undef
Legal node: nothing to do
Combining: t13: i16 = undef
Legalizing: t6: i8 = Constant<5>
Legal node: nothing to do
Combining: t6: i8 = Constant<5>
Legalizing: t3: i8 = Constant<90>
Legal node: nothing to do
Combining: t3: i8 = Constant<90>
Legalizing: t1: i8 = Register %1
Combining: t1: i8 = Register %1
Legalizing: t0: ch = EntryToken
Legal node: nothing to do
Combining: t0: ch = EntryToken
Optimized legalized selection DAG: %bb.1 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 51 nodes:
t0: ch = EntryToken
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
t40: i16 = zero_extend t72
t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
t80: i16 = WRAPPER TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t72, t80, undef:i16
t78: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, t78, undef:i16
t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
t76: i16 = WRAPPER TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, t76, undef:i16
t68: ch = TokenFactor t14, t63, t66
t24: ch,glue = callseq_start t68, TargetConstant:i16<0>, TargetConstant:i16<0>
t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
t28: ch,glue = CopyToReg t26, Register:i8 $r22, t72, t26:1
t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
t73: glue = CMP t2, Constant:i8<5>
t74: i8,glue = SELECT_CC Constant:i8<5>, t2, Constant:i8<5>, t73
t70: glue = CMP t2, Constant:i8<91>
t72: i8,glue = SELECT_CC Constant:i8<90>, t74, Constant:i8<4>, t70
t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
===== Instruction selection begins: %bb.1 ''
ISEL: Starting selection on root node: t33: ch = br t31, BasicBlock:ch< 0x7f81030026d0>
ISEL: Starting pattern match
Initial Opcode index to 2206
Morphed node: t33: ch = RJMPk BasicBlock:ch< 0x7f81030026d0>, t31
ISEL: Match complete!
ISEL: Starting selection on root node: t31: ch,glue = callseq_end t30, TargetConstant:i16<0>, TargetConstant:i16<0>, t30:1
ISEL: Starting pattern match
Initial Opcode index to 817
Morphed node: t31: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t30, t30:1
ISEL: Match complete!
ISEL: Starting selection on root node: t30: ch,glue = CALL t28, TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28:1
ISEL: Starting pattern match
Initial Opcode index to 1557
OpcodeSwitch from 1561 to 1580
Morphed node: t30: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28, t28:1
ISEL: Match complete!
ISEL: Starting selection on root node: t28: ch,glue = CopyToReg t26, Register:i8 $r22, t72, t26:1
ISEL: Starting selection on root node: t26: ch,glue = CopyToReg t24, Register:i16 $r25r24, Constant:i16<34>
ISEL: Starting selection on root node: t24: ch,glue = callseq_start t68, TargetConstant:i16<0>, TargetConstant:i16<0>
ISEL: Starting pattern match
Initial Opcode index to 792
Morphed node: t24: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t68
ISEL: Match complete!
ISEL: Starting selection on root node: t68: ch = TokenFactor t14, t63, t66
ISEL: Starting selection on root node: t66: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> t0, t57, t76, undef:i16
ISEL: Starting pattern match
Initial Opcode index to 76
Match failed at index 81
Continuing at 205
Skipped scope entry (due to false predicate) at index 211, continuing at 392
Match failed at index 407
Continuing at 419
Match failed at index 420
Continuing at 433
Continuing at 434
Morphed node: t66: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, t57, t0
ISEL: Match complete!
ISEL: Starting selection on root node: t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
ISEL: Starting selection on root node: t63: ch = store<(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> t0, t56, t78, undef:i16
ISEL: Starting pattern match
Initial Opcode index to 76
Match failed at index 81
Continuing at 205
Skipped scope entry (due to false predicate) at index 211, continuing at 392
Match failed at index 407
Continuing at 419
Match failed at index 420
Continuing at 433
Continuing at 434
Morphed node: t63: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, t56, t0
ISEL: Match complete!
ISEL: Starting selection on root node: t56: i16,ch,glue = CopyFromReg t55, Register:i16 $r23r22, t55:1
ISEL: Starting selection on root node: t55: ch,glue = callseq_end t54, TargetConstant:i16<0>, TargetConstant:i16<0>, t54:1
ISEL: Starting pattern match
Initial Opcode index to 817
Morphed node: t55: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t54, t54:1
ISEL: Match complete!
ISEL: Starting selection on root node: t54: ch,glue = CALL t53, TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53:1
ISEL: Starting pattern match
Initial Opcode index to 1557
OpcodeSwitch from 1561 to 1593
Morphed node: t54: ch,glue = CALLk TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53, t53:1
ISEL: Match complete!
ISEL: Starting selection on root node: t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, Constant:i16<0>, t51:1
ISEL: Starting selection on root node: t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, Constant:i16<100>, t49:1
ISEL: Starting selection on root node: t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, Constant:i16<0>, t48:1
ISEL: Starting selection on root node: t48: ch,glue = CopyToReg t46, Register:i16 $r23r22, t40
ISEL: Starting selection on root node: t40: i16 = zero_extend t72
ISEL: Starting pattern match
Initial Opcode index to 2459
Morphed node: t40: i16,i8 = ZEXT t72
ISEL: Match complete!
ISEL: Starting selection on root node: t14: ch = store<(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> t0, t72, t80, undef:i16
ISEL: Starting pattern match
Initial Opcode index to 76
Match failed at index 81
Continuing at 205
Match failed at index 224
Continuing at 236
Match failed at index 237
Continuing at 250
Continuing at 251
Morphed node: t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
ISEL: Match complete!
ISEL: Starting selection on root node: t72: i8,glue = SELECT_CC Constant:i8<90>, t74, Constant:i8<4>, t70
ISEL: Starting pattern match
Initial Opcode index to 1897
TypeSwitch[i8] from 1906 to 1909
Creating constant: t81: i8 = TargetConstant<4>
Morphed node: t72: i8 = Select8 Constant:i8<90>, t74, TargetConstant:i8<4>, t70
ISEL: Match complete!
ISEL: Starting selection on root node: t74: i8,glue = SELECT_CC Constant:i8<5>, t2, Constant:i8<5>, t73
ISEL: Starting pattern match
Initial Opcode index to 1897
TypeSwitch[i8] from 1906 to 1909
Creating constant: t82: i8 = TargetConstant<5>
Morphed node: t74: i8 = Select8 Constant:i8<5>, t2, TargetConstant:i8<5>, t73
ISEL: Match complete!
ISEL: Starting selection on root node: t70: glue = CMP t2, Constant:i8<91>
ISEL: Starting pattern match
Initial Opcode index to 1607
Creating constant: t83: i8 = TargetConstant<91>
Morphed node: t70: i8,glue = CPIRdK t2, TargetConstant:i8<91>
ISEL: Match complete!
ISEL: Starting selection on root node: t73: glue = CMP t2, Constant:i8<5>
ISEL: Starting pattern match
Initial Opcode index to 1607
Morphed node: t73: i8,glue = CPIRdK t2, TargetConstant:i8<5>
ISEL: Match complete!
ISEL: Starting selection on root node: t46: ch,glue = callseq_start t0, TargetConstant:i16<0>, TargetConstant:i16<0>
ISEL: Starting pattern match
Initial Opcode index to 792
Morphed node: t46: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t0
ISEL: Match complete!
ISEL: Starting selection on root node: t2: i8,ch = CopyFromReg t0, Register:i8 %1
ISEL: Starting selection on root node: t79: i16 = TargetGlobalAddress<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0
ISEL: Starting selection on root node: t77: i16 = TargetGlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0
ISEL: Starting selection on root node: t75: i16 = TargetGlobalAddress<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2
ISEL: Starting selection on root node: t52: i16 = Register $r21r20
ISEL: Starting selection on root node: t50: i16 = Register $r19r18
ISEL: Starting selection on root node: t47: i16 = Register $r23r22
ISEL: Starting selection on root node: t45: i16 = TargetExternalSymbol'__mulsi3'
ISEL: Starting selection on root node: t39: i16 = Constant<0>
ISEL: Starting pattern match
Initial Opcode index to 2276
TypeSwitch[i16] from 2277 to 2291
Morphed node: t39: i16 = LDIWRdK TargetConstant:i16<0>
ISEL: Match complete!
ISEL: Starting selection on root node: t38: i16 = Constant<100>
ISEL: Starting pattern match
Initial Opcode index to 2276
TypeSwitch[i16] from 2277 to 2291
Creating constant: t84: i16 = TargetConstant<100>
Morphed node: t38: i16 = LDIWRdK TargetConstant:i16<100>
ISEL: Match complete!
ISEL: Starting selection on root node: t32: ch = BasicBlock< 0x7f81030026d0>
ISEL: Starting selection on root node: t29: Untyped = RegisterMask
ISEL: Starting selection on root node: t27: i8 = Register $r22
ISEL: Starting selection on root node: t25: i16 = Register $r25r24
ISEL: Starting selection on root node: t23: i16 = TargetConstant<0>
ISEL: Starting selection on root node: t22: i16 = TargetGlobalAddress<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0
ISEL: Starting selection on root node: t21: i16 = Constant<34>
ISEL: Starting pattern match
Initial Opcode index to 2276
TypeSwitch[i16] from 2277 to 2291
Creating constant: t85: i16 = TargetConstant<34>
Morphed node: t21: i16 = LDIWRdK TargetConstant:i16<34>
ISEL: Match complete!
ISEL: Starting selection on root node: t6: i8 = Constant<5>
ISEL: Starting pattern match
Initial Opcode index to 2276
TypeSwitch[i8] from 2277 to 2280
Morphed node: t6: i8 = LDIRdK TargetConstant:i8<5>
ISEL: Match complete!
ISEL: Starting selection on root node: t3: i8 = Constant<90>
ISEL: Starting pattern match
Initial Opcode index to 2276
TypeSwitch[i8] from 2277 to 2280
Creating constant: t86: i8 = TargetConstant<90>
Morphed node: t3: i8 = LDIRdK TargetConstant:i8<90>
ISEL: Match complete!
ISEL: Starting selection on root node: t1: i8 = Register %1
ISEL: Starting selection on root node: t0: ch = EntryToken
===== Instruction selection ends:
Selected selection DAG: %bb.1 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 51 nodes:
t0: ch = EntryToken
t39: i16 = LDIWRdK TargetConstant:i16<0>
t2: i8,ch = CopyFromReg t0, Register:i8 %1
t3: i8 = LDIRdK TargetConstant:i8<90>
t6: i8 = LDIRdK TargetConstant:i8<5>
t73: i8,glue = CPIRdK t2, TargetConstant:i8<5>
t74: i8 = Select8 t6, t2, TargetConstant:i8<5>, t73:1
t70: i8,glue = CPIRdK t2, TargetConstant:i8<91>
t72: i8 = Select8 t3, t74, TargetConstant:i8<4>, t70:1
t46: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t0
t40: i16,i8 = ZEXT t72
t48: ch,glue = CopyToReg t46:1, Register:i16 $r23r22, t40
t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, t39, t48:1
t38: i16 = LDIWRdK TargetConstant:i16<100>
t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, t38, t49:1
t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, t39, t51:1
t54: ch,glue = CALLk TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53, t53:1
t55: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t54, t54:1
t56: i16,ch,glue = CopyFromReg t55:1, Register:i16 $r23r22, t55:2
t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
t63: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, t56, t0
t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
t66: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, t57, t0
t68: ch = TokenFactor t14, t63, t66
t24: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t68
t21: i16 = LDIWRdK TargetConstant:i16<34>
t26: ch,glue = CopyToReg t24:1, Register:i16 $r25r24, t21
t28: ch,glue = CopyToReg t26, Register:i8 $r22, t72, t26:1
t30: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28, t28:1
t31: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t30, t30:1
t33: ch = RJMPk BasicBlock:ch< 0x7f81030026d0>, t31:1
********** List Scheduling %bb.1 '' **********
SU(0): t33: ch = RJMPk BasicBlock:ch< 0x7f81030026d0>, t31:1
# preds left : 1
# succs left : 0
# rdefs left : 0
Latency : 1
Depth : 8
Height : 0
Predecessors:
SU(1): Ord Latency=1 Barrier
SU(1): t31: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t30, t30:1
t26: ch,glue = CopyToReg t24:1, Register:i16 $r25r24, t21
t28: ch,glue = CopyToReg t26, Register:i8 $r22, t72, t26:1
t30: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28, t28:1
# preds left : 3
# succs left : 1
# rdefs left : 0
Latency : 1
Depth : 7
Height : 1
Predecessors:
SU(2): Data Latency=1
SU(8): Ord Latency=1 Barrier
SU(7): Data Latency=1
Successors:
SU(0): Ord Latency=1 Barrier
SU(2): t72: i8 = Select8 t3, t74, TargetConstant:i8<4>, t70:1
t70: i8,glue = CPIRdK t2, TargetConstant:i8<91>
# preds left : 3
# succs left : 3
# rdefs left : 1
Latency : 1
Depth : 2
Height : 6
Predecessors:
SU(6): Data Latency=1
SU(4): Data Latency=1
SU(3): Data Latency=1
Successors:
SU(1): Data Latency=1
SU(14): Data Latency=1
SU(17): Data Latency=1
SU(3): t2: i8,ch = CopyFromReg t0, Register:i8 %1
# preds left : 0
# succs left : 2
# rdefs left : 1
Latency : 1
Depth : 0
Height : 8
Successors:
SU(2): Data Latency=1
SU(4): Data Latency=1
SU(4): t74: i8 = Select8 t6, t2, TargetConstant:i8<5>, t73:1
t73: i8,glue = CPIRdK t2, TargetConstant:i8<5>
# preds left : 2
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 1
Height : 7
Predecessors:
SU(5): Data Latency=1
SU(3): Data Latency=1
Successors:
SU(2): Data Latency=1
SU(5): t6: i8 = LDIRdK TargetConstant:i8<5>
# preds left : 0
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 0
Height : 8
Successors:
SU(4): Data Latency=1
SU(6): t3: i8 = LDIRdK TargetConstant:i8<90>
# preds left : 0
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 0
Height : 7
Successors:
SU(2): Data Latency=1
SU(7): t21: i16 = LDIWRdK TargetConstant:i16<34>
# preds left : 0
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 0
Height : 2
Successors:
SU(1): Data Latency=1
SU(8): t24: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t68
# preds left : 1
# succs left : 1
# rdefs left : 0
Latency : 1
Depth : 6
Height : 2
Predecessors:
SU(9): Ord Latency=0 Barrier
Successors:
SU(1): Ord Latency=1 Barrier
SU(9): t68: ch = TokenFactor t14, t63, t66
# preds left : 3
# succs left : 1
# rdefs left : 0
Latency : 0
Depth : 6
Height : 2
Predecessors:
SU(17): Ord Latency=1 Barrier
SU(16): Ord Latency=1 Barrier
SU(10): Ord Latency=1 Barrier
Successors:
SU(8): Ord Latency=0 Barrier
SU(10): t66: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, t57, t0
# preds left : 1
# succs left : 1
# rdefs left : 0
Latency : 1
Depth : 5
Height : 3
Predecessors:
SU(11): Data Latency=1
Successors:
SU(9): Ord Latency=1 Barrier
SU(11): t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
t48: ch,glue = CopyToReg t46:1, Register:i16 $r23r22, t40
t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, t39, t48:1
t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, t38, t49:1
t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, t39, t51:1
t54: ch,glue = CALLk TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53, t53:1
t55: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t54, t54:1
t56: i16,ch,glue = CopyFromReg t55:1, Register:i16 $r23r22, t55:2
# preds left : 4
# succs left : 2
# rdefs left : 1
Latency : 1
Depth : 4
Height : 4
Predecessors:
SU(12): Data Latency=1
SU(13): Data Latency=1
SU(15): Ord Latency=1 Barrier
SU(14): Data Latency=1
Successors:
SU(10): Data Latency=1
SU(16): Data Latency=1
SU(12): t39: i16 = LDIWRdK TargetConstant:i16<0>
# preds left : 0
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 0
Height : 5
Successors:
SU(11): Data Latency=1
SU(13): t38: i16 = LDIWRdK TargetConstant:i16<100>
# preds left : 0
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 0
Height : 5
Successors:
SU(11): Data Latency=1
SU(14): t40: i16,i8 = ZEXT t72
# preds left : 1
# succs left : 1
# rdefs left : 1
Latency : 1
Depth : 3
Height : 5
Predecessors:
SU(2): Data Latency=1
Successors:
SU(11): Data Latency=1
SU(15): t46: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t0
# preds left : 0
# succs left : 1
# rdefs left : 0
Latency : 1
Depth : 0
Height : 5
Successors:
SU(11): Ord Latency=1 Barrier
SU(16): t63: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, t56, t0
# preds left : 1
# succs left : 1
# rdefs left : 0
Latency : 1
Depth : 5
Height : 3
Predecessors:
SU(11): Data Latency=1
Successors:
SU(9): Ord Latency=1 Barrier
SU(17): t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
# preds left : 1
# succs left : 1
# rdefs left : 0
Latency : 1
Depth : 3
Height : 3
Predecessors:
SU(2): Data Latency=1
Successors:
SU(9): Ord Latency=1 Barrier
Examining Available:
Height 0: SU(0): t33: ch = RJMPk BasicBlock:ch< 0x7f81030026d0>, t31:1
*** Scheduling [0]: SU(0): t33: ch = RJMPk BasicBlock:ch< 0x7f81030026d0>, t31:1
Examining Available:
Height 1: SU(1): t31: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t30, t30:1
t26: ch,glue = CopyToReg t24:1, Register:i16 $r25r24, t21
t28: ch,glue = CopyToReg t26, Register:i8 $r22, t72, t26:1
t30: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28, t28:1
*** Scheduling [1]: SU(1): t31: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t30, t30:1
t26: ch,glue = CopyToReg t24:1, Register:i16 $r25r24, t21
t28: ch,glue = CopyToReg t26, Register:i8 $r22, t72, t26:1
t30: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28, t28:1
Examining Available:
Height 2: SU(7): t21: i16 = LDIWRdK TargetConstant:i16<34>
Height 2: SU(8): t24: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t68
*** Scheduling [2]: SU(7): t21: i16 = LDIWRdK TargetConstant:i16<34>
Examining Available:
Height 2: SU(8): t24: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t68
*** Scheduling [3]: SU(8): t24: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t68
Examining Available:
Height 3: SU(9): t68: ch = TokenFactor t14, t63, t66
*** Scheduling [4]: SU(9): t68: ch = TokenFactor t14, t63, t66
Examining Available:
Comparing latency of SU (17) depth 3 vs SU (16) depth 5
Height 5: SU(16): t63: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, t56, t0
Comparing latency of SU (17) depth 3 vs SU (10) depth 5
Height 5: SU(10): t66: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, t57, t0
Height 5: SU(17): t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
Comparing latency of SU (17) depth 3 vs SU (16) depth 5
*** Scheduling [5]: SU(16): t63: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, t56, t0
Examining Available:
Comparing latency of SU (17) depth 3 vs SU (10) depth 5
Height 5: SU(10): t66: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, t57, t0
Height 5: SU(17): t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
Comparing latency of SU (17) depth 3 vs SU (10) depth 5
*** Scheduling [6]: SU(10): t66: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, t57, t0
Examining Available:
Height 7: SU(11): t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
t48: ch,glue = CopyToReg t46:1, Register:i16 $r23r22, t40
t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, t39, t48:1
t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, t38, t49:1
t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, t39, t51:1
t54: ch,glue = CALLk TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53, t53:1
t55: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t54, t54:1
t56: i16,ch,glue = CopyFromReg t55:1, Register:i16 $r23r22, t55:2
Height 5: SU(17): t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
*** Scheduling [7]: SU(11): t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
t48: ch,glue = CopyToReg t46:1, Register:i16 $r23r22, t40
t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, t39, t48:1
t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, t38, t49:1
t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, t39, t51:1
t54: ch,glue = CALLk TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53, t53:1
t55: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t54, t54:1
t56: i16,ch,glue = CopyFromReg t55:1, Register:i16 $r23r22, t55:2
Examining Available:
Height 8: SU(12): t39: i16 = LDIWRdK TargetConstant:i16<0>
Height 8: SU(13): t38: i16 = LDIWRdK TargetConstant:i16<100>
Height 8: SU(15): t46: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t0
Height 8: SU(14): t40: i16,i8 = ZEXT t72
Height 5: SU(17): t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
*** Scheduling [8]: SU(12): t39: i16 = LDIWRdK TargetConstant:i16<0>
Examining Available:
Height 8: SU(13): t38: i16 = LDIWRdK TargetConstant:i16<100>
Height 8: SU(15): t46: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t0
Height 8: SU(14): t40: i16,i8 = ZEXT t72
Height 5: SU(17): t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
*** Scheduling [9]: SU(13): t38: i16 = LDIWRdK TargetConstant:i16<100>
Examining Available:
Height 8: SU(15): t46: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t0
Height 8: SU(14): t40: i16,i8 = ZEXT t72
Height 5: SU(17): t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
*** Scheduling [10]: SU(15): t46: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t0
Examining Available:
Height 8: SU(14): t40: i16,i8 = ZEXT t72
Height 5: SU(17): t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
*** Scheduling [11]: SU(14): t40: i16,i8 = ZEXT t72
Examining Available:
Height 5: SU(17): t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
*** Scheduling [12]: SU(17): t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
Examining Available:
Height 13: SU(2): t72: i8 = Select8 t3, t74, TargetConstant:i8<4>, t70:1
t70: i8,glue = CPIRdK t2, TargetConstant:i8<91>
*** Scheduling [13]: SU(2): t72: i8 = Select8 t3, t74, TargetConstant:i8<4>, t70:1
t70: i8,glue = CPIRdK t2, TargetConstant:i8<91>
Examining Available:
Height 14: SU(6): t3: i8 = LDIRdK TargetConstant:i8<90>
Height 14: SU(4): t74: i8 = Select8 t6, t2, TargetConstant:i8<5>, t73:1
t73: i8,glue = CPIRdK t2, TargetConstant:i8<5>
*** Scheduling [14]: SU(6): t3: i8 = LDIRdK TargetConstant:i8<90>
Examining Available:
Height 14: SU(4): t74: i8 = Select8 t6, t2, TargetConstant:i8<5>, t73:1
t73: i8,glue = CPIRdK t2, TargetConstant:i8<5>
*** Scheduling [15]: SU(4): t74: i8 = Select8 t6, t2, TargetConstant:i8<5>, t73:1
t73: i8,glue = CPIRdK t2, TargetConstant:i8<5>
Examining Available:
Height 16: SU(5): t6: i8 = LDIRdK TargetConstant:i8<5>
Height 16: SU(3): t2: i8,ch = CopyFromReg t0, Register:i8 %1
*** Scheduling [16]: SU(5): t6: i8 = LDIRdK TargetConstant:i8<5>
Examining Available:
Height 16: SU(3): t2: i8,ch = CopyFromReg t0, Register:i8 %1
*** Scheduling [17]: SU(3): t2: i8,ch = CopyFromReg t0, Register:i8 %1
*** Final schedule ***
SU(3): t2: i8,ch = CopyFromReg t0, Register:i8 %1
SU(5): t6: i8 = LDIRdK TargetConstant:i8<5>
SU(4): t74: i8 = Select8 t6, t2, TargetConstant:i8<5>, t73:1
t73: i8,glue = CPIRdK t2, TargetConstant:i8<5>
SU(6): t3: i8 = LDIRdK TargetConstant:i8<90>
SU(2): t72: i8 = Select8 t3, t74, TargetConstant:i8<4>, t70:1
t70: i8,glue = CPIRdK t2, TargetConstant:i8<91>
SU(17): t14: ch = STSKRr<Mem:(store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)> TargetGlobalAddress:i16<%Vs5UInt8* @_Tv4main11delayFactorVs5UInt8> 0, t72, t0
SU(14): t40: i16,i8 = ZEXT t72
SU(15): t46: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t0
SU(13): t38: i16 = LDIWRdK TargetConstant:i16<100>
SU(12): t39: i16 = LDIWRdK TargetConstant:i16<0>
SU(11): t57: i16,ch,glue = CopyFromReg t56:1, Register:i16 $r25r24, t56:2
t48: ch,glue = CopyToReg t46:1, Register:i16 $r23r22, t40
t49: ch,glue = CopyToReg t48, Register:i16 $r25r24, t39, t48:1
t51: ch,glue = CopyToReg t49, Register:i16 $r19r18, t38, t49:1
t53: ch,glue = CopyToReg t51, Register:i16 $r21r20, t39, t51:1
t54: ch,glue = CALLk TargetExternalSymbol:i16'__mulsi3', Register:i16 $r23r22, Register:i16 $r25r24, Register:i16 $r19r18, Register:i16 $r21r20, RegisterMask:Untyped, t53, t53:1
t55: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t54, t54:1
t56: i16,ch,glue = CopyFromReg t55:1, Register:i16 $r23r22, t55:2
SU(10): t66: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> + 2, t57, t0
SU(16): t63: ch = STSWKRr<Mem:(store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)> TargetGlobalAddress:i16<%Vs6UInt32* @_Tv4main7delayUsVs6UInt32> 0, t56, t0
SU(9): t68: ch = TokenFactor t14, t63, t66
SU(8): t24: i16,ch,glue = ADJCALLSTACKDOWN TargetConstant:i16<0>, TargetConstant:i16<0>, t68
SU(7): t21: i16 = LDIWRdK TargetConstant:i16<34>
SU(1): t31: i16,ch,glue = ADJCALLSTACKUP TargetConstant:i16<0>, TargetConstant:i16<0>, t30, t30:1
t26: ch,glue = CopyToReg t24:1, Register:i16 $r25r24, t21
t28: ch,glue = CopyToReg t26, Register:i8 $r22, t72, t26:1
t30: ch,glue = CALLk TargetGlobalAddress:i16<void (i16, i8)* @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_> 0, Register:i16 $r25r24, Register:i8 $r22, RegisterMask:Untyped, t28, t28:1
SU(0): t33: ch = RJMPk BasicBlock:ch< 0x7f81030026d0>, t31:1
Total amount of phi nodes to update: 0
Creating new node: t1: ch = RET_FLAG t0
Initial selection DAG: %bb.3 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 2 nodes:
t0: ch = EntryToken
t1: ch = RET_FLAG t0
Combining: t1: ch = RET_FLAG t0
Combining: t0: ch = EntryToken
Optimized lowered selection DAG: %bb.3 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 2 nodes:
t0: ch = EntryToken
t1: ch = RET_FLAG t0
Legalizing node: t0: ch = EntryToken
Analyzing result type: ch
Legal result type
Legally typed node: t0: ch = EntryToken
Legalizing node: t1: ch = RET_FLAG t0
Analyzing result type: ch
Legal result type
Analyzing operand: t0: ch = EntryToken
Legal operand
Legally typed node: t1: ch = RET_FLAG t0
Legalizing node: t65535: ch = handlenode t1
Analyzing result type: ch
Legal result type
Analyzing operand: t1: ch = RET_FLAG t0
Legal operand
Legally typed node: t65535: ch = handlenode t1
Type-legalized selection DAG: %bb.3 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 2 nodes:
t0: ch = EntryToken
t1: ch = RET_FLAG t0
Legalizing: t1: ch = RET_FLAG t0
Legal node: nothing to do
Legalizing: t0: ch = EntryToken
Legal node: nothing to do
Legalized selection DAG: %bb.3 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 2 nodes:
t0: ch = EntryToken
t1: ch = RET_FLAG t0
Legalizing: t1: ch = RET_FLAG t0
Legal node: nothing to do
Combining: t1: ch = RET_FLAG t0
Legalizing: t0: ch = EntryToken
Legal node: nothing to do
Combining: t0: ch = EntryToken
Optimized legalized selection DAG: %bb.3 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 2 nodes:
t0: ch = EntryToken
t1: ch = RET_FLAG t0
===== Instruction selection begins: %bb.3 ''
ISEL: Starting selection on root node: t1: ch = RET_FLAG t0
ISEL: Starting pattern match
Initial Opcode index to 2223
Morphed node: t1: ch = RET t0
ISEL: Match complete!
ISEL: Starting selection on root node: t0: ch = EntryToken
===== Instruction selection ends:
Selected selection DAG: %bb.3 '_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_:'
SelectionDAG has 2 nodes:
t0: ch = EntryToken
t1: ch = RET t0
********** List Scheduling %bb.3 '' **********
SU(0): t1: ch = RET t0
# preds left : 0
# succs left : 0
# rdefs left : 0
Latency : 1
Depth : 0
Height : 0
Examining Available:
Height 0: SU(0): t1: ch = RET t0
*** Scheduling [0]: SU(0): t1: ch = RET t0
*** Final schedule ***
SU(0): t1: ch = RET t0
Total amount of phi nodes to update: 0
*** MachineFunction at end of ISel ***
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.3(0x80000000); %bb.3(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
%8:gpr8 = Select8 killed %7:ld8, %1:ld8, 5, implicit $sreg
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
%10:gpr8 = Select8 killed %9:ld8, killed %8:gpr8, 4, implicit $sreg
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.3(0x80000000); %bb.3(200.00%)
%2:ld8 = LDIRdK 0
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
%4:ld8 = Select8 killed %3:ld8, killed %2:ld8, 1, implicit $sreg
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.2, %bb.1
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After AVR DAG->DAG Instruction Selection ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.3(0x80000000); %bb.3(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
%8:gpr8 = Select8 killed %7:ld8, %1:ld8, 5, implicit $sreg
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
%10:gpr8 = Select8 killed %9:ld8, killed %8:gpr8, 4, implicit $sreg
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.3(0x80000000); %bb.3(200.00%)
%2:ld8 = LDIRdK 0
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
%4:ld8 = Select8 killed %3:ld8, killed %2:ld8, 1, implicit $sreg
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.2, %bb.1
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Expand ISel Pseudo-instructions ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%2:ld8 = LDIRdK 0
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
*** Tail-duplicating %bb.8
*** Tail-duplicating %bb.6
*** Tail-duplicating %bb.10
# *** IR Dump After Early Tail Duplication ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%2:ld8 = LDIRdK 0
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Optimize machine instruction PHIs ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%2:ld8 = LDIRdK 0
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.2, implicit $sreg
80B RJMPk %bb.4
96B bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.3, implicit $sreg
144B RJMPk %bb.1
160B bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
176B %7:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
208B BRLOk %bb.5, implicit $sreg
224B RJMPk %bb.6
240B bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
256B %8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
272B %9:ld8 = LDIRdK 90
288B CPIRdK %1:ld8, 91, implicit-def $sreg
304B BRSHk %bb.7, implicit $sreg
320B RJMPk %bb.8
336B bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
352B %10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
368B STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
384B %11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
400B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
416B %12:dldregs = LDIWRdK 100
432B %13:dldregs = LDIWRdK 0
448B $r23r22 = COPY %11:dregs
464B $r25r24 = COPY %13:dldregs
480B $r19r18 = COPY %12:dldregs
496B $r21r20 = COPY %13:dldregs
512B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
528B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
544B %14:dregs = COPY $r23r22
560B %15:dregs = COPY $r25r24
576B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
592B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
608B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
624B %16:dldregs = LDIWRdK 34
640B $r25r24 = COPY %16:dldregs
656B $r22 = COPY %10:gpr8
672B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
688B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
704B RJMPk %bb.3
720B bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
736B RJMPk %bb.7
752B bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
768B RJMPk %bb.5
784B bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
800B %2:ld8 = LDIRdK 0
816B %3:ld8 = LDIRdK 1
832B CPIRdK %1:ld8, 0, implicit-def $sreg
848B BRNEk %bb.9, implicit $sreg
864B RJMPk %bb.10
880B bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
896B %4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
912B %5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
928B STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
944B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
960B %6:dldregs = LDIWRdK 35
976B $r25r24 = COPY %6:dldregs
992B $r22 = COPY %4:ld8
1008B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1024B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
1056B RJMPk %bb.9
1072B bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
1088B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Slot index numbering ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.2, implicit $sreg
80B RJMPk %bb.4
96B bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.3, implicit $sreg
144B RJMPk %bb.1
160B bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
176B %7:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
208B BRLOk %bb.5, implicit $sreg
224B RJMPk %bb.6
240B bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
256B %8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
272B %9:ld8 = LDIRdK 90
288B CPIRdK %1:ld8, 91, implicit-def $sreg
304B BRSHk %bb.7, implicit $sreg
320B RJMPk %bb.8
336B bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
352B %10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
368B STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
384B %11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
400B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
416B %12:dldregs = LDIWRdK 100
432B %13:dldregs = LDIWRdK 0
448B $r23r22 = COPY %11:dregs
464B $r25r24 = COPY %13:dldregs
480B $r19r18 = COPY %12:dldregs
496B $r21r20 = COPY %13:dldregs
512B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
528B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
544B %14:dregs = COPY $r23r22
560B %15:dregs = COPY $r25r24
576B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
592B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
608B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
624B %16:dldregs = LDIWRdK 34
640B $r25r24 = COPY %16:dldregs
656B $r22 = COPY %10:gpr8
672B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
688B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
704B RJMPk %bb.3
720B bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
736B RJMPk %bb.7
752B bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
768B RJMPk %bb.5
784B bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
800B %2:ld8 = LDIRdK 0
816B %3:ld8 = LDIRdK 1
832B CPIRdK %1:ld8, 0, implicit-def $sreg
848B BRNEk %bb.9, implicit $sreg
864B RJMPk %bb.10
880B bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
896B %4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
912B %5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
928B STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
944B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
960B %6:dldregs = LDIWRdK 35
976B $r25r24 = COPY %6:dldregs
992B $r22 = COPY %4:ld8
1008B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1024B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
1056B RJMPk %bb.9
1072B bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
1088B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
********** Stack Coloring **********
********** Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
# *** IR Dump After Merge disjoint stack slots ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%2:ld8 = LDIRdK 0
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Local Stack Slot Allocation ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%2:ld8 = LDIRdK 0
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Remove dead machine instructions ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%2:ld8 = LDIRdK 0
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
discovered a new reachable node %bb.0
discovered a new reachable node %bb.2
discovered a new reachable node %bb.10
discovered a new reachable node %bb.9
discovered a new reachable node %bb.3
discovered a new reachable node %bb.4
discovered a new reachable node %bb.1
discovered a new reachable node %bb.6
discovered a new reachable node %bb.5
discovered a new reachable node %bb.8
discovered a new reachable node %bb.7
******** Pre-regalloc Machine LICM: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_ ********
# *** IR Dump After Early Machine Loop Invariant Code Motion ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%2:ld8 = LDIRdK 0
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
Entering: entry
Entering: entry
Entering:
Entering:
Entering:
Exiting:
Entering:
Exiting:
Exiting:
Entering:
Exiting:
Exiting:
Exiting: entry
Entering:
Exiting:
Entering:
Entering:
Exiting:
Entering:
Exiting:
Exiting:
Exiting: entry
# *** IR Dump After Machine Common Subexpression Elimination ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%2:ld8 = LDIRdK 0
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
Looking for trivial roots
Found a new trivial root: %bb.3
Last visited node: %bb.4
Looking for non-trivial roots
Total: 11, Num: 12
Discovered CFG nodes:
0: nullptr
1: nullptr
2: %bb.3
3: %bb.9
4: %bb.10
5: %bb.2
6: %bb.0
7: %bb.7
8: %bb.8
9: %bb.5
10: %bb.6
11: %bb.1
12: %bb.4
Found roots: %bb.3
discovered a new reachable node nullptr
discovered a new reachable node %bb.3
discovered a new reachable node %bb.9
discovered a new reachable node %bb.10
discovered a new reachable node %bb.2
discovered a new reachable node %bb.0
discovered a new reachable node %bb.7
discovered a new reachable node %bb.8
discovered a new reachable node %bb.5
discovered a new reachable node %bb.6
discovered a new reachable node %bb.1
discovered a new reachable node %bb.4
block-frequency: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
==================================================================
reverse-post-order-traversal
- 0: BB0[entry]
- 1: BB4[entry]
- 2: BB1[]
- 3: BB6[]
- 4: BB5[]
- 5: BB8[]
- 6: BB7[]
- 7: BB2[]
- 8: BB10[]
- 9: BB9[]
- 10: BB3[]
loop-detection
compute-mass-in-function
- node: BB0[entry]
=> [ local ] weight = 715827883, succ = BB2[]
=> [ local ] weight = 1431655765, succ = BB4[entry]
=> mass: ffffffffffffffff
=> assign aaaaaaa9ffffffff (5555555600000000) to BB4[entry]
=> assign 5555555600000000 (0000000000000000) to BB2[]
- node: BB4[entry]
=> [ local ] weight = 1073741825, succ = BB1[]
=> [ local ] weight = 1073741823, succ = BB3[]
=> mass: aaaaaaa9ffffffff
=> assign 5555555655555553 (55555553aaaaaaac) to BB1[]
=> assign 55555553aaaaaaac (0000000000000000) to BB3[]
- node: BB1[]
=> [ local ] weight = 1073741824, succ = BB6[]
=> [ local ] weight = 1073741824, succ = BB5[]
=> mass: 5555555655555553
=> assign 2aaaaaab2aaaaaa9 (2aaaaaab2aaaaaaa) to BB6[]
=> assign 2aaaaaab2aaaaaaa (0000000000000000) to BB5[]
- node: BB6[]
=> [ local ] weight = 2147483648, succ = BB5[]
=> mass: 2aaaaaab2aaaaaa9
=> assign 2aaaaaab2aaaaaa9 (0000000000000000) to BB5[]
- node: BB5[]
=> [ local ] weight = 1073741824, succ = BB8[]
=> [ local ] weight = 1073741824, succ = BB7[]
=> mass: 5555555655555553
=> assign 2aaaaaab2aaaaaa9 (2aaaaaab2aaaaaaa) to BB8[]
=> assign 2aaaaaab2aaaaaaa (0000000000000000) to BB7[]
- node: BB8[]
=> [ local ] weight = 2147483648, succ = BB7[]
=> mass: 2aaaaaab2aaaaaa9
=> assign 2aaaaaab2aaaaaa9 (0000000000000000) to BB7[]
- node: BB7[]
=> [ local ] weight = 2147483648, succ = BB3[]
=> mass: 5555555655555553
=> assign 5555555655555553 (0000000000000000) to BB3[]
- node: BB2[]
=> [ local ] weight = 1073741824, succ = BB10[]
=> [ local ] weight = 1073741824, succ = BB9[]
=> mass: 5555555600000000
=> assign 2aaaaaab00000000 (2aaaaaab00000000) to BB10[]
=> assign 2aaaaaab00000000 (0000000000000000) to BB9[]
- node: BB10[]
=> [ local ] weight = 2147483648, succ = BB9[]
=> mass: 2aaaaaab00000000
=> assign 2aaaaaab00000000 (0000000000000000) to BB9[]
- node: BB9[]
=> [ local ] weight = 2147483648, succ = BB3[]
=> mass: 5555555600000000
=> assign 5555555600000000 (0000000000000000) to BB3[]
- node: BB3[]
=> mass: ffffffffffffffff
float-to-int: min = 0.1666666667, max = 1.0, factor = 47.99999998
- BB0[entry]: float = 1.0, scaled = 47.99999998, int = 47
- BB4[entry]: float = 0.6666666665, scaled = 31.99999998, int = 31
- BB1[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB6[]: float = 0.1666666668, scaled = 8.000000002, int = 8
- BB5[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB8[]: float = 0.1666666668, scaled = 8.000000002, int = 8
- BB7[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB2[]: float = 0.3333333335, scaled = 16.0, int = 15
- BB10[]: float = 0.1666666667, scaled = 8.0, int = 8
- BB9[]: float = 0.3333333335, scaled = 16.0, int = 15
- BB3[]: float = 1.0, scaled = 47.99999998, int = 47
block-frequency-info: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
- BB0[entry]: float = 1.0, int = 47
- BB4[entry]: float = 0.66667, int = 31
- BB1[]: float = 0.33333, int = 16
- BB5[]: float = 0.33333, int = 16
- BB7[]: float = 0.33333, int = 16
- BB8[]: float = 0.16667, int = 8
- BB6[]: float = 0.16667, int = 8
- BB2[]: float = 0.33333, int = 15
- BB9[]: float = 0.33333, int = 15
- BB10[]: float = 0.16667, int = 8
- BB3[]: float = 1.0, int = 47
******** Machine Sinking ********
Sink instr %7:ld8 = LDIRdK 5
into block bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
Sinking along critical edge.
*** PUNTING: Not legal or profitable to break critical edge
Sink instr %9:ld8 = LDIRdK 90
into block bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
Sinking along critical edge.
*** PUNTING: Not legal or profitable to break critical edge
Sink instr %3:ld8 = LDIRdK 1
into block bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
Sinking along critical edge.
*** PUNTING: Not legal or profitable to break critical edge
Sink instr %2:ld8 = LDIRdK 0
into block bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
RJMPk %bb.9
Sink instr %7:ld8 = LDIRdK 5
into block bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
Sinking along critical edge.
*** PUNTING: Not legal or profitable to break critical edge
Sink instr %9:ld8 = LDIRdK 90
into block bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
Sinking along critical edge.
*** PUNTING: Not legal or profitable to break critical edge
Sink instr %3:ld8 = LDIRdK 1
into block bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
Sinking along critical edge.
*** PUNTING: Not legal or profitable to break critical edge
# *** IR Dump After Machine code sinking ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
%2:ld8 = LDIRdK 0
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
********** PEEPHOLE OPTIMIZER **********
********** Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
Encountered load fold barrier on STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
Encountered load fold barrier on CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
Encountered load fold barrier on STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
Encountered load fold barrier on STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
Encountered load fold barrier on CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
Encountered load fold barrier on STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
Encountered load fold barrier on CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# *** IR Dump After Peephole Optimizations ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
%2:ld8 = LDIRdK 0
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Remove dead machine instructions ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
%2:ld8 = LDIRdK 0
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
Skipping Detect dead lanes pass
# *** IR Dump After Detect Dead Lanes ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
%2:ld8 = LDIRdK 0
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
********** PROCESS IMPLICIT DEFS **********
********** Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
# *** IR Dump After Process Implicit Definitions ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.2(0x2aaaaaab), %bb.4(0x55555555); %bb.2(33.33%), %bb.4(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.4
bb.4.entry:
; predecessors: %bb.0
successors: %bb.1(0x40000001), %bb.3(0x3fffffff); %bb.1(50.00%), %bb.3(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.3, implicit $sreg
RJMPk %bb.1
bb.1 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x40000000), %bb.5(0x40000000); %bb.6(200.00%), %bb.5(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.5, implicit $sreg
RJMPk %bb.6
bb.5 (%ir-block.2):
; predecessors: %bb.1, %bb.6
successors: %bb.8(0x40000000), %bb.7(0x40000000); %bb.8(200.00%), %bb.7(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.1, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
RJMPk %bb.8
bb.7 (%ir-block.2):
; predecessors: %bb.5, %bb.8
successors: %bb.3(0x80000000); %bb.3(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.5, %8:gpr8, %bb.8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.3
bb.8 (%ir-block.2):
; predecessors: %bb.5
successors: %bb.7(0x80000000); %bb.7(200.00%)
RJMPk %bb.7
bb.6 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.5(0x80000000); %bb.5(200.00%)
RJMPk %bb.5
bb.2 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.10(0x40000000), %bb.9(0x40000000); %bb.10(200.00%), %bb.9(200.00%)
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.9, implicit $sreg
RJMPk %bb.10
bb.9 (%ir-block.8):
; predecessors: %bb.2, %bb.10
successors: %bb.3(0x80000000); %bb.3(100.00%)
%4:ld8 = PHI %3:ld8, %bb.2, %2:ld8, %bb.10
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.10 (%ir-block.8):
; predecessors: %bb.2
successors: %bb.9(0x80000000); %bb.9(200.00%)
%2:ld8 = LDIRdK 0
RJMPk %bb.9
bb.3 (%ir-block.9):
; predecessors: %bb.4, %bb.7, %bb.9
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Remove unreachable machine basic blocks ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY $r22
%0:ld8 = COPY $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.7, implicit $sreg
RJMPk %bb.1
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
CPIRdK %0:ld8, 6, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
RJMPk %bb.2
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.3, implicit $sreg
RJMPk %bb.6
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.2, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK %1:ld8, 91, implicit-def $sreg
BRSHk %bb.4, implicit $sreg
RJMPk %bb.5
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.3, %8:gpr8, %bb.5
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY %12:dldregs
$r21r20 = COPY %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY $r23r22
%15:dregs = COPY $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY %16:dldregs
$r22 = COPY %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.10
bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
RJMPk %bb.4
bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
RJMPk %bb.3
bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
%3:ld8 = LDIRdK 1
CPIRdK %1:ld8, 0, implicit-def $sreg
BRNEk %bb.8, implicit $sreg
RJMPk %bb.9
bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
%4:ld8 = PHI %3:ld8, %bb.7, %2:ld8, %bb.9
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY %6:dldregs
$r22 = COPY %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
%2:ld8 = LDIRdK 0
RJMPk %bb.8
bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Live Variable Analysis ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: IsSSA, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY killed $r22
%0:ld8 = COPY killed $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.7, implicit killed $sreg
RJMPk %bb.1
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
CPIRdK killed %0:ld8, 6, implicit-def $sreg
BRNEk %bb.10, implicit killed $sreg
RJMPk %bb.2
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
BRLOk %bb.3, implicit killed $sreg
RJMPk %bb.6
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
%8:gpr8 = PHI %7:ld8, %bb.2, %1:ld8, %bb.6
%9:ld8 = LDIRdK 90
CPIRdK killed %1:ld8, 91, implicit-def $sreg
BRSHk %bb.4, implicit killed $sreg
RJMPk %bb.5
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
%10:gpr8 = PHI %9:ld8, %bb.3, %8:gpr8, %bb.5
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY killed %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY killed %12:dldregs
$r21r20 = COPY killed %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r23r22, implicit killed $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY killed $r23r22
%15:dregs = COPY killed $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY killed %16:dldregs
$r22 = COPY killed %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r25r24, implicit killed $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.10
bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
RJMPk %bb.4
bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
RJMPk %bb.3
bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
%3:ld8 = LDIRdK 1
CPIRdK killed %1:ld8, 0, implicit-def $sreg
BRNEk %bb.8, implicit killed $sreg
RJMPk %bb.9
bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
%4:ld8 = PHI %3:ld8, %bb.7, %2:ld8, %bb.9
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY killed %6:dldregs
$r22 = COPY killed %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r25r24, implicit killed $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
%2:ld8 = LDIRdK 0
RJMPk %bb.8
bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
discovered a new reachable node %bb.0
discovered a new reachable node %bb.7
discovered a new reachable node %bb.9
discovered a new reachable node %bb.8
discovered a new reachable node %bb.10
discovered a new reachable node %bb.1
discovered a new reachable node %bb.2
discovered a new reachable node %bb.6
discovered a new reachable node %bb.3
discovered a new reachable node %bb.5
discovered a new reachable node %bb.4
# *** IR Dump After Eliminate PHI nodes for register allocation ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY killed $r22
%0:ld8 = COPY killed $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.7, implicit killed $sreg
RJMPk %bb.1
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
CPIRdK killed %0:ld8, 6, implicit-def $sreg
BRNEk %bb.10, implicit killed $sreg
RJMPk %bb.2
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
%17:gpr8 = COPY killed %7:ld8
BRLOk %bb.3, implicit killed $sreg
RJMPk %bb.6
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
%8:gpr8 = COPY killed %17:gpr8
%9:ld8 = LDIRdK 90
CPIRdK killed %1:ld8, 91, implicit-def $sreg
%18:gpr8 = COPY killed %9:ld8
BRSHk %bb.4, implicit killed $sreg
RJMPk %bb.5
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
%10:gpr8 = COPY killed %18:gpr8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY killed %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY killed %12:dldregs
$r21r20 = COPY killed %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r23r22, implicit killed $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY killed $r23r22
%15:dregs = COPY killed $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY killed %16:dldregs
$r22 = COPY killed %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r25r24, implicit killed $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.10
bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
%18:gpr8 = COPY killed %8:gpr8
RJMPk %bb.4
bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
%17:gpr8 = COPY %1:ld8
RJMPk %bb.3
bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
%3:ld8 = LDIRdK 1
CPIRdK killed %1:ld8, 0, implicit-def $sreg
%19:ld8 = COPY killed %3:ld8
BRNEk %bb.8, implicit killed $sreg
RJMPk %bb.9
bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
%4:ld8 = COPY killed %19:ld8
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY killed %6:dldregs
$r22 = COPY killed %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r25r24, implicit killed $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
%2:ld8 = LDIRdK 0
%19:ld8 = COPY killed %2:ld8
RJMPk %bb.8
bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
********** REWRITING TWO-ADDR INSTRS **********
********** Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
%5:ld8 = ANDIRdK %4:ld8, 1, implicit-def dead $sreg
prepend: %5:ld8 = COPY %4:ld8
rewrite to: %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
# *** IR Dump After Two-Address instruction pass ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
%1:ld8 = COPY killed $r22
%0:ld8 = COPY killed $r24
CPIRdK %0:ld8, 7, implicit-def $sreg
BREQk %bb.7, implicit killed $sreg
RJMPk %bb.1
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
CPIRdK killed %0:ld8, 6, implicit-def $sreg
BRNEk %bb.10, implicit killed $sreg
RJMPk %bb.2
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
%7:ld8 = LDIRdK 5
CPIRdK %1:ld8, 5, implicit-def $sreg
%17:gpr8 = COPY killed %7:ld8
BRLOk %bb.3, implicit killed $sreg
RJMPk %bb.6
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
%8:gpr8 = COPY killed %17:gpr8
%9:ld8 = LDIRdK 90
CPIRdK killed %1:ld8, 91, implicit-def $sreg
%18:gpr8 = COPY killed %9:ld8
BRSHk %bb.4, implicit killed $sreg
RJMPk %bb.5
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
%10:gpr8 = COPY killed %18:gpr8
STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
%11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%12:dldregs = LDIWRdK 100
%13:dldregs = LDIWRdK 0
$r23r22 = COPY killed %11:dregs
$r25r24 = COPY %13:dldregs
$r19r18 = COPY killed %12:dldregs
$r21r20 = COPY killed %13:dldregs
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r23r22, implicit killed $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%14:dregs = COPY killed $r23r22
%15:dregs = COPY killed $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%16:dldregs = LDIWRdK 34
$r25r24 = COPY killed %16:dldregs
$r22 = COPY killed %10:gpr8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r25r24, implicit killed $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.10
bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
%18:gpr8 = COPY killed %8:gpr8
RJMPk %bb.4
bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
%17:gpr8 = COPY %1:ld8
RJMPk %bb.3
bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
%3:ld8 = LDIRdK 1
CPIRdK killed %1:ld8, 0, implicit-def $sreg
%19:ld8 = COPY killed %3:ld8
BRNEk %bb.8, implicit killed $sreg
RJMPk %bb.9
bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
%4:ld8 = COPY killed %19:ld8
%5:ld8 = COPY %4:ld8
%5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
%6:dldregs = LDIWRdK 35
$r25r24 = COPY killed %6:dldregs
$r22 = COPY killed %4:ld8
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r25r24, implicit killed $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
%2:ld8 = LDIRdK 0
%19:ld8 = COPY killed %2:ld8
RJMPk %bb.8
bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY killed $r22
32B %0:ld8 = COPY killed $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK killed %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %7:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
208B %17:gpr8 = COPY killed %7:ld8
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
272B %8:gpr8 = COPY killed %17:gpr8
288B %9:ld8 = LDIRdK 90
304B CPIRdK killed %1:ld8, 91, implicit-def $sreg
320B %18:gpr8 = COPY killed %9:ld8
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
384B %10:gpr8 = COPY killed %18:gpr8
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY killed %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY killed %12:dldregs
528B $r21r20 = COPY killed %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r23r22, implicit killed $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY killed $r23r22
592B %15:dregs = COPY killed $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, killed %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY killed %16:dldregs
688B $r22 = COPY killed %10:gpr8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r25r24, implicit killed $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:gpr8 = COPY killed %8:gpr8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:gpr8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %3:ld8 = LDIRdK 1
880B CPIRdK killed %1:ld8, 0, implicit-def $sreg
896B %19:ld8 = COPY killed %3:ld8
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
960B %4:ld8 = COPY killed %19:ld8
976B %5:ld8 = COPY %4:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY killed %6:dldregs
1072B $r22 = COPY killed %4:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r25r24, implicit killed $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %2:ld8 = LDIRdK 0
1152B %19:ld8 = COPY killed %2:ld8
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Slot index numbering ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY killed $r22
32B %0:ld8 = COPY killed $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK killed %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %7:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
208B %17:gpr8 = COPY killed %7:ld8
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
272B %8:gpr8 = COPY killed %17:gpr8
288B %9:ld8 = LDIRdK 90
304B CPIRdK killed %1:ld8, 91, implicit-def $sreg
320B %18:gpr8 = COPY killed %9:ld8
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
384B %10:gpr8 = COPY killed %18:gpr8
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY killed %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY killed %12:dldregs
528B $r21r20 = COPY killed %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r23r22, implicit killed $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY killed $r23r22
592B %15:dregs = COPY killed $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, killed %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY killed %16:dldregs
688B $r22 = COPY killed %10:gpr8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r25r24, implicit killed $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:gpr8 = COPY killed %8:gpr8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:gpr8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %3:ld8 = LDIRdK 1
880B CPIRdK killed %1:ld8, 0, implicit-def $sreg
896B %19:ld8 = COPY killed %3:ld8
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
960B %4:ld8 = COPY killed %19:ld8
976B %5:ld8 = COPY %4:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY killed %6:dldregs
1072B $r22 = COPY killed %4:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit killed $r25r24, implicit killed $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %2:ld8 = LDIRdK 0
1152B %19:ld8 = COPY killed %2:ld8
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
Computing live-in reg-units in ABI blocks.
0B %bb.0 R24#0 R22#0
Created 2 new intervals.
********** INTERVALS **********
R22 [0B,16r:0)[480r,544r:4)[544r,576r:3)[688r,704r:1)[1072r,1088r:2) 0@0B-phi 1@688r 2@1072r 3@544r 4@480r
R24 [0B,32r:0)[496r,544r:3)[544r,592r:2)[672r,704r:1)[1056r,1088r:4) 0@0B-phi 1@672r 2@544r 3@496r 4@1056r
%0 [32r,112r:0) 0@32r weight:0.000000e+00
%1 [16r,304r:0)[800B,880r:0) 0@16r weight:0.000000e+00
%2 [1136r,1152r:0) 0@1136r weight:0.000000e+00
%3 [864r,896r:0) 0@864r weight:0.000000e+00
%4 [960r,1072r:0) 0@960r weight:0.000000e+00
%5 [976r,992r:0)[992r,1008r:1) 0@976r 1@992r weight:0.000000e+00
%6 [1040r,1056r:0) 0@1040r weight:0.000000e+00
%7 [176r,208r:0) 0@176r weight:0.000000e+00
%8 [272r,368B:0)[752B,768r:0) 0@272r weight:0.000000e+00
%9 [288r,320r:0) 0@288r weight:0.000000e+00
%10 [384r,688r:0) 0@384r weight:0.000000e+00
%11 [416r,480r:0) 0@416r weight:0.000000e+00
%12 [448r,512r:0) 0@448r weight:0.000000e+00
%13 [464r,528r:0) 0@464r weight:0.000000e+00
%14 [576r,624r:0) 0@576r weight:0.000000e+00
%15 [592r,608r:0) 0@592r weight:0.000000e+00
%16 [656r,672r:0) 0@656r weight:0.000000e+00
%17 [208r,256B:0)[256B,272r:2)[816r,848B:1) 0@208r 1@816r 2@256B-phi weight:0.000000e+00
%18 [320r,368B:0)[368B,384r:2)[768r,800B:1) 0@320r 1@768r 2@368B-phi weight:0.000000e+00
%19 [896r,944B:0)[944B,960r:2)[1152r,1184B:1) 0@896r 1@1152r 2@944B-phi weight:0.000000e+00
RegMasks: 544r 704r 1088r
********** MACHINEINSTRS **********
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %7:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
208B %17:gpr8 = COPY %7:ld8
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
272B %8:gpr8 = COPY %17:gpr8
288B %9:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
320B %18:gpr8 = COPY %9:ld8
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
384B %10:gpr8 = COPY %18:gpr8
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %10:gpr8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:gpr8 = COPY %8:gpr8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:gpr8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %3:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
896B %19:ld8 = COPY %3:ld8
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
960B %4:ld8 = COPY %19:ld8
976B %5:ld8 = COPY %4:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %4:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %2:ld8 = LDIRdK 0
1152B %19:ld8 = COPY %2:ld8
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Live Interval Analysis ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %7:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
208B %17:gpr8 = COPY %7:ld8
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
272B %8:gpr8 = COPY %17:gpr8
288B %9:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
320B %18:gpr8 = COPY %9:ld8
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
384B %10:gpr8 = COPY %18:gpr8
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %10:gpr8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %10:gpr8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %10:gpr8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:gpr8 = COPY %8:gpr8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:gpr8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %3:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
896B %19:ld8 = COPY %3:ld8
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
960B %4:ld8 = COPY %19:ld8
976B %5:ld8 = COPY %4:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %4:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %2:ld8 = LDIRdK 0
1152B %19:ld8 = COPY %2:ld8
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
********** SIMPLE REGISTER COALESCING **********
********** Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
********** JOINING INTERVALS ***********
:
272B %8:gpr8 = COPY %17:gpr8
Considering merging to GPR8 with %8 in %17
RHS = %8 [272r,368B:0)[752B,768r:0) 0@272r weight:0.000000e+00
LHS = %17 [208r,256B:0)[256B,272r:2)[816r,848B:1) 0@208r 1@816r 2@256B-phi weight:0.000000e+00
merge %8:0@272r into %17:2@256B --> @256B
erased: 272r %8:gpr8 = COPY %17:gpr8
AllocationOrder(GPR8) = [ $r24 $r25 $r18 $r19 $r20 $r21 $r22 $r23 $r30 $r31 $r26 $r27 $r17 $r16 $r15 $r14 $r13 $r12 $r11 $r10 $r9 $r8 $r7 $r6 $r5 $r4 $r3 $r2 ]
updated: 768B %18:gpr8 = COPY %17:gpr8
Success: %8 -> %17
Result = %17 [208r,256B:0)[256B,368B:2)[752B,768r:2)[816r,848B:1) 0@208r 1@816r 2@256B-phi weight:0.000000e+00
320B %18:gpr8 = COPY %9:ld8
Considering merging to LD8 with %9 in %18
RHS = %9 [288r,320r:0) 0@288r weight:0.000000e+00
LHS = %18 [320r,368B:0)[368B,384r:2)[768r,800B:1) 0@320r 1@768r 2@368B-phi weight:0.000000e+00
merge %18:0@320r into %9:0@288r --> @288r
erased: 320r %18:gpr8 = COPY %9:ld8
AllocationOrder(LD8) = [ $r24 $r25 $r18 $r19 $r20 $r21 $r22 $r23 $r30 $r31 $r26 $r27 $r17 $r16 ] (sub-class)
updated: 288B %18:ld8 = LDIRdK 90
Success: %9 -> %18
Result = %18 [288r,368B:0)[368B,384r:2)[768r,800B:1) 0@288r 1@768r 2@368B-phi weight:0.000000e+00
entry:
:
208B %17:gpr8 = COPY %7:ld8
Considering merging to LD8 with %7 in %17
RHS = %7 [176r,208r:0) 0@176r weight:0.000000e+00
LHS = %17 [208r,256B:0)[256B,368B:2)[752B,768r:2)[816r,848B:1) 0@208r 1@816r 2@256B-phi weight:0.000000e+00
merge %17:0@208r into %7:0@176r --> @176r
erased: 208r %17:gpr8 = COPY %7:ld8
updated: 176B %17:ld8 = LDIRdK 5
Success: %7 -> %17
Result = %17 [176r,256B:0)[256B,368B:2)[752B,768r:2)[816r,848B:1) 0@176r 1@816r 2@256B-phi weight:0.000000e+00
:
384B %10:gpr8 = COPY %18:ld8
Considering merging to LD8 with %10 in %18
RHS = %10 [384r,688r:0) 0@384r weight:0.000000e+00
LHS = %18 [288r,368B:0)[368B,384r:2)[768r,800B:1) 0@288r 1@768r 2@368B-phi weight:0.000000e+00
merge %10:0@384r into %18:2@368B --> @368B
erased: 384r %10:gpr8 = COPY %18:ld8
updated: 400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
updated: 416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
updated: 688B $r22 = COPY %18:ld8
Success: %10 -> %18
Result = %18 [288r,368B:0)[368B,688r:2)[768r,800B:1) 0@288r 1@768r 2@368B-phi weight:0.000000e+00
480B $r23r22 = COPY %11:dregs
Considering merging %11 with $r23r22
Can only merge into reserved registers.
496B $r25r24 = COPY %13:dldregs
Considering merging %13 with $r25r24
Can only merge into reserved registers.
512B $r19r18 = COPY %12:dldregs
Considering merging %12 with $r19r18
Can only merge into reserved registers.
528B $r21r20 = COPY %13:dldregs
Considering merging %13 with $r21r20
Can only merge into reserved registers.
576B %14:dregs = COPY $r23r22
Considering merging %14 with $r23r22
Can only merge into reserved registers.
592B %15:dregs = COPY $r25r24
Considering merging %15 with $r25r24
Can only merge into reserved registers.
672B $r25r24 = COPY %16:dldregs
Considering merging %16 with $r25r24
Can only merge into reserved registers.
688B $r22 = COPY %18:ld8
Considering merging %18 with $r22
Can only merge into reserved registers.
:
896B %19:ld8 = COPY %3:ld8
Considering merging to LD8 with %3 in %19
RHS = %3 [864r,896r:0) 0@864r weight:0.000000e+00
LHS = %19 [896r,944B:0)[944B,960r:2)[1152r,1184B:1) 0@896r 1@1152r 2@944B-phi weight:0.000000e+00
merge %19:0@896r into %3:0@864r --> @864r
erased: 896r %19:ld8 = COPY %3:ld8
updated: 864B %19:ld8 = LDIRdK 1
Success: %3 -> %19
Result = %19 [864r,944B:0)[944B,960r:2)[1152r,1184B:1) 0@864r 1@1152r 2@944B-phi weight:0.000000e+00
:
960B %4:ld8 = COPY %19:ld8
Considering merging to LD8 with %4 in %19
RHS = %4 [960r,1072r:0) 0@960r weight:0.000000e+00
LHS = %19 [864r,944B:0)[944B,960r:2)[1152r,1184B:1) 0@864r 1@1152r 2@944B-phi weight:0.000000e+00
merge %4:0@960r into %19:2@944B --> @944B
erased: 960r %4:ld8 = COPY %19:ld8
updated: 1072B $r22 = COPY %19:ld8
updated: 976B %5:ld8 = COPY %19:ld8
Success: %4 -> %19
Result = %19 [864r,944B:0)[944B,1072r:2)[1152r,1184B:1) 0@864r 1@1152r 2@944B-phi weight:0.000000e+00
976B %5:ld8 = COPY %19:ld8
Considering merging to LD8 with %5 in %19
RHS = %5 [976r,992r:0)[992r,1008r:1) 0@976r 1@992r weight:0.000000e+00
LHS = %19 [864r,944B:0)[944B,1072r:2)[1152r,1184B:1) 0@864r 1@1152r 2@944B-phi weight:0.000000e+00
merge %5:0@976r into %19:2@944B --> @944B
interference at %5:1@992r
Interference!
1056B $r25r24 = COPY %6:dldregs
Considering merging %6 with $r25r24
Can only merge into reserved registers.
1072B $r22 = COPY %19:ld8
Considering merging %19 with $r22
Can only merge into reserved registers.
:
entry:
16B %1:ld8 = COPY $r22
Considering merging %1 with $r22
Can only merge into reserved registers.
32B %0:ld8 = COPY $r24
Considering merging %0 with $r24
Can only merge into reserved registers.
:
768B %18:ld8 = COPY %17:ld8
Considering merging to LD8 with %18 in %17
RHS = %18 [288r,368B:0)[368B,688r:2)[768r,800B:1) 0@288r 1@768r 2@368B-phi weight:0.000000e+00
LHS = %17 [176r,256B:0)[256B,368B:2)[752B,768r:2)[816r,848B:1) 0@176r 1@816r 2@256B-phi weight:0.000000e+00
interference at %18:0@288r
Interference!
:
816B %17:ld8 = COPY %1:ld8
Considering merging to LD8 with %1 in %17
RHS = %1 [16r,304r:0)[800B,880r:0) 0@16r weight:0.000000e+00
LHS = %17 [176r,256B:0)[256B,368B:2)[752B,768r:2)[816r,848B:1) 0@176r 1@816r 2@256B-phi weight:0.000000e+00
interference at %17:0@176r
Interference!
:
1152B %19:ld8 = COPY %2:ld8
Considering merging to LD8 with %2 in %19
RHS = %2 [1136r,1152r:0) 0@1136r weight:0.000000e+00
LHS = %19 [864r,944B:0)[944B,1072r:2)[1152r,1184B:1) 0@864r 1@1152r 2@944B-phi weight:0.000000e+00
merge %19:1@1152r into %2:0@1136r --> @1136r
erased: 1152r %19:ld8 = COPY %2:ld8
updated: 1136B %19:ld8 = LDIRdK 0
Success: %2 -> %19
Result = %19 [864r,944B:0)[944B,1072r:2)[1136r,1184B:1) 0@864r 1@1136r 2@944B-phi weight:0.000000e+00
976B %5:ld8 = COPY %19:ld8
Considering merging to LD8 with %5 in %19
RHS = %5 [976r,992r:0)[992r,1008r:1) 0@976r 1@992r weight:0.000000e+00
LHS = %19 [864r,944B:0)[944B,1072r:2)[1136r,1184B:1) 0@864r 1@1136r 2@944B-phi weight:0.000000e+00
merge %5:0@976r into %19:2@944B --> @944B
interference at %5:1@992r
Interference!
768B %18:ld8 = COPY %17:ld8
Considering merging to LD8 with %18 in %17
RHS = %18 [288r,368B:0)[368B,688r:2)[768r,800B:1) 0@288r 1@768r 2@368B-phi weight:0.000000e+00
LHS = %17 [176r,256B:0)[256B,368B:2)[752B,768r:2)[816r,848B:1) 0@176r 1@816r 2@256B-phi weight:0.000000e+00
interference at %18:0@288r
Interference!
816B %17:ld8 = COPY %1:ld8
Considering merging to LD8 with %1 in %17
RHS = %1 [16r,304r:0)[800B,880r:0) 0@16r weight:0.000000e+00
LHS = %17 [176r,256B:0)[256B,368B:2)[752B,768r:2)[816r,848B:1) 0@176r 1@816r 2@256B-phi weight:0.000000e+00
interference at %17:0@176r
Interference!
Trying to inflate 3 regs.
********** INTERVALS **********
R22 [0B,16r:0)[480r,544r:4)[544r,576r:3)[688r,704r:1)[1072r,1088r:2) 0@0B-phi 1@688r 2@1072r 3@544r 4@480r
R24 [0B,32r:0)[496r,544r:3)[544r,592r:2)[672r,704r:1)[1056r,1088r:4) 0@0B-phi 1@672r 2@544r 3@496r 4@1056r
%0 [32r,112r:0) 0@32r weight:0.000000e+00
%1 [16r,304r:0)[800B,880r:0) 0@16r weight:0.000000e+00
%5 [976r,992r:0)[992r,1008r:1) 0@976r 1@992r weight:0.000000e+00
%6 [1040r,1056r:0) 0@1040r weight:0.000000e+00
%11 [416r,480r:0) 0@416r weight:0.000000e+00
%12 [448r,512r:0) 0@448r weight:0.000000e+00
%13 [464r,528r:0) 0@464r weight:0.000000e+00
%14 [576r,624r:0) 0@576r weight:0.000000e+00
%15 [592r,608r:0) 0@592r weight:0.000000e+00
%16 [656r,672r:0) 0@656r weight:0.000000e+00
%17 [176r,256B:0)[256B,368B:2)[752B,768r:2)[816r,848B:1) 0@176r 1@816r 2@256B-phi weight:0.000000e+00
%18 [288r,368B:0)[368B,688r:2)[768r,800B:1) 0@288r 1@768r 2@368B-phi weight:0.000000e+00
%19 [864r,944B:0)[944B,1072r:2)[1136r,1184B:1) 0@864r 1@1136r 2@944B-phi weight:0.000000e+00
RegMasks: 544r 704r 1088r
********** MACHINEINSTRS **********
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %17:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
288B %18:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %18:ld8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:ld8 = COPY %17:ld8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:ld8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %19:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
976B %5:ld8 = COPY %19:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %19:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %19:ld8 = LDIRdK 0
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Simple Register Coalescing ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %17:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
288B %18:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %18:ld8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:ld8 = COPY %17:ld8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:ld8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %19:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
976B %5:ld8 = COPY %19:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %19:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %19:ld8 = LDIRdK 0
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Rename Disconnected Subregister Components ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %17:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
288B %18:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %18:ld8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:ld8 = COPY %17:ld8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:ld8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %19:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
976B %5:ld8 = COPY %19:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %19:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %19:ld8 = LDIRdK 0
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Machine Instruction Scheduler ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %17:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
288B %18:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %18:ld8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:ld8 = COPY %17:ld8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:ld8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %19:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
976B %5:ld8 = COPY %19:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %19:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %19:ld8 = LDIRdK 0
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
block-frequency: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
==================================================================
reverse-post-order-traversal
- 0: BB0[entry]
- 1: BB1[entry]
- 2: BB2[]
- 3: BB6[]
- 4: BB3[]
- 5: BB5[]
- 6: BB4[]
- 7: BB7[]
- 8: BB9[]
- 9: BB8[]
- 10: BB10[]
loop-detection
compute-mass-in-function
- node: BB0[entry]
=> [ local ] weight = 715827883, succ = BB7[]
=> [ local ] weight = 1431655765, succ = BB1[entry]
=> mass: ffffffffffffffff
=> assign aaaaaaa9ffffffff (5555555600000000) to BB1[entry]
=> assign 5555555600000000 (0000000000000000) to BB7[]
- node: BB1[entry]
=> [ local ] weight = 1073741825, succ = BB2[]
=> [ local ] weight = 1073741823, succ = BB10[]
=> mass: aaaaaaa9ffffffff
=> assign 5555555655555553 (55555553aaaaaaac) to BB2[]
=> assign 55555553aaaaaaac (0000000000000000) to BB10[]
- node: BB2[]
=> [ local ] weight = 1073741824, succ = BB6[]
=> [ local ] weight = 1073741824, succ = BB3[]
=> mass: 5555555655555553
=> assign 2aaaaaab2aaaaaa9 (2aaaaaab2aaaaaaa) to BB6[]
=> assign 2aaaaaab2aaaaaaa (0000000000000000) to BB3[]
- node: BB6[]
=> [ local ] weight = 2147483648, succ = BB3[]
=> mass: 2aaaaaab2aaaaaa9
=> assign 2aaaaaab2aaaaaa9 (0000000000000000) to BB3[]
- node: BB3[]
=> [ local ] weight = 1073741824, succ = BB5[]
=> [ local ] weight = 1073741824, succ = BB4[]
=> mass: 5555555655555553
=> assign 2aaaaaab2aaaaaa9 (2aaaaaab2aaaaaaa) to BB5[]
=> assign 2aaaaaab2aaaaaaa (0000000000000000) to BB4[]
- node: BB5[]
=> [ local ] weight = 2147483648, succ = BB4[]
=> mass: 2aaaaaab2aaaaaa9
=> assign 2aaaaaab2aaaaaa9 (0000000000000000) to BB4[]
- node: BB4[]
=> [ local ] weight = 2147483648, succ = BB10[]
=> mass: 5555555655555553
=> assign 5555555655555553 (0000000000000000) to BB10[]
- node: BB7[]
=> [ local ] weight = 1073741824, succ = BB9[]
=> [ local ] weight = 1073741824, succ = BB8[]
=> mass: 5555555600000000
=> assign 2aaaaaab00000000 (2aaaaaab00000000) to BB9[]
=> assign 2aaaaaab00000000 (0000000000000000) to BB8[]
- node: BB9[]
=> [ local ] weight = 2147483648, succ = BB8[]
=> mass: 2aaaaaab00000000
=> assign 2aaaaaab00000000 (0000000000000000) to BB8[]
- node: BB8[]
=> [ local ] weight = 2147483648, succ = BB10[]
=> mass: 5555555600000000
=> assign 5555555600000000 (0000000000000000) to BB10[]
- node: BB10[]
=> mass: ffffffffffffffff
float-to-int: min = 0.1666666667, max = 1.0, factor = 47.99999998
- BB0[entry]: float = 1.0, scaled = 47.99999998, int = 47
- BB1[entry]: float = 0.6666666665, scaled = 31.99999998, int = 31
- BB2[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB6[]: float = 0.1666666668, scaled = 8.000000002, int = 8
- BB3[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB5[]: float = 0.1666666668, scaled = 8.000000002, int = 8
- BB4[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB7[]: float = 0.3333333335, scaled = 16.0, int = 15
- BB9[]: float = 0.1666666667, scaled = 8.0, int = 8
- BB8[]: float = 0.3333333335, scaled = 16.0, int = 15
- BB10[]: float = 1.0, scaled = 47.99999998, int = 47
block-frequency-info: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
- BB0[entry]: float = 1.0, int = 47
- BB1[entry]: float = 0.66667, int = 31
- BB2[]: float = 0.33333, int = 16
- BB3[]: float = 0.33333, int = 16
- BB4[]: float = 0.33333, int = 16
- BB5[]: float = 0.16667, int = 8
- BB6[]: float = 0.16667, int = 8
- BB7[]: float = 0.33333, int = 15
- BB8[]: float = 0.33333, int = 15
- BB9[]: float = 0.16667, int = 8
- BB10[]: float = 1.0, int = 47
# *** IR Dump After Debug Variable Analysis ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %17:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
288B %18:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %18:ld8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:ld8 = COPY %17:ld8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:ld8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %19:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
976B %5:ld8 = COPY %19:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %19:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %19:ld8 = LDIRdK 0
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Live Stack Slot Analysis ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %17:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
288B %18:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %18:ld8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:ld8 = COPY %17:ld8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:ld8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %19:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
976B %5:ld8 = COPY %19:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %19:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %19:ld8 = LDIRdK 0
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
*** ALREADY BROKEN - missing a JMP
# *** IR Dump After Virtual Register Map ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %17:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
288B %18:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %18:ld8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:ld8 = COPY %17:ld8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:ld8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %19:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
976B %5:ld8 = COPY %19:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %19:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %19:ld8 = LDIRdK 0
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Live Register Matrix ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %17:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
288B %18:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %18:ld8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:ld8 = COPY %17:ld8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:ld8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %19:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
976B %5:ld8 = COPY %19:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %19:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %19:ld8 = LDIRdK 0
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
********** GREEDY REGISTER ALLOCATION **********
********** Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
********** Compute Spill Weights **********
********** Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
********** INTERVALS **********
R22 [0B,16r:0)[480r,544r:4)[544r,576r:3)[688r,704r:1)[1072r,1088r:2) 0@0B-phi 1@688r 2@1072r 3@544r 4@480r
R24 [0B,32r:0)[496r,544r:3)[544r,592r:2)[672r,704r:1)[1056r,1088r:4) 0@0B-phi 1@672r 2@544r 3@496r 4@1056r
%0 [32r,112r:0) 0@32r weight:5.596188e-03
%1 [16r,304r:0)[800B,880r:0) 0@16r weight:2.846643e-03
%5 [976r,992r:0)[992r,1008r:1) 0@976r 1@992r weight:INF
%6 [1040r,1056r:0) 0@1040r weight:INF
%11 [416r,480r:0) 0@416r weight:1.482025e-03
%12 [448r,512r:0) 0@448r weight:7.410125e-04
%13 [464r,528r:0) 0@464r weight:1.111519e-03
%14 [576r,624r:0) 0@576r weight:1.534954e-03
%15 [592r,608r:0) 0@592r weight:INF
%16 [656r,672r:0) 0@656r weight:INF
%17 [176r,256B:0)[256B,368B:2)[752B,768r:2)[816r,848B:1) 0@176r 1@816r 2@256B-phi weight:1.077836e-03
%18 [288r,368B:0)[368B,688r:2)[768r,800B:1) 0@288r 1@768r 2@368B-phi weight:1.864137e-03
%19 [864r,944B:0)[944B,1072r:2)[1136r,1184B:1) 0@864r 1@1136r 2@944B-phi weight:1.741493e-03
RegMasks: 544r 704r 1088r
********** MACHINEINSTRS **********
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %17:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
288B %18:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit killed $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %18:ld8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:ld8 = COPY %17:ld8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:ld8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %19:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
976B %5:ld8 = COPY %19:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %19:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %19:ld8 = LDIRdK 0
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
selectOrSplit LD8:%18 [288r,368B:0)[368B,688r:2)[768r,800B:1) 0@288r 1@768r 2@368B-phi weight:1.864137e-03 w=1.864137e-03
AllocationOrder(GPR8) = [ $r24 $r25 $r18 $r19 $r20 $r21 $r22 $r23 $r30 $r31 $r26 $r27 $r17 $r16 $r15 $r14 $r13 $r12 $r11 $r10 $r9 $r8 $r7 $r6 $r5 $r4 $r3 $r2 ]
AllocationOrder(LD8) = [ $r24 $r25 $r18 $r19 $r20 $r21 $r22 $r23 $r30 $r31 $r26 $r27 $r17 $r16 ] (sub-class)
hints: $r22
missed hint $r22
assigning %18 to $r17: R17 [288r,368B:0)[368B,688r:2)[768r,800B:1) 0@288r 1@768r 2@368B-phi
selectOrSplit LD8:%1 [16r,304r:0)[800B,880r:0) 0@16r weight:2.846643e-03 w=2.846643e-03
hints: $r22
assigning %1 to $r22: R22 [16r,304r:0)[800B,880r:0) 0@16r
selectOrSplit LD8:%19 [864r,944B:0)[944B,1072r:2)[1136r,1184B:1) 0@864r 1@1136r 2@944B-phi weight:1.741493e-03 w=1.741493e-03
hints: $r22
missed hint $r22
assigning %19 to $r18: R18 [864r,944B:0)[944B,1072r:2)[1136r,1184B:1) 0@864r 1@1136r 2@944B-phi
selectOrSplit LD8:%0 [32r,112r:0) 0@32r weight:5.596188e-03 w=5.596188e-03
hints: $r24
assigning %0 to $r24: R24 [32r,112r:0) 0@32r
selectOrSplit DREGS:%11 [416r,480r:0) 0@416r weight:1.482025e-03 w=1.482025e-03
AllocationOrder(DREGS) = [ $r25r24 $r19r18 $r21r20 $r23r22 $r31r30 $r27r26 $r17r16 $r15r14 $r13r12 $r11r10 $r9r8 $r7r6 $r5r4 $r3r2 ]
hints: $r23r22
assigning %11 to $r23r22: R22 [416r,480r:0) 0@416r R23 [416r,480r:0) 0@416r
selectOrSplit DLDREGS:%12 [448r,512r:0) 0@448r weight:7.410125e-04 w=7.410125e-04
AllocationOrder(DLDREGS) = [ $r25r24 $r19r18 $r21r20 $r23r22 $r31r30 $r27r26 $r17r16 ] (sub-class)
hints: $r19r18
assigning %12 to $r19r18: R18 [448r,512r:0) 0@448r R19 [448r,512r:0) 0@448r
selectOrSplit DLDREGS:%13 [464r,528r:0) 0@464r weight:1.111519e-03 w=1.111519e-03
hints: $r25r24
assigning %13 to $r25r24: R24 [464r,528r:0) 0@464r R25 [464r,528r:0) 0@464r
selectOrSplit DREGS:%14 [576r,624r:0) 0@576r weight:1.534954e-03 w=1.534954e-03
hints: $r23r22
assigning %14 to $r23r22: R22 [576r,624r:0) 0@576r R23 [576r,624r:0) 0@576r
selectOrSplit DREGS:%15 [592r,608r:0) 0@592r weight:INF w=INF
hints: $r25r24
assigning %15 to $r25r24: R24 [592r,608r:0) 0@592r R25 [592r,608r:0) 0@592r
selectOrSplit DLDREGS:%16 [656r,672r:0) 0@656r weight:INF w=INF
hints: $r25r24
assigning %16 to $r25r24: R24 [656r,672r:0) 0@656r R25 [656r,672r:0) 0@656r
selectOrSplit DLDREGS:%6 [1040r,1056r:0) 0@1040r weight:INF w=INF
hints: $r25r24
assigning %6 to $r25r24: R24 [1040r,1056r:0) 0@1040r R25 [1040r,1056r:0) 0@1040r
selectOrSplit LD8:%17 [176r,256B:0)[256B,368B:2)[752B,768r:2)[816r,848B:1) 0@176r 1@816r 2@256B-phi weight:1.077836e-03 w=1.077836e-03
hints: $r22
assigning %17 to $r24: R24 [176r,256B:0)[256B,368B:2)[752B,768r:2)[816r,848B:1) 0@176r 1@816r 2@256B-phi
selectOrSplit LD8:%5 [976r,992r:0)[992r,1008r:1) 0@976r 1@992r weight:INF w=INF
hints: $r18
assigning %5 to $r24: R24 [976r,992r:0)[992r,1008r:1) 0@976r 1@992r
Trying to reconcile hints for: %18($r17)
%18($r17) is recolorable.
Trying to reconcile hints for: %19($r18)
%19($r18) is recolorable.
# *** IR Dump After Greedy Register Allocator ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness
Function Live Ins: $r24 in %0, $r22 in %1
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r24, $r22
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
112B CPIRdK %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
176B %17:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
288B %18:ld8 = LDIRdK 90
304B CPIRdK %1:ld8, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY %16:dldregs
688B $r22 = COPY %18:ld8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
768B %18:ld8 = COPY %17:ld8
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
816B %17:ld8 = COPY %1:ld8
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
864B %19:ld8 = LDIRdK 1
880B CPIRdK %1:ld8, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
976B %5:ld8 = COPY %19:ld8
992B %5:ld8 = ANDIRdK %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY %6:dldregs
1072B $r22 = COPY %19:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %19:ld8 = LDIRdK 0
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
********** REWRITE VIRTUAL REGISTERS **********
********** Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
********** REGISTER MAP **********
[%0 -> $r24] LD8
[%1 -> $r22] LD8
[%5 -> $r24] LD8
[%6 -> $r25r24] DLDREGS
[%11 -> $r23r22] DREGS
[%12 -> $r19r18] DLDREGS
[%13 -> $r25r24] DLDREGS
[%14 -> $r23r22] DREGS
[%15 -> $r25r24] DREGS
[%16 -> $r25r24] DLDREGS
[%17 -> $r24] LD8
[%18 -> $r17] LD8
[%19 -> $r18] LD8
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r22, $r24
16B %1:ld8 = COPY $r22
32B %0:ld8 = COPY $r24
48B CPIRdK %0:ld8, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
> $r22 = COPY $r22
Identity copy: $r22 = COPY $r22
deleted.
> $r24 = COPY $r24
Identity copy: $r24 = COPY $r24
deleted.
> CPIRdK $r24, 7, implicit-def $sreg
> BREQk %bb.7, implicit killed $sreg
> RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
liveins: $r22, $r24
112B CPIRdK killed %0:ld8, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
> CPIRdK killed $r24, 6, implicit-def $sreg
> BRNEk %bb.10, implicit killed $sreg
> RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
liveins: $r22
176B %17:ld8 = LDIRdK 5
192B CPIRdK %1:ld8, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
> $r24 = LDIRdK 5
> CPIRdK $r22, 5, implicit-def $sreg
> BRLOk %bb.3, implicit killed $sreg
> RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
288B %18:ld8 = LDIRdK 90
304B CPIRdK killed %1:ld8, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
> $r17 = LDIRdK 90
> CPIRdK killed $r22, 91, implicit-def $sreg
> BRSHk %bb.4, implicit killed $sreg
> RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r17
400B STSKRr @_Tv4main11delayFactorVs5UInt8, %18:ld8 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B %11:dregs = ZEXT %18:ld8, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B %12:dldregs = LDIWRdK 100
464B %13:dldregs = LDIWRdK 0
480B $r23r22 = COPY killed %11:dregs
496B $r25r24 = COPY %13:dldregs
512B $r19r18 = COPY killed %12:dldregs
528B $r21r20 = COPY %13:dldregs
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
576B %14:dregs = COPY $r23r22
592B %15:dregs = COPY $r25r24
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed %15:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, killed %14:dregs :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B %16:dldregs = LDIWRdK 34
672B $r25r24 = COPY killed %16:dldregs
688B $r22 = COPY killed %18:ld8
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
> STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
> $r23r22 = ZEXT $r17, implicit-def dead $sreg
> ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
> $r19r18 = LDIWRdK 100
> $r25r24 = LDIWRdK 0
> $r23r22 = COPY killed $r23r22
Identity copy: $r23r22 = COPY killed $r23r22
deleted.
> $r25r24 = COPY $r25r24
Identity copy: $r25r24 = COPY $r25r24
deleted.
> $r19r18 = COPY killed $r19r18
Identity copy: $r19r18 = COPY killed $r19r18
deleted.
> $r21r20 = COPY $r25r24
> CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
> ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
> $r23r22 = COPY $r23r22
Identity copy: $r23r22 = COPY $r23r22
deleted.
> $r25r24 = COPY $r25r24
Identity copy: $r25r24 = COPY $r25r24
deleted.
> STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
> STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
> ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
> $r25r24 = LDIWRdK 34
> $r25r24 = COPY killed $r25r24
Identity copy: $r25r24 = COPY killed $r25r24
deleted.
> $r22 = COPY killed $r17
> CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
> ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
> RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
768B %18:ld8 = COPY killed %17:ld8
784B RJMPk %bb.4
> $r17 = COPY killed $r24
> RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
816B %17:ld8 = COPY %1:ld8
832B RJMPk %bb.3
> $r24 = COPY $r22
> RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
liveins: $r22
864B %19:ld8 = LDIRdK 1
880B CPIRdK killed %1:ld8, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
> $r18 = LDIRdK 1
> CPIRdK killed $r22, 0, implicit-def $sreg
> BRNEk %bb.8, implicit killed $sreg
> RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r18
976B %5:ld8 = COPY %19:ld8
992B %5:ld8 = ANDIRdK killed %5:ld8, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, killed %5:ld8 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B %6:dldregs = LDIWRdK 35
1056B $r25r24 = COPY killed %6:dldregs
1072B $r22 = COPY killed %19:ld8
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
> $r24 = COPY $r18
> $r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
> STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
> ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
> $r25r24 = LDIWRdK 35
> $r25r24 = COPY killed $r25r24
Identity copy: $r25r24 = COPY killed $r25r24
deleted.
> $r22 = COPY killed $r18
> CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
> ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B %19:ld8 = LDIRdK 0
1168B RJMPk %bb.8
> $r18 = LDIRdK 0
> RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
> RET
# *** IR Dump After Virtual Register Rewriter ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Function Live Ins: $r24, $r22
0B bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r22, $r24
48B CPIRdK $r24, 7, implicit-def $sreg
64B BREQk %bb.7, implicit killed $sreg
80B RJMPk %bb.1
96B bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
liveins: $r22, $r24
112B CPIRdK killed $r24, 6, implicit-def $sreg
128B BRNEk %bb.10, implicit killed $sreg
144B RJMPk %bb.2
160B bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
liveins: $r22
176B $r24 = LDIRdK 5
192B CPIRdK $r22, 5, implicit-def $sreg
224B BRLOk %bb.3, implicit killed $sreg
240B RJMPk %bb.6
256B bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
288B $r17 = LDIRdK 90
304B CPIRdK killed $r22, 91, implicit-def $sreg
336B BRSHk %bb.4, implicit killed $sreg
352B RJMPk %bb.5
368B bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r17
400B STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
416B $r23r22 = ZEXT $r17, implicit-def dead $sreg
432B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
448B $r19r18 = LDIWRdK 100
464B $r25r24 = LDIWRdK 0
528B $r21r20 = COPY $r25r24
544B CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
560B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
608B STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
624B STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
640B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
656B $r25r24 = LDIWRdK 34
688B $r22 = COPY killed $r17
704B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
720B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
736B RJMPk %bb.10
752B bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
768B $r17 = COPY killed $r24
784B RJMPk %bb.4
800B bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
816B $r24 = COPY $r22
832B RJMPk %bb.3
848B bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
liveins: $r22
864B $r18 = LDIRdK 1
880B CPIRdK killed $r22, 0, implicit-def $sreg
912B BRNEk %bb.8, implicit killed $sreg
928B RJMPk %bb.9
944B bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r18
976B $r24 = COPY $r18
992B $r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
1008B STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
1024B ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1040B $r25r24 = LDIWRdK 35
1072B $r22 = COPY killed $r18
1088B CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
1104B ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
1120B bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
1136B $r18 = LDIRdK 0
1168B RJMPk %bb.8
1184B bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
1200B RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
********** Stack Slot Coloring **********
********** Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
# *** IR Dump After Stack Slot Coloring ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r22, $r24
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.7, implicit killed $sreg
RJMPk %bb.1
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.10, implicit killed $sreg
RJMPk %bb.2
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.3, implicit killed $sreg
RJMPk %bb.6
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.4, implicit killed $sreg
RJMPk %bb.5
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r23r22 = ZEXT $r17, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r19r18 = LDIWRdK 100
$r25r24 = LDIWRdK 0
$r21r20 = COPY $r25r24
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r25r24 = LDIWRdK 34
$r22 = COPY killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.10
bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = COPY killed $r24
RJMPk %bb.4
bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = COPY $r22
RJMPk %bb.3
bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.8, implicit killed $sreg
RJMPk %bb.9
bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r18
$r24 = COPY $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r25r24 = LDIWRdK 35
$r22 = COPY killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
$r18 = LDIRdK 0
RJMPk %bb.8
bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
MCP: CopyPropagateBlock entry
MCP: CopyPropagateBlock entry
MCP: CopyPropagateBlock
MCP: CopyPropagateBlock
MCP: CopyPropagateBlock
MCP: Copy is a deletion candidate: $r21r20 = COPY $r25r24
MCP: Copy is used - not dead: $r21r20 = COPY $r25r24
MCP: Copy is used - not dead: $r21r20 = COPY $r25r24
MCP: Copy is used - not dead: $r21r20 = COPY $r25r24
MCP: Copy is used - not dead: $r21r20 = COPY $r25r24
MCP: Copy is a deletion candidate: $r22 = COPY killed $r17
MCP: Copy is used - not dead: $r22 = COPY killed $r17
MCP: CopyPropagateBlock
MCP: Copy is a deletion candidate: $r17 = COPY killed $r24
MCP: CopyPropagateBlock
MCP: Copy is a deletion candidate: $r24 = COPY $r22
MCP: CopyPropagateBlock
MCP: CopyPropagateBlock
MCP: Copy is a deletion candidate: $r24 = COPY $r18
MCP: Copy is used - not dead: $r24 = COPY $r18
MCP: Copy is a deletion candidate: $r22 = COPY killed $r18
MCP: Copy is used - not dead: $r22 = COPY killed $r18
MCP: CopyPropagateBlock
MCP: CopyPropagateBlock
# *** IR Dump After Machine Copy Propagation Pass ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r22, $r24
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.7, implicit killed $sreg
RJMPk %bb.1
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.10, implicit killed $sreg
RJMPk %bb.2
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.3, implicit killed $sreg
RJMPk %bb.6
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.4, implicit killed $sreg
RJMPk %bb.5
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r23r22 = ZEXT $r17, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r19r18 = LDIWRdK 100
$r25r24 = LDIWRdK 0
$r21r20 = COPY $r25r24
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r25r24 = LDIWRdK 34
$r22 = COPY killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.10
bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = COPY killed $r24
RJMPk %bb.4
bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = COPY $r22
RJMPk %bb.3
bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.8, implicit killed $sreg
RJMPk %bb.9
bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r18
$r24 = COPY $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r25r24 = LDIWRdK 35
$r22 = COPY killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
$r18 = LDIRdK 0
RJMPk %bb.8
bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
******** Post-regalloc Machine LICM: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_ ********
# *** IR Dump After Machine Loop Invariant Code Motion ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r22, $r24
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.7, implicit killed $sreg
RJMPk %bb.1
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.10, implicit killed $sreg
RJMPk %bb.2
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.3, implicit killed $sreg
RJMPk %bb.6
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.4, implicit killed $sreg
RJMPk %bb.5
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r23r22 = ZEXT $r17, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r19r18 = LDIWRdK 100
$r25r24 = LDIWRdK 0
$r21r20 = COPY $r25r24
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r25r24 = LDIWRdK 34
$r22 = COPY killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.10
bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = COPY killed $r24
RJMPk %bb.4
bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = COPY $r22
RJMPk %bb.3
bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.8, implicit killed $sreg
RJMPk %bb.9
bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r18
$r24 = COPY $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r25r24 = LDIWRdK 35
$r22 = COPY killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
$r18 = LDIRdK 0
RJMPk %bb.8
bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After PostRA Machine Sink ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r22, $r24
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.7, implicit killed $sreg
RJMPk %bb.1
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.10, implicit killed $sreg
RJMPk %bb.2
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.3, implicit killed $sreg
RJMPk %bb.6
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.4, implicit killed $sreg
RJMPk %bb.5
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r23r22 = ZEXT $r17, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r19r18 = LDIWRdK 100
$r25r24 = LDIWRdK 0
$r21r20 = COPY $r25r24
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r25r24 = LDIWRdK 34
$r22 = COPY killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.10
bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = COPY killed $r24
RJMPk %bb.4
bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = COPY $r22
RJMPk %bb.3
bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.8, implicit killed $sreg
RJMPk %bb.9
bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r18
$r24 = COPY $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r25r24 = LDIWRdK 35
$r22 = COPY killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
$r18 = LDIRdK 0
RJMPk %bb.8
bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
block-frequency: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
==================================================================
reverse-post-order-traversal
- 0: BB0[entry]
- 1: BB1[entry]
- 2: BB2[]
- 3: BB6[]
- 4: BB3[]
- 5: BB5[]
- 6: BB4[]
- 7: BB7[]
- 8: BB9[]
- 9: BB8[]
- 10: BB10[]
loop-detection
compute-mass-in-function
- node: BB0[entry]
=> [ local ] weight = 715827883, succ = BB7[]
=> [ local ] weight = 1431655765, succ = BB1[entry]
=> mass: ffffffffffffffff
=> assign aaaaaaa9ffffffff (5555555600000000) to BB1[entry]
=> assign 5555555600000000 (0000000000000000) to BB7[]
- node: BB1[entry]
=> [ local ] weight = 1073741825, succ = BB2[]
=> [ local ] weight = 1073741823, succ = BB10[]
=> mass: aaaaaaa9ffffffff
=> assign 5555555655555553 (55555553aaaaaaac) to BB2[]
=> assign 55555553aaaaaaac (0000000000000000) to BB10[]
- node: BB2[]
=> [ local ] weight = 1073741824, succ = BB6[]
=> [ local ] weight = 1073741824, succ = BB3[]
=> mass: 5555555655555553
=> assign 2aaaaaab2aaaaaa9 (2aaaaaab2aaaaaaa) to BB6[]
=> assign 2aaaaaab2aaaaaaa (0000000000000000) to BB3[]
- node: BB6[]
=> [ local ] weight = 2147483648, succ = BB3[]
=> mass: 2aaaaaab2aaaaaa9
=> assign 2aaaaaab2aaaaaa9 (0000000000000000) to BB3[]
- node: BB3[]
=> [ local ] weight = 1073741824, succ = BB5[]
=> [ local ] weight = 1073741824, succ = BB4[]
=> mass: 5555555655555553
=> assign 2aaaaaab2aaaaaa9 (2aaaaaab2aaaaaaa) to BB5[]
=> assign 2aaaaaab2aaaaaaa (0000000000000000) to BB4[]
- node: BB5[]
=> [ local ] weight = 2147483648, succ = BB4[]
=> mass: 2aaaaaab2aaaaaa9
=> assign 2aaaaaab2aaaaaa9 (0000000000000000) to BB4[]
- node: BB4[]
=> [ local ] weight = 2147483648, succ = BB10[]
=> mass: 5555555655555553
=> assign 5555555655555553 (0000000000000000) to BB10[]
- node: BB7[]
=> [ local ] weight = 1073741824, succ = BB9[]
=> [ local ] weight = 1073741824, succ = BB8[]
=> mass: 5555555600000000
=> assign 2aaaaaab00000000 (2aaaaaab00000000) to BB9[]
=> assign 2aaaaaab00000000 (0000000000000000) to BB8[]
- node: BB9[]
=> [ local ] weight = 2147483648, succ = BB8[]
=> mass: 2aaaaaab00000000
=> assign 2aaaaaab00000000 (0000000000000000) to BB8[]
- node: BB8[]
=> [ local ] weight = 2147483648, succ = BB10[]
=> mass: 5555555600000000
=> assign 5555555600000000 (0000000000000000) to BB10[]
- node: BB10[]
=> mass: ffffffffffffffff
float-to-int: min = 0.1666666667, max = 1.0, factor = 47.99999998
- BB0[entry]: float = 1.0, scaled = 47.99999998, int = 47
- BB1[entry]: float = 0.6666666665, scaled = 31.99999998, int = 31
- BB2[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB6[]: float = 0.1666666668, scaled = 8.000000002, int = 8
- BB3[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB5[]: float = 0.1666666668, scaled = 8.000000002, int = 8
- BB4[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB7[]: float = 0.3333333335, scaled = 16.0, int = 15
- BB9[]: float = 0.1666666667, scaled = 8.0, int = 8
- BB8[]: float = 0.3333333335, scaled = 16.0, int = 15
- BB10[]: float = 1.0, scaled = 47.99999998, int = 47
block-frequency-info: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
- BB0[entry]: float = 1.0, int = 47
- BB1[entry]: float = 0.66667, int = 31
- BB2[]: float = 0.33333, int = 16
- BB3[]: float = 0.33333, int = 16
- BB4[]: float = 0.33333, int = 16
- BB5[]: float = 0.16667, int = 8
- BB6[]: float = 0.16667, int = 8
- BB7[]: float = 0.33333, int = 15
- BB8[]: float = 0.33333, int = 15
- BB9[]: float = 0.16667, int = 8
- BB10[]: float = 1.0, int = 47
Looking for trivial roots
Found a new trivial root: %bb.10
Last visited node: %bb.1
Looking for non-trivial roots
Total: 11, Num: 12
Discovered CFG nodes:
0: nullptr
1: nullptr
2: %bb.10
3: %bb.8
4: %bb.9
5: %bb.7
6: %bb.0
7: %bb.4
8: %bb.5
9: %bb.3
10: %bb.6
11: %bb.2
12: %bb.1
Found roots: %bb.10
discovered a new reachable node nullptr
discovered a new reachable node %bb.10
discovered a new reachable node %bb.8
discovered a new reachable node %bb.9
discovered a new reachable node %bb.7
discovered a new reachable node %bb.0
discovered a new reachable node %bb.4
discovered a new reachable node %bb.5
discovered a new reachable node %bb.3
discovered a new reachable node %bb.6
discovered a new reachable node %bb.2
discovered a new reachable node %bb.1
# *** IR Dump After Shrink Wrapping analysis ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r22, $r24
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.7, implicit killed $sreg
RJMPk %bb.1
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.10, implicit killed $sreg
RJMPk %bb.2
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.3, implicit killed $sreg
RJMPk %bb.6
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.4, implicit killed $sreg
RJMPk %bb.5
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r23r22 = ZEXT $r17, implicit-def dead $sreg
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r19r18 = LDIWRdK 100
$r25r24 = LDIWRdK 0
$r21r20 = COPY $r25r24
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r25r24 = LDIWRdK 34
$r22 = COPY killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
RJMPk %bb.10
bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = COPY killed $r24
RJMPk %bb.4
bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = COPY $r22
RJMPk %bb.3
bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.8, implicit killed $sreg
RJMPk %bb.9
bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r18
$r24 = COPY $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
$r25r24 = LDIWRdK 35
$r22 = COPY killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit-def dead $sreg, implicit $sp
bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
$r18 = LDIRdK 0
RJMPk %bb.8
bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
alloc FI(0) at SP[-3]
# *** IR Dump After Prologue/Epilogue Insertion & Frame Finalization ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.7(0x2aaaaaab), %bb.1(0x55555555); %bb.7(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.7, implicit killed $sreg
RJMPk %bb.1
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.10(0x3fffffff); %bb.2(50.00%), %bb.10(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.10, implicit killed $sreg
RJMPk %bb.2
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.6(0x40000000), %bb.3(0x40000000); %bb.6(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.3, implicit killed $sreg
RJMPk %bb.6
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.6
successors: %bb.5(0x40000000), %bb.4(0x40000000); %bb.5(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.4, implicit killed $sreg
RJMPk %bb.5
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.5
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r23r22 = ZEXT $r17, implicit-def dead $sreg
$r19r18 = LDIWRdK 100
$r25r24 = LDIWRdK 0
$r21r20 = COPY $r25r24
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r25r24 = LDIWRdK 34
$r22 = COPY killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
RJMPk %bb.10
bb.5 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = COPY killed $r24
RJMPk %bb.4
bb.6 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = COPY $r22
RJMPk %bb.3
bb.7 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.8(0x40000000); %bb.9(200.00%), %bb.8(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.8, implicit killed $sreg
RJMPk %bb.9
bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
successors: %bb.10(0x80000000); %bb.10(100.00%)
liveins: $r18
$r24 = COPY $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r25r24 = LDIWRdK 35
$r22 = COPY killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
$r18 = LDIRdK 0
RJMPk %bb.8
bb.10 (%ir-block.9):
; predecessors: %bb.1, %bb.4, %bb.8
$r17 = POPRd implicit-def $sp, implicit $sp
RET
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
*** LOOKS GOOD TO HERE ***
*** PROBLEMS START HERE? ***
vvv
TryTailMergeBlocks: %bb.8, %bb.10
Looking for common tails of at least 3 instructions
TryTailMergeBlocks: %bb.2, %bb.6
with successor %bb.3
which has fall-through from %bb.2
Looking for common tails of at least 3 instructions
TryTailMergeBlocks: %bb.3, %bb.5
with successor %bb.4
which has fall-through from %bb.3
Looking for common tails of at least 3 instructions
TryTailMergeBlocks: %bb.7, %bb.9
with successor %bb.8
which has fall-through from %bb.7
Looking for common tails of at least 3 instructions
TryTailMergeBlocks: %bb.1, %bb.4
with successor %bb.10
which has fall-through from %bb.9
Looking for common tails of at least 3 instructions
Moving MBB: bb.8 (%ir-block.8):
; predecessors: %bb.7, %bb.9
liveins: $r18
$r24 = COPY $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r25r24 = LDIWRdK 35
$r22 = COPY killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
To make fallthrough to: bb.9 (%ir-block.8):
; predecessors: %bb.7
successors: %bb.8(0x80000000); %bb.8(200.00%)
$r18 = LDIRdK 0
RJMPk %bb.8
TryTailMergeBlocks: %bb.10, %bb.8
Looking for common tails of at least 3 instructions
TryTailMergeBlocks: %bb.2, %bb.6
with successor %bb.3
which has fall-through from %bb.2
Looking for common tails of at least 3 instructions
TryTailMergeBlocks: %bb.3, %bb.5
with successor %bb.4
which has fall-through from %bb.3
Looking for common tails of at least 3 instructions
TryTailMergeBlocks: %bb.1, %bb.4
with successor %bb.10
which has fall-through from %bb.4
Looking for common tails of at least 3 instructions
TryTailMergeBlocks: %bb.7, %bb.9
with successor %bb.8
which has fall-through from %bb.9
Looking for common tails of at least 3 instructions
# *** IR Dump After Control Flow Optimizer ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.8, implicit killed $sreg
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.5(0x3fffffff); %bb.2(50.00%), %bb.5(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.5, implicit $sreg
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.7(0x40000000), %bb.3(0x40000000); %bb.7(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.7
successors: %bb.6(0x40000000), %bb.4(0x40000000); %bb.6(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRLOk %bb.6, implicit $sreg
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.6
successors: %bb.5(0x80000000); %bb.5(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r23r22 = ZEXT $r17, implicit-def dead $sreg
$r19r18 = LDIWRdK 100
$r25r24 = LDIWRdK 0
$r21r20 = COPY $r25r24
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r25r24 = LDIWRdK 34
$r22 = COPY killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.5 (%ir-block.9):
; predecessors: %bb.1, %bb.4
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.6 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = COPY killed $r24
RJMPk %bb.4
bb.7 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = COPY $r22
RJMPk %bb.3
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = COPY $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r25r24 = LDIWRdK 35
$r22 = COPY killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
*** MACHINE CODE IS BROKEN NOW !!! ****
*** Tail-duplicating %bb.5
*** Tail-duplicating %bb.6
*** Tail-duplicating %bb.7
# *** IR Dump After Tail Duplication ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.8, implicit killed $sreg
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.5(0x3fffffff); %bb.2(50.00%), %bb.5(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.5, implicit $sreg
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.7(0x40000000), %bb.3(0x40000000); %bb.7(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.7
successors: %bb.6(0x40000000), %bb.4(0x40000000); %bb.6(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRLOk %bb.6, implicit $sreg
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.6
successors: %bb.5(0x80000000); %bb.5(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r23r22 = ZEXT $r17, implicit-def dead $sreg
$r19r18 = LDIWRdK 100
$r25r24 = LDIWRdK 0
$r21r20 = COPY $r25r24
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r25r24 = LDIWRdK 34
$r22 = COPY killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.5 (%ir-block.9):
; predecessors: %bb.1, %bb.4
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.6 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = COPY killed $r24
RJMPk %bb.4
bb.7 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = COPY $r22
RJMPk %bb.3
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = COPY $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r25r24 = LDIWRdK 35
$r22 = COPY killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
MCP: CopyPropagateBlock entry
MCP: CopyPropagateBlock entry
MCP: CopyPropagateBlock
MCP: CopyPropagateBlock
MCP: CopyPropagateBlock
MCP: Copy is a deletion candidate: $r21r20 = COPY $r25r24
MCP: Copy is used - not dead: $r21r20 = COPY $r25r24
MCP: Copy is used - not dead: $r21r20 = COPY $r25r24
MCP: Copy is used - not dead: $r21r20 = COPY $r25r24
MCP: Copy is used - not dead: $r21r20 = COPY $r25r24
MCP: Copy is a deletion candidate: $r22 = COPY killed $r17
MCP: Copy is used - not dead: $r22 = COPY killed $r17
MCP: CopyPropagateBlock
MCP: CopyPropagateBlock
MCP: Copy is a deletion candidate: $r17 = COPY killed $r24
MCP: CopyPropagateBlock
MCP: Copy is a deletion candidate: $r24 = COPY $r22
MCP: CopyPropagateBlock
MCP: CopyPropagateBlock
MCP: CopyPropagateBlock
MCP: Copy is a deletion candidate: $r24 = COPY $r18
MCP: Copy is used - not dead: $r24 = COPY $r18
MCP: Copy is a deletion candidate: $r22 = COPY killed $r18
MCP: Copy is used - not dead: $r22 = COPY killed $r18
# *** IR Dump After Machine Copy Propagation Pass ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.8, implicit killed $sreg
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.5(0x3fffffff); %bb.2(50.00%), %bb.5(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.5, implicit $sreg
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.7(0x40000000), %bb.3(0x40000000); %bb.7(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.7
successors: %bb.6(0x40000000), %bb.4(0x40000000); %bb.6(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRLOk %bb.6, implicit $sreg
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.6
successors: %bb.5(0x80000000); %bb.5(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r23r22 = ZEXT $r17, implicit-def dead $sreg
$r19r18 = LDIWRdK 100
$r25r24 = LDIWRdK 0
$r21r20 = COPY $r25r24
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r25r24 = LDIWRdK 34
$r22 = COPY killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.5 (%ir-block.9):
; predecessors: %bb.1, %bb.4
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.6 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = COPY killed $r24
RJMPk %bb.4
bb.7 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = COPY $r22
RJMPk %bb.3
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = COPY $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r25r24 = LDIWRdK 35
$r22 = COPY killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
Machine Function
********** EXPANDING POST-RA PSEUDO INSTRS **********
********** Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
real copy: $r21r20 = COPY $r25r24
replaced by: $r21 = MOVRdRr $r25
real copy: $r22 = COPY killed $r17
replaced by: $r22 = MOVRdRr killed $r17
real copy: $r17 = COPY killed $r24
replaced by: $r17 = MOVRdRr killed $r24
real copy: $r24 = COPY $r22
replaced by: $r24 = MOVRdRr $r22
real copy: $r24 = COPY $r18
replaced by: $r24 = MOVRdRr $r18
real copy: $r22 = COPY killed $r18
replaced by: $r22 = MOVRdRr killed $r18
# *** IR Dump After Post-RA pseudo instruction expansion pass ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.8, implicit killed $sreg
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.5(0x3fffffff); %bb.2(50.00%), %bb.5(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.5, implicit $sreg
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.7(0x40000000), %bb.3(0x40000000); %bb.7(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.7
successors: %bb.6(0x40000000), %bb.4(0x40000000); %bb.6(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRLOk %bb.6, implicit $sreg
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.6
successors: %bb.5(0x80000000); %bb.5(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r23r22 = ZEXT $r17, implicit-def dead $sreg
$r19r18 = LDIWRdK 100
$r25r24 = LDIWRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r25r24 = LDIWRdK 34
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.5 (%ir-block.9):
; predecessors: %bb.1, %bb.4
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.6 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
RJMPk %bb.4
bb.7 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
RJMPk %bb.3
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r25r24 = LDIWRdK 35
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After AVR memory operation relaxation pass ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.8, implicit killed $sreg
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.5(0x3fffffff); %bb.2(50.00%), %bb.5(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.5, implicit $sreg
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.7(0x40000000), %bb.3(0x40000000); %bb.7(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.7
successors: %bb.6(0x40000000), %bb.4(0x40000000); %bb.6(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRLOk %bb.6, implicit $sreg
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.6
successors: %bb.5(0x80000000); %bb.5(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r23r22 = ZEXT $r17, implicit-def dead $sreg
$r19r18 = LDIWRdK 100
$r25r24 = LDIWRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSWKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r25r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSWKRr @_Tv4main7delayUsVs6UInt32, killed $r23r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r25r24 = LDIWRdK 34
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.5 (%ir-block.9):
; predecessors: %bb.1, %bb.4
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.6 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
RJMPk %bb.4
bb.7 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
RJMPk %bb.3
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r25r24 = LDIWRdK 35
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After AVR pseudo instruction expansion pass ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.8, implicit killed $sreg
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.5(0x3fffffff); %bb.2(50.00%), %bb.5(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.5, implicit $sreg
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.7(0x40000000), %bb.3(0x40000000); %bb.7(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.7
successors: %bb.6(0x40000000), %bb.4(0x40000000); %bb.6(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRLOk %bb.6, implicit $sreg
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.6
successors: %bb.5(0x80000000); %bb.5(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r22 = MOVRdRr $r17
$r23 = EORRdRr killed $r23, killed $r23, implicit-def dead $sreg
$r18 = LDIRdK 100
$r19 = LDIRdK 0
$r24 = LDIRdK 0
$r25 = LDIRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSKRr @_Tv4main7delayUsVs6UInt32 + 3, killed $r25 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 1, killed $r23 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
STSKRr @_Tv4main7delayUsVs6UInt32, killed $r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r24 = LDIRdK 34
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.5 (%ir-block.9):
; predecessors: %bb.1, %bb.4
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.6 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
RJMPk %bb.4
bb.7 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
RJMPk %bb.3
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r24 = LDIRdK 35
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
discovered a new reachable node %bb.0
discovered a new reachable node %bb.8
discovered a new reachable node %bb.9
discovered a new reachable node %bb.10
discovered a new reachable node %bb.1
discovered a new reachable node %bb.2
discovered a new reachable node %bb.7
discovered a new reachable node %bb.3
discovered a new reachable node %bb.6
discovered a new reachable node %bb.4
discovered a new reachable node %bb.5
# *** IR Dump After Post RA top-down list latency scheduler ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.8, implicit killed $sreg
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.5(0x3fffffff); %bb.2(50.00%), %bb.5(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.5, implicit $sreg
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.7(0x40000000), %bb.3(0x40000000); %bb.7(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.7
successors: %bb.6(0x40000000), %bb.4(0x40000000); %bb.6(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRLOk %bb.6, implicit $sreg
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.6
successors: %bb.5(0x80000000); %bb.5(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r22 = MOVRdRr $r17
$r23 = EORRdRr killed $r23, killed $r23, implicit-def dead $sreg
$r18 = LDIRdK 100
$r19 = LDIRdK 0
$r24 = LDIRdK 0
$r25 = LDIRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSKRr @_Tv4main7delayUsVs6UInt32 + 3, killed $r25 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 1, killed $r23 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
STSKRr @_Tv4main7delayUsVs6UInt32, killed $r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r24 = LDIRdK 34
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.5 (%ir-block.9):
; predecessors: %bb.1, %bb.4
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.6 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
RJMPk %bb.4
bb.7 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
RJMPk %bb.3
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r24 = LDIRdK 35
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Analyze Machine Code For Garbage Collection ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.8, implicit killed $sreg
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.5(0x3fffffff); %bb.2(50.00%), %bb.5(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.5, implicit $sreg
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.7(0x40000000), %bb.3(0x40000000); %bb.7(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRSHk %bb.7, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.7
successors: %bb.6(0x40000000), %bb.4(0x40000000); %bb.6(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRLOk %bb.6, implicit $sreg
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.6
successors: %bb.5(0x80000000); %bb.5(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r22 = MOVRdRr $r17
$r23 = EORRdRr killed $r23, killed $r23, implicit-def dead $sreg
$r18 = LDIRdK 100
$r19 = LDIRdK 0
$r24 = LDIRdK 0
$r25 = LDIRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSKRr @_Tv4main7delayUsVs6UInt32 + 3, killed $r25 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 1, killed $r23 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
STSKRr @_Tv4main7delayUsVs6UInt32, killed $r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r24 = LDIRdK 34
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.5 (%ir-block.9):
; predecessors: %bb.1, %bb.4
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.6 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
RJMPk %bb.4
bb.7 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
RJMPk %bb.3
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r24 = LDIRdK 35
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
block-frequency: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
==================================================================
reverse-post-order-traversal
- 0: BB0[entry]
- 1: BB1[entry]
- 2: BB2[]
- 3: BB7[]
- 4: BB3[]
- 5: BB6[]
- 6: BB4[]
- 7: BB5[]
- 8: BB8[]
- 9: BB9[]
- 10: BB10[]
loop-detection
compute-mass-in-function
- node: BB0[entry]
=> [ local ] weight = 715827883, succ = BB8[]
=> [ local ] weight = 1431655765, succ = BB1[entry]
=> mass: ffffffffffffffff
=> assign aaaaaaa9ffffffff (5555555600000000) to BB1[entry]
=> assign 5555555600000000 (0000000000000000) to BB8[]
- node: BB1[entry]
=> [ local ] weight = 1073741825, succ = BB2[]
=> [ local ] weight = 1073741823, succ = BB5[]
=> mass: aaaaaaa9ffffffff
=> assign 5555555655555553 (55555553aaaaaaac) to BB2[]
=> assign 55555553aaaaaaac (0000000000000000) to BB5[]
- node: BB2[]
=> [ local ] weight = 1073741824, succ = BB7[]
=> [ local ] weight = 1073741824, succ = BB3[]
=> mass: 5555555655555553
=> assign 2aaaaaab2aaaaaa9 (2aaaaaab2aaaaaaa) to BB7[]
=> assign 2aaaaaab2aaaaaaa (0000000000000000) to BB3[]
- node: BB7[]
=> [ local ] weight = 2147483648, succ = BB3[]
=> mass: 2aaaaaab2aaaaaa9
=> assign 2aaaaaab2aaaaaa9 (0000000000000000) to BB3[]
- node: BB3[]
=> [ local ] weight = 1073741824, succ = BB6[]
=> [ local ] weight = 1073741824, succ = BB4[]
=> mass: 5555555655555553
=> assign 2aaaaaab2aaaaaa9 (2aaaaaab2aaaaaaa) to BB6[]
=> assign 2aaaaaab2aaaaaaa (0000000000000000) to BB4[]
- node: BB6[]
=> [ local ] weight = 2147483648, succ = BB4[]
=> mass: 2aaaaaab2aaaaaa9
=> assign 2aaaaaab2aaaaaa9 (0000000000000000) to BB4[]
- node: BB4[]
=> [ local ] weight = 2147483648, succ = BB5[]
=> mass: 5555555655555553
=> assign 5555555655555553 (0000000000000000) to BB5[]
- node: BB5[]
=> mass: aaaaaaa9ffffffff
- node: BB8[]
=> [ local ] weight = 1073741824, succ = BB9[]
=> [ local ] weight = 1073741824, succ = BB10[]
=> mass: 5555555600000000
=> assign 2aaaaaab00000000 (2aaaaaab00000000) to BB9[]
=> assign 2aaaaaab00000000 (0000000000000000) to BB10[]
- node: BB9[]
=> [ local ] weight = 2147483648, succ = BB10[]
=> mass: 2aaaaaab00000000
=> assign 2aaaaaab00000000 (0000000000000000) to BB10[]
- node: BB10[]
=> mass: 5555555600000000
float-to-int: min = 0.1666666667, max = 1.0, factor = 47.99999998
- BB0[entry]: float = 1.0, scaled = 47.99999998, int = 47
- BB1[entry]: float = 0.6666666665, scaled = 31.99999998, int = 31
- BB2[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB7[]: float = 0.1666666668, scaled = 8.000000002, int = 8
- BB3[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB6[]: float = 0.1666666668, scaled = 8.000000002, int = 8
- BB4[]: float = 0.3333333336, scaled = 16.0, int = 16
- BB5[]: float = 0.6666666665, scaled = 31.99999998, int = 31
- BB8[]: float = 0.3333333335, scaled = 16.0, int = 15
- BB9[]: float = 0.1666666667, scaled = 8.0, int = 8
- BB10[]: float = 0.3333333335, scaled = 16.0, int = 15
block-frequency-info: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
- BB0[entry]: float = 1.0, int = 47
- BB1[entry]: float = 0.66667, int = 31
- BB2[]: float = 0.33333, int = 16
- BB3[]: float = 0.33333, int = 16
- BB4[]: float = 0.33333, int = 16
- BB5[]: float = 0.66667, int = 31
- BB6[]: float = 0.16667, int = 8
- BB7[]: float = 0.16667, int = 8
- BB8[]: float = 0.33333, int = 15
- BB9[]: float = 0.16667, int = 8
- BB10[]: float = 0.33333, int = 15
Looking for trivial roots
Found a new trivial root: %bb.5
Last visited node: %bb.0
Found a new trivial root: %bb.10
Last visited node: %bb.8
Looking for non-trivial roots
Total: 11, Num: 12
Discovered CFG nodes:
0: nullptr
1: nullptr
2: %bb.5
3: %bb.4
4: %bb.6
5: %bb.3
6: %bb.7
7: %bb.2
8: %bb.1
9: %bb.0
10: %bb.10
11: %bb.9
12: %bb.8
Found roots: %bb.5 %bb.10
discovered a new reachable node nullptr
discovered a new reachable node %bb.5
discovered a new reachable node %bb.4
discovered a new reachable node %bb.6
discovered a new reachable node %bb.3
discovered a new reachable node %bb.7
discovered a new reachable node %bb.2
discovered a new reachable node %bb.1
discovered a new reachable node %bb.0
discovered a new reachable node %bb.10
discovered a new reachable node %bb.9
discovered a new reachable node %bb.8
Pre-computing triangle chains.
Selecting best successor for: %bb.0 ('entry')
Candidate: %bb.8 (''), probability: 0x2aaaaaab / 0x80000000 = 33.33%
Setting it as best candidate
Candidate: %bb.1 ('entry'), probability: 0x55555555 / 0x80000000 = 66.67%
Setting it as best candidate
Selected: %bb.1 ('entry')
Redoing tail duplication for Succ#1
*** Tail-duplicating %bb.1
Merging from %bb.0 ('entry') to %bb.1 ('entry')
Selecting best successor for: %bb.1 ('entry')
Candidate: %bb.2 (''), probability: 0x40000001 / 0x80000000 = 50.00%
Setting it as best candidate
Not a candidate: %bb.5 ('') -> 0x3fffffff / 0x80000000 = 50.00% (prob) (non-cold CFG conflict)
Selected: %bb.2 ('')
Merging from %bb.1 ('entry') to %bb.2 ('')
Selecting best successor for: %bb.2 ('')
Candidate: %bb.7 (''), probability: 0x40000000 / 0x80000000 = 50.00%
Setting it as best candidate
Not a candidate: %bb.3 ('') -> 0x40000000 / 0x80000000 = 50.00% (prob) (non-cold CFG conflict)
Selected: %bb.7 ('')
Merging from %bb.2 ('') to %bb.7 ('')
Selecting best successor for: %bb.7 ('')
Candidate: %bb.3 (''), probability: 0x80000000 / 0x80000000 = 100.00%
Setting it as best candidate
Selected: %bb.3 ('')
Merging from %bb.7 ('') to %bb.3 ('')
Selecting best successor for: %bb.3 ('')
Candidate: %bb.6 (''), probability: 0x40000000 / 0x80000000 = 50.00%
Setting it as best candidate
Not a candidate: %bb.4 ('') -> 0x40000000 / 0x80000000 = 50.00% (prob) (non-cold CFG conflict)
Selected: %bb.6 ('')
Merging from %bb.3 ('') to %bb.6 ('')
Selecting best successor for: %bb.6 ('')
Candidate: %bb.4 (''), probability: 0x80000000 / 0x80000000 = 100.00%
Setting it as best candidate
Selected: %bb.4 ('')
Merging from %bb.6 ('') to %bb.4 ('')
Selecting best successor for: %bb.4 ('')
Candidate: %bb.5 (''), probability: 0x80000000 / 0x80000000 = 100.00%
Setting it as best candidate
Selected: %bb.5 ('')
Redoing tail duplication for Succ#5
*** Tail-duplicating %bb.5
Merging from %bb.4 ('') to %bb.5 ('')
Selecting best successor for: %bb.5 ('')
%bb.8 ('') -> 0.3191489362 (freq)
Merging from %bb.5 ('') to %bb.8 ('')
Selecting best successor for: %bb.8 ('')
Candidate: %bb.9 (''), probability: 0x40000000 / 0x80000000 = 50.00%
Setting it as best candidate
Not a candidate: %bb.10 ('') -> 0x40000000 / 0x80000000 = 50.00% (prob) (non-cold CFG conflict)
Selected: %bb.9 ('')
Merging from %bb.8 ('') to %bb.9 ('')
Selecting best successor for: %bb.9 ('')
Candidate: %bb.10 (''), probability: 0x80000000 / 0x80000000 = 100.00%
Setting it as best candidate
Selected: %bb.10 ('')
Merging from %bb.9 ('') to %bb.10 ('')
Selecting best successor for: %bb.10 ('')
Finished forming chain for header block %bb.0 ('entry')
[MBP] Function: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
Placing chain %bb.0 ('entry')
... %bb.1 ('entry')
... %bb.2 ('')
... %bb.7 ('')
... %bb.3 ('')
... %bb.6 ('')
... %bb.4 ('')
... %bb.5 ('')
... %bb.8 ('')
... %bb.9 ('')
... %bb.10 ('')
TryTailMergeBlocks: %bb.2, %bb.7
with successor %bb.3
which has fall-through from %bb.7
Looking for common tails of at least 3 instructions
TryTailMergeBlocks: %bb.3, %bb.6
with successor %bb.4
which has fall-through from %bb.6
Looking for common tails of at least 3 instructions
TryTailMergeBlocks: %bb.1, %bb.4
with successor %bb.5
which has fall-through from %bb.4
Looking for common tails of at least 3 instructions
TryTailMergeBlocks: %bb.8, %bb.9
with successor %bb.10
which has fall-through from %bb.9
Looking for common tails of at least 3 instructions
# *** IR Dump After Branch Probability Basic Block Placement ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BREQk %bb.8, implicit killed $sreg
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.5(0x3fffffff); %bb.2(50.00%), %bb.5(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BRNEk %bb.5, implicit $sreg
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.7(0x40000000), %bb.3(0x40000000); %bb.7(200.00%), %bb.3(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.3, implicit $sreg
bb.7 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.3(0x80000000); %bb.3(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
bb.3 (%ir-block.2):
; predecessors: %bb.2, %bb.7
successors: %bb.6(0x40000000), %bb.4(0x40000000); %bb.6(200.00%), %bb.4(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.4, implicit $sreg
bb.6 (%ir-block.2):
; predecessors: %bb.3
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
bb.4 (%ir-block.2):
; predecessors: %bb.3, %bb.6
successors: %bb.5(0x80000000); %bb.5(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r22 = MOVRdRr $r17
$r23 = EORRdRr killed $r23, killed $r23, implicit-def dead $sreg
$r18 = LDIRdK 100
$r19 = LDIRdK 0
$r24 = LDIRdK 0
$r25 = LDIRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSKRr @_Tv4main7delayUsVs6UInt32 + 3, killed $r25 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 1, killed $r23 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
STSKRr @_Tv4main7delayUsVs6UInt32, killed $r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r24 = LDIRdK 34
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.5 (%ir-block.9):
; predecessors: %bb.1, %bb.4
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r24 = LDIRdK 35
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
***** BranchRelaxation *****
Basic blocks before relaxation
bb.0 offset=00000000 size=0x6
bb.1 offset=00000006 size=0x4
bb.2 offset=0000000a size=0x6
bb.3 offset=00000010 size=0x2
bb.4 offset=00000012 size=0x6
bb.5 offset=00000018 size=0x2
bb.6 offset=0000001a size=0x32
bb.7 offset=0000004c size=0x4
bb.8 offset=00000050 size=0x6
bb.9 offset=00000056 size=0x2
bb.10 offset=00000058 size=0x12
Out of range branch to destination %bb.8 from %bb.0 to 80 offset 76 BREQk %bb.8, implicit killed $sreg
Insert B to %bb.8, invert condition and change dest. to %bb.1
Out of range branch to destination %bb.7 from %bb.1 to 78 offset 68 BRNEk %bb.7, implicit $sreg
Insert B to %bb.7, invert condition and change dest. to %bb.2
Basic blocks after relaxation
bb.0 offset=00000000 size=0x8
bb.1 offset=0000000e size=0x6
bb.2 offset=00000014 size=0x6
bb.3 offset=0000001a size=0x2
bb.4 offset=0000001c size=0x6
bb.5 offset=00000022 size=0x2
bb.6 offset=00000024 size=0x32
bb.7 offset=00000056 size=0x4
bb.8 offset=0000005a size=0x6
bb.9 offset=00000060 size=0x2
bb.10 offset=00000062 size=0x12
# *** IR Dump After Branch relaxation pass ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BRNEk %bb.1, implicit $sreg
RJMPk %bb.8
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.7(0x3fffffff); %bb.2(50.00%), %bb.7(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.7
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.3(0x40000000), %bb.4(0x40000000); %bb.3(200.00%), %bb.4(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.4, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
bb.4 (%ir-block.2):
; predecessors: %bb.2, %bb.3
successors: %bb.5(0x40000000), %bb.6(0x40000000); %bb.5(200.00%), %bb.6(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.6, implicit $sreg
bb.5 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x80000000); %bb.6(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
bb.6 (%ir-block.2):
; predecessors: %bb.4, %bb.5
successors: %bb.7(0x80000000); %bb.7(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r22 = MOVRdRr $r17
$r23 = EORRdRr killed $r23, killed $r23, implicit-def dead $sreg
$r18 = LDIRdK 100
$r19 = LDIRdK 0
$r24 = LDIRdK 0
$r25 = LDIRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSKRr @_Tv4main7delayUsVs6UInt32 + 3, killed $r25 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 1, killed $r23 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
STSKRr @_Tv4main7delayUsVs6UInt32, killed $r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r24 = LDIRdK 34
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.7 (%ir-block.9):
; predecessors: %bb.1, %bb.6
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r24 = LDIRdK 35
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Contiguously Lay Out Funclets ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BRNEk %bb.1, implicit $sreg
RJMPk %bb.8
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.7(0x3fffffff); %bb.2(50.00%), %bb.7(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.7
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.3(0x40000000), %bb.4(0x40000000); %bb.3(200.00%), %bb.4(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.4, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
bb.4 (%ir-block.2):
; predecessors: %bb.2, %bb.3
successors: %bb.5(0x40000000), %bb.6(0x40000000); %bb.5(200.00%), %bb.6(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.6, implicit $sreg
bb.5 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x80000000); %bb.6(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
bb.6 (%ir-block.2):
; predecessors: %bb.4, %bb.5
successors: %bb.7(0x80000000); %bb.7(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r22 = MOVRdRr $r17
$r23 = EORRdRr killed $r23, killed $r23, implicit-def dead $sreg
$r18 = LDIRdK 100
$r19 = LDIRdK 0
$r24 = LDIRdK 0
$r25 = LDIRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSKRr @_Tv4main7delayUsVs6UInt32 + 3, killed $r25 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 1, killed $r23 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
STSKRr @_Tv4main7delayUsVs6UInt32, killed $r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r24 = LDIRdK 34
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.7 (%ir-block.9):
; predecessors: %bb.1, %bb.6
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r24 = LDIRdK 35
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
********** COMPUTING STACKMAP LIVENESS: _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_ **********
# *** IR Dump After StackMap Liveness Analysis ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BRNEk %bb.1, implicit $sreg
RJMPk %bb.8
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.7(0x3fffffff); %bb.2(50.00%), %bb.7(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.7
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.3(0x40000000), %bb.4(0x40000000); %bb.3(200.00%), %bb.4(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.4, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
bb.4 (%ir-block.2):
; predecessors: %bb.2, %bb.3
successors: %bb.5(0x40000000), %bb.6(0x40000000); %bb.5(200.00%), %bb.6(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.6, implicit $sreg
bb.5 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x80000000); %bb.6(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
bb.6 (%ir-block.2):
; predecessors: %bb.4, %bb.5
successors: %bb.7(0x80000000); %bb.7(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r22 = MOVRdRr $r17
$r23 = EORRdRr killed $r23, killed $r23, implicit-def dead $sreg
$r18 = LDIRdK 100
$r19 = LDIRdK 0
$r24 = LDIRdK 0
$r25 = LDIRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSKRr @_Tv4main7delayUsVs6UInt32 + 3, killed $r25 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 1, killed $r23 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
STSKRr @_Tv4main7delayUsVs6UInt32, killed $r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r24 = LDIRdK 34
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.7 (%ir-block.9):
; predecessors: %bb.1, %bb.6
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r24 = LDIRdK 35
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Live DEBUG_VALUE analysis ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BRNEk %bb.1, implicit $sreg
RJMPk %bb.8
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.7(0x3fffffff); %bb.2(50.00%), %bb.7(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.7
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.3(0x40000000), %bb.4(0x40000000); %bb.3(200.00%), %bb.4(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.4, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
bb.4 (%ir-block.2):
; predecessors: %bb.2, %bb.3
successors: %bb.5(0x40000000), %bb.6(0x40000000); %bb.5(200.00%), %bb.6(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.6, implicit $sreg
bb.5 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x80000000); %bb.6(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
bb.6 (%ir-block.2):
; predecessors: %bb.4, %bb.5
successors: %bb.7(0x80000000); %bb.7(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r22 = MOVRdRr $r17
$r23 = EORRdRr killed $r23, killed $r23, implicit-def dead $sreg
$r18 = LDIRdK 100
$r19 = LDIRdK 0
$r24 = LDIRdK 0
$r25 = LDIRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSKRr @_Tv4main7delayUsVs6UInt32 + 3, killed $r25 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 1, killed $r23 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
STSKRr @_Tv4main7delayUsVs6UInt32, killed $r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r24 = LDIRdK 34
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.7 (%ir-block.9):
; predecessors: %bb.1, %bb.6
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r24 = LDIRdK 35
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Insert fentry calls ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BRNEk %bb.1, implicit $sreg
RJMPk %bb.8
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.7(0x3fffffff); %bb.2(50.00%), %bb.7(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.7
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.3(0x40000000), %bb.4(0x40000000); %bb.3(200.00%), %bb.4(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.4, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
bb.4 (%ir-block.2):
; predecessors: %bb.2, %bb.3
successors: %bb.5(0x40000000), %bb.6(0x40000000); %bb.5(200.00%), %bb.6(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.6, implicit $sreg
bb.5 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x80000000); %bb.6(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
bb.6 (%ir-block.2):
; predecessors: %bb.4, %bb.5
successors: %bb.7(0x80000000); %bb.7(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r22 = MOVRdRr $r17
$r23 = EORRdRr killed $r23, killed $r23, implicit-def dead $sreg
$r18 = LDIRdK 100
$r19 = LDIRdK 0
$r24 = LDIRdK 0
$r25 = LDIRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSKRr @_Tv4main7delayUsVs6UInt32 + 3, killed $r25 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 1, killed $r23 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
STSKRr @_Tv4main7delayUsVs6UInt32, killed $r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r24 = LDIRdK 34
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.7 (%ir-block.9):
; predecessors: %bb.1, %bb.6
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r24 = LDIRdK 35
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Insert XRay ops ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BRNEk %bb.1, implicit $sreg
RJMPk %bb.8
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.7(0x3fffffff); %bb.2(50.00%), %bb.7(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.7
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.3(0x40000000), %bb.4(0x40000000); %bb.3(200.00%), %bb.4(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.4, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
bb.4 (%ir-block.2):
; predecessors: %bb.2, %bb.3
successors: %bb.5(0x40000000), %bb.6(0x40000000); %bb.5(200.00%), %bb.6(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.6, implicit $sreg
bb.5 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x80000000); %bb.6(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
bb.6 (%ir-block.2):
; predecessors: %bb.4, %bb.5
successors: %bb.7(0x80000000); %bb.7(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r22 = MOVRdRr $r17
$r23 = EORRdRr killed $r23, killed $r23, implicit-def dead $sreg
$r18 = LDIRdK 100
$r19 = LDIRdK 0
$r24 = LDIRdK 0
$r25 = LDIRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSKRr @_Tv4main7delayUsVs6UInt32 + 3, killed $r25 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 1, killed $r23 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
STSKRr @_Tv4main7delayUsVs6UInt32, killed $r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r24 = LDIRdK 34
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.7 (%ir-block.9):
; predecessors: %bb.1, %bb.6
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r24 = LDIRdK 35
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
# *** IR Dump After Implement the 'patchable-function' attribute ***:
# Machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: NoPHIs, TracksLiveness, NoVRegs
Frame Objects:
fi#0: size=1, align=1, at location [SP-1]
Function Live Ins: $r24, $r22
bb.0.entry:
successors: %bb.8(0x2aaaaaab), %bb.1(0x55555555); %bb.8(33.33%), %bb.1(66.67%)
liveins: $r22, $r24, $r17
frame-setup PUSHRr killed $r17, implicit-def $sp, implicit $sp
CPIRdK $r24, 7, implicit-def $sreg
BRNEk %bb.1, implicit $sreg
RJMPk %bb.8
bb.1.entry:
; predecessors: %bb.0
successors: %bb.2(0x40000001), %bb.7(0x3fffffff); %bb.2(50.00%), %bb.7(50.00%)
liveins: $r22, $r24
CPIRdK killed $r24, 6, implicit-def $sreg
BREQk %bb.2, implicit $sreg
RJMPk %bb.7
bb.2 (%ir-block.2):
; predecessors: %bb.1
successors: %bb.3(0x40000000), %bb.4(0x40000000); %bb.3(200.00%), %bb.4(200.00%)
liveins: $r22
$r24 = LDIRdK 5
CPIRdK $r22, 5, implicit-def $sreg
BRLOk %bb.4, implicit $sreg
bb.3 (%ir-block.2):
; predecessors: %bb.2
successors: %bb.4(0x80000000); %bb.4(200.00%)
liveins: $r22
$r24 = MOVRdRr $r22
bb.4 (%ir-block.2):
; predecessors: %bb.2, %bb.3
successors: %bb.5(0x40000000), %bb.6(0x40000000); %bb.5(200.00%), %bb.6(200.00%)
liveins: $r22, $r24
$r17 = LDIRdK 90
CPIRdK killed $r22, 91, implicit-def $sreg
BRSHk %bb.6, implicit $sreg
bb.5 (%ir-block.2):
; predecessors: %bb.4
successors: %bb.6(0x80000000); %bb.6(200.00%)
liveins: $r24
$r17 = MOVRdRr killed $r24
bb.6 (%ir-block.2):
; predecessors: %bb.4, %bb.5
successors: %bb.7(0x80000000); %bb.7(100.00%)
liveins: $r17
STSKRr @_Tv4main11delayFactorVs5UInt8, $r17 :: (store 1 into `i8* getelementptr inbounds (%Vs5UInt8, %Vs5UInt8* @_Tv4main11delayFactorVs5UInt8, i64 0, i32 0)`)
$r22 = MOVRdRr $r17
$r23 = EORRdRr killed $r23, killed $r23, implicit-def dead $sreg
$r18 = LDIRdK 100
$r19 = LDIRdK 0
$r24 = LDIRdK 0
$r25 = LDIRdK 0
$r20 = MOVRdRr $r24
$r21 = MOVRdRr $r25
CALLk &__mulsi3, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r23r22, implicit $r25r24, implicit $r19r18, implicit killed $r21r20, implicit-def $sp, implicit-def $r23r22, implicit-def $r25r24
STSKRr @_Tv4main7delayUsVs6UInt32 + 3, killed $r25 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 2, killed $r24 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)` + 2)
STSKRr @_Tv4main7delayUsVs6UInt32 + 1, killed $r23 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
STSKRr @_Tv4main7delayUsVs6UInt32, killed $r22 :: (store 2 into `i32* getelementptr inbounds (%Vs6UInt32, %Vs6UInt32* @_Tv4main7delayUsVs6UInt32, i64 0, i32 0)`, align 4)
$r24 = LDIRdK 34
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r17
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
bb.7 (%ir-block.9):
; predecessors: %bb.1, %bb.6
$r17 = POPRd implicit-def $sp, implicit $sp
RET
bb.8 (%ir-block.8):
; predecessors: %bb.0
successors: %bb.9(0x40000000), %bb.10(0x40000000); %bb.9(200.00%), %bb.10(200.00%)
liveins: $r22
$r18 = LDIRdK 1
CPIRdK killed $r22, 0, implicit-def $sreg
BRNEk %bb.10, implicit $sreg
bb.9 (%ir-block.8):
; predecessors: %bb.8
successors: %bb.10(0x80000000); %bb.10(200.00%)
$r18 = LDIRdK 0
bb.10 (%ir-block.8):
; predecessors: %bb.8, %bb.9
liveins: $r18
$r24 = MOVRdRr $r18
$r24 = ANDIRdK killed $r24, 1, implicit-def dead $sreg
STSKRr @_Tv4main7enabledSb, killed $r24 :: (store 1 into `i1* getelementptr inbounds (%Sb, %Sb* @_Tv4main7enabledSb, i64 0, i32 0)`)
$r24 = LDIRdK 35
$r25 = LDIRdK 0
$r22 = MOVRdRr killed $r18
CALLk @_TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_, <regmask $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 $r13 $r14 $r15 $r16 $r17 $r28 $r29 $r3r2 $r5r4 $r7r6 $r9r8 $r11r10 $r13r12 $r15r14 $r17r16 $r29r28>, implicit $sp, implicit $r25r24, implicit $r22, implicit-def $sp
# End machine code for function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_.
.hidden _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_ ; -- Begin function _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
.globl _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
.p2align 1
.type _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_,@function
_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_: ; @_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
discovered a new reachable node %bb.0
discovered a new reachable node %bb.8
discovered a new reachable node %bb.9
discovered a new reachable node %bb.10
discovered a new reachable node %bb.1
discovered a new reachable node %bb.2
discovered a new reachable node %bb.3
discovered a new reachable node %bb.4
discovered a new reachable node %bb.5
discovered a new reachable node %bb.6
discovered a new reachable node %bb.7
; %bb.0: ; %entry
push r17
cpi r24, 7
brne LBB0_1
rjmp LBB0_8
LBB0_1: ; %entry
cpi r24, 6
breq LBB0_2
rjmp LBB0_7
LBB0_2:
ldi r24, 5
cpi r22, 5
brlo LBB0_4
; %bb.3:
mov r24, r22
LBB0_4:
ldi r17, 90
cpi r22, 91
brsh LBB0_6
; %bb.5:
mov r17, r24
LBB0_6:
sts _Tv4main11delayFactorVs5UInt8, r17
mov r22, r17
clr r23
ldi r18, 100
ldi r19, 0
ldi r24, 0
ldi r25, 0
mov r20, r24
mov r21, r25
call __mulsi3
sts _Tv4main7delayUsVs6UInt32+3, r25
sts _Tv4main7delayUsVs6UInt32+2, r24
sts _Tv4main7delayUsVs6UInt32+1, r23
sts _Tv4main7delayUsVs6UInt32, r22
ldi r24, 34
ldi r25, 0
mov r22, r17
call _TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_
LBB0_7:
pop r17
ret
LBB0_8:
ldi r18, 1
cpi r22, 0
brne LBB0_10
; %bb.9:
ldi r18, 0
LBB0_10:
mov r24, r18
andi r24, 1
sts _Tv4main7enabledSb, r24
ldi r24, 35
ldi r25, 0
mov r22, r18
call _TF3AVR11writeEEPROMFT7addressVs6UInt165valueVs5UInt8_T_
.Lfunc_end0:
.size _TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_, .Lfunc_end0-_TF4main9i2cUpdateFT8registerVs5UInt85valueS0__T_
; -- End function
.hidden _Tv4main11delayFactorVs5UInt8 ; @_Tv4main11delayFactorVs5UInt8
.type _Tv4main11delayFactorVs5UInt8,@object
.section .bss,"aw",@nobits
.globl _Tv4main11delayFactorVs5UInt8
_Tv4main11delayFactorVs5UInt8:
.zero 1
.size _Tv4main11delayFactorVs5UInt8, 1
.hidden _Tv4main7delayUsVs6UInt32 ; @_Tv4main7delayUsVs6UInt32
.type _Tv4main7delayUsVs6UInt32,@object
.globl _Tv4main7delayUsVs6UInt32
.p2align 2
_Tv4main7delayUsVs6UInt32:
.zero 4
.size _Tv4main7delayUsVs6UInt32, 4
.hidden _Tv4main7enabledSb ; @_Tv4main7enabledSb
.type _Tv4main7enabledSb,@object
.globl _Tv4main7enabledSb
_Tv4main7enabledSb:
.zero 1
.size _Tv4main7enabledSb, 1
; Declaring this symbol tells the CRT that it should
;copy all variables from program memory to RAM on startup
.globl __do_copy_data
; Declaring this symbol tells the CRT that it should
;clear the zeroed data section on startup
.globl __do_clear_bss
Carls-MacBook-Air:AVR carlpeto$
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment