google / google/heir

test: secret_inserts.mlir is flakey

Open
#987 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
MLIR
Stars
906
Forks
171
Avg merge
4d 12h
Merged PRs (30d)
32

Description

At head in CI I see that `tests/convert_secret_insert_to_static_insert/secret_inserts.mlir` flakily fails (maybe 2/10 runs).

Here's the two outputs for the @insert_and_sum file:

```
func.func @insert_and_sum(%arg0: !secret.secret>, %arg1: !secret.secret) -> !secret.secret> {
%c0_i16 = arith.constant 0 : i16
%0 = secret.generic ins(%arg0, %arg1 : !secret.secret>, !secret.secret) {
^bb0(%arg2: tensor<32xi16>, %arg3: index):
%1:2 = affine.for %arg4 = 0 to 32 iter_args(%arg5 = %c0_i16, %arg6 = %arg2) -> (i16, tensor<32xi16>) {
%extracted = tensor.extract %arg6[%arg4] : tensor<32xi16>
%3 = arith.addi %arg5, %extracted : i16
%4 = affine.for %arg7 = 0 to 32 iter_args(%arg8 = %arg6) -> (tensor<32xi16>) {
%5 = arith.cmpi eq, %arg7, %arg3 : index
%6 = affine.for %arg9 = 0 to 32 iter_args(%arg10 = %arg8) -> (tensor<32xi16>) {
%8 = arith.cmpi eq, %arg9, %arg7 : index
%inserted = tensor.insert %3 into %arg10[%arg9] : tensor<32xi16>
%9 = scf.if %8 -> (tensor<32xi16>) {
scf.yield %inserted : tensor<32xi16>
} else {
scf.yield %arg10 : tensor<32xi16>
}
affine.yield %9 : tensor<32xi16>
}
%7 = scf.if %5 -> (tensor<32xi16>) {
scf.yield %6 : tensor<32xi16>
} else {
scf.yield %arg8 : tensor<32xi16>
}
affine.yield %7 : tensor<32xi16>
}
affine.yield %3, %4 : i16, tensor<32xi16>
}
%2 = affine.for %arg4 = 0 to 32 iter_args(%arg5 = %1#1) -> (tensor<32xi16>) {
%3 = arith.cmpi eq, %arg4, %arg3 : index
%inserted = tensor.insert %1#0 into %arg5[%arg4] : tensor<32xi16>
%4 = scf.if %3 -> (tensor<32xi16>) {
scf.yield %inserted : tensor<32xi16>
} else {
scf.yield %arg5 : tensor<32xi16>
}
affine.yield %4 : tensor<32xi16>
}
secret.yield %2 : tensor<32xi16>
} -> !secret.secret>
return %0 : !secret.secret>
}
```

or

```
func.func @insert_and_sum(%arg0: !secret.secret>, %arg1: !secret.secret) -> !secret.secret> {
%c0_i16 = arith.constant 0 : i16
%0 = secret.generic ins(%arg0, %arg1 : !secret.secret>, !secret.secret) {
^bb0(%arg2: tensor<32xi16>, %arg3: index):
%1:2 = affine.for %arg4 = 0 to 32 iter_args(%arg5 = %c0_i16, %arg6 = %arg2) -> (i16, tensor<32xi16>) {
%extracted = tensor.extract %arg6[%arg4] : tensor<32xi16>
%3 = arith.addi %arg5, %extracted : i16
%4 = affine.for %arg7 = 0 to 32 iter_args(%arg8 = %arg6) -> (tensor<32xi16>) {
%5 = arith.cmpi eq, %arg7, %arg3 : index
%inserted = tensor.insert %3 into %arg8[%arg7] : tensor<32xi16>
%6 = scf.if %5 -> (tensor<32xi16>) {
scf.yield %inserted : tensor<32xi16>
} else {
scf.yield %arg8 : tensor<32xi16>
}
affine.yield %6 : tensor<32xi16>
}
affine.yield %3, %4 : i16, tensor<32xi16>
}
%2 = affine.for %arg4 = 0 to 32 iter_args(%arg5 = %1#1) -> (tensor<32xi16>) {
%3 = arith.cmpi eq, %arg4, %arg3 : index
%inserted = tensor.insert %1#0 into %arg5[%arg4] : tensor<32xi16>
%4 = scf.if %3 -> (tensor<32xi16>) {
scf.yield %inserted : tensor<32xi16>
} else {
scf.yield %arg5 : tensor<32xi16>
}
affine.yield %4 : tensor<32xi16>
}
secret.yield %2 : tensor<32xi16>
} -> !secret.secret>
return %0 : !secret.secret>
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.