Alexander Viand
Alexander Viand
fhe::Multiply::fold (x,1) -> x does not apply to arith.constant
As the title says. We considered the Dilithium signature scheme and the Kyber KEM as initial "end-to-end" examples for `polynomial` and this lowering. While Dilithium shouldn't be an issue, Kyber's...
The `ElementwiseToLinalg` pass in MLIR only supports operations where all operands are tensors and this requirement has been left in place for the `ElementwiseToAffine` pass. However, the reason that this...
The (at the time of writing) most recent LLVM Integrate commit (497630d) fails to build due to an error in LLVM ([action output](https://github.com/google/heir/actions/runs/9881300266/job/27291789139)): ``` external/llvm-project/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp:18:10: fatal error: mlir/Dialect/EmitC/Transforms/TypeConversions.h: No such...
The current lowering only supports RLWECiphertexts and also implicitly assumes BGV-style encode/encrypt. Somewhat related to #882 (adding encrypt/encode lowerings to poly/etc for things other than BGV) Both probably require LWE...
We might want to eventually support "compressed" encryption, where instead using the whole random "a" polynomial, you just provide the seed for "a" and what PRNG to use. This gives...
This adds the following rewrite pattern: ```llvm %res = arith.select %c, %t, %f // turns into %ct = bgv.mul %c, %t %nc = bgv.negate %c // EDIT: actually a bug,...
The fix for #839 conservatively marks region-bearing ops not handled by the analysis framework directly (i.e. no `RegionBranchOpInterface` trait) as "unknown" secretness (unless there's a secret operand, in which case...
This a DRAFT to elicit design feedback on how we should handle RNS support in HEIR. Towards that goal, it simply *switches* most things to RNS (rather than supporting RNS...
While the existing PR on this is stalled due to bazel issues, it should be possible to enable them in the CMake build. Related PRs & Issues: * #421 *...