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

Incorporate Bryce's review feedback #62

Merged
merged 11 commits into from
Mar 30, 2018
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Document Number: NXXXX+1
Document Number: N4743
Date: 2018-04-02
Revises:
Project: Programming Language C++
Expand All @@ -9,11 +9,11 @@

# Parallelism TS Editor's Report, post-Jacksonville mailing

NXXXX is the proposed working draft of Parallelism TS Version 2. It contains normative changes as directed by the ISO C++ Standards Committee at the 2018 Jacksonville meeting and editorial changes to the Parallelism TS.
N4742 is the proposed working draft of Parallelism TS Version 2. It contains normative changes as directed by the ISO C++ Standards Committee at the 2018 Jacksonville meeting and editorial changes to the Parallelism TS.

NXXXX updates the previous draft, N4725, published in the pre-Jacksonville mailing.
N4742 updates the previous draft, N4725, published in the pre-Jacksonville mailing.

NYYYY is document NXXXX reformatted as a PDTS draft document.
N4744 is document N4742 reformatted as a PDTS document.

## Normative Changes

Expand All @@ -26,5 +26,5 @@ NYYYY is document NXXXX reformatted as a PDTS draft document.

# Acknowledgements

Thanks to Alisdair Meredith, Matthias Kretz, and Marshall Clow for reviewing and suggesting editorial changes.
Thanks to Alisdair Meredith, Matthias Kretz, Marshall Clow, and Bryce Lelbach for reviewing and suggesting editorial changes.

10 changes: 5 additions & 5 deletions algorithms.html
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ <h1>Header <code>&lt;experimental/algorithm&gt;</code> synopsis</h1>
<cxx-ref insynopsis="" to="parallel.alg.inductions"></cxx-ref> Support for inductions
template&lt;class T&gt;
<em>unspecified</em> induction(T&amp;&amp; var);
template&lt;class T&gt;
template&lt;class T<ins>, class S</ins>&gt;
<em>unspecified</em> induction(T&amp;&amp; var, S stride);

<cxx-ref insynopsis="" to="parallel.alg.forloop"></cxx-ref> for_loop
Expand Down Expand Up @@ -216,7 +216,7 @@ <h1>Reductions</h1>

<cxx-requires>T shall meet the requirements of <code>CopyConstructible</code> and <code>MoveAssignable</code>. The expression <code>var = combiner(var, var)</code> shall be well-formed.</cxx-requires>

<cxx-returns>a reduction object of unspecified type having reduction value type <code>T</code>, reduction identity <code>identity</code>, combiner function object <code>combiner</code>, and using the object referenced by <code>var</code> as its live-out object.</cxx-returns>
<cxx-returns><ins>A</ins><del>a</del> reduction object of unspecified type having reduction value type <code>T</code>, reduction identity <code>identity</code>, combiner function object <code>combiner</code>, and using the object referenced by <code>var</code> as its live-out object.</cxx-returns>
</cxx-function>

<cxx-function>
Expand All @@ -237,7 +237,7 @@ <h1>Reductions</h1>

<cxx-requires>T shall meet the requirements of <code>CopyConstructible</code> and <code>MoveAssignable</code>.</cxx-requires>

<cxx-returns>a reduction object of unspecified type having reduction value type <code>T</code>, reduction identity and combiner operation as specified in table <cxx-ref to="reduction-identities-and-combiner-operations"></cxx-ref> and using the object referenced by <code>var</code> as its live-out object.</cxx-returns>
<cxx-returns><ins>A</ins><del>a</del> reduction object of unspecified type having reduction value type <code>T</code>, reduction identity and combiner operation as specified in table <cxx-ref to="reduction-identities-and-combiner-operations"></cxx-ref> and using the object referenced by <code>var</code> as its live-out object.</cxx-returns>

<table is="cxx-table" class="column-rules" id=reduction-identities-and-combiner-operations>
<caption>Reduction identities and combiner operations</caption>
Expand Down Expand Up @@ -329,7 +329,7 @@ <h1>Inductions</h1>
<em>unspecified</em> induction(T&amp;&amp; var, S stride);</cxx-signature>

<cxx-returns>
an induction object with induction value type <code>remove_cv_t&lt;remove_reference_t&lt;T&gt;&gt;</code>,
<ins>A</ins><del>a</del>n induction object with induction value type <code>remove_cv_t&lt;remove_reference_t&lt;T&gt;&gt;</code>,
initial value <code>var</code>, and (if specified) stride <code>stride</code>. If <code>T</code> is an lvalue reference
to non-<code>const</code> type, then the object referenced by <code>var</code> becomes the live-out object for the
induction object; otherwise there is no live-out object.
Expand Down Expand Up @@ -472,7 +472,7 @@ <h1>No vec</h1>
</cxx-effects>

