Back to PBT run
input.mlir
#loop_ann = #llvm.loop_annotation<mustProgress = true>
llvm.func @nested_weighted_arm_0(%weighted: i1, %plain: i1, %a: i32, %b: i32) -> i32 {
cf.cond_br %weighted weights([8, 2]), ^left, ^right
^left:
cf.cond_br %plain, ^left_true, ^left_false
^left_true:
cf.br ^exit(%a : i32)
^left_false:
cf.br ^exit(%b : i32)
^right:
cf.br ^exit(%b : i32)
^exit(%r: i32):
llvm.return %r : i32
}
llvm.func @plain_then_weighted_1(%plain: i1, %weighted: i1, %a: i32, %b: i32) -> i32 {
cf.cond_br %plain, ^plain_true, ^plain_false
^plain_true:
cf.br ^weighted_entry(%a : i32)
^plain_false:
cf.br ^weighted_entry(%b : i32)
^weighted_entry(%seed: i32):
cf.cond_br %weighted weights([1, 9]), ^weighted_true, ^weighted_false
^weighted_true:
cf.br ^exit(%seed : i32)
^weighted_false:
cf.br ^exit(%seed : i32)
^exit(%r: i32):
llvm.return %r : i32
}
llvm.func @plain_then_weighted_2(%plain: i1, %weighted: i1, %a: i32, %b: i32) -> i32 {
cf.cond_br %plain, ^plain_true, ^plain_false
^plain_true:
cf.br ^weighted_entry(%a : i32)
^plain_false:
cf.br ^weighted_entry(%b : i32)
^weighted_entry(%seed: i32):
cf.cond_br %weighted weights([6, 4]), ^weighted_true, ^weighted_false
^weighted_true:
cf.br ^exit(%seed : i32)
^weighted_false:
cf.br ^exit(%seed : i32)
^exit(%r: i32):
llvm.return %r : i32
}