We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
split
The following program type checks and generates the expected output with the C++ backend:
decl out: ubit<32>[1]; let A: ubit<32>[4 bank 2]; split A_sp = A[by 2]; for (let i: ubit<3> = 0..2) { for (let j: ubit<3> = 0..2) unroll 2 { let t = A_sp[j][i]; } combine { out[0] += t; } }
However, with --lower, we get the cryptic error:
--lower
% ./fuse split.fuse --lower [Type error] [Line 4, Column 14] `A' is not bound in scope. split A_sp = A[by 2];
Using --pass-debug, we can see that Lower for loops doesn't handle split views:
--pass-debug
Lower for loops
... let A0: ubit<32>[2]; let A1: ubit<32>[2]; split A_sp = A[by 2]; // <-- oops ...
It rewrites A to A0 and A1 but doesn't change the instances of A in the split view.
A
A0
A1
The text was updated successfully, but these errors were encountered:
No branches or pull requests
The following program type checks and generates the expected output with the C++ backend:
However, with
--lower
, we get the cryptic error:Using
--pass-debug
, we can see thatLower for loops
doesn't handle split views:It rewrites
A
toA0
andA1
but doesn't change the instances ofA
in the split view.The text was updated successfully, but these errors were encountered: