@@ -4013,108 +4013,6 @@ with which a pipe interfaces. The id argument is the name of the I/O interface.
40134013 }];
40144014}
40154015
4016- def SYCLIntelIVDepAttrDocs : Documentation {
4017- let Category = DocCatVariable;
4018- let Heading = "intel::ivdep";
4019- let Content = [{
4020- This attribute applies to a loop. If no additional arguments are provided, it
4021- indicates that the backend may assume that the loop carries no dependences.
4022- If a safelen is provided then the backend may assume that all loop-carried
4023- dependences have a dependence distance of at least that length.
4024- If an array variable is provided then the backend may assume that there are
4025- no loop-carried dependences for this particular array within this loop.
4026- If both an array variable and a safelen are specified, the backend may assume
4027- that all loop-carried dependences for this particular array have a dependence
4028- distance of at least that length.
4029- Multiple ivdep attributes can be applied to the same loop, but only the greatest
4030- possible safelen will be chosen for each array, including the case where safelen
4031- is unspecified and is therefore considered infinite.
4032- In case of ivdep being applied both w/o an array variable and for a particular
4033- array, the array variables that were not designated a separate ivdep will receive
4034- the no-array ivdep's safelen, with the correspondent treatment by the backend.
4035- The ``[[intel::ivdep]]`` attribute applies a safelen value of 0 or 1 that has
4036- no effect on the loop and emits a suppressible warning when safelen value of 0
4037- or 1 is used.
4038-
4039- .. code-block:: c++
4040-
4041- void foo() {
4042- int a[10];
4043- [[intel::ivdep]] for (int i = 0; i != 10; ++i) { }
4044- [[intel::ivdep(2)]] for (int i = 0; i != 10; ++i) { }
4045- [[intel::ivdep(a)]] for (int i = 0; i != 10; ++i) { }
4046- [[intel::ivdep(a, 2)]] for (int i = 0; i != 10; ++i) { }
4047- }
4048-
4049- template<int N>
4050- void bar() {
4051- [[intel::ivdep(N)]] for(;;) { }
4052- }
4053-
4054- }];
4055- }
4056-
4057- def SYCLIntelInitiationIntervalAttrDocs : Documentation {
4058- let Category = DocCatVariable;
4059- let Heading = "intel::initiation_interval";
4060- let Content = [{
4061- This attribute applies to a loop or a function. Indicates that the loop or
4062- function should be pipelined with an initiation interval of N. N must be a
4063- positive integer. Cannot be applied multiple times to the same loop or function.
4064- Cannot be used on the same loop or function in conjunction with
4065- disable_loop_pipelining.
4066-
4067- The ``[[intel::ii]]`` attribute spelling is a deprecated synonym for
4068- ``[[intel::initiation_interval]]`` and will be removed in the future.
4069-
4070- .. code-block:: c++
4071-
4072- void foo() {
4073- int var = 0;
4074- [[intel::initiation_interval(4)]] for (int i = 0; i < 10; ++i) var++;
4075- }
4076-
4077- [[intel::initiation_interval(4)]] void foo1 { }
4078-
4079- template<int N>
4080- void bar() {
4081- [[intel::initiation_interval(N)]] for(;;) { }
4082- }
4083-
4084- template<int N>
4085- [[intel::initiation_interval(N)]] void bar1 { }
4086-
4087- }];
4088- }
4089-
4090- def SYCLIntelMaxConcurrencyAttrDocs : Documentation {
4091- let Category = DocCatVariable;
4092- let Heading = "intel::max_concurrency";
4093- let Content = [{
4094- This attribute applies to a loop or a function. It indicates that the
4095- loop/function should allow no more than N threads or iterations to execute it
4096- simultaneously. N must be a non negative integer. '0' indicates the
4097- max_concurrency case to be unbounded. Cannot be applied multiple times to the
4098- same loop or function, or in conjunction with ``disable_loop_pipelining``.
4099-
4100- .. code-block:: c++
4101-
4102- void foo() {
4103- int a[10];
4104- [[intel::max_concurrency(2)]] for (int i = 0; i != 10; ++i) a[i] = 0;
4105- }
4106-
4107- [[intel::max_concurrency(2)]] void foo1 { }
4108- template<int N>
4109- void bar() {
4110- [[intel::max_concurrency(N)]] for(;;) { }
4111- }
4112- template<int N>
4113- [[intel::max_concurrency(N)]] void bar1() { }
4114-
4115- }];
4116- }
4117-
41184016def SYCLIntelLoopCoalesceAttrDocs : Documentation {
41194017 let Category = DocCatVariable;
41204018 let Heading = "intel::loop_coalesce";
@@ -4154,28 +4052,6 @@ of the nested loop levels should be coalesced.
41544052 }];
41554053}
41564054
4157- def SYCLIntelDisableLoopPipeliningAttrDocs : Documentation {
4158- let Category = DocCatVariable;
4159- let Heading = "intel::disable_loop_pipelining";
4160- let Content = [{
4161- This attribute applies to a loop or a function. Takes no arguments and
4162- indicates whether the kernel should be pipelined or not. Cannot be used on the
4163- same loop or function, or in conjunction with ``speculated_iterations``,
4164- ``max_concurrency``, ``initiation_interval``, ``ivdep``,
4165- ``max_reinvocation_delay`` or ``enable_loop_pipelining`` attribute.
4166-
4167- .. code-block:: c++
4168-
4169- void foo() {
4170- int var = 0;
4171- [[intel::disable_loop_pipelining]] for (int i = 0; i < 10; ++i) var++;
4172- }
4173-
4174- [[intel::disable_loop_pipelining]] void foo1() { }
4175-
4176- }];
4177- }
4178-
41794055def SYCLIntelMaxInterleavingAttrDocs : Documentation {
41804056 let Category = DocCatVariable;
41814057 let Heading = "intel::max_interleaving";
@@ -4201,31 +4077,6 @@ Parameter N is mandatory, and may either be 0, or 1.
42014077 }];
42024078}
42034079
4204- def SYCLIntelSpeculatedIterationsAttrDocs : Documentation {
4205- let Category = DocCatVariable;
4206- let Heading = "intel::speculated_iterations";
4207- let Content = [{
4208- This attribute applies to a loop. Specifies the number of concurrent speculated
4209- iterations that will be in flight for a loop invocation (i.e. the exit
4210- condition for these iterations will not have been evaluated yet).
4211- Parameter N is mandatory, and may either be 0, or a positive integer. Cannot be
4212- used on the same loop in conjunction with disable_loop_pipelining.
4213-
4214- .. code-block:: c++
4215-
4216- void foo() {
4217- int var = 0;
4218- [[intel::speculated_iterations(4)]] for (int i = 0; i < 10; ++i) var++;
4219- }
4220-
4221- template<int N>
4222- void bar() {
4223- [[intel::speculated_iterations(N)]] for(;;) { }
4224- }
4225-
4226- }];
4227- }
4228-
42294080def SYCLIntelNofusionAttrDocs : Documentation {
42304081 let Category = DocCatVariable;
42314082 let Heading = "intel::nofusion";
@@ -4250,68 +4101,6 @@ loop should not be fused with any adjacent loop.
42504101 }];
42514102}
42524103
4253- def SYCLIntelMaxReinvocationDelayAttrDocs : Documentation {
4254- let Category = DocCatVariable;
4255- let Heading = "intel::max_reinvocation_delay";
4256- let Content = [{
4257- This attribute applies to a loop. Specifies the maximum number of cycles allowed
4258- on the delay between the launch of the last iteration of a loop invocation and
4259- the launch of the first iteration of a new loop invocation. Parameter N is
4260- mandatory, and is a positive integer. Cannot be used on the same loop in
4261- conjunction with disable_loop_pipelining.
4262-
4263- .. code-block:: c++
4264-
4265- void foo() {
4266- int var = 0;
4267- [[intel::max_reinvocation_delay(1)]]
4268- for (int i = 0; sycl::log10((float)(x)) < 10; i++) var++;
4269- }
4270-
4271- template<int N>
4272- void bar() {
4273- [[intel::max_reinvocation_delay(N)]] for(;;) { }
4274- }
4275- }];
4276- }
4277-
4278- def SYCLIntelEnableLoopPipeliningAttrDocs : Documentation {
4279- let Category = DocCatVariable;
4280- let Heading = "intel::enable_loop_pipelining";
4281- let Content = [{
4282- The ``enable_loop_pipelining`` attribute applies to a loop in SYCL device code.
4283- Takes no arguments and enables pipelining of the loop. This attribute is useful
4284- in the low-area flow, in which all loops are unpipelined by default. Cannot be
4285- used on the same loop in conjunction with ``disable_loop_pipelining`` attribute.
4286-
4287- .. code-block:: c++
4288-
4289- void bar() {
4290- int a[10];
4291- [[[intel::enable_loop_pipelining]] for (int i = 0; i != 10; ++i) a[i] = 0;
4292- }
4293-
4294- void Array(int *array, size_t n) {
4295- [[intel::enable_loop_pipelining]] for (int i = 0; i < n; ++i) array[i] = 0;
4296- }
4297-
4298- void count () {
4299- int a1[10], i = 0;
4300- [[intel::enable_loop_pipelining]] while (i < 10) {
4301- a1[i++] = 3;
4302- }
4303- }
4304-
4305- void check() {
4306- int a = 10;
4307- [[intel::enable_loop_pipelining]] do {
4308- a = a + 1;
4309- } while (a < 20);
4310- }
4311-
4312- }];
4313- }
4314-
43154104def SYCLIntelLoopFuseDocs : Documentation {
43164105 let Category = DocCatFunction;
43174106 let Heading = "loop_fuse, loop_fuse_independent";
0 commit comments