Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor Label Inference and ITE Assignment #5

Open
dz333 opened this issue Nov 7, 2019 · 0 comments
Open

Refactor Label Inference and ITE Assignment #5

dz333 opened this issue Nov 7, 2019 · 0 comments
Labels
enhancement New feature or request v0.2 Issues that affect version v0.2 of secure-firrtl

Comments

@dz333
Copy link
Collaborator

dz333 commented Nov 7, 2019

Currently, in large programs with lots of inferred labels, the ITE labels can get extremely large before being simplified. For example the value of a label may be inferred to be:

( var1 ? BOT :
              (var2 ? BOT :
                                     (var3 ? BOT : pc_lbl)))

However, it is often the case that var1 == var 2 == var3

In the currently implementation, this is resolved after creating these deep ITE labels and causes large recursive resolution that is inefficient. This has been solved in JOIN label inference by sorting sublabels; however the same approach cannot be used with ITE labels since their sublabels cannot be extracted since ITE is not a commutative operation (the join optimization just pulls out all labels referenced in the join and rejoins them later in sorted order).

Instead, ITE assignment must be done after some inference has resolved these equivalent labels to minimize the depth of ITE labels necessary to express accurate flow restrictions

@dz333 dz333 added enhancement New feature or request v0.2 Issues that affect version v0.2 of secure-firrtl labels Nov 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request v0.2 Issues that affect version v0.2 of secure-firrtl
Projects
None yet
Development

No branches or pull requests

1 participant