brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · efc3890 Raw
107 lines · plain
1// RUN: mlir-opt %s --transform-interpreter --split-input-file --verify-diagnostics2 3module attributes {transform.with_named_sequence} {4  transform.named_sequence @__transform_main(%arg0: !transform.any_op {transform.readonly}) {5    // expected-error@below {{provided `selected` attribute is not an element of `options` array of attributes}}6    %heads_or_tails = transform.tune.knob<"coin"> = 1 from options = [true, false] -> !transform.any_param7    transform.yield8  }9}10 11// -----12 13func.func private @f()14 15module attributes {transform.with_named_sequence} {16  transform.named_sequence @__transform_main(%arg0: !transform.any_op {transform.readonly}) {17    // expected-error@below {{non-deterministic choice "coin" is only resolved through providing a `selected` attr}}18    %heads_or_tails = transform.tune.knob<"coin"> options = [true, false] -> !transform.any_param19    transform.yield20  }21}22 23// -----24 25func.func private @f()26 27module attributes {transform.with_named_sequence} {28  transform.named_sequence @__transform_main(%arg0: !transform.any_op {transform.readonly}) {29    // expected-error@below {{'selected_region' attribute specifies region at index 2 while op has only 2 regions}}30    transform.tune.alternatives<"bifurcation"> selected_region = 2 {31      transform.yield32    }, {33      transform.yield34    }35    transform.yield36  }37}38 39// -----40 41func.func private @f()42 43module attributes {transform.with_named_sequence} {44  transform.named_sequence @__transform_main(%arg0: !transform.any_op {transform.readonly}) {45    %singleton_of_c0 = transform.param.constant [0] -> !transform.any_param46    // expected-error@below {{param should hold exactly one integer attribute, got: [0]}}47    transform.tune.alternatives<"bifurcation"> selected_region = %singleton_of_c0 : !transform.any_param {48      transform.yield49    }, {50      transform.yield51    }52    transform.yield53  }54}55 56// -----57 58func.func private @f()59 60module attributes {transform.with_named_sequence} {61  transform.named_sequence @__transform_main(%arg0: !transform.any_op {transform.readonly}) {62    %c0 = transform.param.constant 0 -> !transform.any_param63    %c1 = transform.param.constant 1 -> !transform.any_param64    %c0_and_c1 = transform.merge_handles %c0, %c1 : !transform.any_param65    // expected-error@below {{param should hold exactly one integer attribute}}66    transform.tune.alternatives<"bifurcation"> selected_region = %c0_and_c1 : !transform.any_param {67      transform.yield68    }, {69      transform.yield70    }71    transform.yield72  }73}74 75// -----76 77func.func private @f()78 79module attributes {transform.with_named_sequence} {80  transform.named_sequence @__transform_main(%arg0: !transform.any_op {transform.readonly}) {81    %c2 = transform.param.constant 2 -> !transform.any_param82    // expected-error@below {{'selected_region' attribute/param specifies region at index 2 while op has only 2 regions}}83    transform.tune.alternatives<"bifurcation"> selected_region = %c2 : !transform.any_param {84      transform.yield85    }, {86      transform.yield87    }88    transform.yield89  }90}91 92// -----93 94func.func private @f()95 96module attributes {transform.with_named_sequence} {97  transform.named_sequence @__transform_main(%arg0: !transform.any_op {transform.readonly}) {98    // expected-error@below {{non-deterministic choice "bifurcation" is only resolved through providing a `selected_region` attr/param}}99    transform.tune.alternatives<"bifurcation"> {100      transform.yield101    }, {102      transform.yield103    }104    transform.yield105  }106}107