[wwwdocs] gcc-17: Create porting_to.html and document the AVX10.2 scalar SAT CVT rename
"Hu, Lin1" <[email protected]> Mon, 3 Aug 2026 16:48:23 +0800
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <[email protected]> |
Hi,
This follows up on the PR126581 discussion [1].
r16-9456 renamed the AVX10.2 scalar saturating conversion intrinsics from
the _ep[i|u]{32,64} suffix to _[i|u]{32,64}. The old names are kept on the
release branches but are gone in GCC 17, so document what to use instead.
Ok for wwwdocs?
[1] https://gcc.gnu.org/pipermail/gcc-patches/2026-August/726127.html
BRs,
Lin
---
htdocs/gcc-17/changes.html | 15 ++++--
htdocs/gcc-17/porting_to.html | 98 +++++++++++++++++++++++++++++++++++
2 files changed, 110 insertions(+), 3 deletions(-)
create mode 100644 htdocs/gcc-17/porting_to.html
diff --git a/htdocs/gcc-17/changes.html b/htdocs/gcc-17/changes.html
index 3c3a24bb..9ae53b86 100644
--- a/htdocs/gcc-17/changes.html
+++ b/htdocs/gcc-17/changes.html
@@ -17,11 +17,9 @@
<p>
This page is a "brief" summary of some of the huge number of improvements
in GCC 17.
-<!--
You may also want to check out our
<a href="porting_to.html">Porting to GCC 17</a> page and the
<a href="../onlinedocs/index.html#current">full GCC documentation</a>.
--->
</p>
<p>Note: GCC 17 has not been released yet, so this document is
@@ -186,7 +184,18 @@ for general information.</p>
</li>
</ul>
-<!-- <h3 id="x86">IA-32/x86-64</h3> -->
+<h3 id="x86">IA-32/x86-64</h3>
+
+<ul>
+ <li>The AVX10.2 scalar saturating conversion intrinsics have been renamed
+ from the <code>_ep[i|u]{32,64}</code> suffix, which denotes packed
+ elements, to <code>_[i|u]{32,64}</code>, with <code>_si{32,64}</code>
+ aliases for the signed variants. The old names were never accepted by
+ other x86 compilers. See the
+ <a href="porting_to.html#x86_avx10_2_scalar_satcvt">porting guide</a>
+ for the list of affected intrinsics.
+ </li>
+</ul>
<!-- <h3 id="mips">MIPS</h3> -->
diff --git a/htdocs/gcc-17/porting_to.html b/htdocs/gcc-17/porting_to.html
new file mode 100644
index 00000000..4a65fd52
--- /dev/null
+++ b/htdocs/gcc-17/porting_to.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Porting to GCC 17</title>
+<link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css">
+</head>
+
+<body>
+<h1>Porting to GCC 17</h1>
+
+<p>
+The GCC 17 release series differs from previous GCC releases in
+<a href="changes.html">a number of ways</a>. Some of these are a result
+of bug fixing, and some old behaviors have been intentionally changed
+to support new standards, or relaxed in standards-conforming ways to
+facilitate compilation or run-time performance.
+</p>
+
+<p>
+Some of these changes are user visible and can cause grief when
+porting to GCC 17. This document is an effort to identify common issues
+and provide solutions. Let us know if you have suggestions for improvements!
+</p>
+
+<h2 id="x86">IA-32/x86-64 issues</h2>
+
+<h3 id="x86_avx10_2_scalar_satcvt">Renamed AVX10.2 scalar saturating conversion intrinsics</h3>
+
+<p>The AVX10.2 scalar saturating conversion intrinsics were originally named
+with an <code>_ep[i|u]{32,64}</code> suffix. That suffix denotes packed
+elements, whereas these intrinsics convert a single scalar value and return a
+scalar integer, so the names did not follow the convention used by scalar
+conversion intrinsics since AVX-512F. The old names were never accepted by
+other x86 compilers. GCC 17 renames them to use the
+<code>_[i|u]{32,64}</code> suffix, with <code>_si{32,64}</code> aliases
+for the signed variants:</p>
+
+<table>
+ <tr>
+ <th>Removed in GCC 17</th> <th>Use instead</th>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_sd_epi32</code></td> <td><code>_mm_cvtts_sd_i32</code>, <code>_mm_cvtts_sd_si32</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_sd_epu32</code></td> <td><code>_mm_cvtts_sd_u32</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_ss_epi32</code></td> <td><code>_mm_cvtts_ss_i32</code>, <code>_mm_cvtts_ss_si32</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_ss_epu32</code></td> <td><code>_mm_cvtts_ss_u32</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_roundsd_epi32</code></td> <td><code>_mm_cvtts_roundsd_i32</code>, <code>_mm_cvtts_roundsd_si32</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_roundsd_epu32</code></td> <td><code>_mm_cvtts_roundsd_u32</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_roundss_epi32</code></td> <td><code>_mm_cvtts_roundss_i32</code>, <code>_mm_cvtts_roundss_si32</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_roundss_epu32</code></td> <td><code>_mm_cvtts_roundss_u32</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_sd_epi64</code></td> <td><code>_mm_cvtts_sd_i64</code>, <code>_mm_cvtts_sd_si64</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_sd_epu64</code></td> <td><code>_mm_cvtts_sd_u64</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_ss_epi64</code></td> <td><code>_mm_cvtts_ss_i64</code>, <code>_mm_cvtts_ss_si64</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_ss_epu64</code></td> <td><code>_mm_cvtts_ss_u64</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_roundsd_epi64</code></td> <td><code>_mm_cvtts_roundsd_i64</code>, <code>_mm_cvtts_roundsd_si64</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_roundsd_epu64</code></td> <td><code>_mm_cvtts_roundsd_u64</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_roundss_epi64</code></td> <td><code>_mm_cvtts_roundss_i64</code>, <code>_mm_cvtts_roundss_si64</code></td>
+ </tr>
+ <tr>
+ <td><code>_mm_cvtts_roundss_epu64</code></td> <td><code>_mm_cvtts_roundss_u64</code></td>
+ </tr>
+</table>
+
+<p>The old names are still accepted on the GCC 15 and GCC 16 release branches,
+so code can be updated before switching to GCC 17.</p>
+
+</body>
+</html>
--
2.31.1