-
Notifications
You must be signed in to change notification settings - Fork 771
[SYCL] Add new FPGA loop attribute enable_loop_pipelining #9263
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
Conversation
This patch adds support for new FPGA attribute called enable_loop_pipelining, which is similar to disable_loop_pipelining. This attribute is useful in the low-area flow, in which all loops are unpipelined by default and the user may wish to enable loop pipelining. The [[intel::enable_loop_pipelining]] attribute is applicable to loops in SYCL device code. If the loop has this attribute, the LLVM IR loop will have the llvm.loop.intel.pipelining.enable metadata, with value 1, as shown below: br .... !llvm.loop !0 !0 = {!1} !1 = !{!"llvm.loop.intel.pipelining.enable", i32 1} An error should be output if both [[intel::enable_loop_pipelining]] and [[intel::disable_loop_pipelining]] are applied to the same loop. Signed-off-by: Soumi Manna <soumi.manna@intel.com>
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.
Sorry for missing a couple things yesterday.
Not a Problem @premanandrao. Thanks for catching and reviews! |
Thank you everyone for reviews! |
The failed test is unrelated to my patch: Failed Tests (1): |
@intel/llvm-gatekeepers This PR is ready. Could you please merge it? Thank you |
This patch adds support for new FPGA attribute called enable_loop_pipelining, which is similar to disable_loop_pipelining.
This attribute is useful in the low-area flow, in which all loops are unpipelined by default and the user may wish to enable loop pipelining.
The [[intel::enable_loop_pipelining]] attribute is applicable to loops in SYCL device code. If the loop has this attribute, the LLVM IR loop will have the llvm.loop.intel.pipelining.enable metadata, with value 1, as shown below:
br .... !llvm.loop !0
!0 = {!1}
!1 = !{!"llvm.loop.intel.pipelining.enable", i32 1}
An error should be output if both [[intel::enable_loop_pipelining]] and [[intel::disable_loop_pipelining]] are applied to the same loop.