fix(0124): large stack arrays lower to in-place access, not first-class values
Two lowering sites materialized a local array as a whole LLVM value;
the legalizer scalarizes each such op into one SelectionDAG node per
element, and at ~64K elements the DAG combiner segfaults
(DAGCombiner::visitMERGE_VALUES → ReplaceAllUsesWith).
- lowerVarDecl: an array-typed `---` initializer emits NO store — the
slot stays uninitialized instead of receiving a whole-array undef
store. The tuple zero-init carve-out stays; non-array `---` keeps
the undef store. The interp is unchanged either way (slots start
.undef).
- lowerIndexExpr: element reads on an array with addressable storage
GEP the storage and load one element — the general-expression
sibling of 0110's lowerFor fix — without value-lowering the object
(a dead whole-array load would still reach the DAG). Storage-less
arrays keep the index_get fallback.
Sibling shape filed as 0125: any_to_string's per-array-type arms still
pass the array by value, so a 64K+ array type + any {} print crashes.
Regression: examples/0055-basic-large-stack-array.sx (sx build
segfaulted pre-fix). 22 .ir snapshots re-pinned: removed undef stores
and ig.tmp spills, in-place gep+load (instruction-shape-only churn,
reviewed).
This commit is contained in:
@@ -817,13 +817,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -843,11 +838,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -865,11 +858,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -877,11 +868,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -889,11 +878,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -908,18 +895,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -934,9 +919,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1258,7 +1243,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1281,10 +1265,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1301,29 +1281,21 @@ if.merge.411: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.418
|
||||
|
||||
@@ -1336,9 +1308,9 @@ while.body.419: ; preds = %while.hdr.418
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.421, label %if.merge.422
|
||||
|
||||
|
||||
@@ -785,13 +785,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -811,11 +806,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -833,11 +826,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -845,11 +836,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -857,11 +846,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -876,18 +863,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -902,9 +887,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1226,7 +1211,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1249,10 +1233,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1269,29 +1249,21 @@ if.merge.394: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.401
|
||||
|
||||
@@ -1304,9 +1276,9 @@ while.body.402: ; preds = %while.hdr.401
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.404, label %if.merge.405
|
||||
|
||||
|
||||
@@ -762,13 +762,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -788,11 +783,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -810,11 +803,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -822,11 +813,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -834,11 +823,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -853,18 +840,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -879,9 +864,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1203,7 +1188,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1226,10 +1210,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1246,29 +1226,21 @@ if.merge.376: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.383
|
||||
|
||||
@@ -1281,9 +1253,9 @@ while.body.384: ; preds = %while.hdr.383
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.386, label %if.merge.387
|
||||
|
||||
|
||||
1
examples/expected/0055-basic-large-stack-array.exit
Normal file
1
examples/expected/0055-basic-large-stack-array.exit
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
1
examples/expected/0055-basic-large-stack-array.stderr
Normal file
1
examples/expected/0055-basic-large-stack-array.stderr
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
2
examples/expected/0055-basic-large-stack-array.stdout
Normal file
2
examples/expected/0055-basic-large-stack-array.stdout
Normal file
@@ -0,0 +1,2 @@
|
||||
8189175
|
||||
42
|
||||
@@ -747,13 +747,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -773,11 +768,9 @@ if.merge.62: ; preds = %entry
|
||||
br label %while.hdr.71
|
||||
|
||||
while.hdr.71: ; preds = %while.exit.82, %if.merge.62
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.75, label %or.rhs.74
|
||||
|
||||
while.body.72: ; preds = %or.merge.79
|
||||
@@ -795,11 +788,9 @@ while.exit.73: ; preds = %or.merge.79
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.74: ; preds = %while.hdr.71
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.75
|
||||
|
||||
or.merge.75: ; preds = %or.rhs.74, %while.hdr.71
|
||||
@@ -807,11 +798,9 @@ or.merge.75: ; preds = %or.rhs.74, %while.h
|
||||
br i1 %bp, label %or.merge.77, label %or.rhs.76
|
||||
|
||||
or.rhs.76: ; preds = %or.merge.75
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.77
|
||||
|
||||
or.merge.77: ; preds = %or.rhs.76, %or.merge.75
|
||||
@@ -819,11 +808,9 @@ or.merge.77: ; preds = %or.rhs.76, %or.merg
|
||||
br i1 %bpN, label %or.merge.79, label %or.rhs.78
|
||||
|
||||
or.rhs.78: ; preds = %or.merge.77
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.79
|
||||
|
||||
or.merge.79: ; preds = %or.rhs.78, %or.merge.77
|
||||
@@ -838,18 +825,16 @@ while.hdr.80: ; preds = %while.body.81, %whi
|
||||
while.body.81: ; preds = %while.hdr.80
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -864,9 +849,9 @@ while.exit.82: ; preds = %while.hdr.80
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1188,7 +1173,6 @@ if.then.69: ; preds = %if.merge.68
|
||||
br label %if.merge.70
|
||||
|
||||
if.merge.70: ; preds = %if.then.69, %if.merge.68
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1211,10 +1195,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1231,29 +1211,21 @@ if.merge.375: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.382
|
||||
|
||||
@@ -1266,9 +1238,9 @@ while.body.383: ; preds = %while.hdr.382
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.385, label %if.merge.386
|
||||
|
||||
|
||||
@@ -748,13 +748,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -774,11 +769,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -796,11 +789,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -808,11 +799,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -820,11 +809,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -839,18 +826,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -865,9 +850,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1189,7 +1174,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1212,10 +1196,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1232,29 +1212,21 @@ if.merge.370: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.377
|
||||
|
||||
@@ -1267,9 +1239,9 @@ while.body.378: ; preds = %while.hdr.377
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.380, label %if.merge.381
|
||||
|
||||
|
||||
@@ -884,13 +884,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -910,11 +905,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -932,11 +925,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -944,11 +935,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -956,11 +945,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -975,18 +962,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -1001,9 +986,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1325,7 +1310,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1348,10 +1332,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1368,29 +1348,21 @@ if.merge.435: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.442
|
||||
|
||||
@@ -1403,9 +1375,9 @@ while.body.443: ; preds = %while.hdr.442
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.445, label %if.merge.446
|
||||
|
||||
|
||||
@@ -753,13 +753,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -779,11 +774,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -801,11 +794,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -813,11 +804,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -825,11 +814,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -844,18 +831,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -870,9 +855,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1194,7 +1179,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1217,10 +1201,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1237,29 +1217,21 @@ if.merge.370: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.377
|
||||
|
||||
@@ -1272,9 +1244,9 @@ while.body.378: ; preds = %while.hdr.377
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.380, label %if.merge.381
|
||||
|
||||
|
||||
@@ -833,13 +833,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -859,11 +854,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -881,11 +874,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -893,11 +884,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -905,11 +894,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -924,18 +911,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -950,9 +935,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1274,7 +1259,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1297,10 +1281,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1317,29 +1297,21 @@ if.merge.378: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.385
|
||||
|
||||
@@ -1352,9 +1324,9 @@ while.body.386: ; preds = %while.hdr.385
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.388, label %if.merge.389
|
||||
|
||||
|
||||
@@ -835,13 +835,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -861,11 +856,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -883,11 +876,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -895,11 +886,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -907,11 +896,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -926,18 +913,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -952,9 +937,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1276,7 +1261,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1299,10 +1283,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1319,29 +1299,21 @@ if.merge.413: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.420
|
||||
|
||||
@@ -1354,9 +1326,9 @@ while.body.421: ; preds = %while.hdr.420
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.423, label %if.merge.424
|
||||
|
||||
|
||||
@@ -840,13 +840,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -866,11 +861,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -888,11 +881,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -900,11 +891,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -912,11 +901,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -931,18 +918,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -957,9 +942,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1281,7 +1266,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1304,10 +1288,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1324,29 +1304,21 @@ if.merge.424: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.431
|
||||
|
||||
@@ -1359,9 +1331,9 @@ while.body.432: ; preds = %while.hdr.431
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.434, label %if.merge.435
|
||||
|
||||
|
||||
@@ -891,13 +891,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -917,11 +912,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -939,11 +932,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -951,11 +942,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -963,11 +952,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -982,18 +969,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -1008,9 +993,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1332,7 +1317,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1355,10 +1339,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1375,29 +1355,21 @@ if.merge.443: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.450
|
||||
|
||||
@@ -1410,9 +1382,9 @@ while.body.451: ; preds = %while.hdr.450
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.453, label %if.merge.454
|
||||
|
||||
|
||||
@@ -769,13 +769,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -795,11 +790,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -817,11 +810,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -829,11 +820,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -841,11 +830,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -860,18 +847,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -886,9 +871,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1210,7 +1195,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1233,10 +1217,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1253,29 +1233,21 @@ if.merge.390: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.397
|
||||
|
||||
@@ -1288,9 +1260,9 @@ while.body.398: ; preds = %while.hdr.397
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.400, label %if.merge.401
|
||||
|
||||
|
||||
@@ -750,13 +750,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -776,11 +771,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -798,11 +791,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -810,11 +801,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -822,11 +811,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -841,18 +828,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -867,9 +852,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1191,7 +1176,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1214,10 +1198,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1234,29 +1214,21 @@ if.merge.376: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.383
|
||||
|
||||
@@ -1269,9 +1241,9 @@ while.body.384: ; preds = %while.hdr.383
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.386, label %if.merge.387
|
||||
|
||||
|
||||
@@ -754,13 +754,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -780,11 +775,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -802,11 +795,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -814,11 +805,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -826,11 +815,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -845,18 +832,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -871,9 +856,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1195,7 +1180,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1218,10 +1202,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1238,29 +1218,21 @@ if.merge.370: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.377
|
||||
|
||||
@@ -1273,9 +1245,9 @@ while.body.378: ; preds = %while.hdr.377
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.380, label %if.merge.381
|
||||
|
||||
|
||||
@@ -814,13 +814,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -840,11 +835,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -862,11 +855,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -874,11 +865,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -886,11 +875,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -905,18 +892,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -931,9 +916,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1255,7 +1240,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1278,10 +1262,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1298,29 +1278,21 @@ if.merge.410: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.417
|
||||
|
||||
@@ -1333,9 +1305,9 @@ while.body.418: ; preds = %while.hdr.417
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.420, label %if.merge.421
|
||||
|
||||
|
||||
@@ -838,13 +838,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -864,11 +859,9 @@ if.merge.69: ; preds = %entry
|
||||
br label %while.hdr.78
|
||||
|
||||
while.hdr.78: ; preds = %while.exit.89, %if.merge.69
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.82, label %or.rhs.81
|
||||
|
||||
while.body.79: ; preds = %or.merge.86
|
||||
@@ -886,11 +879,9 @@ while.exit.80: ; preds = %or.merge.86
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.81: ; preds = %while.hdr.78
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.82
|
||||
|
||||
or.merge.82: ; preds = %or.rhs.81, %while.hdr.78
|
||||
@@ -898,11 +889,9 @@ or.merge.82: ; preds = %or.rhs.81, %while.h
|
||||
br i1 %bp, label %or.merge.84, label %or.rhs.83
|
||||
|
||||
or.rhs.83: ; preds = %or.merge.82
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.84
|
||||
|
||||
or.merge.84: ; preds = %or.rhs.83, %or.merge.82
|
||||
@@ -910,11 +899,9 @@ or.merge.84: ; preds = %or.rhs.83, %or.merg
|
||||
br i1 %bpN, label %or.merge.86, label %or.rhs.85
|
||||
|
||||
or.rhs.85: ; preds = %or.merge.84
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.86
|
||||
|
||||
or.merge.86: ; preds = %or.rhs.85, %or.merge.84
|
||||
@@ -929,18 +916,16 @@ while.hdr.87: ; preds = %while.body.88, %whi
|
||||
while.body.88: ; preds = %while.hdr.87
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -955,9 +940,9 @@ while.exit.89: ; preds = %while.hdr.87
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1279,7 +1264,6 @@ if.then.76: ; preds = %if.merge.75
|
||||
br label %if.merge.77
|
||||
|
||||
if.merge.77: ; preds = %if.then.76, %if.merge.75
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1302,10 +1286,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1322,29 +1302,21 @@ if.merge.412: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.419
|
||||
|
||||
@@ -1357,9 +1329,9 @@ while.body.420: ; preds = %while.hdr.419
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.422, label %if.merge.423
|
||||
|
||||
|
||||
@@ -763,13 +763,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -789,11 +784,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -811,11 +804,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -823,11 +814,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -835,11 +824,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -854,18 +841,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -880,9 +865,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1204,7 +1189,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1227,10 +1211,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1247,29 +1227,21 @@ if.merge.376: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.383
|
||||
|
||||
@@ -1282,9 +1254,9 @@ while.body.384: ; preds = %while.hdr.383
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.386, label %if.merge.387
|
||||
|
||||
|
||||
@@ -756,13 +756,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -782,11 +777,9 @@ if.merge.67: ; preds = %entry
|
||||
br label %while.hdr.76
|
||||
|
||||
while.hdr.76: ; preds = %while.exit.87, %if.merge.67
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.80, label %or.rhs.79
|
||||
|
||||
while.body.77: ; preds = %or.merge.84
|
||||
@@ -804,11 +797,9 @@ while.exit.78: ; preds = %or.merge.84
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.79: ; preds = %while.hdr.76
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.80
|
||||
|
||||
or.merge.80: ; preds = %or.rhs.79, %while.hdr.76
|
||||
@@ -816,11 +807,9 @@ or.merge.80: ; preds = %or.rhs.79, %while.h
|
||||
br i1 %bp, label %or.merge.82, label %or.rhs.81
|
||||
|
||||
or.rhs.81: ; preds = %or.merge.80
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.82
|
||||
|
||||
or.merge.82: ; preds = %or.rhs.81, %or.merge.80
|
||||
@@ -828,11 +817,9 @@ or.merge.82: ; preds = %or.rhs.81, %or.merg
|
||||
br i1 %bpN, label %or.merge.84, label %or.rhs.83
|
||||
|
||||
or.rhs.83: ; preds = %or.merge.82
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.84
|
||||
|
||||
or.merge.84: ; preds = %or.rhs.83, %or.merge.82
|
||||
@@ -847,18 +834,16 @@ while.hdr.85: ; preds = %while.body.86, %whi
|
||||
while.body.86: ; preds = %while.hdr.85
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -873,9 +858,9 @@ while.exit.87: ; preds = %while.hdr.85
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1197,7 +1182,6 @@ if.then.74: ; preds = %if.merge.73
|
||||
br label %if.merge.75
|
||||
|
||||
if.merge.75: ; preds = %if.then.74, %if.merge.73
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1220,10 +1204,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1240,29 +1220,21 @@ if.merge.380: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.387
|
||||
|
||||
@@ -1275,9 +1247,9 @@ while.body.388: ; preds = %while.hdr.387
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.390, label %if.merge.391
|
||||
|
||||
|
||||
@@ -762,13 +762,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -788,11 +783,9 @@ if.merge.69: ; preds = %entry
|
||||
br label %while.hdr.78
|
||||
|
||||
while.hdr.78: ; preds = %while.exit.89, %if.merge.69
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.82, label %or.rhs.81
|
||||
|
||||
while.body.79: ; preds = %or.merge.86
|
||||
@@ -810,11 +803,9 @@ while.exit.80: ; preds = %or.merge.86
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.81: ; preds = %while.hdr.78
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.82
|
||||
|
||||
or.merge.82: ; preds = %or.rhs.81, %while.hdr.78
|
||||
@@ -822,11 +813,9 @@ or.merge.82: ; preds = %or.rhs.81, %while.h
|
||||
br i1 %bp, label %or.merge.84, label %or.rhs.83
|
||||
|
||||
or.rhs.83: ; preds = %or.merge.82
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.84
|
||||
|
||||
or.merge.84: ; preds = %or.rhs.83, %or.merge.82
|
||||
@@ -834,11 +823,9 @@ or.merge.84: ; preds = %or.rhs.83, %or.merg
|
||||
br i1 %bpN, label %or.merge.86, label %or.rhs.85
|
||||
|
||||
or.rhs.85: ; preds = %or.merge.84
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.86
|
||||
|
||||
or.merge.86: ; preds = %or.rhs.85, %or.merge.84
|
||||
@@ -853,18 +840,16 @@ while.hdr.87: ; preds = %while.body.88, %whi
|
||||
while.body.88: ; preds = %while.hdr.87
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -879,9 +864,9 @@ while.exit.89: ; preds = %while.hdr.87
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1203,7 +1188,6 @@ if.then.76: ; preds = %if.merge.75
|
||||
br label %if.merge.77
|
||||
|
||||
if.merge.77: ; preds = %if.then.76, %if.merge.75
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1226,10 +1210,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1246,29 +1226,21 @@ if.merge.382: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.389
|
||||
|
||||
@@ -1281,9 +1253,9 @@ while.body.390: ; preds = %while.hdr.389
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.392, label %if.merge.393
|
||||
|
||||
|
||||
@@ -758,13 +758,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -784,11 +779,9 @@ if.merge.87: ; preds = %entry
|
||||
br label %while.hdr.96
|
||||
|
||||
while.hdr.96: ; preds = %while.exit.107, %if.merge.87
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.100, label %or.rhs.99
|
||||
|
||||
while.body.97: ; preds = %or.merge.104
|
||||
@@ -806,11 +799,9 @@ while.exit.98: ; preds = %or.merge.104
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.99: ; preds = %while.hdr.96
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.100
|
||||
|
||||
or.merge.100: ; preds = %or.rhs.99, %while.hdr.96
|
||||
@@ -818,11 +809,9 @@ or.merge.100: ; preds = %or.rhs.99, %while.h
|
||||
br i1 %bp, label %or.merge.102, label %or.rhs.101
|
||||
|
||||
or.rhs.101: ; preds = %or.merge.100
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.102
|
||||
|
||||
or.merge.102: ; preds = %or.rhs.101, %or.merge.100
|
||||
@@ -830,11 +819,9 @@ or.merge.102: ; preds = %or.rhs.101, %or.mer
|
||||
br i1 %bpN, label %or.merge.104, label %or.rhs.103
|
||||
|
||||
or.rhs.103: ; preds = %or.merge.102
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.104
|
||||
|
||||
or.merge.104: ; preds = %or.rhs.103, %or.merge.102
|
||||
@@ -849,18 +836,16 @@ while.hdr.105: ; preds = %while.body.106, %wh
|
||||
while.body.106: ; preds = %while.hdr.105
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -875,9 +860,9 @@ while.exit.107: ; preds = %while.hdr.105
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1199,7 +1184,6 @@ if.then.94: ; preds = %if.merge.93
|
||||
br label %if.merge.95
|
||||
|
||||
if.merge.95: ; preds = %if.then.94, %if.merge.93
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1222,10 +1206,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1242,29 +1222,21 @@ if.merge.400: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.407
|
||||
|
||||
@@ -1277,9 +1249,9 @@ while.body.408: ; preds = %while.hdr.407
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.410, label %if.merge.411
|
||||
|
||||
|
||||
@@ -841,13 +841,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -867,11 +862,9 @@ if.merge.65: ; preds = %entry
|
||||
br label %while.hdr.74
|
||||
|
||||
while.hdr.74: ; preds = %while.exit.85, %if.merge.65
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.78, label %or.rhs.77
|
||||
|
||||
while.body.75: ; preds = %or.merge.82
|
||||
@@ -889,11 +882,9 @@ while.exit.76: ; preds = %or.merge.82
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.77: ; preds = %while.hdr.74
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.78
|
||||
|
||||
or.merge.78: ; preds = %or.rhs.77, %while.hdr.74
|
||||
@@ -901,11 +892,9 @@ or.merge.78: ; preds = %or.rhs.77, %while.h
|
||||
br i1 %bp, label %or.merge.80, label %or.rhs.79
|
||||
|
||||
or.rhs.79: ; preds = %or.merge.78
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.80
|
||||
|
||||
or.merge.80: ; preds = %or.rhs.79, %or.merge.78
|
||||
@@ -913,11 +902,9 @@ or.merge.80: ; preds = %or.rhs.79, %or.merg
|
||||
br i1 %bpN, label %or.merge.82, label %or.rhs.81
|
||||
|
||||
or.rhs.81: ; preds = %or.merge.80
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.82
|
||||
|
||||
or.merge.82: ; preds = %or.rhs.81, %or.merge.80
|
||||
@@ -932,18 +919,16 @@ while.hdr.83: ; preds = %while.body.84, %whi
|
||||
while.body.84: ; preds = %while.hdr.83
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -958,9 +943,9 @@ while.exit.85: ; preds = %while.hdr.83
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1282,7 +1267,6 @@ if.then.72: ; preds = %if.merge.71
|
||||
br label %if.merge.73
|
||||
|
||||
if.merge.73: ; preds = %if.then.72, %if.merge.71
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1305,10 +1289,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1325,29 +1305,21 @@ if.merge.405: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.412
|
||||
|
||||
@@ -1360,9 +1332,9 @@ while.body.413: ; preds = %while.hdr.412
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.415, label %if.merge.416
|
||||
|
||||
|
||||
@@ -788,13 +788,8 @@ entry:
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
%ig.tmp15 = alloca [4 x i64], align 8
|
||||
%ig.tmp20 = alloca [4 x i64], align 8
|
||||
%ig.tmp26 = alloca [4 x i64], align 8
|
||||
%ig.tmp36 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -814,11 +809,9 @@ if.merge.57: ; preds = %entry
|
||||
br label %while.hdr.66
|
||||
|
||||
while.hdr.66: ; preds = %while.exit.77, %if.merge.57
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
%icmpN = icmp ne i64 %ig.val, 0
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br i1 %icmpN, label %or.merge.70, label %or.rhs.69
|
||||
|
||||
while.body.67: ; preds = %or.merge.74
|
||||
@@ -836,11 +829,9 @@ while.exit.68: ; preds = %or.merge.74
|
||||
ret { ptr, i64 } %callN
|
||||
|
||||
or.rhs.69: ; preds = %while.hdr.66
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp15, align 8
|
||||
%ig.ptr16 = getelementptr [4 x i64], ptr %ig.tmp15, i64 0, i64 1
|
||||
%ig.val17 = load i64, ptr %ig.ptr16, align 8
|
||||
%icmpN = icmp ne i64 %ig.val17, 0
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.70
|
||||
|
||||
or.merge.70: ; preds = %or.rhs.69, %while.hdr.66
|
||||
@@ -848,11 +839,9 @@ or.merge.70: ; preds = %or.rhs.69, %while.h
|
||||
br i1 %bp, label %or.merge.72, label %or.rhs.71
|
||||
|
||||
or.rhs.71: ; preds = %or.merge.70
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp20, align 8
|
||||
%ig.ptr21 = getelementptr [4 x i64], ptr %ig.tmp20, i64 0, i64 2
|
||||
%ig.val22 = load i64, ptr %ig.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %ig.val22, 0
|
||||
%igp.ptr17 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr17, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.72
|
||||
|
||||
or.merge.72: ; preds = %or.rhs.71, %or.merge.70
|
||||
@@ -860,11 +849,9 @@ or.merge.72: ; preds = %or.rhs.71, %or.merg
|
||||
br i1 %bpN, label %or.merge.74, label %or.rhs.73
|
||||
|
||||
or.rhs.73: ; preds = %or.merge.72
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp26, align 8
|
||||
%ig.ptr27 = getelementptr [4 x i64], ptr %ig.tmp26, i64 0, i64 3
|
||||
%ig.val28 = load i64, ptr %ig.ptr27, align 8
|
||||
%icmpN = icmp ne i64 %ig.val28, 0
|
||||
%igp.ptr21 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr21, align 8
|
||||
%icmpN = icmp ne i64 %loadN, 0
|
||||
br label %or.merge.74
|
||||
|
||||
or.merge.74: ; preds = %or.rhs.73, %or.merge.72
|
||||
@@ -879,18 +866,16 @@ while.hdr.75: ; preds = %while.body.76, %whi
|
||||
while.body.76: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%mul = mul i64 %loadN, 65536
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp36, align 8
|
||||
%ig.ptr37 = getelementptr [4 x i64], ptr %ig.tmp36, i64 0, i64 %loadN
|
||||
%ig.val38 = load i64, ptr %ig.ptr37, align 8
|
||||
%addN = add i64 %mul, %ig.val38
|
||||
%igp.ptr29 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
%loadN = load i64, ptr %igp.ptr29, align 8
|
||||
%addN = add i64 %mul, %loadN
|
||||
store i64 %addN, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%sdiv = sdiv i64 %loadN, 10
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr, align 8
|
||||
%igp.ptr35 = getelementptr i64, ptr %allocaN, i64 %loadN
|
||||
store i64 %sdiv, ptr %igp.ptr35, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%srem = srem i64 %loadN, 10
|
||||
store i64 %srem, ptr %allocaN, align 8
|
||||
@@ -905,9 +890,9 @@ while.exit.77: ; preds = %while.hdr.75
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%igp.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%igp.ptr50 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%igp.ptr43 = getelementptr i8, ptr %igp.data, i64 %loadN
|
||||
%trunc = trunc i64 %addN to i8
|
||||
store i8 %trunc, ptr %igp.ptr50, align 1
|
||||
store i8 %trunc, ptr %igp.ptr43, align 1
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%subN = sub i64 %loadN, 1
|
||||
store i64 %subN, ptr %allocaN, align 8
|
||||
@@ -1229,7 +1214,6 @@ if.then.64: ; preds = %if.merge.63
|
||||
br label %if.merge.65
|
||||
|
||||
if.merge.65: ; preds = %if.then.64, %if.merge.63
|
||||
store [4 x i64] undef, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
store i64 %loadN, ptr %igp.ptr, align 8
|
||||
@@ -1252,10 +1236,6 @@ entry:
|
||||
%alloca = alloca i64, align 8
|
||||
%allocaN = alloca [4 x i64], align 8
|
||||
%allocaN = alloca { ptr, i64 }, align 8
|
||||
%ig.tmp = alloca [4 x i64], align 8
|
||||
%ig.tmp9 = alloca [4 x i64], align 8
|
||||
%ig.tmp14 = alloca [4 x i64], align 8
|
||||
%ig.tmp19 = alloca [4 x i64], align 8
|
||||
%allocaN = alloca i64, align 8
|
||||
store i64 %1, ptr %alloca, align 8
|
||||
%load = load i64, ptr %alloca, align 8
|
||||
@@ -1272,29 +1252,21 @@ if.merge.390: ; preds = %entry
|
||||
%callN = call { ptr, i64 } @cstring(ptr %0, i64 16)
|
||||
store { ptr, i64 } %callN, ptr %allocaN, align 8
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp, align 8
|
||||
%ig.ptr = getelementptr [4 x i64], ptr %ig.tmp, i64 0, i64 0
|
||||
%ig.val = load i64, ptr %ig.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %ig.val)
|
||||
%igp.ptr = getelementptr i64, ptr %allocaN, i64 0
|
||||
%loadN = load i64, ptr %igp.ptr, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 0, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp9, align 8
|
||||
%ig.ptr10 = getelementptr [4 x i64], ptr %ig.tmp9, i64 0, i64 1
|
||||
%ig.val11 = load i64, ptr %ig.ptr10, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %ig.val11)
|
||||
%igp.ptr8 = getelementptr i64, ptr %allocaN, i64 1
|
||||
%loadN = load i64, ptr %igp.ptr8, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 4, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp14, align 8
|
||||
%ig.ptr15 = getelementptr [4 x i64], ptr %ig.tmp14, i64 0, i64 2
|
||||
%ig.val16 = load i64, ptr %ig.ptr15, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %ig.val16)
|
||||
%igp.ptr11 = getelementptr i64, ptr %allocaN, i64 2
|
||||
%loadN = load i64, ptr %igp.ptr11, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 8, i64 %loadN)
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load [4 x i64], ptr %allocaN, align 8
|
||||
store [4 x i64] %loadN, ptr %ig.tmp19, align 8
|
||||
%ig.ptr20 = getelementptr [4 x i64], ptr %ig.tmp19, i64 0, i64 3
|
||||
%ig.val21 = load i64, ptr %ig.ptr20, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %ig.val21)
|
||||
%igp.ptr14 = getelementptr i64, ptr %allocaN, i64 3
|
||||
%loadN = load i64, ptr %igp.ptr14, align 8
|
||||
call void @hex_group(ptr %0, { ptr, i64 } %loadN, i64 12, i64 %loadN)
|
||||
store i64 0, ptr %allocaN, align 8
|
||||
br label %while.hdr.397
|
||||
|
||||
@@ -1307,9 +1279,9 @@ while.body.398: ; preds = %while.hdr.397
|
||||
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
|
||||
%loadN = load i64, ptr %allocaN, align 8
|
||||
%ig.data = extractvalue { ptr, i64 } %loadN, 0
|
||||
%ig.ptr27 = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val28 = load i8, ptr %ig.ptr27, align 1
|
||||
%cmp.ext = zext i8 %ig.val28 to i64
|
||||
%ig.ptr = getelementptr i8, ptr %ig.data, i64 %loadN
|
||||
%ig.val = load i8, ptr %ig.ptr, align 1
|
||||
%cmp.ext = zext i8 %ig.val to i64
|
||||
%icmpN = icmp ne i64 %cmp.ext, 48
|
||||
br i1 %icmpN, label %if.then.400, label %if.merge.401
|
||||
|
||||
|
||||
Reference in New Issue
Block a user