<cxx-returns>
the result of <code>f</code>.
<ins>T</ins><del>t</del>he result of <code>f</code>.
</cxx-returns>

<cxx-notes>
Expand Down
18 changes: 9 additions & 9 deletions data_parallel_types.html
Original file line number Diff line number Diff line change
Expand Up @@ -661,7 +661,7 @@ <h1><ins>Class templates <code>const_where_expression</code> and <code>where_exp

<cxx-requires>
<ins>
If the template parameter <code>Flags</code> is <code>vector_aligned_tag</code>, <code>mem</code> shall point to storage aligned by <code>memory_alignment_v&lt;T, U&gt;</code>. If the template parameter <code>Flags</code> is <code>overaligned_tag&lt;N&gt;</code>, <code>mem</code> shall point to storage aligned by <code>N</code>. If the template parameter <code>Flags</code> is <code>element_aligned_tag</code>, <code>mem</code> shall point to storage aligned by <code>alignof(U)</code>. If <code>M</code> is not <code>bool</code>, the largest <em>i</em> &#8714; <code>[0, M::size())</code> where <code>mask[i]</code> is <code>true</code> is less than the number of values pointed to by <code>mem</code>.
If the template parameter <code>Flags</code> is <code>vector_aligned_tag</code>, <code>mem</code> shall point to storage aligned by <code>memory_alignment_v&lt;T, U&gt;</code>. If the template parameter <code>Flags</code> is <code>overaligned_tag&lt;N&gt;</code>, <code>mem</code> shall point to storage aligned by <code>N</code>. If the template parameter <code>Flags</code> is <code>element_aligned_tag</code>, <code>mem</code> shall point to storage aligned by <code>alignof(U)</code>. If <code>M</code> is not <code>bool</code>, the largest <code>i</code> &#8714; <code>[0, M::size())</code> where <code>mask[i]</code> is <code>true</code> is less than the number of values pointed to by <code>mem</code>.
</ins>
</cxx-requires>

Expand Down Expand Up @@ -780,7 +780,7 @@ <h1><ins>Class templates <code>const_where_expression</code> and <code>where_exp

<cxx-requires>
<ins>
If the template parameter <code>Flags</code> is <code>vector_aligned_tag</code>, <code>mem</code> shall point to storage aligned by <code>memory_alignment_v&lt;T, U&gt;</code>. If the template parameter <code>Flags</code> is <code>overaligned_tag&lt;N&gt;</code>, <code>mem</code> shall point to storage aligned by <code>N</code>. If the template parameter <code>Flags</code> is <code>element_aligned_tag</code>, <code>mem</code> shall point to storage aligned by <code>alignof(U)</code>. If <code>is_simd_flag_type_v&lt;U&gt;</code> is <code>true</code>, for all selected indices <em>i</em>, <em>i</em> shall be less than the number of values pointed to by <code>mem</code>.
If the template parameter <code>Flags</code> is <code>vector_aligned_tag</code>, <code>mem</code> shall point to storage aligned by <code>memory_alignment_v&lt;T, U&gt;</code>. If the template parameter <code>Flags</code> is <code>overaligned_tag&lt;N&gt;</code>, <code>mem</code> shall point to storage aligned by <code>N</code>. If the template parameter <code>Flags</code> is <code>element_aligned_tag</code>, <code>mem</code> shall point to storage aligned by <code>alignof(U)</code>. If <code>is_simd_flag_type_v&lt;U&gt;</code> is <code>true</code>, for all selected indices <code>i</code>, <code>i</code> shall be less than the number of values pointed to by <code>mem</code>.
</ins>
</cxx-requires>

Expand Down Expand Up @@ -1582,7 +1582,7 @@ <h1><ins>Unary operators</ins></h1>

<cxx-remarks>
<ins>
<code>simd::operator~()</code> shall not participate in overload resolution unless <code>T</code> is an integral type.
This operator shall not participate in overload resolution unless <code>T</code> is an integral type.
</ins>
</cxx-remarks>
</cxx-function>
Expand Down Expand Up @@ -2278,7 +2278,7 @@ <h1><ins>Algorithms</ins></h1>

<cxx-returns>
<ins>
A pair initialized with
A <code>pair</code> initialized with

<ul>
<li>
Expand All @@ -2290,7 +2290,7 @@ <h1><ins>Algorithms</ins></h1>

