diff options
Diffstat (limited to 'rts.ll')
-rw-r--r-- | rts.ll | 244 |
1 files changed, 122 insertions, 122 deletions
@@ -12,204 +12,204 @@ attributes #0 = { alwaysinline } define private i64** @_push_local_astack(i64** %asp.0, i64** %aspstart, i64** %globasp.0) #0 { entry: - br label %loop + br label %loop loop: - %asp = phi i64** [%asp.0, %entry], [%asp.1, %loop.0] - %globasp = phi i64** [%globasp.0, %entry], [%globasp.1, %loop.0] - %t.0 = icmp eq i64** %asp, %aspstart - br i1 %t.0, label %done, label %loop.0 + %asp = phi i64** [%asp.0, %entry], [%asp.1, %loop.0] + %globasp = phi i64** [%globasp.0, %entry], [%globasp.1, %loop.0] + %t.0 = icmp eq i64** %asp, %aspstart + br i1 %t.0, label %done, label %loop.0 done: - ret i64** %globasp + ret i64** %globasp loop.0: - %globasp.1 = getelementptr i64*, i64** %globasp, i64 1 - %n = load i64*, i64** %asp - store i64* %n, i64** %globasp.1 - %asp.1 = getelementptr i64*, i64** %asp, i64 -1 - br label %loop + %globasp.1 = getelementptr i64*, i64** %globasp, i64 1 + %n = load i64*, i64** %asp + store i64* %n, i64** %globasp.1 + %asp.1 = getelementptr i64*, i64** %asp, i64 -1 + br label %loop } define private i64* @addI(i64* %bsp.0) #0 { - %t.0 = load i64, i64* %bsp.0 - store i64 undef, i64* %bsp.0 - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 - %t.1 = load i64, i64* %bsp.1 - %t.2 = add i64 %t.0, %t.1 - store i64 %t.2, i64* %bsp.1 - ret i64* %bsp.1 + %t.0 = load i64, i64* %bsp.0 + store i64 undef, i64* %bsp.0 + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 + %t.1 = load i64, i64* %bsp.1 + %t.2 = add i64 %t.0, %t.1 + store i64 %t.2, i64* %bsp.1 + ret i64* %bsp.1 } define private i64* @eqI_b(i64 %i, i64 %n, i64* %bsp.0) #0 { - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 %n - %bsp.2 = getelementptr i64, i64* %bsp.0, i64 -1 - %t.0 = load i64, i64* %bsp.1 - %t.1 = icmp eq i64 %t.0, %i - %t.2 = zext i1 %t.1 to i64 - store i64 %t.2, i64* %bsp.2 - ret i64* %bsp.2 + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 %n + %bsp.2 = getelementptr i64, i64* %bsp.0, i64 -1 + %t.0 = load i64, i64* %bsp.1 + %t.1 = icmp eq i64 %t.0, %i + %t.2 = zext i1 %t.1 to i64 + store i64 %t.2, i64* %bsp.2 + ret i64* %bsp.2 } define private i64** @fillI_b(i64 %b_offset, i64 %a_offset, i64* %bsp.0, i64** %asp.0) #0 { - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 %b_offset - %t.0 = load i64, i64* %bsp.1 + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 %b_offset + %t.0 = load i64, i64* %bsp.1 - %asp.1 = getelementptr i64*, i64** %asp.0, i64 %a_offset + %asp.1 = getelementptr i64*, i64** %asp.0, i64 %a_offset - %n.0 = load i64*, i64** %asp.1 - %INT.0 = ptrtoint {i64, i64, i64*, i64, i8, i8, i8}* @INT to i64 - %INT.1 = add i64 %INT.0, 2 - store i64 %INT.1, i64* %n.0 + %n.0 = load i64*, i64** %asp.1 + %INT.0 = ptrtoint {i64, i64, i64*, i64, i8, i8, i8}* @INT to i64 + %INT.1 = add i64 %INT.0, 2 + store i64 %INT.1, i64* %n.0 - %n.1 = getelementptr i64, i64* %n.0, i64 1 - store i64 %t.0, i64* %n.1 + %n.1 = getelementptr i64, i64* %n.0, i64 1 + store i64 %t.0, i64* %n.1 - ret i64** %asp.0 + ret i64** %asp.0 } define private i64** @jsr_eval(i64 %n, i64** %asp.0, i64** %aspstart, i64** %globasp.0) #0 { - ; TODO in case %n != 0 do we need to push it to the top of the stack? - %asp.1 = getelementptr i64*, i64** %asp.0, i64 %n + ; TODO in case %n != 0 do we need to push it to the top of the stack? + %asp.1 = getelementptr i64*, i64** %asp.0, i64 %n - %n.0 = load i64*, i64** %asp.1 - %d.0 = load i64, i64* %n.0 + %n.0 = load i64*, i64** %asp.1 + %d.0 = load i64, i64* %n.0 - %t.0 = and i64 %d.0, 2 - %t.1 = icmp eq i64 %t.0, 0 - br i1 %t.1, label %eval, label %done + %t.0 = and i64 %d.0, 2 + %t.1 = icmp eq i64 %t.0, 0 + br i1 %t.1, label %eval, label %done done: - ret i64** %asp.0 + ret i64** %asp.0 eval: - %globasp.1 = call i64** @_push_local_astack(i64** %asp.0, i64** %aspstart, i64** %globasp.0) - %nentry.0 = inttoptr i64 %d.0 to i64*(i64*, i64**)* - %n.1 = call i64* %nentry.0(i64* %n.0, i64** %globasp.1) - store i64* %n.1, i64** %asp.1 - ret i64** %asp.0 + %globasp.1 = call i64** @_push_local_astack(i64** %asp.0, i64** %aspstart, i64** %globasp.0) + %nentry.0 = inttoptr i64 %d.0 to i64*(i64*, i64**)* + %n.1 = call i64* %nentry.0(i64* %n.0, i64** %globasp.1) + store i64* %n.1, i64** %asp.1 + ret i64** %asp.0 } define private i64* @ltI(i64* %bsp.0) #0 { - %t.0 = load i64, i64* %bsp.0 - store i64 undef, i64* %bsp.0 - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 - %t.1 = load i64, i64* %bsp.1 - %t.2 = icmp slt i64 %t.0, %t.1 - %t.3 = zext i1 %t.2 to i64 - store i64 %t.3, i64* %bsp.1 - ret i64* %bsp.1 + %t.0 = load i64, i64* %bsp.0 + store i64 undef, i64* %bsp.0 + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 + %t.1 = load i64, i64* %bsp.1 + %t.2 = icmp slt i64 %t.0, %t.1 + %t.3 = zext i1 %t.2 to i64 + store i64 %t.3, i64* %bsp.1 + ret i64* %bsp.1 } define private i64** @pop_a1(i64** %asp.0) #0 { - store i64* undef, i64** %asp.0 - %asp.1 = getelementptr i64*, i64** %asp.0, i64 -1 - ret i64** %asp.1 + store i64* undef, i64** %asp.0 + %asp.1 = getelementptr i64*, i64** %asp.0, i64 -1 + ret i64** %asp.1 } define private i64* @pop_b1(i64* %bsp.0) #0 { - store i64 undef, i64* %bsp.0 - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 - ret i64* %bsp.1 + store i64 undef, i64* %bsp.0 + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 + ret i64* %bsp.1 } define private i64* @print_int(i64* %bsp.0) #0 { - %t.0 = load i64, i64* %bsp.0 - store i64 undef, i64* %bsp.0 - call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_d, i64 0, i64 0), i64 %t.0) - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 - ret i64* %bsp.1 + %t.0 = load i64, i64* %bsp.0 + store i64 undef, i64* %bsp.0 + call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_d, i64 0, i64 0), i64 %t.0) + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 + ret i64* %bsp.1 } define private i64* @push_b(i64 %n, i64* %bsp.0) #0 { - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 %n - %t.0 = load i64, i64* %bsp.1 - %bsp.2 = getelementptr i64, i64* %bsp.0, i64 -1 - store i64 %t.0, i64* %bsp.2 - ret i64* %bsp.2 + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 %n + %t.0 = load i64, i64* %bsp.1 + %bsp.2 = getelementptr i64, i64* %bsp.0, i64 -1 + store i64 %t.0, i64* %bsp.2 + ret i64* %bsp.2 } define private i64** @push_node(i64* %label, i64 %arity, i64** %asp.0) #0 { entry: - %n.0 = load i64*, i64** %asp.0 - %label.0 = ptrtoint i64* %label to i64 - store i64 %label.0, i64* %n.0 - br label %loop + %n.0 = load i64*, i64** %asp.0 + %label.0 = ptrtoint i64* %label to i64 + store i64 %label.0, i64* %n.0 + br label %loop loop: - %asp.1 = phi i64** [%asp.0, %entry], [%asp.2, %loop.0] - %arity.0 = phi i64 [%arity, %entry], [%arity.1, %loop.0] - %t.0 = icmp eq i64 %arity.0, 0 - br i1 %t.0, label %done, label %loop.0 + %asp.1 = phi i64** [%asp.0, %entry], [%asp.2, %loop.0] + %arity.0 = phi i64 [%arity, %entry], [%arity.1, %loop.0] + %t.0 = icmp eq i64 %arity.0, 0 + br i1 %t.0, label %done, label %loop.0 done: - ret i64** %asp.1 + ret i64** %asp.1 loop.0: - %n.1 = getelementptr i64, i64* %n.0, i64 %arity - %n.2 = load i64, i64* %n.1 - %n.3 = inttoptr i64 %n.2 to i64* - %asp.2 = getelementptr i64*, i64** %asp.1, i64 1 - store i64* %n.3, i64** %asp.2 - %arity.1 = sub i64 %arity.0, 1 - br label %loop + %n.1 = getelementptr i64, i64* %n.0, i64 %arity + %n.2 = load i64, i64* %n.1 + %n.3 = inttoptr i64 %n.2 to i64* + %asp.2 = getelementptr i64*, i64** %asp.1, i64 1 + store i64* %n.3, i64** %asp.2 + %arity.1 = sub i64 %arity.0, 1 + br label %loop } define private i64* @pushI(i64 %i, i64* %bsp.0) #0 { - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 -1 - store i64 %i, i64* %bsp.1 - ret i64* %bsp.1 + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 -1 + store i64 %i, i64* %bsp.1 + ret i64* %bsp.1 } define private i64* @pushI_a(i64 %n, i64* %bsp.0, i64** %asp.0) #0 { - %asp.1 = getelementptr i64*, i64** %asp.0, i64 %n - %n.0 = load i64*, i64** %asp.1 - %n.1 = getelementptr i64, i64* %n.0, i64 1 - %t.0 = load i64, i64* %n.1 + %asp.1 = getelementptr i64*, i64** %asp.0, i64 %n + %n.0 = load i64*, i64** %asp.1 + %n.1 = getelementptr i64, i64* %n.0, i64 1 + %t.0 = load i64, i64* %n.1 - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 -1 - store i64 %t.0, i64* %bsp.1 - ret i64* %bsp.1 + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 -1 + store i64 %t.0, i64* %bsp.1 + ret i64* %bsp.1 } define private i64* @subI(i64* %bsp.0) #0 { - %t.0 = load i64, i64* %bsp.0 - store i64 undef, i64* %bsp.0 - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 - %t.1 = load i64, i64* %bsp.1 - %t.2 = sub i64 %t.0, %t.1 - store i64 %t.2, i64* %bsp.1 - ret i64* %bsp.1 + %t.0 = load i64, i64* %bsp.0 + store i64 undef, i64* %bsp.0 + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 + %t.1 = load i64, i64* %bsp.1 + %t.2 = sub i64 %t.0, %t.1 + store i64 %t.2, i64* %bsp.1 + ret i64* %bsp.1 } define private i64* @update_b(i64 %n1, i64 %n2, i64* %bsp.0) #0 { - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 %n1 - %t.0 = load i64, i64* %bsp.1 - %bsp.2 = getelementptr i64, i64* %bsp.0, i64 %n2 - store i64 %t.0, i64* %bsp.2 - ret i64* %bsp.0 + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 %n1 + %t.0 = load i64, i64* %bsp.1 + %bsp.2 = getelementptr i64, i64* %bsp.0, i64 %n2 + store i64 %t.0, i64* %bsp.2 + ret i64* %bsp.0 } define private i64* @updatepop_b01(i64* %bsp.0) #0 { - %t.0 = load i64, i64* %bsp.0 - store i64 undef, i64* %bsp.0 - %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 - store i64 %t.0, i64* %bsp.1 - ret i64* %bsp.1 + %t.0 = load i64, i64* %bsp.0 + store i64 undef, i64* %bsp.0 + %bsp.1 = getelementptr i64, i64* %bsp.0, i64 1 + store i64 %t.0, i64* %bsp.1 + ret i64* %bsp.1 } define private i64* @peek_a(i64** %asp) #0 { - %t = load i64*, i64** %asp - ret i64* %t + %t = load i64*, i64** %asp + ret i64* %t } define private i64 @peek_b(i64* %bsp) #0 { - %t = load i64, i64* %bsp - ret i64 %t + %t = load i64, i64* %bsp + ret i64 %t } @INT = constant {i64, i64, i64*, i64, i8, i8, i8} - {i64 0, i64 0, i64* inttoptr (i64 0 to i64*), i64 3, i8 73, i8 78, i8 84} + {i64 0, i64 0, i64* inttoptr (i64 0 to i64*), i64 3, i8 73, i8 78, i8 84} define i64* @_cycle_in_spine(i64** %globasp) prefix {i8*, i64} {i8* inttoptr (i64 0 to i8*), i64 0} { - call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @printf_cycle, i64 0, i64 0)) - unreachable + call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @printf_cycle, i64 0, i64 0)) + unreachable } |