diff --git a/hugr-llvm/src/emit.rs b/hugr-llvm/src/emit.rs index 12fe3e52d..6297321d6 100644 --- a/hugr-llvm/src/emit.rs +++ b/hugr-llvm/src/emit.rs @@ -139,7 +139,7 @@ impl<'c, 'a, H> EmitModuleContext<'c, 'a, H> { let name = self.name_func(name, node); match visibility { Visibility::Public => self.get_func_impl(name, llvm_func_ty, Some(Linkage::External)), - Visibility::Private => self.get_func_impl(name, llvm_func_ty, Some(Linkage::Private)), + Visibility::Private => self.get_func_impl(name, llvm_func_ty, Some(Linkage::Internal)), _ => self.get_func_impl(name, llvm_func_ty, None), } } diff --git a/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__diverse_outputs@llvm21.snap b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__diverse_outputs@llvm21.snap index ac48d6a2a..770b3bd6d 100644 --- a/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__diverse_outputs@llvm21.snap +++ b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__diverse_outputs@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__diverse_outputs@pre-mem2reg@llvm14.snap b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__diverse_outputs@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..8220d39af --- /dev/null +++ b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__diverse_outputs@pre-mem2reg@llvm14.snap @@ -0,0 +1,91 @@ +--- +source: hugr-llvm/src/emit/ops/cfg.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal 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 + %"7_0" = alloca i8, align 1 + %"7_1" = alloca i8, align 1 + %"03" = alloca i8, align 1 + %"11_0" = alloca i8, align 1 + %"11_1" = alloca i8, align 1 + %"9_0" = alloca { i8, i8 }, align 8 + %"13_0" = alloca { i1, i8 }, align 8 + 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 + store i8 %"2_01", i8* %"7_0", align 1 + store i8 %"2_12", i8* %"7_1", align 1 + br label %2 + +2: ; preds = %11, %entry_block + %"7_04" = load i8, i8* %"7_0", align 1 + %"7_15" = load i8, i8* %"7_1", align 1 + store i8 %"7_04", i8* %"7_0", align 1 + store i8 %"7_15", i8* %"7_1", align 1 + %"7_06" = load i8, i8* %"7_0", align 1 + %"7_17" = load i8, i8* %"7_1", align 1 + %3 = insertvalue { i8, i8 } poison, i8 %"7_06", 0 + %4 = insertvalue { i8, i8 } %3, i8 %"7_17", 1 + store { i8, i8 } %4, { i8, i8 }* %"9_0", align 1 + %"9_08" = load { i8, i8 }, { i8, i8 }* %"9_0", align 1 + store { i8, i8 } %"9_08", { i8, i8 }* %"9_0", align 1 + %"9_09" = load { i8, i8 }, { i8, i8 }* %"9_0", align 1 + switch i1 false, label %5 [ + ] + +5: ; preds = %2 + %6 = extractvalue { i8, i8 } %"9_09", 0 + %7 = extractvalue { i8, i8 } %"9_09", 1 + store i8 %6, i8* %"11_0", align 1 + store i8 %7, i8* %"11_1", align 1 + br label %8 + +8: ; preds = %5 + %"11_011" = load i8, i8* %"11_0", align 1 + %"11_112" = load i8, i8* %"11_1", align 1 + store i8 %"11_011", i8* %"11_0", align 1 + store i8 %"11_112", i8* %"11_1", align 1 + %"11_013" = load i8, i8* %"11_0", align 1 + %9 = insertvalue { i1, i8 } { i1 false, i8 poison }, i8 %"11_013", 1 + store { i1, i8 } %9, { i1, i8 }* %"13_0", align 1 + %"13_014" = load { i1, i8 }, { i1, i8 }* %"13_0", align 1 + %"11_115" = load i8, i8* %"11_1", align 1 + store { i1, i8 } %"13_014", { i1, i8 }* %"13_0", align 1 + store i8 %"11_115", i8* %"11_1", align 1 + %"13_016" = load { i1, i8 }, { i1, i8 }* %"13_0", align 1 + %"11_117" = load i8, i8* %"11_1", align 1 + %10 = extractvalue { i1, i8 } %"13_016", 0 + switch i1 %10, label %11 [ + i1 true, label %13 + ] + +11: ; preds = %8 + %12 = extractvalue { i1, i8 } %"13_016", 1 + store i8 %12, i8* %"7_0", align 1 + store i8 %"11_117", i8* %"7_1", align 1 + br label %2 + +13: ; preds = %8 + store i8 %"11_117", i8* %"03", align 1 + br label %14 + +14: ; preds = %13 + %"010" = load i8, i8* %"03", align 1 + store i8 %"010", i8* %"4_0", align 1 + %"4_018" = load i8, i8* %"4_0", align 1 + store i8 %"4_018", i8* %"0", align 1 + %"019" = load i8, i8* %"0", align 1 + ret i8 %"019" +} diff --git a/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__diverse_outputs@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__diverse_outputs@pre-mem2reg@llvm21.snap index a338cdeb6..75af16a73 100644 --- a/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__diverse_outputs@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__diverse_outputs@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__nested@llvm21.snap b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__nested@llvm21.snap index 568ead9dc..8bcb038df 100644 --- a/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__nested@llvm21.snap +++ b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__nested@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i2 %0, i1 %1) { +define internal i1 @_hl.main.1(i2 %0, i1 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__nested@pre-mem2reg@llvm14.snap b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__nested@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..1d4a9c9bb --- /dev/null +++ b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__nested@pre-mem2reg@llvm14.snap @@ -0,0 +1,158 @@ +--- +source: hugr-llvm/src/emit/ops/cfg.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal i1 @_hl.main.1(i2 %0, i1 %1) { +alloca_block: + %"0" = alloca i1, align 1 + %"5_0" = alloca {}, align 8 + %"2_0" = alloca i2, align 1 + %"2_1" = alloca i1, align 1 + %"6_0" = alloca i1, align 1 + %"9_0" = alloca i2, align 1 + %"9_1" = alloca i1, align 1 + %"03" = alloca i1, align 1 + %"11_0" = alloca i1, align 1 + %"06" = alloca i1, align 1 + %"20_0" = alloca i1, align 1 + %"25_0" = alloca i1, align 1 + %"39_0" = alloca i1, align 1 + %"44_0" = alloca i1, align 1 + br label %entry_block + +entry_block: ; preds = %alloca_block + store {} undef, {}* %"5_0", align 1 + store i2 %0, i2* %"2_0", align 1 + store i1 %1, i1* %"2_1", align 1 + %"2_01" = load i2, i2* %"2_0", align 1 + %"2_12" = load i1, i1* %"2_1", align 1 + store i2 %"2_01", i2* %"9_0", align 1 + store i1 %"2_12", i1* %"9_1", align 1 + br label %2 + +2: ; preds = %entry_block + %"9_04" = load i2, i2* %"9_0", align 1 + %"9_15" = load i1, i1* %"9_1", align 1 + store i2 %"9_04", i2* %"9_0", align 1 + store i1 %"9_15", i1* %"9_1", align 1 + br label %8 + +3: ; preds = %19 + store i1 true, i1* %"39_0", align 1 + %"5_025" = load {}, {}* %"5_0", align 1 + %"39_026" = load i1, i1* %"39_0", align 1 + store {} %"5_025", {}* %"5_0", align 1 + store i1 %"39_026", i1* %"39_0", align 1 + %"5_027" = load {}, {}* %"5_0", align 1 + %"39_028" = load i1, i1* %"39_0", align 1 + switch i1 false, label %4 [ + ] + +4: ; preds = %3 + store i1 %"39_028", i1* %"03", align 1 + br label %7 + +5: ; preds = %20 + store i1 false, i1* %"44_0", align 1 + %"5_029" = load {}, {}* %"5_0", align 1 + %"44_030" = load i1, i1* %"44_0", align 1 + store {} %"5_029", {}* %"5_0", align 1 + store i1 %"44_030", i1* %"44_0", align 1 + %"5_031" = load {}, {}* %"5_0", align 1 + %"44_032" = load i1, i1* %"44_0", align 1 + switch i1 false, label %6 [ + ] + +6: ; preds = %5 + store i1 %"44_032", i1* %"03", align 1 + br label %7 + +7: ; preds = %6, %4 + %"024" = load i1, i1* %"03", align 1 + store i1 %"024", i1* %"6_0", align 1 + %"6_033" = load i1, i1* %"6_0", align 1 + store i1 %"6_033", i1* %"0", align 1 + %"034" = load i1, i1* %"0", align 1 + ret i1 %"034" + +8: ; preds = %2 + %"9_07" = load i2, i2* %"9_0", align 1 + store i2 %"9_07", i2* %"9_0", align 1 + %"9_08" = load i2, i2* %"9_0", align 1 + switch i2 %"9_08", label %9 [ + i2 1, label %10 + i2 -2, label %11 + ] + +9: ; preds = %8 + br label %12 + +10: ; preds = %8 + br label %14 + +11: ; preds = %8 + br label %16 + +12: ; preds = %9 + store i1 true, i1* %"20_0", align 1 + %"5_010" = load {}, {}* %"5_0", align 1 + %"20_011" = load i1, i1* %"20_0", align 1 + store {} %"5_010", {}* %"5_0", align 1 + store i1 %"20_011", i1* %"20_0", align 1 + %"5_012" = load {}, {}* %"5_0", align 1 + %"20_013" = load i1, i1* %"20_0", align 1 + switch i1 false, label %13 [ + ] + +13: ; preds = %12 + store i1 %"20_013", i1* %"06", align 1 + br label %18 + +14: ; preds = %10 + store i1 false, i1* %"25_0", align 1 + %"5_014" = load {}, {}* %"5_0", align 1 + %"25_015" = load i1, i1* %"25_0", align 1 + store {} %"5_014", {}* %"5_0", align 1 + store i1 %"25_015", i1* %"25_0", align 1 + %"5_016" = load {}, {}* %"5_0", align 1 + %"25_017" = load i1, i1* %"25_0", align 1 + switch i1 false, label %15 [ + ] + +15: ; preds = %14 + store i1 %"25_017", i1* %"06", align 1 + br label %18 + +16: ; preds = %11 + %"5_018" = load {}, {}* %"5_0", align 1 + %"9_119" = load i1, i1* %"9_1", align 1 + store {} %"5_018", {}* %"5_0", align 1 + store i1 %"9_119", i1* %"9_1", align 1 + %"5_020" = load {}, {}* %"5_0", align 1 + %"9_121" = load i1, i1* %"9_1", align 1 + switch i1 false, label %17 [ + ] + +17: ; preds = %16 + store i1 %"9_121", i1* %"06", align 1 + br label %18 + +18: ; preds = %17, %15, %13 + %"09" = load i1, i1* %"06", align 1 + store i1 %"09", i1* %"11_0", align 1 + %"11_022" = load i1, i1* %"11_0", align 1 + store i1 %"11_022", i1* %"11_0", align 1 + %"11_023" = load i1, i1* %"11_0", align 1 + switch i1 %"11_023", label %19 [ + i1 true, label %20 + ] + +19: ; preds = %18 + br label %3 + +20: ; preds = %18 + br label %5 +} diff --git a/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__nested@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__nested@pre-mem2reg@llvm21.snap index 09b7aab8f..ac3622fb8 100644 --- a/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__nested@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/ops/snapshots/hugr_llvm__emit__ops__cfg__test__nested@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i2 %0, i1 %1) { +define internal i1 @_hl.main.1(i2 %0, i1 %1) { alloca_block: %"0" = alloca i1, align 1 %"5_0" = alloca {}, align 8 diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_cfg_children@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_cfg_children@llvm21.snap index 3fc944443..21c5362e2 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_cfg_children@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_cfg_children@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1() { +define internal i1 @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_cfg_children@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_cfg_children@pre-mem2reg@llvm21.snap index f2af0827d..f28e7526d 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_cfg_children@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_cfg_children@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1() { +define internal i1 @_hl.main.1() { alloca_block: %"0" = alloca i1, align 1 %"4_0" = alloca i1, align 1 diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_module_children@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_module_children@llvm21.snap index 60cddb8f7..b4d1d527f 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_module_children@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_module_children@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private void @_hl.f1.1() { +define internal void @_hl.f1.1() { alloca_block: br label %entry_block @@ -13,7 +13,7 @@ entry_block: ; preds = %alloca_block ret void } -define private void @_hl.f2.4() { +define internal void @_hl.f2.4() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_module_children@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_module_children@pre-mem2reg@llvm21.snap index 60cddb8f7..b4d1d527f 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_module_children@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__diverse_module_children@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private void @_hl.f1.1() { +define internal void @_hl.f1.1() { alloca_block: br label %entry_block @@ -13,7 +13,7 @@ entry_block: ; preds = %alloca_block ret void } -define private void @_hl.f2.4() { +define internal void @_hl.f2.4() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_conditional@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_conditional@llvm21.snap index bad0e2664..8ee0b2189 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_conditional@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_conditional@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { { i2, i2, i1 }, {} } @_hl.main.1({ i2, i2, i1 } %0, {} %1) { +define internal { { i2, i2, i1 }, {} } @_hl.main.1({ i2, i2, i1 } %0, {} %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_conditional@pre-mem2reg@llvm14.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_conditional@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..2880db6b4 --- /dev/null +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_conditional@pre-mem2reg@llvm14.snap @@ -0,0 +1,118 @@ +--- +source: hugr-llvm/src/emit/test.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { { i2, i2, i1 }, {} } @_hl.main.1({ i2, i2, i1 } %0, {} %1) { +alloca_block: + %"0" = alloca { i2, i2, i1 }, align 8 + %"1" = alloca {}, align 8 + %"2_0" = alloca { i2, i2, i1 }, align 8 + %"2_1" = alloca {}, align 8 + %"4_0" = alloca { i2, i2, i1 }, align 8 + %"4_1" = alloca {}, align 8 + %"03" = alloca { i2, i2, i1 }, align 8 + %"14" = alloca {}, align 8 + %"07" = alloca {}, align 8 + %"18" = alloca {}, align 8 + %"6_0" = alloca {}, align 8 + %"6_1" = alloca {}, align 8 + %"8_0" = alloca { i2, i2, i1 }, align 8 + %"014" = alloca i1, align 1 + %"115" = alloca {}, align 8 + %"10_0" = alloca i1, align 1 + %"10_1" = alloca {}, align 8 + %"12_0" = alloca { i2, i2, i1 }, align 8 + %"021" = alloca i2, align 1 + %"122" = alloca {}, align 8 + %"14_0" = alloca i2, align 1 + %"14_1" = alloca {}, align 8 + %"16_0" = alloca { i2, i2, i1 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store { i2, i2, i1 } %0, { i2, i2, i1 }* %"2_0", align 1 + store {} %1, {}* %"2_1", align 1 + %"2_01" = load { i2, i2, i1 }, { i2, i2, i1 }* %"2_0", align 1 + %"2_12" = load {}, {}* %"2_1", align 1 + %2 = extractvalue { i2, i2, i1 } %"2_01", 0 + switch i2 %2, label %3 [ + i2 1, label %4 + i2 -2, label %6 + ] + +3: ; preds = %entry_block + store {} undef, {}* %"07", align 1 + store {} %"2_12", {}* %"18", align 1 + br label %cond_4_case_0 + +4: ; preds = %entry_block + %5 = extractvalue { i2, i2, i1 } %"2_01", 2 + store i1 %5, i1* %"014", align 1 + store {} %"2_12", {}* %"115", align 1 + br label %cond_4_case_1 + +6: ; preds = %entry_block + %7 = extractvalue { i2, i2, i1 } %"2_01", 1 + store i2 %7, i2* %"021", align 1 + store {} %"2_12", {}* %"122", align 1 + br label %cond_4_case_2 + +cond_4_case_0: ; preds = %3 + %"09" = load {}, {}* %"07", align 1 + %"110" = load {}, {}* %"18", align 1 + store {} %"09", {}* %"6_0", align 1 + store {} %"110", {}* %"6_1", align 1 + %"6_011" = load {}, {}* %"6_0", align 1 + store { i2, i2, i1 } { i2 -2, i2 poison, i1 poison }, { i2, i2, i1 }* %"8_0", align 1 + %"8_012" = load { i2, i2, i1 }, { i2, i2, i1 }* %"8_0", align 1 + %"6_113" = load {}, {}* %"6_1", align 1 + store { i2, i2, i1 } %"8_012", { i2, i2, i1 }* %"03", align 1 + store {} %"6_113", {}* %"14", align 1 + br label %cond_exit_4 + +cond_4_case_1: ; preds = %4 + %"016" = load i1, i1* %"014", align 1 + %"117" = load {}, {}* %"115", align 1 + store i1 %"016", i1* %"10_0", align 1 + store {} %"117", {}* %"10_1", align 1 + %"10_018" = load i1, i1* %"10_0", align 1 + %8 = insertvalue { i2, i2, i1 } { i2 1, i2 poison, i1 poison }, i1 %"10_018", 2 + store { i2, i2, i1 } %8, { i2, i2, i1 }* %"12_0", align 1 + %"12_019" = load { i2, i2, i1 }, { i2, i2, i1 }* %"12_0", align 1 + %"10_120" = load {}, {}* %"10_1", align 1 + store { i2, i2, i1 } %"12_019", { i2, i2, i1 }* %"03", align 1 + store {} %"10_120", {}* %"14", align 1 + br label %cond_exit_4 + +cond_4_case_2: ; preds = %6 + %"023" = load i2, i2* %"021", align 1 + %"124" = load {}, {}* %"122", align 1 + store i2 %"023", i2* %"14_0", align 1 + store {} %"124", {}* %"14_1", align 1 + %"14_025" = load i2, i2* %"14_0", align 1 + %9 = insertvalue { i2, i2, i1 } { i2 0, i2 poison, i1 poison }, i2 %"14_025", 1 + store { i2, i2, i1 } %9, { i2, i2, i1 }* %"16_0", align 1 + %"16_026" = load { i2, i2, i1 }, { i2, i2, i1 }* %"16_0", align 1 + %"14_127" = load {}, {}* %"14_1", align 1 + store { i2, i2, i1 } %"16_026", { i2, i2, i1 }* %"03", align 1 + store {} %"14_127", {}* %"14", align 1 + br label %cond_exit_4 + +cond_exit_4: ; preds = %cond_4_case_2, %cond_4_case_1, %cond_4_case_0 + %"05" = load { i2, i2, i1 }, { i2, i2, i1 }* %"03", align 1 + %"16" = load {}, {}* %"14", align 1 + store { i2, i2, i1 } %"05", { i2, i2, i1 }* %"4_0", align 1 + store {} %"16", {}* %"4_1", align 1 + %"4_028" = load { i2, i2, i1 }, { i2, i2, i1 }* %"4_0", align 1 + %"4_129" = load {}, {}* %"4_1", align 1 + store { i2, i2, i1 } %"4_028", { i2, i2, i1 }* %"0", align 1 + store {} %"4_129", {}* %"1", align 1 + %"030" = load { i2, i2, i1 }, { i2, i2, i1 }* %"0", align 1 + %"131" = load {}, {}* %"1", align 1 + %mrv = insertvalue { { i2, i2, i1 }, {} } undef, { i2, i2, i1 } %"030", 0 + %mrv32 = insertvalue { { i2, i2, i1 }, {} } %mrv, {} %"131", 1 + ret { { i2, i2, i1 }, {} } %mrv32 +} diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_conditional@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_conditional@pre-mem2reg@llvm21.snap index 4d5f34398..2baed530e 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_conditional@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_conditional@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { { i2, i2, i1 }, {} } @_hl.main.1({ i2, i2, i1 } %0, {} %1) { +define internal { { i2, i2, i1 }, {} } @_hl.main.1({ i2, i2, i1 } %0, {} %1) { alloca_block: %"0" = alloca { i2, i2, i1 }, align 8 %"1" = alloca {}, align 8 diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_custom_op@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_custom_op@llvm21.snap index 63830de0e..32799b0df 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_custom_op@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_custom_op@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i16 @_hl.main.1() { +define internal i16 @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_custom_op@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_custom_op@pre-mem2reg@llvm21.snap index d67a1b6d1..a45f82a3d 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_custom_op@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_custom_op@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i16 @_hl.main.1() { +define internal i16 @_hl.main.1() { alloca_block: %"0" = alloca i16, align 2 %"7_0" = alloca i16, align 2 diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_dfg@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_dfg@llvm21.snap index 67db0f353..6faf29819 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_dfg@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_dfg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private {} @_hl.main.1({} %0) { +define internal {} @_hl.main.1({} %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_dfg@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_dfg@pre-mem2reg@llvm21.snap index 7de5f45e8..34154dd94 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_dfg@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_dfg@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private {} @_hl.main.1({} %0) { +define internal {} @_hl.main.1({} %0) { alloca_block: %"0" = alloca {}, align 8 %"2_0" = alloca {}, align 8 diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_load_constant@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_load_constant@llvm21.snap index 2ba28ca88..9cd852369 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_load_constant@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_load_constant@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i2, i16 } @_hl.main.1() { +define internal { i2, i16 } @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_load_constant@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_load_constant@pre-mem2reg@llvm21.snap index 3f84d7590..8c9534b21 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_load_constant@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_load_constant@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i2, i16 } @_hl.main.1() { +define internal { i2, i16 } @_hl.main.1() { alloca_block: %"0" = alloca { i2, i16 }, align 8 %"5_0" = alloca { i2, i16 }, align 8 diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_tag@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_tag@llvm21.snap index b86aaf7f7..704673a1d 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_tag@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_tag@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i2 @_hl.main.1() { +define internal i2 @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_tag@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_tag@pre-mem2reg@llvm21.snap index ebe8ab837..795d0bd4c 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_tag@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__emit_hugr_tag@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i2 @_hl.main.1() { +define internal i2 @_hl.main.1() { alloca_block: %"0" = alloca i2, align 1 %"4_0" = alloca i2, align 1 diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__load_function@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__load_function@llvm21.snap index 18ce34e5f..3674865e9 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__load_function@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__load_function@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private ptr @_hl.main.2() { +define internal ptr @_hl.main.2() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__load_function@pre-mem2reg@llvm14.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__load_function@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..153196ad5 --- /dev/null +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__load_function@pre-mem2reg@llvm14.snap @@ -0,0 +1,22 @@ +--- +source: hugr-llvm/src/emit/test.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal void ()* @_hl.main.2() { +alloca_block: + %"0" = alloca void ()*, align 8 + %"5_0" = alloca void ()*, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store void ()* @_hl.target_func.1, void ()** %"5_0", align 8 + %"5_01" = load void ()*, void ()** %"5_0", align 8 + store void ()* %"5_01", void ()** %"0", align 8 + %"02" = load void ()*, void ()** %"0", align 8 + ret void ()* %"02" +} + +declare void @_hl.target_func.1() diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__load_function@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__load_function@pre-mem2reg@llvm21.snap index ff8390840..0042ebf0d 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__load_function@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__load_function@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private ptr @_hl.main.2() { +define internal ptr @_hl.main.2() { alloca_block: %"0" = alloca ptr, align 8 %"5_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop@llvm21.snap index b7384eed1..fd487897e 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1() { +define internal i64 @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop@pre-mem2reg@llvm14.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..add766e43 --- /dev/null +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop@pre-mem2reg@llvm14.snap @@ -0,0 +1,123 @@ +--- +source: hugr-llvm/src/emit/test.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal i64 @_hl.main.1() { +alloca_block: + %"0" = alloca i64, align 8 + %"7_0" = alloca i64, align 8 + %"5_0" = alloca i64, align 8 + %"8_0" = alloca i64, align 8 + %"9_0" = alloca i64, align 8 + %"9_1" = alloca i64, align 8 + %"17_0" = alloca { i1, i64 }, align 8 + %"16_0" = alloca i64, align 8 + %"15_0" = alloca i64, align 8 + %"12_0" = alloca i64, align 8 + %"13_0" = alloca i1, align 1 + %"011" = alloca { i1, i64 }, align 8 + %"013" = alloca i64, align 8 + %"23_0" = alloca i64, align 8 + %"20_0" = alloca i64, align 8 + %"24_0" = alloca i64, align 8 + %"25_0" = alloca { i1, i64 }, align 8 + %"019" = alloca i64, align 8 + %"29_0" = alloca { i1, i64 }, align 8 + %"27_0" = alloca i64, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 7, i64* %"7_0", align 4 + store i64 3, i64* %"5_0", align 4 + %"5_01" = load i64, i64* %"5_0", align 4 + %"7_02" = load i64, i64* %"7_0", align 4 + store i64 %"5_01", i64* %"9_0", align 4 + store i64 %"7_02", i64* %"9_1", align 4 + br label %loop_body + +loop_body: ; preds = %8, %entry_block + %"9_03" = load i64, i64* %"9_0", align 4 + %"9_14" = load i64, i64* %"9_1", align 4 + store i64 2, i64* %"15_0", align 4 + store i64 0, i64* %"12_0", align 4 + store i64 %"9_03", i64* %"9_0", align 4 + store i64 %"9_14", i64* %"9_1", align 4 + %"9_15" = load i64, i64* %"9_1", align 4 + %"15_06" = load i64, i64* %"15_0", align 4 + %0 = mul i64 %"9_15", %"15_06" + store i64 %0, i64* %"16_0", align 4 + %"9_07" = load i64, i64* %"9_0", align 4 + %"12_08" = load i64, i64* %"12_0", align 4 + %1 = icmp eq i64 %"9_07", %"12_08" + %2 = select i1 %1, i1 true, i1 false + store i1 %2, i1* %"13_0", align 1 + %"13_09" = load i1, i1* %"13_0", align 1 + %"9_010" = load i64, i64* %"9_0", align 4 + switch i1 %"13_09", label %3 [ + i1 true, label %4 + ] + +3: ; preds = %loop_body + store i64 %"9_010", i64* %"013", align 4 + br label %cond_17_case_0 + +4: ; preds = %loop_body + store i64 %"9_010", i64* %"019", align 4 + br label %cond_17_case_1 + +loop_out: ; preds = %10 + %"8_026" = load i64, i64* %"8_0", align 4 + store i64 %"8_026", i64* %"0", align 4 + %"027" = load i64, i64* %"0", align 4 + ret i64 %"027" + +cond_17_case_0: ; preds = %3 + %"014" = load i64, i64* %"013", align 4 + store i64 1, i64* %"23_0", align 4 + store i64 %"014", i64* %"20_0", align 4 + %"20_015" = load i64, i64* %"20_0", align 4 + %"23_016" = load i64, i64* %"23_0", align 4 + %5 = sub i64 %"20_015", %"23_016" + store i64 %5, i64* %"24_0", align 4 + %"24_017" = load i64, i64* %"24_0", align 4 + %6 = insertvalue { i1, i64 } { i1 false, i64 poison }, i64 %"24_017", 1 + store { i1, i64 } %6, { i1, i64 }* %"25_0", align 4 + %"25_018" = load { i1, i64 }, { i1, i64 }* %"25_0", align 4 + store { i1, i64 } %"25_018", { i1, i64 }* %"011", align 4 + br label %cond_exit_17 + +cond_17_case_1: ; preds = %4 + %"020" = load i64, i64* %"019", align 4 + store { i1, i64 } { i1 true, i64 poison }, { i1, i64 }* %"29_0", align 4 + %"29_021" = load { i1, i64 }, { i1, i64 }* %"29_0", align 4 + store { i1, i64 } %"29_021", { i1, i64 }* %"011", align 4 + store i64 %"020", i64* %"27_0", align 4 + br label %cond_exit_17 + +cond_exit_17: ; preds = %cond_17_case_1, %cond_17_case_0 + %"012" = load { i1, i64 }, { i1, i64 }* %"011", align 4 + store { i1, i64 } %"012", { i1, i64 }* %"17_0", align 4 + %"17_022" = load { i1, i64 }, { i1, i64 }* %"17_0", align 4 + %"16_023" = load i64, i64* %"16_0", align 4 + store { i1, i64 } %"17_022", { i1, i64 }* %"17_0", align 4 + store i64 %"16_023", i64* %"16_0", align 4 + %"17_024" = load { i1, i64 }, { i1, i64 }* %"17_0", align 4 + %"16_025" = load i64, i64* %"16_0", align 4 + %7 = extractvalue { i1, i64 } %"17_024", 0 + switch i1 %7, label %8 [ + i1 true, label %10 + ] + +8: ; preds = %cond_exit_17 + %9 = extractvalue { i1, i64 } %"17_024", 1 + store i64 %9, i64* %"9_0", align 4 + store i64 %"16_025", i64* %"9_1", align 4 + br label %loop_body + +10: ; preds = %cond_exit_17 + store i64 %"16_025", i64* %"8_0", align 4 + br label %loop_out +} diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop@pre-mem2reg@llvm21.snap index 4733fc026..6c501582b 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1() { +define internal i64 @_hl.main.1() { alloca_block: %"0" = alloca i64, align 8 %"7_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop_simple@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop_simple@llvm21.snap index 9965c52b2..1de16db27 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop_simple@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop_simple@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private {} @_hl.main.1(i64 %0) { +define internal {} @_hl.main.1(i64 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop_simple@pre-mem2reg@llvm21.snap b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop_simple@pre-mem2reg@llvm21.snap index ec31b7fed..1f61e2c6a 100644 --- a/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop_simple@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/emit/snapshots/hugr_llvm__emit__test__test_fns__tail_loop_simple@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private {} @_hl.main.1(i64 %0) { +define internal {} @_hl.main.1(i64 %0) { alloca_block: %"0" = alloca {}, align 8 %"2_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@llvm14.snap new file mode 100644 index 000000000..6dacd55ab --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@llvm14.snap @@ -0,0 +1,271 @@ +--- +source: hugr-llvm/src/extension/collections/array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@1 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.1 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@2 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.2 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@3 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.3 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@4 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.4 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal void @_hl.main.1() { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = insertvalue { i64*, i64 } poison, i64* %1, 0 + %3 = insertvalue { i64*, i64 } %2, i64 0, 1 + %4 = getelementptr inbounds i64, i64* %1, i64 0 + store i64 1, i64* %4, align 4 + %5 = getelementptr inbounds i64, i64* %1, i64 1 + store i64 2, i64* %5, align 4 + %6 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %7 = bitcast i8* %6 to i64* + %8 = insertvalue { i64*, i64 } poison, i64* %7, 0 + %9 = insertvalue { i64*, i64 } %8, i64 0, 1 + %10 = getelementptr inbounds i64, i64* %7, i64 0 + store i64 1, i64* %10, align 4 + %11 = getelementptr inbounds i64, i64* %7, i64 1 + store i64 2, i64* %11, align 4 + %array_ptr = extractvalue { i64*, i64 } %9, 0 + %array_offset = extractvalue { i64*, i64 } %9, 1 + %12 = add i64 %array_offset, 0 + %13 = getelementptr inbounds i64, i64* %array_ptr, i64 %12 + %14 = load i64, i64* %13, align 4 + %15 = add i64 %array_offset, 1 + %16 = getelementptr inbounds i64, i64* %array_ptr, i64 %15 + %17 = load i64, i64* %16, align 4 + %array_ptr9 = extractvalue { i64*, i64 } %3, 0 + %array_offset10 = extractvalue { i64*, i64 } %3, 1 + %18 = icmp ult i64 0, 2 + %19 = icmp ult i64 1, 2 + %20 = and i1 %18, %19 + br i1 %20, label %23, label %21 + +21: ; preds = %entry_block + %22 = insertvalue { i1, { i64*, i64 } } { i1 false, { i64*, i64 } poison }, { i64*, i64 } %3, 1 + br label %31 + +23: ; preds = %entry_block + %24 = add i64 0, %array_offset10 + %25 = add i64 1, %array_offset10 + %26 = getelementptr inbounds i64, i64* %array_ptr9, i64 %24 + %27 = load i64, i64* %26, align 4 + %28 = getelementptr inbounds i64, i64* %array_ptr9, i64 %25 + %29 = load i64, i64* %28, align 4 + store i64 %29, i64* %26, align 4 + store i64 %27, i64* %28, align 4 + %30 = insertvalue { i1, { i64*, i64 } } { i1 true, { i64*, i64 } poison }, { i64*, i64 } %3, 1 + br label %31 + +31: ; preds = %21, %23 + %"0.0" = phi { i1, { i64*, i64 } } [ %30, %23 ], [ %22, %21 ] + %32 = extractvalue { i1, { i64*, i64 } } %"0.0", 0 + switch i1 %32, label %33 [ + i1 true, label %35 + ] + +33: ; preds = %31 + %34 = extractvalue { i1, { i64*, i64 } } %"0.0", 1 + br label %cond_19_case_0 + +35: ; preds = %31 + %36 = extractvalue { i1, { i64*, i64 } } %"0.0", 1 + br label %cond_19_case_1 + +cond_19_case_0: ; preds = %33 + %37 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @0, i32 0, i32 0) }, 0 + %38 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @0, i32 0, i32 0) }, 1 + %39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 %37, i8* %38) + call void @abort() + br label %cond_exit_19 + +cond_19_case_1: ; preds = %35 + br label %cond_exit_19 + +cond_exit_19: ; preds = %cond_19_case_1, %cond_19_case_0 + %"013.0" = phi { i64*, i64 } [ zeroinitializer, %cond_19_case_0 ], [ %36, %cond_19_case_1 ] + %array_ptr25 = extractvalue { i64*, i64 } %"013.0", 0 + %array_offset26 = extractvalue { i64*, i64 } %"013.0", 1 + %40 = icmp ult i64 0, 2 + br i1 %40, label %42, label %41 + +41: ; preds = %cond_exit_19 + br label %47 + +42: ; preds = %cond_exit_19 + %43 = add i64 0, %array_offset26 + %44 = getelementptr inbounds i64, i64* %array_ptr25, i64 %43 + %45 = load i64, i64* %44, align 4 + %46 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %45, 1 + br label %47 + +47: ; preds = %41, %42 + %"027.0" = phi { i1, i64 } [ %46, %42 ], [ { i1 false, i64 poison }, %41 ] + %48 = extractvalue { i1, i64 } %"027.0", 0 + switch i1 %48, label %49 [ + i1 true, label %50 + ] + +49: ; preds = %47 + br label %cond_31_case_0 + +50: ; preds = %47 + %51 = extractvalue { i1, i64 } %"027.0", 1 + br label %cond_31_case_1 + +cond_31_case_0: ; preds = %49 + %52 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @1, i32 0, i32 0) }, 0 + %53 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @1, i32 0, i32 0) }, 1 + %54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.1, i32 0, i32 0), i32 %52, i8* %53) + call void @abort() + br label %cond_exit_31 + +cond_31_case_1: ; preds = %50 + br label %cond_exit_31 + +cond_exit_31: ; preds = %cond_31_case_1, %cond_31_case_0 + %"031.0" = phi i64 [ 0, %cond_31_case_0 ], [ %51, %cond_31_case_1 ] + %array_ptr41 = extractvalue { i64*, i64 } %"013.0", 0 + %array_offset42 = extractvalue { i64*, i64 } %"013.0", 1 + %55 = icmp ult i64 1, 2 + br i1 %55, label %59, label %56 + +56: ; preds = %cond_exit_31 + %57 = insertvalue { i1, { i64*, i64 }, i64 } { i1 false, { i64*, i64 } poison, i64 poison }, i64 %"031.0", 2 + %58 = insertvalue { i1, { i64*, i64 }, i64 } %57, { i64*, i64 } %"013.0", 1 + br label %65 + +59: ; preds = %cond_exit_31 + %60 = add i64 1, %array_offset42 + %61 = getelementptr inbounds i64, i64* %array_ptr41, i64 %60 + %62 = load i64, i64* %61, align 4 + store i64 %"031.0", i64* %61, align 4 + %63 = insertvalue { i1, { i64*, i64 }, i64 } { i1 true, { i64*, i64 } poison, i64 poison }, i64 %62, 2 + %64 = insertvalue { i1, { i64*, i64 }, i64 } %63, { i64*, i64 } %"013.0", 1 + br label %65 + +65: ; preds = %56, %59 + %"043.0" = phi { i1, { i64*, i64 }, i64 } [ %64, %59 ], [ %58, %56 ] + %66 = extractvalue { i1, { i64*, i64 }, i64 } %"043.0", 0 + switch i1 %66, label %67 [ + i1 true, label %70 + ] + +67: ; preds = %65 + %68 = extractvalue { i1, { i64*, i64 }, i64 } %"043.0", 2 + %69 = extractvalue { i1, { i64*, i64 }, i64 } %"043.0", 1 + br label %cond_42_case_0 + +70: ; preds = %65 + %71 = extractvalue { i1, { i64*, i64 }, i64 } %"043.0", 2 + %72 = extractvalue { i1, { i64*, i64 }, i64 } %"043.0", 1 + br label %cond_42_case_1 + +cond_42_case_0: ; preds = %67 + %73 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @2, i32 0, i32 0) }, 0 + %74 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @2, i32 0, i32 0) }, 1 + %75 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.2, i32 0, i32 0), i32 %73, i8* %74) + call void @abort() + br label %cond_exit_42 + +cond_42_case_1: ; preds = %70 + br label %cond_exit_42 + +cond_exit_42: ; preds = %cond_42_case_1, %cond_42_case_0 + %"046.0" = phi i64 [ 0, %cond_42_case_0 ], [ %71, %cond_42_case_1 ] + %"147.0" = phi { i64*, i64 } [ zeroinitializer, %cond_42_case_0 ], [ %72, %cond_42_case_1 ] + %array_ptr66 = extractvalue { i64*, i64 } %"147.0", 0 + %array_offset67 = extractvalue { i64*, i64 } %"147.0", 1 + %new_offset = add i64 %array_offset67, 1 + %76 = getelementptr inbounds i64, i64* %array_ptr66, i64 %array_offset67 + %77 = load i64, i64* %76, align 4 + %78 = insertvalue { i64*, i64 } poison, i64* %array_ptr66, 0 + %79 = insertvalue { i64*, i64 } %78, i64 %new_offset, 1 + %80 = insertvalue { i1, { i64*, i64 }, i64 } { i1 true, { i64*, i64 } poison, i64 poison }, i64 %77, 2 + %81 = insertvalue { i1, { i64*, i64 }, i64 } %80, { i64*, i64 } %79, 1 + %82 = extractvalue { i1, { i64*, i64 }, i64 } %81, 0 + switch i1 %82, label %83 [ + i1 true, label %84 + ] + +83: ; preds = %cond_exit_42 + br label %cond_53_case_0 + +84: ; preds = %cond_exit_42 + %85 = extractvalue { i1, { i64*, i64 }, i64 } %81, 2 + %86 = extractvalue { i1, { i64*, i64 }, i64 } %81, 1 + br label %cond_53_case_1 + +cond_53_case_0: ; preds = %83 + %87 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @3, i32 0, i32 0) }, 0 + %88 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @3, i32 0, i32 0) }, 1 + %89 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.3, i32 0, i32 0), i32 %87, i8* %88) + call void @abort() + br label %cond_exit_53 + +cond_53_case_1: ; preds = %84 + br label %cond_exit_53 + +cond_exit_53: ; preds = %cond_53_case_1, %cond_53_case_0 + %"069.0" = phi i64 [ 0, %cond_53_case_0 ], [ %85, %cond_53_case_1 ] + %"170.0" = phi { i64*, i64 } [ zeroinitializer, %cond_53_case_0 ], [ %86, %cond_53_case_1 ] + %array_ptr83 = extractvalue { i64*, i64 } %"170.0", 0 + %array_offset84 = extractvalue { i64*, i64 } %"170.0", 1 + %90 = add i64 %array_offset84, 0 + %91 = getelementptr inbounds i64, i64* %array_ptr83, i64 %90 + %92 = load i64, i64* %91, align 4 + %93 = insertvalue { i64*, i64 } poison, i64* %array_ptr83, 0 + %94 = insertvalue { i64*, i64 } %93, i64 %array_offset84, 1 + %95 = insertvalue { i1, { i64*, i64 }, i64 } { i1 true, { i64*, i64 } poison, i64 poison }, i64 %92, 2 + %96 = insertvalue { i1, { i64*, i64 }, i64 } %95, { i64*, i64 } %94, 1 + %97 = extractvalue { i1, { i64*, i64 }, i64 } %96, 0 + switch i1 %97, label %98 [ + i1 true, label %99 + ] + +98: ; preds = %cond_exit_53 + br label %cond_64_case_0 + +99: ; preds = %cond_exit_53 + %100 = extractvalue { i1, { i64*, i64 }, i64 } %96, 2 + %101 = extractvalue { i1, { i64*, i64 }, i64 } %96, 1 + br label %cond_64_case_1 + +cond_64_case_0: ; preds = %98 + %102 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @4, i32 0, i32 0) }, 0 + %103 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @4, i32 0, i32 0) }, 1 + %104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.4, i32 0, i32 0), i32 %102, i8* %103) + call void @abort() + br label %cond_exit_64 + +cond_64_case_1: ; preds = %99 + br label %cond_exit_64 + +cond_exit_64: ; preds = %cond_64_case_1, %cond_64_case_0 + %"086.0" = phi i64 [ 0, %cond_64_case_0 ], [ %100, %cond_64_case_1 ] + %"187.0" = phi { i64*, i64 } [ zeroinitializer, %cond_64_case_0 ], [ %101, %cond_64_case_1 ] + %array_ptr100 = extractvalue { i64*, i64 } %"187.0", 0 + %array_offset101 = extractvalue { i64*, i64 } %"187.0", 1 + %105 = bitcast i64* %array_ptr100 to i8* + call void @free(i8* %105) + ret void +} + +declare i8* @malloc(i64) + +declare i32 @printf(i8*, ...) + +declare void @abort() + +declare void @free(i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@llvm21.snap index 484edd260..95021df4c 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@llvm21.snap @@ -16,7 +16,7 @@ source_filename = "test_context" @4 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 @prelude.panic_template.4 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..ec46e7d22 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@pre-mem2reg@llvm14.snap @@ -0,0 +1,476 @@ +--- +source: hugr-llvm/src/extension/collections/array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@1 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.1 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@2 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.2 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@3 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.3 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@4 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.4 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal void @_hl.main.1() { +alloca_block: + %"12_0" = alloca i64, align 8 + %"10_0" = alloca i64, align 8 + %"15_0" = alloca { i64*, i64 }, align 8 + %"13_0" = alloca { i64*, i64 }, align 8 + %"14_0" = alloca i64, align 8 + %"14_1" = alloca i64, align 8 + %"8_0" = alloca i64, align 8 + %"18_0" = alloca { i1, { i64*, i64 } }, align 8 + %"0" = alloca { i1, { i64*, i64 } }, align 8 + %"19_0" = alloca { i64*, i64 }, align 8 + %"013" = alloca { i64*, i64 }, align 8 + %"015" = alloca { i64*, i64 }, align 8 + %"24_0" = alloca { i32, i8* }, align 8 + %"21_0" = alloca { i64*, i64 }, align 8 + %"25_0" = alloca { i64*, i64 }, align 8 + %"020" = alloca { i64*, i64 }, align 8 + %"27_0" = alloca { i64*, i64 }, align 8 + %"29_0" = alloca { i1, i64 }, align 8 + %"29_1" = alloca { i64*, i64 }, align 8 + %"027" = alloca { i1, i64 }, align 8 + %"1" = alloca { i64*, i64 }, align 8 + %"31_0" = alloca i64, align 8 + %"031" = alloca i64, align 8 + %"36_0" = alloca { i32, i8* }, align 8 + %"37_0" = alloca i64, align 8 + %"035" = alloca i64, align 8 + %"39_0" = alloca i64, align 8 + %"41_0" = alloca { i1, { i64*, i64 }, i64 }, align 8 + %"043" = alloca { i1, { i64*, i64 }, i64 }, align 8 + %"42_0" = alloca i64, align 8 + %"42_1" = alloca { i64*, i64 }, align 8 + %"046" = alloca i64, align 8 + %"147" = alloca { i64*, i64 }, align 8 + %"050" = alloca i64, align 8 + %"151" = alloca { i64*, i64 }, align 8 + %"47_0" = alloca { i32, i8* }, align 8 + %"44_0" = alloca i64, align 8 + %"44_1" = alloca { i64*, i64 }, align 8 + %"48_0" = alloca i64, align 8 + %"48_1" = alloca { i64*, i64 }, align 8 + %"059" = alloca i64, align 8 + %"160" = alloca { i64*, i64 }, align 8 + %"50_0" = alloca i64, align 8 + %"50_1" = alloca { i64*, i64 }, align 8 + %"52_0" = alloca { i1, { i64*, i64 }, i64 }, align 8 + %"53_0" = alloca i64, align 8 + %"53_1" = alloca { i64*, i64 }, align 8 + %"069" = alloca i64, align 8 + %"170" = alloca { i64*, i64 }, align 8 + %"58_0" = alloca { i32, i8* }, align 8 + %"59_0" = alloca i64, align 8 + %"59_1" = alloca { i64*, i64 }, align 8 + %"076" = alloca i64, align 8 + %"177" = alloca { i64*, i64 }, align 8 + %"61_0" = alloca i64, align 8 + %"61_1" = alloca { i64*, i64 }, align 8 + %"63_0" = alloca { i1, { i64*, i64 }, i64 }, align 8 + %"64_0" = alloca i64, align 8 + %"64_1" = alloca { i64*, i64 }, align 8 + %"086" = alloca i64, align 8 + %"187" = alloca { i64*, i64 }, align 8 + %"69_0" = alloca { i32, i8* }, align 8 + %"70_0" = alloca i64, align 8 + %"70_1" = alloca { i64*, i64 }, align 8 + %"093" = alloca i64, align 8 + %"194" = alloca { i64*, i64 }, align 8 + %"72_0" = alloca i64, align 8 + %"72_1" = alloca { i64*, i64 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 2, i64* %"12_0", align 4 + store i64 1, i64* %"10_0", align 4 + %"10_01" = load i64, i64* %"10_0", align 4 + %"12_02" = load i64, i64* %"12_0", align 4 + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = insertvalue { i64*, i64 } poison, i64* %1, 0 + %3 = insertvalue { i64*, i64 } %2, i64 0, 1 + %4 = getelementptr inbounds i64, i64* %1, i64 0 + store i64 %"10_01", i64* %4, align 4 + %5 = getelementptr inbounds i64, i64* %1, i64 1 + store i64 %"12_02", i64* %5, align 4 + store { i64*, i64 } %3, { i64*, i64 }* %"15_0", align 8 + %"10_03" = load i64, i64* %"10_0", align 4 + %"12_04" = load i64, i64* %"12_0", align 4 + %6 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %7 = bitcast i8* %6 to i64* + %8 = insertvalue { i64*, i64 } poison, i64* %7, 0 + %9 = insertvalue { i64*, i64 } %8, i64 0, 1 + %10 = getelementptr inbounds i64, i64* %7, i64 0 + store i64 %"10_03", i64* %10, align 4 + %11 = getelementptr inbounds i64, i64* %7, i64 1 + store i64 %"12_04", i64* %11, align 4 + store { i64*, i64 } %9, { i64*, i64 }* %"13_0", align 8 + %"13_05" = load { i64*, i64 }, { i64*, i64 }* %"13_0", align 8 + %array_ptr = extractvalue { i64*, i64 } %"13_05", 0 + %array_offset = extractvalue { i64*, i64 } %"13_05", 1 + %12 = add i64 %array_offset, 0 + %13 = getelementptr inbounds i64, i64* %array_ptr, i64 %12 + %14 = load i64, i64* %13, align 4 + %15 = add i64 %array_offset, 1 + %16 = getelementptr inbounds i64, i64* %array_ptr, i64 %15 + %17 = load i64, i64* %16, align 4 + store i64 %14, i64* %"14_0", align 4 + store i64 %17, i64* %"14_1", align 4 + store i64 0, i64* %"8_0", align 4 + %"15_06" = load { i64*, i64 }, { i64*, i64 }* %"15_0", align 8 + %"8_07" = load i64, i64* %"8_0", align 4 + %"10_08" = load i64, i64* %"10_0", align 4 + %array_ptr9 = extractvalue { i64*, i64 } %"15_06", 0 + %array_offset10 = extractvalue { i64*, i64 } %"15_06", 1 + %18 = icmp ult i64 %"8_07", 2 + %19 = icmp ult i64 %"10_08", 2 + %20 = and i1 %18, %19 + br i1 %20, label %23, label %21 + +21: ; preds = %entry_block + %22 = insertvalue { i1, { i64*, i64 } } { i1 false, { i64*, i64 } poison }, { i64*, i64 } %"15_06", 1 + store { i1, { i64*, i64 } } %22, { i1, { i64*, i64 } }* %"0", align 8 + br label %31 + +23: ; preds = %entry_block + %24 = add i64 %"8_07", %array_offset10 + %25 = add i64 %"10_08", %array_offset10 + %26 = getelementptr inbounds i64, i64* %array_ptr9, i64 %24 + %27 = load i64, i64* %26, align 4 + %28 = getelementptr inbounds i64, i64* %array_ptr9, i64 %25 + %29 = load i64, i64* %28, align 4 + store i64 %29, i64* %26, align 4 + store i64 %27, i64* %28, align 4 + %30 = insertvalue { i1, { i64*, i64 } } { i1 true, { i64*, i64 } poison }, { i64*, i64 } %"15_06", 1 + store { i1, { i64*, i64 } } %30, { i1, { i64*, i64 } }* %"0", align 8 + br label %31 + +31: ; preds = %21, %23 + %"011" = load { i1, { i64*, i64 } }, { i1, { i64*, i64 } }* %"0", align 8 + store { i1, { i64*, i64 } } %"011", { i1, { i64*, i64 } }* %"18_0", align 8 + %"18_012" = load { i1, { i64*, i64 } }, { i1, { i64*, i64 } }* %"18_0", align 8 + %32 = extractvalue { i1, { i64*, i64 } } %"18_012", 0 + switch i1 %32, label %33 [ + i1 true, label %35 + ] + +33: ; preds = %31 + %34 = extractvalue { i1, { i64*, i64 } } %"18_012", 1 + store { i64*, i64 } %34, { i64*, i64 }* %"015", align 8 + br label %cond_19_case_0 + +35: ; preds = %31 + %36 = extractvalue { i1, { i64*, i64 } } %"18_012", 1 + store { i64*, i64 } %36, { i64*, i64 }* %"020", align 8 + br label %cond_19_case_1 + +cond_19_case_0: ; preds = %33 + %"016" = load { i64*, i64 }, { i64*, i64 }* %"015", align 8 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @0, i32 0, i32 0) }, { i32, i8* }* %"24_0", align 8 + store { i64*, i64 } %"016", { i64*, i64 }* %"21_0", align 8 + %"24_017" = load { i32, i8* }, { i32, i8* }* %"24_0", align 8 + %"21_018" = load { i64*, i64 }, { i64*, i64 }* %"21_0", align 8 + %37 = extractvalue { i32, i8* } %"24_017", 0 + %38 = extractvalue { i32, i8* } %"24_017", 1 + %39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 %37, i8* %38) + call void @abort() + store { i64*, i64 } zeroinitializer, { i64*, i64 }* %"25_0", align 8 + %"25_019" = load { i64*, i64 }, { i64*, i64 }* %"25_0", align 8 + store { i64*, i64 } %"25_019", { i64*, i64 }* %"013", align 8 + br label %cond_exit_19 + +cond_19_case_1: ; preds = %35 + %"021" = load { i64*, i64 }, { i64*, i64 }* %"020", align 8 + store { i64*, i64 } %"021", { i64*, i64 }* %"27_0", align 8 + %"27_022" = load { i64*, i64 }, { i64*, i64 }* %"27_0", align 8 + store { i64*, i64 } %"27_022", { i64*, i64 }* %"013", align 8 + br label %cond_exit_19 + +cond_exit_19: ; preds = %cond_19_case_1, %cond_19_case_0 + %"014" = load { i64*, i64 }, { i64*, i64 }* %"013", align 8 + store { i64*, i64 } %"014", { i64*, i64 }* %"19_0", align 8 + %"19_023" = load { i64*, i64 }, { i64*, i64 }* %"19_0", align 8 + %"8_024" = load i64, i64* %"8_0", align 4 + %array_ptr25 = extractvalue { i64*, i64 } %"19_023", 0 + %array_offset26 = extractvalue { i64*, i64 } %"19_023", 1 + %40 = icmp ult i64 %"8_024", 2 + br i1 %40, label %42, label %41 + +41: ; preds = %cond_exit_19 + store { i1, i64 } { i1 false, i64 poison }, { i1, i64 }* %"027", align 4 + store { i64*, i64 } %"19_023", { i64*, i64 }* %"1", align 8 + br label %47 + +42: ; preds = %cond_exit_19 + %43 = add i64 %"8_024", %array_offset26 + %44 = getelementptr inbounds i64, i64* %array_ptr25, i64 %43 + %45 = load i64, i64* %44, align 4 + %46 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %45, 1 + store { i1, i64 } %46, { i1, i64 }* %"027", align 4 + store { i64*, i64 } %"19_023", { i64*, i64 }* %"1", align 8 + br label %47 + +47: ; preds = %41, %42 + %"028" = load { i1, i64 }, { i1, i64 }* %"027", align 4 + %"129" = load { i64*, i64 }, { i64*, i64 }* %"1", align 8 + store { i1, i64 } %"028", { i1, i64 }* %"29_0", align 4 + store { i64*, i64 } %"129", { i64*, i64 }* %"29_1", align 8 + %"29_030" = load { i1, i64 }, { i1, i64 }* %"29_0", align 4 + %48 = extractvalue { i1, i64 } %"29_030", 0 + switch i1 %48, label %49 [ + i1 true, label %50 + ] + +49: ; preds = %47 + br label %cond_31_case_0 + +50: ; preds = %47 + %51 = extractvalue { i1, i64 } %"29_030", 1 + store i64 %51, i64* %"035", align 4 + br label %cond_31_case_1 + +cond_31_case_0: ; preds = %49 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @1, i32 0, i32 0) }, { i32, i8* }* %"36_0", align 8 + %"36_033" = load { i32, i8* }, { i32, i8* }* %"36_0", align 8 + %52 = extractvalue { i32, i8* } %"36_033", 0 + %53 = extractvalue { i32, i8* } %"36_033", 1 + %54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.1, i32 0, i32 0), i32 %52, i8* %53) + call void @abort() + store i64 0, i64* %"37_0", align 4 + %"37_034" = load i64, i64* %"37_0", align 4 + store i64 %"37_034", i64* %"031", align 4 + br label %cond_exit_31 + +cond_31_case_1: ; preds = %50 + %"036" = load i64, i64* %"035", align 4 + store i64 %"036", i64* %"39_0", align 4 + %"39_037" = load i64, i64* %"39_0", align 4 + store i64 %"39_037", i64* %"031", align 4 + br label %cond_exit_31 + +cond_exit_31: ; preds = %cond_31_case_1, %cond_31_case_0 + %"032" = load i64, i64* %"031", align 4 + store i64 %"032", i64* %"31_0", align 4 + %"29_138" = load { i64*, i64 }, { i64*, i64 }* %"29_1", align 8 + %"10_039" = load i64, i64* %"10_0", align 4 + %"31_040" = load i64, i64* %"31_0", align 4 + %array_ptr41 = extractvalue { i64*, i64 } %"29_138", 0 + %array_offset42 = extractvalue { i64*, i64 } %"29_138", 1 + %55 = icmp ult i64 %"10_039", 2 + br i1 %55, label %59, label %56 + +56: ; preds = %cond_exit_31 + %57 = insertvalue { i1, { i64*, i64 }, i64 } { i1 false, { i64*, i64 } poison, i64 poison }, i64 %"31_040", 2 + %58 = insertvalue { i1, { i64*, i64 }, i64 } %57, { i64*, i64 } %"29_138", 1 + store { i1, { i64*, i64 }, i64 } %58, { i1, { i64*, i64 }, i64 }* %"043", align 8 + br label %65 + +59: ; preds = %cond_exit_31 + %60 = add i64 %"10_039", %array_offset42 + %61 = getelementptr inbounds i64, i64* %array_ptr41, i64 %60 + %62 = load i64, i64* %61, align 4 + store i64 %"31_040", i64* %61, align 4 + %63 = insertvalue { i1, { i64*, i64 }, i64 } { i1 true, { i64*, i64 } poison, i64 poison }, i64 %62, 2 + %64 = insertvalue { i1, { i64*, i64 }, i64 } %63, { i64*, i64 } %"29_138", 1 + store { i1, { i64*, i64 }, i64 } %64, { i1, { i64*, i64 }, i64 }* %"043", align 8 + br label %65 + +65: ; preds = %56, %59 + %"044" = load { i1, { i64*, i64 }, i64 }, { i1, { i64*, i64 }, i64 }* %"043", align 8 + store { i1, { i64*, i64 }, i64 } %"044", { i1, { i64*, i64 }, i64 }* %"41_0", align 8 + %"41_045" = load { i1, { i64*, i64 }, i64 }, { i1, { i64*, i64 }, i64 }* %"41_0", align 8 + %66 = extractvalue { i1, { i64*, i64 }, i64 } %"41_045", 0 + switch i1 %66, label %67 [ + i1 true, label %70 + ] + +67: ; preds = %65 + %68 = extractvalue { i1, { i64*, i64 }, i64 } %"41_045", 2 + %69 = extractvalue { i1, { i64*, i64 }, i64 } %"41_045", 1 + store i64 %68, i64* %"050", align 4 + store { i64*, i64 } %69, { i64*, i64 }* %"151", align 8 + br label %cond_42_case_0 + +70: ; preds = %65 + %71 = extractvalue { i1, { i64*, i64 }, i64 } %"41_045", 2 + %72 = extractvalue { i1, { i64*, i64 }, i64 } %"41_045", 1 + store i64 %71, i64* %"059", align 4 + store { i64*, i64 } %72, { i64*, i64 }* %"160", align 8 + br label %cond_42_case_1 + +cond_42_case_0: ; preds = %67 + %"052" = load i64, i64* %"050", align 4 + %"153" = load { i64*, i64 }, { i64*, i64 }* %"151", align 8 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @2, i32 0, i32 0) }, { i32, i8* }* %"47_0", align 8 + store i64 %"052", i64* %"44_0", align 4 + store { i64*, i64 } %"153", { i64*, i64 }* %"44_1", align 8 + %"47_054" = load { i32, i8* }, { i32, i8* }* %"47_0", align 8 + %"44_055" = load i64, i64* %"44_0", align 4 + %"44_156" = load { i64*, i64 }, { i64*, i64 }* %"44_1", align 8 + %73 = extractvalue { i32, i8* } %"47_054", 0 + %74 = extractvalue { i32, i8* } %"47_054", 1 + %75 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.2, i32 0, i32 0), i32 %73, i8* %74) + call void @abort() + store i64 0, i64* %"48_0", align 4 + store { i64*, i64 } zeroinitializer, { i64*, i64 }* %"48_1", align 8 + %"48_057" = load i64, i64* %"48_0", align 4 + %"48_158" = load { i64*, i64 }, { i64*, i64 }* %"48_1", align 8 + store i64 %"48_057", i64* %"046", align 4 + store { i64*, i64 } %"48_158", { i64*, i64 }* %"147", align 8 + br label %cond_exit_42 + +cond_42_case_1: ; preds = %70 + %"061" = load i64, i64* %"059", align 4 + %"162" = load { i64*, i64 }, { i64*, i64 }* %"160", align 8 + store i64 %"061", i64* %"50_0", align 4 + store { i64*, i64 } %"162", { i64*, i64 }* %"50_1", align 8 + %"50_063" = load i64, i64* %"50_0", align 4 + %"50_164" = load { i64*, i64 }, { i64*, i64 }* %"50_1", align 8 + store i64 %"50_063", i64* %"046", align 4 + store { i64*, i64 } %"50_164", { i64*, i64 }* %"147", align 8 + br label %cond_exit_42 + +cond_exit_42: ; preds = %cond_42_case_1, %cond_42_case_0 + %"048" = load i64, i64* %"046", align 4 + %"149" = load { i64*, i64 }, { i64*, i64 }* %"147", align 8 + store i64 %"048", i64* %"42_0", align 4 + store { i64*, i64 } %"149", { i64*, i64 }* %"42_1", align 8 + %"42_165" = load { i64*, i64 }, { i64*, i64 }* %"42_1", align 8 + %array_ptr66 = extractvalue { i64*, i64 } %"42_165", 0 + %array_offset67 = extractvalue { i64*, i64 } %"42_165", 1 + %new_offset = add i64 %array_offset67, 1 + %76 = getelementptr inbounds i64, i64* %array_ptr66, i64 %array_offset67 + %77 = load i64, i64* %76, align 4 + %78 = insertvalue { i64*, i64 } poison, i64* %array_ptr66, 0 + %79 = insertvalue { i64*, i64 } %78, i64 %new_offset, 1 + %80 = insertvalue { i1, { i64*, i64 }, i64 } { i1 true, { i64*, i64 } poison, i64 poison }, i64 %77, 2 + %81 = insertvalue { i1, { i64*, i64 }, i64 } %80, { i64*, i64 } %79, 1 + store { i1, { i64*, i64 }, i64 } %81, { i1, { i64*, i64 }, i64 }* %"52_0", align 8 + %"52_068" = load { i1, { i64*, i64 }, i64 }, { i1, { i64*, i64 }, i64 }* %"52_0", align 8 + %82 = extractvalue { i1, { i64*, i64 }, i64 } %"52_068", 0 + switch i1 %82, label %83 [ + i1 true, label %84 + ] + +83: ; preds = %cond_exit_42 + br label %cond_53_case_0 + +84: ; preds = %cond_exit_42 + %85 = extractvalue { i1, { i64*, i64 }, i64 } %"52_068", 2 + %86 = extractvalue { i1, { i64*, i64 }, i64 } %"52_068", 1 + store i64 %85, i64* %"076", align 4 + store { i64*, i64 } %86, { i64*, i64 }* %"177", align 8 + br label %cond_53_case_1 + +cond_53_case_0: ; preds = %83 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @3, i32 0, i32 0) }, { i32, i8* }* %"58_0", align 8 + %"58_073" = load { i32, i8* }, { i32, i8* }* %"58_0", align 8 + %87 = extractvalue { i32, i8* } %"58_073", 0 + %88 = extractvalue { i32, i8* } %"58_073", 1 + %89 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.3, i32 0, i32 0), i32 %87, i8* %88) + call void @abort() + store i64 0, i64* %"59_0", align 4 + store { i64*, i64 } zeroinitializer, { i64*, i64 }* %"59_1", align 8 + %"59_074" = load i64, i64* %"59_0", align 4 + %"59_175" = load { i64*, i64 }, { i64*, i64 }* %"59_1", align 8 + store i64 %"59_074", i64* %"069", align 4 + store { i64*, i64 } %"59_175", { i64*, i64 }* %"170", align 8 + br label %cond_exit_53 + +cond_53_case_1: ; preds = %84 + %"078" = load i64, i64* %"076", align 4 + %"179" = load { i64*, i64 }, { i64*, i64 }* %"177", align 8 + store i64 %"078", i64* %"61_0", align 4 + store { i64*, i64 } %"179", { i64*, i64 }* %"61_1", align 8 + %"61_080" = load i64, i64* %"61_0", align 4 + %"61_181" = load { i64*, i64 }, { i64*, i64 }* %"61_1", align 8 + store i64 %"61_080", i64* %"069", align 4 + store { i64*, i64 } %"61_181", { i64*, i64 }* %"170", align 8 + br label %cond_exit_53 + +cond_exit_53: ; preds = %cond_53_case_1, %cond_53_case_0 + %"071" = load i64, i64* %"069", align 4 + %"172" = load { i64*, i64 }, { i64*, i64 }* %"170", align 8 + store i64 %"071", i64* %"53_0", align 4 + store { i64*, i64 } %"172", { i64*, i64 }* %"53_1", align 8 + %"53_182" = load { i64*, i64 }, { i64*, i64 }* %"53_1", align 8 + %array_ptr83 = extractvalue { i64*, i64 } %"53_182", 0 + %array_offset84 = extractvalue { i64*, i64 } %"53_182", 1 + %90 = add i64 %array_offset84, 0 + %91 = getelementptr inbounds i64, i64* %array_ptr83, i64 %90 + %92 = load i64, i64* %91, align 4 + %93 = insertvalue { i64*, i64 } poison, i64* %array_ptr83, 0 + %94 = insertvalue { i64*, i64 } %93, i64 %array_offset84, 1 + %95 = insertvalue { i1, { i64*, i64 }, i64 } { i1 true, { i64*, i64 } poison, i64 poison }, i64 %92, 2 + %96 = insertvalue { i1, { i64*, i64 }, i64 } %95, { i64*, i64 } %94, 1 + store { i1, { i64*, i64 }, i64 } %96, { i1, { i64*, i64 }, i64 }* %"63_0", align 8 + %"63_085" = load { i1, { i64*, i64 }, i64 }, { i1, { i64*, i64 }, i64 }* %"63_0", align 8 + %97 = extractvalue { i1, { i64*, i64 }, i64 } %"63_085", 0 + switch i1 %97, label %98 [ + i1 true, label %99 + ] + +98: ; preds = %cond_exit_53 + br label %cond_64_case_0 + +99: ; preds = %cond_exit_53 + %100 = extractvalue { i1, { i64*, i64 }, i64 } %"63_085", 2 + %101 = extractvalue { i1, { i64*, i64 }, i64 } %"63_085", 1 + store i64 %100, i64* %"093", align 4 + store { i64*, i64 } %101, { i64*, i64 }* %"194", align 8 + br label %cond_64_case_1 + +cond_64_case_0: ; preds = %98 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @4, i32 0, i32 0) }, { i32, i8* }* %"69_0", align 8 + %"69_090" = load { i32, i8* }, { i32, i8* }* %"69_0", align 8 + %102 = extractvalue { i32, i8* } %"69_090", 0 + %103 = extractvalue { i32, i8* } %"69_090", 1 + %104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.4, i32 0, i32 0), i32 %102, i8* %103) + call void @abort() + store i64 0, i64* %"70_0", align 4 + store { i64*, i64 } zeroinitializer, { i64*, i64 }* %"70_1", align 8 + %"70_091" = load i64, i64* %"70_0", align 4 + %"70_192" = load { i64*, i64 }, { i64*, i64 }* %"70_1", align 8 + store i64 %"70_091", i64* %"086", align 4 + store { i64*, i64 } %"70_192", { i64*, i64 }* %"187", align 8 + br label %cond_exit_64 + +cond_64_case_1: ; preds = %99 + %"095" = load i64, i64* %"093", align 4 + %"196" = load { i64*, i64 }, { i64*, i64 }* %"194", align 8 + store i64 %"095", i64* %"72_0", align 4 + store { i64*, i64 } %"196", { i64*, i64 }* %"72_1", align 8 + %"72_097" = load i64, i64* %"72_0", align 4 + %"72_198" = load { i64*, i64 }, { i64*, i64 }* %"72_1", align 8 + store i64 %"72_097", i64* %"086", align 4 + store { i64*, i64 } %"72_198", { i64*, i64 }* %"187", align 8 + br label %cond_exit_64 + +cond_exit_64: ; preds = %cond_64_case_1, %cond_64_case_0 + %"088" = load i64, i64* %"086", align 4 + %"189" = load { i64*, i64 }, { i64*, i64 }* %"187", align 8 + store i64 %"088", i64* %"64_0", align 4 + store { i64*, i64 } %"189", { i64*, i64 }* %"64_1", align 8 + %"64_199" = load { i64*, i64 }, { i64*, i64 }* %"64_1", align 8 + %array_ptr100 = extractvalue { i64*, i64 } %"64_199", 0 + %array_offset101 = extractvalue { i64*, i64 } %"64_199", 1 + %105 = bitcast i64* %array_ptr100 to i8* + call void @free(i8* %105) + ret void +} + +declare i8* @malloc(i64) + +declare i32 @printf(i8*, ...) + +declare void @abort() + +declare void @free(i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@pre-mem2reg@llvm21.snap index 7a11f9b9d..739b8cb94 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_all_ops@pre-mem2reg@llvm21.snap @@ -16,7 +16,7 @@ source_filename = "test_context" @4 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 @prelude.panic_template.4 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: %"12_0" = alloca i64, align 8 %"10_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@llvm14.snap new file mode 100644 index 000000000..76d875c07 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@llvm14.snap @@ -0,0 +1,24 @@ +--- +source: hugr-llvm/src/extension/collections/array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i64*, i64 } @_hl.main.1() { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = insertvalue { i64*, i64 } poison, i64* %1, 0 + %3 = insertvalue { i64*, i64 } %2, i64 0, 1 + %4 = getelementptr inbounds i64, i64* %1, i32 0 + store i64 1, i64* %4, align 4 + %5 = getelementptr inbounds i64, i64* %1, i32 1 + store i64 2, i64* %5, align 4 + ret { i64*, i64 } %3 +} + +declare i8* @malloc(i64) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@llvm21.snap index a2287a23d..27d251b8e 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, i64 } @_hl.main.1() { +define internal { ptr, i64 } @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..e89b65faa --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@pre-mem2reg@llvm14.snap @@ -0,0 +1,30 @@ +--- +source: hugr-llvm/src/extension/collections/array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i64*, i64 } @_hl.main.1() { +alloca_block: + %"0" = alloca { i64*, i64 }, align 8 + %"5_0" = alloca { i64*, i64 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = insertvalue { i64*, i64 } poison, i64* %1, 0 + %3 = insertvalue { i64*, i64 } %2, i64 0, 1 + %4 = getelementptr inbounds i64, i64* %1, i32 0 + store i64 1, i64* %4, align 4 + %5 = getelementptr inbounds i64, i64* %1, i32 1 + store i64 2, i64* %5, align 4 + store { i64*, i64 } %3, { i64*, i64 }* %"5_0", align 8 + %"5_01" = load { i64*, i64 }, { i64*, i64 }* %"5_0", align 8 + store { i64*, i64 } %"5_01", { i64*, i64 }* %"0", align 8 + %"02" = load { i64*, i64 }, { i64*, i64 }* %"0", align 8 + ret { i64*, i64 } %"02" +} + +declare i8* @malloc(i64) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@pre-mem2reg@llvm21.snap index fb124e173..59d8781c0 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_array_value@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, i64 } @_hl.main.1() { +define internal { ptr, i64 } @_hl.main.1() { alloca_block: %"0" = alloca { ptr, i64 }, align 8 %"5_0" = alloca { ptr, i64 }, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@llvm14.snap new file mode 100644 index 000000000..b1084e26a --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@llvm14.snap @@ -0,0 +1,45 @@ +--- +source: hugr-llvm/src/extension/collections/array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal void @_hl.main.1() { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = insertvalue { i64*, i64 } poison, i64* %1, 0 + %3 = insertvalue { i64*, i64 } %2, i64 0, 1 + %4 = getelementptr inbounds i64, i64* %1, i64 0 + store i64 1, i64* %4, align 4 + %5 = getelementptr inbounds i64, i64* %1, i64 1 + store i64 2, i64* %5, align 4 + %array_ptr = extractvalue { i64*, i64 } %3, 0 + %array_offset = extractvalue { i64*, i64 } %3, 1 + %6 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %7 = bitcast i8* %6 to i64* + %8 = insertvalue { i64*, i64 } poison, i64* %7, 0 + %9 = insertvalue { i64*, i64 } %8, i64 0, 1 + %10 = getelementptr inbounds i64, i64* %array_ptr, i64 %array_offset + call void @llvm.memcpy.p0i64.p0i64.i64(i64* %7, i64* %10, i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2), i1 false) + %array_ptr5 = extractvalue { i64*, i64 } %9, 0 + %11 = bitcast i64* %array_ptr5 to i8* + call void @free(i8* %11) + %array_ptr7 = extractvalue { i64*, i64 } %3, 0 + %12 = bitcast i64* %array_ptr7 to i8* + call void @free(i8* %12) + ret void +} + +declare i8* @malloc(i64) + +; Function Attrs: argmemonly nofree nounwind willreturn +declare void @llvm.memcpy.p0i64.p0i64.i64(i64* noalias nocapture writeonly, i64* noalias nocapture readonly, i64, i1 immarg) #0 + +declare void @free(i8*) + +attributes #0 = { argmemonly nofree nounwind willreturn } diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@llvm21.snap index 4785269dd..a0510362c 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..6016f34b4 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@pre-mem2reg@llvm14.snap @@ -0,0 +1,60 @@ +--- +source: hugr-llvm/src/extension/collections/array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal void @_hl.main.1() { +alloca_block: + %"7_0" = alloca i64, align 8 + %"5_0" = alloca i64, align 8 + %"8_0" = alloca { i64*, i64 }, align 8 + %"9_0" = alloca { i64*, i64 }, align 8 + %"9_1" = alloca { i64*, i64 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 2, i64* %"7_0", align 4 + store i64 1, i64* %"5_0", align 4 + %"5_01" = load i64, i64* %"5_0", align 4 + %"7_02" = load i64, i64* %"7_0", align 4 + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = insertvalue { i64*, i64 } poison, i64* %1, 0 + %3 = insertvalue { i64*, i64 } %2, i64 0, 1 + %4 = getelementptr inbounds i64, i64* %1, i64 0 + store i64 %"5_01", i64* %4, align 4 + %5 = getelementptr inbounds i64, i64* %1, i64 1 + store i64 %"7_02", i64* %5, align 4 + store { i64*, i64 } %3, { i64*, i64 }* %"8_0", align 8 + %"8_03" = load { i64*, i64 }, { i64*, i64 }* %"8_0", align 8 + %array_ptr = extractvalue { i64*, i64 } %"8_03", 0 + %array_offset = extractvalue { i64*, i64 } %"8_03", 1 + %6 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %7 = bitcast i8* %6 to i64* + %8 = insertvalue { i64*, i64 } poison, i64* %7, 0 + %9 = insertvalue { i64*, i64 } %8, i64 0, 1 + %10 = getelementptr inbounds i64, i64* %array_ptr, i64 %array_offset + call void @llvm.memcpy.p0i64.p0i64.i64(i64* %7, i64* %10, i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2), i1 false) + store { i64*, i64 } %"8_03", { i64*, i64 }* %"9_0", align 8 + store { i64*, i64 } %9, { i64*, i64 }* %"9_1", align 8 + %"9_14" = load { i64*, i64 }, { i64*, i64 }* %"9_1", align 8 + %array_ptr5 = extractvalue { i64*, i64 } %"9_14", 0 + %11 = bitcast i64* %array_ptr5 to i8* + call void @free(i8* %11) + %"9_06" = load { i64*, i64 }, { i64*, i64 }* %"9_0", align 8 + %array_ptr7 = extractvalue { i64*, i64 } %"9_06", 0 + %12 = bitcast i64* %array_ptr7 to i8* + call void @free(i8* %12) + ret void +} + +declare i8* @malloc(i64) + +; Function Attrs: argmemonly nofree nounwind willreturn +declare void @llvm.memcpy.p0i64.p0i64.i64(i64* noalias nocapture writeonly, i64* noalias nocapture readonly, i64, i1 immarg) #0 + +declare void @free(i8*) + +attributes #0 = { argmemonly nofree nounwind willreturn } diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@pre-mem2reg@llvm21.snap index e93f3c0cc..9d3e89414 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_clone@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: %"7_0" = alloca i64, align 8 %"5_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_get@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_get@llvm21.snap index d6972ac66..129f7df48 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_get@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_get@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_get@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_get@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..db57b2bf0 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_get@pre-mem2reg@llvm14.snap @@ -0,0 +1,68 @@ +--- +source: hugr-llvm/src/extension/collections/array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal void @_hl.main.1() { +alloca_block: + %"7_0" = alloca i64, align 8 + %"5_0" = alloca i64, align 8 + %"8_0" = alloca { i64*, i64 }, align 8 + %"9_0" = alloca { i1, i64 }, align 8 + %"9_1" = alloca { i64*, i64 }, align 8 + %"0" = alloca { i1, i64 }, align 8 + %"1" = alloca { i64*, i64 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 2, i64* %"7_0", align 4 + store i64 1, i64* %"5_0", align 4 + %"5_01" = load i64, i64* %"5_0", align 4 + %"7_02" = load i64, i64* %"7_0", align 4 + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = insertvalue { i64*, i64 } poison, i64* %1, 0 + %3 = insertvalue { i64*, i64 } %2, i64 0, 1 + %4 = getelementptr inbounds i64, i64* %1, i64 0 + store i64 %"5_01", i64* %4, align 4 + %5 = getelementptr inbounds i64, i64* %1, i64 1 + store i64 %"7_02", i64* %5, align 4 + store { i64*, i64 } %3, { i64*, i64 }* %"8_0", align 8 + %"8_03" = load { i64*, i64 }, { i64*, i64 }* %"8_0", align 8 + %"5_04" = load i64, i64* %"5_0", align 4 + %array_ptr = extractvalue { i64*, i64 } %"8_03", 0 + %array_offset = extractvalue { i64*, i64 } %"8_03", 1 + %6 = icmp ult i64 %"5_04", 2 + br i1 %6, label %8, label %7 + +7: ; preds = %entry_block + store { i1, i64 } { i1 false, i64 poison }, { i1, i64 }* %"0", align 4 + store { i64*, i64 } %"8_03", { i64*, i64 }* %"1", align 8 + br label %13 + +8: ; preds = %entry_block + %9 = add i64 %"5_04", %array_offset + %10 = getelementptr inbounds i64, i64* %array_ptr, i64 %9 + %11 = load i64, i64* %10, align 4 + %12 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %11, 1 + store { i1, i64 } %12, { i1, i64 }* %"0", align 4 + store { i64*, i64 } %"8_03", { i64*, i64 }* %"1", align 8 + br label %13 + +13: ; preds = %7, %8 + %"05" = load { i1, i64 }, { i1, i64 }* %"0", align 4 + %"16" = load { i64*, i64 }, { i64*, i64 }* %"1", align 8 + store { i1, i64 } %"05", { i1, i64 }* %"9_0", align 4 + store { i64*, i64 } %"16", { i64*, i64 }* %"9_1", align 8 + %"9_17" = load { i64*, i64 }, { i64*, i64 }* %"9_1", align 8 + %array_ptr8 = extractvalue { i64*, i64 } %"9_17", 0 + %14 = bitcast i64* %array_ptr8 to i8* + call void @free(i8* %14) + ret void +} + +declare i8* @malloc(i64) + +declare void @free(i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_get@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_get@pre-mem2reg@llvm21.snap index 73d94e286..b940a4ccd 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_get@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__array__test__emit_get@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: %"7_0" = alloca i64, align 8 %"5_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@llvm14.snap new file mode 100644 index 000000000..c290af600 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@llvm14.snap @@ -0,0 +1,323 @@ +--- +source: hugr-llvm/src/extension/collections/borrow_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [34 x i8] c"Array element is already borrowed\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@1 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.1 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@2 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.2 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@3 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.3 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@4 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.4 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@5 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.5 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal void @_hl.main.1() { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %3 = bitcast i8* %2 to i64* + call void @llvm.memset.p0i64.i64(i64* %3, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %4 = insertvalue { i64*, i64*, i64 } poison, i64* %1, 0 + %5 = insertvalue { i64*, i64*, i64 } %4, i64* %3, 1 + %6 = insertvalue { i64*, i64*, i64 } %5, i64 0, 2 + %7 = getelementptr inbounds i64, i64* %1, i64 0 + store i64 1, i64* %7, align 4 + %8 = getelementptr inbounds i64, i64* %1, i64 1 + store i64 2, i64* %8, align 4 + %9 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %10 = bitcast i8* %9 to i64* + %11 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %12 = bitcast i8* %11 to i64* + call void @llvm.memset.p0i64.i64(i64* %12, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %13 = insertvalue { i64*, i64*, i64 } poison, i64* %10, 0 + %14 = insertvalue { i64*, i64*, i64 } %13, i64* %12, 1 + %15 = insertvalue { i64*, i64*, i64 } %14, i64 0, 2 + %16 = getelementptr inbounds i64, i64* %10, i64 0 + store i64 1, i64* %16, align 4 + %17 = getelementptr inbounds i64, i64* %10, i64 1 + store i64 2, i64* %17, align 4 + %array_ptr = extractvalue { i64*, i64*, i64 } %15, 0 + %array_mask_ptr = extractvalue { i64*, i64*, i64 } %15, 1 + %array_offset = extractvalue { i64*, i64*, i64 } %15, 2 + %18 = add i64 %array_offset, 0 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr, i64 %18) + %19 = getelementptr inbounds i64, i64* %array_ptr, i64 %18 + %20 = load i64, i64* %19, align 4 + %21 = add i64 %array_offset, 1 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr, i64 %21) + %22 = getelementptr inbounds i64, i64* %array_ptr, i64 %21 + %23 = load i64, i64* %22, align 4 + %array_ptr9 = extractvalue { i64*, i64*, i64 } %6, 0 + %array_mask_ptr10 = extractvalue { i64*, i64*, i64 } %6, 1 + %array_offset11 = extractvalue { i64*, i64*, i64 } %6, 2 + %24 = icmp ult i64 0, 2 + %25 = icmp ult i64 1, 2 + %26 = and i1 %24, %25 + br i1 %26, label %29, label %27 + +27: ; preds = %entry_block + %28 = insertvalue { i1, { i64*, i64*, i64 } } { i1 false, { i64*, i64*, i64 } poison }, { i64*, i64*, i64 } %6, 1 + br label %37 + +29: ; preds = %entry_block + %30 = add i64 0, %array_offset11 + %31 = add i64 1, %array_offset11 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr10, i64 %30) + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr10, i64 %31) + %32 = getelementptr inbounds i64, i64* %array_ptr9, i64 %30 + %33 = load i64, i64* %32, align 4 + %34 = getelementptr inbounds i64, i64* %array_ptr9, i64 %31 + %35 = load i64, i64* %34, align 4 + store i64 %35, i64* %32, align 4 + store i64 %33, i64* %34, align 4 + %36 = insertvalue { i1, { i64*, i64*, i64 } } { i1 true, { i64*, i64*, i64 } poison }, { i64*, i64*, i64 } %6, 1 + br label %37 + +37: ; preds = %27, %29 + %"0.0" = phi { i1, { i64*, i64*, i64 } } [ %36, %29 ], [ %28, %27 ] + %38 = extractvalue { i1, { i64*, i64*, i64 } } %"0.0", 0 + switch i1 %38, label %39 [ + i1 true, label %41 + ] + +39: ; preds = %37 + %40 = extractvalue { i1, { i64*, i64*, i64 } } %"0.0", 1 + br label %cond_19_case_0 + +41: ; preds = %37 + %42 = extractvalue { i1, { i64*, i64*, i64 } } %"0.0", 1 + br label %cond_19_case_1 + +cond_19_case_0: ; preds = %39 + %43 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @1, i32 0, i32 0) }, 0 + %44 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @1, i32 0, i32 0) }, 1 + %45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.1, i32 0, i32 0), i32 %43, i8* %44) + call void @abort() + br label %cond_exit_19 + +cond_19_case_1: ; preds = %41 + br label %cond_exit_19 + +cond_exit_19: ; preds = %cond_19_case_1, %cond_19_case_0 + %"014.0" = phi { i64*, i64*, i64 } [ zeroinitializer, %cond_19_case_0 ], [ %42, %cond_19_case_1 ] + %array_ptr26 = extractvalue { i64*, i64*, i64 } %"014.0", 0 + %array_mask_ptr27 = extractvalue { i64*, i64*, i64 } %"014.0", 1 + %array_offset28 = extractvalue { i64*, i64*, i64 } %"014.0", 2 + %46 = icmp ult i64 0, 2 + br i1 %46, label %48, label %47 + +47: ; preds = %cond_exit_19 + br label %53 + +48: ; preds = %cond_exit_19 + %49 = add i64 0, %array_offset28 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr27, i64 %49) + %50 = getelementptr inbounds i64, i64* %array_ptr26, i64 %49 + %51 = load i64, i64* %50, align 4 + %52 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %51, 1 + br label %53 + +53: ; preds = %47, %48 + %"029.0" = phi { i1, i64 } [ %52, %48 ], [ { i1 false, i64 poison }, %47 ] + %54 = extractvalue { i1, i64 } %"029.0", 0 + switch i1 %54, label %55 [ + i1 true, label %56 + ] + +55: ; preds = %53 + br label %cond_31_case_0 + +56: ; preds = %53 + %57 = extractvalue { i1, i64 } %"029.0", 1 + br label %cond_31_case_1 + +cond_31_case_0: ; preds = %55 + %58 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @2, i32 0, i32 0) }, 0 + %59 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @2, i32 0, i32 0) }, 1 + %60 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.2, i32 0, i32 0), i32 %58, i8* %59) + call void @abort() + br label %cond_exit_31 + +cond_31_case_1: ; preds = %56 + br label %cond_exit_31 + +cond_exit_31: ; preds = %cond_31_case_1, %cond_31_case_0 + %"033.0" = phi i64 [ 0, %cond_31_case_0 ], [ %57, %cond_31_case_1 ] + %array_ptr43 = extractvalue { i64*, i64*, i64 } %"014.0", 0 + %array_mask_ptr44 = extractvalue { i64*, i64*, i64 } %"014.0", 1 + %array_offset45 = extractvalue { i64*, i64*, i64 } %"014.0", 2 + %61 = icmp ult i64 1, 2 + br i1 %61, label %65, label %62 + +62: ; preds = %cond_exit_31 + %63 = insertvalue { i1, { i64*, i64*, i64 }, i64 } { i1 false, { i64*, i64*, i64 } poison, i64 poison }, i64 %"033.0", 2 + %64 = insertvalue { i1, { i64*, i64*, i64 }, i64 } %63, { i64*, i64*, i64 } %"014.0", 1 + br label %71 + +65: ; preds = %cond_exit_31 + %66 = add i64 1, %array_offset45 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr44, i64 %66) + %67 = getelementptr inbounds i64, i64* %array_ptr43, i64 %66 + %68 = load i64, i64* %67, align 4 + store i64 %"033.0", i64* %67, align 4 + %69 = insertvalue { i1, { i64*, i64*, i64 }, i64 } { i1 true, { i64*, i64*, i64 } poison, i64 poison }, i64 %68, 2 + %70 = insertvalue { i1, { i64*, i64*, i64 }, i64 } %69, { i64*, i64*, i64 } %"014.0", 1 + br label %71 + +71: ; preds = %62, %65 + %"046.0" = phi { i1, { i64*, i64*, i64 }, i64 } [ %70, %65 ], [ %64, %62 ] + %72 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"046.0", 0 + switch i1 %72, label %73 [ + i1 true, label %76 + ] + +73: ; preds = %71 + %74 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"046.0", 2 + %75 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"046.0", 1 + br label %cond_42_case_0 + +76: ; preds = %71 + %77 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"046.0", 2 + %78 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"046.0", 1 + br label %cond_42_case_1 + +cond_42_case_0: ; preds = %73 + %79 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @3, i32 0, i32 0) }, 0 + %80 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @3, i32 0, i32 0) }, 1 + %81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.3, i32 0, i32 0), i32 %79, i8* %80) + call void @abort() + br label %cond_exit_42 + +cond_42_case_1: ; preds = %76 + br label %cond_exit_42 + +cond_exit_42: ; preds = %cond_42_case_1, %cond_42_case_0 + %"049.0" = phi i64 [ 0, %cond_42_case_0 ], [ %77, %cond_42_case_1 ] + %"150.0" = phi { i64*, i64*, i64 } [ zeroinitializer, %cond_42_case_0 ], [ %78, %cond_42_case_1 ] + %array_ptr69 = extractvalue { i64*, i64*, i64 } %"150.0", 0 + %array_mask_ptr70 = extractvalue { i64*, i64*, i64 } %"150.0", 1 + %array_offset71 = extractvalue { i64*, i64*, i64 } %"150.0", 2 + %new_offset = add i64 %array_offset71, 1 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr70, i64 %array_offset71) + %82 = getelementptr inbounds i64, i64* %array_ptr69, i64 %array_offset71 + %83 = load i64, i64* %82, align 4 + %84 = insertvalue { i64*, i64*, i64 } poison, i64* %array_ptr69, 0 + %85 = insertvalue { i64*, i64*, i64 } %84, i64* %array_mask_ptr70, 1 + %86 = insertvalue { i64*, i64*, i64 } %85, i64 %new_offset, 2 + %87 = insertvalue { i1, { i64*, i64*, i64 }, i64 } { i1 true, { i64*, i64*, i64 } poison, i64 poison }, i64 %83, 2 + %88 = insertvalue { i1, { i64*, i64*, i64 }, i64 } %87, { i64*, i64*, i64 } %86, 1 + %89 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %88, 0 + switch i1 %89, label %90 [ + i1 true, label %91 + ] + +90: ; preds = %cond_exit_42 + br label %cond_53_case_0 + +91: ; preds = %cond_exit_42 + %92 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %88, 2 + %93 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %88, 1 + br label %cond_53_case_1 + +cond_53_case_0: ; preds = %90 + %94 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @4, i32 0, i32 0) }, 0 + %95 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @4, i32 0, i32 0) }, 1 + %96 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.4, i32 0, i32 0), i32 %94, i8* %95) + call void @abort() + br label %cond_exit_53 + +cond_53_case_1: ; preds = %91 + br label %cond_exit_53 + +cond_exit_53: ; preds = %cond_53_case_1, %cond_53_case_0 + %"073.0" = phi i64 [ 0, %cond_53_case_0 ], [ %92, %cond_53_case_1 ] + %"174.0" = phi { i64*, i64*, i64 } [ zeroinitializer, %cond_53_case_0 ], [ %93, %cond_53_case_1 ] + %array_ptr87 = extractvalue { i64*, i64*, i64 } %"174.0", 0 + %array_mask_ptr88 = extractvalue { i64*, i64*, i64 } %"174.0", 1 + %array_offset89 = extractvalue { i64*, i64*, i64 } %"174.0", 2 + %97 = add i64 %array_offset89, 0 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr88, i64 %97) + %98 = getelementptr inbounds i64, i64* %array_ptr87, i64 %97 + %99 = load i64, i64* %98, align 4 + %100 = insertvalue { i64*, i64*, i64 } poison, i64* %array_ptr87, 0 + %101 = insertvalue { i64*, i64*, i64 } %100, i64* %array_mask_ptr88, 1 + %102 = insertvalue { i64*, i64*, i64 } %101, i64 %array_offset89, 2 + %103 = insertvalue { i1, { i64*, i64*, i64 }, i64 } { i1 true, { i64*, i64*, i64 } poison, i64 poison }, i64 %99, 2 + %104 = insertvalue { i1, { i64*, i64*, i64 }, i64 } %103, { i64*, i64*, i64 } %102, 1 + %105 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %104, 0 + switch i1 %105, label %106 [ + i1 true, label %107 + ] + +106: ; preds = %cond_exit_53 + br label %cond_64_case_0 + +107: ; preds = %cond_exit_53 + %108 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %104, 2 + %109 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %104, 1 + br label %cond_64_case_1 + +cond_64_case_0: ; preds = %106 + %110 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @5, i32 0, i32 0) }, 0 + %111 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @5, i32 0, i32 0) }, 1 + %112 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.5, i32 0, i32 0), i32 %110, i8* %111) + call void @abort() + br label %cond_exit_64 + +cond_64_case_1: ; preds = %107 + br label %cond_exit_64 + +cond_exit_64: ; preds = %cond_64_case_1, %cond_64_case_0 + %"091.0" = phi i64 [ 0, %cond_64_case_0 ], [ %108, %cond_64_case_1 ] + %"192.0" = phi { i64*, i64*, i64 } [ zeroinitializer, %cond_64_case_0 ], [ %109, %cond_64_case_1 ] + %array_ptr105 = extractvalue { i64*, i64*, i64 } %"192.0", 0 + %array_mask_ptr106 = extractvalue { i64*, i64*, i64 } %"192.0", 1 + %array_offset107 = extractvalue { i64*, i64*, i64 } %"192.0", 2 + %113 = bitcast i64* %array_ptr105 to i8* + call void @free(i8* %113) + %114 = bitcast i64* %array_mask_ptr106 to i8* + call void @free(i8* %114) + ret void +} + +declare i8* @malloc(i64) + +; Function Attrs: argmemonly nofree nounwind willreturn writeonly +declare void @llvm.memset.p0i64.i64(i64* nocapture writeonly, i8, i64, i1 immarg) #0 + +define internal void @__barray_mask_check_not_borrowed(i64* %0, i64 %1) { + %3 = udiv i64 %1, 64 + %4 = getelementptr inbounds i64, i64* %0, i64 %3 + %5 = load i64, i64* %4, align 4 + %6 = urem i64 %1, 64 + %7 = lshr i64 %5, %6 + %8 = trunc i64 %7 to i1 + br i1 %8, label %panic, label %ok + +panic: ; preds = %2 + %9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 2, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @0, i32 0, i32 0)) + call void @abort() + unreachable + +ok: ; preds = %2 + ret void +} + +declare i32 @printf(i8*, ...) + +declare void @abort() + +declare void @free(i8*) + +attributes #0 = { argmemonly nofree nounwind willreturn writeonly } diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@llvm21.snap index cb4c1f269..8466deef5 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@llvm21.snap @@ -18,7 +18,7 @@ source_filename = "test_context" @5 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 @prelude.panic_template.5 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..fadfeeb91 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@pre-mem2reg@llvm14.snap @@ -0,0 +1,528 @@ +--- +source: hugr-llvm/src/extension/collections/borrow_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [34 x i8] c"Array element is already borrowed\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@1 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.1 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@2 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.2 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@3 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.3 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@4 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.4 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@5 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.5 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal void @_hl.main.1() { +alloca_block: + %"12_0" = alloca i64, align 8 + %"10_0" = alloca i64, align 8 + %"15_0" = alloca { i64*, i64*, i64 }, align 8 + %"13_0" = alloca { i64*, i64*, i64 }, align 8 + %"14_0" = alloca i64, align 8 + %"14_1" = alloca i64, align 8 + %"8_0" = alloca i64, align 8 + %"18_0" = alloca { i1, { i64*, i64*, i64 } }, align 8 + %"0" = alloca { i1, { i64*, i64*, i64 } }, align 8 + %"19_0" = alloca { i64*, i64*, i64 }, align 8 + %"014" = alloca { i64*, i64*, i64 }, align 8 + %"016" = alloca { i64*, i64*, i64 }, align 8 + %"24_0" = alloca { i32, i8* }, align 8 + %"21_0" = alloca { i64*, i64*, i64 }, align 8 + %"25_0" = alloca { i64*, i64*, i64 }, align 8 + %"021" = alloca { i64*, i64*, i64 }, align 8 + %"27_0" = alloca { i64*, i64*, i64 }, align 8 + %"29_0" = alloca { i1, i64 }, align 8 + %"29_1" = alloca { i64*, i64*, i64 }, align 8 + %"029" = alloca { i1, i64 }, align 8 + %"1" = alloca { i64*, i64*, i64 }, align 8 + %"31_0" = alloca i64, align 8 + %"033" = alloca i64, align 8 + %"36_0" = alloca { i32, i8* }, align 8 + %"37_0" = alloca i64, align 8 + %"037" = alloca i64, align 8 + %"39_0" = alloca i64, align 8 + %"41_0" = alloca { i1, { i64*, i64*, i64 }, i64 }, align 8 + %"046" = alloca { i1, { i64*, i64*, i64 }, i64 }, align 8 + %"42_0" = alloca i64, align 8 + %"42_1" = alloca { i64*, i64*, i64 }, align 8 + %"049" = alloca i64, align 8 + %"150" = alloca { i64*, i64*, i64 }, align 8 + %"053" = alloca i64, align 8 + %"154" = alloca { i64*, i64*, i64 }, align 8 + %"47_0" = alloca { i32, i8* }, align 8 + %"44_0" = alloca i64, align 8 + %"44_1" = alloca { i64*, i64*, i64 }, align 8 + %"48_0" = alloca i64, align 8 + %"48_1" = alloca { i64*, i64*, i64 }, align 8 + %"062" = alloca i64, align 8 + %"163" = alloca { i64*, i64*, i64 }, align 8 + %"50_0" = alloca i64, align 8 + %"50_1" = alloca { i64*, i64*, i64 }, align 8 + %"52_0" = alloca { i1, { i64*, i64*, i64 }, i64 }, align 8 + %"53_0" = alloca i64, align 8 + %"53_1" = alloca { i64*, i64*, i64 }, align 8 + %"073" = alloca i64, align 8 + %"174" = alloca { i64*, i64*, i64 }, align 8 + %"58_0" = alloca { i32, i8* }, align 8 + %"59_0" = alloca i64, align 8 + %"59_1" = alloca { i64*, i64*, i64 }, align 8 + %"080" = alloca i64, align 8 + %"181" = alloca { i64*, i64*, i64 }, align 8 + %"61_0" = alloca i64, align 8 + %"61_1" = alloca { i64*, i64*, i64 }, align 8 + %"63_0" = alloca { i1, { i64*, i64*, i64 }, i64 }, align 8 + %"64_0" = alloca i64, align 8 + %"64_1" = alloca { i64*, i64*, i64 }, align 8 + %"091" = alloca i64, align 8 + %"192" = alloca { i64*, i64*, i64 }, align 8 + %"69_0" = alloca { i32, i8* }, align 8 + %"70_0" = alloca i64, align 8 + %"70_1" = alloca { i64*, i64*, i64 }, align 8 + %"098" = alloca i64, align 8 + %"199" = alloca { i64*, i64*, i64 }, align 8 + %"72_0" = alloca i64, align 8 + %"72_1" = alloca { i64*, i64*, i64 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 2, i64* %"12_0", align 4 + store i64 1, i64* %"10_0", align 4 + %"10_01" = load i64, i64* %"10_0", align 4 + %"12_02" = load i64, i64* %"12_0", align 4 + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %3 = bitcast i8* %2 to i64* + call void @llvm.memset.p0i64.i64(i64* %3, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %4 = insertvalue { i64*, i64*, i64 } poison, i64* %1, 0 + %5 = insertvalue { i64*, i64*, i64 } %4, i64* %3, 1 + %6 = insertvalue { i64*, i64*, i64 } %5, i64 0, 2 + %7 = getelementptr inbounds i64, i64* %1, i64 0 + store i64 %"10_01", i64* %7, align 4 + %8 = getelementptr inbounds i64, i64* %1, i64 1 + store i64 %"12_02", i64* %8, align 4 + store { i64*, i64*, i64 } %6, { i64*, i64*, i64 }* %"15_0", align 8 + %"10_03" = load i64, i64* %"10_0", align 4 + %"12_04" = load i64, i64* %"12_0", align 4 + %9 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %10 = bitcast i8* %9 to i64* + %11 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %12 = bitcast i8* %11 to i64* + call void @llvm.memset.p0i64.i64(i64* %12, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %13 = insertvalue { i64*, i64*, i64 } poison, i64* %10, 0 + %14 = insertvalue { i64*, i64*, i64 } %13, i64* %12, 1 + %15 = insertvalue { i64*, i64*, i64 } %14, i64 0, 2 + %16 = getelementptr inbounds i64, i64* %10, i64 0 + store i64 %"10_03", i64* %16, align 4 + %17 = getelementptr inbounds i64, i64* %10, i64 1 + store i64 %"12_04", i64* %17, align 4 + store { i64*, i64*, i64 } %15, { i64*, i64*, i64 }* %"13_0", align 8 + %"13_05" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"13_0", align 8 + %array_ptr = extractvalue { i64*, i64*, i64 } %"13_05", 0 + %array_mask_ptr = extractvalue { i64*, i64*, i64 } %"13_05", 1 + %array_offset = extractvalue { i64*, i64*, i64 } %"13_05", 2 + %18 = add i64 %array_offset, 0 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr, i64 %18) + %19 = getelementptr inbounds i64, i64* %array_ptr, i64 %18 + %20 = load i64, i64* %19, align 4 + %21 = add i64 %array_offset, 1 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr, i64 %21) + %22 = getelementptr inbounds i64, i64* %array_ptr, i64 %21 + %23 = load i64, i64* %22, align 4 + store i64 %20, i64* %"14_0", align 4 + store i64 %23, i64* %"14_1", align 4 + store i64 0, i64* %"8_0", align 4 + %"15_06" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"15_0", align 8 + %"8_07" = load i64, i64* %"8_0", align 4 + %"10_08" = load i64, i64* %"10_0", align 4 + %array_ptr9 = extractvalue { i64*, i64*, i64 } %"15_06", 0 + %array_mask_ptr10 = extractvalue { i64*, i64*, i64 } %"15_06", 1 + %array_offset11 = extractvalue { i64*, i64*, i64 } %"15_06", 2 + %24 = icmp ult i64 %"8_07", 2 + %25 = icmp ult i64 %"10_08", 2 + %26 = and i1 %24, %25 + br i1 %26, label %29, label %27 + +27: ; preds = %entry_block + %28 = insertvalue { i1, { i64*, i64*, i64 } } { i1 false, { i64*, i64*, i64 } poison }, { i64*, i64*, i64 } %"15_06", 1 + store { i1, { i64*, i64*, i64 } } %28, { i1, { i64*, i64*, i64 } }* %"0", align 8 + br label %37 + +29: ; preds = %entry_block + %30 = add i64 %"8_07", %array_offset11 + %31 = add i64 %"10_08", %array_offset11 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr10, i64 %30) + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr10, i64 %31) + %32 = getelementptr inbounds i64, i64* %array_ptr9, i64 %30 + %33 = load i64, i64* %32, align 4 + %34 = getelementptr inbounds i64, i64* %array_ptr9, i64 %31 + %35 = load i64, i64* %34, align 4 + store i64 %35, i64* %32, align 4 + store i64 %33, i64* %34, align 4 + %36 = insertvalue { i1, { i64*, i64*, i64 } } { i1 true, { i64*, i64*, i64 } poison }, { i64*, i64*, i64 } %"15_06", 1 + store { i1, { i64*, i64*, i64 } } %36, { i1, { i64*, i64*, i64 } }* %"0", align 8 + br label %37 + +37: ; preds = %27, %29 + %"012" = load { i1, { i64*, i64*, i64 } }, { i1, { i64*, i64*, i64 } }* %"0", align 8 + store { i1, { i64*, i64*, i64 } } %"012", { i1, { i64*, i64*, i64 } }* %"18_0", align 8 + %"18_013" = load { i1, { i64*, i64*, i64 } }, { i1, { i64*, i64*, i64 } }* %"18_0", align 8 + %38 = extractvalue { i1, { i64*, i64*, i64 } } %"18_013", 0 + switch i1 %38, label %39 [ + i1 true, label %41 + ] + +39: ; preds = %37 + %40 = extractvalue { i1, { i64*, i64*, i64 } } %"18_013", 1 + store { i64*, i64*, i64 } %40, { i64*, i64*, i64 }* %"016", align 8 + br label %cond_19_case_0 + +41: ; preds = %37 + %42 = extractvalue { i1, { i64*, i64*, i64 } } %"18_013", 1 + store { i64*, i64*, i64 } %42, { i64*, i64*, i64 }* %"021", align 8 + br label %cond_19_case_1 + +cond_19_case_0: ; preds = %39 + %"017" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"016", align 8 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @1, i32 0, i32 0) }, { i32, i8* }* %"24_0", align 8 + store { i64*, i64*, i64 } %"017", { i64*, i64*, i64 }* %"21_0", align 8 + %"24_018" = load { i32, i8* }, { i32, i8* }* %"24_0", align 8 + %"21_019" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"21_0", align 8 + %43 = extractvalue { i32, i8* } %"24_018", 0 + %44 = extractvalue { i32, i8* } %"24_018", 1 + %45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.1, i32 0, i32 0), i32 %43, i8* %44) + call void @abort() + store { i64*, i64*, i64 } zeroinitializer, { i64*, i64*, i64 }* %"25_0", align 8 + %"25_020" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"25_0", align 8 + store { i64*, i64*, i64 } %"25_020", { i64*, i64*, i64 }* %"014", align 8 + br label %cond_exit_19 + +cond_19_case_1: ; preds = %41 + %"022" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"021", align 8 + store { i64*, i64*, i64 } %"022", { i64*, i64*, i64 }* %"27_0", align 8 + %"27_023" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"27_0", align 8 + store { i64*, i64*, i64 } %"27_023", { i64*, i64*, i64 }* %"014", align 8 + br label %cond_exit_19 + +cond_exit_19: ; preds = %cond_19_case_1, %cond_19_case_0 + %"015" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"014", align 8 + store { i64*, i64*, i64 } %"015", { i64*, i64*, i64 }* %"19_0", align 8 + %"19_024" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"19_0", align 8 + %"8_025" = load i64, i64* %"8_0", align 4 + %array_ptr26 = extractvalue { i64*, i64*, i64 } %"19_024", 0 + %array_mask_ptr27 = extractvalue { i64*, i64*, i64 } %"19_024", 1 + %array_offset28 = extractvalue { i64*, i64*, i64 } %"19_024", 2 + %46 = icmp ult i64 %"8_025", 2 + br i1 %46, label %48, label %47 + +47: ; preds = %cond_exit_19 + store { i1, i64 } { i1 false, i64 poison }, { i1, i64 }* %"029", align 4 + store { i64*, i64*, i64 } %"19_024", { i64*, i64*, i64 }* %"1", align 8 + br label %53 + +48: ; preds = %cond_exit_19 + %49 = add i64 %"8_025", %array_offset28 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr27, i64 %49) + %50 = getelementptr inbounds i64, i64* %array_ptr26, i64 %49 + %51 = load i64, i64* %50, align 4 + %52 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %51, 1 + store { i1, i64 } %52, { i1, i64 }* %"029", align 4 + store { i64*, i64*, i64 } %"19_024", { i64*, i64*, i64 }* %"1", align 8 + br label %53 + +53: ; preds = %47, %48 + %"030" = load { i1, i64 }, { i1, i64 }* %"029", align 4 + %"131" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"1", align 8 + store { i1, i64 } %"030", { i1, i64 }* %"29_0", align 4 + store { i64*, i64*, i64 } %"131", { i64*, i64*, i64 }* %"29_1", align 8 + %"29_032" = load { i1, i64 }, { i1, i64 }* %"29_0", align 4 + %54 = extractvalue { i1, i64 } %"29_032", 0 + switch i1 %54, label %55 [ + i1 true, label %56 + ] + +55: ; preds = %53 + br label %cond_31_case_0 + +56: ; preds = %53 + %57 = extractvalue { i1, i64 } %"29_032", 1 + store i64 %57, i64* %"037", align 4 + br label %cond_31_case_1 + +cond_31_case_0: ; preds = %55 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @2, i32 0, i32 0) }, { i32, i8* }* %"36_0", align 8 + %"36_035" = load { i32, i8* }, { i32, i8* }* %"36_0", align 8 + %58 = extractvalue { i32, i8* } %"36_035", 0 + %59 = extractvalue { i32, i8* } %"36_035", 1 + %60 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.2, i32 0, i32 0), i32 %58, i8* %59) + call void @abort() + store i64 0, i64* %"37_0", align 4 + %"37_036" = load i64, i64* %"37_0", align 4 + store i64 %"37_036", i64* %"033", align 4 + br label %cond_exit_31 + +cond_31_case_1: ; preds = %56 + %"038" = load i64, i64* %"037", align 4 + store i64 %"038", i64* %"39_0", align 4 + %"39_039" = load i64, i64* %"39_0", align 4 + store i64 %"39_039", i64* %"033", align 4 + br label %cond_exit_31 + +cond_exit_31: ; preds = %cond_31_case_1, %cond_31_case_0 + %"034" = load i64, i64* %"033", align 4 + store i64 %"034", i64* %"31_0", align 4 + %"29_140" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"29_1", align 8 + %"10_041" = load i64, i64* %"10_0", align 4 + %"31_042" = load i64, i64* %"31_0", align 4 + %array_ptr43 = extractvalue { i64*, i64*, i64 } %"29_140", 0 + %array_mask_ptr44 = extractvalue { i64*, i64*, i64 } %"29_140", 1 + %array_offset45 = extractvalue { i64*, i64*, i64 } %"29_140", 2 + %61 = icmp ult i64 %"10_041", 2 + br i1 %61, label %65, label %62 + +62: ; preds = %cond_exit_31 + %63 = insertvalue { i1, { i64*, i64*, i64 }, i64 } { i1 false, { i64*, i64*, i64 } poison, i64 poison }, i64 %"31_042", 2 + %64 = insertvalue { i1, { i64*, i64*, i64 }, i64 } %63, { i64*, i64*, i64 } %"29_140", 1 + store { i1, { i64*, i64*, i64 }, i64 } %64, { i1, { i64*, i64*, i64 }, i64 }* %"046", align 8 + br label %71 + +65: ; preds = %cond_exit_31 + %66 = add i64 %"10_041", %array_offset45 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr44, i64 %66) + %67 = getelementptr inbounds i64, i64* %array_ptr43, i64 %66 + %68 = load i64, i64* %67, align 4 + store i64 %"31_042", i64* %67, align 4 + %69 = insertvalue { i1, { i64*, i64*, i64 }, i64 } { i1 true, { i64*, i64*, i64 } poison, i64 poison }, i64 %68, 2 + %70 = insertvalue { i1, { i64*, i64*, i64 }, i64 } %69, { i64*, i64*, i64 } %"29_140", 1 + store { i1, { i64*, i64*, i64 }, i64 } %70, { i1, { i64*, i64*, i64 }, i64 }* %"046", align 8 + br label %71 + +71: ; preds = %62, %65 + %"047" = load { i1, { i64*, i64*, i64 }, i64 }, { i1, { i64*, i64*, i64 }, i64 }* %"046", align 8 + store { i1, { i64*, i64*, i64 }, i64 } %"047", { i1, { i64*, i64*, i64 }, i64 }* %"41_0", align 8 + %"41_048" = load { i1, { i64*, i64*, i64 }, i64 }, { i1, { i64*, i64*, i64 }, i64 }* %"41_0", align 8 + %72 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"41_048", 0 + switch i1 %72, label %73 [ + i1 true, label %76 + ] + +73: ; preds = %71 + %74 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"41_048", 2 + %75 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"41_048", 1 + store i64 %74, i64* %"053", align 4 + store { i64*, i64*, i64 } %75, { i64*, i64*, i64 }* %"154", align 8 + br label %cond_42_case_0 + +76: ; preds = %71 + %77 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"41_048", 2 + %78 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"41_048", 1 + store i64 %77, i64* %"062", align 4 + store { i64*, i64*, i64 } %78, { i64*, i64*, i64 }* %"163", align 8 + br label %cond_42_case_1 + +cond_42_case_0: ; preds = %73 + %"055" = load i64, i64* %"053", align 4 + %"156" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"154", align 8 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @3, i32 0, i32 0) }, { i32, i8* }* %"47_0", align 8 + store i64 %"055", i64* %"44_0", align 4 + store { i64*, i64*, i64 } %"156", { i64*, i64*, i64 }* %"44_1", align 8 + %"47_057" = load { i32, i8* }, { i32, i8* }* %"47_0", align 8 + %"44_058" = load i64, i64* %"44_0", align 4 + %"44_159" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"44_1", align 8 + %79 = extractvalue { i32, i8* } %"47_057", 0 + %80 = extractvalue { i32, i8* } %"47_057", 1 + %81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.3, i32 0, i32 0), i32 %79, i8* %80) + call void @abort() + store i64 0, i64* %"48_0", align 4 + store { i64*, i64*, i64 } zeroinitializer, { i64*, i64*, i64 }* %"48_1", align 8 + %"48_060" = load i64, i64* %"48_0", align 4 + %"48_161" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"48_1", align 8 + store i64 %"48_060", i64* %"049", align 4 + store { i64*, i64*, i64 } %"48_161", { i64*, i64*, i64 }* %"150", align 8 + br label %cond_exit_42 + +cond_42_case_1: ; preds = %76 + %"064" = load i64, i64* %"062", align 4 + %"165" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"163", align 8 + store i64 %"064", i64* %"50_0", align 4 + store { i64*, i64*, i64 } %"165", { i64*, i64*, i64 }* %"50_1", align 8 + %"50_066" = load i64, i64* %"50_0", align 4 + %"50_167" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"50_1", align 8 + store i64 %"50_066", i64* %"049", align 4 + store { i64*, i64*, i64 } %"50_167", { i64*, i64*, i64 }* %"150", align 8 + br label %cond_exit_42 + +cond_exit_42: ; preds = %cond_42_case_1, %cond_42_case_0 + %"051" = load i64, i64* %"049", align 4 + %"152" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"150", align 8 + store i64 %"051", i64* %"42_0", align 4 + store { i64*, i64*, i64 } %"152", { i64*, i64*, i64 }* %"42_1", align 8 + %"42_168" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"42_1", align 8 + %array_ptr69 = extractvalue { i64*, i64*, i64 } %"42_168", 0 + %array_mask_ptr70 = extractvalue { i64*, i64*, i64 } %"42_168", 1 + %array_offset71 = extractvalue { i64*, i64*, i64 } %"42_168", 2 + %new_offset = add i64 %array_offset71, 1 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr70, i64 %array_offset71) + %82 = getelementptr inbounds i64, i64* %array_ptr69, i64 %array_offset71 + %83 = load i64, i64* %82, align 4 + %84 = insertvalue { i64*, i64*, i64 } poison, i64* %array_ptr69, 0 + %85 = insertvalue { i64*, i64*, i64 } %84, i64* %array_mask_ptr70, 1 + %86 = insertvalue { i64*, i64*, i64 } %85, i64 %new_offset, 2 + %87 = insertvalue { i1, { i64*, i64*, i64 }, i64 } { i1 true, { i64*, i64*, i64 } poison, i64 poison }, i64 %83, 2 + %88 = insertvalue { i1, { i64*, i64*, i64 }, i64 } %87, { i64*, i64*, i64 } %86, 1 + store { i1, { i64*, i64*, i64 }, i64 } %88, { i1, { i64*, i64*, i64 }, i64 }* %"52_0", align 8 + %"52_072" = load { i1, { i64*, i64*, i64 }, i64 }, { i1, { i64*, i64*, i64 }, i64 }* %"52_0", align 8 + %89 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"52_072", 0 + switch i1 %89, label %90 [ + i1 true, label %91 + ] + +90: ; preds = %cond_exit_42 + br label %cond_53_case_0 + +91: ; preds = %cond_exit_42 + %92 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"52_072", 2 + %93 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"52_072", 1 + store i64 %92, i64* %"080", align 4 + store { i64*, i64*, i64 } %93, { i64*, i64*, i64 }* %"181", align 8 + br label %cond_53_case_1 + +cond_53_case_0: ; preds = %90 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @4, i32 0, i32 0) }, { i32, i8* }* %"58_0", align 8 + %"58_077" = load { i32, i8* }, { i32, i8* }* %"58_0", align 8 + %94 = extractvalue { i32, i8* } %"58_077", 0 + %95 = extractvalue { i32, i8* } %"58_077", 1 + %96 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.4, i32 0, i32 0), i32 %94, i8* %95) + call void @abort() + store i64 0, i64* %"59_0", align 4 + store { i64*, i64*, i64 } zeroinitializer, { i64*, i64*, i64 }* %"59_1", align 8 + %"59_078" = load i64, i64* %"59_0", align 4 + %"59_179" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"59_1", align 8 + store i64 %"59_078", i64* %"073", align 4 + store { i64*, i64*, i64 } %"59_179", { i64*, i64*, i64 }* %"174", align 8 + br label %cond_exit_53 + +cond_53_case_1: ; preds = %91 + %"082" = load i64, i64* %"080", align 4 + %"183" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"181", align 8 + store i64 %"082", i64* %"61_0", align 4 + store { i64*, i64*, i64 } %"183", { i64*, i64*, i64 }* %"61_1", align 8 + %"61_084" = load i64, i64* %"61_0", align 4 + %"61_185" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"61_1", align 8 + store i64 %"61_084", i64* %"073", align 4 + store { i64*, i64*, i64 } %"61_185", { i64*, i64*, i64 }* %"174", align 8 + br label %cond_exit_53 + +cond_exit_53: ; preds = %cond_53_case_1, %cond_53_case_0 + %"075" = load i64, i64* %"073", align 4 + %"176" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"174", align 8 + store i64 %"075", i64* %"53_0", align 4 + store { i64*, i64*, i64 } %"176", { i64*, i64*, i64 }* %"53_1", align 8 + %"53_186" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"53_1", align 8 + %array_ptr87 = extractvalue { i64*, i64*, i64 } %"53_186", 0 + %array_mask_ptr88 = extractvalue { i64*, i64*, i64 } %"53_186", 1 + %array_offset89 = extractvalue { i64*, i64*, i64 } %"53_186", 2 + %97 = add i64 %array_offset89, 0 + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr88, i64 %97) + %98 = getelementptr inbounds i64, i64* %array_ptr87, i64 %97 + %99 = load i64, i64* %98, align 4 + %100 = insertvalue { i64*, i64*, i64 } poison, i64* %array_ptr87, 0 + %101 = insertvalue { i64*, i64*, i64 } %100, i64* %array_mask_ptr88, 1 + %102 = insertvalue { i64*, i64*, i64 } %101, i64 %array_offset89, 2 + %103 = insertvalue { i1, { i64*, i64*, i64 }, i64 } { i1 true, { i64*, i64*, i64 } poison, i64 poison }, i64 %99, 2 + %104 = insertvalue { i1, { i64*, i64*, i64 }, i64 } %103, { i64*, i64*, i64 } %102, 1 + store { i1, { i64*, i64*, i64 }, i64 } %104, { i1, { i64*, i64*, i64 }, i64 }* %"63_0", align 8 + %"63_090" = load { i1, { i64*, i64*, i64 }, i64 }, { i1, { i64*, i64*, i64 }, i64 }* %"63_0", align 8 + %105 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"63_090", 0 + switch i1 %105, label %106 [ + i1 true, label %107 + ] + +106: ; preds = %cond_exit_53 + br label %cond_64_case_0 + +107: ; preds = %cond_exit_53 + %108 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"63_090", 2 + %109 = extractvalue { i1, { i64*, i64*, i64 }, i64 } %"63_090", 1 + store i64 %108, i64* %"098", align 4 + store { i64*, i64*, i64 } %109, { i64*, i64*, i64 }* %"199", align 8 + br label %cond_64_case_1 + +cond_64_case_0: ; preds = %106 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @5, i32 0, i32 0) }, { i32, i8* }* %"69_0", align 8 + %"69_095" = load { i32, i8* }, { i32, i8* }* %"69_0", align 8 + %110 = extractvalue { i32, i8* } %"69_095", 0 + %111 = extractvalue { i32, i8* } %"69_095", 1 + %112 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.5, i32 0, i32 0), i32 %110, i8* %111) + call void @abort() + store i64 0, i64* %"70_0", align 4 + store { i64*, i64*, i64 } zeroinitializer, { i64*, i64*, i64 }* %"70_1", align 8 + %"70_096" = load i64, i64* %"70_0", align 4 + %"70_197" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"70_1", align 8 + store i64 %"70_096", i64* %"091", align 4 + store { i64*, i64*, i64 } %"70_197", { i64*, i64*, i64 }* %"192", align 8 + br label %cond_exit_64 + +cond_64_case_1: ; preds = %107 + %"0100" = load i64, i64* %"098", align 4 + %"1101" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"199", align 8 + store i64 %"0100", i64* %"72_0", align 4 + store { i64*, i64*, i64 } %"1101", { i64*, i64*, i64 }* %"72_1", align 8 + %"72_0102" = load i64, i64* %"72_0", align 4 + %"72_1103" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"72_1", align 8 + store i64 %"72_0102", i64* %"091", align 4 + store { i64*, i64*, i64 } %"72_1103", { i64*, i64*, i64 }* %"192", align 8 + br label %cond_exit_64 + +cond_exit_64: ; preds = %cond_64_case_1, %cond_64_case_0 + %"093" = load i64, i64* %"091", align 4 + %"194" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"192", align 8 + store i64 %"093", i64* %"64_0", align 4 + store { i64*, i64*, i64 } %"194", { i64*, i64*, i64 }* %"64_1", align 8 + %"64_1104" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"64_1", align 8 + %array_ptr105 = extractvalue { i64*, i64*, i64 } %"64_1104", 0 + %array_mask_ptr106 = extractvalue { i64*, i64*, i64 } %"64_1104", 1 + %array_offset107 = extractvalue { i64*, i64*, i64 } %"64_1104", 2 + %113 = bitcast i64* %array_ptr105 to i8* + call void @free(i8* %113) + %114 = bitcast i64* %array_mask_ptr106 to i8* + call void @free(i8* %114) + ret void +} + +declare i8* @malloc(i64) + +; Function Attrs: argmemonly nofree nounwind willreturn writeonly +declare void @llvm.memset.p0i64.i64(i64* nocapture writeonly, i8, i64, i1 immarg) #0 + +define internal void @__barray_mask_check_not_borrowed(i64* %0, i64 %1) { + %3 = udiv i64 %1, 64 + %4 = getelementptr inbounds i64, i64* %0, i64 %3 + %5 = load i64, i64* %4, align 4 + %6 = urem i64 %1, 64 + %7 = lshr i64 %5, %6 + %8 = trunc i64 %7 to i1 + br i1 %8, label %panic, label %ok + +panic: ; preds = %2 + %9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 2, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @0, i32 0, i32 0)) + call void @abort() + unreachable + +ok: ; preds = %2 + ret void +} + +declare i32 @printf(i8*, ...) + +declare void @abort() + +declare void @free(i8*) + +attributes #0 = { argmemonly nofree nounwind willreturn writeonly } diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@pre-mem2reg@llvm21.snap index cb37d50a2..1d58be25d 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_all_ops@pre-mem2reg@llvm21.snap @@ -18,7 +18,7 @@ source_filename = "test_context" @5 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 @prelude.panic_template.5 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: %"12_0" = alloca i64, align 8 %"10_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@llvm14.snap new file mode 100644 index 000000000..014226876 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@llvm14.snap @@ -0,0 +1,33 @@ +--- +source: hugr-llvm/src/extension/collections/borrow_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i64*, i64*, i64 } @_hl.main.1() { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %3 = bitcast i8* %2 to i64* + call void @llvm.memset.p0i64.i64(i64* %3, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %4 = insertvalue { i64*, i64*, i64 } poison, i64* %1, 0 + %5 = insertvalue { i64*, i64*, i64 } %4, i64* %3, 1 + %6 = insertvalue { i64*, i64*, i64 } %5, i64 0, 2 + %7 = getelementptr inbounds i64, i64* %1, i32 0 + store i64 1, i64* %7, align 4 + %8 = getelementptr inbounds i64, i64* %1, i32 1 + store i64 2, i64* %8, align 4 + ret { i64*, i64*, i64 } %6 +} + +declare i8* @malloc(i64) + +; Function Attrs: argmemonly nofree nounwind willreturn writeonly +declare void @llvm.memset.p0i64.i64(i64* nocapture writeonly, i8, i64, i1 immarg) #0 + +attributes #0 = { argmemonly nofree nounwind willreturn writeonly } diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@llvm21.snap index a24feb05d..408182b7c 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, ptr, i64 } @_hl.main.1() { +define internal { ptr, ptr, i64 } @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..76231c696 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@pre-mem2reg@llvm14.snap @@ -0,0 +1,39 @@ +--- +source: hugr-llvm/src/extension/collections/borrow_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i64*, i64*, i64 } @_hl.main.1() { +alloca_block: + %"0" = alloca { i64*, i64*, i64 }, align 8 + %"5_0" = alloca { i64*, i64*, i64 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %3 = bitcast i8* %2 to i64* + call void @llvm.memset.p0i64.i64(i64* %3, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %4 = insertvalue { i64*, i64*, i64 } poison, i64* %1, 0 + %5 = insertvalue { i64*, i64*, i64 } %4, i64* %3, 1 + %6 = insertvalue { i64*, i64*, i64 } %5, i64 0, 2 + %7 = getelementptr inbounds i64, i64* %1, i32 0 + store i64 1, i64* %7, align 4 + %8 = getelementptr inbounds i64, i64* %1, i32 1 + store i64 2, i64* %8, align 4 + store { i64*, i64*, i64 } %6, { i64*, i64*, i64 }* %"5_0", align 8 + %"5_01" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"5_0", align 8 + store { i64*, i64*, i64 } %"5_01", { i64*, i64*, i64 }* %"0", align 8 + %"02" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"0", align 8 + ret { i64*, i64*, i64 } %"02" +} + +declare i8* @malloc(i64) + +; Function Attrs: argmemonly nofree nounwind willreturn writeonly +declare void @llvm.memset.p0i64.i64(i64* nocapture writeonly, i8, i64, i1 immarg) #0 + +attributes #0 = { argmemonly nofree nounwind willreturn writeonly } diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@pre-mem2reg@llvm21.snap index b44769855..0ae63b010 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_array_value@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, ptr, i64 } @_hl.main.1() { +define internal { ptr, ptr, i64 } @_hl.main.1() { alloca_block: %"0" = alloca { ptr, ptr, i64 }, align 8 %"5_0" = alloca { ptr, ptr, i64 }, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@llvm14.snap new file mode 100644 index 000000000..b65d22a89 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@llvm14.snap @@ -0,0 +1,116 @@ +--- +source: hugr-llvm/src/extension/collections/borrow_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [39 x i8] c"Some array elements have been borrowed\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal void @_hl.main.1() { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %3 = bitcast i8* %2 to i64* + call void @llvm.memset.p0i64.i64(i64* %3, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %4 = insertvalue { i64*, i64*, i64 } poison, i64* %1, 0 + %5 = insertvalue { i64*, i64*, i64 } %4, i64* %3, 1 + %6 = insertvalue { i64*, i64*, i64 } %5, i64 0, 2 + %7 = getelementptr inbounds i64, i64* %1, i64 0 + store i64 1, i64* %7, align 4 + %8 = getelementptr inbounds i64, i64* %1, i64 1 + store i64 2, i64* %8, align 4 + %array_ptr = extractvalue { i64*, i64*, i64 } %6, 0 + %array_mask_ptr = extractvalue { i64*, i64*, i64 } %6, 1 + %array_offset = extractvalue { i64*, i64*, i64 } %6, 2 + call void @__barray_check_none_borrowed(i64* %array_mask_ptr, i64 %array_offset, i64 2) + %9 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %10 = bitcast i8* %9 to i64* + %11 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %12 = bitcast i8* %11 to i64* + call void @llvm.memset.p0i64.i64(i64* %12, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %13 = insertvalue { i64*, i64*, i64 } poison, i64* %10, 0 + %14 = insertvalue { i64*, i64*, i64 } %13, i64* %12, 1 + %15 = insertvalue { i64*, i64*, i64 } %14, i64 0, 2 + %16 = getelementptr inbounds i64, i64* %array_ptr, i64 %array_offset + call void @llvm.memcpy.p0i64.p0i64.i64(i64* %10, i64* %16, i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2), i1 false) + %array_ptr5 = extractvalue { i64*, i64*, i64 } %15, 0 + %17 = bitcast i64* %array_ptr5 to i8* + call void @free(i8* %17) + %array_ptr7 = extractvalue { i64*, i64*, i64 } %6, 0 + %18 = bitcast i64* %array_ptr7 to i8* + call void @free(i8* %18) + ret void +} + +declare i8* @malloc(i64) + +; Function Attrs: argmemonly nofree nounwind willreturn writeonly +declare void @llvm.memset.p0i64.i64(i64* nocapture writeonly, i8, i64, i1 immarg) #0 + +define internal void @__barray_check_none_borrowed(i64* %0, i64 %1, i64 %2) { + %4 = udiv i64 %1, 64 + %5 = getelementptr inbounds i64, i64* %0, i64 %4 + %6 = load i64, i64* %5, align 4 + %7 = urem i64 %1, 64 + %8 = shl i64 -1, %7 + %9 = and i64 %6, %8 + store i64 %9, i64* %5, align 4 + %10 = add i64 %1, %2 + %last_valid = sub i64 %10, 1 + %11 = udiv i64 %last_valid, 64 + %12 = getelementptr inbounds i64, i64* %0, i64 %11 + %13 = load i64, i64* %12, align 4 + %14 = urem i64 %last_valid, 64 + %15 = add i64 %14, 1 + %16 = sub i64 64, %15 + %17 = lshr i64 -1, %16 + %18 = and i64 %13, %17 + store i64 %18, i64* %12, align 4 + %19 = udiv i64 %1, 64 + %20 = udiv i64 %last_valid, 64 + %21 = sub i64 %20, %19 + %22 = add i64 %21, 1 + br label %23 + +23: ; preds = %mask_block_ok, %3 + %.0 = phi i64 [ 0, %3 ], [ %32, %mask_block_ok ] + %24 = icmp ult i64 %.0, %22 + br i1 %24, label %25, label %30 + +25: ; preds = %23 + %26 = add i64 %.0, %19 + %27 = getelementptr inbounds i64, i64* %0, i64 %26 + %28 = load i64, i64* %27, align 4 + %29 = icmp eq i64 %28, 0 + br i1 %29, label %mask_block_ok, label %mask_block_err + +30: ; preds = %23 + ret void + +mask_block_err: ; preds = %25 + %31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 2, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @0, i32 0, i32 0)) + call void @abort() + unreachable + +mask_block_ok: ; preds = %25 + %32 = add i64 %.0, 1 + br label %23 +} + +declare i32 @printf(i8*, ...) + +declare void @abort() + +; Function Attrs: argmemonly nofree nounwind willreturn +declare void @llvm.memcpy.p0i64.p0i64.i64(i64* noalias nocapture writeonly, i64* noalias nocapture readonly, i64, i1 immarg) #1 + +declare void @free(i8*) + +attributes #0 = { argmemonly nofree nounwind willreturn writeonly } +attributes #1 = { argmemonly nofree nounwind willreturn } diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@llvm21.snap index c88c141f3..7e73f3616 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [39 x i8] c"Some array elements have been borrowed\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..8e45159ea --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@pre-mem2reg@llvm14.snap @@ -0,0 +1,135 @@ +--- +source: hugr-llvm/src/extension/collections/borrow_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [39 x i8] c"Some array elements have been borrowed\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal void @_hl.main.1() { +alloca_block: + %"7_0" = alloca i64, align 8 + %"5_0" = alloca i64, align 8 + %"8_0" = alloca { i64*, i64*, i64 }, align 8 + %"9_0" = alloca { i64*, i64*, i64 }, align 8 + %"9_1" = alloca { i64*, i64*, i64 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 2, i64* %"7_0", align 4 + store i64 1, i64* %"5_0", align 4 + %"5_01" = load i64, i64* %"5_0", align 4 + %"7_02" = load i64, i64* %"7_0", align 4 + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %3 = bitcast i8* %2 to i64* + call void @llvm.memset.p0i64.i64(i64* %3, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %4 = insertvalue { i64*, i64*, i64 } poison, i64* %1, 0 + %5 = insertvalue { i64*, i64*, i64 } %4, i64* %3, 1 + %6 = insertvalue { i64*, i64*, i64 } %5, i64 0, 2 + %7 = getelementptr inbounds i64, i64* %1, i64 0 + store i64 %"5_01", i64* %7, align 4 + %8 = getelementptr inbounds i64, i64* %1, i64 1 + store i64 %"7_02", i64* %8, align 4 + store { i64*, i64*, i64 } %6, { i64*, i64*, i64 }* %"8_0", align 8 + %"8_03" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"8_0", align 8 + %array_ptr = extractvalue { i64*, i64*, i64 } %"8_03", 0 + %array_mask_ptr = extractvalue { i64*, i64*, i64 } %"8_03", 1 + %array_offset = extractvalue { i64*, i64*, i64 } %"8_03", 2 + call void @__barray_check_none_borrowed(i64* %array_mask_ptr, i64 %array_offset, i64 2) + %9 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %10 = bitcast i8* %9 to i64* + %11 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %12 = bitcast i8* %11 to i64* + call void @llvm.memset.p0i64.i64(i64* %12, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %13 = insertvalue { i64*, i64*, i64 } poison, i64* %10, 0 + %14 = insertvalue { i64*, i64*, i64 } %13, i64* %12, 1 + %15 = insertvalue { i64*, i64*, i64 } %14, i64 0, 2 + %16 = getelementptr inbounds i64, i64* %array_ptr, i64 %array_offset + call void @llvm.memcpy.p0i64.p0i64.i64(i64* %10, i64* %16, i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2), i1 false) + store { i64*, i64*, i64 } %"8_03", { i64*, i64*, i64 }* %"9_0", align 8 + store { i64*, i64*, i64 } %15, { i64*, i64*, i64 }* %"9_1", align 8 + %"9_14" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"9_1", align 8 + %array_ptr5 = extractvalue { i64*, i64*, i64 } %"9_14", 0 + %17 = bitcast i64* %array_ptr5 to i8* + call void @free(i8* %17) + %"9_06" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"9_0", align 8 + %array_ptr7 = extractvalue { i64*, i64*, i64 } %"9_06", 0 + %18 = bitcast i64* %array_ptr7 to i8* + call void @free(i8* %18) + ret void +} + +declare i8* @malloc(i64) + +; Function Attrs: argmemonly nofree nounwind willreturn writeonly +declare void @llvm.memset.p0i64.i64(i64* nocapture writeonly, i8, i64, i1 immarg) #0 + +define internal void @__barray_check_none_borrowed(i64* %0, i64 %1, i64 %2) { + %4 = udiv i64 %1, 64 + %5 = getelementptr inbounds i64, i64* %0, i64 %4 + %6 = load i64, i64* %5, align 4 + %7 = urem i64 %1, 64 + %8 = shl i64 -1, %7 + %9 = and i64 %6, %8 + store i64 %9, i64* %5, align 4 + %10 = add i64 %1, %2 + %last_valid = sub i64 %10, 1 + %11 = udiv i64 %last_valid, 64 + %12 = getelementptr inbounds i64, i64* %0, i64 %11 + %13 = load i64, i64* %12, align 4 + %14 = urem i64 %last_valid, 64 + %15 = add i64 %14, 1 + %16 = sub i64 64, %15 + %17 = lshr i64 -1, %16 + %18 = and i64 %13, %17 + store i64 %18, i64* %12, align 4 + %19 = udiv i64 %1, 64 + %20 = udiv i64 %last_valid, 64 + %21 = sub i64 %20, %19 + %22 = add i64 %21, 1 + %23 = alloca i64, align 8 + store i64 0, i64* %23, align 4 + br label %24 + +24: ; preds = %mask_block_ok, %3 + %25 = load i64, i64* %23, align 4 + %26 = icmp ult i64 %25, %22 + br i1 %26, label %27, label %33 + +27: ; preds = %24 + %28 = load i64, i64* %23, align 4 + %29 = add i64 %28, %19 + %30 = getelementptr inbounds i64, i64* %0, i64 %29 + %31 = load i64, i64* %30, align 4 + %32 = icmp eq i64 %31, 0 + br i1 %32, label %mask_block_ok, label %mask_block_err + +33: ; preds = %24 + ret void + +mask_block_err: ; preds = %27 + %34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 2, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @0, i32 0, i32 0)) + call void @abort() + unreachable + +mask_block_ok: ; preds = %27 + %35 = add i64 %28, 1 + store i64 %35, i64* %23, align 4 + br label %24 +} + +declare i32 @printf(i8*, ...) + +declare void @abort() + +; Function Attrs: argmemonly nofree nounwind willreturn +declare void @llvm.memcpy.p0i64.p0i64.i64(i64* noalias nocapture writeonly, i64* noalias nocapture readonly, i64, i1 immarg) #1 + +declare void @free(i8*) + +attributes #0 = { argmemonly nofree nounwind willreturn writeonly } +attributes #1 = { argmemonly nofree nounwind willreturn } diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@pre-mem2reg@llvm21.snap index 7cb3143d2..252694411 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_clone@pre-mem2reg@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [39 x i8] c"Some array elements have been borrowed\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: %"7_0" = alloca i64, align 8 %"5_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@llvm14.snap new file mode 100644 index 000000000..2fd42de44 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@llvm14.snap @@ -0,0 +1,82 @@ +--- +source: hugr-llvm/src/extension/collections/borrow_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [34 x i8] c"Array element is already borrowed\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal void @_hl.main.1() { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %3 = bitcast i8* %2 to i64* + call void @llvm.memset.p0i64.i64(i64* %3, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %4 = insertvalue { i64*, i64*, i64 } poison, i64* %1, 0 + %5 = insertvalue { i64*, i64*, i64 } %4, i64* %3, 1 + %6 = insertvalue { i64*, i64*, i64 } %5, i64 0, 2 + %7 = getelementptr inbounds i64, i64* %1, i64 0 + store i64 1, i64* %7, align 4 + %8 = getelementptr inbounds i64, i64* %1, i64 1 + store i64 2, i64* %8, align 4 + %array_ptr = extractvalue { i64*, i64*, i64 } %6, 0 + %array_mask_ptr = extractvalue { i64*, i64*, i64 } %6, 1 + %array_offset = extractvalue { i64*, i64*, i64 } %6, 2 + %9 = icmp ult i64 1, 2 + br i1 %9, label %11, label %10 + +10: ; preds = %entry_block + br label %16 + +11: ; preds = %entry_block + %12 = add i64 1, %array_offset + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr, i64 %12) + %13 = getelementptr inbounds i64, i64* %array_ptr, i64 %12 + %14 = load i64, i64* %13, align 4 + %15 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %14, 1 + br label %16 + +16: ; preds = %10, %11 + %"0.0" = phi { i1, i64 } [ %15, %11 ], [ { i1 false, i64 poison }, %10 ] + %array_ptr8 = extractvalue { i64*, i64*, i64 } %6, 0 + %17 = bitcast i64* %array_ptr8 to i8* + call void @free(i8* %17) + ret void +} + +declare i8* @malloc(i64) + +; Function Attrs: argmemonly nofree nounwind willreturn writeonly +declare void @llvm.memset.p0i64.i64(i64* nocapture writeonly, i8, i64, i1 immarg) #0 + +define internal void @__barray_mask_check_not_borrowed(i64* %0, i64 %1) { + %3 = udiv i64 %1, 64 + %4 = getelementptr inbounds i64, i64* %0, i64 %3 + %5 = load i64, i64* %4, align 4 + %6 = urem i64 %1, 64 + %7 = lshr i64 %5, %6 + %8 = trunc i64 %7 to i1 + br i1 %8, label %panic, label %ok + +panic: ; preds = %2 + %9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 2, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @0, i32 0, i32 0)) + call void @abort() + unreachable + +ok: ; preds = %2 + ret void +} + +declare i32 @printf(i8*, ...) + +declare void @abort() + +declare void @free(i8*) + +attributes #0 = { argmemonly nofree nounwind willreturn writeonly } diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@llvm21.snap index 3ca9b501c..a66761e8b 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [34 x i8] c"Array element is already borrowed\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..593303808 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@pre-mem2reg@llvm14.snap @@ -0,0 +1,104 @@ +--- +source: hugr-llvm/src/extension/collections/borrow_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [34 x i8] c"Array element is already borrowed\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal void @_hl.main.1() { +alloca_block: + %"7_0" = alloca i64, align 8 + %"5_0" = alloca i64, align 8 + %"8_0" = alloca { i64*, i64*, i64 }, align 8 + %"9_0" = alloca { i1, i64 }, align 8 + %"9_1" = alloca { i64*, i64*, i64 }, align 8 + %"0" = alloca { i1, i64 }, align 8 + %"1" = alloca { i64*, i64*, i64 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 2, i64* %"7_0", align 4 + store i64 1, i64* %"5_0", align 4 + %"5_01" = load i64, i64* %"5_0", align 4 + %"7_02" = load i64, i64* %"7_0", align 4 + %0 = call i8* @malloc(i64 mul (i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 2)) + %1 = bitcast i8* %0 to i64* + %2 = call i8* @malloc(i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64)) + %3 = bitcast i8* %2 to i64* + call void @llvm.memset.p0i64.i64(i64* %3, i8 0, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i1 false) + %4 = insertvalue { i64*, i64*, i64 } poison, i64* %1, 0 + %5 = insertvalue { i64*, i64*, i64 } %4, i64* %3, 1 + %6 = insertvalue { i64*, i64*, i64 } %5, i64 0, 2 + %7 = getelementptr inbounds i64, i64* %1, i64 0 + store i64 %"5_01", i64* %7, align 4 + %8 = getelementptr inbounds i64, i64* %1, i64 1 + store i64 %"7_02", i64* %8, align 4 + store { i64*, i64*, i64 } %6, { i64*, i64*, i64 }* %"8_0", align 8 + %"8_03" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"8_0", align 8 + %"5_04" = load i64, i64* %"5_0", align 4 + %array_ptr = extractvalue { i64*, i64*, i64 } %"8_03", 0 + %array_mask_ptr = extractvalue { i64*, i64*, i64 } %"8_03", 1 + %array_offset = extractvalue { i64*, i64*, i64 } %"8_03", 2 + %9 = icmp ult i64 %"5_04", 2 + br i1 %9, label %11, label %10 + +10: ; preds = %entry_block + store { i1, i64 } { i1 false, i64 poison }, { i1, i64 }* %"0", align 4 + store { i64*, i64*, i64 } %"8_03", { i64*, i64*, i64 }* %"1", align 8 + br label %16 + +11: ; preds = %entry_block + %12 = add i64 %"5_04", %array_offset + call void @__barray_mask_check_not_borrowed(i64* %array_mask_ptr, i64 %12) + %13 = getelementptr inbounds i64, i64* %array_ptr, i64 %12 + %14 = load i64, i64* %13, align 4 + %15 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %14, 1 + store { i1, i64 } %15, { i1, i64 }* %"0", align 4 + store { i64*, i64*, i64 } %"8_03", { i64*, i64*, i64 }* %"1", align 8 + br label %16 + +16: ; preds = %10, %11 + %"05" = load { i1, i64 }, { i1, i64 }* %"0", align 4 + %"16" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"1", align 8 + store { i1, i64 } %"05", { i1, i64 }* %"9_0", align 4 + store { i64*, i64*, i64 } %"16", { i64*, i64*, i64 }* %"9_1", align 8 + %"9_17" = load { i64*, i64*, i64 }, { i64*, i64*, i64 }* %"9_1", align 8 + %array_ptr8 = extractvalue { i64*, i64*, i64 } %"9_17", 0 + %17 = bitcast i64* %array_ptr8 to i8* + call void @free(i8* %17) + ret void +} + +declare i8* @malloc(i64) + +; Function Attrs: argmemonly nofree nounwind willreturn writeonly +declare void @llvm.memset.p0i64.i64(i64* nocapture writeonly, i8, i64, i1 immarg) #0 + +define internal void @__barray_mask_check_not_borrowed(i64* %0, i64 %1) { + %3 = udiv i64 %1, 64 + %4 = getelementptr inbounds i64, i64* %0, i64 %3 + %5 = load i64, i64* %4, align 4 + %6 = urem i64 %1, 64 + %7 = lshr i64 %5, %6 + %8 = trunc i64 %7 to i1 + br i1 %8, label %panic, label %ok + +panic: ; preds = %2 + %9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 2, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @0, i32 0, i32 0)) + call void @abort() + unreachable + +ok: ; preds = %2 + ret void +} + +declare i32 @printf(i8*, ...) + +declare void @abort() + +declare void @free(i8*) + +attributes #0 = { argmemonly nofree nounwind willreturn writeonly } diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@pre-mem2reg@llvm21.snap index 41c57633c..285e5cad3 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__borrow_array__test__emit_get@pre-mem2reg@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [34 x i8] c"Array element is already borrowed\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: %"7_0" = alloca i64, align 8 %"5_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@llvm14.snap new file mode 100644 index 000000000..a00fd0ffb --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@llvm14.snap @@ -0,0 +1,31 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal i8* @_hl.main.1() { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = call i8* @__rt__list__new(i64 3, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 8, i8* null) + %1 = alloca i64, align 8 + store i64 1, i64* %1, align 4 + %2 = bitcast i64* %1 to i8* + call void @__rt__list__push(i8* %0, i8* %2) + %3 = alloca i64, align 8 + store i64 2, i64* %3, align 4 + %4 = bitcast i64* %3 to i8* + call void @__rt__list__push(i8* %0, i8* %4) + %5 = alloca i64, align 8 + store i64 3, i64* %5, align 4 + %6 = bitcast i64* %5 to i8* + call void @__rt__list__push(i8* %0, i8* %6) + ret i8* %0 +} + +declare i8* @__rt__list__new(i64, i64, i64, i8*) + +declare void @__rt__list__push(i8*, i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@llvm21.snap index 6ebbb494d..b54f24773 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private ptr @_hl.main.1() { +define internal ptr @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..db50df2b9 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@pre-mem2reg@llvm14.snap @@ -0,0 +1,37 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal i8* @_hl.main.1() { +alloca_block: + %"0" = alloca i8*, align 8 + %"5_0" = alloca i8*, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = call i8* @__rt__list__new(i64 3, i64 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i64), i64 8, i8* null) + %1 = alloca i64, align 8 + store i64 1, i64* %1, align 4 + %2 = bitcast i64* %1 to i8* + call void @__rt__list__push(i8* %0, i8* %2) + %3 = alloca i64, align 8 + store i64 2, i64* %3, align 4 + %4 = bitcast i64* %3 to i8* + call void @__rt__list__push(i8* %0, i8* %4) + %5 = alloca i64, align 8 + store i64 3, i64* %5, align 4 + %6 = bitcast i64* %5 to i8* + call void @__rt__list__push(i8* %0, i8* %6) + store i8* %0, i8** %"5_0", align 8 + %"5_01" = load i8*, i8** %"5_0", align 8 + store i8* %"5_01", i8** %"0", align 8 + %"02" = load i8*, i8** %"0", align 8 + ret i8* %"02" +} + +declare i8* @__rt__list__new(i64, i64, i64, i8*) + +declare void @__rt__list__push(i8*, i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@pre-mem2reg@llvm21.snap index d99fe582b..dbfbe7445 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__const@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private ptr @_hl.main.1() { +define internal ptr @_hl.main.1() { alloca_block: %"0" = alloca ptr, align 8 %"5_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@llvm14.snap new file mode 100644 index 000000000..42340d264 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@llvm14.snap @@ -0,0 +1,23 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i1, i16 } @_hl.main.1(i8* %0, i64 %1) { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %2 = alloca i16, align 2 + %3 = bitcast i16* %2 to i8* + %4 = call i1 @__rt__list__get(i8* %0, i64 %1, i8* %3) + %5 = bitcast i8* %3 to i16* + %6 = load i16, i16* %5, align 2 + %7 = insertvalue { i1, i16 } { i1 true, i16 poison }, i16 %6, 1 + %8 = select i1 %4, { i1, i16 } %7, { i1, i16 } { i1 false, i16 poison } + ret { i1, i16 } %8 +} + +declare i1 @__rt__list__get(i8*, i64, i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@llvm21.snap index fad94379a..29131adf6 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i1, i16 } @_hl.main.1(ptr %0, i64 %1) { +define internal { i1, i16 } @_hl.main.1(ptr %0, i64 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..d45344f09 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@pre-mem2reg@llvm14.snap @@ -0,0 +1,35 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i1, i16 } @_hl.main.1(i8* %0, i64 %1) { +alloca_block: + %"0" = alloca { i1, i16 }, align 8 + %"2_0" = alloca i8*, align 8 + %"2_1" = alloca i64, align 8 + %"4_0" = alloca { i1, i16 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i8* %0, i8** %"2_0", align 8 + store i64 %1, i64* %"2_1", align 4 + %"2_01" = load i8*, i8** %"2_0", align 8 + %"2_12" = load i64, i64* %"2_1", align 4 + %2 = alloca i16, align 2 + %3 = bitcast i16* %2 to i8* + %4 = call i1 @__rt__list__get(i8* %"2_01", i64 %"2_12", i8* %3) + %5 = bitcast i8* %3 to i16* + %6 = load i16, i16* %5, align 2 + %7 = insertvalue { i1, i16 } { i1 true, i16 poison }, i16 %6, 1 + %8 = select i1 %4, { i1, i16 } %7, { i1, i16 } { i1 false, i16 poison } + store { i1, i16 } %8, { i1, i16 }* %"4_0", align 2 + %"4_03" = load { i1, i16 }, { i1, i16 }* %"4_0", align 2 + store { i1, i16 } %"4_03", { i1, i16 }* %"0", align 2 + %"04" = load { i1, i16 }, { i1, i16 }* %"0", align 2 + ret { i1, i16 } %"04" +} + +declare i1 @__rt__list__get(i8*, i64, i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@pre-mem2reg@llvm21.snap index e60ab4d51..d4df4fd3d 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__get@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i1, i16 } @_hl.main.1(ptr %0, i64 %1) { +define internal { i1, i16 } @_hl.main.1(ptr %0, i64 %1) { alloca_block: %"0" = alloca { i1, i16 }, align 8 %"2_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@llvm14.snap new file mode 100644 index 000000000..5580905f4 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@llvm14.snap @@ -0,0 +1,24 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i8*, { i1, i16 } } @_hl.main.1(i8* %0, i64 %1, i16 %2) { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %3 = alloca i16, align 2 + store i16 %2, i16* %3, align 2 + %4 = bitcast i16* %3 to i8* + %5 = call i1 @__rt__list__insert(i8* %0, i64 %1, i8* %4) + %6 = insertvalue { i1, i16 } { i1 false, i16 poison }, i16 %2, 1 + %7 = select i1 %5, { i1, i16 } { i1 true, i16 poison }, { i1, i16 } %6 + %mrv = insertvalue { i8*, { i1, i16 } } undef, i8* %0, 0 + %mrv8 = insertvalue { i8*, { i1, i16 } } %mrv, { i1, i16 } %7, 1 + ret { i8*, { i1, i16 } } %mrv8 +} + +declare i1 @__rt__list__insert(i8*, i64, i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@llvm21.snap index 05e3abcad..d30df6d99 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, { i1, i16 } } @_hl.main.1(ptr %0, i64 %1, i16 %2) { +define internal { ptr, { i1, i16 } } @_hl.main.1(ptr %0, i64 %1, i16 %2) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..189c01506 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@pre-mem2reg@llvm14.snap @@ -0,0 +1,45 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i8*, { i1, i16 } } @_hl.main.1(i8* %0, i64 %1, i16 %2) { +alloca_block: + %"0" = alloca i8*, align 8 + %"1" = alloca { i1, i16 }, align 8 + %"2_0" = alloca i8*, align 8 + %"2_1" = alloca i64, align 8 + %"2_2" = alloca i16, align 2 + %"4_0" = alloca i8*, align 8 + %"4_1" = alloca { i1, i16 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i8* %0, i8** %"2_0", align 8 + store i64 %1, i64* %"2_1", align 4 + store i16 %2, i16* %"2_2", align 2 + %"2_01" = load i8*, i8** %"2_0", align 8 + %"2_12" = load i64, i64* %"2_1", align 4 + %"2_23" = load i16, i16* %"2_2", align 2 + %3 = alloca i16, align 2 + store i16 %"2_23", i16* %3, align 2 + %4 = bitcast i16* %3 to i8* + %5 = call i1 @__rt__list__insert(i8* %"2_01", i64 %"2_12", i8* %4) + %6 = insertvalue { i1, i16 } { i1 false, i16 poison }, i16 %"2_23", 1 + %7 = select i1 %5, { i1, i16 } { i1 true, i16 poison }, { i1, i16 } %6 + store i8* %"2_01", i8** %"4_0", align 8 + store { i1, i16 } %7, { i1, i16 }* %"4_1", align 2 + %"4_04" = load i8*, i8** %"4_0", align 8 + %"4_15" = load { i1, i16 }, { i1, i16 }* %"4_1", align 2 + store i8* %"4_04", i8** %"0", align 8 + store { i1, i16 } %"4_15", { i1, i16 }* %"1", align 2 + %"06" = load i8*, i8** %"0", align 8 + %"17" = load { i1, i16 }, { i1, i16 }* %"1", align 2 + %mrv = insertvalue { i8*, { i1, i16 } } undef, i8* %"06", 0 + %mrv8 = insertvalue { i8*, { i1, i16 } } %mrv, { i1, i16 } %"17", 1 + ret { i8*, { i1, i16 } } %mrv8 +} + +declare i1 @__rt__list__insert(i8*, i64, i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@pre-mem2reg@llvm21.snap index d6af0a527..fe12329ff 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__insert@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, { i1, i16 } } @_hl.main.1(ptr %0, i64 %1, i16 %2) { +define internal { ptr, { i1, i16 } } @_hl.main.1(ptr %0, i64 %1, i16 %2) { alloca_block: %"0" = alloca ptr, align 8 %"1" = alloca { i1, i16 }, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@llvm14.snap new file mode 100644 index 000000000..e0abda9e9 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@llvm14.snap @@ -0,0 +1,19 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i8*, i64 } @_hl.main.1(i8* %0) { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %1 = call i64 @__rt__list__length(i8* %0) + %mrv = insertvalue { i8*, i64 } undef, i8* %0, 0 + %mrv6 = insertvalue { i8*, i64 } %mrv, i64 %1, 1 + ret { i8*, i64 } %mrv6 +} + +declare i64 @__rt__list__length(i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@llvm21.snap index 1558a2ea3..14189cd43 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, i64 } @_hl.main.1(ptr %0) { +define internal { ptr, i64 } @_hl.main.1(ptr %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..16a08d60e --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@pre-mem2reg@llvm14.snap @@ -0,0 +1,34 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i8*, i64 } @_hl.main.1(i8* %0) { +alloca_block: + %"0" = alloca i8*, align 8 + %"1" = alloca i64, align 8 + %"2_0" = alloca i8*, align 8 + %"4_0" = alloca i8*, align 8 + %"4_1" = alloca i64, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i8* %0, i8** %"2_0", align 8 + %"2_01" = load i8*, i8** %"2_0", align 8 + %1 = call i64 @__rt__list__length(i8* %"2_01") + store i8* %"2_01", i8** %"4_0", align 8 + store i64 %1, i64* %"4_1", align 4 + %"4_02" = load i8*, i8** %"4_0", align 8 + %"4_13" = load i64, i64* %"4_1", align 4 + store i8* %"4_02", i8** %"0", align 8 + store i64 %"4_13", i64* %"1", align 4 + %"04" = load i8*, i8** %"0", align 8 + %"15" = load i64, i64* %"1", align 4 + %mrv = insertvalue { i8*, i64 } undef, i8* %"04", 0 + %mrv6 = insertvalue { i8*, i64 } %mrv, i64 %"15", 1 + ret { i8*, i64 } %mrv6 +} + +declare i64 @__rt__list__length(i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@pre-mem2reg@llvm21.snap index c80904330..253f31489 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__length@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, i64 } @_hl.main.1(ptr %0) { +define internal { ptr, i64 } @_hl.main.1(ptr %0) { alloca_block: %"0" = alloca ptr, align 8 %"1" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@llvm14.snap new file mode 100644 index 000000000..98046f51b --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@llvm14.snap @@ -0,0 +1,25 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i8*, { i1, i16 } } @_hl.main.1(i8* %0) { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %1 = alloca i16, align 2 + %2 = bitcast i16* %1 to i8* + %3 = call i1 @__rt__list__pop(i8* %0, i8* %2) + %4 = bitcast i8* %2 to i16* + %5 = load i16, i16* %4, align 2 + %6 = insertvalue { i1, i16 } { i1 true, i16 poison }, i16 %5, 1 + %7 = select i1 %3, { i1, i16 } %6, { i1, i16 } { i1 false, i16 poison } + %mrv = insertvalue { i8*, { i1, i16 } } undef, i8* %0, 0 + %mrv6 = insertvalue { i8*, { i1, i16 } } %mrv, { i1, i16 } %7, 1 + ret { i8*, { i1, i16 } } %mrv6 +} + +declare i1 @__rt__list__pop(i8*, i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@llvm21.snap index d6e49b589..4b36ca1f5 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, { i1, i16 } } @_hl.main.1(ptr %0) { +define internal { ptr, { i1, i16 } } @_hl.main.1(ptr %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..a6493f584 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@pre-mem2reg@llvm14.snap @@ -0,0 +1,40 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i8*, { i1, i16 } } @_hl.main.1(i8* %0) { +alloca_block: + %"0" = alloca i8*, align 8 + %"1" = alloca { i1, i16 }, align 8 + %"2_0" = alloca i8*, align 8 + %"4_0" = alloca i8*, align 8 + %"4_1" = alloca { i1, i16 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i8* %0, i8** %"2_0", align 8 + %"2_01" = load i8*, i8** %"2_0", align 8 + %1 = alloca i16, align 2 + %2 = bitcast i16* %1 to i8* + %3 = call i1 @__rt__list__pop(i8* %"2_01", i8* %2) + %4 = bitcast i8* %2 to i16* + %5 = load i16, i16* %4, align 2 + %6 = insertvalue { i1, i16 } { i1 true, i16 poison }, i16 %5, 1 + %7 = select i1 %3, { i1, i16 } %6, { i1, i16 } { i1 false, i16 poison } + store i8* %"2_01", i8** %"4_0", align 8 + store { i1, i16 } %7, { i1, i16 }* %"4_1", align 2 + %"4_02" = load i8*, i8** %"4_0", align 8 + %"4_13" = load { i1, i16 }, { i1, i16 }* %"4_1", align 2 + store i8* %"4_02", i8** %"0", align 8 + store { i1, i16 } %"4_13", { i1, i16 }* %"1", align 2 + %"04" = load i8*, i8** %"0", align 8 + %"15" = load { i1, i16 }, { i1, i16 }* %"1", align 2 + %mrv = insertvalue { i8*, { i1, i16 } } undef, i8* %"04", 0 + %mrv6 = insertvalue { i8*, { i1, i16 } } %mrv, { i1, i16 } %"15", 1 + ret { i8*, { i1, i16 } } %mrv6 +} + +declare i1 @__rt__list__pop(i8*, i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@pre-mem2reg@llvm21.snap index 7f1ec747f..f3f43906c 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__pop@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, { i1, i16 } } @_hl.main.1(ptr %0) { +define internal { ptr, { i1, i16 } } @_hl.main.1(ptr %0) { alloca_block: %"0" = alloca ptr, align 8 %"1" = alloca { i1, i16 }, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__push@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__push@llvm21.snap index af4c80b7e..3e9731f79 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__push@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__push@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private ptr @_hl.main.1(ptr %0, i16 %1) { +define internal ptr @_hl.main.1(ptr %0, i16 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__push@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__push@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..21e6e3eba --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__push@pre-mem2reg@llvm14.snap @@ -0,0 +1,32 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal i8* @_hl.main.1(i8* %0, i16 %1) { +alloca_block: + %"0" = alloca i8*, align 8 + %"2_0" = alloca i8*, align 8 + %"2_1" = alloca i16, align 2 + %"4_0" = alloca i8*, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i8* %0, i8** %"2_0", align 8 + store i16 %1, i16* %"2_1", align 2 + %"2_01" = load i8*, i8** %"2_0", align 8 + %"2_12" = load i16, i16* %"2_1", align 2 + %2 = alloca i16, align 2 + store i16 %"2_12", i16* %2, align 2 + %3 = bitcast i16* %2 to i8* + call void @__rt__list__push(i8* %"2_01", i8* %3) + store i8* %"2_01", i8** %"4_0", align 8 + %"4_03" = load i8*, i8** %"4_0", align 8 + store i8* %"4_03", i8** %"0", align 8 + %"04" = load i8*, i8** %"0", align 8 + ret i8* %"04" +} + +declare void @__rt__list__push(i8*, i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__push@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__push@pre-mem2reg@llvm21.snap index fbaa2c20a..04f7d10b3 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__push@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__push@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private ptr @_hl.main.1(ptr %0, i16 %1) { +define internal ptr @_hl.main.1(ptr %0, i16 %1) { alloca_block: %"0" = alloca ptr, align 8 %"2_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@llvm14.snap new file mode 100644 index 000000000..988eadd58 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@llvm14.snap @@ -0,0 +1,27 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i8*, { i1, i16 } } @_hl.main.1(i8* %0, i64 %1, i16 %2) { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %3 = alloca i16, align 2 + store i16 %2, i16* %3, align 2 + %4 = bitcast i16* %3 to i8* + %5 = call i1 @__rt__list__set(i8* %0, i64 %1, i8* %4) + %6 = bitcast i8* %4 to i16* + %7 = load i16, i16* %6, align 2 + %8 = insertvalue { i1, i16 } { i1 false, i16 poison }, i16 %7, 1 + %9 = insertvalue { i1, i16 } { i1 true, i16 poison }, i16 %2, 1 + %10 = select i1 %5, { i1, i16 } %9, { i1, i16 } %8 + %mrv = insertvalue { i8*, { i1, i16 } } undef, i8* %0, 0 + %mrv8 = insertvalue { i8*, { i1, i16 } } %mrv, { i1, i16 } %10, 1 + ret { i8*, { i1, i16 } } %mrv8 +} + +declare i1 @__rt__list__set(i8*, i64, i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@llvm21.snap index 7ead47989..b84dfcecd 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, { i1, i16 } } @_hl.main.1(ptr %0, i64 %1, i16 %2) { +define internal { ptr, { i1, i16 } } @_hl.main.1(ptr %0, i64 %1, i16 %2) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..24feaa6a9 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@pre-mem2reg@llvm14.snap @@ -0,0 +1,48 @@ +--- +source: hugr-llvm/src/extension/collections/list.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i8*, { i1, i16 } } @_hl.main.1(i8* %0, i64 %1, i16 %2) { +alloca_block: + %"0" = alloca i8*, align 8 + %"1" = alloca { i1, i16 }, align 8 + %"2_0" = alloca i8*, align 8 + %"2_1" = alloca i64, align 8 + %"2_2" = alloca i16, align 2 + %"4_0" = alloca i8*, align 8 + %"4_1" = alloca { i1, i16 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i8* %0, i8** %"2_0", align 8 + store i64 %1, i64* %"2_1", align 4 + store i16 %2, i16* %"2_2", align 2 + %"2_01" = load i8*, i8** %"2_0", align 8 + %"2_12" = load i64, i64* %"2_1", align 4 + %"2_23" = load i16, i16* %"2_2", align 2 + %3 = alloca i16, align 2 + store i16 %"2_23", i16* %3, align 2 + %4 = bitcast i16* %3 to i8* + %5 = call i1 @__rt__list__set(i8* %"2_01", i64 %"2_12", i8* %4) + %6 = bitcast i8* %4 to i16* + %7 = load i16, i16* %6, align 2 + %8 = insertvalue { i1, i16 } { i1 false, i16 poison }, i16 %7, 1 + %9 = insertvalue { i1, i16 } { i1 true, i16 poison }, i16 %"2_23", 1 + %10 = select i1 %5, { i1, i16 } %9, { i1, i16 } %8 + store i8* %"2_01", i8** %"4_0", align 8 + store { i1, i16 } %10, { i1, i16 }* %"4_1", align 2 + %"4_04" = load i8*, i8** %"4_0", align 8 + %"4_15" = load { i1, i16 }, { i1, i16 }* %"4_1", align 2 + store i8* %"4_04", i8** %"0", align 8 + store { i1, i16 } %"4_15", { i1, i16 }* %"1", align 2 + %"06" = load i8*, i8** %"0", align 8 + %"17" = load { i1, i16 }, { i1, i16 }* %"1", align 2 + %mrv = insertvalue { i8*, { i1, i16 } } undef, i8* %"06", 0 + %mrv8 = insertvalue { i8*, { i1, i16 } } %mrv, { i1, i16 } %"17", 1 + ret { i8*, { i1, i16 } } %mrv8 +} + +declare i1 @__rt__list__set(i8*, i64, i8*) diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@pre-mem2reg@llvm21.snap index 80123553d..cb218a2d6 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__list__test__set@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { ptr, { i1, i16 } } @_hl.main.1(ptr %0, i64 %1, i16 %2) { +define internal { ptr, { i1, i16 } } @_hl.main.1(ptr %0, i64 %1, i16 %2) { alloca_block: %"0" = alloca ptr, align 8 %"1" = alloca { i1, i16 }, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_all_ops@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_all_ops@llvm14.snap new file mode 100644 index 000000000..4562d2edf --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_all_ops@llvm14.snap @@ -0,0 +1,245 @@ +--- +source: hugr-llvm/src/extension/collections/stack_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@1 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.1 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@2 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.2 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@3 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.3 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@4 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.4 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal void @_hl.main.1() { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %0 = insertvalue [2 x i64] undef, i64 1, 0 + %1 = insertvalue [2 x i64] %0, i64 2, 1 + %2 = insertvalue [2 x i64] undef, i64 1, 0 + %3 = insertvalue [2 x i64] %2, i64 2, 1 + %extract = extractvalue [2 x i64] %3, 0 + %extract6 = extractvalue [2 x i64] %3, 1 + %4 = icmp ult i64 0, 2 + %5 = icmp ult i64 1, 2 + %6 = and i1 %4, %5 + br i1 %6, label %9, label %7 + +7: ; preds = %entry_block + %8 = insertvalue { i1, [2 x i64] } { i1 false, [2 x i64] poison }, [2 x i64] %1, 1 + br label %19 + +9: ; preds = %entry_block + %10 = alloca i64, i32 2, align 8 + %11 = bitcast i64* %10 to [2 x i64]* + store [2 x i64] %1, [2 x i64]* %11, align 4 + %12 = getelementptr inbounds i64, i64* %10, i64 0 + %13 = load i64, i64* %12, align 4 + %14 = getelementptr inbounds i64, i64* %10, i64 1 + %15 = load i64, i64* %14, align 4 + store i64 %15, i64* %12, align 4 + store i64 %13, i64* %14, align 4 + %16 = bitcast i64* %10 to [2 x i64]* + %17 = load [2 x i64], [2 x i64]* %16, align 4 + %18 = insertvalue { i1, [2 x i64] } { i1 true, [2 x i64] poison }, [2 x i64] %17, 1 + br label %19 + +19: ; preds = %7, %9 + %"0.0" = phi { i1, [2 x i64] } [ %18, %9 ], [ %8, %7 ] + %20 = extractvalue { i1, [2 x i64] } %"0.0", 0 + switch i1 %20, label %21 [ + i1 true, label %23 + ] + +21: ; preds = %19 + %22 = extractvalue { i1, [2 x i64] } %"0.0", 1 + br label %cond_19_case_0 + +23: ; preds = %19 + %24 = extractvalue { i1, [2 x i64] } %"0.0", 1 + br label %cond_19_case_1 + +cond_19_case_0: ; preds = %21 + %25 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @0, i32 0, i32 0) }, 0 + %26 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @0, i32 0, i32 0) }, 1 + %27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 %25, i8* %26) + call void @abort() + br label %cond_exit_19 + +cond_19_case_1: ; preds = %23 + br label %cond_exit_19 + +cond_exit_19: ; preds = %cond_19_case_1, %cond_19_case_0 + %"012.0" = phi [2 x i64] [ zeroinitializer, %cond_19_case_0 ], [ %24, %cond_19_case_1 ] + %28 = icmp ult i64 0, 2 + br i1 %28, label %30, label %29 + +29: ; preds = %cond_exit_19 + br label %36 + +30: ; preds = %cond_exit_19 + %31 = alloca i64, i32 2, align 8 + %32 = bitcast i64* %31 to [2 x i64]* + store [2 x i64] %"012.0", [2 x i64]* %32, align 4 + %33 = getelementptr inbounds i64, i64* %31, i64 0 + %34 = load i64, i64* %33, align 4 + %35 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %34, 1 + br label %36 + +36: ; preds = %29, %30 + %"024.0" = phi { i1, i64 } [ %35, %30 ], [ { i1 false, i64 poison }, %29 ] + %37 = extractvalue { i1, i64 } %"024.0", 0 + switch i1 %37, label %38 [ + i1 true, label %39 + ] + +38: ; preds = %36 + br label %cond_31_case_0 + +39: ; preds = %36 + %40 = extractvalue { i1, i64 } %"024.0", 1 + br label %cond_31_case_1 + +cond_31_case_0: ; preds = %38 + %41 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @1, i32 0, i32 0) }, 0 + %42 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @1, i32 0, i32 0) }, 1 + %43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.1, i32 0, i32 0), i32 %41, i8* %42) + call void @abort() + br label %cond_exit_31 + +cond_31_case_1: ; preds = %39 + br label %cond_exit_31 + +cond_exit_31: ; preds = %cond_31_case_1, %cond_31_case_0 + %"028.0" = phi i64 [ 0, %cond_31_case_0 ], [ %40, %cond_31_case_1 ] + %44 = icmp ult i64 1, 2 + br i1 %44, label %48, label %45 + +45: ; preds = %cond_exit_31 + %46 = insertvalue { i1, i64, [2 x i64] } { i1 false, i64 poison, [2 x i64] poison }, i64 %"028.0", 1 + %47 = insertvalue { i1, i64, [2 x i64] } %46, [2 x i64] %"012.0", 2 + br label %57 + +48: ; preds = %cond_exit_31 + %49 = alloca i64, i32 2, align 8 + %50 = bitcast i64* %49 to [2 x i64]* + store [2 x i64] %"012.0", [2 x i64]* %50, align 4 + %51 = getelementptr inbounds i64, i64* %49, i64 1 + %52 = load i64, i64* %51, align 4 + store i64 %"028.0", i64* %51, align 4 + %53 = bitcast i64* %49 to [2 x i64]* + %54 = load [2 x i64], [2 x i64]* %53, align 4 + %55 = insertvalue { i1, i64, [2 x i64] } { i1 true, i64 poison, [2 x i64] poison }, i64 %52, 1 + %56 = insertvalue { i1, i64, [2 x i64] } %55, [2 x i64] %54, 2 + br label %57 + +57: ; preds = %45, %48 + %"038.0" = phi { i1, i64, [2 x i64] } [ %56, %48 ], [ %47, %45 ] + %58 = extractvalue { i1, i64, [2 x i64] } %"038.0", 0 + switch i1 %58, label %59 [ + i1 true, label %62 + ] + +59: ; preds = %57 + %60 = extractvalue { i1, i64, [2 x i64] } %"038.0", 1 + %61 = extractvalue { i1, i64, [2 x i64] } %"038.0", 2 + br label %cond_42_case_0 + +62: ; preds = %57 + %63 = extractvalue { i1, i64, [2 x i64] } %"038.0", 1 + %64 = extractvalue { i1, i64, [2 x i64] } %"038.0", 2 + br label %cond_42_case_1 + +cond_42_case_0: ; preds = %59 + %65 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @2, i32 0, i32 0) }, 0 + %66 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @2, i32 0, i32 0) }, 1 + %67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.2, i32 0, i32 0), i32 %65, i8* %66) + call void @abort() + br label %cond_exit_42 + +cond_42_case_1: ; preds = %62 + br label %cond_exit_42 + +cond_exit_42: ; preds = %cond_42_case_1, %cond_42_case_0 + %"041.0" = phi i64 [ 0, %cond_42_case_0 ], [ %63, %cond_42_case_1 ] + %"142.0" = phi [2 x i64] [ zeroinitializer, %cond_42_case_0 ], [ %64, %cond_42_case_1 ] + %68 = alloca i64, i32 2, align 8 + %69 = bitcast i64* %68 to [2 x i64]* + store [2 x i64] %"142.0", [2 x i64]* %69, align 4 + %70 = getelementptr i64, i64* %68, i32 1 + %71 = load i64, i64* %68, align 4 + %72 = bitcast i64* %70 to [1 x i64]* + %73 = load [1 x i64], [1 x i64]* %72, align 4 + %74 = insertvalue { i1, i64, [1 x i64] } { i1 true, i64 poison, [1 x i64] poison }, i64 %71, 1 + %75 = insertvalue { i1, i64, [1 x i64] } %74, [1 x i64] %73, 2 + %76 = extractvalue { i1, i64, [1 x i64] } %75, 0 + switch i1 %76, label %77 [ + i1 true, label %78 + ] + +77: ; preds = %cond_exit_42 + br label %cond_53_case_0 + +78: ; preds = %cond_exit_42 + %79 = extractvalue { i1, i64, [1 x i64] } %75, 1 + %80 = extractvalue { i1, i64, [1 x i64] } %75, 2 + br label %cond_53_case_1 + +cond_53_case_0: ; preds = %77 + %81 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @3, i32 0, i32 0) }, 0 + %82 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @3, i32 0, i32 0) }, 1 + %83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.3, i32 0, i32 0), i32 %81, i8* %82) + call void @abort() + br label %cond_exit_53 + +cond_53_case_1: ; preds = %78 + br label %cond_exit_53 + +cond_exit_53: ; preds = %cond_53_case_1, %cond_53_case_0 + %"062.0" = phi i64 [ 0, %cond_53_case_0 ], [ %79, %cond_53_case_1 ] + %"163.0" = phi [1 x i64] [ zeroinitializer, %cond_53_case_0 ], [ %80, %cond_53_case_1 ] + %84 = alloca i64, align 8 + %85 = bitcast i64* %84 to [1 x i64]* + store [1 x i64] %"163.0", [1 x i64]* %85, align 4 + %86 = getelementptr i64, i64* %84, i32 0 + %87 = load i64, i64* %86, align 4 + %88 = bitcast i64* %84 to [0 x i64]* + %89 = load [0 x i64], [0 x i64]* %88, align 4 + %90 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %87, 1 + %91 = extractvalue { i1, i64 } %90, 0 + switch i1 %91, label %92 [ + i1 true, label %93 + ] + +92: ; preds = %cond_exit_53 + br label %cond_64_case_0 + +93: ; preds = %cond_exit_53 + %94 = extractvalue { i1, i64 } %90, 1 + br label %cond_64_case_1 + +cond_64_case_0: ; preds = %92 + %95 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @4, i32 0, i32 0) }, 0 + %96 = extractvalue { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @4, i32 0, i32 0) }, 1 + %97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.4, i32 0, i32 0), i32 %95, i8* %96) + call void @abort() + br label %cond_exit_64 + +cond_64_case_1: ; preds = %93 + br label %cond_exit_64 + +cond_exit_64: ; preds = %cond_64_case_1, %cond_64_case_0 + %"077.0" = phi i64 [ 0, %cond_64_case_0 ], [ %94, %cond_64_case_1 ] + ret void +} + +declare i32 @printf(i8*, ...) + +declare void @abort() diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_all_ops@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_all_ops@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..ce1d02bf5 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_all_ops@pre-mem2reg@llvm14.snap @@ -0,0 +1,451 @@ +--- +source: hugr-llvm/src/extension/collections/stack_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@1 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.1 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@2 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.2 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@3 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.3 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 +@4 = private unnamed_addr constant [37 x i8] c"Expected variant 1 but got variant 0\00", align 1 +@prelude.panic_template.4 = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal void @_hl.main.1() { +alloca_block: + %"12_0" = alloca i64, align 8 + %"10_0" = alloca i64, align 8 + %"15_0" = alloca [2 x i64], align 8 + %"13_0" = alloca [2 x i64], align 8 + %"14_0" = alloca i64, align 8 + %"14_1" = alloca i64, align 8 + %"8_0" = alloca i64, align 8 + %"18_0" = alloca { i1, [2 x i64] }, align 8 + %"0" = alloca { i1, [2 x i64] }, align 8 + %"19_0" = alloca [2 x i64], align 8 + %"012" = alloca [2 x i64], align 8 + %"014" = alloca [2 x i64], align 8 + %"24_0" = alloca { i32, i8* }, align 8 + %"21_0" = alloca [2 x i64], align 8 + %"25_0" = alloca [2 x i64], align 8 + %"019" = alloca [2 x i64], align 8 + %"27_0" = alloca [2 x i64], align 8 + %"29_0" = alloca { i1, i64 }, align 8 + %"29_1" = alloca [2 x i64], align 8 + %"024" = alloca { i1, i64 }, align 8 + %"1" = alloca [2 x i64], align 8 + %"31_0" = alloca i64, align 8 + %"028" = alloca i64, align 8 + %"36_0" = alloca { i32, i8* }, align 8 + %"37_0" = alloca i64, align 8 + %"032" = alloca i64, align 8 + %"39_0" = alloca i64, align 8 + %"41_0" = alloca { i1, i64, [2 x i64] }, align 8 + %"038" = alloca { i1, i64, [2 x i64] }, align 8 + %"42_0" = alloca i64, align 8 + %"42_1" = alloca [2 x i64], align 8 + %"041" = alloca i64, align 8 + %"142" = alloca [2 x i64], align 8 + %"045" = alloca i64, align 8 + %"146" = alloca [2 x i64], align 8 + %"47_0" = alloca { i32, i8* }, align 8 + %"44_0" = alloca i64, align 8 + %"44_1" = alloca [2 x i64], align 8 + %"48_0" = alloca i64, align 8 + %"48_1" = alloca [2 x i64], align 8 + %"054" = alloca i64, align 8 + %"155" = alloca [2 x i64], align 8 + %"50_0" = alloca i64, align 8 + %"50_1" = alloca [2 x i64], align 8 + %"52_0" = alloca { i1, i64, [1 x i64] }, align 8 + %"53_0" = alloca i64, align 8 + %"53_1" = alloca [1 x i64], align 8 + %"062" = alloca i64, align 8 + %"163" = alloca [1 x i64], align 8 + %"58_0" = alloca { i32, i8* }, align 8 + %"59_0" = alloca i64, align 8 + %"59_1" = alloca [1 x i64], align 8 + %"069" = alloca i64, align 8 + %"170" = alloca [1 x i64], align 8 + %"61_0" = alloca i64, align 8 + %"61_1" = alloca [1 x i64], align 8 + %"63_0" = alloca { i1, i64 }, align 8 + %"64_0" = alloca i64, align 8 + %"64_1" = alloca [0 x i64], align 8 + %"077" = alloca i64, align 8 + %"178" = alloca [0 x i64], align 8 + %"69_0" = alloca { i32, i8* }, align 8 + %"70_0" = alloca i64, align 8 + %"70_1" = alloca [0 x i64], align 8 + %"084" = alloca i64, align 8 + %"185" = alloca [0 x i64], align 8 + %"72_0" = alloca i64, align 8 + %"72_1" = alloca [0 x i64], align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 2, i64* %"12_0", align 4 + store i64 1, i64* %"10_0", align 4 + %"10_01" = load i64, i64* %"10_0", align 4 + %"12_02" = load i64, i64* %"12_0", align 4 + %0 = insertvalue [2 x i64] undef, i64 %"10_01", 0 + %1 = insertvalue [2 x i64] %0, i64 %"12_02", 1 + store [2 x i64] %1, [2 x i64]* %"15_0", align 4 + %"10_03" = load i64, i64* %"10_0", align 4 + %"12_04" = load i64, i64* %"12_0", align 4 + %2 = insertvalue [2 x i64] undef, i64 %"10_03", 0 + %3 = insertvalue [2 x i64] %2, i64 %"12_04", 1 + store [2 x i64] %3, [2 x i64]* %"13_0", align 4 + %"13_05" = load [2 x i64], [2 x i64]* %"13_0", align 4 + %extract = extractvalue [2 x i64] %"13_05", 0 + %extract6 = extractvalue [2 x i64] %"13_05", 1 + store i64 %extract, i64* %"14_0", align 4 + store i64 %extract6, i64* %"14_1", align 4 + store i64 0, i64* %"8_0", align 4 + %"15_07" = load [2 x i64], [2 x i64]* %"15_0", align 4 + %"8_08" = load i64, i64* %"8_0", align 4 + %"10_09" = load i64, i64* %"10_0", align 4 + %4 = icmp ult i64 %"8_08", 2 + %5 = icmp ult i64 %"10_09", 2 + %6 = and i1 %4, %5 + br i1 %6, label %9, label %7 + +7: ; preds = %entry_block + %8 = insertvalue { i1, [2 x i64] } { i1 false, [2 x i64] poison }, [2 x i64] %"15_07", 1 + store { i1, [2 x i64] } %8, { i1, [2 x i64] }* %"0", align 4 + br label %19 + +9: ; preds = %entry_block + %10 = alloca i64, i32 2, align 8 + %11 = bitcast i64* %10 to [2 x i64]* + store [2 x i64] %"15_07", [2 x i64]* %11, align 4 + %12 = getelementptr inbounds i64, i64* %10, i64 %"8_08" + %13 = load i64, i64* %12, align 4 + %14 = getelementptr inbounds i64, i64* %10, i64 %"10_09" + %15 = load i64, i64* %14, align 4 + store i64 %15, i64* %12, align 4 + store i64 %13, i64* %14, align 4 + %16 = bitcast i64* %10 to [2 x i64]* + %17 = load [2 x i64], [2 x i64]* %16, align 4 + %18 = insertvalue { i1, [2 x i64] } { i1 true, [2 x i64] poison }, [2 x i64] %17, 1 + store { i1, [2 x i64] } %18, { i1, [2 x i64] }* %"0", align 4 + br label %19 + +19: ; preds = %7, %9 + %"010" = load { i1, [2 x i64] }, { i1, [2 x i64] }* %"0", align 4 + store { i1, [2 x i64] } %"010", { i1, [2 x i64] }* %"18_0", align 4 + %"18_011" = load { i1, [2 x i64] }, { i1, [2 x i64] }* %"18_0", align 4 + %20 = extractvalue { i1, [2 x i64] } %"18_011", 0 + switch i1 %20, label %21 [ + i1 true, label %23 + ] + +21: ; preds = %19 + %22 = extractvalue { i1, [2 x i64] } %"18_011", 1 + store [2 x i64] %22, [2 x i64]* %"014", align 4 + br label %cond_19_case_0 + +23: ; preds = %19 + %24 = extractvalue { i1, [2 x i64] } %"18_011", 1 + store [2 x i64] %24, [2 x i64]* %"019", align 4 + br label %cond_19_case_1 + +cond_19_case_0: ; preds = %21 + %"015" = load [2 x i64], [2 x i64]* %"014", align 4 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @0, i32 0, i32 0) }, { i32, i8* }* %"24_0", align 8 + store [2 x i64] %"015", [2 x i64]* %"21_0", align 4 + %"24_016" = load { i32, i8* }, { i32, i8* }* %"24_0", align 8 + %"21_017" = load [2 x i64], [2 x i64]* %"21_0", align 4 + %25 = extractvalue { i32, i8* } %"24_016", 0 + %26 = extractvalue { i32, i8* } %"24_016", 1 + %27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 %25, i8* %26) + call void @abort() + store [2 x i64] zeroinitializer, [2 x i64]* %"25_0", align 4 + %"25_018" = load [2 x i64], [2 x i64]* %"25_0", align 4 + store [2 x i64] %"25_018", [2 x i64]* %"012", align 4 + br label %cond_exit_19 + +cond_19_case_1: ; preds = %23 + %"020" = load [2 x i64], [2 x i64]* %"019", align 4 + store [2 x i64] %"020", [2 x i64]* %"27_0", align 4 + %"27_021" = load [2 x i64], [2 x i64]* %"27_0", align 4 + store [2 x i64] %"27_021", [2 x i64]* %"012", align 4 + br label %cond_exit_19 + +cond_exit_19: ; preds = %cond_19_case_1, %cond_19_case_0 + %"013" = load [2 x i64], [2 x i64]* %"012", align 4 + store [2 x i64] %"013", [2 x i64]* %"19_0", align 4 + %"19_022" = load [2 x i64], [2 x i64]* %"19_0", align 4 + %"8_023" = load i64, i64* %"8_0", align 4 + %28 = icmp ult i64 %"8_023", 2 + br i1 %28, label %30, label %29 + +29: ; preds = %cond_exit_19 + store { i1, i64 } { i1 false, i64 poison }, { i1, i64 }* %"024", align 4 + store [2 x i64] %"19_022", [2 x i64]* %"1", align 4 + br label %36 + +30: ; preds = %cond_exit_19 + %31 = alloca i64, i32 2, align 8 + %32 = bitcast i64* %31 to [2 x i64]* + store [2 x i64] %"19_022", [2 x i64]* %32, align 4 + %33 = getelementptr inbounds i64, i64* %31, i64 %"8_023" + %34 = load i64, i64* %33, align 4 + %35 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %34, 1 + store { i1, i64 } %35, { i1, i64 }* %"024", align 4 + store [2 x i64] %"19_022", [2 x i64]* %"1", align 4 + br label %36 + +36: ; preds = %29, %30 + %"025" = load { i1, i64 }, { i1, i64 }* %"024", align 4 + %"126" = load [2 x i64], [2 x i64]* %"1", align 4 + store { i1, i64 } %"025", { i1, i64 }* %"29_0", align 4 + store [2 x i64] %"126", [2 x i64]* %"29_1", align 4 + %"29_027" = load { i1, i64 }, { i1, i64 }* %"29_0", align 4 + %37 = extractvalue { i1, i64 } %"29_027", 0 + switch i1 %37, label %38 [ + i1 true, label %39 + ] + +38: ; preds = %36 + br label %cond_31_case_0 + +39: ; preds = %36 + %40 = extractvalue { i1, i64 } %"29_027", 1 + store i64 %40, i64* %"032", align 4 + br label %cond_31_case_1 + +cond_31_case_0: ; preds = %38 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @1, i32 0, i32 0) }, { i32, i8* }* %"36_0", align 8 + %"36_030" = load { i32, i8* }, { i32, i8* }* %"36_0", align 8 + %41 = extractvalue { i32, i8* } %"36_030", 0 + %42 = extractvalue { i32, i8* } %"36_030", 1 + %43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.1, i32 0, i32 0), i32 %41, i8* %42) + call void @abort() + store i64 0, i64* %"37_0", align 4 + %"37_031" = load i64, i64* %"37_0", align 4 + store i64 %"37_031", i64* %"028", align 4 + br label %cond_exit_31 + +cond_31_case_1: ; preds = %39 + %"033" = load i64, i64* %"032", align 4 + store i64 %"033", i64* %"39_0", align 4 + %"39_034" = load i64, i64* %"39_0", align 4 + store i64 %"39_034", i64* %"028", align 4 + br label %cond_exit_31 + +cond_exit_31: ; preds = %cond_31_case_1, %cond_31_case_0 + %"029" = load i64, i64* %"028", align 4 + store i64 %"029", i64* %"31_0", align 4 + %"29_135" = load [2 x i64], [2 x i64]* %"29_1", align 4 + %"10_036" = load i64, i64* %"10_0", align 4 + %"31_037" = load i64, i64* %"31_0", align 4 + %44 = icmp ult i64 %"10_036", 2 + br i1 %44, label %48, label %45 + +45: ; preds = %cond_exit_31 + %46 = insertvalue { i1, i64, [2 x i64] } { i1 false, i64 poison, [2 x i64] poison }, i64 %"31_037", 1 + %47 = insertvalue { i1, i64, [2 x i64] } %46, [2 x i64] %"29_135", 2 + store { i1, i64, [2 x i64] } %47, { i1, i64, [2 x i64] }* %"038", align 4 + br label %57 + +48: ; preds = %cond_exit_31 + %49 = alloca i64, i32 2, align 8 + %50 = bitcast i64* %49 to [2 x i64]* + store [2 x i64] %"29_135", [2 x i64]* %50, align 4 + %51 = getelementptr inbounds i64, i64* %49, i64 %"10_036" + %52 = load i64, i64* %51, align 4 + store i64 %"31_037", i64* %51, align 4 + %53 = bitcast i64* %49 to [2 x i64]* + %54 = load [2 x i64], [2 x i64]* %53, align 4 + %55 = insertvalue { i1, i64, [2 x i64] } { i1 true, i64 poison, [2 x i64] poison }, i64 %52, 1 + %56 = insertvalue { i1, i64, [2 x i64] } %55, [2 x i64] %54, 2 + store { i1, i64, [2 x i64] } %56, { i1, i64, [2 x i64] }* %"038", align 4 + br label %57 + +57: ; preds = %45, %48 + %"039" = load { i1, i64, [2 x i64] }, { i1, i64, [2 x i64] }* %"038", align 4 + store { i1, i64, [2 x i64] } %"039", { i1, i64, [2 x i64] }* %"41_0", align 4 + %"41_040" = load { i1, i64, [2 x i64] }, { i1, i64, [2 x i64] }* %"41_0", align 4 + %58 = extractvalue { i1, i64, [2 x i64] } %"41_040", 0 + switch i1 %58, label %59 [ + i1 true, label %62 + ] + +59: ; preds = %57 + %60 = extractvalue { i1, i64, [2 x i64] } %"41_040", 1 + %61 = extractvalue { i1, i64, [2 x i64] } %"41_040", 2 + store i64 %60, i64* %"045", align 4 + store [2 x i64] %61, [2 x i64]* %"146", align 4 + br label %cond_42_case_0 + +62: ; preds = %57 + %63 = extractvalue { i1, i64, [2 x i64] } %"41_040", 1 + %64 = extractvalue { i1, i64, [2 x i64] } %"41_040", 2 + store i64 %63, i64* %"054", align 4 + store [2 x i64] %64, [2 x i64]* %"155", align 4 + br label %cond_42_case_1 + +cond_42_case_0: ; preds = %59 + %"047" = load i64, i64* %"045", align 4 + %"148" = load [2 x i64], [2 x i64]* %"146", align 4 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @2, i32 0, i32 0) }, { i32, i8* }* %"47_0", align 8 + store i64 %"047", i64* %"44_0", align 4 + store [2 x i64] %"148", [2 x i64]* %"44_1", align 4 + %"47_049" = load { i32, i8* }, { i32, i8* }* %"47_0", align 8 + %"44_050" = load i64, i64* %"44_0", align 4 + %"44_151" = load [2 x i64], [2 x i64]* %"44_1", align 4 + %65 = extractvalue { i32, i8* } %"47_049", 0 + %66 = extractvalue { i32, i8* } %"47_049", 1 + %67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.2, i32 0, i32 0), i32 %65, i8* %66) + call void @abort() + store i64 0, i64* %"48_0", align 4 + store [2 x i64] zeroinitializer, [2 x i64]* %"48_1", align 4 + %"48_052" = load i64, i64* %"48_0", align 4 + %"48_153" = load [2 x i64], [2 x i64]* %"48_1", align 4 + store i64 %"48_052", i64* %"041", align 4 + store [2 x i64] %"48_153", [2 x i64]* %"142", align 4 + br label %cond_exit_42 + +cond_42_case_1: ; preds = %62 + %"056" = load i64, i64* %"054", align 4 + %"157" = load [2 x i64], [2 x i64]* %"155", align 4 + store i64 %"056", i64* %"50_0", align 4 + store [2 x i64] %"157", [2 x i64]* %"50_1", align 4 + %"50_058" = load i64, i64* %"50_0", align 4 + %"50_159" = load [2 x i64], [2 x i64]* %"50_1", align 4 + store i64 %"50_058", i64* %"041", align 4 + store [2 x i64] %"50_159", [2 x i64]* %"142", align 4 + br label %cond_exit_42 + +cond_exit_42: ; preds = %cond_42_case_1, %cond_42_case_0 + %"043" = load i64, i64* %"041", align 4 + %"144" = load [2 x i64], [2 x i64]* %"142", align 4 + store i64 %"043", i64* %"42_0", align 4 + store [2 x i64] %"144", [2 x i64]* %"42_1", align 4 + %"42_160" = load [2 x i64], [2 x i64]* %"42_1", align 4 + %68 = alloca i64, i32 2, align 8 + %69 = bitcast i64* %68 to [2 x i64]* + store [2 x i64] %"42_160", [2 x i64]* %69, align 4 + %70 = getelementptr i64, i64* %68, i32 1 + %71 = load i64, i64* %68, align 4 + %72 = bitcast i64* %70 to [1 x i64]* + %73 = load [1 x i64], [1 x i64]* %72, align 4 + %74 = insertvalue { i1, i64, [1 x i64] } { i1 true, i64 poison, [1 x i64] poison }, i64 %71, 1 + %75 = insertvalue { i1, i64, [1 x i64] } %74, [1 x i64] %73, 2 + store { i1, i64, [1 x i64] } %75, { i1, i64, [1 x i64] }* %"52_0", align 4 + %"52_061" = load { i1, i64, [1 x i64] }, { i1, i64, [1 x i64] }* %"52_0", align 4 + %76 = extractvalue { i1, i64, [1 x i64] } %"52_061", 0 + switch i1 %76, label %77 [ + i1 true, label %78 + ] + +77: ; preds = %cond_exit_42 + br label %cond_53_case_0 + +78: ; preds = %cond_exit_42 + %79 = extractvalue { i1, i64, [1 x i64] } %"52_061", 1 + %80 = extractvalue { i1, i64, [1 x i64] } %"52_061", 2 + store i64 %79, i64* %"069", align 4 + store [1 x i64] %80, [1 x i64]* %"170", align 4 + br label %cond_53_case_1 + +cond_53_case_0: ; preds = %77 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @3, i32 0, i32 0) }, { i32, i8* }* %"58_0", align 8 + %"58_066" = load { i32, i8* }, { i32, i8* }* %"58_0", align 8 + %81 = extractvalue { i32, i8* } %"58_066", 0 + %82 = extractvalue { i32, i8* } %"58_066", 1 + %83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.3, i32 0, i32 0), i32 %81, i8* %82) + call void @abort() + store i64 0, i64* %"59_0", align 4 + store [1 x i64] zeroinitializer, [1 x i64]* %"59_1", align 4 + %"59_067" = load i64, i64* %"59_0", align 4 + %"59_168" = load [1 x i64], [1 x i64]* %"59_1", align 4 + store i64 %"59_067", i64* %"062", align 4 + store [1 x i64] %"59_168", [1 x i64]* %"163", align 4 + br label %cond_exit_53 + +cond_53_case_1: ; preds = %78 + %"071" = load i64, i64* %"069", align 4 + %"172" = load [1 x i64], [1 x i64]* %"170", align 4 + store i64 %"071", i64* %"61_0", align 4 + store [1 x i64] %"172", [1 x i64]* %"61_1", align 4 + %"61_073" = load i64, i64* %"61_0", align 4 + %"61_174" = load [1 x i64], [1 x i64]* %"61_1", align 4 + store i64 %"61_073", i64* %"062", align 4 + store [1 x i64] %"61_174", [1 x i64]* %"163", align 4 + br label %cond_exit_53 + +cond_exit_53: ; preds = %cond_53_case_1, %cond_53_case_0 + %"064" = load i64, i64* %"062", align 4 + %"165" = load [1 x i64], [1 x i64]* %"163", align 4 + store i64 %"064", i64* %"53_0", align 4 + store [1 x i64] %"165", [1 x i64]* %"53_1", align 4 + %"53_175" = load [1 x i64], [1 x i64]* %"53_1", align 4 + %84 = alloca i64, align 8 + %85 = bitcast i64* %84 to [1 x i64]* + store [1 x i64] %"53_175", [1 x i64]* %85, align 4 + %86 = getelementptr i64, i64* %84, i32 0 + %87 = load i64, i64* %86, align 4 + %88 = bitcast i64* %84 to [0 x i64]* + %89 = load [0 x i64], [0 x i64]* %88, align 4 + %90 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %87, 1 + store { i1, i64 } %90, { i1, i64 }* %"63_0", align 4 + %"63_076" = load { i1, i64 }, { i1, i64 }* %"63_0", align 4 + %91 = extractvalue { i1, i64 } %"63_076", 0 + switch i1 %91, label %92 [ + i1 true, label %93 + ] + +92: ; preds = %cond_exit_53 + br label %cond_64_case_0 + +93: ; preds = %cond_exit_53 + %94 = extractvalue { i1, i64 } %"63_076", 1 + store i64 %94, i64* %"084", align 4 + store [0 x i64] undef, [0 x i64]* %"185", align 4 + br label %cond_64_case_1 + +cond_64_case_0: ; preds = %92 + store { i32, i8* } { i32 1, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @4, i32 0, i32 0) }, { i32, i8* }* %"69_0", align 8 + %"69_081" = load { i32, i8* }, { i32, i8* }* %"69_0", align 8 + %95 = extractvalue { i32, i8* } %"69_081", 0 + %96 = extractvalue { i32, i8* } %"69_081", 1 + %97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template.4, i32 0, i32 0), i32 %95, i8* %96) + call void @abort() + store i64 0, i64* %"70_0", align 4 + store [0 x i64] zeroinitializer, [0 x i64]* %"70_1", align 4 + %"70_082" = load i64, i64* %"70_0", align 4 + %"70_183" = load [0 x i64], [0 x i64]* %"70_1", align 4 + store i64 %"70_082", i64* %"077", align 4 + store [0 x i64] %"70_183", [0 x i64]* %"178", align 4 + br label %cond_exit_64 + +cond_64_case_1: ; preds = %93 + %"086" = load i64, i64* %"084", align 4 + %"187" = load [0 x i64], [0 x i64]* %"185", align 4 + store i64 %"086", i64* %"72_0", align 4 + store [0 x i64] %"187", [0 x i64]* %"72_1", align 4 + %"72_088" = load i64, i64* %"72_0", align 4 + %"72_189" = load [0 x i64], [0 x i64]* %"72_1", align 4 + store i64 %"72_088", i64* %"077", align 4 + store [0 x i64] %"72_189", [0 x i64]* %"178", align 4 + br label %cond_exit_64 + +cond_exit_64: ; preds = %cond_64_case_1, %cond_64_case_0 + %"079" = load i64, i64* %"077", align 4 + %"180" = load [0 x i64], [0 x i64]* %"178", align 4 + store i64 %"079", i64* %"64_0", align 4 + store [0 x i64] %"180", [0 x i64]* %"64_1", align 4 + %"64_190" = load [0 x i64], [0 x i64]* %"64_1", align 4 + ret void +} + +declare i32 @printf(i8*, ...) + +declare void @abort() diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_array_value@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_array_value@llvm21.snap index 09a06612a..5e6e77a26 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_array_value@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_array_value@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private [2 x i64] @_hl.main.1() { +define internal [2 x i64] @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_array_value@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_array_value@pre-mem2reg@llvm21.snap index 05b5de3f2..efe3648f9 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_array_value@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_array_value@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private [2 x i64] @_hl.main.1() { +define internal [2 x i64] @_hl.main.1() { alloca_block: %"0" = alloca [2 x i64], align 8 %"5_0" = alloca [2 x i64], align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_clone@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_clone@llvm21.snap index fb855d3fa..9a6b65975 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_clone@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_clone@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_clone@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_clone@pre-mem2reg@llvm21.snap index e80420f3d..78713724f 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_clone@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_clone@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: %"7_0" = alloca i64, align 8 %"5_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_get@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_get@llvm21.snap index 9723ecd7a..257afa085 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_get@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_get@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_get@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_get@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..03a65a3ed --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__stack_array__test__emit_get@pre-mem2reg@llvm14.snap @@ -0,0 +1,55 @@ +--- +source: hugr-llvm/src/extension/collections/stack_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal void @_hl.main.1() { +alloca_block: + %"7_0" = alloca i64, align 8 + %"5_0" = alloca i64, align 8 + %"8_0" = alloca [2 x i64], align 8 + %"9_0" = alloca { i1, i64 }, align 8 + %"9_1" = alloca [2 x i64], align 8 + %"0" = alloca { i1, i64 }, align 8 + %"1" = alloca [2 x i64], align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 2, i64* %"7_0", align 4 + store i64 1, i64* %"5_0", align 4 + %"5_01" = load i64, i64* %"5_0", align 4 + %"7_02" = load i64, i64* %"7_0", align 4 + %0 = insertvalue [2 x i64] undef, i64 %"5_01", 0 + %1 = insertvalue [2 x i64] %0, i64 %"7_02", 1 + store [2 x i64] %1, [2 x i64]* %"8_0", align 4 + %"8_03" = load [2 x i64], [2 x i64]* %"8_0", align 4 + %"5_04" = load i64, i64* %"5_0", align 4 + %2 = icmp ult i64 %"5_04", 2 + br i1 %2, label %4, label %3 + +3: ; preds = %entry_block + store { i1, i64 } { i1 false, i64 poison }, { i1, i64 }* %"0", align 4 + store [2 x i64] %"8_03", [2 x i64]* %"1", align 4 + br label %10 + +4: ; preds = %entry_block + %5 = alloca i64, i32 2, align 8 + %6 = bitcast i64* %5 to [2 x i64]* + store [2 x i64] %"8_03", [2 x i64]* %6, align 4 + %7 = getelementptr inbounds i64, i64* %5, i64 %"5_04" + %8 = load i64, i64* %7, align 4 + %9 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %8, 1 + store { i1, i64 } %9, { i1, i64 }* %"0", align 4 + store [2 x i64] %"8_03", [2 x i64]* %"1", align 4 + br label %10 + +10: ; preds = %3, %4 + %"05" = load { i1, i64 }, { i1, i64 }* %"0", align 4 + %"16" = load [2 x i64], [2 x i64]* %"1", align 4 + store { i1, i64 } %"05", { i1, i64 }* %"9_0", align 4 + store [2 x i64] %"16", [2 x i64]* %"9_1", align 4 + %"9_17" = load [2 x i64], [2 x i64]* %"9_1", align 4 + ret void +} diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__emit_static_array_of_static_array@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__emit_static_array_of_static_array@llvm21.snap index 0a2a45a9b..38d338568 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__emit_static_array_of_static_array@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__emit_static_array_of_static_array@llvm21.snap @@ -17,7 +17,7 @@ source_filename = "test_context" @sa.inner.1e8aada3.0 = constant { i64, [9 x i64] } { i64 9, [9 x i64] [i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9] } @sa.outer.e55b610a.0 = constant { i64, [10 x ptr] } { i64 10, [10 x ptr] [ptr @sa.inner.6acc1b76.0, ptr @sa.inner.e637bb5.0, ptr @sa.inner.2b6593f.0, ptr @sa.inner.1b9ad7c.0, ptr @sa.inner.e67fbfa4.0, ptr @sa.inner.15dc27f6.0, ptr @sa.inner.c43a2bb2.0, ptr @sa.inner.7f5d5e16.0, ptr @sa.inner.a0bc9c53.0, ptr @sa.inner.1e8aada3.0] } -define private i64 @_hl.main.1() { +define internal i64 @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__emit_static_array_of_static_array@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__emit_static_array_of_static_array@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..950cd1316 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__emit_static_array_of_static_array@pre-mem2reg@llvm14.snap @@ -0,0 +1,37 @@ +--- +source: hugr-llvm/src/extension/collections/static_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@sa.inner.6acc1b76.0 = constant { i64, [0 x i64] } zeroinitializer +@sa.inner.e637bb5.0 = constant { i64, [1 x i64] } { i64 1, [1 x i64] [i64 1] } +@sa.inner.2b6593f.0 = constant { i64, [2 x i64] } { i64 2, [2 x i64] [i64 2, i64 2] } +@sa.inner.1b9ad7c.0 = constant { i64, [3 x i64] } { i64 3, [3 x i64] [i64 3, i64 3, i64 3] } +@sa.inner.e67fbfa4.0 = constant { i64, [4 x i64] } { i64 4, [4 x i64] [i64 4, i64 4, i64 4, i64 4] } +@sa.inner.15dc27f6.0 = constant { i64, [5 x i64] } { i64 5, [5 x i64] [i64 5, i64 5, i64 5, i64 5, i64 5] } +@sa.inner.c43a2bb2.0 = constant { i64, [6 x i64] } { i64 6, [6 x i64] [i64 6, i64 6, i64 6, i64 6, i64 6, i64 6] } +@sa.inner.7f5d5e16.0 = constant { i64, [7 x i64] } { i64 7, [7 x i64] [i64 7, i64 7, i64 7, i64 7, i64 7, i64 7, i64 7] } +@sa.inner.a0bc9c53.0 = constant { i64, [8 x i64] } { i64 8, [8 x i64] [i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8] } +@sa.inner.1e8aada3.0 = constant { i64, [9 x i64] } { i64 9, [9 x i64] [i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9] } +@sa.outer.e55b610a.0 = constant { i64, [10 x { i64, [0 x i64] }*] } { i64 10, [10 x { i64, [0 x i64] }*] [{ i64, [0 x i64] }* @sa.inner.6acc1b76.0, { i64, [0 x i64] }* bitcast ({ i64, [1 x i64] }* @sa.inner.e637bb5.0 to { i64, [0 x i64] }*), { i64, [0 x i64] }* bitcast ({ i64, [2 x i64] }* @sa.inner.2b6593f.0 to { i64, [0 x i64] }*), { i64, [0 x i64] }* bitcast ({ i64, [3 x i64] }* @sa.inner.1b9ad7c.0 to { i64, [0 x i64] }*), { i64, [0 x i64] }* bitcast ({ i64, [4 x i64] }* @sa.inner.e67fbfa4.0 to { i64, [0 x i64] }*), { i64, [0 x i64] }* bitcast ({ i64, [5 x i64] }* @sa.inner.15dc27f6.0 to { i64, [0 x i64] }*), { i64, [0 x i64] }* bitcast ({ i64, [6 x i64] }* @sa.inner.c43a2bb2.0 to { i64, [0 x i64] }*), { i64, [0 x i64] }* bitcast ({ i64, [7 x i64] }* @sa.inner.7f5d5e16.0 to { i64, [0 x i64] }*), { i64, [0 x i64] }* bitcast ({ i64, [8 x i64] }* @sa.inner.a0bc9c53.0 to { i64, [0 x i64] }*), { i64, [0 x i64] }* bitcast ({ i64, [9 x i64] }* @sa.inner.1e8aada3.0 to { i64, [0 x i64] }*)] } + +define internal i64 @_hl.main.1() { +alloca_block: + %"0" = alloca i64, align 8 + %"5_0" = alloca { i64, [0 x { i64, [0 x i64] }*] }*, align 8 + %"6_0" = alloca i64, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store { i64, [0 x { i64, [0 x i64] }*] }* bitcast ({ i64, [10 x { i64, [0 x i64] }*] }* @sa.outer.e55b610a.0 to { i64, [0 x { i64, [0 x i64] }*] }*), { i64, [0 x { i64, [0 x i64] }*] }** %"5_0", align 8 + %"5_01" = load { i64, [0 x { i64, [0 x i64] }*] }*, { i64, [0 x { i64, [0 x i64] }*] }** %"5_0", align 8 + %0 = getelementptr inbounds { i64, [0 x { i64, [0 x i64] }*] }, { i64, [0 x { i64, [0 x i64] }*] }* %"5_01", i32 0, i32 0 + %1 = load i64, i64* %0, align 4 + store i64 %1, i64* %"6_0", align 4 + %"6_02" = load i64, i64* %"6_0", align 4 + store i64 %"6_02", i64* %"0", align 4 + %"03" = load i64, i64* %"0", align 4 + ret i64 %"03" +} diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__emit_static_array_of_static_array@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__emit_static_array_of_static_array@pre-mem2reg@llvm21.snap index 8a418f3bd..65ffc76d0 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__emit_static_array_of_static_array@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__emit_static_array_of_static_array@pre-mem2reg@llvm21.snap @@ -17,7 +17,7 @@ source_filename = "test_context" @sa.inner.1e8aada3.0 = constant { i64, [9 x i64] } { i64 9, [9 x i64] [i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9, i64 9] } @sa.outer.e55b610a.0 = constant { i64, [10 x ptr] } { i64 10, [10 x ptr] [ptr @sa.inner.6acc1b76.0, ptr @sa.inner.e637bb5.0, ptr @sa.inner.2b6593f.0, ptr @sa.inner.1b9ad7c.0, ptr @sa.inner.e67fbfa4.0, ptr @sa.inner.15dc27f6.0, ptr @sa.inner.c43a2bb2.0, ptr @sa.inner.7f5d5e16.0, ptr @sa.inner.a0bc9c53.0, ptr @sa.inner.1e8aada3.0] } -define private i64 @_hl.main.1() { +define internal i64 @_hl.main.1() { alloca_block: %"0" = alloca i64, align 8 %"5_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_0.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_0.snap index 572d690db..59bbf8007 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_0.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_0.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @sa.a.97cb22bf.0 = constant { i64, [10 x i64] } { i64 10, [10 x i64] [i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, i64 8, i64 9] } -define private ptr @_hl.main.1() { +define internal ptr @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_1.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_1.snap index ab74d9eab..34fd7985d 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_1.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_1.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @sa.b.150c532c.0 = constant { i64, [10 x double] } { i64 10, [10 x double] [double 0.000000e+00, double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, double 4.000000e+00, double 5.000000e+00, double 6.000000e+00, double 7.000000e+00, double 8.000000e+00, double 9.000000e+00] } -define private ptr @_hl.main.1() { +define internal ptr @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_2.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_2.snap index b6763d12a..0401cf0b5 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_2.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_2.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @sa.c.d2dddd66.0 = constant { i64, [10 x i1] } { i64 10, [10 x i1] [i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false] } -define private ptr @_hl.main.1() { +define internal ptr @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_3.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_3.snap index c377cb42a..e682c3b6c 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_3.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@llvm21_3.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @sa.d.eee08a59.0 = constant { i64, [10 x { i1, i64 }] } { i64 10, [10 x { i1, i64 }] [{ i1, i64 } { i1 true, i64 0 }, { i1, i64 } { i1 true, i64 1 }, { i1, i64 } { i1 true, i64 2 }, { i1, i64 } { i1 true, i64 3 }, { i1, i64 } { i1 true, i64 4 }, { i1, i64 } { i1 true, i64 5 }, { i1, i64 } { i1 true, i64 6 }, { i1, i64 } { i1 true, i64 7 }, { i1, i64 } { i1 true, i64 8 }, { i1, i64 } { i1 true, i64 9 }] } -define private ptr @_hl.main.1() { +define internal ptr @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm14_0.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm14_0.snap new file mode 100644 index 000000000..480fd4e9c --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm14_0.snap @@ -0,0 +1,22 @@ +--- +source: hugr-llvm/src/extension/collections/static_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@sa.a.97cb22bf.0 = constant { i64, [10 x i64] } { i64 10, [10 x i64] [i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, i64 8, i64 9] } + +define internal { i64, [0 x i64] }* @_hl.main.1() { +alloca_block: + %"0" = alloca { i64, [0 x i64] }*, align 8 + %"5_0" = alloca { i64, [0 x i64] }*, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store { i64, [0 x i64] }* bitcast ({ i64, [10 x i64] }* @sa.a.97cb22bf.0 to { i64, [0 x i64] }*), { i64, [0 x i64] }** %"5_0", align 8 + %"5_01" = load { i64, [0 x i64] }*, { i64, [0 x i64] }** %"5_0", align 8 + store { i64, [0 x i64] }* %"5_01", { i64, [0 x i64] }** %"0", align 8 + %"02" = load { i64, [0 x i64] }*, { i64, [0 x i64] }** %"0", align 8 + ret { i64, [0 x i64] }* %"02" +} diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm14_1.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm14_1.snap new file mode 100644 index 000000000..16128fb14 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm14_1.snap @@ -0,0 +1,22 @@ +--- +source: hugr-llvm/src/extension/collections/static_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@sa.b.150c532c.0 = constant { i64, [10 x double] } { i64 10, [10 x double] [double 0.000000e+00, double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, double 4.000000e+00, double 5.000000e+00, double 6.000000e+00, double 7.000000e+00, double 8.000000e+00, double 9.000000e+00] } + +define internal { i64, [0 x double] }* @_hl.main.1() { +alloca_block: + %"0" = alloca { i64, [0 x double] }*, align 8 + %"5_0" = alloca { i64, [0 x double] }*, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store { i64, [0 x double] }* bitcast ({ i64, [10 x double] }* @sa.b.150c532c.0 to { i64, [0 x double] }*), { i64, [0 x double] }** %"5_0", align 8 + %"5_01" = load { i64, [0 x double] }*, { i64, [0 x double] }** %"5_0", align 8 + store { i64, [0 x double] }* %"5_01", { i64, [0 x double] }** %"0", align 8 + %"02" = load { i64, [0 x double] }*, { i64, [0 x double] }** %"0", align 8 + ret { i64, [0 x double] }* %"02" +} diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm14_2.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm14_2.snap new file mode 100644 index 000000000..8f5dd5efb --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm14_2.snap @@ -0,0 +1,22 @@ +--- +source: hugr-llvm/src/extension/collections/static_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@sa.c.d2dddd66.0 = constant { i64, [10 x i1] } { i64 10, [10 x i1] [i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false] } + +define internal { i64, [0 x i1] }* @_hl.main.1() { +alloca_block: + %"0" = alloca { i64, [0 x i1] }*, align 8 + %"5_0" = alloca { i64, [0 x i1] }*, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store { i64, [0 x i1] }* bitcast ({ i64, [10 x i1] }* @sa.c.d2dddd66.0 to { i64, [0 x i1] }*), { i64, [0 x i1] }** %"5_0", align 8 + %"5_01" = load { i64, [0 x i1] }*, { i64, [0 x i1] }** %"5_0", align 8 + store { i64, [0 x i1] }* %"5_01", { i64, [0 x i1] }** %"0", align 8 + %"02" = load { i64, [0 x i1] }*, { i64, [0 x i1] }** %"0", align 8 + ret { i64, [0 x i1] }* %"02" +} diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_0.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_0.snap index ab9d34413..6f341ffa4 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_0.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_0.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @sa.a.97cb22bf.0 = constant { i64, [10 x i64] } { i64 10, [10 x i64] [i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, i64 8, i64 9] } -define private ptr @_hl.main.1() { +define internal ptr @_hl.main.1() { alloca_block: %"0" = alloca ptr, align 8 %"5_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_1.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_1.snap index eb0e7c74a..e89900d47 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_1.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_1.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @sa.b.150c532c.0 = constant { i64, [10 x double] } { i64 10, [10 x double] [double 0.000000e+00, double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, double 4.000000e+00, double 5.000000e+00, double 6.000000e+00, double 7.000000e+00, double 8.000000e+00, double 9.000000e+00] } -define private ptr @_hl.main.1() { +define internal ptr @_hl.main.1() { alloca_block: %"0" = alloca ptr, align 8 %"5_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_2.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_2.snap index 957faaaae..3fb020a53 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_2.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_2.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @sa.c.d2dddd66.0 = constant { i64, [10 x i1] } { i64 10, [10 x i1] [i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false] } -define private ptr @_hl.main.1() { +define internal ptr @_hl.main.1() { alloca_block: %"0" = alloca ptr, align 8 %"5_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_3.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_3.snap index 371120081..869b5a847 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_3.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_const_codegen@pre-mem2reg@llvm21_3.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @sa.d.eee08a59.0 = constant { i64, [10 x { i1, i64 }] } { i64 10, [10 x { i1, i64 }] [{ i1, i64 } { i1 true, i64 0 }, { i1, i64 } { i1 true, i64 1 }, { i1, i64 } { i1 true, i64 2 }, { i1, i64 } { i1 true, i64 3 }, { i1, i64 } { i1 true, i64 4 }, { i1, i64 } { i1 true, i64 5 }, { i1, i64 } { i1 true, i64 6 }, { i1, i64 } { i1 true, i64 7 }, { i1, i64 } { i1 true, i64 8 }, { i1, i64 } { i1 true, i64 9 }] } -define private ptr @_hl.main.1() { +define internal ptr @_hl.main.1() { alloca_block: %"0" = alloca ptr, align 8 %"5_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_0.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_0.snap index 5d72549ca..14951b66a 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_0.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_0.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i1, i64 } @_hl.main.1(ptr %0, i64 %1) { +define internal { i1, i64 } @_hl.main.1(ptr %0, i64 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_1.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_1.snap index d16081b41..937b9e9cd 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_1.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_1.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i1, i1 } @_hl.main.1(ptr %0, i64 %1) { +define internal { i1, i1 } @_hl.main.1(ptr %0, i64 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_2.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_2.snap index 351ffb4ee..b496a2977 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_2.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_2.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(ptr %0) { +define internal i64 @_hl.main.1(ptr %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_3.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_3.snap index 2c6ce24da..ae0c364c3 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_3.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@llvm21_3.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(ptr %0) { +define internal i64 @_hl.main.1(ptr %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_0.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_0.snap new file mode 100644 index 000000000..779caf000 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_0.snap @@ -0,0 +1,45 @@ +--- +source: hugr-llvm/src/extension/collections/static_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i1, i64 } @_hl.main.1({ i64, [0 x i64] }* %0, i64 %1) { +alloca_block: + %"0" = alloca { i1, i64 }, align 8 + %"2_0" = alloca { i64, [0 x i64] }*, align 8 + %"2_1" = alloca i64, align 8 + %"4_0" = alloca { i1, i64 }, align 8 + %"03" = alloca { i1, i64 }, align 8 + br label %entry_block + +static_array_get_out_of_bounds: ; preds = %entry_block + store { i1, i64 } { i1 false, i64 poison }, { i1, i64 }* %"03", align 4 + br label %static_array_get_exit + +static_array_get_in_bounds: ; preds = %entry_block + %2 = getelementptr inbounds { i64, [0 x i64] }, { i64, [0 x i64] }* %"2_01", i32 0, i32 1, i64 %"2_12" + %3 = load i64, i64* %2, align 4 + %4 = insertvalue { i1, i64 } { i1 true, i64 poison }, i64 %3, 1 + store { i1, i64 } %4, { i1, i64 }* %"03", align 4 + br label %static_array_get_exit + +static_array_get_exit: ; preds = %static_array_get_in_bounds, %static_array_get_out_of_bounds + %"04" = load { i1, i64 }, { i1, i64 }* %"03", align 4 + store { i1, i64 } %"04", { i1, i64 }* %"4_0", align 4 + %"4_05" = load { i1, i64 }, { i1, i64 }* %"4_0", align 4 + store { i1, i64 } %"4_05", { i1, i64 }* %"0", align 4 + %"06" = load { i1, i64 }, { i1, i64 }* %"0", align 4 + ret { i1, i64 } %"06" + +entry_block: ; preds = %alloca_block + store { i64, [0 x i64] }* %0, { i64, [0 x i64] }** %"2_0", align 8 + store i64 %1, i64* %"2_1", align 4 + %"2_01" = load { i64, [0 x i64] }*, { i64, [0 x i64] }** %"2_0", align 8 + %"2_12" = load i64, i64* %"2_1", align 4 + %5 = getelementptr inbounds { i64, [0 x i64] }, { i64, [0 x i64] }* %"2_01", i32 0, i32 0 + %6 = load i64, i64* %5, align 4 + %7 = icmp ult i64 %"2_12", %6 + br i1 %7, label %static_array_get_in_bounds, label %static_array_get_out_of_bounds +} diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_1.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_1.snap new file mode 100644 index 000000000..9bd0bc272 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_1.snap @@ -0,0 +1,45 @@ +--- +source: hugr-llvm/src/extension/collections/static_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal { i1, i1 } @_hl.main.1({ i64, [0 x i1] }* %0, i64 %1) { +alloca_block: + %"0" = alloca { i1, i1 }, align 8 + %"2_0" = alloca { i64, [0 x i1] }*, align 8 + %"2_1" = alloca i64, align 8 + %"4_0" = alloca { i1, i1 }, align 8 + %"03" = alloca { i1, i1 }, align 8 + br label %entry_block + +static_array_get_out_of_bounds: ; preds = %entry_block + store { i1, i1 } { i1 false, i1 poison }, { i1, i1 }* %"03", align 1 + br label %static_array_get_exit + +static_array_get_in_bounds: ; preds = %entry_block + %2 = getelementptr inbounds { i64, [0 x i1] }, { i64, [0 x i1] }* %"2_01", i32 0, i32 1, i64 %"2_12" + %3 = load i1, i1* %2, align 1 + %4 = insertvalue { i1, i1 } { i1 true, i1 poison }, i1 %3, 1 + store { i1, i1 } %4, { i1, i1 }* %"03", align 1 + br label %static_array_get_exit + +static_array_get_exit: ; preds = %static_array_get_in_bounds, %static_array_get_out_of_bounds + %"04" = load { i1, i1 }, { i1, i1 }* %"03", align 1 + store { i1, i1 } %"04", { i1, i1 }* %"4_0", align 1 + %"4_05" = load { i1, i1 }, { i1, i1 }* %"4_0", align 1 + store { i1, i1 } %"4_05", { i1, i1 }* %"0", align 1 + %"06" = load { i1, i1 }, { i1, i1 }* %"0", align 1 + ret { i1, i1 } %"06" + +entry_block: ; preds = %alloca_block + store { i64, [0 x i1] }* %0, { i64, [0 x i1] }** %"2_0", align 8 + store i64 %1, i64* %"2_1", align 4 + %"2_01" = load { i64, [0 x i1] }*, { i64, [0 x i1] }** %"2_0", align 8 + %"2_12" = load i64, i64* %"2_1", align 4 + %5 = getelementptr inbounds { i64, [0 x i1] }, { i64, [0 x i1] }* %"2_01", i32 0, i32 0 + %6 = load i64, i64* %5, align 4 + %7 = icmp ult i64 %"2_12", %6 + br i1 %7, label %static_array_get_in_bounds, label %static_array_get_out_of_bounds +} diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_2.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_2.snap new file mode 100644 index 000000000..347ecb708 --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_2.snap @@ -0,0 +1,25 @@ +--- +source: hugr-llvm/src/extension/collections/static_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal i64 @_hl.main.1({ i64, [0 x i64] }* %0) { +alloca_block: + %"0" = alloca i64, align 8 + %"2_0" = alloca { i64, [0 x i64] }*, align 8 + %"4_0" = alloca i64, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store { i64, [0 x i64] }* %0, { i64, [0 x i64] }** %"2_0", align 8 + %"2_01" = load { i64, [0 x i64] }*, { i64, [0 x i64] }** %"2_0", align 8 + %1 = getelementptr inbounds { i64, [0 x i64] }, { i64, [0 x i64] }* %"2_01", i32 0, i32 0 + %2 = load i64, i64* %1, align 4 + store i64 %2, i64* %"4_0", align 4 + %"4_02" = load i64, i64* %"4_0", align 4 + store i64 %"4_02", i64* %"0", align 4 + %"03" = load i64, i64* %"0", align 4 + ret i64 %"03" +} diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_3.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_3.snap new file mode 100644 index 000000000..0046dbdaf --- /dev/null +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm14_3.snap @@ -0,0 +1,25 @@ +--- +source: hugr-llvm/src/extension/collections/static_array.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +define internal i64 @_hl.main.1({ i64, [0 x i1] }* %0) { +alloca_block: + %"0" = alloca i64, align 8 + %"2_0" = alloca { i64, [0 x i1] }*, align 8 + %"4_0" = alloca i64, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store { i64, [0 x i1] }* %0, { i64, [0 x i1] }** %"2_0", align 8 + %"2_01" = load { i64, [0 x i1] }*, { i64, [0 x i1] }** %"2_0", align 8 + %1 = getelementptr inbounds { i64, [0 x i1] }, { i64, [0 x i1] }* %"2_01", i32 0, i32 0 + %2 = load i64, i64* %1, align 4 + store i64 %2, i64* %"4_0", align 4 + %"4_02" = load i64, i64* %"4_0", align 4 + store i64 %"4_02", i64* %"0", align 4 + %"03" = load i64, i64* %"0", align 4 + ret i64 %"03" +} diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_0.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_0.snap index 604ad8396..d9ad5f6a2 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_0.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_0.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i1, i64 } @_hl.main.1(ptr %0, i64 %1) { +define internal { i1, i64 } @_hl.main.1(ptr %0, i64 %1) { alloca_block: %"0" = alloca { i1, i64 }, align 8 %"2_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_1.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_1.snap index 1ae60f801..f2cc9f535 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_1.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_1.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i1, i1 } @_hl.main.1(ptr %0, i64 %1) { +define internal { i1, i1 } @_hl.main.1(ptr %0, i64 %1) { alloca_block: %"0" = alloca { i1, i1 }, align 8 %"2_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_2.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_2.snap index d0ed3d8a9..48d4c6da8 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_2.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_2.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(ptr %0) { +define internal i64 @_hl.main.1(ptr %0) { alloca_block: %"0" = alloca i64, align 8 %"2_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_3.snap b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_3.snap index 7f8b204eb..12ee0f386 100644 --- a/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_3.snap +++ b/hugr-llvm/src/extension/collections/snapshots/hugr_llvm__extension__collections__static_array__test__static_array_op_codegen@pre-mem2reg@llvm21_3.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(ptr %0) { +define internal i64 @_hl.main.1(ptr %0) { alloca_block: %"0" = alloca i64, align 8 %"2_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_s@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_s@llvm21.snap index add68a158..7cd2a5a3d 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_s@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_s@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(i32 %0) { +define internal double @_hl.main.1(i32 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_s@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_s@pre-mem2reg@llvm21.snap index 785f2032f..64267802e 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_s@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_s@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(i32 %0) { +define internal double @_hl.main.1(i32 %0) { alloca_block: %"0" = alloca double, align 8 %"2_0" = alloca i32, align 4 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_u@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_u@llvm21.snap index a204fc4c2..563e00b3d 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_u@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_u@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(i16 %0) { +define internal double @_hl.main.1(i16 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_u@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_u@pre-mem2reg@llvm21.snap index 6bfb6b4b5..e11674cc7 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_u@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__convert_u@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(i16 %0) { +define internal double @_hl.main.1(i16 %0) { alloca_block: %"0" = alloca double, align 8 %"2_0" = alloca i16, align 2 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__ifrombool@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__ifrombool@llvm21.snap index 14012bef8..de4fe3609 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__ifrombool@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__ifrombool@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i1 %0) { +define internal i8 @_hl.main.1(i1 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__ifrombool@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__ifrombool@pre-mem2reg@llvm21.snap index ab27846d3..bb6586309 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__ifrombool@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__ifrombool@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i1 %0) { +define internal i8 @_hl.main.1(i1 %0) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i1, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__itobool@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__itobool@llvm21.snap index 1812f56fa..d80650327 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__itobool@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__itobool@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i8 %0) { +define internal i1 @_hl.main.1(i8 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__itobool@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__itobool@pre-mem2reg@llvm21.snap index 44c51c317..9354bfecc 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__itobool@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__itobool@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i8 %0) { +define internal i1 @_hl.main.1(i8 %0) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_s@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_s@llvm21.snap index 010251afd..55ef5fa2c 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_s@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_s@llvm21.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [58 x i8] c"Float value too big to convert to int of given width (32)\00", align 1 -define private { i1, { i32, ptr }, i32 } @_hl.main.1(double %0) { +define internal { i1, { i32, ptr }, i32 } @_hl.main.1(double %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_s@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_s@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..aeeb771ef --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_s@pre-mem2reg@llvm14.snap @@ -0,0 +1,31 @@ +--- +source: hugr-llvm/src/extension/conversions.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [58 x i8] c"Float value too big to convert to int of given width (32)\00", align 1 + +define internal { i1, { i32, i8* }, i32 } @_hl.main.1(double %0) { +alloca_block: + %"0" = alloca { i1, { i32, i8* }, i32 }, align 8 + %"2_0" = alloca double, align 8 + %"4_0" = alloca { i1, { i32, i8* }, i32 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store double %0, double* %"2_0", align 8 + %"2_01" = load double, double* %"2_0", align 8 + %within_upper_bound = fcmp olt double %"2_01", 0x41DFFFFFFFC00000 + %within_lower_bound = fcmp ole double 0xC1E0000000000000, %"2_01" + %success = and i1 %within_upper_bound, %within_lower_bound + %trunc_result = fptosi double %"2_01" to i32 + %1 = insertvalue { i1, { i32, i8* }, i32 } { i1 true, { i32, i8* } poison, i32 poison }, i32 %trunc_result, 2 + %2 = select i1 %success, { i1, { i32, i8* }, i32 } %1, { i1, { i32, i8* }, i32 } { i1 false, { i32, i8* } { i32 2, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @0, i32 0, i32 0) }, i32 poison } + store { i1, { i32, i8* }, i32 } %2, { i1, { i32, i8* }, i32 }* %"4_0", align 8 + %"4_02" = load { i1, { i32, i8* }, i32 }, { i1, { i32, i8* }, i32 }* %"4_0", align 8 + store { i1, { i32, i8* }, i32 } %"4_02", { i1, { i32, i8* }, i32 }* %"0", align 8 + %"03" = load { i1, { i32, i8* }, i32 }, { i1, { i32, i8* }, i32 }* %"0", align 8 + ret { i1, { i32, i8* }, i32 } %"03" +} diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_s@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_s@pre-mem2reg@llvm21.snap index b0de3506f..37e28abb2 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_s@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_s@pre-mem2reg@llvm21.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [58 x i8] c"Float value too big to convert to int of given width (32)\00", align 1 -define private { i1, { i32, ptr }, i32 } @_hl.main.1(double %0) { +define internal { i1, { i32, ptr }, i32 } @_hl.main.1(double %0) { alloca_block: %"0" = alloca { i1, { i32, ptr }, i32 }, align 8 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_u@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_u@llvm21.snap index 46eb48b9d..98e22e7ba 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_u@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_u@llvm21.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [58 x i8] c"Float value too big to convert to int of given width (64)\00", align 1 -define private { i1, { i32, ptr }, i64 } @_hl.main.1(double %0) { +define internal { i1, { i32, ptr }, i64 } @_hl.main.1(double %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_u@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_u@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..df2a68ac4 --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_u@pre-mem2reg@llvm14.snap @@ -0,0 +1,31 @@ +--- +source: hugr-llvm/src/extension/conversions.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [58 x i8] c"Float value too big to convert to int of given width (64)\00", align 1 + +define internal { i1, { i32, i8* }, i64 } @_hl.main.1(double %0) { +alloca_block: + %"0" = alloca { i1, { i32, i8* }, i64 }, align 8 + %"2_0" = alloca double, align 8 + %"4_0" = alloca { i1, { i32, i8* }, i64 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store double %0, double* %"2_0", align 8 + %"2_01" = load double, double* %"2_0", align 8 + %within_upper_bound = fcmp olt double %"2_01", 0x43F0000000000000 + %within_lower_bound = fcmp ole double 0.000000e+00, %"2_01" + %success = and i1 %within_upper_bound, %within_lower_bound + %trunc_result = fptoui double %"2_01" to i64 + %1 = insertvalue { i1, { i32, i8* }, i64 } { i1 true, { i32, i8* } poison, i64 poison }, i64 %trunc_result, 2 + %2 = select i1 %success, { i1, { i32, i8* }, i64 } %1, { i1, { i32, i8* }, i64 } { i1 false, { i32, i8* } { i32 2, i8* getelementptr inbounds ([58 x i8], [58 x i8]* @0, i32 0, i32 0) }, i64 poison } + store { i1, { i32, i8* }, i64 } %2, { i1, { i32, i8* }, i64 }* %"4_0", align 8 + %"4_02" = load { i1, { i32, i8* }, i64 }, { i1, { i32, i8* }, i64 }* %"4_0", align 8 + store { i1, { i32, i8* }, i64 } %"4_02", { i1, { i32, i8* }, i64 }* %"0", align 8 + %"03" = load { i1, { i32, i8* }, i64 }, { i1, { i32, i8* }, i64 }* %"0", align 8 + ret { i1, { i32, i8* }, i64 } %"03" +} diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_u@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_u@pre-mem2reg@llvm21.snap index 469589253..81de12bd3 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_u@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__conversions__test__trunc_u@pre-mem2reg@llvm21.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [58 x i8] c"Float value too big to convert to int of given width (64)\00", align 1 -define private { i1, { i32, ptr }, i64 } @_hl.main.1(double %0) { +define internal { i1, { i32, ptr }, i64 } @_hl.main.1(double %0) { alloca_block: %"0" = alloca { i1, { i32, ptr }, i64 }, align 8 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__const_float@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__const_float@llvm21.snap index 84b946b14..fb45bfc0c 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__const_float@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__const_float@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1() { +define internal double @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__const_float@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__const_float@pre-mem2reg@llvm21.snap index 23e97cead..6517e3095 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__const_float@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__const_float@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1() { +define internal double @_hl.main.1() { alloca_block: %"0" = alloca double, align 8 %"5_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fadd@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fadd@llvm21.snap index 3201cd4ad..2d1187b05 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fadd@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fadd@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0, double %1) { +define internal double @_hl.main.1(double %0, double %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fadd@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fadd@pre-mem2reg@llvm21.snap index ac1da95fb..eb9da8a49 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fadd@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fadd@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0, double %1) { +define internal double @_hl.main.1(double %0, double %1) { alloca_block: %"0" = alloca double, align 8 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fdiv@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fdiv@llvm21.snap index 399dc6541..f7437e95a 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fdiv@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fdiv@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0, double %1) { +define internal double @_hl.main.1(double %0, double %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fdiv@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fdiv@pre-mem2reg@llvm21.snap index abf6544ce..91013e501 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fdiv@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fdiv@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0, double %1) { +define internal double @_hl.main.1(double %0, double %1) { alloca_block: %"0" = alloca double, align 8 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__feq@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__feq@llvm21.snap index cd28b596e..57a372448 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__feq@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__feq@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__feq@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__feq@pre-mem2reg@llvm21.snap index 8ff76a0af..fd3237d21 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__feq@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__feq@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fge@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fge@llvm21.snap index 333921ca1..33a007d17 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fge@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fge@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fge@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fge@pre-mem2reg@llvm21.snap index 2ec6c7303..88b1f03b2 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fge@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fge@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fgt@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fgt@llvm21.snap index 1067c34a3..bec01fa3f 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fgt@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fgt@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fgt@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fgt@pre-mem2reg@llvm21.snap index 122ef1148..ce004c02d 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fgt@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fgt@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fle@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fle@llvm21.snap index cfbacb301..eb7f7e01a 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fle@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fle@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fle@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fle@pre-mem2reg@llvm21.snap index 88a1cce51..4129553a2 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fle@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fle@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__flt@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__flt@llvm21.snap index cf2c660a9..de64e817e 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__flt@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__flt@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__flt@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__flt@pre-mem2reg@llvm21.snap index 048c9f974..7112db0e4 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__flt@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__flt@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fmul@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fmul@llvm21.snap index 73ee9e3bf..1937d1c54 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fmul@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fmul@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0, double %1) { +define internal double @_hl.main.1(double %0, double %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fmul@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fmul@pre-mem2reg@llvm21.snap index 1615ddd49..8fb5ceaf4 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fmul@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fmul@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0, double %1) { +define internal double @_hl.main.1(double %0, double %1) { alloca_block: %"0" = alloca double, align 8 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fne@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fne@llvm21.snap index 14944ecc6..9f330df31 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fne@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fne@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fne@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fne@pre-mem2reg@llvm21.snap index eae67bf16..0e134fae6 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fne@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fne@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(double %0, double %1) { +define internal i1 @_hl.main.1(double %0, double %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fneg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fneg@llvm21.snap index c12fde721..3ceb777b3 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fneg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fneg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0) { +define internal double @_hl.main.1(double %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fneg@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fneg@pre-mem2reg@llvm21.snap index c41609538..48606d13d 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fneg@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fneg@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0) { +define internal double @_hl.main.1(double %0) { alloca_block: %"0" = alloca double, align 8 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fpow@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fpow@llvm21.snap index a56228f8b..c31472abb 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fpow@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fpow@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0, double %1) { +define internal double @_hl.main.1(double %0, double %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fpow@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fpow@pre-mem2reg@llvm21.snap index 6d39d0ac5..b1313cbca 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fpow@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fpow@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0, double %1) { +define internal double @_hl.main.1(double %0, double %1) { alloca_block: %"0" = alloca double, align 8 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fsub@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fsub@llvm21.snap index c0eb470ae..eca14fb7d 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fsub@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fsub@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0, double %1) { +define internal double @_hl.main.1(double %0, double %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fsub@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fsub@pre-mem2reg@llvm21.snap index 3b32e4463..67aa8f380 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fsub@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__float__test__fsub@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private double @_hl.main.1(double %0, double %1) { +define internal double @_hl.main.1(double %0, double %1) { alloca_block: %"0" = alloca double, align 8 %"2_0" = alloca double, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm14_idiv_checked_u_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm14_idiv_checked_u_[3].snap new file mode 100644 index 000000000..3682a7a3f --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm14_idiv_checked_u_[3].snap @@ -0,0 +1,31 @@ +--- +source: hugr-llvm/src/extension/int.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 + +define internal { i1, { i32, i8* }, i8 } @_hl.main.1(i8 %0, i8 %1) { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %valid_div = icmp ne i8 %1, 0 + %quotient = udiv i8 %0, %1 + %remainder = urem i8 %0, %1 + %2 = insertvalue { i8, i8 } poison, i8 %quotient, 0 + %3 = insertvalue { i8, i8 } %2, i8 %remainder, 1 + %4 = insertvalue { i1, { i8, i8 }, { i32, i8* } } { i1 true, { i8, i8 } poison, { i32, i8* } poison }, { i8, i8 } %3, 1 + %5 = select i1 %valid_div, { i1, { i8, i8 }, { i32, i8* } } %4, { i1, { i8, i8 }, { i32, i8* } } { i1 false, { i8, i8 } poison, { i32, i8* } { i32 2, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @0, i32 0, i32 0) } } + %6 = extractvalue { i1, { i8, i8 }, { i32, i8* } } %5, 1 + %7 = extractvalue { i8, i8 } %6, 0 + %8 = extractvalue { i8, i8 } %6, 1 + %9 = extractvalue { i1, { i8, i8 }, { i32, i8* } } %5, 2 + %tag = extractvalue { i1, { i8, i8 }, { i32, i8* } } %5, 0 + %data_variant = insertvalue { i1, { i32, i8* }, i8 } { i1 true, { i32, i8* } poison, i8 poison }, i8 %7, 2 + %err_variant = insertvalue { i1, { i32, i8* }, i8 } { i1 false, { i32, i8* } poison, i8 poison }, { i32, i8* } %9, 1 + %10 = select i1 %tag, { i1, { i32, i8* }, i8 } %data_variant, { i1, { i32, i8* }, i8 } %err_variant + ret { i1, { i32, i8* }, i8 } %10 +} diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm14_imod_checked_u_[6].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm14_imod_checked_u_[6].snap new file mode 100644 index 000000000..cab940e82 --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm14_imod_checked_u_[6].snap @@ -0,0 +1,31 @@ +--- +source: hugr-llvm/src/extension/int.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 + +define internal { i1, { i32, i8* }, i64 } @_hl.main.1(i64 %0, i64 %1) { +alloca_block: + br label %entry_block + +entry_block: ; preds = %alloca_block + %valid_div = icmp ne i64 %1, 0 + %quotient = udiv i64 %0, %1 + %remainder = urem i64 %0, %1 + %2 = insertvalue { i64, i64 } poison, i64 %quotient, 0 + %3 = insertvalue { i64, i64 } %2, i64 %remainder, 1 + %4 = insertvalue { i1, { i64, i64 }, { i32, i8* } } { i1 true, { i64, i64 } poison, { i32, i8* } poison }, { i64, i64 } %3, 1 + %5 = select i1 %valid_div, { i1, { i64, i64 }, { i32, i8* } } %4, { i1, { i64, i64 }, { i32, i8* } } { i1 false, { i64, i64 } poison, { i32, i8* } { i32 2, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @0, i32 0, i32 0) } } + %6 = extractvalue { i1, { i64, i64 }, { i32, i8* } } %5, 1 + %7 = extractvalue { i64, i64 } %6, 0 + %8 = extractvalue { i64, i64 } %6, 1 + %9 = extractvalue { i1, { i64, i64 }, { i32, i8* } } %5, 2 + %tag = extractvalue { i1, { i64, i64 }, { i32, i8* } } %5, 0 + %data_variant = insertvalue { i1, { i32, i8* }, i64 } { i1 true, { i32, i8* } poison, i64 poison }, i64 %8, 2 + %err_variant = insertvalue { i1, { i32, i8* }, i64 } { i1 false, { i32, i8* } poison, i64 poison }, { i32, i8* } %9, 1 + %10 = select i1 %tag, { i1, { i32, i8* }, i64 } %data_variant, { i1, { i32, i8* }, i64 } %err_variant + ret { i1, { i32, i8* }, i64 } %10 +} diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idiv_checked_s_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idiv_checked_s_[3].snap index a63fa06d9..c47d001e5 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idiv_checked_s_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idiv_checked_s_[3].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0, i8 %1) { +define internal { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idiv_checked_u_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idiv_checked_u_[3].snap index c131c0f3e..9e82e6355 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idiv_checked_u_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idiv_checked_u_[3].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0, i8 %1) { +define internal { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_checked_s_[6].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_checked_s_[6].snap index 4ca0b3e61..81eaf69e9 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_checked_s_[6].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_checked_s_[6].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i64, i64 }, { i32, ptr } } @_hl.main.1(i64 %0, i64 %1) { +define internal { i1, { i64, i64 }, { i32, ptr } } @_hl.main.1(i64 %0, i64 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_checked_u_[6].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_checked_u_[6].snap index 31a03da43..dcc9a1907 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_checked_u_[6].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_checked_u_[6].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i64, i64 }, { i32, ptr } } @_hl.main.1(i64 %0, i64 %1) { +define internal { i1, { i64, i64 }, { i32, ptr } } @_hl.main.1(i64 %0, i64 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_s_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_s_[3].snap index 5e7c4d457..d63511b4d 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_s_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_s_[3].snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private { i8, i8 } @_hl.main.1(i8 %0, i8 %1) { +define internal { i8, i8 } @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_u_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_u_[3].snap index e75dafb4e..9e80e8273 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_u_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_idivmod_u_[3].snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private { i8, i8 } @_hl.main.1(i8 %0, i8 %1) { +define internal { i8, i8 } @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_imod_checked_s_[6].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_imod_checked_s_[6].snap index 450506843..54bb09aae 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_imod_checked_s_[6].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_imod_checked_s_[6].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i32, ptr }, i64 } @_hl.main.1(i64 %0, i64 %1) { +define internal { i1, { i32, ptr }, i64 } @_hl.main.1(i64 %0, i64 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_imod_checked_u_[6].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_imod_checked_u_[6].snap index bd8f3ce6c..9a5dad9b6 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_imod_checked_u_[6].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_imod_checked_u_[6].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i32, ptr }, i64 } @_hl.main.1(i64 %0, i64 %1) { +define internal { i1, { i32, ptr }, i64 } @_hl.main.1(i64 %0, i64 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_ineg_[2].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_ineg_[2].snap index 96be1e7e0..9508fbe7b 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_ineg_[2].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_ineg_[2].snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0) { +define internal i8 @_hl.main.1(i8 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_is_to_u_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_is_to_u_[3].snap index dec88d5a0..84eb41780 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_is_to_u_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_is_to_u_[3].snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [33 x i8] c"is_to_u called on negative value\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0) { +define internal i8 @_hl.main.1(i8 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_iu_to_s_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_iu_to_s_[3].snap index de3078f34..8ca96178e 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_iu_to_s_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@llvm21_iu_to_s_[3].snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [31 x i8] c"iu_to_s argument out of bounds\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0) { +define internal i8 @_hl.main.1(i8 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm14_idiv_checked_u_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm14_idiv_checked_u_[3].snap new file mode 100644 index 000000000..0dc687d6b --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm14_idiv_checked_u_[3].snap @@ -0,0 +1,43 @@ +--- +source: hugr-llvm/src/extension/int.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 + +define internal { i1, { i32, i8* }, i8 } @_hl.main.1(i8 %0, i8 %1) { +alloca_block: + %"0" = alloca { i1, { i32, i8* }, i8 }, align 8 + %"2_0" = alloca i8, align 1 + %"2_1" = alloca i8, align 1 + %"4_0" = alloca { i1, { i32, i8* }, i8 }, align 8 + 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 + %valid_div = icmp ne i8 %"2_12", 0 + %quotient = udiv i8 %"2_01", %"2_12" + %remainder = urem i8 %"2_01", %"2_12" + %2 = insertvalue { i8, i8 } poison, i8 %quotient, 0 + %3 = insertvalue { i8, i8 } %2, i8 %remainder, 1 + %4 = insertvalue { i1, { i8, i8 }, { i32, i8* } } { i1 true, { i8, i8 } poison, { i32, i8* } poison }, { i8, i8 } %3, 1 + %5 = select i1 %valid_div, { i1, { i8, i8 }, { i32, i8* } } %4, { i1, { i8, i8 }, { i32, i8* } } { i1 false, { i8, i8 } poison, { i32, i8* } { i32 2, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @0, i32 0, i32 0) } } + %6 = extractvalue { i1, { i8, i8 }, { i32, i8* } } %5, 1 + %7 = extractvalue { i8, i8 } %6, 0 + %8 = extractvalue { i8, i8 } %6, 1 + %9 = extractvalue { i1, { i8, i8 }, { i32, i8* } } %5, 2 + %tag = extractvalue { i1, { i8, i8 }, { i32, i8* } } %5, 0 + %data_variant = insertvalue { i1, { i32, i8* }, i8 } { i1 true, { i32, i8* } poison, i8 poison }, i8 %7, 2 + %err_variant = insertvalue { i1, { i32, i8* }, i8 } { i1 false, { i32, i8* } poison, i8 poison }, { i32, i8* } %9, 1 + %10 = select i1 %tag, { i1, { i32, i8* }, i8 } %data_variant, { i1, { i32, i8* }, i8 } %err_variant + store { i1, { i32, i8* }, i8 } %10, { i1, { i32, i8* }, i8 }* %"4_0", align 8 + %"4_03" = load { i1, { i32, i8* }, i8 }, { i1, { i32, i8* }, i8 }* %"4_0", align 8 + store { i1, { i32, i8* }, i8 } %"4_03", { i1, { i32, i8* }, i8 }* %"0", align 8 + %"04" = load { i1, { i32, i8* }, i8 }, { i1, { i32, i8* }, i8 }* %"0", align 8 + ret { i1, { i32, i8* }, i8 } %"04" +} diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm14_idivmod_checked_u_[6].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm14_idivmod_checked_u_[6].snap new file mode 100644 index 000000000..53060a3d8 --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm14_idivmod_checked_u_[6].snap @@ -0,0 +1,35 @@ +--- +source: hugr-llvm/src/extension/int.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 + +define internal { i1, { i64, i64 }, { i32, i8* } } @_hl.main.1(i64 %0, i64 %1) { +alloca_block: + %"0" = alloca { i1, { i64, i64 }, { i32, i8* } }, align 8 + %"2_0" = alloca i64, align 8 + %"2_1" = alloca i64, align 8 + %"4_0" = alloca { i1, { i64, i64 }, { i32, i8* } }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 %0, i64* %"2_0", align 4 + store i64 %1, i64* %"2_1", align 4 + %"2_01" = load i64, i64* %"2_0", align 4 + %"2_12" = load i64, i64* %"2_1", align 4 + %valid_div = icmp ne i64 %"2_12", 0 + %quotient = udiv i64 %"2_01", %"2_12" + %remainder = urem i64 %"2_01", %"2_12" + %2 = insertvalue { i64, i64 } poison, i64 %quotient, 0 + %3 = insertvalue { i64, i64 } %2, i64 %remainder, 1 + %4 = insertvalue { i1, { i64, i64 }, { i32, i8* } } { i1 true, { i64, i64 } poison, { i32, i8* } poison }, { i64, i64 } %3, 1 + %5 = select i1 %valid_div, { i1, { i64, i64 }, { i32, i8* } } %4, { i1, { i64, i64 }, { i32, i8* } } { i1 false, { i64, i64 } poison, { i32, i8* } { i32 2, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @0, i32 0, i32 0) } } + store { i1, { i64, i64 }, { i32, i8* } } %5, { i1, { i64, i64 }, { i32, i8* } }* %"4_0", align 8 + %"4_03" = load { i1, { i64, i64 }, { i32, i8* } }, { i1, { i64, i64 }, { i32, i8* } }* %"4_0", align 8 + store { i1, { i64, i64 }, { i32, i8* } } %"4_03", { i1, { i64, i64 }, { i32, i8* } }* %"0", align 8 + %"04" = load { i1, { i64, i64 }, { i32, i8* } }, { i1, { i64, i64 }, { i32, i8* } }* %"0", align 8 + ret { i1, { i64, i64 }, { i32, i8* } } %"04" +} diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm14_imod_checked_u_[6].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm14_imod_checked_u_[6].snap new file mode 100644 index 000000000..d29af21a4 --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm14_imod_checked_u_[6].snap @@ -0,0 +1,43 @@ +--- +source: hugr-llvm/src/extension/int.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 + +define internal { i1, { i32, i8* }, i64 } @_hl.main.1(i64 %0, i64 %1) { +alloca_block: + %"0" = alloca { i1, { i32, i8* }, i64 }, align 8 + %"2_0" = alloca i64, align 8 + %"2_1" = alloca i64, align 8 + %"4_0" = alloca { i1, { i32, i8* }, i64 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 %0, i64* %"2_0", align 4 + store i64 %1, i64* %"2_1", align 4 + %"2_01" = load i64, i64* %"2_0", align 4 + %"2_12" = load i64, i64* %"2_1", align 4 + %valid_div = icmp ne i64 %"2_12", 0 + %quotient = udiv i64 %"2_01", %"2_12" + %remainder = urem i64 %"2_01", %"2_12" + %2 = insertvalue { i64, i64 } poison, i64 %quotient, 0 + %3 = insertvalue { i64, i64 } %2, i64 %remainder, 1 + %4 = insertvalue { i1, { i64, i64 }, { i32, i8* } } { i1 true, { i64, i64 } poison, { i32, i8* } poison }, { i64, i64 } %3, 1 + %5 = select i1 %valid_div, { i1, { i64, i64 }, { i32, i8* } } %4, { i1, { i64, i64 }, { i32, i8* } } { i1 false, { i64, i64 } poison, { i32, i8* } { i32 2, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @0, i32 0, i32 0) } } + %6 = extractvalue { i1, { i64, i64 }, { i32, i8* } } %5, 1 + %7 = extractvalue { i64, i64 } %6, 0 + %8 = extractvalue { i64, i64 } %6, 1 + %9 = extractvalue { i1, { i64, i64 }, { i32, i8* } } %5, 2 + %tag = extractvalue { i1, { i64, i64 }, { i32, i8* } } %5, 0 + %data_variant = insertvalue { i1, { i32, i8* }, i64 } { i1 true, { i32, i8* } poison, i64 poison }, i64 %8, 2 + %err_variant = insertvalue { i1, { i32, i8* }, i64 } { i1 false, { i32, i8* } poison, i64 poison }, { i32, i8* } %9, 1 + %10 = select i1 %tag, { i1, { i32, i8* }, i64 } %data_variant, { i1, { i32, i8* }, i64 } %err_variant + store { i1, { i32, i8* }, i64 } %10, { i1, { i32, i8* }, i64 }* %"4_0", align 8 + %"4_03" = load { i1, { i32, i8* }, i64 }, { i1, { i32, i8* }, i64 }* %"4_0", align 8 + store { i1, { i32, i8* }, i64 } %"4_03", { i1, { i32, i8* }, i64 }* %"0", align 8 + %"04" = load { i1, { i32, i8* }, i64 }, { i1, { i32, i8* }, i64 }* %"0", align 8 + ret { i1, { i32, i8* }, i64 } %"04" +} diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idiv_checked_s_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idiv_checked_s_[3].snap index 9b4d84400..b947a83ee 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idiv_checked_s_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idiv_checked_s_[3].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0, i8 %1) { +define internal { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca { i1, { i32, ptr }, i8 }, align 8 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idiv_checked_u_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idiv_checked_u_[3].snap index f862cef4b..5eba5848f 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idiv_checked_u_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idiv_checked_u_[3].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0, i8 %1) { +define internal { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca { i1, { i32, ptr }, i8 }, align 8 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_checked_s_[6].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_checked_s_[6].snap index c423a3e3c..7bae0889b 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_checked_s_[6].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_checked_s_[6].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i64, i64 }, { i32, ptr } } @_hl.main.1(i64 %0, i64 %1) { +define internal { i1, { i64, i64 }, { i32, ptr } } @_hl.main.1(i64 %0, i64 %1) { alloca_block: %"0" = alloca { i1, { i64, i64 }, { i32, ptr } }, align 8 %"2_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_checked_u_[6].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_checked_u_[6].snap index 1aca8ca72..b1704b8f6 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_checked_u_[6].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_checked_u_[6].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i64, i64 }, { i32, ptr } } @_hl.main.1(i64 %0, i64 %1) { +define internal { i1, { i64, i64 }, { i32, ptr } } @_hl.main.1(i64 %0, i64 %1) { alloca_block: %"0" = alloca { i1, { i64, i64 }, { i32, ptr } }, align 8 %"2_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_s_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_s_[3].snap index 38459ef54..a6bbe44ce 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_s_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_s_[3].snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private { i8, i8 } @_hl.main.1(i8 %0, i8 %1) { +define internal { i8, i8 } @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca i8, align 1 %"1" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_u_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_u_[3].snap index 7b5845146..d28db895d 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_u_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_idivmod_u_[3].snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private { i8, i8 } @_hl.main.1(i8 %0, i8 %1) { +define internal { i8, i8 } @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca i8, align 1 %"1" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_imod_checked_s_[6].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_imod_checked_s_[6].snap index 1cb108218..a42d02564 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_imod_checked_s_[6].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_imod_checked_s_[6].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i32, ptr }, i64 } @_hl.main.1(i64 %0, i64 %1) { +define internal { i1, { i32, ptr }, i64 } @_hl.main.1(i64 %0, i64 %1) { alloca_block: %"0" = alloca { i1, { i32, ptr }, i64 }, align 8 %"2_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_imod_checked_u_[6].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_imod_checked_u_[6].snap index 0ce56f3e5..d2f03bfb9 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_imod_checked_u_[6].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_imod_checked_u_[6].snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 -define private { i1, { i32, ptr }, i64 } @_hl.main.1(i64 %0, i64 %1) { +define internal { i1, { i32, ptr }, i64 } @_hl.main.1(i64 %0, i64 %1) { alloca_block: %"0" = alloca { i1, { i32, ptr }, i64 }, align 8 %"2_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_ineg_[2].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_ineg_[2].snap index 38c67d793..4a75c2c3d 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_ineg_[2].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_ineg_[2].snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0) { +define internal i8 @_hl.main.1(i8 %0) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_is_to_u_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_is_to_u_[3].snap index 1561f219b..e395605cd 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_is_to_u_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_is_to_u_[3].snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [33 x i8] c"is_to_u called on negative value\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0) { +define internal i8 @_hl.main.1(i8 %0) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_iu_to_s_[3].snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_iu_to_s_[3].snap index b9183e68a..742b46c51 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_iu_to_s_[3].snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__emission@pre-mem2reg@llvm21_iu_to_s_[3].snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [31 x i8] c"iu_to_s argument out of bounds\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0) { +define internal i8 @_hl.main.1(i8 %0) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iadd@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iadd@llvm21.snap index 22c41cc70..dd9ea300c 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iadd@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iadd@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iadd@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iadd@pre-mem2reg@llvm21.snap index 3839a8b5a..f8d213d22 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iadd@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iadd@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_s@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_s@llvm21.snap index 39f36d3e8..cb80dfdc4 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_s@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_s@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_s@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_s@pre-mem2reg@llvm21.snap index 41a16be3f..7df541a10 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_s@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_s@pre-mem2reg@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_u@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_u@llvm21.snap index 91dffd33e..e956df57c 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_u@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_u@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_u@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_u@pre-mem2reg@llvm21.snap index b1f1e7daa..adacf028b 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_u@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__idiv_u@pre-mem2reg@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ieq@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ieq@llvm21.snap index fba62c199..c7eac64f1 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ieq@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ieq@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i8 %0, i8 %1) { +define internal i1 @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ieq@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ieq@pre-mem2reg@llvm21.snap index 773ef0213..a12c5fcec 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ieq@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ieq@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i8 %0, i8 %1) { +define internal i1 @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ilt_s@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ilt_s@llvm21.snap index 35f7f4d3f..4d3a25a81 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ilt_s@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ilt_s@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i8 %0, i8 %1) { +define internal i1 @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ilt_s@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ilt_s@pre-mem2reg@llvm21.snap index 989a3b782..bad6a894f 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ilt_s@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ilt_s@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i8 %0, i8 %1) { +define internal i1 @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_s@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_s@llvm21.snap index bcc3ac957..25c62f20a 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_s@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_s@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_s@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_s@pre-mem2reg@llvm21.snap index dbc5a341d..bff5f16fe 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_s@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_s@pre-mem2reg@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_u@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_u@llvm21.snap index 7577c674c..fbcfd5cdb 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_u@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_u@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_u@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_u@pre-mem2reg@llvm21.snap index d181a0e1c..05c8ce332 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_u@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__imod_u@pre-mem2reg@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [24 x i8] c"Attempted division by 0\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_s_3_2@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_s_3_2@llvm21.snap index 521b1aec5..87e36f947 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_s_3_2@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_s_3_2@llvm21.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [25 x i8] c"Can't narrow into bounds\00", align 1 -define private { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0) { +define internal { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_s_3_2@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_s_3_2@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..8b1021783 --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_s_3_2@pre-mem2reg@llvm14.snap @@ -0,0 +1,31 @@ +--- +source: hugr-llvm/src/extension/int.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [25 x i8] c"Can't narrow into bounds\00", align 1 + +define internal { i1, { i32, i8* }, i8 } @_hl.main.1(i8 %0) { +alloca_block: + %"0" = alloca { i1, { i32, i8* }, i8 }, align 8 + %"2_0" = alloca i8, align 1 + %"4_0" = alloca { i1, { i32, i8* }, i8 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i8 %0, i8* %"2_0", align 1 + %"2_01" = load i8, i8* %"2_0", align 1 + %upper_bounds_check = icmp sgt i8 %"2_01", 7 + %lower_bounds_check = icmp slt i8 %"2_01", -8 + %outside_range = or i1 %upper_bounds_check, %lower_bounds_check + %inbounds = xor i1 %outside_range, true + %1 = insertvalue { i1, { i32, i8* }, i8 } { i1 true, { i32, i8* } poison, i8 poison }, i8 %"2_01", 2 + %2 = select i1 %inbounds, { i1, { i32, i8* }, i8 } %1, { i1, { i32, i8* }, i8 } { i1 false, { i32, i8* } { i32 2, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @0, i32 0, i32 0) }, i8 poison } + store { i1, { i32, i8* }, i8 } %2, { i1, { i32, i8* }, i8 }* %"4_0", align 8 + %"4_02" = load { i1, { i32, i8* }, i8 }, { i1, { i32, i8* }, i8 }* %"4_0", align 8 + store { i1, { i32, i8* }, i8 } %"4_02", { i1, { i32, i8* }, i8 }* %"0", align 8 + %"03" = load { i1, { i32, i8* }, i8 }, { i1, { i32, i8* }, i8 }* %"0", align 8 + ret { i1, { i32, i8* }, i8 } %"03" +} diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_s_3_2@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_s_3_2@pre-mem2reg@llvm21.snap index ce486e172..621b904ed 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_s_3_2@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_s_3_2@pre-mem2reg@llvm21.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [25 x i8] c"Can't narrow into bounds\00", align 1 -define private { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0) { +define internal { i1, { i32, ptr }, i8 } @_hl.main.1(i8 %0) { alloca_block: %"0" = alloca { i1, { i32, ptr }, i8 }, align 8 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_u_6_4@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_u_6_4@llvm21.snap index feaaac410..49f59571c 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_u_6_4@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_u_6_4@llvm21.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [25 x i8] c"Can't narrow into bounds\00", align 1 -define private { i1, { i32, ptr }, i16 } @_hl.main.1(i64 %0) { +define internal { i1, { i32, ptr }, i16 } @_hl.main.1(i64 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_u_6_4@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_u_6_4@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..09d4160df --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_u_6_4@pre-mem2reg@llvm14.snap @@ -0,0 +1,30 @@ +--- +source: hugr-llvm/src/extension/int.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [25 x i8] c"Can't narrow into bounds\00", align 1 + +define internal { i1, { i32, i8* }, i16 } @_hl.main.1(i64 %0) { +alloca_block: + %"0" = alloca { i1, { i32, i8* }, i16 }, align 8 + %"2_0" = alloca i64, align 8 + %"4_0" = alloca { i1, { i32, i8* }, i16 }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i64 %0, i64* %"2_0", align 4 + %"2_01" = load i64, i64* %"2_0", align 4 + %upper_bounds_check = icmp ugt i64 %"2_01", 65535 + %inbounds = xor i1 %upper_bounds_check, true + %1 = trunc i64 %"2_01" to i16 + %2 = insertvalue { i1, { i32, i8* }, i16 } { i1 true, { i32, i8* } poison, i16 poison }, i16 %1, 2 + %3 = select i1 %inbounds, { i1, { i32, i8* }, i16 } %2, { i1, { i32, i8* }, i16 } { i1 false, { i32, i8* } { i32 2, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @0, i32 0, i32 0) }, i16 poison } + store { i1, { i32, i8* }, i16 } %3, { i1, { i32, i8* }, i16 }* %"4_0", align 8 + %"4_02" = load { i1, { i32, i8* }, i16 }, { i1, { i32, i8* }, i16 }* %"4_0", align 8 + store { i1, { i32, i8* }, i16 } %"4_02", { i1, { i32, i8* }, i16 }* %"0", align 8 + %"03" = load { i1, { i32, i8* }, i16 }, { i1, { i32, i8* }, i16 }* %"0", align 8 + ret { i1, { i32, i8* }, i16 } %"03" +} diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_u_6_4@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_u_6_4@pre-mem2reg@llvm21.snap index a69c34bd2..1685c7427 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_u_6_4@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__inarrow_u_6_4@pre-mem2reg@llvm21.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [25 x i8] c"Can't narrow into bounds\00", align 1 -define private { i1, { i32, ptr }, i16 } @_hl.main.1(i64 %0) { +define internal { i1, { i32, ptr }, i16 } @_hl.main.1(i64 %0) { alloca_block: %"0" = alloca { i1, { i32, ptr }, i16 }, align 8 %"2_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ipow@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ipow@llvm21.snap index 2946094fb..625e5358f 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ipow@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ipow@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ipow@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ipow@pre-mem2reg@llvm21.snap index 34b45b385..6eae492e1 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ipow@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__ipow@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0, i8 %1) { +define internal i8 @_hl.main.1(i8 %0, i8 %1) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__isub@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__isub@llvm21.snap index aaa218e1d..12f2a8bac 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__isub@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__isub@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(i64 %0, i64 %1) { +define internal i64 @_hl.main.1(i64 %0, i64 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__isub@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__isub@pre-mem2reg@llvm21.snap index 62e42eb5d..de5d97679 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__isub@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__isub@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(i64 %0, i64 %1) { +define internal i64 @_hl.main.1(i64 %0, i64 %1) { alloca_block: %"0" = alloca i64, align 8 %"2_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_1_6@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_1_6@llvm21.snap index fb2aa43e2..d5b6562cf 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_1_6@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_1_6@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(i8 %0) { +define internal i64 @_hl.main.1(i8 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_1_6@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_1_6@pre-mem2reg@llvm21.snap index 4ddc16aba..210ade7c3 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_1_6@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_1_6@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(i8 %0) { +define internal i64 @_hl.main.1(i8 %0) { alloca_block: %"0" = alloca i64, align 8 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_2_3@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_2_3@llvm21.snap index 25c56b3e9..3591588f2 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_2_3@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_2_3@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0) { +define internal i8 @_hl.main.1(i8 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_2_3@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_2_3@pre-mem2reg@llvm21.snap index 058bcfbb6..8bb2d94ff 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_2_3@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_s_2_3@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0) { +define internal i8 @_hl.main.1(i8 %0) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_1_6@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_1_6@llvm21.snap index a8e86f1d0..15b53b330 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_1_6@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_1_6@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(i8 %0) { +define internal i64 @_hl.main.1(i8 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_1_6@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_1_6@pre-mem2reg@llvm21.snap index 8c349f97c..b4d4642d4 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_1_6@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_1_6@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(i8 %0) { +define internal i64 @_hl.main.1(i8 %0) { alloca_block: %"0" = alloca i64, align 8 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_2_3@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_2_3@llvm21.snap index 25c56b3e9..3591588f2 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_2_3@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_2_3@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0) { +define internal i8 @_hl.main.1(i8 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_2_3@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_2_3@pre-mem2reg@llvm21.snap index 058bcfbb6..8bb2d94ff 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_2_3@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__int__test__iwiden_u_2_3@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i8 @_hl.main.1(i8 %0) { +define internal i8 @_hl.main.1(i8 %0) { alloca_block: %"0" = alloca i8, align 1 %"2_0" = alloca i8, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__and@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__and@llvm21.snap index 15c6e5a9c..0d7729143 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__and@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__and@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i1 %0, i1 %1) { +define internal i1 @_hl.main.1(i1 %0, i1 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__and@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__and@pre-mem2reg@llvm21.snap index e4bbc7433..8563eff35 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__and@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__and@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i1 %0, i1 %1) { +define internal i1 @_hl.main.1(i1 %0, i1 %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca i1, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__eq@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__eq@llvm21.snap index b3c5f35a8..03398c682 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__eq@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__eq@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i1 %0, i1 %1) { +define internal i1 @_hl.main.1(i1 %0, i1 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__eq@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__eq@pre-mem2reg@llvm21.snap index a65b03488..c75a7a345 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__eq@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__eq@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i1 %0, i1 %1) { +define internal i1 @_hl.main.1(i1 %0, i1 %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca i1, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__not@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__not@llvm21.snap index 76bbfc4e5..82de26a04 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__not@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__not@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i1 %0) { +define internal i1 @_hl.main.1(i1 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__not@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__not@pre-mem2reg@llvm21.snap index 86a382e81..ed8ea79ee 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__not@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__not@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i1 %0) { +define internal i1 @_hl.main.1(i1 %0) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca i1, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__or@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__or@llvm21.snap index 4fcd48077..6c51219d8 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__or@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__or@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i1 %0, i1 %1) { +define internal i1 @_hl.main.1(i1 %0, i1 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__or@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__or@pre-mem2reg@llvm21.snap index a4d74aea2..f46e6c5ca 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__or@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__or@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i1 %0, i1 %1) { +define internal i1 @_hl.main.1(i1 %0, i1 %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca i1, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__xor@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__xor@llvm21.snap index 740d13a1b..4dadce2c2 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__xor@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__xor@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i1 %0, i1 %1) { +define internal i1 @_hl.main.1(i1 %0, i1 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__xor@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__xor@pre-mem2reg@llvm21.snap index e4775f3de..b2e894f51 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__xor@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__logic__test__xor@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i1 @_hl.main.1(i1 %0, i1 %1) { +define internal i1 @_hl.main.1(i1 %0, i1 %1) { alloca_block: %"0" = alloca i1, align 1 %"2_0" = alloca i1, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_barrier@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_barrier@llvm21.snap index fe8cccd79..8eac00117 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_barrier@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_barrier@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1() { +define internal i64 @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_barrier@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_barrier@pre-mem2reg@llvm21.snap index 7489af301..7a197b884 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_barrier@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_barrier@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1() { +define internal i64 @_hl.main.1() { alloca_block: %"0" = alloca i64, align 8 %"5_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_external_symbol@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_external_symbol@llvm21.snap index 4efcc72fb..6dd7367ea 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_external_symbol@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_external_symbol@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @sym2 = external global { i1, i64, i2 } @sym1 = external constant i64 -define private { i64, { i1, i64, i2 } } @_hl.main.1() { +define internal { i64, { i1, i64, i2 } } @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_external_symbol@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_external_symbol@pre-mem2reg@llvm21.snap index 1b3b9438e..9460e53ef 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_external_symbol@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_external_symbol@pre-mem2reg@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @sym2 = external global { i1, i64, i2 } @sym1 = external constant i64 -define private { i64, { i1, i64, i2 } } @_hl.main.1() { +define internal { i64, { i1, i64, i2 } } @_hl.main.1() { alloca_block: %"0" = alloca i64, align 8 %"1" = alloca { i1, i64, i2 }, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_usize@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_usize@llvm21.snap index 2cd62e3c0..e24f616b4 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_usize@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_usize@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1() { +define internal i64 @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_usize@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_usize@pre-mem2reg@llvm21.snap index 9fa18559e..25173ceba 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_usize@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_const_usize@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1() { +define internal i64 @_hl.main.1() { alloca_block: %"0" = alloca i64, align 8 %"5_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_exit@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_exit@llvm21.snap index cf507eee0..9a841aaef 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_exit@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_exit@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [5 x i8] c"EXIT\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private { i16, i16 } @_hl.main.1(i16 %0, i16 %1) { +define internal { i16, i16 } @_hl.main.1(i16 %0, i16 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_exit@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_exit@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..3df48d805 --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_exit@pre-mem2reg@llvm14.snap @@ -0,0 +1,48 @@ +--- +source: hugr-llvm/src/extension/prelude.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [5 x i8] c"EXIT\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal { i16, i16 } @_hl.main.1(i16 %0, i16 %1) { +alloca_block: + %"0" = alloca i16, align 2 + %"1" = alloca i16, align 2 + %"5_0" = alloca { i32, i8* }, align 8 + %"2_0" = alloca i16, align 2 + %"2_1" = alloca i16, align 2 + %"6_0" = alloca i16, align 2 + %"6_1" = alloca i16, align 2 + br label %entry_block + +entry_block: ; preds = %alloca_block + store { i32, i8* } { i32 42, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @0, i32 0, i32 0) }, { i32, i8* }* %"5_0", align 8 + store i16 %0, i16* %"2_0", align 2 + store i16 %1, i16* %"2_1", align 2 + %"5_01" = load { i32, i8* }, { i32, i8* }* %"5_0", align 8 + %"2_02" = load i16, i16* %"2_0", align 2 + %"2_13" = load i16, i16* %"2_1", align 2 + %2 = extractvalue { i32, i8* } %"5_01", 0 + %3 = extractvalue { i32, i8* } %"5_01", 1 + %4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 %2, i8* %3) + call void @abort() + store i16 0, i16* %"6_0", align 2 + store i16 0, i16* %"6_1", align 2 + %"6_04" = load i16, i16* %"6_0", align 2 + %"6_15" = load i16, i16* %"6_1", align 2 + store i16 %"6_04", i16* %"0", align 2 + store i16 %"6_15", i16* %"1", align 2 + %"06" = load i16, i16* %"0", align 2 + %"17" = load i16, i16* %"1", align 2 + %mrv = insertvalue { i16, i16 } undef, i16 %"06", 0 + %mrv8 = insertvalue { i16, i16 } %mrv, i16 %"17", 1 + ret { i16, i16 } %mrv8 +} + +declare i32 @printf(i8*, ...) + +declare void @abort() diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_exit@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_exit@pre-mem2reg@llvm21.snap index b4accfa4b..6d121717e 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_exit@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_exit@pre-mem2reg@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [5 x i8] c"EXIT\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private { i16, i16 } @_hl.main.1(i16 %0, i16 %1) { +define internal { i16, i16 } @_hl.main.1(i16 %0, i16 %1) { alloca_block: %"0" = alloca i16, align 2 %"1" = alloca i16, align 2 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_load_nat@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_load_nat@llvm21.snap index fe8cccd79..8eac00117 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_load_nat@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_load_nat@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1() { +define internal i64 @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_load_nat@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_load_nat@pre-mem2reg@llvm21.snap index 3153c705d..026150fc8 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_load_nat@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_load_nat@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1() { +define internal i64 @_hl.main.1() { alloca_block: %"0" = alloca i64, align 8 %"4_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error@llvm21.snap index d9aa2425f..4083171dd 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error@llvm21.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [7 x i8] c"Error!\00", align 1 -define private { i32, ptr } @_hl.main.1() { +define internal { i32, ptr } @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..09f1c7672 --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error@pre-mem2reg@llvm14.snap @@ -0,0 +1,31 @@ +--- +source: hugr-llvm/src/extension/prelude.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [7 x i8] c"Error!\00", align 1 + +define internal { i32, i8* } @_hl.main.1() { +alloca_block: + %"0" = alloca { i32, i8* }, align 8 + %"7_0" = alloca i8*, align 8 + %"5_0" = alloca i64, align 8 + %"8_0" = alloca { i32, i8* }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @0, i32 0, i32 0), i8** %"7_0", align 8 + store i64 100, i64* %"5_0", align 4 + %"5_01" = load i64, i64* %"5_0", align 4 + %"7_02" = load i8*, i8** %"7_0", align 8 + %0 = trunc i64 %"5_01" to i32 + %1 = insertvalue { i32, i8* } undef, i32 %0, 0 + %2 = insertvalue { i32, i8* } %1, i8* %"7_02", 1 + store { i32, i8* } %2, { i32, i8* }* %"8_0", align 8 + %"8_03" = load { i32, i8* }, { i32, i8* }* %"8_0", align 8 + store { i32, i8* } %"8_03", { i32, i8* }* %"0", align 8 + %"04" = load { i32, i8* }, { i32, i8* }* %"0", align 8 + ret { i32, i8* } %"04" +} diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error@pre-mem2reg@llvm21.snap index 3959c6ec9..0c7de1707 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error@pre-mem2reg@llvm21.snap @@ -7,7 +7,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [7 x i8] c"Error!\00", align 1 -define private { i32, ptr } @_hl.main.1() { +define internal { i32, ptr } @_hl.main.1() { alloca_block: %"0" = alloca { i32, ptr }, align 8 %"7_0" = alloca ptr, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error_and_panic@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error_and_panic@llvm21.snap index 1bba1bea4..8511a688a 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error_and_panic@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error_and_panic@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [7 x i8] c"Error!\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error_and_panic@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error_and_panic@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..12aa6d069 --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error_and_panic@pre-mem2reg@llvm14.snap @@ -0,0 +1,37 @@ +--- +source: hugr-llvm/src/extension/prelude.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [7 x i8] c"Error!\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal void @_hl.main.1() { +alloca_block: + %"7_0" = alloca i8*, align 8 + %"5_0" = alloca i64, align 8 + %"8_0" = alloca { i32, i8* }, align 8 + br label %entry_block + +entry_block: ; preds = %alloca_block + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @0, i32 0, i32 0), i8** %"7_0", align 8 + store i64 100, i64* %"5_0", align 4 + %"5_01" = load i64, i64* %"5_0", align 4 + %"7_02" = load i8*, i8** %"7_0", align 8 + %0 = trunc i64 %"5_01" to i32 + %1 = insertvalue { i32, i8* } undef, i32 %0, 0 + %2 = insertvalue { i32, i8* } %1, i8* %"7_02", 1 + store { i32, i8* } %2, { i32, i8* }* %"8_0", align 8 + %"8_03" = load { i32, i8* }, { i32, i8* }* %"8_0", align 8 + %3 = extractvalue { i32, i8* } %"8_03", 0 + %4 = extractvalue { i32, i8* } %"8_03", 1 + %5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 %3, i8* %4) + call void @abort() + ret void +} + +declare i32 @printf(i8*, ...) + +declare void @abort() diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error_and_panic@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error_and_panic@pre-mem2reg@llvm21.snap index 3c0d6d5b9..e2ad8c161 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error_and_panic@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_error_and_panic@pre-mem2reg@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [7 x i8] c"Error!\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: %"7_0" = alloca ptr, align 8 %"5_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_tuple@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_tuple@llvm21.snap index 3350f4c3d..c88d66ca7 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_tuple@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_tuple@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i1, i1 } @_hl.main.1(i1 %0, i1 %1) { +define internal { i1, i1 } @_hl.main.1(i1 %0, i1 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_tuple@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_tuple@pre-mem2reg@llvm21.snap index 2be321cde..bcc7c9d7b 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_tuple@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_make_tuple@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i1, i1 } @_hl.main.1(i1 %0, i1 %1) { +define internal { i1, i1 } @_hl.main.1(i1 %0, i1 %1) { alloca_block: %"0" = alloca { i1, i1 }, align 8 %"2_0" = alloca i1, align 1 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_noop@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_noop@llvm21.snap index 13cf99fe3..6bf9adcc7 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_noop@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_noop@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(i64 %0) { +define internal i64 @_hl.main.1(i64 %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_noop@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_noop@pre-mem2reg@llvm21.snap index e9fd07313..c194755bd 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_noop@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_noop@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private i64 @_hl.main.1(i64 %0) { +define internal i64 @_hl.main.1(i64 %0) { alloca_block: %"0" = alloca i64, align 8 %"2_0" = alloca i64, align 8 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_panic@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_panic@llvm21.snap index 776f81d5d..b1f1291bf 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_panic@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_panic@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [6 x i8] c"PANIC\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private { i16, i16 } @_hl.main.1(i16 %0, i16 %1) { +define internal { i16, i16 } @_hl.main.1(i16 %0, i16 %1) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_panic@pre-mem2reg@llvm14.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_panic@pre-mem2reg@llvm14.snap new file mode 100644 index 000000000..49ed9691d --- /dev/null +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_panic@pre-mem2reg@llvm14.snap @@ -0,0 +1,48 @@ +--- +source: hugr-llvm/src/extension/prelude.rs +expression: mod_str +--- +; ModuleID = 'test_context' +source_filename = "test_context" + +@0 = private unnamed_addr constant [6 x i8] c"PANIC\00", align 1 +@prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 + +define internal { i16, i16 } @_hl.main.1(i16 %0, i16 %1) { +alloca_block: + %"0" = alloca i16, align 2 + %"1" = alloca i16, align 2 + %"5_0" = alloca { i32, i8* }, align 8 + %"2_0" = alloca i16, align 2 + %"2_1" = alloca i16, align 2 + %"6_0" = alloca i16, align 2 + %"6_1" = alloca i16, align 2 + br label %entry_block + +entry_block: ; preds = %alloca_block + store { i32, i8* } { i32 42, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @0, i32 0, i32 0) }, { i32, i8* }* %"5_0", align 8 + store i16 %0, i16* %"2_0", align 2 + store i16 %1, i16* %"2_1", align 2 + %"5_01" = load { i32, i8* }, { i32, i8* }* %"5_0", align 8 + %"2_02" = load i16, i16* %"2_0", align 2 + %"2_13" = load i16, i16* %"2_1", align 2 + %2 = extractvalue { i32, i8* } %"5_01", 0 + %3 = extractvalue { i32, i8* } %"5_01", 1 + %4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @prelude.panic_template, i32 0, i32 0), i32 %2, i8* %3) + call void @abort() + store i16 0, i16* %"6_0", align 2 + store i16 0, i16* %"6_1", align 2 + %"6_04" = load i16, i16* %"6_0", align 2 + %"6_15" = load i16, i16* %"6_1", align 2 + store i16 %"6_04", i16* %"0", align 2 + store i16 %"6_15", i16* %"1", align 2 + %"06" = load i16, i16* %"0", align 2 + %"17" = load i16, i16* %"1", align 2 + %mrv = insertvalue { i16, i16 } undef, i16 %"06", 0 + %mrv8 = insertvalue { i16, i16 } %mrv, i16 %"17", 1 + ret { i16, i16 } %mrv8 +} + +declare i32 @printf(i8*, ...) + +declare void @abort() diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_panic@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_panic@pre-mem2reg@llvm21.snap index 7afafb960..27a37af50 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_panic@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_panic@pre-mem2reg@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [6 x i8] c"PANIC\00", align 1 @prelude.panic_template = private unnamed_addr constant [34 x i8] c"Program panicked (signal %i): %s\0A\00", align 1 -define private { i16, i16 } @_hl.main.1(i16 %0, i16 %1) { +define internal { i16, i16 } @_hl.main.1(i16 %0, i16 %1) { alloca_block: %"0" = alloca i16, align 2 %"1" = alloca i16, align 2 diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_print@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_print@llvm21.snap index 52a9263da..3d2b09da4 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_print@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_print@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [14 x i8] c"Hello, world!\00", align 1 @prelude.print_template = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_print@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_print@pre-mem2reg@llvm21.snap index 472d7052b..ff0d3d2aa 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_print@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_print@pre-mem2reg@llvm21.snap @@ -8,7 +8,7 @@ source_filename = "test_context" @0 = private unnamed_addr constant [14 x i8] c"Hello, world!\00", align 1 @prelude.print_template = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 -define private void @_hl.main.1() { +define internal void @_hl.main.1() { alloca_block: %"5_0" = alloca ptr, align 8 br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_unpack_tuple@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_unpack_tuple@llvm21.snap index 39cf51935..6415649c7 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_unpack_tuple@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_unpack_tuple@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i1, i1 } @_hl.main.1({ i1, i1 } %0) { +define internal { i1, i1 } @_hl.main.1({ i1, i1 } %0) { alloca_block: br label %entry_block diff --git a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_unpack_tuple@pre-mem2reg@llvm21.snap b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_unpack_tuple@pre-mem2reg@llvm21.snap index bd7260964..0169d9733 100644 --- a/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_unpack_tuple@pre-mem2reg@llvm21.snap +++ b/hugr-llvm/src/extension/snapshots/hugr_llvm__extension__prelude__test__prelude_unpack_tuple@pre-mem2reg@llvm21.snap @@ -5,7 +5,7 @@ expression: mod_str ; ModuleID = 'test_context' source_filename = "test_context" -define private { i1, i1 } @_hl.main.1({ i1, i1 } %0) { +define internal { i1, i1 } @_hl.main.1({ i1, i1 } %0) { alloca_block: %"0" = alloca i1, align 1 %"1" = alloca i1, align 1