[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&nbsp;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