hugr-llvm 0.28.0

A general and extensible crate for lowering HUGRs into LLVM IR
---
source: hugr-llvm/src/extension/int.rs
expression: mod_str
---
; ModuleID = 'test_context'
source_filename = "test_context"

define internal i8 @_hl.main.1(i8 %0, i8 %1) !dbg !3 {
alloca_block:
  br label %entry_block

entry_block:                                      ; preds = %alloca_block
  %acc_ptr = alloca i8, align 1, !dbg !8
  %exp_ptr = alloca i8, align 1, !dbg !8
  store i8 %0, ptr %acc_ptr, align 1, !dbg !8
  store i8 %1, ptr %exp_ptr, align 1, !dbg !8
  br label %pow, !dbg !8

pow:                                              ; preds = %pow_body, %entry_block
  %acc = load i8, ptr %acc_ptr, align 1, !dbg !8
  %exp = load i8, ptr %exp_ptr, align 1, !dbg !8
  switch i8 %exp, label %pow_body [
    i8 1, label %done
    i8 0, label %power_of_zero
  ], !dbg !8

power_of_zero:                                    ; preds = %pow
  store i8 1, ptr %acc_ptr, align 1, !dbg !8
  br label %done, !dbg !8

pow_body:                                         ; preds = %pow
  %new_acc = mul i8 %acc, %0, !dbg !8
  %new_exp = sub i8 %exp, 1, !dbg !8
  store i8 %new_acc, ptr %acc_ptr, align 1, !dbg !8
  store i8 %new_exp, ptr %exp_ptr, align 1, !dbg !8
  br label %pow, !dbg !8

done:                                             ; preds = %pow, %power_of_zero
  %result = load i8, ptr %acc_ptr, align 1, !dbg !8
  ret i8 %result
}

!llvm.module.flags = !{!0}
!llvm.dbg.cu = !{!1}

!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = distinct !DICompileUnit(language: DW_LANG_Python, file: !2, producer: "hugr_llvm_test", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
!2 = !DIFile(filename: "/cmJrSnVYeXFf/zCkHdtWCCnkJhPKiWSKICgZuRNRvR/mbrfVq.gpy.py", directory: "/lPNzlV/ClAphFG/yrhvZs/eDgUn/eIVwAutKJHaZEPSZwPXPeycUvnujGxZ")
!3 = distinct !DISubprogram(name: "_hl.main.1", linkageName: "_hl.main.1", scope: null, file: !4, line: 25254, type: !5, scopeLine: 25255, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1)
!4 = !DIFile(filename: "/cmJrSnVYeXFf/zCkHdtWCCnkJhPKiWSKICgZuRNRvR/mbrfVq.gpy.py", directory: "")
!5 = !DISubroutineType(types: !6)
!6 = !{!7, !7, !7}
!7 = !DIBasicType(name: "i8", size: 8, encoding: DW_ATE_unsigned)
!8 = !DILocation(line: 27062, column: 402, scope: !3)