---
source: hugr-llvm/src/extension/int.rs
expression: mod_str
---
; ModuleID = 'test_context'
source_filename = "test_context"
define private i8 @_hl.main.1(i8 %0, i8 %1) {
alloca_block:
%"0" = alloca i8, align 1
%"2_0" = alloca i8, align 1
%"2_1" = alloca i8, align 1
%"4_0" = alloca i8, align 1
br label %entry_block
entry_block: ; preds = %alloca_block
store i8 %0, i8* %"2_0", align 1
store i8 %1, i8* %"2_1", align 1
%"2_01" = load i8, i8* %"2_0", align 1
%"2_12" = load i8, i8* %"2_1", align 1
%acc_ptr = alloca i8, align 1
%exp_ptr = alloca i8, align 1
store i8 %"2_01", i8* %acc_ptr, align 1
store i8 %"2_12", i8* %exp_ptr, align 1
br label %pow
pow: ; preds = %pow_body, %entry_block
%acc = load i8, i8* %acc_ptr, align 1
%exp = load i8, i8* %exp_ptr, align 1
switch i8 %exp, label %pow_body [
i8 1, label %done
i8 0, label %power_of_zero
]
power_of_zero: ; preds = %pow
store i8 1, i8* %acc_ptr, align 1
br label %done
pow_body: ; preds = %pow
%new_acc = mul i8 %acc, %"2_01"
%new_exp = sub i8 %exp, 1
store i8 %new_acc, i8* %acc_ptr, align 1
store i8 %new_exp, i8* %exp_ptr, align 1
br label %pow
done: ; preds = %pow, %power_of_zero
%result = load i8, i8* %acc_ptr, align 1
store i8 %result, i8* %"4_0", align 1
%"4_03" = load i8, i8* %"4_0", align 1
store i8 %"4_03", i8* %"0", align 1
%"04" = load i8, i8* %"0", align 1
ret i8 %"04"
}