Peel first iteration of loops with ciphertext iter-args (Halo Solution A-1)#2534
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
|
if this pass is primarily for reconciling types (secret/plaintext), then why would it need to be part of the mgmt pipelines? those will change the level attrs and add new mgmt ops but I don't think at that point it would be changing types |
You're right about this pattern: it is a prerequisite to insert-mgmt because the level analysis would not converge otherwise, but not needed as "part" of insert-mgmt. But the later HALO passes definitely need to be part of insert-mgmt (or some alternative pipeline) because you need a level analysis to determine how much to unroll the loop. |
|
I will squash this PR with joint authorship once Sara signs the CLA |
Co-authored-by: sararv <saras.vanch@gmail.com> Co-authored-by: Jeremy Kun <j2kun@users.noreply.github.com>
Adds patterns to peel the first iteration of an
affine.fororscf.forloop when the secretness of the init value and the yielded iter-arg disagree.This is intended to be used at the
secret+arithlevel, possibly withmgmtops in the mix. I think this pattern will ultimately be used as part of theinsert-mgmtpipeline, since that is where the bootstrap and level analysis occurs. But for now it's an independent pattern with a thin wrapper pass for testing.