SecretizePasses
-secretize
Adds secret argument attributes to entry function
Adds a secret.secret attribute argument to each argument in the entry
function of an MLIR module. By default, the function is main
. This may be
overridden with the option -entry-function=top_level_func.
Options
-entry-function : entry function of the module
-wrap-generic
Wraps regions using secret args in secret.generic bodies
This pass wraps function regions of func.func
that use secret arguments in
secret.generic
bodies.
Secret arguments are annotated using a secret.secret
argument attribute.
This pass converts these to secret types and then inserts a secret.generic
body to hold the functions region. The output type is also converted to a
secret.
Example input:
func.func @main(%arg0: i32 {secret.secret}) -> i32 {
%0 = arith.constant 100 : i32
%1 = arith.addi %0, %arg0 : i32
return %1 : i32
}
Output:
func.func @main(%arg0: !secret.secret<i32>) -> !secret.secret<i32> {
%0 = secret.generic ins(%arg0 : !secret.secret<i32>) {
^bb0(%arg1: i32):
%1 = arith.constant 100 : i32
%2 = arith.addi %0, %arg1 : i32
secret.yield %2 : i32
} -> !secret.secret<i32>
return %0 : !secret.secret<i32>
}