-
Notifications
You must be signed in to change notification settings - Fork 98
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
Adaptive profile floating-point computations extension #2078
base: main
Are you sure you want to change the base?
Conversation
71011e3
to
bcfe36d
Compare
pip/src/interpreter.rs
Outdated
/// | ||
/// This profile includes all of the required Adaptive Profile and Adaptive_RI | ||
/// capabilities, as well as the optional floating point computation and qubit | ||
/// reset capabilities, as defined by the QIR specification. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As prior comment, including Adaptive_RI
already includes reset capabilities.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reworded them. The adaptive profile requires qubit reset now, so I updated the adaptive RI docs as well.
!8 = !{i32 1, !"classical_fixed_points", i1 false} | ||
!9 = !{i32 1, !"user_functions", i1 false} | ||
!10 = !{i32 1, !"multiple_target_branching", i1 false} | ||
!4 = !{i32 1, !"int_computations", !"i64"} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will this change in module flags metadata name from classical_ints
to int_computations
be a breaking change anywhere in our existing flow (including any service validation)? Hopefully Quantinuum can already handle either, as they helped write the spec, but maybe worth a check before changing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
!8 = !{i32 1, !"classical_fixed_points", i1 false} | ||
!9 = !{i32 1, !"user_functions", i1 false} | ||
!10 = !{i32 1, !"multiple_target_branching", i1 false} | ||
!4 = !{i32 1, !"int_computations", !"i64"} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we have a test case in this folder that includes an .ll
file using the new capability? (Which maybe means a new sample)
Adds dynamic float support implementing the floating-point computations for the AdaptiveRIF profile. This also implements
fcmp
missing from the spec which was filed as a spec bug.The
fcmp
instructions chosen were the ordered set. The spec says operations like dividing by0
are undefined behavior and diving by0
usually gives aNAN
value. For anyfcmp
calls we need to choose ordered or unordered. I'm not sure that it matters which we decide.This PR does not change the default profiles for the defined hardware targets.