<li>
<ins>
the result of element-wise application of <code>std::max(a[i], b[i])</code> for all <code>i</code> &#8714; <code>[0, size())</code> in the <code>second</code> member, and
the result of element-wise application of <code>std::max(a[i], b[i])</code> for all <code>i</code> &#8714; <code>[0, size())</code> in the <code>second</code> member.

</ins>
</li>
Expand Down Expand Up @@ -2738,7 +2738,7 @@ <h1><ins>Comparisons</ins></h1>
<h1><ins>Reductions</ins></h1>

<cxx-function>
<cxx-signature><ins>template&lt;class T, class Abi&gt; bool all_of(const simd_mask&lt;T, abi&gt;& k) noexcept;</ins></cxx-signature>
<cxx-signature><ins>template&lt;class T, class Abi&gt; bool all_of(const simd_mask&lt;T, Abi&gt;& k) noexcept;</ins></cxx-signature>

<cxx-returns>
<ins>
Expand All @@ -2748,7 +2748,7 @@ <h1><ins>Reductions</ins></h1>
</cxx-function>

<cxx-function>
<cxx-signature><ins>template&lt;class T, class Abi&gt; bool any_of(const simd_mask&lt;T, abi&gt;& k) noexcept;</ins></cxx-signature>
<cxx-signature><ins>template&lt;class T, class Abi&gt; bool any_of(const simd_mask&lt;T, Abi&gt;& k) noexcept;</ins></cxx-signature>

<cxx-returns>
<ins>
Expand All @@ -2758,7 +2758,7 @@ <h1><ins>Reductions</ins></h1>
</cxx-function>

<cxx-function>
<cxx-signature><ins>template&lt;class T, class Abi&gt; bool none_of(const simd_mask&lt;T, abi&gt;& k) noexcept;</ins></cxx-signature>
<cxx-signature><ins>template&lt;class T, class Abi&gt; bool none_of(const simd_mask&lt;T, Abi&gt;& k) noexcept;</ins></cxx-signature>

<cxx-returns>
<ins>
Expand All @@ -2768,7 +2768,7 @@ <h1><ins>Reductions</ins></h1>
</cxx-function>

<cxx-function>
<cxx-signature><ins>template&lt;class T, class Abi&gt; bool some_of(const simd_mask&lt;T, abi&gt;& k) noexcept;</ins></cxx-signature>
<cxx-signature><ins>template&lt;class T, class Abi&gt; bool some_of(const simd_mask&lt;T, Abi&gt;& k) noexcept;</ins></cxx-signature>

<cxx-returns>
<ins>
Expand Down
4 changes: 2 additions & 2 deletions execution_policies.html
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ <h1>Vector execution policy</h1>
<h1>Execution policy objects</h1>

<pre>
inline constexpr execution::unsequenced_policy unseq{};
inline constexpr execution::vector_policy vec{};
inline constexpr execution::unsequenced_policy unseq{ <ins><i>unspecified</i></ins> };
inline constexpr execution::vector_policy vec{ <ins><i>unspecified</i></ins> };
</pre>

<p>The header <code>&lt;experimental/execution&gt;</code> declares a global object associated with each type of execution policy defined by this Technical Specification.</p>
Expand Down
2 changes: 1 addition & 1 deletion front_matter.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<cxx-titlepage stage="draft">
<cxx-docnum>NXXXX</cxx-docnum>
<cxx-docnum>N4742</cxx-docnum>
<cxx-project-number>19570</cxx-project-number>
<time pubdate="">2018-04-02</time>
<cxx-revises><a href="http://wg21.link/N4725">N4725</a></cxx-revises>
Expand Down
4 changes: 2 additions & 2 deletions task_block.html
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@ <h1>Class <code>task_block</code></h1>
</p>

<p>
A <code>task_block</code> is <em>active</em> if it was created by the nearest enclosing task block, where “task block” refers to an
invocation of <code>define_task_block</code> or <code>define_task_block_restore_thread</code> and “nearest enclosing” means the most
A <code>task_block</code> is <em>active</em> if it was created by the <ins><em>nearest enclosing</em></ins><del>nearest enclosing</del> <ins><em>task block</em></ins><del>task block</del>, where <ins><em>task block</em></ins><del>“task block”</del> refers to an
invocation of <code>define_task_block</code> or <code>define_task_block_restore_thread</code> and <ins><em>nearest enclosing</em></ins><del>“nearest enclosing”</del> means the most
recent invocation that has not yet completed. Code designated for execution in another thread by means other
than the facilities in this section (e.g., using <code>thread</code> or <code>async</code>) are not enclosed in the task block and a
<code>task_block</code> passed to (or captured by) such code is not active within that code. Performing any operation on a
Expand Down