[clang] [llvm] [X86][AVX10.2] Support AVX10.2-SATCVT-DS new instructions. (PR #102592)
Malay Sanghi via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 9 21:36:22 PDT 2024
https://github.com/MalaySanghi updated https://github.com/llvm/llvm-project/pull/102592
>From e6c898daa4fc81438bed6060df933ee37ed84342 Mon Sep 17 00:00:00 2001
From: Malay Sanghi <malay.sanghi at intel.com>
Date: Mon, 5 Aug 2024 02:07:24 -0700
Subject: [PATCH 1/7] [X86][AVX10.2] Support saturated converts
Ref.: https://cdrdv2.intel.com/v1/dl/getContent/828965
---
clang/include/clang/Basic/BuiltinsX86.def | 30 +
clang/include/clang/Basic/BuiltinsX86_64.def | 6 +
clang/lib/Headers/CMakeLists.txt | 2 +
clang/lib/Headers/avx10_2_512satcvtdsintrin.h | 302 +++++
clang/lib/Headers/avx10_2satcvtdsintrin.h | 453 +++++++
clang/lib/Headers/immintrin.h | 8 +
clang/lib/Sema/SemaX86.cpp | 26 +
.../X86/avx10_2_512satcvtds-builtins-errors.c | 52 +
.../avx10_2_512satcvtds-builtins-x64-error.c | 76 ++
.../X86/avx10_2_512satcvtds-builtins-x64.c | 184 +++
.../X86/avx10_2_512satcvtds-builtins.c | 183 +++
.../X86/avx10_2satcvtds-builtins-errors.c | 57 +
.../X86/avx10_2satcvtds-builtins-x64.c | 223 ++++
.../CodeGen/X86/avx10_2satcvtds-builtins.c | 220 ++++
llvm/include/llvm/IR/IntrinsicsX86.td | 100 ++
llvm/lib/Target/X86/X86ISelLowering.cpp | 23 +-
llvm/lib/Target/X86/X86ISelLowering.h | 18 +
llvm/lib/Target/X86/X86InstrAVX10.td | 311 +++++
llvm/lib/Target/X86/X86InstrFragmentsSIMD.td | 12 +
llvm/lib/Target/X86/X86IntrinsicsInfo.h | 66 +-
.../X86/avx10_2_512satcvtds-intrinsics.ll | 548 ++++++++
.../CodeGen/X86/avx10_2fptosi_satcvtds.ll | 115 ++
.../CodeGen/X86/avx10_2satcvtds-intrinsics.ll | 1098 ++++++++++++++++
.../X86/avx10_2satcvtds-x64-intrinsics.ll | 58 +
.../Disassembler/X86/avx10.2-satcvtds-32.txt | 1043 +++++++++++++++
.../Disassembler/X86/avx10.2-satcvtds-64.txt | 1171 +++++++++++++++++
llvm/test/MC/X86/avx10_2satcvtds-32-att.s | 1042 +++++++++++++++
llvm/test/MC/X86/avx10_2satcvtds-32-intel.s | 1042 +++++++++++++++
llvm/test/MC/X86/avx10_2satcvtds-64-att.s | 1170 ++++++++++++++++
llvm/test/MC/X86/avx10_2satcvtds-64-intel.s | 1170 ++++++++++++++++
llvm/test/TableGen/x86-fold-tables.inc | 160 +++
31 files changed, 10966 insertions(+), 3 deletions(-)
create mode 100644 clang/lib/Headers/avx10_2_512satcvtdsintrin.h
create mode 100644 clang/lib/Headers/avx10_2satcvtdsintrin.h
create mode 100644 clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-errors.c
create mode 100755 clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64-error.c
create mode 100644 clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
create mode 100644 clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
create mode 100644 clang/test/CodeGen/X86/avx10_2satcvtds-builtins-errors.c
create mode 100644 clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c
create mode 100644 clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c
create mode 100644 llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll
create mode 100644 llvm/test/CodeGen/X86/avx10_2fptosi_satcvtds.ll
create mode 100644 llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
create mode 100644 llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll
create mode 100644 llvm/test/MC/Disassembler/X86/avx10.2-satcvtds-32.txt
create mode 100644 llvm/test/MC/Disassembler/X86/avx10.2-satcvtds-64.txt
create mode 100644 llvm/test/MC/X86/avx10_2satcvtds-32-att.s
create mode 100644 llvm/test/MC/X86/avx10_2satcvtds-32-intel.s
create mode 100644 llvm/test/MC/X86/avx10_2satcvtds-64-att.s
create mode 100644 llvm/test/MC/X86/avx10_2satcvtds-64-intel.s
diff --git a/clang/include/clang/Basic/BuiltinsX86.def b/clang/include/clang/Basic/BuiltinsX86.def
index a696cf117908e2..a8639c341d0a43 100644
--- a/clang/include/clang/Basic/BuiltinsX86.def
+++ b/clang/include/clang/Basic/BuiltinsX86.def
@@ -2122,6 +2122,36 @@ TARGET_BUILTIN(__builtin_ia32_vpdpwuud256, "V8iV8iV8iV8i", "nV:256:", "avxvnniin
TARGET_BUILTIN(__builtin_ia32_vpdpwuuds128, "V4iV4iV4iV4i", "nV:128:", "avxvnniint16|avx10.2-256")
TARGET_BUILTIN(__builtin_ia32_vpdpwuuds256, "V8iV8iV8iV8i", "nV:256:", "avxvnniint16|avx10.2-256")
+// AVX10.2 SATCVT-DS
+TARGET_BUILTIN(__builtin_ia32_vcvttssd2si32, "iV2dIi", "ncV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttssd2usi32, "UiV2dIi", "ncV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttsss2si32, "iV4fIi", "ncV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttsss2usi32, "UiV4fIi", "ncV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2dqs128_mask, "V4iV2dV4iUc", "nV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2dqs256_round_mask, "V4iV4dV4iUcIi", "nV:256:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2dqs512_round_mask, "V8iV8dV8iUcIi", "nV:512:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2udqs128_mask, "V4iV2dV4iUc", "nV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2udqs256_round_mask, "V4iV4dV4iUcIi", "nV:256:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2udqs512_round_mask, "V8iV8dV8iUcIi", "nV:512:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2qqs128_mask, "V2OiV2dV2OiUc", "nV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2qqs256_round_mask, "V4OiV4dV4OiUcIi", "nV:256:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2qqs512_round_mask, "V8OiV8dV8OiUcIi", "nV:512:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2uqqs128_mask, "V2OiV2dV2OiUc", "nV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2uqqs256_round_mask, "V4OiV4dV4OiUcIi", "nV:256:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttpd2uqqs512_round_mask, "V8OiV8dV8OiUcIi", "nV:512:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2dqs128_mask, "V4iV4fV4iUc", "nV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2dqs256_round_mask, "V8iV8fV8iUcIi", "nV:256:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2dqs512_round_mask, "V16iV16fV16iUsIi", "nV:512:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2udqs128_mask, "V4iV4fV4iUc", "nV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2udqs256_round_mask, "V8iV8fV8iUcIi", "nV:256:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2udqs512_round_mask, "V16iV16fV16iUsIi", "nV:512:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2qqs128_mask, "V2OiV4fV2OiUc", "nV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2qqs256_round_mask, "V4OiV4fV4OiUcIi", "nV:256:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2qqs512_round_mask, "V8OiV8fV8OiUcIi", "nV:512:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2uqqs128_mask, "V2OiV4fV2OiUc", "nV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2uqqs256_round_mask, "V4OiV4fV4OiUcIi", "nV:256:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttps2uqqs512_round_mask, "V8OiV8fV8OiUcIi", "nV:512:", "avx10.2-512")
+
// AVX-NE-CONVERT
TARGET_BUILTIN(__builtin_ia32_vbcstnebf162ps128, "V4fyC*", "nV:128:", "avxneconvert")
TARGET_BUILTIN(__builtin_ia32_vbcstnebf162ps256, "V8fyC*", "nV:256:", "avxneconvert")
diff --git a/clang/include/clang/Basic/BuiltinsX86_64.def b/clang/include/clang/Basic/BuiltinsX86_64.def
index 5e00916d4b25ae..ed9b17b8bd7b8e 100644
--- a/clang/include/clang/Basic/BuiltinsX86_64.def
+++ b/clang/include/clang/Basic/BuiltinsX86_64.def
@@ -99,6 +99,12 @@ TARGET_BUILTIN(__builtin_ia32_vcvttsh2si64, "OiV8xIi", "ncV:128:", "avx512fp16")
TARGET_BUILTIN(__builtin_ia32_vcvttsh2usi64, "UOiV8xIi", "ncV:128:", "avx512fp16")
TARGET_BUILTIN(__builtin_ia32_directstore_u64, "vULi*ULi", "n", "movdiri")
+// AVX10.2 SATCVT-DS
+TARGET_BUILTIN(__builtin_ia32_vcvttssd2si64, "OiV2dIi", "ncV:128:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttssd2usi64, "UOiV2dIi", "ncV:128:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttsss2si64, "OiV4fIi", "ncV:128:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttsss2usi64, "UOiV4fIi", "ncV:128:", "avx10.2-512")
+
// UINTR
TARGET_BUILTIN(__builtin_ia32_clui, "v", "n", "uintr")
TARGET_BUILTIN(__builtin_ia32_stui, "v", "n", "uintr")
diff --git a/clang/lib/Headers/CMakeLists.txt b/clang/lib/Headers/CMakeLists.txt
index b61aeca6bbc910..9981290628697c 100644
--- a/clang/lib/Headers/CMakeLists.txt
+++ b/clang/lib/Headers/CMakeLists.txt
@@ -150,9 +150,11 @@ set(x86_files
avx10_2_512minmaxintrin.h
avx10_2_512niintrin.h
avx10_2_512satcvtintrin.h
+ avx10_2_512satcvtdsintrin.h
avx10_2minmaxintrin.h
avx10_2niintrin.h
avx10_2satcvtintrin.h
+ avx10_2satcvtdsintrin.h
avx2intrin.h
avx512bf16intrin.h
avx512bitalgintrin.h
diff --git a/clang/lib/Headers/avx10_2_512satcvtdsintrin.h b/clang/lib/Headers/avx10_2_512satcvtdsintrin.h
new file mode 100644
index 00000000000000..e8b815653c3d6e
--- /dev/null
+++ b/clang/lib/Headers/avx10_2_512satcvtdsintrin.h
@@ -0,0 +1,302 @@
+/*===----- avx10_2_512satcvtdsintrin.h - AVX10_2_512SATCVTDS intrinsics ----===
+ *
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+ * See https://llvm.org/LICENSE.txt for license information.
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+ *
+ *===-----------------------------------------------------------------------===
+ */
+#ifndef __IMMINTRIN_H
+#error \
+ "Never use <avx10_2_512satcvtdsintrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef __AVX10_2_512SATCVTDSINTRIN_H
+#define __AVX10_2_512SATCVTDSINTRIN_H
+
+/* Define the default attributes for the functions in this file. */
+#define __DEFAULT_FN_ATTRS \
+ __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-512"), \
+ __min_vector_width__(512)))
+
+// 512 bit : Double -> Int
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm512_cvttspd_epi32(__m512d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask(
+ (__v8df)A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm512_mask_cvttspd_epi32(__m256i W, __mmask8 U, __m512d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask(
+ (__v8df)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm512_maskz_cvttspd_epi32(__mmask8 U, __m512d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask(
+ (__v8df)A, (__v8si)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm512_cvtts_roundpd_epi32(A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8si)_mm256_undefined_si256(), (__mmask8) - 1, \
+ (const int)(R)))
+
+#define _mm512_mask_cvtts_roundpd_epi32(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8si)(__m256i)(W), (__mmask8)(U), \
+ (const int)(R)))
+
+#define _mm512_maskz_cvtts_roundpd_epi32(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8si)_mm256_setzero_si256(), (__mmask8)(U), \
+ (const int)(R)))
+
+// 512 bit : Double -> uInt
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm512_cvttspd_epu32(__m512d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask(
+ (__v8df)A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm512_mask_cvttspd_epu32(__m256i W, __mmask8 U, __m512d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask(
+ (__v8df)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm512_maskz_cvttspd_epu32(__mmask8 U, __m512d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask(
+ (__v8df)A, (__v8si)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm512_cvtts_roundpd_epu32(A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8si)_mm256_undefined_si256(), (__mmask8) - 1, \
+ (const int)(R)))
+
+#define _mm512_mask_cvtts_roundpd_epu32(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8si)(__m256i)(W), (__mmask8)(U), \
+ (const int)(R)))
+
+#define _mm512_maskz_cvtts_roundpd_epu32(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8si)_mm256_setzero_si256(), (__mmask8)(U), \
+ (const int)(R)))
+
+#ifdef __x86_64__
+// 512 bit : Double -> Long
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttspd_epi64(__m512d A) {
+ return ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask(
+ (__v8df)A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_mask_cvttspd_epi64(__m512i W, __mmask8 U, __m512d A) {
+ return ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask(
+ (__v8df)A, (__v8di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_maskz_cvttspd_epi64(__mmask8 U, __m512d A) {
+ return ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask(
+ (__v8df)A, (__v8di)_mm512_setzero_si512(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm512_cvtts_roundpd_epi64(A, R) \
+ ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8di)_mm512_undefined_epi32(), (__mmask8) - 1, \
+ (const int)(R)))
+
+#define _mm512_mask_cvtts_roundpd_epi64(W, U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8di)(__m512i)(W), (__mmask8)(U), \
+ (const int)(R)))
+
+#define _mm512_maskz_cvtts_roundpd_epi64(U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8di)_mm512_setzero_si512(), (__mmask8)(U), \
+ (const int)(R)))
+
+// 512 bit : Double -> ULong
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttspd_epu64(__m512d A) {
+ return ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask(
+ (__v8df)A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_mask_cvttspd_epu64(__m512i W, __mmask8 U, __m512d A) {
+ return ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask(
+ (__v8df)A, (__v8di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_maskz_cvttspd_epu64(__mmask8 U, __m512d A) {
+ return ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask(
+ (__v8df)A, (__v8di)_mm512_setzero_si512(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm512_cvtts_roundpd_epu64(A, R) \
+ ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8di)_mm512_undefined_epi32(), (__mmask8) - 1, \
+ (const int)(R)))
+
+#define _mm512_mask_cvtts_roundpd_epu64(W, U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8di)(__m512i)(W), (__mmask8)(U), \
+ (const int)(R)))
+
+#define _mm512_maskz_cvtts_roundpd_epu64(U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( \
+ (__v8df)(__m512d)(A), (__v8di)_mm512_setzero_si512(), (__mmask8)(U), \
+ (const int)(R)))
+
+#endif
+
+// 512 bit: Float -> int
+static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttsps_epi32(__m512 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask(
+ (__v16sf)(A), (__v16si)_mm512_undefined_epi32(), (__mmask16)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_mask_cvttsps_epi32(__m512i W, __mmask16 U, __m512 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask(
+ (__v16sf)(A), (__v16si)(W), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_maskz_cvttsps_epi32(__mmask16 U, __m512 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask(
+ (__v16sf)(A), (__v16si)_mm512_setzero_si512(), U,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm512_cvtts_roundps_epi32(A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( \
+ (__v16sf)(__m512)(A), (__v16si)_mm512_undefined_epi32(), \
+ (__mmask16) - 1, (const int)(R)))
+
+#define _mm512_mask_cvtts_roundps_epi32(W, U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( \
+ (__v16sf)(__m512)(A), (__v16si)(__m512i)(W), (__mmask16)(U), \
+ (const int)(R)))
+
+#define _mm512_maskz_cvtts_roundps_epi32(U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( \
+ (__v16sf)(__m512)(A), (__v16si)_mm512_setzero_si512(), (__mmask16)(U), \
+ (const int)(R)))
+
+// 512 bit: Float -> uint
+static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttsps_epu32(__m512 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask(
+ (__v16sf)(A), (__v16si)_mm512_undefined_epi32(), (__mmask16)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_mask_cvttsps_epu32(__m512i W, __mmask16 U, __m512 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask(
+ (__v16sf)(A), (__v16si)(W), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_maskz_cvttsps_epu32(__mmask16 U, __m512 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask(
+ (__v16sf)(A), (__v16si)_mm512_setzero_si512(), U,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm512_cvtts_roundps_epu32(A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( \
+ (__v16sf)(__m512)(A), (__v16si)_mm512_undefined_epi32(), \
+ (__mmask16) - 1, (const int)(R)))
+
+#define _mm512_mask_cvtts_roundps_epu32(W, U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( \
+ (__v16sf)(__m512)(A), (__v16si)(__m512i)(W), (__mmask16)(U), \
+ (const int)(R)))
+
+#define _mm512_maskz_cvtts_roundps_epu32(U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( \
+ (__v16sf)(__m512)(A), (__v16si)_mm512_setzero_si512(), (__mmask16)(U), \
+ (const int)(R)))
+
+#ifdef __x86_64__
+// 512 bit : float -> long
+static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttsps_epi64(__m256 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask(
+ (__v8sf)A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_mask_cvttsps_epi64(__m512i W, __mmask8 U, __m256 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask(
+ (__v8sf)A, (__v8di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_maskz_cvttsps_epi64(__mmask8 U, __m256 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask(
+ (__v8sf)A, (__v8di)_mm512_setzero_si512(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm512_cvtts_roundps_epi64(A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( \
+ (__v8sf)(__m256)(A), (__v8di)_mm512_undefined_epi32(), (__mmask8) - 1, \
+ (const int)(R)))
+
+#define _mm512_mask_cvtts_roundps_epi64(W, U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( \
+ (__v8sf)(__m256)(A), (__v8di)(__m512i)(W), (__mmask8)(U), \
+ (const int)(R)))
+
+#define _mm512_maskz_cvtts_roundps_epi64(U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( \
+ (__v8sf)(__m256)(A), (__v8di)_mm512_setzero_si512(), (__mmask8)(U), \
+ (const int)(R)))
+
+// 512 bit : float -> ulong
+static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttsps_epu64(__m256 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask(
+ (__v8sf)A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_mask_cvttsps_epu64(__m512i W, __mmask8 U, __m256 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask(
+ (__v8sf)A, (__v8di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m512i __DEFAULT_FN_ATTRS
+_mm512_maskz_cvttsps_epu64(__mmask8 U, __m256 A) {
+ return ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask(
+ (__v8sf)A, (__v8di)_mm512_setzero_si512(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm512_cvtts_roundps_epu64(A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( \
+ (__v8sf)(__m256)(A), (__v8di)_mm512_undefined_epi32(), (__mmask8) - 1, \
+ (const int)(R)))
+
+#define _mm512_mask_cvtts_roundps_epu64(W, U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( \
+ (__v8sf)(__m256)(A), (__v8di)(__m512i)(W), (__mmask8)(U), \
+ (const int)(R)))
+
+#define _mm512_maskz_cvtts_roundps_epu64(U, A, R) \
+ ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( \
+ (__v8sf)(__m256)(A), (__v8di)_mm512_setzero_si512(), (__mmask8)(U), \
+ (const int)(R)))
+#endif
+
+#undef __DEFAULT_FN_ATTRS
+#endif // __AVX10_2_512SATCVTDSINTRIN_H
diff --git a/clang/lib/Headers/avx10_2satcvtdsintrin.h b/clang/lib/Headers/avx10_2satcvtdsintrin.h
new file mode 100644
index 00000000000000..5588c9ccfa4319
--- /dev/null
+++ b/clang/lib/Headers/avx10_2satcvtdsintrin.h
@@ -0,0 +1,453 @@
+/*===----------- avx10_2satcvtdsintrin.h - AVX512SATCVTDS intrinsics --------===
+ *
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+ * See https://llvm.org/LICENSE.txt for license information.
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+ *
+ *===-----------------------------------------------------------------------===
+ */
+
+#ifndef __IMMINTRIN_H
+#error \
+ "Never use <avx10_2satcvtdsintrin.h> directly; include <immintrin.h> instead."
+#endif // __IMMINTRIN_H
+
+#ifndef __AVX10_2SATCVTDSINTRIN_H
+#define __AVX10_2SATCVTDSINTRIN_H
+
+/* Define the default attributes for the functions in this file. */
+#define __DEFAULT_FN_ATTRS \
+ __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \
+ __min_vector_width__(256)))
+
+#define _mm_cvtt_roundssd_i32(A, R) \
+ ((int)__builtin_ia32_vcvttssd2si32((__v2df)(__m128)(A), (const int)(R)))
+
+#define _mm_cvtt_roundssd_si32(A, R) \
+ ((int)__builtin_ia32_vcvttssd2si32((__v2df)(__m128d)(A), (const int)(R)))
+
+#ifdef __x86_64__
+#define _mm_cvtt_roundssd_si64(A, R) \
+ ((long long)__builtin_ia32_vcvttssd2si64((__v2df)(__m128d)(A), \
+ (const int)(R)))
+
+#define _mm_cvtt_roundssd_i64(A, R) \
+ ((long long)__builtin_ia32_vcvttssd2si64((__v2df)(__m128d)(A), \
+ (const int)(R)))
+#endif
+
+#define _mm_cvtt_roundssd_u32(A, R) \
+ ((unsigned int)__builtin_ia32_vcvttssd2usi32((__v2df)(__m128d)(A), \
+ (const int)(R)))
+
+#ifdef __x86_64__
+#define _mm_cvtt_roundssd_u64(A, R) \
+ ((unsigned long long)__builtin_ia32_vcvttssd2usi64((__v2df)(__m128d)(A), \
+ (const int)(R)))
+#endif
+
+#define _mm_cvtt_roundsss_i32(A, R) \
+ ((int)__builtin_ia32_vcvttsss2si32((__v4sf)(__m128)(A), (const int)(R)))
+
+#define _mm_cvtt_roundsss_si32(A, R) \
+ ((int)__builtin_ia32_vcvttsss2si32((__v4sf)(__m128)(A), (const int)(R)))
+
+#ifdef __x86_64__
+#define _mm_cvtt_roundsss_i64(A, R) \
+ ((long long)__builtin_ia32_vcvttsss2si64((__v4sf)(__m128)(A), (const int)(R)))
+
+#define _mm_cvtt_roundsss_si64(A, R) \
+ ((long long)__builtin_ia32_vcvttsss2si64((__v4sf)(__m128)(A), (const int)(R)))
+#endif
+
+#define _mm_cvtt_roundsss_u32(A, R) \
+ ((unsigned int)__builtin_ia32_vcvttsss2usi32((__v4sf)(__m128)(A), \
+ (const int)(R)))
+
+#ifdef __x86_64__
+#define _mm_cvtt_roundsss_u64(A, R) \
+ ((unsigned long long)__builtin_ia32_vcvttsss2usi64((__v4sf)(__m128)(A), \
+ (const int)(R)))
+#endif
+
+// 128 Bit : Double -> int
+#define _mm_cvttspd_epi32(A) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
+ (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8)(-1)))
+
+#define _mm_mask_cvttspd_epi32(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
+ (__v2df)(__m128d)A, (__v4si)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epi32(U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
+ (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : Double -> int
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_cvttspd_epi32(__m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
+ (__v4df)(__m256d)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttspd_epi32(__m128i W, __mmask8 U, __m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
+ (__v4df)A, (__v4si)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
+ (__v4df)A, (__v4si)_mm_setzero_si128(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundpd_epi32(A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8) - 1, (int)(R)))
+
+#define _mm256_mask_cvtts_roundpd_epi32(W, U, A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)W, (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundpd_epi32(U, A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U, \
+ (int)(R)))
+
+// 128 Bit : Double -> uint
+#define _mm_cvttspd_epu32(A) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
+ (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8)(-1)))
+
+#define _mm_mask_cvttspd_epu32(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
+ ((__v2df)(__m128d)A), (__v4si)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epu32(U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
+ (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : Double -> uint
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_cvttspd_epu32(__m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
+ (__v4df)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttspd_epu32(__m128i W, __mmask8 U, __m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
+ (__v4df)A, (__v4si)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttspd_epu32(__mmask8 U, __m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
+ (__v4df)A, (__v4si)_mm_setzero_si128(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundpd_epu32(A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8) - 1, (int)(R)))
+
+#define _mm256_mask_cvtts_roundpd_epu32(W, U, A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)W, (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundpd_epu32(U, A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U, \
+ (int)(R)))
+
+// 128 Bit : Double -> long
+#ifdef __x86_64__
+
+#define _mm_cvttspd_epi64(A) \
+ ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( \
+ (__v2df)(__m128d)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+
+#define _mm_mask_cvttspd_epi64(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask((__v2df)(__m128d)A, (__v2di)W, \
+ (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epi64(U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( \
+ (__v2df)(__m128d)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : Double -> long
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttspd_epi64(__m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
+ (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttspd_epi64(__m256i W, __mmask8 U, __m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
+ (__v4df)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttspd_epi64(__mmask8 U, __m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
+ (__v4df)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundpd_epi64(A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( \
+ (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, (int)R))
+
+#define _mm256_mask_cvtts_roundpd_epi64(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask((__v4df)A, (__v4di)W, \
+ (__mmask8)U, (int)R))
+
+#define _mm256_maskz_cvtts_roundpd_epi64(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( \
+ (__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
+
+// 128 Bit : Double -> ulong
+#define _mm_cvttspd_epu64(A) \
+ ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( \
+ (__v2df)(__m128d)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+
+#define _mm_mask_cvttspd_epu64(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask((__v2df)(__m128d)A, (__v2di)W, \
+ (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epu64(U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( \
+ (__v2df)(__m128d)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : Double -> ulong
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttspd_epu64(__m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
+ (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttspd_epu64(__m256i W, __mmask8 U, __m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
+ (__v4df)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttspd_epu64(__mmask8 U, __m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
+ (__v4df)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundpd_epu64(A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \
+ (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, (int)R))
+
+#define _mm256_mask_cvtts_roundpd_epu64(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask((__v4df)A, (__v4di)W, \
+ (__mmask8)U, (int)R))
+
+#define _mm256_maskz_cvtts_roundpd_epu64(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \
+ (__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
+#endif
+
+// 128 Bit : float -> int
+#define _mm_cvttsps_epi32(A) \
+ ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8)(-1)))
+
+#define _mm_mask_cvttsps_epi32(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epi32(U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : float -> int
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi32(__m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
+ (__v8sf)A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttsps_epi32(__m256i W, __mmask8 U, __m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
+ (__v8sf)(__m256)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
+ (__v8sf)(__m256)A, (__v8si)_mm256_setzero_si256(), U,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundps_epi32(A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_undefined_si256(), \
+ (__mmask8) - 1, (int)(R)))
+
+#define _mm256_mask_cvtts_roundps_epi32(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)W, (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundps_epi32(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_setzero_si256(), (__mmask8)U, \
+ (int)(R)))
+
+// 128 Bit : float -> uint
+#define _mm_cvttsps_epu32(A) \
+ ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8)(-1)))
+
+#define _mm_mask_cvttsps_epu32(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epu32(U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : float -> uint
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epu32(__m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
+ (__v8sf)A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttsps_epu32(__m256i W, __mmask8 U, __m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
+ (__v8sf)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttsps_epu32(__mmask8 U, __m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
+ (__v8sf)A, (__v8si)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundps_epu32(A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_undefined_si256(), \
+ (__mmask8) - 1, (int)(R)))
+
+#define _mm256_mask_cvtts_roundps_epu32(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)W, (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundps_epu32(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_setzero_si256(), (__mmask8)U, \
+ (int)(R)))
+
+// 128 bit : float -> long
+#ifdef __x86_64__
+
+#define _mm_cvttsps_epi64(A) \
+ ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+
+#define _mm_mask_cvttsps_epi64(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epi64(U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+/*
+// 256 bit : float -> long
+*/
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi64(__m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
+ (__v4sf)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttsps_epi64(__m256i W, __mmask8 U, __m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
+ (__v4sf)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttsps_epi64(__mmask8 U, __m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
+ (__v4sf)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundps_epi64(A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, \
+ (int)R))
+
+#define _mm256_mask_cvtts_roundps_epi64(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)W, (__mmask8)U, (int)R))
+
+#define _mm256_maskz_cvtts_roundps_epi64(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
+
+// 128 bit : float -> ulong
+#define _mm_cvttsps_epu64(A) \
+ ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+
+#define _mm_mask_cvttsps_epu64(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epu64(U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+/*
+// 256 bit : float -> ulong
+*/
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epu64(__m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
+ (__v4sf)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttsps_epu64(__m256i W, __mmask8 U, __m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
+ (__v4sf)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttsps_epu64(__mmask8 U, __m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
+ (__v4sf)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundps_epu64(A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, \
+ (int)R))
+
+#define _mm256_mask_cvtts_roundps_epu64(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)W, (__mmask8)U, (int)R))
+
+#define _mm256_maskz_cvtts_roundps_epu64(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
+#endif
+
+#undef __DEFAULT_FN_ATTRS128
+#undef __DEFAULT_FN_ATTRS
+#endif /*__AVX10_2SATCVTDSINTRIN_H*/
\ No newline at end of file
diff --git a/clang/lib/Headers/immintrin.h b/clang/lib/Headers/immintrin.h
index f570c5752db4b9..ec9ad9201a0d24 100644
--- a/clang/lib/Headers/immintrin.h
+++ b/clang/lib/Headers/immintrin.h
@@ -200,6 +200,14 @@
#include <avx512vlbf16intrin.h>
#endif
+#if !defined(__SCE__) || __has_feature(modules) || defined(__AVX10_2__)
+#include <avx10_2satcvtdsintrin.h>
+#endif
+
+#if !defined(__SCE__) || __has_feature(modules) || defined(__AVX10_2_512__)
+#include <avx10_2_512satcvtdsintrin.h>
+#endif
+
#if !defined(__SCE__) || __has_feature(modules) || defined(__PKU__)
#include <pkuintrin.h>
#endif
diff --git a/clang/lib/Sema/SemaX86.cpp b/clang/lib/Sema/SemaX86.cpp
index a0756f167deae6..2518e2881476ba 100644
--- a/clang/lib/Sema/SemaX86.cpp
+++ b/clang/lib/Sema/SemaX86.cpp
@@ -45,6 +45,14 @@ bool SemaX86::CheckBuiltinRoundingOrSAE(unsigned BuiltinID, CallExpr *TheCall) {
case X86::BI__builtin_ia32_vcvttsh2si64:
case X86::BI__builtin_ia32_vcvttsh2usi32:
case X86::BI__builtin_ia32_vcvttsh2usi64:
+ case X86::BI__builtin_ia32_vcvttssd2si32:
+ case X86::BI__builtin_ia32_vcvttssd2usi32:
+ case X86::BI__builtin_ia32_vcvttsss2si32:
+ case X86::BI__builtin_ia32_vcvttsss2usi32:
+ case X86::BI__builtin_ia32_vcvttssd2si64:
+ case X86::BI__builtin_ia32_vcvttssd2usi64:
+ case X86::BI__builtin_ia32_vcvttsss2si64:
+ case X86::BI__builtin_ia32_vcvttsss2usi64:
ArgNum = 1;
break;
case X86::BI__builtin_ia32_maxpd512:
@@ -432,6 +440,24 @@ bool SemaX86::CheckBuiltinRoundingOrSAE(unsigned BuiltinID, CallExpr *TheCall) {
ArgNum = 4;
HasRC = true;
break;
+ case X86::BI__builtin_ia32_vcvttpd2dqs256_round_mask:
+ case X86::BI__builtin_ia32_vcvttpd2dqs512_round_mask:
+ case X86::BI__builtin_ia32_vcvttpd2udqs256_round_mask:
+ case X86::BI__builtin_ia32_vcvttpd2udqs512_round_mask:
+ case X86::BI__builtin_ia32_vcvttpd2qqs256_round_mask:
+ case X86::BI__builtin_ia32_vcvttpd2qqs512_round_mask:
+ case X86::BI__builtin_ia32_vcvttpd2uqqs256_round_mask:
+ case X86::BI__builtin_ia32_vcvttpd2uqqs512_round_mask:
+ case X86::BI__builtin_ia32_vcvttps2dqs256_round_mask:
+ case X86::BI__builtin_ia32_vcvttps2dqs512_round_mask:
+ case X86::BI__builtin_ia32_vcvttps2udqs256_round_mask:
+ case X86::BI__builtin_ia32_vcvttps2udqs512_round_mask:
+ case X86::BI__builtin_ia32_vcvttps2qqs256_round_mask:
+ case X86::BI__builtin_ia32_vcvttps2qqs512_round_mask:
+ case X86::BI__builtin_ia32_vcvttps2uqqs256_round_mask:
+ case X86::BI__builtin_ia32_vcvttps2uqqs512_round_mask:
+ ArgNum = 3;
+ break;
}
llvm::APSInt Result;
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-errors.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-errors.c
new file mode 100644
index 00000000000000..c2e891217fbbcf
--- /dev/null
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-errors.c
@@ -0,0 +1,52 @@
+// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-unknown-unknown -target-feature +avx10.2-512 -emit-llvm -Wall -Werror -verify
+
+#include <immintrin.h>
+#include <stddef.h>
+
+__m256i test_mm512_cvtts_roundpd_epi32(__m512d A) {
+ return _mm512_cvtts_roundpd_epi32(A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m256i test_mm512_mask_cvtts_roundpd_epi32(__m256i W, __mmask8 U, __m512d A) {
+ return _mm512_mask_cvtts_roundpd_epi32(W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m256i test_mm512_maskz_cvtts_roundpd_epi32(__mmask8 U, __m512d A) {
+ return _mm512_maskz_cvtts_roundpd_epi32(U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m256i test_mm512_cvtts_roundpd_epu32(__m512d A) {
+ return _mm512_cvtts_roundpd_epu32(A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m256i test_mm512_mask_cvtts_roundpd_epu32(__m256i W, __mmask8 U, __m512d A) {
+ return _mm512_mask_cvtts_roundpd_epu32(W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m256i test_mm512_maskz_cvtts_roundpd_epu32(__mmask8 U, __m512d A) {
+ return _mm512_maskz_cvtts_roundpd_epu32(U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_cvtts_roundps_epi32(__m512 A) {
+ return _mm512_cvtts_roundps_epi32(A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_mask_cvtts_roundps_epi32(__m512i W, __mmask8 U, __m512 A) {
+ return _mm512_mask_cvtts_roundps_epi32(W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_maskz_cvtts_roundps_epi32(__mmask8 U, __m512 A) {
+ return _mm512_maskz_cvtts_roundps_epi32(U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_cvtts_roundps_epu32(__m512 A) {
+ return _mm512_cvtts_roundps_epu32(A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_mask_cvtts_roundps_epu32(__m512i W, __mmask8 U, __m512 A) {
+ return _mm512_mask_cvtts_roundps_epu32(W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_maskz_cvtts_roundps_epu32(__mmask8 U, __m512 A) {
+ return _mm512_maskz_cvtts_roundps_epu32(U, A, 22); // expected-error {{invalid rounding argument}}
+}
\ No newline at end of file
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64-error.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64-error.c
new file mode 100755
index 00000000000000..7c7c94fbf8c89b
--- /dev/null
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64-error.c
@@ -0,0 +1,76 @@
+// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-unknown-unknown -target-feature +avx10.2-512 -emit-llvm -Wall -Werror -verify
+
+#include <immintrin.h>
+#include <stddef.h>
+
+long long test_mm_cvttssd_si64(__m128d __A) {
+ return _mm_cvtt_roundssd_si64(__A, 22); // expected-error {{invalid rounding argument}}
+}
+
+long long test_mm_cvttssd_i64(__m128d __A) {
+ return _mm_cvtt_roundssd_i64(__A, 22); // expected-error {{invalid rounding argument}}
+}
+
+unsigned long long test_mm_cvttssd_u64(__m128d __A) {
+ return _mm_cvtt_roundssd_u64(__A, 22); // expected-error {{invalid rounding argument}}
+}
+
+float test_mm_cvttsss_i64(__m128 __A) {
+ return _mm_cvtt_roundsss_i64(__A, 22); // expected-error {{invalid rounding argument}}
+}
+
+long long test_mm_cvttsss_si64(__m128 __A) {
+ return _mm_cvtt_roundsss_si64(__A, 22); // expected-error {{invalid rounding argument}}
+}
+
+unsigned long long test_mm_cvttsss_u64(__m128 __A) {
+ return _mm_cvtt_roundsss_u64(__A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_cvtts_roundpd_epi64(__m512d A) {
+ return _mm512_cvtts_roundpd_epi64( A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_mask_cvtts_roundpd_epi64(__m512i W, __mmask8 U, __m512d A) {
+ return _mm512_mask_cvtts_roundpd_epi64( W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_maskz_cvtts_roundpd_epi64(__mmask8 U, __m512d A) {
+ return _mm512_maskz_cvtts_roundpd_epi64( U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_cvtts_roundpd_epu64(__m512d A) {
+ return _mm512_cvtts_roundpd_epu64( A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_mask_cvtts_roundpd_epu64(__m512i W, __mmask8 U, __m512d A) {
+ return _mm512_mask_cvtts_roundpd_epu64( W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_maskz_cvtts_roundpd_epu64(__mmask8 U, __m512d A) {
+ return _mm512_maskz_cvtts_roundpd_epu64( U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_cvtts_roundps_epi64(__m256 A) {
+ return _mm512_cvtts_roundps_epi64( A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_mask_cvtts_roundps_epi64(__m512i W, __mmask8 U, __m256 A) {
+ return _mm512_mask_cvtts_roundps_epi64( W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_maskz_cvtts_roundps_epi64(__mmask8 U, __m256 A) {
+ return _mm512_maskz_cvtts_roundps_epi64( U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_cvtts_roundps_epu64(__m256 A) {
+ return _mm512_cvtts_roundps_epu64( A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_mask_cvtts_roundps_epu64(__m512i W, __mmask8 U, __m256 A) {
+ return _mm512_mask_cvtts_roundps_epu64( W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m512i test_mm512_maskz_cvtts_roundps_epu64(__mmask8 U, __m256 A) {
+ return _mm512_maskz_cvtts_roundps_epu64( U, A, 22); // expected-error {{invalid rounding argument}}
+}
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
new file mode 100644
index 00000000000000..9e8b7f01c4c816
--- /dev/null
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
@@ -0,0 +1,184 @@
+// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-unknown-unknown -target-feature +avx10.2-512 -emit-llvm -o - | FileCheck %s
+
+#include <immintrin.h>
+#include <stddef.h>
+
+long long test_mm_cvttssd_si64(__m128d __A) {
+ // CHECK-LABEL: @test_mm_cvttssd_si64(
+ // CHECK: @llvm.x86.avx512.vcvttssd2si64(<2 x double>
+ return _mm_cvtt_roundssd_si64(__A, _MM_FROUND_NO_EXC);
+}
+
+long long test_mm_cvttssd_i64(__m128d __A) {
+ // CHECK-LABEL: @test_mm_cvttssd_i64(
+ // CHECK: @llvm.x86.avx512.vcvttssd2si64(<2 x double>
+ return _mm_cvtt_roundssd_i64(__A, _MM_FROUND_NO_EXC);
+}
+
+unsigned long long test_mm_cvttssd_u64(__m128d __A) {
+ // CHECK-LABEL: @test_mm_cvttssd_u64(
+ // CHECK: @llvm.x86.avx512.vcvttssd2usi64(<2 x double>
+ return _mm_cvtt_roundssd_u64(__A, _MM_FROUND_NO_EXC);
+}
+
+float test_mm_cvttsss_i64(__m128 __A) {
+ // CHECK-LABEL: @test_mm_cvttsss_i64(
+ // CHECK: @llvm.x86.avx512.vcvttsss2si64(<4 x float>
+ return _mm_cvtt_roundsss_i64(__A, _MM_FROUND_NO_EXC);
+}
+
+long long test_mm_cvttsss_si64(__m128 __A) {
+ // CHECK-LABEL: @test_mm_cvttsss_si64(
+ // CHECK: @llvm.x86.avx512.vcvttsss2si64(<4 x float>
+ return _mm_cvtt_roundsss_si64(__A, _MM_FROUND_NO_EXC);
+}
+
+unsigned long long test_mm_cvttsss_u64(__m128 __A) {
+ // CHECK-LABEL: @test_mm_cvttsss_u64(
+ // CHECK: @llvm.x86.avx512.vcvttsss2usi64(<4 x float>
+ return _mm_cvtt_roundsss_u64(__A, _MM_FROUND_NO_EXC);
+}
+
+__m512i test_mm512_cvttspd_epi64(__m512d A) {
+ // CHECK-LABEL: test_mm512_cvttspd_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ return _mm512_cvttspd_epi64(A);
+}
+
+__m512i test_mm512_mask_cvttspd_epi64(__m512i W, __mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_mask_cvttspd_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ return _mm512_mask_cvttspd_epi64(W, U, A);
+}
+
+__m512i test_mm512_maskz_cvttspd_epi64(__mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_maskz_cvttspd_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ return _mm512_maskz_cvttspd_epi64(U, A);
+}
+
+__m512i test_mm512_cvtts_roundpd_epi64(__m512d A) {
+ // CHECK-LABEL: test_mm512_cvtts_roundpd_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ return _mm512_cvtts_roundpd_epi64(A, _MM_FROUND_NEARBYINT);
+}
+
+__m512i test_mm512_mask_cvtts_roundpd_epi64(__m512i W, __mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_mask_cvtts_roundpd_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ return _mm512_mask_cvtts_roundpd_epi64(W, U, A, _MM_FROUND_NEARBYINT);
+}
+
+__m512i test_mm512_maskz_cvtts_roundpd_epi64(__mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_maskz_cvtts_roundpd_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ return _mm512_maskz_cvtts_roundpd_epi64(U, A, _MM_FROUND_NEARBYINT);
+}
+
+__m512i test_mm512_cvttspd_epu64(__m512d A) {
+ // CHECK-LABEL: test_mm512_cvttspd_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ return _mm512_cvttspd_epu64(A);
+}
+
+__m512i test_mm512_mask_cvttspd_epu64(__m512i W, __mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_mask_cvttspd_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ return _mm512_mask_cvttspd_epu64(W, U, A);
+}
+
+__m512i test_mm512_maskz_cvttspd_epu64(__mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_maskz_cvttspd_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ return _mm512_maskz_cvttspd_epu64(U, A);
+}
+
+__m512i test_mm512_cvtts_roundpd_epu64(__m512d A) {
+ // CHECK-LABEL: test_mm512_cvtts_roundpd_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ return _mm512_cvtts_roundpd_epu64(A, _MM_FROUND_NEARBYINT);
+}
+
+__m512i test_mm512_mask_cvtts_roundpd_epu64(__m512i W, __mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_mask_cvtts_roundpd_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ return _mm512_mask_cvtts_roundpd_epu64(W, U, A, _MM_FROUND_NEARBYINT);
+}
+
+__m512i test_mm512_maskz_cvtts_roundpd_epu64(__mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_maskz_cvtts_roundpd_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ return _mm512_maskz_cvtts_roundpd_epu64(U, A, _MM_FROUND_NEARBYINT);
+}
+
+__m512i test_mm512_cvttsps_epi64(__m256 A) {
+ // CHECK-LABEL: test_mm512_cvttsps_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ return _mm512_cvttsps_epi64(A);
+}
+
+__m512i test_mm512_mask_cvttsps_epi64(__m512i W, __mmask8 U, __m256 A) {
+ // CHECK-LABEL: test_mm512_mask_cvttsps_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ return _mm512_mask_cvttsps_epi64(W, U, A);
+}
+
+__m512i test_mm512_maskz_cvttsps_epi64(__mmask8 U, __m256 A) {
+ // CHECK-LABEL: test_mm512_maskz_cvttsps_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ return _mm512_maskz_cvttsps_epi64(U, A);
+}
+
+__m512i test_mm512_cvtts_roundps_epi64(__m256 A) {
+ // CHECK-LABEL: test_mm512_cvtts_roundps_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ return _mm512_cvtts_roundps_epi64(A, _MM_FROUND_NEARBYINT);
+}
+
+__m512i test_mm512_mask_cvtts_roundps_epi64(__m512i W, __mmask8 U, __m256 A) {
+ // CHECK-LABEL: test_mm512_mask_cvtts_roundps_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ return _mm512_mask_cvtts_roundps_epi64(W, U, A, _MM_FROUND_NEARBYINT);
+}
+
+__m512i test_mm512_maskz_cvtts_roundps_epi64(__mmask8 U, __m256 A) {
+ // CHECK-LABEL: test_mm512_maskz_cvtts_roundps_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ return _mm512_maskz_cvtts_roundps_epi64(U, A, _MM_FROUND_NEARBYINT);
+}
+
+__m512i test_mm512_cvttsps_epu64(__m256 A) {
+ // CHECK-LABEL: test_mm512_cvttsps_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ return _mm512_cvttsps_epu64(A);
+}
+
+__m512i test_mm512_mask_cvttsps_epu64(__m512i W, __mmask8 U, __m256 A) {
+ // CHECK-LABEL: test_mm512_mask_cvttsps_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ return _mm512_mask_cvttsps_epu64(W, U, A);
+}
+
+__m512i test_mm512_maskz_cvttsps_epu64(__mmask8 U, __m256 A) {
+ // CHECK-LABEL: test_mm512_maskz_cvttsps_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ return _mm512_maskz_cvttsps_epu64(U, A);
+}
+
+__m512i test_mm512_cvtts_roundps_epu64(__m256 A) {
+ // CHECK-LABEL: test_mm512_cvtts_roundps_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ return _mm512_cvtts_roundps_epu64(A, _MM_FROUND_NEARBYINT);
+}
+
+__m512i test_mm512_mask_cvtts_roundps_epu64(__m512i W, __mmask8 U, __m256 A) {
+ // CHECK-LABEL: test_mm512_mask_cvtts_roundps_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ return _mm512_mask_cvtts_roundps_epu64(W, U, A, _MM_FROUND_NEARBYINT);
+}
+
+__m512i test_mm512_maskz_cvtts_roundps_epu64(__mmask8 U, __m256 A) {
+ // CHECK-LABEL: test_mm512_maskz_cvtts_roundps_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ return _mm512_maskz_cvtts_roundps_epu64(U, A, _MM_FROUND_NEARBYINT);
+}
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
new file mode 100644
index 00000000000000..c518d0c5d77884
--- /dev/null
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
@@ -0,0 +1,183 @@
+// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-unknown-unknown -target-feature +avx10.2-512 -emit-llvm -o - | FileCheck %s
+
+#include <immintrin.h>
+#include <stddef.h>
+
+int test_mm_cvttssd_i32(__m128d __A) {
+ // CHECK-LABEL: @test_mm_cvttssd_i32
+ // CHECK: @llvm.x86.avx512.vcvttssd2si
+ return _mm_cvtt_roundssd_i32(__A, _MM_FROUND_NO_EXC);
+}
+
+int test_mm_cvttssd_si32(__m128d __A) {
+ // CHECK-LABEL: @test_mm_cvttssd_si32(
+ // CHECK: @llvm.x86.avx512.vcvttssd2si(<2 x double>
+ return _mm_cvtt_roundssd_si32(__A, _MM_FROUND_NO_EXC);
+}
+
+unsigned test_mm_cvttssd_u32(__m128d __A) {
+ // CHECK-LABEL: @test_mm_cvttssd_u32(
+ // CHECK: @llvm.x86.avx512.vcvttssd2usi(<2 x double>
+ return _mm_cvtt_roundssd_u32(__A, _MM_FROUND_NO_EXC);
+}
+
+int test_mm_cvttsss_i32(__m128 __A) {
+ // CHECK-LABEL: @test_mm_cvttsss_i32(
+ // CHECK: @llvm.x86.avx512.vcvttsss2si(<4 x float>
+ return _mm_cvtt_roundsss_i32(__A, _MM_FROUND_NO_EXC);
+}
+
+int test_mm_cvttsss_si32(__m128 __A) {
+ // CHECK-LABEL: @test_mm_cvttsss_si32(
+ // CHECK: @llvm.x86.avx512.vcvttsss2si(<4 x float>
+ return _mm_cvtt_roundsss_si32(__A, _MM_FROUND_NO_EXC);
+}
+
+unsigned test_mm_cvttsss_u32(__m128 __A) {
+ // CHECK-LABEL: @test_mm_cvttsss_u32(
+ // CHECK: @llvm.x86.avx512.vcvttsss2usi(<4 x float>
+ return _mm_cvtt_roundsss_u32(__A, _MM_FROUND_NO_EXC);
+}
+
+__m256i test_mm512_cvttspd_epi32(__m512d A) {
+ // CHECK-LABEL: test_mm512_cvttspd_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ return _mm512_cvttspd_epi32(A);
+}
+
+__m256i test_mm512_mask_cvttspd_epi32(__m256i W, __mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_mask_cvttspd_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ return _mm512_mask_cvttspd_epi32(W, U, A);
+}
+
+__m256i test_mm512_maskz_cvttspd_epi32(__mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_maskz_cvttspd_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ return _mm512_maskz_cvttspd_epi32(U, A);
+}
+
+__m256i test_mm512_cvtts_roundpd_epi32(__m512d A) {
+ // CHECK-LABEL: test_mm512_cvtts_roundpd_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ return _mm512_cvtts_roundpd_epi32(A, _MM_FROUND_NO_EXC);
+}
+
+__m256i test_mm512_mask_cvtts_roundpd_epi32(__m256i W, __mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_mask_cvtts_roundpd_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ return _mm512_mask_cvtts_roundpd_epi32(W, U, A, _MM_FROUND_NO_EXC);
+}
+
+__m256i test_mm512_maskz_cvtts_roundpd_epi32(__mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_maskz_cvtts_roundpd_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ return _mm512_maskz_cvtts_roundpd_epi32(U, A, _MM_FROUND_NO_EXC);
+}
+
+__m256i test_mm512_cvttspd_epu32(__m512d A) {
+ // CHECK-LABEL: test_mm512_cvttspd_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ return _mm512_cvttspd_epu32(A);
+}
+
+__m256i test_mm512_mask_cvttspd_epu32(__m256i W, __mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_mask_cvttspd_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ return _mm512_mask_cvttspd_epu32(W, U, A);
+}
+
+__m256i test_mm512_maskz_cvttspd_epu32(__mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_maskz_cvttspd_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ return _mm512_maskz_cvttspd_epu32(U, A);
+}
+
+__m256i test_mm512_cvtts_roundpd_epu32(__m512d A) {
+ // CHECK-LABEL: test_mm512_cvtts_roundpd_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ return _mm512_cvtts_roundpd_epu32(A, _MM_FROUND_NO_EXC);
+}
+
+__m256i test_mm512_mask_cvtts_roundpd_epu32(__m256i W, __mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_mask_cvtts_roundpd_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ return _mm512_mask_cvtts_roundpd_epu32(W, U, A, _MM_FROUND_NO_EXC);
+}
+
+__m256i test_mm512_maskz_cvtts_roundpd_epu32(__mmask8 U, __m512d A) {
+ // CHECK-LABEL: test_mm512_maskz_cvtts_roundpd_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ return _mm512_maskz_cvtts_roundpd_epu32(U, A, _MM_FROUND_NO_EXC);
+}
+
+__m512i test_mm512_cvttsps_epi32(__m512 A) {
+ // CHECK-LABEL: test_mm512_cvttsps_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ return _mm512_cvttsps_epi32(A);
+}
+
+__m512i test_mm512_mask_cvttsps_epi32(__m512i W, __mmask8 U, __m512 A) {
+ // CHECK-LABEL: test_mm512_mask_cvttsps_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ return _mm512_mask_cvttsps_epi32(W, U, A);
+}
+
+__m512i test_mm512_maskz_cvttsps_epi32(__mmask8 U, __m512 A) {
+ // CHECK-LABEL: test_mm512_maskz_cvttsps_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ return _mm512_maskz_cvttsps_epi32(U, A);
+}
+
+__m512i test_mm512_cvtts_roundps_epi32(__m512 A) {
+ // CHECK-LABEL: test_mm512_cvtts_roundps_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ return _mm512_cvtts_roundps_epi32(A, _MM_FROUND_NO_EXC);
+}
+
+__m512i test_mm512_mask_cvtts_roundps_epi32(__m512i W, __mmask8 U, __m512 A) {
+ // CHECK-LABEL: test_mm512_mask_cvtts_roundps_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ return _mm512_mask_cvtts_roundps_epi32(W, U, A, _MM_FROUND_NO_EXC);
+}
+
+__m512i test_mm512_maskz_cvtts_roundps_epi32(__mmask8 U, __m512 A) {
+ // CHECK-LABEL: test_mm512_maskz_cvtts_roundps_epi32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ return _mm512_maskz_cvtts_roundps_epi32(U, A, _MM_FROUND_NO_EXC);
+}
+
+__m512i test_mm512_cvttsps_epu32(__m512 A) {
+ // CHECK-LABEL: test_mm512_cvttsps_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ return _mm512_cvttsps_epu32(A);
+}
+
+__m512i test_mm512_mask_cvttsps_epu32(__m512i W, __mmask8 U, __m512 A) {
+ // CHECK-LABEL: test_mm512_mask_cvttsps_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ return _mm512_mask_cvttsps_epu32(W, U, A);
+}
+
+__m512i test_mm512_maskz_cvttsps_epu32(__mmask8 U, __m512 A) {
+ // CHECK-LABEL: test_mm512_maskz_cvttsps_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ return _mm512_maskz_cvttsps_epu32(U, A);
+}
+
+__m512i test_mm512_cvtts_roundps_epu32(__m512 A) {
+ // CHECK-LABEL: test_mm512_cvtts_roundps_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ return _mm512_cvtts_roundps_epu32(A, _MM_FROUND_NO_EXC);
+}
+
+__m512i test_mm512_mask_cvtts_roundps_epu32(__m512i W, __mmask8 U, __m512 A) {
+ // CHECK-LABEL: test_mm512_mask_cvtts_roundps_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ return _mm512_mask_cvtts_roundps_epu32(W, U, A, _MM_FROUND_NO_EXC);
+}
+__m512i test_mm512_maskz_cvtts_roundps_epu32(__mmask8 U, __m512 A) {
+ // CHECK-LABEL: test_mm512_maskz_cvtts_roundps_epu32
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ return _mm512_maskz_cvtts_roundps_epu32(U, A, _MM_FROUND_NO_EXC);
+}
diff --git a/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-errors.c b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-errors.c
new file mode 100644
index 00000000000000..72d2769dc21067
--- /dev/null
+++ b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-errors.c
@@ -0,0 +1,57 @@
+// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-unknown-unknown -target-feature +avx10.2-256 -emit-llvm -Wall -Werror -verify
+
+unsigned long long test_mm_cvttssd(unsigned long long __A) {
+ return _mm_cvttssd(__A); // expected-error {{call to undeclared function '_mm_cvttssd'}}
+}
+
+unsigned long long test_mm_cvttsss(unsigned long long __A) {
+ return _mm_cvttsss(__A); // expected-error {{call to undeclared function '_mm_cvttsss'}}
+}
+
+#include <immintrin.h>
+#include <stddef.h>
+
+__m128i test_mm256_cvtts_roundpd_epi32(__m256d A) {
+ return _mm256_cvtts_roundpd_epi32(A, 22); // expected-error {{invalid rounding argument}}
+}
+__m128i test_mm256_mask_cvtts_roundpd_epi32(__m128i W, __mmask8 U, __m256d A) {
+ return _mm256_mask_cvtts_roundpd_epi32(W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m128i test_mm256_maskz_cvtts_roundpd_epi32(__mmask8 U, __m256d A) {
+ return _mm256_maskz_cvtts_roundpd_epi32(U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m128i test_mm256_cvtts_roundpd_epu32(__m256d A) {
+ return _mm256_cvtts_roundpd_epu32(A, 22); // expected-error {{invalid rounding argument}}
+}
+__m128i test_mm256_mask_cvtts_roundpd_epu32(__m128i W, __mmask8 U, __m256d A) {
+ return _mm256_mask_cvtts_roundpd_epu32(W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m128i test_mm256_maskz_cvtts_roundpd_epu32(__mmask8 U, __m256d A) {
+ return _mm256_maskz_cvtts_roundpd_epu32(U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m256i test_mm256_cvtts_roundps_epi32(__m256 A) {
+ return _mm256_cvtts_roundps_epi32(A, 22); // expected-error {{invalid rounding argument}}
+}
+__m256i test_mm256_mask_cvtts_roundps_epi32(__m256i W, __mmask8 U, __m256 A) {
+ return _mm256_mask_cvtts_roundps_epi32(W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m256i test_mm256_maskz_cvtts_roundps_epi32(__mmask8 U, __m256 A) {
+ return _mm256_maskz_cvtts_roundps_epi32(U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m256i test_mm256_cvtts_roundps_epu32(__m256 A) {
+ return _mm256_cvtts_roundps_epu32(A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m256i test_mm256_mask_cvtts_roundps_epu32(__m256i W, __mmask8 U, __m256 A) {
+ return _mm256_mask_cvtts_roundps_epu32(W, U, A, 22); // expected-error {{invalid rounding argument}}
+}
+
+__m256i test_mm256_maskz_cvtts_roundps_epu32(__mmask8 U, __m256 A) {
+ return _mm256_maskz_cvtts_roundps_epu32(U, A, 22); // expected-error {{invalid rounding argument}}
+}
diff --git a/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c
new file mode 100644
index 00000000000000..c72283c449ea9e
--- /dev/null
+++ b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c
@@ -0,0 +1,223 @@
+// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-unknown-unknown -target-feature +avx10.2-256 -emit-llvm -o - | FileCheck %s
+
+#include <immintrin.h>
+#include <stddef.h>
+
+// 128 bit
+__m128i test_mm_cvttspd_epi64(__m128d A){
+ // CHECK-LABEL: @test_mm_cvttspd_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.128(<2 x double>
+ return _mm_cvttspd_epi64(A);
+}
+
+__m128i test_mm_mask_cvttspd_epi64(__m128i W, __mmask8 U, __m128d A){
+ // CHECK-LABEL: @test_mm_mask_cvttspd_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.128(<2 x double>
+ return _mm_mask_cvttspd_epi64(W, U, A);
+}
+
+__m128i test_mm_maskz_cvttspd_epi64(__mmask8 U,__m128d A){
+ // CHECK-LABEL: @test_mm_maskz_cvttspd_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.128(<2 x double>
+ return _mm_maskz_cvttspd_epi64(U, A);
+}
+
+__m128i test_mm_cvttspd_epu64(__m128d A){
+ // CHECK-LABEL: @test_mm_cvttspd_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.128(<2 x double>
+ return _mm_cvttspd_epu64( A);
+}
+
+__m128i test_mm_mask_cvttspd_epu64(__m128i W, __mmask8 U, __m128d A){
+ // CHECK-LABEL: @test_mm_mask_cvttspd_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.128(<2 x double>
+ return _mm_mask_cvttspd_epu64(W, U, A);
+}
+
+__m128i test_mm_maskz_cvttspd_epu64(__mmask8 U,__m128d A){
+ // CHECK-LABEL: @test_mm_maskz_cvttspd_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.128(<2 x double>
+ return _mm_maskz_cvttspd_epu64(U, A);
+}
+
+// 256 bit
+__m256i test_mm256_cvttspd_epi64(__m256d A){
+// CHECK-LABEL: @test_mm256_cvttspd_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
+ return _mm256_cvttspd_epi64( A);
+}
+
+__m256i test_mm256_mask_cvttspd_epi64(__m256i W,__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_mask_cvttspd_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
+ return _mm256_mask_cvttspd_epi64(W,U, A);
+}
+
+__m256i test_mm256_maskz_cvttspd_epi64(__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_maskz_cvttspd_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
+ return _mm256_maskz_cvttspd_epi64(U, A);
+}
+
+__m256i test_mm256_cvtts_roundpd_epi64(__m256d A){
+// CHECK-LABEL: @test_mm256_cvtts_roundpd_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
+ return _mm256_cvtts_roundpd_epi64(A,_MM_FROUND_NEARBYINT );
+}
+
+__m256i test_mm256_mask_cvtts_roundpd_epi64(__m256i W,__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_mask_cvtts_roundpd_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
+ return _mm256_mask_cvtts_roundpd_epi64(W,U,A,_MM_FROUND_NEARBYINT );
+}
+
+__m256i test_mm256_maskz_cvtts_roundpd_epi64(__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_maskz_cvtts_roundpd_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
+ return _mm256_maskz_cvtts_roundpd_epi64(U,A,_MM_FROUND_NEARBYINT );
+}
+
+__m256i test_mm256_cvttspd_epu64(__m256d A){
+// CHECK-LABEL: @test_mm256_cvttspd_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
+ return _mm256_cvttspd_epu64( A);
+}
+
+__m256i test_mm256_mask_cvttspd_epu64(__m256i W,__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_mask_cvttspd_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
+ return _mm256_mask_cvttspd_epu64(W,U, A);
+}
+
+__m256i test_mm256_maskz_cvttspd_epu64(__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_maskz_cvttspd_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
+ return _mm256_maskz_cvttspd_epu64(U, A);
+}
+
+__m256i test_mm256_cvtts_roundpd_epu64(__m256d A){
+// CHECK-LABEL: @test_mm256_cvtts_roundpd_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
+ return _mm256_cvtts_roundpd_epu64(A,_MM_FROUND_NEARBYINT );
+}
+
+__m256i test_mm256_mask_cvtts_roundpd_epu64(__m256i W,__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_mask_cvtts_roundpd_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
+ return _mm256_mask_cvtts_roundpd_epu64(W,U,A,_MM_FROUND_NEARBYINT );
+}
+
+__m256i test_mm256_maskz_cvtts_roundpd_epu64(__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_maskz_cvtts_roundpd_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
+ return _mm256_maskz_cvtts_roundpd_epu64(U,A,_MM_FROUND_NEARBYINT );
+}
+
+// 128 bit
+__m128i test_mm_cvttsps_epi64(__m128 A){
+ // CHECK-LABEL: @test_mm_cvttsps_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.128(<4 x float>
+ return _mm_cvttsps_epi64( A);
+}
+
+__m128i test_mm_mask_cvttsps_epi64(__m128i W, __mmask8 U, __m128 A){
+ // CHECK-LABEL: @test_mm_mask_cvttsps_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.128(<4 x float>
+ return _mm_mask_cvttsps_epi64(W, U, A);
+}
+
+__m128i test_mm_maskz_cvttsps_epi64(__mmask8 U,__m128 A){
+ // CHECK-LABEL: @test_mm_maskz_cvttsps_epi64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.128(<4 x float>
+ return _mm_maskz_cvttsps_epi64(U, A);
+}
+
+__m128i test_mm_cvttsps_epu64(__m128 A){
+ // CHECK-LABEL: @test_mm_cvttsps_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.128(<4 x float>
+ return _mm_cvttsps_epu64( A);
+}
+
+__m128i test_mm_mask_cvttsps_epu64(__m128i W, __mmask8 U, __m128 A){
+ // CHECK-LABEL: @test_mm_mask_cvttsps_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.128(<4 x float>
+ return _mm_mask_cvttsps_epu64(W, U, A);
+}
+
+__m128i test_mm_maskz_cvttsps_epu64(__mmask8 U,__m128 A){
+ // CHECK-LABEL: @test_mm_maskz_cvttsps_epu64
+ // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.128(<4 x float>
+ return _mm_maskz_cvttsps_epu64(U, A);
+}
+
+__m256i test_mm256_cvttsps_epi64(__m128 A){
+// CHECK-LABEL: @test_mm256_cvttsps_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
+ return _mm256_cvttsps_epi64( A);
+}
+
+__m256i test_mm256_mask_cvttsps_epi64(__m256i W,__mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm256_mask_cvttsps_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
+ return _mm256_mask_cvttsps_epi64(W,U, A);
+}
+
+__m256i test_mm256_maskz_cvttsps_epi64(__mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm256_maskz_cvttsps_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
+ return _mm256_maskz_cvttsps_epi64(U, A);
+}
+
+__m256i test_mm256_cvtts_roundps_epi64(__m128 A){
+// CHECK-LABEL: @test_mm256_cvtts_roundps_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
+ return _mm256_cvtts_roundps_epi64(A, _MM_FROUND_NEARBYINT );
+}
+
+__m256i test_mm256_mask_cvtts_roundps_epi64(__m256i W,__mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm256_mask_cvtts_roundps_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
+ return _mm256_mask_cvtts_roundps_epi64(W,U,A,_MM_FROUND_NEARBYINT );
+}
+
+__m256i test_mm256_maskz_cvtts_roundps_epi64(__mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm256_maskz_cvtts_roundps_epi64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
+ return _mm256_maskz_cvtts_roundps_epi64(U,A,_MM_FROUND_NEARBYINT );
+}
+
+__m256i test_mm256_cvttsps_epu64(__m128 A){
+// CHECK-LABEL: @test_mm256_cvttsps_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
+ return _mm256_cvttsps_epu64( A);
+}
+
+__m256i test_mm256_mask_cvttsps_epu64(__m256i W,__mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm256_mask_cvttsps_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
+ return _mm256_mask_cvttsps_epu64(W,U, A);
+}
+
+__m256i test_mm256_maskz_cvttsps_epu64(__mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm256_maskz_cvttsps_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
+ return _mm256_maskz_cvttsps_epu64(U, A);
+}
+
+__m256i test_mm256_cvtts_roundps_epu64(__m128 A){
+// CHECK-LABEL: @test_mm256_cvtts_roundps_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
+ return _mm256_cvtts_roundps_epu64(A, _MM_FROUND_NEARBYINT );
+}
+
+__m256i test_mm256_mask_cvtts_roundps_epu64(__m256i W,__mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm256_mask_cvtts_roundps_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
+ return _mm256_mask_cvtts_roundps_epu64(W,U,A,_MM_FROUND_NEARBYINT );
+}
+
+__m256i test_mm256_maskz_cvtts_roundps_epu64(__mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm256_maskz_cvtts_roundps_epu64
+// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
+ return _mm256_maskz_cvtts_roundps_epu64(U,A,_MM_FROUND_NEARBYINT );
+}
diff --git a/clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c
new file mode 100644
index 00000000000000..5eee57ddc6a837
--- /dev/null
+++ b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c
@@ -0,0 +1,220 @@
+// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-unknown-unknown -target-feature +avx10.2-256 -emit-llvm -o - | FileCheck %s
+
+#include <immintrin.h>
+#include <stddef.h>
+
+__m128i test_mm_cvttspd_epi32(__m128d A){
+// CHECK-LABEL: @test_mm_cvttspd_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.128(<2 x double>
+ return _mm_cvttspd_epi32(A);
+}
+
+__m128i test_mm_mask_cvttspd_epi32(__m128i W, __mmask8 U, __m128d A){
+// CHECK-LABEL: @test_mm_mask_cvttspd_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.128(<2 x double>
+ return _mm_mask_cvttspd_epi32(W,U,A);
+}
+
+__m128i test_mm_maskz_cvttspd_epi32( __mmask8 U, __m128d A){
+// CHECK-LABEL: @test_mm_maskz_cvttspd_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.128(<2 x double>
+ return _mm_maskz_cvttspd_epi32(U,A);
+}
+
+__m128i test_mm256_cvttspd_epi32(__m256d A){
+// CHECK-LABEL: @test_mm256_cvttspd_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+ return _mm256_cvttspd_epi32(A);
+}
+
+__m128i test_mm256_mask_cvttspd_epi32(__m128i W,__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_mask_cvttspd_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+ return _mm256_mask_cvttspd_epi32(W,U,A);
+}
+
+__m128i test_mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_maskz_cvttspd_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+ return _mm256_maskz_cvttspd_epi32(U,A);
+}
+__m128i test_mm256_cvtts_roundpd_epi32(__m256d A){
+// CHECK-LABEL: @test_mm256_cvtts_roundpd_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+ return _mm256_cvtts_roundpd_epi32(A, _MM_FROUND_NEARBYINT);
+}
+__m128i test_mm256_mask_cvtts_roundpd_epi32(__m128i W,__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_mask_cvtts_roundpd_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+ return _mm256_mask_cvtts_roundpd_epi32(W,U,A,_MM_FROUND_NEARBYINT);
+}
+
+__m128i test_mm256_maskz_cvtts_roundpd_epi32(__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_maskz_cvtts_roundpd_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+ return _mm256_maskz_cvtts_roundpd_epi32(U,A,_MM_FROUND_NEARBYINT);
+}
+
+__m128i test_mm_cvttspd_epu32(__m128d A){
+// CHECK-LABEL: @test_mm_cvttspd_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.128(<2 x double>
+ return _mm_cvttspd_epu32(A);
+}
+
+__m128i test_mm_mask_cvttspd_epu32(__m128i W, __mmask8 U, __m128d A){
+// CHECK-LABEL: @test_mm_mask_cvttspd_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.128(<2 x double>
+ return _mm_mask_cvttspd_epu32(W,U,A);
+}
+
+__m128i test_mm_maskz_cvttspd_epu32( __mmask8 U, __m128d A){
+// CHECK-LABEL: @test_mm_maskz_cvttspd_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.128(<2 x double>
+ return _mm_maskz_cvttspd_epu32(U,A);
+}
+
+
+__m128i test_mm256_cvttspd_epu32(__m256d A){
+// CHECK-LABEL: @test_mm256_cvttspd_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+ return _mm256_cvttspd_epu32(A);
+}
+
+__m128i test_mm256_mask_cvttspd_epu32(__m128i W,__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_mask_cvttspd_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+ return _mm256_mask_cvttspd_epu32(W,U,A);
+}
+
+__m128i test_mm256_maskz_cvttspd_epu32(__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_maskz_cvttspd_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+ return _mm256_maskz_cvttspd_epu32(U,A);
+}
+
+__m128i test_mm256_cvtts_roundpd_epu32(__m256d A){
+// CHECK-LABEL: @test_mm256_cvtts_roundpd_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+ return _mm256_cvtts_roundpd_epu32(A, _MM_FROUND_NEARBYINT);
+}
+__m128i test_mm256_mask_cvtts_roundpd_epu32(__m128i W,__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_mask_cvtts_roundpd_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+ return _mm256_mask_cvtts_roundpd_epu32(W,U,A,_MM_FROUND_NEARBYINT);
+}
+
+__m128i test_mm256_maskz_cvtts_roundpd_epu32(__mmask8 U, __m256d A){
+// CHECK-LABEL: @test_mm256_maskz_cvtts_roundpd_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+ return _mm256_maskz_cvtts_roundpd_epu32(U,A,_MM_FROUND_NEARBYINT);
+}
+
+__m128i test_mm_cvttsps_epi32(__m128 A){
+// CHECK-LABEL: @test_mm_cvttsps_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.128(<4 x float>
+ return _mm_cvttsps_epi32(A);
+}
+
+__m128i test_mm_mask_cvttsps_epi32(__m128i W, __mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm_mask_cvttsps_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.128(<4 x float>
+ return _mm_mask_cvttsps_epi32(W,U,A);
+}
+
+__m128i test_mm_maskz_cvttsps_epi32( __mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm_maskz_cvttsps_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.128(<4 x float>
+ return _mm_maskz_cvttsps_epi32(U,A);
+}
+
+
+__m256i test_mm256_cvttsps_epi32(__m256 A){
+// CHECK-LABEL: @test_mm256_cvttsps_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+ return _mm256_cvttsps_epi32(A);
+}
+
+__m256i test_mm256_mask_cvttsps_epi32(__m256i W,__mmask8 U, __m256 A){
+// CHECK-LABEL: @test_mm256_mask_cvttsps_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+ return _mm256_mask_cvttsps_epi32(W,U,A);
+}
+
+__m256i test_mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A){
+// CHECK-LABEL: @test_mm256_maskz_cvttsps_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+ return _mm256_maskz_cvttsps_epi32(U,A);
+}
+
+
+__m256i test_mm256_cvtts_roundps_epi32(__m256 A){
+// CHECK-LABEL: @test_mm256_cvtts_roundps_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+ return _mm256_cvtts_roundps_epi32(A, _MM_FROUND_NEARBYINT);
+}
+__m256i test_mm256_mask_cvtts_roundps_epi32(__m256i W,__mmask8 U, __m256 A){
+// CHECK-LABEL: @test_mm256_mask_cvtts_roundps_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+ return _mm256_mask_cvtts_roundps_epi32(W,U,A,_MM_FROUND_NEARBYINT);
+}
+
+__m256i test_mm256_maskz_cvtts_roundps_epi32(__mmask8 U, __m256 A){
+// CHECK-LABEL: @test_mm256_maskz_cvtts_roundps_epi32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+ return _mm256_maskz_cvtts_roundps_epi32(U,A,_MM_FROUND_NEARBYINT);
+}
+
+__m128i test_mm_cvttsps_epu32(__m128 A){
+// CHECK-LABEL: @test_mm_cvttsps_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.128(<4 x float>
+ return _mm_cvttsps_epu32(A);
+}
+
+__m128i test_mm_mask_cvttsps_epu32(__m128i W, __mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm_mask_cvttsps_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.128(<4 x float>
+ return _mm_mask_cvttsps_epu32(W,U,A);
+}
+
+__m128i test_mm_maskz_cvttsps_epu32( __mmask8 U, __m128 A){
+// CHECK-LABEL: @test_mm_maskz_cvttsps_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.128(<4 x float>
+ return _mm_maskz_cvttsps_epu32(U,A);
+}
+
+__m256i test_mm256_cvttsps_epu32(__m256 A){
+// CHECK-LABEL: @test_mm256_cvttsps_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+ return _mm256_cvttsps_epu32(A);
+}
+
+__m256i test_mm256_mask_cvttsps_epu32(__m256i W,__mmask8 U, __m256 A){
+// CHECK-LABEL: @test_mm256_mask_cvttsps_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+ return _mm256_mask_cvttsps_epu32(W,U,A);
+}
+
+__m256i test_mm256_maskz_cvttsps_epu32(__mmask8 U, __m256 A){
+// CHECK-LABEL: @test_mm256_maskz_cvttsps_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+ return _mm256_maskz_cvttsps_epu32(U,A);
+}
+
+__m256i test_mm256_cvtts_roundps_epu32(__m256 A){
+// CHECK-LABEL: @test_mm256_cvtts_roundps_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+ return _mm256_cvtts_roundps_epu32(A, _MM_FROUND_NEARBYINT);
+}
+
+__m256i test_mm256_mask_cvtts_roundps_epu32(__m256i W,__mmask8 U, __m256 A){
+// CHECK-LABEL: @test_mm256_mask_cvtts_roundps_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+ return _mm256_mask_cvtts_roundps_epu32(W,U,A,_MM_FROUND_NEARBYINT);
+}
+
+__m256i test_mm256_maskz_cvtts_roundps_epu32(__mmask8 U, __m256 A){
+// CHECK-LABEL: @test_mm256_maskz_cvtts_roundps_epu32
+// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+ return _mm256_maskz_cvtts_roundps_epu32(U,A,_MM_FROUND_NEARBYINT);
+}
+
diff --git a/llvm/include/llvm/IR/IntrinsicsX86.td b/llvm/include/llvm/IR/IntrinsicsX86.td
index 1ab2002f7f6960..98fbd165ee9340 100644
--- a/llvm/include/llvm/IR/IntrinsicsX86.td
+++ b/llvm/include/llvm/IR/IntrinsicsX86.td
@@ -5520,6 +5520,106 @@ let TargetPrefix = "x86" in {
[IntrNoMem, ImmArg<ArgIndex<2>>]>;
}
+// conversion with saturation
+let TargetPrefix = "x86" in {
+ def int_x86_avx512_vcvttsss2si : ClangBuiltin<"__builtin_ia32_vcvttsss2si32">,
+ DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<1>>]>;
+ def int_x86_avx512_vcvttsss2si64 : ClangBuiltin<"__builtin_ia32_vcvttsss2si64">,
+ DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<1>>]>;
+ def int_x86_avx512_vcvttsss2usi : ClangBuiltin<"__builtin_ia32_vcvttsss2usi32">,
+ DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<1>>]>;
+ def int_x86_avx512_vcvttsss2usi64 : ClangBuiltin<"__builtin_ia32_vcvttsss2usi64">,
+ DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<1>>]>;
+ def int_x86_avx512_vcvttssd2si : ClangBuiltin<"__builtin_ia32_vcvttssd2si32">,
+ DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<1>>]>;
+ def int_x86_avx512_vcvttssd2si64 : ClangBuiltin<"__builtin_ia32_vcvttssd2si64">,
+ DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<1>>]>;
+ def int_x86_avx512_vcvttssd2usi : ClangBuiltin<"__builtin_ia32_vcvttssd2usi32">,
+ DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<1>>]>;
+ def int_x86_avx512_vcvttssd2usi64 : ClangBuiltin<"__builtin_ia32_vcvttssd2usi64">,
+ DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<1>>]>;
+ def int_x86_avx512_mask_vcvttpd2dqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2dqs128_mask">,
+ DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty],
+ [IntrNoMem]>;
+ def int_x86_avx512_mask_vcvttpd2dqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2dqs256_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttpd2dqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2dqs512_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttpd2udqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2udqs128_mask">,
+ DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty,llvm_v4i32_ty, llvm_i8_ty],
+ [IntrNoMem]>;
+ def int_x86_avx512_mask_vcvttpd2udqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2udqs256_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttpd2udqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2udqs512_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttpd2qqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2qqs128_mask">,
+ DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty,llvm_v2i64_ty, llvm_i8_ty],
+ [IntrNoMem]>;
+ def int_x86_avx512_mask_vcvttpd2qqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2qqs256_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttpd2qqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2qqs512_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttpd2uqqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs128_mask">,
+ DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty,llvm_v2i64_ty, llvm_i8_ty],
+ [IntrNoMem]>;
+ def int_x86_avx512_mask_vcvttpd2uqqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs256_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttpd2uqqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs512_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttps2dqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2dqs128_mask">,
+ DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
+ [IntrNoMem]>;
+ def int_x86_avx512_mask_vcvttps2dqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2dqs256_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttps2dqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2dqs512_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttps2udqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2udqs128_mask">,
+ DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
+ [IntrNoMem]>;
+ def int_x86_avx512_mask_vcvttps2udqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2udqs256_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttps2udqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2udqs512_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttps2qqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2qqs128_mask">,
+ DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty],
+ [IntrNoMem]>;
+ def int_x86_avx512_mask_vcvttps2qqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2qqs256_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttps2qqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2qqs512_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttps2uqqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2uqqs128_mask">,
+ DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4f32_ty,llvm_v2i64_ty, llvm_i8_ty],
+ [IntrNoMem]>;
+ def int_x86_avx512_mask_vcvttps2uqqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2uqqs256_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+ def int_x86_avx512_mask_vcvttps2uqqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2uqqs512_round_mask">,
+ DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
+ [IntrNoMem, ImmArg<ArgIndex<3>>]>;
+}
+
//===----------------------------------------------------------------------===//
// SHA intrinsics
let TargetPrefix = "x86" in {
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 63690487632f88..f4fd8607ba0dc5 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -324,7 +324,14 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
}
}
- if (Subtarget.hasSSE2()) {
+ if (Subtarget.hasAVX10_2() || Subtarget.hasAVX10_2_512()) {
+ setOperationAction(ISD::FP_TO_UINT_SAT, MVT::i32, Legal);
+ setOperationAction(ISD::FP_TO_SINT_SAT, MVT::i32, Legal);
+ if (Subtarget.is64Bit()) {
+ setOperationAction(ISD::FP_TO_UINT_SAT, MVT::i64, Legal);
+ setOperationAction(ISD::FP_TO_SINT_SAT, MVT::i64, Legal);
+ }
+ } else if (Subtarget.hasSSE2()) {
// Custom lowering for saturating float to int conversions.
// We handle promotion to larger result types manually.
for (MVT VT : { MVT::i8, MVT::i16, MVT::i32 }) {
@@ -34090,6 +34097,16 @@ const char *X86TargetLowering::getTargetNodeName(unsigned Opcode) const {
NODE_NAME_CASE(CTEST)
NODE_NAME_CASE(CLOAD)
NODE_NAME_CASE(CSTORE)
+ NODE_NAME_CASE(CVTTS2SIS)
+ NODE_NAME_CASE(CVTTS2UIS)
+ NODE_NAME_CASE(CVTTS2SIS_SAE)
+ NODE_NAME_CASE(CVTTS2UIS_SAE)
+ NODE_NAME_CASE(CVTTP2SIS)
+ NODE_NAME_CASE(MCVTTP2SIS)
+ NODE_NAME_CASE(CVTTP2UIS_SAE)
+ NODE_NAME_CASE(CVTTP2SIS_SAE)
+ NODE_NAME_CASE(CVTTP2UIS)
+ NODE_NAME_CASE(MCVTTP2UIS)
}
return nullptr;
#undef NODE_NAME_CASE
@@ -37502,7 +37519,9 @@ void X86TargetLowering::computeKnownBitsForTargetNode(const SDValue Op,
case X86ISD::VFPROUND:
case X86ISD::VMFPROUND:
case X86ISD::CVTPS2PH:
- case X86ISD::MCVTPS2PH: {
+ case X86ISD::MCVTPS2PH:
+ case X86ISD::MCVTTP2SIS:
+ case X86ISD::MCVTTP2UIS: {
// Truncations/Conversions - upper elements are known zero.
EVT SrcVT = Op.getOperand(0).getValueType();
if (SrcVT.isVector()) {
diff --git a/llvm/lib/Target/X86/X86ISelLowering.h b/llvm/lib/Target/X86/X86ISelLowering.h
index 2e7538cb3c1183..a7d65caa914c8c 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.h
+++ b/llvm/lib/Target/X86/X86ISelLowering.h
@@ -649,6 +649,18 @@ namespace llvm {
CVTTP2UI,
CVTTP2SI_SAE,
CVTTP2UI_SAE,
+
+ // Saturation enabled Vector float/double to signed/unsigned
+ // integer with truncation.
+ CVTTP2SIS,
+ CVTTP2UIS,
+ CVTTP2SIS_SAE,
+ CVTTP2UIS_SAE,
+ // Masked versions of above. Used for v2f64 to v4i32.
+ // SRC, PASSTHRU, MASK
+ MCVTTP2SIS,
+ MCVTTP2UIS,
+
// Scalar float/double to signed/unsigned integer with truncation.
CVTTS2SI,
CVTTS2UI,
@@ -659,6 +671,12 @@ namespace llvm {
CVTSI2P,
CVTUI2P,
+ // Scalar float/double to signed/unsigned integer with saturation.
+ CVTTS2SIS,
+ CVTTS2UIS,
+ CVTTS2SIS_SAE,
+ CVTTS2UIS_SAE,
+
// Masked versions of above. Used for v2f64->v4f32.
// SRC, PASSTHRU, MASK
MCVTP2SI,
diff --git a/llvm/lib/Target/X86/X86InstrAVX10.td b/llvm/lib/Target/X86/X86InstrAVX10.td
index fe381b37782629..391bccf9dab5d7 100644
--- a/llvm/lib/Target/X86/X86InstrAVX10.td
+++ b/llvm/lib/Target/X86/X86InstrAVX10.td
@@ -624,3 +624,314 @@ defm VCVTTPS2IUBS : avx10_sat_cvt_base<0x6a, "vcvttps2iubs", SchedWriteVecIMul,
avx512vl_i32_info, avx512vl_f32_info,
X86vcvttp2iubsSAE>,
AVX512PDIi8Base, T_MAP5, EVEX_CD8<32, CD8VF>;
+
+//-------------------------------------------------
+// AVX10 SATCVT-DS instructions
+//-------------------------------------------------
+
+// Convert Double to Signed/Unsigned Doubleword with truncation.
+multiclass avx512_cvttpd2dqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
+ SDNode MaskOpNode, SDNode OpNodeSAE,
+ X86SchedWriteWidths sched> {
+ let Predicates = [HasAVX10_2, HasAVX10_2_512] in {
+ defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f64_info, OpNode,
+ MaskOpNode, sched.ZMM>,
+ avx512_vcvt_fp_sae<opc, OpcodeStr, v8i32x_info, v8f64_info,
+ OpNodeSAE, sched.ZMM>, EVEX_V512;
+ }
+ let Predicates = [HasAVX10_2, HasVLX] in {
+ defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v2f64x_info,
+ null_frag, null_frag, sched.XMM, "{1to2}", "{x}",
+ f128mem, VK2WM>, EVEX_V128;
+ defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f64x_info, OpNode,
+ MaskOpNode, sched.YMM, "{1to4}", "{y}">, EVEX_V256;
+ }
+
+ let Predicates = [HasAVX10_2, HasVLX], hasEVEX_U=1 in {
+ defm Z256 : avx512_vcvt_fp_sae<opc, OpcodeStr, v4i32x_info, v4f64x_info, OpNodeSAE,
+ sched.YMM>, EVEX_V256;
+ }
+
+
+ def : InstAlias<OpcodeStr#"x\t{$src, $dst|$dst, $src}",
+ (!cast<Instruction>(NAME # "Z128rr") VR128X:$dst,
+ VR128X:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
+ (!cast<Instruction>(NAME # "Z128rrk") VR128X:$dst,
+ VK2WM:$mask, VR128X:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"x\t{$src, $dst {${mask}} {z}|$dst {${mask}} {z}, $src}",
+ (!cast<Instruction>(NAME # "Z128rrkz") VR128X:$dst,
+ VK2WM:$mask, VR128X:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst|$dst, ${src}{1to2}}",
+ (!cast<Instruction>(NAME # "Z128rmb") VR128X:$dst,
+ f64mem:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}}|"
+ "$dst {${mask}}, ${src}{1to2}}",
+ (!cast<Instruction>(NAME # "Z128rmbk") VR128X:$dst,
+ VK2WM:$mask, f64mem:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"x\t{${src}{1to2}, $dst {${mask}} {z}|"
+ "$dst {${mask}} {z}, ${src}{1to2}}",
+ (!cast<Instruction>(NAME # "Z128rmbkz") VR128X:$dst,
+ VK2WM:$mask, f64mem:$src), 0, "att">;
+
+ def : InstAlias<OpcodeStr#"y\t{$src, $dst|$dst, $src}",
+ (!cast<Instruction>(NAME # "Z256rr") VR128X:$dst,
+ VR256X:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"y\t{{sae} $src, $dst|$dst, $src {sae}}",
+ (!cast<Instruction>(NAME # "Z256rrb") VR128X:$dst,
+ VR256X:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
+ (!cast<Instruction>(NAME # "Z256rrk") VR128X:$dst,
+ VK4WM:$mask, VR256X:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"y\t{{sae} $src, $dst {${mask}}|$dst {${mask}}, $src {sae}}",
+ (!cast<Instruction>(NAME # "Z256rrbk") VR128X:$dst,
+ VK4WM:$mask, VR256X:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"y\t{$src, $dst {${mask}} {z}|$dst {${mask}} {z}, $src}",
+ (!cast<Instruction>(NAME # "Z256rrkz") VR128X:$dst,
+ VK4WM:$mask, VR256X:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"y\t{{sae} $src, $dst {${mask}} {z}|$dst {${mask}} {z}, $src {sae}}",
+ (!cast<Instruction>(NAME # "Z256rrbkz") VR128X:$dst,
+ VK4WM:$mask, VR256X:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst|$dst, ${src}{1to4}}",
+ (!cast<Instruction>(NAME # "Z256rmb") VR128X:$dst,
+ f64mem:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}}|"
+ "$dst {${mask}}, ${src}{1to4}}",
+ (!cast<Instruction>(NAME # "Z256rmbk") VR128X:$dst,
+ VK4WM:$mask, f64mem:$src), 0, "att">;
+ def : InstAlias<OpcodeStr#"y\t{${src}{1to4}, $dst {${mask}} {z}|"
+ "$dst {${mask}} {z}, ${src}{1to4}}",
+ (!cast<Instruction>(NAME # "Z256rmbkz") VR128X:$dst,
+ VK4WM:$mask, f64mem:$src), 0, "att">;
+}
+
+// Convert Double to Signed/Unsigned Quardword with truncation saturationn enabled
+multiclass avx512_cvttpd2qqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
+ SDNode MaskOpNode, SDNode OpNodeRnd,
+ X86SchedWriteWidths sched> {
+ let Predicates = [HasDQI, HasAVX10_2, HasAVX10_2_512] in {
+ defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f64_info, OpNode,
+ MaskOpNode, sched.ZMM>,
+ avx512_vcvt_fp_sae<opc, OpcodeStr, v8i64_info, v8f64_info,
+ OpNodeRnd, sched.ZMM>, EVEX_V512;
+ }
+ let Predicates = [HasDQI, HasAVX10_2, HasVLX] in {
+ defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v2f64x_info, OpNode,
+ MaskOpNode, sched.XMM>, EVEX_V128;
+ defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f64x_info, OpNode,
+ MaskOpNode, sched.YMM>, EVEX_V256;
+ }
+ let Predicates = [HasDQI, HasAVX10_2, HasVLX], hasEVEX_U=1 in {
+ defm Z256 : avx512_vcvt_fp_sae<opc, OpcodeStr, v4i64x_info, v4f64x_info,
+ OpNodeRnd, sched.YMM>, EVEX_V256;
+ }
+}
+
+// Convert Float to Signed/Unsigned Quardword with truncation
+multiclass avx512_cvttps2qqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
+ SDNode MaskOpNode, SDNode OpNodeRnd,
+ X86SchedWriteWidths sched> {
+ let Predicates = [HasDQI, HasAVX10_2, HasAVX10_2_512] in {
+ defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f32x_info, OpNode,
+ MaskOpNode, sched.ZMM>,
+ avx512_vcvt_fp_sae<opc, OpcodeStr, v8i64_info, v8f32x_info,
+ OpNodeRnd, sched.ZMM>, EVEX_V512;
+ }
+ let Predicates = [HasDQI, HasAVX10_2, HasVLX] in {
+ defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v4f32x_info, OpNode,
+ MaskOpNode, sched.XMM, "{1to2}", "", f64mem, VK2WM,
+ (v2i64 (OpNode (bc_v4f32 (v2f64
+ (scalar_to_vector (loadf64 addr:$src)))))),
+ (v2i64 (MaskOpNode (bc_v4f32 (v2f64
+ (scalar_to_vector (loadf64 addr:$src))))))>,
+ EVEX_V128;
+ defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f32x_info, OpNode,
+ MaskOpNode, sched.YMM>, EVEX_V256;
+ }
+
+ let Predicates = [HasDQI, HasAVX10_2, HasVLX], hasEVEX_U=1 in {
+ defm Z256 : avx512_vcvt_fp_sae<opc, OpcodeStr, v4i64x_info, v4f32x_info, OpNodeRnd,
+ sched.YMM>, EVEX_V256;
+ }
+}
+
+// Convert Float to Signed/Unsigned Doubleword with truncation
+multiclass avx512_cvttps2dqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
+ SDNode MaskOpNode,
+ SDNode OpNodeSAE, X86SchedWriteWidths sched> {
+ let Predicates = [HasAVX10_2, HasAVX10_2_512] in {
+ defm Z : avx512_vcvt_fp<opc, OpcodeStr, v16i32_info, v16f32_info, OpNode,
+ MaskOpNode, sched.ZMM>,
+ avx512_vcvt_fp_sae<opc, OpcodeStr, v16i32_info, v16f32_info,
+ OpNodeSAE, sched.ZMM>, EVEX_V512;
+ }
+
+ let Predicates = [HasAVX10_2, HasVLX] in {
+ defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f32x_info, OpNode,
+ MaskOpNode, sched.XMM>, EVEX_V128;
+ defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f32x_info, OpNode,
+ MaskOpNode, sched.YMM>, EVEX_V256;
+ }
+
+ let Predicates = [HasAVX10_2, HasVLX], hasEVEX_U=1 in {
+ defm Z256 : avx512_vcvt_fp_sae<opc, OpcodeStr, v8i32x_info, v8f32x_info,
+ OpNodeSAE, sched.YMM>, EVEX_V256;
+ }
+}
+
+defm VCVTTPD2DQS : avx512_cvttpd2dqs<0x6D, "vcvttpd2dqs", X86cvttp2sis,
+ X86cvttp2sis, X86cvttp2sisSAE,
+ SchedWriteCvtPD2DQ>,
+ PD, REX_W, T_MAP5,PS, EVEX_CD8<64, CD8VF>;
+defm VCVTTPD2UDQS : avx512_cvttpd2dqs<0x6C, "vcvttpd2udqs", X86cvttp2uis,
+ X86cvttp2uis, X86cvttp2uisSAE,
+ SchedWriteCvtPD2DQ>,
+ REX_W, T_MAP5,PS, EVEX_CD8<64, CD8VF>;
+defm VCVTTPS2DQS : avx512_cvttps2dqs<0x6D, "vcvttps2dqs", X86cvttp2sis,
+ X86cvttp2sis, X86cvttp2sisSAE,
+ SchedWriteCvtPS2DQ>, T_MAP5,PS,
+ EVEX_CD8<32, CD8VF>;
+defm VCVTTPS2UDQS : avx512_cvttps2dqs<0x6C, "vcvttps2udqs", X86cvttp2uis,
+ X86cvttp2uis, X86cvttp2uisSAE,
+ SchedWriteCvtPS2DQ>, T_MAP5,PS, EVEX_CD8<32, CD8VF>;
+defm VCVTTPD2QQS : avx512_cvttpd2qqs<0x6D, "vcvttpd2qqs", X86cvttp2sis,
+ X86cvttp2sis, X86cvttp2sisSAE,
+ SchedWriteCvtPD2DQ>, REX_W, T_MAP5,PD,
+ EVEX_CD8<64, CD8VF>;
+defm VCVTTPS2QQS : avx512_cvttps2qqs<0x6D, "vcvttps2qqs", X86cvttp2sis,
+ X86cvttp2sis, X86cvttp2sisSAE,
+ SchedWriteCvtPS2DQ>, T_MAP5,PD,
+ EVEX_CD8<32, CD8VH>;
+defm VCVTTPD2UQQS : avx512_cvttpd2qqs<0x6C, "vcvttpd2uqqs", X86cvttp2uis,
+ X86cvttp2uis, X86cvttp2uisSAE,
+ SchedWriteCvtPD2DQ>, REX_W, T_MAP5,PD,
+ EVEX_CD8<64, CD8VF>;
+defm VCVTTPS2UQQS : avx512_cvttps2qqs<0x6C, "vcvttps2uqqs", X86cvttp2uis,
+ X86cvttp2uis, X86cvttp2uisSAE,
+ SchedWriteCvtPS2DQ>, T_MAP5,PD,
+ EVEX_CD8<32, CD8VH>;
+
+let Predicates = [HasAVX10_2] in {
+// Special patterns to allow use of X86mcvttp2si for masking. Instruction
+// patterns have been disabled with null_frag.
+// Patterns VCVTTPD2DQSZ128
+
+def : Pat<(v4i32 (X86cvttp2sis (v2f64 VR128X:$src))),
+ (VCVTTPD2DQSZ128rr VR128X:$src)>;
+def : Pat<(v4i32 (X86cvttp2sis (loadv2f64 addr:$src))),
+ (VCVTTPD2DQSZ128rm addr:$src)>;
+def : Pat<(v4i32 (X86cvttp2sis (v2f64 (X86VBroadcastld64 addr:$src)))),
+ (VCVTTPD2DQSZ128rmb addr:$src)>;
+def : Pat<(X86mcvttp2sis (v2f64 VR128X:$src), (v4i32 VR128X:$src0),
+ VK2WM:$mask),
+ (VCVTTPD2DQSZ128rrk VR128X:$src0, VK2WM:$mask, VR128X:$src)>;
+def : Pat<(X86mcvttp2sis (v2f64 VR128X:$src), v4i32x_info.ImmAllZerosV,
+ VK2WM:$mask),
+ (VCVTTPD2DQSZ128rrkz VK2WM:$mask, VR128X:$src)>;
+def : Pat<(X86mcvttp2sis (loadv2f64 addr:$src), (v4i32 VR128X:$src0),
+ VK2WM:$mask),
+ (VCVTTPD2DQSZ128rmk VR128X:$src0, VK2WM:$mask, addr:$src)>;
+def : Pat<(X86mcvttp2sis (loadv2f64 addr:$src), v4i32x_info.ImmAllZerosV,
+ VK2WM:$mask),
+ (VCVTTPD2DQSZ128rmkz VK2WM:$mask, addr:$src)>;
+def : Pat<(X86mcvttp2sis (v2f64 (X86VBroadcastld64 addr:$src)),
+ (v4i32 VR128X:$src0), VK2WM:$mask),
+ (VCVTTPD2DQSZ128rmbk VR128X:$src0, VK2WM:$mask, addr:$src)>;
+def : Pat<(X86mcvttp2sis (v2f64 (X86VBroadcastld64 addr:$src)),
+ v4i32x_info.ImmAllZerosV, VK2WM:$mask),
+ (VCVTTPD2DQSZ128rmbkz VK2WM:$mask, addr:$src)>;
+
+// Patterns VCVTTPD2UDQSZ128
+def : Pat<(v4i32 (X86cvttp2uis (v2f64 (X86VBroadcastld64 addr:$src)))),
+ (VCVTTPD2UDQSZ128rmb addr:$src)>;
+def : Pat<(v4i32 (X86cvttp2uis (v2f64 VR128X:$src))),
+ (VCVTTPD2UDQSZ128rr VR128X:$src)>;
+def : Pat<(v4i32 (X86cvttp2uis (v2f64 (X86VBroadcastld64 addr:$src)))),
+ (VCVTTPD2UDQSZ128rmb addr:$src)>;
+def : Pat<(X86mcvttp2uis (v2f64 VR128X:$src), (v4i32 VR128X:$src0),
+ VK2WM:$mask),
+ (VCVTTPD2UDQSZ128rrk VR128X:$src0, VK2WM:$mask, VR128X:$src)>;
+def : Pat<(X86mcvttp2uis (v2f64 VR128X:$src), v4i32x_info.ImmAllZerosV,
+ VK2WM:$mask),
+ (VCVTTPD2UDQSZ128rrkz VK2WM:$mask, VR128X:$src)>;
+def : Pat<(X86mcvttp2uis (loadv2f64 addr:$src), (v4i32 VR128X:$src0),
+ VK2WM:$mask),
+ (VCVTTPD2UDQSZ128rmk VR128X:$src0, VK2WM:$mask, addr:$src)>;
+def : Pat<(X86mcvttp2uis (loadv2f64 addr:$src), v4i32x_info.ImmAllZerosV,
+ VK2WM:$mask),
+ (VCVTTPD2UDQSZ128rmkz VK2WM:$mask, addr:$src)>;
+def : Pat<(X86mcvttp2uis (v2f64 (X86VBroadcastld64 addr:$src)),
+ (v4i32 VR128X:$src0), VK2WM:$mask),
+ (VCVTTPD2UDQSZ128rmbk VR128X:$src0, VK2WM:$mask, addr:$src)>;
+def : Pat<(X86mcvttp2uis (v2f64 (X86VBroadcastld64 addr:$src)),
+ v4i32x_info.ImmAllZerosV, VK2WM:$mask),
+ (VCVTTPD2UDQSZ128rmbkz VK2WM:$mask, addr:$src)>;
+}
+
+// Convert scalar float/double to signed/unsigned int 32/64 with truncation and saturation.
+multiclass avx512_cvt_s_ds<bits<8> opc, string asm, X86VectorVTInfo _SrcRC,
+ X86VectorVTInfo _DstRC, SDPatternOperator OpNode,
+ SDNode OpNodeInt, SDNode OpNodeSAE,
+ X86FoldableSchedWrite sched> {
+ let Predicates = [HasAVX10_2], ExeDomain = _SrcRC.ExeDomain in {
+ let isCodeGenOnly = 1 in {
+ def rr : AVX512<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.FRC:$src),
+ !strconcat(asm,"\t{$src, $dst|$dst, $src}"),
+ [(set _DstRC.RC:$dst, (OpNode _SrcRC.FRC:$src, _DstRC.EltVT))]>,
+ EVEX, VEX_LIG, Sched<[sched]>, SIMD_EXC;
+ def rm : AVX512<opc, MRMSrcMem, (outs _DstRC.RC:$dst), (ins _SrcRC.ScalarMemOp:$src),
+ !strconcat(asm,"\t{$src, $dst|$dst, $src}"),
+ [(set _DstRC.RC:$dst, (OpNode (_SrcRC.ScalarLdFrag addr:$src), _DstRC.EltVT))]>,
+ EVEX, VEX_LIG, Sched<[sched.Folded, sched.ReadAfterFold]>, SIMD_EXC;
+ }
+ def rr_Int : AVX512<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.RC:$src),
+ !strconcat(asm,"\t{$src, $dst|$dst, $src}"),
+ [(set _DstRC.RC:$dst, (OpNodeInt (_SrcRC.VT _SrcRC.RC:$src)))]>,
+ EVEX, VEX_LIG, Sched<[sched]>, SIMD_EXC;
+ let Uses = [MXCSR] in
+ def rrb_Int : AVX512<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.RC:$src),
+ !strconcat(asm,"\t{{sae}, $src, $dst|$dst, $src, {sae}}"),
+ [(set _DstRC.RC:$dst, (OpNodeSAE (_SrcRC.VT _SrcRC.RC:$src)))]>,
+ EVEX, VEX_LIG, EVEX_B, Sched<[sched]>;
+ def rm_Int : AVX512<opc, MRMSrcMem, (outs _DstRC.RC:$dst),
+ (ins _SrcRC.IntScalarMemOp:$src),
+ !strconcat(asm,"\t{$src, $dst|$dst, $src}"),
+ [(set _DstRC.RC:$dst,
+ (OpNodeInt (_SrcRC.ScalarIntMemFrags addr:$src)))]>,
+ EVEX, VEX_LIG, Sched<[sched.Folded, sched.ReadAfterFold]>,
+ SIMD_EXC;
+ }
+}
+
+defm VCVTTSS2SIS: avx512_cvt_s_ds<0x6D, "vcvttss2sis", f32x_info, i32x_info,
+ fp_to_sint_sat, X86cvttss2Int,
+ X86cvttss2IntSAE, WriteCvtSS2I>,
+ T_MAP5,XS, EVEX_CD8<32, CD8VT1>;
+defm VCVTTSS2SI64S: avx512_cvt_s_ds<0x6D, "vcvttss2sis", f32x_info, i64x_info,
+ fp_to_sint_sat, X86cvttss2Int,
+ X86cvttss2IntSAE, WriteCvtSS2I>,
+ REX_W, T_MAP5,XS, EVEX_CD8<32, CD8VT1>;
+defm VCVTTSD2SIS: avx512_cvt_s_ds<0x6D, "vcvttsd2sis", f64x_info, i32x_info,
+ fp_to_sint_sat, X86cvttss2Int,
+ X86cvttss2IntSAE, WriteCvtSD2I>,
+ T_MAP5,XD, EVEX_CD8<64, CD8VT1>;
+defm VCVTTSD2SI64S: avx512_cvt_s_ds<0x6D, "vcvttsd2sis", f64x_info, i64x_info,
+ fp_to_sint_sat, X86cvttss2Int,
+ X86cvttss2IntSAE, WriteCvtSD2I>,
+ REX_W, T_MAP5,XD, EVEX_CD8<64, CD8VT1>;
+defm VCVTTSS2USIS: avx512_cvt_s_ds<0x6C, "vcvttss2usis", f32x_info, i32x_info,
+ fp_to_uint_sat, X86cvttss2UInt,
+ X86cvttss2UIntSAE, WriteCvtSS2I>,
+ T_MAP5,XS, EVEX_CD8<32, CD8VT1>;
+defm VCVTTSS2USI64S: avx512_cvt_s_ds<0x6C, "vcvttss2usis", f32x_info, i64x_info,
+ fp_to_uint_sat, X86cvttss2UInt,
+ X86cvttss2UIntSAE, WriteCvtSS2I>,
+ T_MAP5,XS,REX_W, EVEX_CD8<32, CD8VT1>;
+defm VCVTTSD2USIS: avx512_cvt_s_ds<0x6C, "vcvttsd2usis", f64x_info, i32x_info,
+ fp_to_uint_sat, X86cvttss2UInt,
+ X86cvttss2UIntSAE, WriteCvtSD2I>,
+ T_MAP5,XD, EVEX_CD8<64, CD8VT1>;
+defm VCVTTSD2USI64S: avx512_cvt_s_ds<0x6C, "vcvttsd2usis", f64x_info, i64x_info,
+ fp_to_uint_sat, X86cvttss2UInt,
+ X86cvttss2UIntSAE, WriteCvtSD2I>,
+ T_MAP5,XD, REX_W, EVEX_CD8<64, CD8VT1>;
diff --git a/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td b/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
index 6db1cf7c9ee1fd..2ecf8348ed2874 100644
--- a/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
+++ b/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
@@ -665,6 +665,11 @@ def X86cvts2usi : SDNode<"X86ISD::CVTS2UI", SDTSFloatToInt>;
def X86cvts2siRnd : SDNode<"X86ISD::CVTS2SI_RND", SDTSFloatToIntRnd>;
def X86cvts2usiRnd : SDNode<"X86ISD::CVTS2UI_RND", SDTSFloatToIntRnd>;
+def X86cvttss2Int : SDNode<"X86ISD::CVTTS2SIS", SDTSFloatToInt>;
+def X86cvttss2UInt : SDNode<"X86ISD::CVTTS2UIS", SDTSFloatToInt>;
+def X86cvttss2IntSAE : SDNode<"X86ISD::CVTTS2SIS_SAE", SDTSFloatToInt>;
+def X86cvttss2UIntSAE : SDNode<"X86ISD::CVTTS2UIS_SAE", SDTSFloatToInt>;
+
// Vector with rounding mode
// cvtt fp-to-int staff
@@ -674,6 +679,11 @@ def X86cvttp2uiSAE : SDNode<"X86ISD::CVTTP2UI_SAE", SDTFloatToInt>;
def X86VSintToFpRnd : SDNode<"X86ISD::SINT_TO_FP_RND", SDTVintToFPRound>;
def X86VUintToFpRnd : SDNode<"X86ISD::UINT_TO_FP_RND", SDTVintToFPRound>;
+def X86cvttp2sisSAE : SDNode<"X86ISD::CVTTP2SIS_SAE", SDTFloatToInt>;
+def X86cvttp2uisSAE : SDNode<"X86ISD::CVTTP2UIS_SAE", SDTFloatToInt>;
+def X86cvttp2sis : SDNode<"X86ISD::CVTTP2SIS", SDTFloatToInt>;
+def X86cvttp2uis : SDNode<"X86ISD::CVTTP2UIS", SDTFloatToInt>;
+
// cvt fp-to-int staff
def X86cvtp2IntRnd : SDNode<"X86ISD::CVTP2SI_RND", SDTFloatToIntRnd>;
def X86cvtp2UIntRnd : SDNode<"X86ISD::CVTP2UI_RND", SDTFloatToIntRnd>;
@@ -729,6 +739,8 @@ def X86mcvtp2Int : SDNode<"X86ISD::MCVTP2SI", SDTMFloatToInt>;
def X86mcvtp2UInt : SDNode<"X86ISD::MCVTP2UI", SDTMFloatToInt>;
def X86mcvttp2si : SDNode<"X86ISD::MCVTTP2SI", SDTMFloatToInt>;
def X86mcvttp2ui : SDNode<"X86ISD::MCVTTP2UI", SDTMFloatToInt>;
+def X86mcvttp2sis : SDNode<"X86ISD::MCVTTP2SIS", SDTMFloatToInt>;
+def X86mcvttp2uis : SDNode<"X86ISD::MCVTTP2UIS", SDTMFloatToInt>;
def SDTcvtph2ps : SDTypeProfile<1, 1, [SDTCVecEltisVT<0, f32>,
SDTCVecEltisVT<1, i16>]>;
diff --git a/llvm/lib/Target/X86/X86IntrinsicsInfo.h b/llvm/lib/Target/X86/X86IntrinsicsInfo.h
index 47be08c8af3efe..c1e58ef3703bf6 100644
--- a/llvm/lib/Target/X86/X86IntrinsicsInfo.h
+++ b/llvm/lib/Target/X86/X86IntrinsicsInfo.h
@@ -1212,6 +1212,54 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH),
X86_INTRINSIC_DATA(avx512_mask_vcvtps2ph_512, CVTPS2PH_MASK,
X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2dqs_128, CVTPD2DQ_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::MCVTTP2SIS),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2dqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2dqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2qqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, 0),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2qqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2qqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2udqs_128, CVTPD2DQ_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::MCVTTP2SIS),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2udqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2udqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2uqqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, 0),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2uqqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttpd2uqqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2dqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, 0),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2dqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2dqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2qqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, 0),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2qqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2qqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2udqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, 0),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2udqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2udqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2uqqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, 0),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2uqqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
+ X86_INTRINSIC_DATA(avx512_mask_vcvttps2uqqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
X86_INTRINSIC_DATA(avx512_maskz_fixupimm_pd_128, FIXUPIMM_MASKZ,
X86ISD::VFIXUPIMM, 0),
@@ -1387,6 +1435,23 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::CVTS2UI_RND),
X86_INTRINSIC_DATA(avx512_vcvtss2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI,
X86ISD::CVTS2UI_RND),
+ X86_INTRINSIC_DATA(avx512_vcvttssd2si, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
+ X86ISD::CVTTS2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_vcvttssd2si64, INTR_TYPE_1OP_SAE,
+ X86ISD::CVTTS2SIS, X86ISD::CVTTS2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_vcvttssd2usi, INTR_TYPE_1OP_SAE,
+ X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
+ X86_INTRINSIC_DATA(avx512_vcvttssd2usi64, INTR_TYPE_1OP_SAE,
+ X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
+ X86_INTRINSIC_DATA(avx512_vcvttsss2si, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
+ X86ISD::CVTTS2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_vcvttsss2si64, INTR_TYPE_1OP_SAE,
+ X86ISD::CVTTS2SIS, X86ISD::CVTTS2SIS_SAE),
+ X86_INTRINSIC_DATA(avx512_vcvttsss2usi, INTR_TYPE_1OP_SAE,
+ X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
+ X86_INTRINSIC_DATA(avx512_vcvttsss2usi64, INTR_TYPE_1OP_SAE,
+ X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
+
X86_INTRINSIC_DATA(avx512_vfmadd_f32, INTR_TYPE_3OP, ISD::FMA,
X86ISD::FMADD_RND),
X86_INTRINSIC_DATA(avx512_vfmadd_f64, INTR_TYPE_3OP, ISD::FMA,
@@ -1399,7 +1464,6 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::FMADDSUB_RND),
X86_INTRINSIC_DATA(avx512_vfmaddsub_ps_512, INTR_TYPE_3OP, X86ISD::FMADDSUB,
X86ISD::FMADDSUB_RND),
-
X86_INTRINSIC_DATA(avx512_vpdpbusd_128, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
X86_INTRINSIC_DATA(avx512_vpdpbusd_256, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
X86_INTRINSIC_DATA(avx512_vpdpbusd_512, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
diff --git a/llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll b/llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll
new file mode 100644
index 00000000000000..5d3bb704984fb3
--- /dev/null
+++ b/llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll
@@ -0,0 +1,548 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
+; RUN: llc < %s -verify-machineinstrs -mtriple=x86_64-unknown-unknown --show-mc-encoding -mattr=+avx10.2-512 | FileCheck %s --check-prefixes=CHECK,X64
+; RUN: llc < %s -verify-machineinstrs -mtriple=i686-unknown-unknown --show-mc-encoding -mattr=+avx10.2-512 | FileCheck %s --check-prefixes=CHECK,X86
+
+
+define <8 x i32> @test_int_x86_mask_vcvtt_pd2dqs_512(<8 x double> %x0, <8 x i32> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_512:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %zmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x49,0x6d,0xc8]
+; X64-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2dqs_512:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %zmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x49,0x6d,0xc8]
+; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512( <8 x double> %x0, <8 x i32> %src, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+define <8 x i32> @test_int_x86_maskz_vcvtt_pd2dqs_512_z(<8 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2dqs_512_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2dqs_512_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512( <8 x double> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+define <8 x i32> @test_int_x86_mask_vcvtt_pd2dqs_512_undef(<8 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_512_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2dqs_512_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512( <8 x double> %x0, <8 x i32> undef, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+
+define <8 x i32> @test_int_x86_mask_vcvtt_pd2dqs_512_default(<8 x double>* %x0) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_512_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttpd2dqs (%rdi), %ymm0 # encoding: [0x62,0xf5,0xfc,0x48,0x6d,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2dqs_512_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs (%eax), %ymm0 # encoding: [0x62,0xf5,0xfc,0x48,0x6d,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x10 = load <8 x double>, <8 x double> * %x0
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512( <8 x double> %x10, <8 x i32> undef, i8 -1, i32 4)
+ ret <8 x i32> %res
+}
+
+declare <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>, <8 x i32>, i8 , i32)
+
+define <8 x i32> @test_int_x86_mask_vcvtt_pd2udqs_512(<8 x double> %x0, <8 x i32> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2udqs_512:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2udqs %zmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x49,0x6c,0xc8]
+; X64-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2udqs_512:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2udqs %zmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x49,0x6c,0xc8]
+; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512( <8 x double> %x0, <8 x i32> %src, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+define <8 x i32> @test_int_x86_maskz_vcvtt_pd2udqs_512_z(<8 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2udqs_512_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2udqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2udqs_512_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2udqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512( <8 x double> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+define <8 x i32> @test_int_x86_mask_vcvtt_pd2udqs_512_undef(<8 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2udqs_512_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2udqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2udqs_512_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2udqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512( <8 x double> %x0, <8 x i32> undef, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+define <8 x i32> @test_int_x86_mask_vcvtt_pd2udqs_512_default(<8 x double>* %x0) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2udqs_512_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttpd2udqs (%rdi), %ymm0 # encoding: [0x62,0xf5,0xfc,0x48,0x6c,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2udqs_512_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttpd2udqs (%eax), %ymm0 # encoding: [0x62,0xf5,0xfc,0x48,0x6c,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x10 = load <8 x double>, <8 x double> * %x0
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512( <8 x double> %x10, <8 x i32> undef, i8 -1, i32 4)
+ ret <8 x i32> %res
+}
+
+declare <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>, <8 x i32>, i8 , i32)
+
+
+define <8 x i64> @test_int_x86_mask_vcvtt_pd2qqs_512(<8 x double> %x0, <8 x i64> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_512:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2qqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x49,0x6d,0xc8]
+; X64-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2qqs_512:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2qqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x49,0x6d,0xc8]
+; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512( <8 x double> %x0, <8 x i64> %src, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+define <8 x i64> @test_int_x86_maskz_vcvtt_pd2qqs_512_z(<8 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2qqs_512_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2qqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2qqs_512_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2qqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512( <8 x double> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+define <8 x i64> @test_int_x86_mask_vcvtt_pd2qqs_512_undef(<8 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_512_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2qqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2qqs_512_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2qqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512( <8 x double> %x0, <8 x i64> undef, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+
+define <8 x i64> @test_int_x86_mask_vcvtt_pd2qqs_512_default(<8 x double>* %x0) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_512_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttpd2qqs (%rdi), %zmm0 # encoding: [0x62,0xf5,0xfd,0x48,0x6d,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2qqs_512_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttpd2qqs (%eax), %zmm0 # encoding: [0x62,0xf5,0xfd,0x48,0x6d,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x10 = load <8 x double>, <8 x double>* %x0
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512( <8 x double> %x10, <8 x i64> undef, i8 -1, i32 4)
+ ret <8 x i64> %res
+}
+
+declare <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>, <8 x i64>, i8 , i32)
+
+define <8 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_512(<8 x double> %x0, <8 x i64> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_512:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2uqqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x49,0x6c,0xc8]
+; X64-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_512:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2uqqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x49,0x6c,0xc8]
+; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512( <8 x double> %x0, <8 x i64> %src, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+define <8 x i64> @test_int_x86_maskz_vcvtt_pd2uqqs_512_z(<8 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2uqqs_512_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2uqqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2uqqs_512_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2uqqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512( <8 x double> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+define <8 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_512_undef(<8 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_512_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2uqqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_512_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2uqqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512( <8 x double> %x0, <8 x i64> undef, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+
+define <8 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_512_default(<8 x double>* %x0) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_512_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttpd2uqqs (%rdi), %zmm0 # encoding: [0x62,0xf5,0xfd,0x48,0x6c,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_512_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttpd2uqqs (%eax), %zmm0 # encoding: [0x62,0xf5,0xfd,0x48,0x6c,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x10 = load <8 x double>, <8 x double>* %x0
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512( <8 x double> %x10, <8 x i64> undef, i8 -1, i32 4)
+ ret <8 x i64> %res
+}
+
+declare <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>, <8 x i64>, i8 , i32)
+
+
+
+
+
+define <16 x i32> @test_int_x86_mask_vcvtt_ps2dqs_512(<16 x float> %x0, <16 x i32> %src, i16 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_512:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2dqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x49,0x6d,0xc8]
+; X64-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2dqs_512:
+; X86: # %bb.0:
+; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2dqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x49,0x6d,0xc8]
+; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x0, <16 x i32> %src, i16 %mask, i32 4)
+ ret <16 x i32> %res
+}
+
+define <16 x i32> @test_int_x86_maskz_vcvtt_ps2dqs_512_z(<16 x float> %x0, i16 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2dqs_512_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2dqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2dqs_512_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2dqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x0, <16 x i32> zeroinitializer, i16 %mask, i32 4)
+ ret <16 x i32> %res
+}
+
+define <16 x i32> @test_int_x86_mask_vcvtt_ps2dqs_512_undef(<16 x float> %x0, i16 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_512_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2dqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2dqs_512_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2dqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x0, <16 x i32> undef, i16 %mask, i32 4)
+ ret <16 x i32> %res
+}
+
+
+define <16 x i32> @test_int_x86_mask_vcvtt_ps2dqs_512_default(<16 x float>* %x0) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_512_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttps2dqs (%rdi), %zmm0 # encoding: [0x62,0xf5,0x7c,0x48,0x6d,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2dqs_512_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttps2dqs (%eax), %zmm0 # encoding: [0x62,0xf5,0x7c,0x48,0x6d,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x10 = load <16 x float>, <16 x float>* %x0
+ %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x10, <16 x i32> undef, i16 -1, i32 4)
+ ret <16 x i32> %res
+}
+
+declare <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>, <16 x i32>, i16 , i32)
+
+define <16 x i32> @test_int_x86_mask_vcvtt_ps2udqs_512(<16 x float> %x0, <16 x i32> %src, i16 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_512:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2udqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x49,0x6c,0xc8]
+; X64-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2udqs_512:
+; X86: # %bb.0:
+; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2udqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x49,0x6c,0xc8]
+; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.512( <16 x float> %x0, <16 x i32> %src, i16 %mask, i32 4)
+ ret <16 x i32> %res
+}
+
+define <16 x i32> @test_int_x86_maskz_vcvtt_ps2udqs_512_z(<16 x float> %x0, i16 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2udqs_512_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2udqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2udqs_512_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2udqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.512( <16 x float> %x0, <16 x i32> zeroinitializer, i16 %mask, i32 4)
+ ret <16 x i32> %res
+}
+
+define <16 x i32> @test_int_x86_mask_vcvtt_ps2udqs_512_undef(<16 x float> %x0, i16 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_512_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2udqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2udqs_512_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2udqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.512( <16 x float> %x0, <16 x i32> undef, i16 %mask, i32 4)
+ ret <16 x i32> %res
+}
+
+
+define <16 x i32> @test_int_x86_mask_vcvtt_ps2udqs_512_default(<16 x float>* %x0) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_512_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttps2dqs (%rdi), %zmm0 # encoding: [0x62,0xf5,0x7c,0x48,0x6d,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2udqs_512_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttps2dqs (%eax), %zmm0 # encoding: [0x62,0xf5,0x7c,0x48,0x6d,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x10 = load <16 x float>, <16 x float>* %x0
+ %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x10, <16 x i32> undef, i16 -1, i32 4)
+ ret <16 x i32> %res
+}
+
+
+declare <16 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>, <16 x i32>, i16 , i32)
+
+define <8 x i64> @test_int_x86_mask_vcvtt_ps2qqs_512(<8 x float> %x0, <8 x i64> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2qqs_512:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2qqs %ymm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x49,0x6d,0xc8]
+; X64-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2qqs_512:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2qqs %ymm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x49,0x6d,0xc8]
+; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512( <8 x float> %x0, <8 x i64> %src, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+define <8 x i64> @test_int_x86_maskz_vcvtt_ps2qqs_512_z(<8 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2qqs_512_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2qqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2qqs_512_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2qqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512( <8 x float> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+define <8 x i64> @test_int_x86_mask_vcvtt_ps2qqs_512_undef(<8 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2qqs_512_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2qqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2qqs_512_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2qqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512( <8 x float> %x0, <8 x i64> undef, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+
+define <8 x i64> @test_int_x86_mask_vcvtt_ps2qqs_512_default(<8 x float> %x0) {
+; CHECK-LABEL: test_int_x86_mask_vcvtt_ps2qqs_512_default:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttps2qqs %ymm0, %zmm0 # encoding: [0x62,0xf5,0x7d,0x48,0x6d,0xc0]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512( <8 x float> %x0, <8 x i64> undef, i8 -1, i32 4)
+ ret <8 x i64> %res
+}
+
+declare <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>, <8 x i64>, i8 , i32)
+
+define <8 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_512(<8 x float> %x0, <8 x i64> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_512:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2uqqs %ymm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x49,0x6c,0xc8]
+; X64-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_512:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2uqqs %ymm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x49,0x6c,0xc8]
+; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512( <8 x float> %x0, <8 x i64> %src, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+define <8 x i64> @test_int_x86_maskz_vcvtt_ps2uqqs_512_z(<8 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2uqqs_512_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2uqqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2uqqs_512_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2uqqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512( <8 x float> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+define <8 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_512_undef(<8 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_512_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2uqqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_512_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2uqqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512( <8 x float> %x0, <8 x i64> undef, i8 %mask, i32 4)
+ ret <8 x i64> %res
+}
+
+
+define <8 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_512_default(<8 x float> %x0) {
+; CHECK-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_512_default:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttps2uqqs %ymm0, %zmm0 # encoding: [0x62,0xf5,0x7d,0x48,0x6c,0xc0]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512( <8 x float> %x0, <8 x i64> undef, i8 -1, i32 4)
+ ret <8 x i64> %res
+}
+
+declare <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>, <8 x i64>, i8 , i32)
+
diff --git a/llvm/test/CodeGen/X86/avx10_2fptosi_satcvtds.ll b/llvm/test/CodeGen/X86/avx10_2fptosi_satcvtds.ll
new file mode 100644
index 00000000000000..4a6556bdc4a919
--- /dev/null
+++ b/llvm/test/CodeGen/X86/avx10_2fptosi_satcvtds.ll
@@ -0,0 +1,115 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -mtriple=i686-linux -mattr=+avx10.2-256 | FileCheck %s --check-prefix=X86
+; RUN: llc < %s -mtriple=x86_64-linux -mattr=+avx10.2-256 | FileCheck %s --check-prefix=X64
+
+;
+; 32-bit float to signed integer
+;
+
+declare i32 @llvm.fptosi.sat.i32.f32 (float)
+declare i64 @llvm.fptosi.sat.i64.f32 (float)
+
+define i32 @test_signed_i32_f32(float %f) nounwind {
+; X86-LABEL: test_signed_i32_f32:
+; X86: # %bb.0:
+; X86-NEXT: vcvttss2sis {{[0-9]+}}(%esp), %eax
+; X86-NEXT: retl
+;
+; X64-LABEL: test_signed_i32_f32:
+; X64: # %bb.0:
+; X64-NEXT: vcvttss2sis %xmm0, %eax
+; X64-NEXT: retq
+ %x = call i32 @llvm.fptosi.sat.i32.f32(float %f)
+ ret i32 %x
+}
+
+define i64 @test_signed_i64_f32(float %f) nounwind {
+; X86-LABEL: test_signed_i64_f32:
+; X86: # %bb.0:
+; X86-NEXT: pushl %edi
+; X86-NEXT: pushl %esi
+; X86-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
+; X86-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
+; X86-NEXT: vcvttps2qq %xmm1, %xmm1
+; X86-NEXT: vmovd %xmm1, %esi
+; X86-NEXT: xorl %ecx, %ecx
+; X86-NEXT: vucomiss {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
+; X86-NEXT: cmovbl %ecx, %esi
+; X86-NEXT: vpextrd $1, %xmm1, %eax
+; X86-NEXT: movl $-2147483648, %edi # imm = 0x80000000
+; X86-NEXT: cmovael %eax, %edi
+; X86-NEXT: vucomiss {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
+; X86-NEXT: movl $2147483647, %edx # imm = 0x7FFFFFFF
+; X86-NEXT: cmovbel %edi, %edx
+; X86-NEXT: movl $-1, %eax
+; X86-NEXT: cmovbel %esi, %eax
+; X86-NEXT: vucomiss %xmm0, %xmm0
+; X86-NEXT: cmovpl %ecx, %eax
+; X86-NEXT: cmovpl %ecx, %edx
+; X86-NEXT: popl %esi
+; X86-NEXT: popl %edi
+; X86-NEXT: retl
+;
+; X64-LABEL: test_signed_i64_f32:
+; X64: # %bb.0:
+; X64-NEXT: vcvttss2sis %xmm0, %rax
+; X64-NEXT: retq
+ %x = call i64 @llvm.fptosi.sat.i64.f32(float %f)
+ ret i64 %x
+}
+
+;
+; 64-bit float to signed integer
+;
+
+declare i32 @llvm.fptosi.sat.i32.f64 (double)
+declare i64 @llvm.fptosi.sat.i64.f64 (double)
+
+define i32 @test_signed_i32_f64(double %f) nounwind {
+; X86-LABEL: test_signed_i32_f64:
+; X86: # %bb.0:
+; X86-NEXT: vcvttsd2sis {{[0-9]+}}(%esp), %eax
+; X86-NEXT: retl
+;
+; X64-LABEL: test_signed_i32_f64:
+; X64: # %bb.0:
+; X64-NEXT: vcvttsd2sis %xmm0, %eax
+; X64-NEXT: retq
+ %x = call i32 @llvm.fptosi.sat.i32.f64(double %f)
+ ret i32 %x
+}
+
+define i64 @test_signed_i64_f64(double %f) nounwind {
+; X86-LABEL: test_signed_i64_f64:
+; X86: # %bb.0:
+; X86-NEXT: pushl %edi
+; X86-NEXT: pushl %esi
+; X86-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
+; X86-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero
+; X86-NEXT: vcvttpd2qq %xmm1, %xmm1
+; X86-NEXT: vmovd %xmm1, %esi
+; X86-NEXT: xorl %ecx, %ecx
+; X86-NEXT: vucomisd {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
+; X86-NEXT: cmovbl %ecx, %esi
+; X86-NEXT: vpextrd $1, %xmm1, %eax
+; X86-NEXT: movl $-2147483648, %edi # imm = 0x80000000
+; X86-NEXT: cmovael %eax, %edi
+; X86-NEXT: vucomisd {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
+; X86-NEXT: movl $2147483647, %edx # imm = 0x7FFFFFFF
+; X86-NEXT: cmovbel %edi, %edx
+; X86-NEXT: movl $-1, %eax
+; X86-NEXT: cmovbel %esi, %eax
+; X86-NEXT: vucomisd %xmm0, %xmm0
+; X86-NEXT: cmovpl %ecx, %eax
+; X86-NEXT: cmovpl %ecx, %edx
+; X86-NEXT: popl %esi
+; X86-NEXT: popl %edi
+; X86-NEXT: retl
+;
+; X64-LABEL: test_signed_i64_f64:
+; X64: # %bb.0:
+; X64-NEXT: vcvttsd2sis %xmm0, %rax
+; X64-NEXT: retq
+ %x = call i64 @llvm.fptosi.sat.i64.f64(double %f)
+ ret i64 %x
+}
diff --git a/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll b/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
new file mode 100644
index 00000000000000..28457c4e4d6329
--- /dev/null
+++ b/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
@@ -0,0 +1,1098 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
+; RUN: llc < %s -verify-machineinstrs -mtriple=x86_64-unknown-unknown --show-mc-encoding -mattr=+avx10.2-256 | FileCheck %s --check-prefixes=CHECK,X64
+; RUN: llc < %s -verify-machineinstrs -mtriple=i686-unknown-unknown --show-mc-encoding -mattr=+avx10.2-256 | FileCheck %s --check-prefixes=CHECK,X86
+
+define i32 @test_x86_avx512_vcvttssd2usi(<2 x double> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttssd2usi:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttsd2usis %xmm0, %ecx # encoding: [0x62,0xf5,0x7f,0x08,0x6c,0xc8]
+; CHECK-NEXT: vcvttsd2usis {sae}, %xmm0, %eax # encoding: [0x62,0xf5,0x7f,0x18,0x6c,0xc0]
+; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res0 = call i32 @llvm.x86.avx512.vcvttssd2usi(<2 x double> %a0, i32 4) ;
+ %res1 = call i32 @llvm.x86.avx512.vcvttssd2usi(<2 x double> %a0, i32 8) ;
+ %res2 = add i32 %res0, %res1
+ ret i32 %res2
+}
+declare i32 @llvm.x86.avx512.vcvttssd2usi(<2 x double>, i32) nounwind readnone
+
+define i32 @test_x86_avx512_vcvttssd2si(<2 x double> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttssd2si:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttsd2sis %xmm0, %ecx # encoding: [0x62,0xf5,0x7f,0x08,0x6d,0xc8]
+; CHECK-NEXT: vcvttsd2sis {sae}, %xmm0, %eax # encoding: [0x62,0xf5,0x7f,0x18,0x6d,0xc0]
+; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res0 = call i32 @llvm.x86.avx512.vcvttssd2si(<2 x double> %a0, i32 4) ;
+ %res1 = call i32 @llvm.x86.avx512.vcvttssd2si(<2 x double> %a0, i32 8) ;
+ %res2 = add i32 %res0, %res1
+ ret i32 %res2
+}
+declare i32 @llvm.x86.avx512.vcvttssd2si(<2 x double>, i32) nounwind readnone
+
+define i32 @test_x86_avx512_vcvttsss2si(<4 x float> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttsss2si:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttss2sis {sae}, %xmm0, %ecx # encoding: [0x62,0xf5,0x7e,0x18,0x6d,0xc8]
+; CHECK-NEXT: vcvttss2sis %xmm0, %eax # encoding: [0x62,0xf5,0x7e,0x08,0x6d,0xc0]
+; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res0 = call i32 @llvm.x86.avx512.vcvttsss2si(<4 x float> %a0, i32 8) ;
+ %res1 = call i32 @llvm.x86.avx512.vcvttsss2si(<4 x float> %a0, i32 4) ;
+ %res2 = add i32 %res0, %res1
+ ret i32 %res2
+}
+declare i32 @llvm.x86.avx512.vcvttsss2si(<4 x float>, i32) nounwind readnone
+
+define i32 @test_x86_avx512_vcvttsss2si_load(ptr %a0) {
+; X64-LABEL: test_x86_avx512_vcvttsss2si_load:
+; X64: # %bb.0:
+; X64-NEXT: vcvttss2sis (%rdi), %eax # encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_x86_avx512_vcvttsss2si_load:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttss2sis (%eax), %eax # encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %a1 = load <4 x float>, ptr %a0
+ %res = call i32 @llvm.x86.avx512.vcvttsss2si(<4 x float> %a1, i32 4) ;
+ ret i32 %res
+}
+
+define i32 @test_x86_avx512_vcvttsss2usi(<4 x float> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttsss2usi:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttss2usis {sae}, %xmm0, %ecx # encoding: [0x62,0xf5,0x7e,0x18,0x6c,0xc8]
+; CHECK-NEXT: vcvttss2usis %xmm0, %eax # encoding: [0x62,0xf5,0x7e,0x08,0x6c,0xc0]
+; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res0 = call i32 @llvm.x86.avx512.vcvttsss2usi(<4 x float> %a0, i32 8) ;
+ %res1 = call i32 @llvm.x86.avx512.vcvttsss2usi(<4 x float> %a0, i32 4) ;
+ %res2 = add i32 %res0, %res1
+ ret i32 %res2
+}
+declare i32 @llvm.x86.avx512.vcvttsss2usi(<4 x float>, i32) nounwind readnone
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_256(<4 x double> %x0, <4 x i32> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_256:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %ymm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x29,0x6d,0xc8]
+; X64-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2dqs_256:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %ymm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x29,0x6d,0xc8]
+; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> %src, i8 %mask, i32 4)
+ ret <4 x i32> %res
+}
+
+define <4 x i32> @test_int_x86_maskz_vcvtt_pd2dqs_256_z(<4 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2dqs_256_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6d,0xc0]
+; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2dqs_256_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6d,0xc0]
+; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> zeroinitializer, i8 %mask, i32 4)
+ ret <4 x i32> %res
+}
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_256_undef(<4 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_256_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6d,0xc0]
+; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2dqs_256_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6d,0xc0]
+; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> undef, i8 %mask, i32 4)
+ ret <4 x i32> %res
+}
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_256_default(<4 x double>* %xptr) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_256_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttpd2dqsy (%rdi), %xmm0 # encoding: [0x62,0xf5,0xfc,0x28,0x6d,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2dqs_256_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttpd2dqsy (%eax), %xmm0 # encoding: [0x62,0xf5,0xfc,0x28,0x6d,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x0 = load <4 x double>, <4 x double> * %xptr
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> undef, i8 -1, i32 4)
+ ret <4 x i32> %res
+}
+
+declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>, <4 x i32>, i8 , i32)
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_256(<4 x double> %x0, <4 x i32> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2udqs_256:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2udqs %ymm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x29,0x6c,0xc8]
+; X64-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2udqs_256:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2udqs %ymm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x29,0x6c,0xc8]
+; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256( <4 x double> %x0, <4 x i32> %src, i8 %mask, i32 4)
+ ret <4 x i32> %res
+}
+
+define <4 x i32> @test_int_x86_maskz_vcvtt_pd2udqs_256_z(<4 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2udqs_256_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2udqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6c,0xc0]
+; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2udqs_256_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2udqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6c,0xc0]
+; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256( <4 x double> %x0, <4 x i32> zeroinitializer, i8 %mask, i32 4)
+ ret <4 x i32> %res
+}
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_256_undef(<4 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2udqs_256_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2udqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6c,0xc0]
+; X64-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2udqs_256_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2udqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6c,0xc0]
+; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256( <4 x double> %x0, <4 x i32> undef, i8 %mask, i32 4)
+ ret <4 x i32> %res
+}
+
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_256_default(<4 x double>* %x0) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2udqs_256_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttpd2udqsy (%rdi), %xmm0 # encoding: [0x62,0xf5,0xfc,0x28,0x6c,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2udqs_256_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttpd2udqsy (%eax), %xmm0 # encoding: [0x62,0xf5,0xfc,0x28,0x6c,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x10 = load <4 x double>, <4 x double> * %x0
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256( <4 x double> %x10, <4 x i32> undef, i8 -1, i32 4)
+ ret <4 x i32> %res
+}
+
+declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>, <4 x i32>, i8 , i32)
+
+
+define <4 x i64> @test_int_x86_mask_vcvtt_pd2qqs_256(<4 x double> %x0, <4 x i64> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_256:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2qqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x29,0x6d,0xc8]
+; X64-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2qqs_256:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2qqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x29,0x6d,0xc8]
+; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256( <4 x double> %x0, <4 x i64> %src, i8 %mask, i32 4)
+ ret <4 x i64> %res
+}
+
+define <4 x i64> @test_int_x86_maskz_vcvtt_pd2qqs_256_z(<4 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2qqs_256_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2qqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2qqs_256_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2qqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256( <4 x double> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
+ ret <4 x i64> %res
+}
+
+define <4 x i64> @test_int_x86_mask_vcvtt_pd2qqs_256_undef(<4 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_256_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2qqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2qqs_256_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2qqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256( <4 x double> %x0, <4 x i64> undef, i8 %mask, i32 4)
+ ret <4 x i64> %res
+}
+
+
+define <4 x i64> @test_int_x86_mask_vcvtt_pd2qqs_256_default(<4 x double>* %x0) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_256_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttpd2qqs (%rdi), %ymm0 # encoding: [0x62,0xf5,0xfd,0x28,0x6d,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2qqs_256_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttpd2qqs (%eax), %ymm0 # encoding: [0x62,0xf5,0xfd,0x28,0x6d,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x10 = load <4 x double>, <4 x double>* %x0
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256( <4 x double> %x10, <4 x i64> undef, i8 -1, i32 4)
+ ret <4 x i64> %res
+}
+
+
+declare <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>, <4 x i64>, i8 , i32)
+
+
+
+define <4 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_256(<4 x double> %x0, <4 x i64> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_256:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2uqqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x29,0x6c,0xc8]
+; X64-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_256:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2uqqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x29,0x6c,0xc8]
+; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256( <4 x double> %x0, <4 x i64> %src, i8 %mask, i32 4)
+ ret <4 x i64> %res
+}
+
+define <4 x i64> @test_int_x86_maskz_vcvtt_pd2uqqs_256_z(<4 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2uqqs_256_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2uqqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2uqqs_256_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2uqqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256( <4 x double> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
+ ret <4 x i64> %res
+}
+
+define <4 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_256_undef(<4 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_256_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2uqqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_256_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2uqqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256( <4 x double> %x0, <4 x i64> undef, i8 %mask, i32 4)
+ ret <4 x i64> %res
+}
+
+
+define <4 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_256_default(<4 x double>* %x0) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_256_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttpd2uqqs (%rdi), %ymm0 # encoding: [0x62,0xf5,0xfd,0x28,0x6c,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_256_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttpd2uqqs (%eax), %ymm0 # encoding: [0x62,0xf5,0xfd,0x28,0x6c,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x10 = load <4 x double>, <4 x double>* %x0
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256( <4 x double> %x10, <4 x i64> undef, i8 -1, i32 4)
+ ret <4 x i64> %res
+}
+
+
+declare <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>, <4 x i64>, i8 , i32)
+
+
+
+define <8 x i32> @test_int_x86_mask_vcvtt_ps2dqs_256(<8 x float> %x0, <8 x i32> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_256:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2dqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x29,0x6d,0xc8]
+; X64-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2dqs_256:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2dqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x29,0x6d,0xc8]
+; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256( <8 x float> %x0, <8 x i32> %src, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+define <8 x i32> @test_int_x86_maskz_vcvtt_ps2dqs_256_z(<8 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2dqs_256_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2dqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2dqs_256_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2dqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256( <8 x float> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+define <8 x i32> @test_int_x86_mask_vcvtt_ps2dqs_256_undef(<8 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_256_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2dqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2dqs_256_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2dqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256( <8 x float> %x0, <8 x i32> undef, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+define <8 x i32> @test_int_x86_mask_vcvtt_ps2dqs_256_default(<8 x float>* %x0) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_256_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttps2dqs (%rdi), %ymm0 # encoding: [0x62,0xf5,0x7c,0x28,0x6d,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2dqs_256_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttps2dqs (%eax), %ymm0 # encoding: [0x62,0xf5,0x7c,0x28,0x6d,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x10 = load <8 x float>, <8 x float>* %x0
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256( <8 x float> %x10, <8 x i32> undef, i8 -1, i32 4)
+ ret <8 x i32> %res
+}
+
+
+declare <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>, <8 x i32>, i8 , i32)
+
+
+define <8 x i32> @test_int_x86_mask_vcvtt_ps2udqs_256(<8 x float> %x0, <8 x i32> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_256:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2udqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x29,0x6c,0xc8]
+; X64-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2udqs_256:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2udqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x29,0x6c,0xc8]
+; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256( <8 x float> %x0, <8 x i32> %src, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+define <8 x i32> @test_int_x86_maskz_vcvtt_ps2udqs_256_z(<8 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2udqs_256_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2udqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2udqs_256_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2udqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256( <8 x float> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+define <8 x i32> @test_int_x86_mask_vcvtt_ps2udqs_256_undef(<8 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_256_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2udqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2udqs_256_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2udqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256( <8 x float> %x0, <8 x i32> undef, i8 %mask, i32 4)
+ ret <8 x i32> %res
+}
+
+
+define <8 x i32> @test_int_x86_mask_vcvtt_ps2udqs_256_default(<8 x float>* %x0) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_256_default:
+; X64: # %bb.0:
+; X64-NEXT: vcvttps2udqs (%rdi), %ymm0 # encoding: [0x62,0xf5,0x7c,0x28,0x6c,0x07]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2udqs_256_default:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
+; X86-NEXT: vcvttps2udqs (%eax), %ymm0 # encoding: [0x62,0xf5,0x7c,0x28,0x6c,0x00]
+; X86-NEXT: retl # encoding: [0xc3]
+ %x10 = load <8 x float>, <8 x float>* %x0
+ %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256( <8 x float> %x10, <8 x i32> undef, i8 -1, i32 4)
+ ret <8 x i32> %res
+}
+
+declare <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>, <8 x i32>, i8 , i32)
+
+
+define <4 x i64> @test_int_x86_maskz_vcvtt_ps2qqs_256_z(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2qqs_256_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2qqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2qqs_256_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2qqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.256( <4 x float> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
+ ret <4 x i64> %res
+}
+
+define <4 x i64> @test_int_x86_mask_vcvtt_ps2qqs_256_undef(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2qqs_256_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2qqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2qqs_256_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2qqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.256( <4 x float> %x0, <4 x i64> undef, i8 %mask, i32 4)
+ ret <4 x i64> %res
+}
+
+
+
+
+
+declare <4 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>, <4 x i64>, i8 , i32)
+
+
+
+define <4 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_256(<4 x float> %x0, <4 x i64> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_256:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2uqqs %xmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x29,0x6c,0xc8]
+; X64-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_256:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2uqqs %xmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x29,0x6c,0xc8]
+; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> %src, i8 %mask, i32 4)
+ ret <4 x i64> %res
+}
+
+define <4 x i64> @test_int_x86_maskz_vcvtt_ps2uqqs_256_z(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2uqqs_256_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2uqqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2uqqs_256_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2uqqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
+ ret <4 x i64> %res
+}
+
+define <4 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_256_undef(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_256_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2uqqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_256_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2uqqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> undef, i8 %mask, i32 4)
+ ret <4 x i64> %res
+}
+
+
+define <4 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_256_default(<4 x float> %x0) {
+; CHECK-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_256_default:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttps2uqqs %xmm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x6c,0xc0]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> undef, i8 -1, i32 4)
+ ret <4 x i64> %res
+}
+
+declare <4 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>, <4 x i64>, i8 , i32)
+
+
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_128(<2 x double> %x0, <4 x i32> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_128:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc8]
+; X64-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2dqs_128:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc8]
+; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> %src, i8 %mask)
+ ret <4 x i32> %res
+}
+
+define <4 x i32> @test_int_x86_maskz_vcvtt_pd2dqs_128_z(<2 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2dqs_128_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0x89,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2dqs_128_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0x89,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> zeroinitializer, i8 %mask)
+ ret <4 x i32> %res
+}
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_128_undef(<2 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_128_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2dqs_128_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> undef, i8 %mask)
+ ret <4 x i32> %res
+}
+
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_128_default(<2 x double> %x0) {
+; CHECK-LABEL: test_int_x86_mask_vcvtt_pd2dqs_128_default:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttpd2dqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0xfc,0x08,0x6d,0xc0]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> undef, i8 -1)
+ ret <4 x i32> %res
+}
+
+declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128(<2 x double>, <4 x i32>, i8)
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_128(<2 x double> %x0, <4 x i32> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2udqs_128:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc8]
+; X64-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2udqs_128:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc8]
+; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> %src, i8 %mask)
+ ret <4 x i32> %res
+}
+
+define <4 x i32> @test_int_x86_maskz_vcvtt_pd2udqs_128_z(<2 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2udqs_128_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0x89,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2udqs_128_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0x89,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> zeroinitializer, i8 %mask)
+ ret <4 x i32> %res
+}
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_128_undef(<2 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2udqs_128_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2udqs_128_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> undef, i8 %mask)
+ ret <4 x i32> %res
+}
+
+
+define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_128_default(<2 x double> %x0) {
+; CHECK-LABEL: test_int_x86_mask_vcvtt_pd2udqs_128_default:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttpd2udqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0xfc,0x08,0x6c,0xc0]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> undef, i8 -1)
+ ret <4 x i32> %res
+}
+
+declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128(<2 x double>, <4 x i32>, i8)
+
+define <2 x i64> @test_int_x86_mask_vcvtt_pd2qqs_128(<2 x double> %x0, <2 x i64> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_128:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2qqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x09,0x6d,0xc8]
+; X64-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2qqs_128:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2qqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x09,0x6d,0xc8]
+; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> %src, i8 %mask)
+ ret <2 x i64> %res
+}
+
+define <2 x i64> @test_int_x86_maskz_vcvtt_pd2qqs_128_z(<2 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2qqs_128_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2qqs_128_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> zeroinitializer, i8 %mask)
+ ret <2 x i64> %res
+}
+
+define <2 x i64> @test_int_x86_mask_vcvtt_pd2qqs_128_undef(<2 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_128_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2qqs_128_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> undef, i8 %mask)
+ ret <2 x i64> %res
+}
+
+
+define <2 x i64> @test_int_x86_mask_vcvtt_pd2qqs_128_default(<2 x double> %x0) {
+; CHECK-LABEL: test_int_x86_mask_vcvtt_pd2qqs_128_default:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttpd2qqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0xfd,0x08,0x6d,0xc0]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> undef, i8 -1)
+ ret <2 x i64> %res
+}
+
+declare <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128(<2 x double>, <2 x i64>, i8)
+
+define <2 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_128(<2 x double> %x0, <2 x i64> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_128:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2uqqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x09,0x6c,0xc8]
+; X64-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_128:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2uqqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x09,0x6c,0xc8]
+; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> %src, i8 %mask)
+ ret <2 x i64> %res
+}
+
+define <2 x i64> @test_int_x86_maskz_vcvtt_pd2uqqs_128_z(<2 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_pd2uqqs_128_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_pd2uqqs_128_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> zeroinitializer, i8 %mask)
+ ret <2 x i64> %res
+}
+
+define <2 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_128_undef(<2 x double> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_128_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttpd2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_128_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttpd2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> undef, i8 %mask)
+ ret <2 x i64> %res
+}
+
+
+define <2 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_128_default(<2 x double> %x0) {
+; CHECK-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_128_default:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttpd2uqqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0xfd,0x08,0x6c,0xc0]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> undef, i8 -1)
+ ret <2 x i64> %res
+}
+
+declare <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128(<2 x double>, <2 x i64>, i8)
+
+define <2 x i64> @test_int_x86_mask_vcvtt_ps2qqs_128_default(<4 x float> %x0) {
+; CHECK-LABEL: test_int_x86_mask_vcvtt_ps2qqs_128_default:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttps2qqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x6d,0xc0]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> undef, i8 -1)
+ ret <2 x i64> %res
+}
+
+define <4 x i32> @test_int_x86_mask_vcvtt_ps2dqs_128(<4 x float> %x0, <4 x i32> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_128:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2dqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x09,0x6d,0xc8]
+; X64-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2dqs_128:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2dqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x09,0x6d,0xc8]
+; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> %src, i8 %mask)
+ ret <4 x i32> %res
+}
+define <4 x i32> @test_int_x86_maskz_vcvtt_ps2dqs_128_z(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2dqs_128_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2dqs_128_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> zeroinitializer, i8 %mask)
+ ret <4 x i32> %res
+}
+define <4 x i32> @test_int_x86_mask_vcvtt_ps2dqs_128_undef(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_128_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2dqs_128_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> undef, i8 %mask)
+ ret <4 x i32> %res
+}
+define <4 x i32> @test_int_x86_mask_vcvtt_ps2dqs_128_default(<4 x float> %x0) {
+; CHECK-LABEL: test_int_x86_mask_vcvtt_ps2dqs_128_default:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttps2dqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x08,0x6d,0xc0]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> undef, i8 -1)
+ ret <4 x i32> %res
+}
+declare <4 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.128(<4 x float>, <4 x i32>, i8)
+
+
+define <4 x i32> @test_int_x86_mask_vcvtt_ps2udqs_128(<4 x float> %x0, <4 x i32> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_128:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2udqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x09,0x6c,0xc8]
+; X64-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2udqs_128:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2udqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x09,0x6c,0xc8]
+; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> %src, i8 %mask)
+ ret <4 x i32> %res
+}
+define <4 x i32> @test_int_x86_maskz_vcvtt_ps2udqs_128_z(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2udqs_128_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2udqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2udqs_128_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2udqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> zeroinitializer, i8 %mask)
+ ret <4 x i32> %res
+}
+define <4 x i32> @test_int_x86_mask_vcvtt_ps2udqs_128_undef(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_128_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2udqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2udqs_128_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2udqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> undef, i8 %mask)
+ ret <4 x i32> %res
+}
+define <4 x i32> @test_int_x86_mask_vcvtt_ps2udqs_128_default(<4 x float> %x0) {
+; CHECK-LABEL: test_int_x86_mask_vcvtt_ps2udqs_128_default:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttps2udqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x08,0x6c,0xc0]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> undef, i8 -1)
+ ret <4 x i32> %res
+}
+declare <4 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.128(<4 x float>, <4 x i32>, i8)
+
+
+define <2 x i64> @test_int_x86_mask_vcvtt_ps2qqs_128_undef(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2qqs_128_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2qqs_128_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> undef, i8 %mask)
+ ret <2 x i64> %res
+}
+
+define <2 x i64> @test_int_x86_maskz_vcvtt_ps2qqs_128_z(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2qqs_128_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6d,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2qqs_128_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6d,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> zeroinitializer, i8 %mask)
+ ret <2 x i64> %res
+}
+
+define <2 x i64> @test_int_x86_mask_vcvtt_ps2qqs_128(<4 x float> %x0, <2 x i64> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2qqs_128:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2qqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x09,0x6d,0xc8]
+; X64-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2qqs_128:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2qqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x09,0x6d,0xc8]
+; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> %src, i8 %mask)
+ ret <2 x i64> %res
+}
+
+declare <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128(<4 x float>, <2 x i64>, i8)
+
+define <2 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_128(<4 x float> %x0, <2 x i64> %src, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_128:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2uqqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x09,0x6c,0xc8]
+; X64-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_128:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2uqqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x09,0x6c,0xc8]
+; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> %src, i8 %mask)
+ ret <2 x i64> %res
+}
+
+define <2 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_128_undef(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_128_undef:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_128_undef:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> undef, i8 %mask)
+ ret <2 x i64> %res
+}
+
+define <2 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_128_default(<4 x float> %x0) {
+; CHECK-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_128_default:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttps2uqqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x6c,0xc0]
+; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> undef, i8 -1)
+ ret <2 x i64> %res
+}
+define <2 x i64> @test_int_x86_maskz_vcvtt_ps2uqqs_128_z(<4 x float> %x0, i8 %mask) {
+; X64-LABEL: test_int_x86_maskz_vcvtt_ps2uqqs_128_z:
+; X64: # %bb.0:
+; X64-NEXT: kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]
+; X64-NEXT: vcvttps2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6c,0xc0]
+; X64-NEXT: retq # encoding: [0xc3]
+;
+; X86-LABEL: test_int_x86_maskz_vcvtt_ps2uqqs_128_z:
+; X86: # %bb.0:
+; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
+; X86-NEXT: vcvttps2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6c,0xc0]
+; X86-NEXT: retl # encoding: [0xc3]
+ %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> zeroinitializer, i8 %mask)
+ ret <2 x i64> %res
+}
+declare <2 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.128(<4 x float>, <2 x i64>, i8)
+
diff --git a/llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll b/llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll
new file mode 100644
index 00000000000000..5cf613e89ba502
--- /dev/null
+++ b/llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll
@@ -0,0 +1,58 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
+; RUN: llc < %s -verify-machineinstrs -mtriple=x86_64-unknown-unknown --show-mc-encoding -mattr=+avx10.2-256 | FileCheck %s
+
+define i64 @test_x86_avx512_vcvttsd2si64(<2 x double> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttsd2si64:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttsd2sis %xmm0, %rcx # encoding: [0x62,0xf5,0xff,0x08,0x6d,0xc8]
+; CHECK-NEXT: vcvttsd2sis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xff,0x18,0x6d,0xc0]
+; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
+; CHECK-NEXT: retq # encoding: [0xc3]
+ %res0 = call i64 @llvm.x86.avx512.vcvttssd2si64(<2 x double> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx512.vcvttssd2si64(<2 x double> %a0, i32 8) ;
+ %res2 = add i64 %res0, %res1
+ ret i64 %res2
+}
+declare i64 @llvm.x86.avx512.vcvttssd2si64(<2 x double>, i32) nounwind readnone
+
+define i64 @test_x86_avx512_vcvttsd2usi64(<2 x double> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttsd2usi64:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttsd2usis %xmm0, %rcx # encoding: [0x62,0xf5,0xff,0x08,0x6c,0xc8]
+; CHECK-NEXT: vcvttsd2usis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xff,0x18,0x6c,0xc0]
+; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
+; CHECK-NEXT: retq # encoding: [0xc3]
+ %res0 = call i64 @llvm.x86.avx512.vcvttssd2usi64(<2 x double> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx512.vcvttssd2usi64(<2 x double> %a0, i32 8) ;
+ %res2 = add i64 %res0, %res1
+ ret i64 %res2
+}
+declare i64 @llvm.x86.avx512.vcvttssd2usi64(<2 x double>, i32) nounwind readnone
+
+define i64 @test_x86_avx512_vcvttsss2si64(<4 x float> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttsss2si64:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttss2sis %xmm0, %rcx # encoding: [0x62,0xf5,0xfe,0x08,0x6d,0xc8]
+; CHECK-NEXT: vcvttss2sis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xfe,0x18,0x6d,0xc0]
+; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
+; CHECK-NEXT: retq # encoding: [0xc3]
+ %res0 = call i64 @llvm.x86.avx512.vcvttsss2si64(<4 x float> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx512.vcvttsss2si64(<4 x float> %a0, i32 8) ;
+ %res2 = add i64 %res0, %res1
+ ret i64 %res2
+}
+declare i64 @llvm.x86.avx512.vcvttsss2si64(<4 x float>, i32) nounwind readnone
+
+define i64 @test_x86_avx512_vcvttsss2usi64(<4 x float> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttsss2usi64:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vcvttss2usis %xmm0, %rcx # encoding: [0x62,0xf5,0xfe,0x08,0x6c,0xc8]
+; CHECK-NEXT: vcvttss2usis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xfe,0x18,0x6c,0xc0]
+; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
+; CHECK-NEXT: retq # encoding: [0xc3]
+ %res0 = call i64 @llvm.x86.avx512.vcvttsss2usi64(<4 x float> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx512.vcvttsss2usi64(<4 x float> %a0, i32 8) ;
+ %res2 = add i64 %res0, %res1
+ ret i64 %res2
+}
+declare i64 @llvm.x86.avx512.vcvttsss2usi64(<4 x float>, i32) nounwind readnone
diff --git a/llvm/test/MC/Disassembler/X86/avx10.2-satcvtds-32.txt b/llvm/test/MC/Disassembler/X86/avx10.2-satcvtds-32.txt
new file mode 100644
index 00000000000000..b2b8267618c183
--- /dev/null
+++ b/llvm/test/MC/Disassembler/X86/avx10.2-satcvtds-32.txt
@@ -0,0 +1,1043 @@
+# RUN: llvm-mc --disassemble %s -triple=i386 | FileCheck %s --check-prefixes=ATT
+# RUN: llvm-mc --disassemble %s -triple=i386 -x86-asm-syntax=intel --output-asm-variant=1 | FileCheck %s --check-prefixes=INTEL
+
+# ATT: vcvttpd2dqs %xmm3, %xmm2
+# INTEL: vcvttpd2dqs xmm2, xmm3
+0x62,0xf5,0xfc,0x08,0x6d,0xd3
+
+# ATT: vcvttpd2dqs %xmm3, %xmm2 {%k7}
+# INTEL: vcvttpd2dqs xmm2 {k7}, xmm3
+0x62,0xf5,0xfc,0x0f,0x6d,0xd3
+
+# ATT: vcvttpd2dqs %xmm3, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm2 {k7} {z}, xmm3
+0x62,0xf5,0xfc,0x8f,0x6d,0xd3
+
+# ATT: vcvttpd2dqs %ymm3, %xmm2
+# INTEL: vcvttpd2dqs xmm2, ymm3
+0x62,0xf5,0xfc,0x28,0x6d,0xd3
+
+# ATT: vcvttpd2dqs {sae}, %ymm3, %xmm2
+# INTEL: vcvttpd2dqs xmm2, ymm3, {sae}
+0x62,0xf5,0xf8,0x18,0x6d,0xd3
+
+# ATT: vcvttpd2dqs %ymm3, %xmm2 {%k7}
+# INTEL: vcvttpd2dqs xmm2 {k7}, ymm3
+0x62,0xf5,0xfc,0x2f,0x6d,0xd3
+
+# ATT: vcvttpd2dqs {sae}, %ymm3, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm2 {k7} {z}, ymm3, {sae}
+0x62,0xf5,0xf8,0x9f,0x6d,0xd3
+
+# ATT: vcvttpd2dqs %zmm3, %ymm2
+# INTEL: vcvttpd2dqs ymm2, zmm3
+0x62,0xf5,0xfc,0x48,0x6d,0xd3
+
+# ATT: vcvttpd2dqs {sae}, %zmm3, %ymm2
+# INTEL: vcvttpd2dqs ymm2, zmm3, {sae}
+0x62,0xf5,0xfc,0x18,0x6d,0xd3
+
+# ATT: vcvttpd2dqs %zmm3, %ymm2 {%k7}
+# INTEL: vcvttpd2dqs ymm2 {k7}, zmm3
+0x62,0xf5,0xfc,0x4f,0x6d,0xd3
+
+# ATT: vcvttpd2dqs {sae}, %zmm3, %ymm2 {%k7} {z}
+# INTEL: vcvttpd2dqs ymm2 {k7} {z}, zmm3, {sae}
+0x62,0xf5,0xfc,0x9f,0x6d,0xd3
+
+# ATT: vcvttpd2dqsx 268435456(%esp,%esi,8), %xmm2
+# INTEL: vcvttpd2dqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0xfc,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2dqsx 291(%edi,%eax,4), %xmm2 {%k7}
+# INTEL: vcvttpd2dqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0xfc,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2dqs (%eax){1to2}, %xmm2
+# INTEL: vcvttpd2dqs xmm2, qword ptr [eax]{1to2}
+0x62,0xf5,0xfc,0x18,0x6d,0x10
+
+# ATT: vcvttpd2dqsx -512(,%ebp,2), %xmm2
+# INTEL: vcvttpd2dqs xmm2, xmmword ptr [2*ebp - 512]
+0x62,0xf5,0xfc,0x08,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttpd2dqsx 2032(%ecx), %xmm2 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+0x62,0xf5,0xfc,0x8f,0x6d,0x51,0x7f
+
+# ATT: vcvttpd2dqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+0x62,0xf5,0xfc,0x9f,0x6d,0x52,0x80
+
+# ATT: vcvttpd2dqs (%eax){1to4}, %xmm2
+# INTEL: vcvttpd2dqs xmm2, qword ptr [eax]{1to4}
+0x62,0xf5,0xfc,0x38,0x6d,0x10
+
+# ATT: vcvttpd2dqsy -1024(,%ebp,2), %xmm2
+# INTEL: vcvttpd2dqs xmm2, ymmword ptr [2*ebp - 1024]
+0x62,0xf5,0xfc,0x28,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttpd2dqsy 4064(%ecx), %xmm2 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+0x62,0xf5,0xfc,0xaf,0x6d,0x51,0x7f
+
+# ATT: vcvttpd2dqs -1024(%edx){1to4}, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+0x62,0xf5,0xfc,0xbf,0x6d,0x52,0x80
+
+# ATT: vcvttpd2dqs 268435456(%esp,%esi,8), %ymm2
+# INTEL: vcvttpd2dqs ymm2, zmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0xfc,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2dqs 291(%edi,%eax,4), %ymm2 {%k7}
+# INTEL: vcvttpd2dqs ymm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0xfc,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2dqs (%eax){1to8}, %ymm2
+# INTEL: vcvttpd2dqs ymm2, qword ptr [eax]{1to8}
+0x62,0xf5,0xfc,0x58,0x6d,0x10
+
+# ATT: vcvttpd2dqs -2048(,%ebp,2), %ymm2
+# INTEL: vcvttpd2dqs ymm2, zmmword ptr [2*ebp - 2048]
+0x62,0xf5,0xfc,0x48,0x6d,0x14,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttpd2dqs 8128(%ecx), %ymm2 {%k7} {z}
+# INTEL: vcvttpd2dqs ymm2 {k7} {z}, zmmword ptr [ecx + 8128]
+0x62,0xf5,0xfc,0xcf,0x6d,0x51,0x7f
+
+# ATT: vcvttpd2dqs -1024(%edx){1to8}, %ymm2 {%k7} {z}
+# INTEL: vcvttpd2dqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+0x62,0xf5,0xfc,0xdf,0x6d,0x52,0x80
+
+# ATT: vcvttpd2qqs %xmm3, %xmm2
+# INTEL: vcvttpd2qqs xmm2, xmm3
+0x62,0xf5,0xfd,0x08,0x6d,0xd3
+
+# ATT: vcvttpd2qqs %xmm3, %xmm2 {%k7}
+# INTEL: vcvttpd2qqs xmm2 {k7}, xmm3
+0x62,0xf5,0xfd,0x0f,0x6d,0xd3
+
+# ATT: vcvttpd2qqs %xmm3, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2qqs xmm2 {k7} {z}, xmm3
+0x62,0xf5,0xfd,0x8f,0x6d,0xd3
+
+# ATT: vcvttpd2qqs %ymm3, %ymm2
+# INTEL: vcvttpd2qqs ymm2, ymm3
+0x62,0xf5,0xfd,0x28,0x6d,0xd3
+
+# ATT: vcvttpd2qqs {sae}, %ymm3, %ymm2
+# INTEL: vcvttpd2qqs ymm2, ymm3, {sae}
+0x62,0xf5,0xf9,0x18,0x6d,0xd3
+
+# ATT: vcvttpd2qqs %ymm3, %ymm2 {%k7}
+# INTEL: vcvttpd2qqs ymm2 {k7}, ymm3
+0x62,0xf5,0xfd,0x2f,0x6d,0xd3
+
+# ATT: vcvttpd2qqs {sae}, %ymm3, %ymm2 {%k7} {z}
+# INTEL: vcvttpd2qqs ymm2 {k7} {z}, ymm3, {sae}
+0x62,0xf5,0xf9,0x9f,0x6d,0xd3
+
+# ATT: vcvttpd2qqs %zmm3, %zmm2
+# INTEL: vcvttpd2qqs zmm2, zmm3
+0x62,0xf5,0xfd,0x48,0x6d,0xd3
+
+# ATT: vcvttpd2qqs {sae}, %zmm3, %zmm2
+# INTEL: vcvttpd2qqs zmm2, zmm3, {sae}
+0x62,0xf5,0xfd,0x18,0x6d,0xd3
+
+# ATT: vcvttpd2qqs %zmm3, %zmm2 {%k7}
+# INTEL: vcvttpd2qqs zmm2 {k7}, zmm3
+0x62,0xf5,0xfd,0x4f,0x6d,0xd3
+
+# ATT: vcvttpd2qqs {sae}, %zmm3, %zmm2 {%k7} {z}
+# INTEL: vcvttpd2qqs zmm2 {k7} {z}, zmm3, {sae}
+0x62,0xf5,0xfd,0x9f,0x6d,0xd3
+
+# ATT: vcvttpd2qqs 268435456(%esp,%esi,8), %xmm2
+# INTEL: vcvttpd2qqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0xfd,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2qqs 291(%edi,%eax,4), %xmm2 {%k7}
+# INTEL: vcvttpd2qqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0xfd,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2qqs (%eax){1to2}, %xmm2
+# INTEL: vcvttpd2qqs xmm2, qword ptr [eax]{1to2}
+0x62,0xf5,0xfd,0x18,0x6d,0x10
+
+# ATT: vcvttpd2qqs -512(,%ebp,2), %xmm2
+# INTEL: vcvttpd2qqs xmm2, xmmword ptr [2*ebp - 512]
+0x62,0xf5,0xfd,0x08,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttpd2qqs 2032(%ecx), %xmm2 {%k7} {z}
+# INTEL: vcvttpd2qqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+0x62,0xf5,0xfd,0x8f,0x6d,0x51,0x7f
+
+# ATT: vcvttpd2qqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2qqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+0x62,0xf5,0xfd,0x9f,0x6d,0x52,0x80
+
+# ATT: vcvttpd2qqs 268435456(%esp,%esi,8), %ymm2
+# INTEL: vcvttpd2qqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0xfd,0x28,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2qqs 291(%edi,%eax,4), %ymm2 {%k7}
+# INTEL: vcvttpd2qqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0xfd,0x2f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2qqs (%eax){1to4}, %ymm2
+# INTEL: vcvttpd2qqs ymm2, qword ptr [eax]{1to4}
+0x62,0xf5,0xfd,0x38,0x6d,0x10
+
+# ATT: vcvttpd2qqs -1024(,%ebp,2), %ymm2
+# INTEL: vcvttpd2qqs ymm2, ymmword ptr [2*ebp - 1024]
+0x62,0xf5,0xfd,0x28,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttpd2qqs 4064(%ecx), %ymm2 {%k7} {z}
+# INTEL: vcvttpd2qqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+0x62,0xf5,0xfd,0xaf,0x6d,0x51,0x7f
+
+# ATT: vcvttpd2qqs -1024(%edx){1to4}, %ymm2 {%k7} {z}
+# INTEL: vcvttpd2qqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+0x62,0xf5,0xfd,0xbf,0x6d,0x52,0x80
+
+# ATT: vcvttpd2qqs 268435456(%esp,%esi,8), %zmm2
+# INTEL: vcvttpd2qqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0xfd,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2qqs 291(%edi,%eax,4), %zmm2 {%k7}
+# INTEL: vcvttpd2qqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0xfd,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2qqs (%eax){1to8}, %zmm2
+# INTEL: vcvttpd2qqs zmm2, qword ptr [eax]{1to8}
+0x62,0xf5,0xfd,0x58,0x6d,0x10
+
+# ATT: vcvttpd2qqs -2048(,%ebp,2), %zmm2
+# INTEL: vcvttpd2qqs zmm2, zmmword ptr [2*ebp - 2048]
+0x62,0xf5,0xfd,0x48,0x6d,0x14,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttpd2qqs 8128(%ecx), %zmm2 {%k7} {z}
+# INTEL: vcvttpd2qqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+0x62,0xf5,0xfd,0xcf,0x6d,0x51,0x7f
+
+# ATT: vcvttpd2qqs -1024(%edx){1to8}, %zmm2 {%k7} {z}
+# INTEL: vcvttpd2qqs zmm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+0x62,0xf5,0xfd,0xdf,0x6d,0x52,0x80
+
+# ATT: vcvttpd2udqs %xmm3, %xmm2
+# INTEL: vcvttpd2udqs xmm2, xmm3
+0x62,0xf5,0xfc,0x08,0x6c,0xd3
+
+# ATT: vcvttpd2udqs %xmm3, %xmm2 {%k7}
+# INTEL: vcvttpd2udqs xmm2 {k7}, xmm3
+0x62,0xf5,0xfc,0x0f,0x6c,0xd3
+
+# ATT: vcvttpd2udqs %xmm3, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm2 {k7} {z}, xmm3
+0x62,0xf5,0xfc,0x8f,0x6c,0xd3
+
+# ATT: vcvttpd2udqs %ymm3, %xmm2
+# INTEL: vcvttpd2udqs xmm2, ymm3
+0x62,0xf5,0xfc,0x28,0x6c,0xd3
+
+# ATT: vcvttpd2udqs {sae}, %ymm3, %xmm2
+# INTEL: vcvttpd2udqs xmm2, ymm3, {sae}
+0x62,0xf5,0xf8,0x18,0x6c,0xd3
+
+# ATT: vcvttpd2udqs %ymm3, %xmm2 {%k7}
+# INTEL: vcvttpd2udqs xmm2 {k7}, ymm3
+0x62,0xf5,0xfc,0x2f,0x6c,0xd3
+
+# ATT: vcvttpd2udqs {sae}, %ymm3, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm2 {k7} {z}, ymm3, {sae}
+0x62,0xf5,0xf8,0x9f,0x6c,0xd3
+
+# ATT: vcvttpd2udqs %zmm3, %ymm2
+# INTEL: vcvttpd2udqs ymm2, zmm3
+0x62,0xf5,0xfc,0x48,0x6c,0xd3
+
+# ATT: vcvttpd2udqs {sae}, %zmm3, %ymm2
+# INTEL: vcvttpd2udqs ymm2, zmm3, {sae}
+0x62,0xf5,0xfc,0x18,0x6c,0xd3
+
+# ATT: vcvttpd2udqs %zmm3, %ymm2 {%k7}
+# INTEL: vcvttpd2udqs ymm2 {k7}, zmm3
+0x62,0xf5,0xfc,0x4f,0x6c,0xd3
+
+# ATT: vcvttpd2udqs {sae}, %zmm3, %ymm2 {%k7} {z}
+# INTEL: vcvttpd2udqs ymm2 {k7} {z}, zmm3, {sae}
+0x62,0xf5,0xfc,0x9f,0x6c,0xd3
+
+# ATT: vcvttpd2udqsx 268435456(%esp,%esi,8), %xmm2
+# INTEL: vcvttpd2udqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0xfc,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2udqsx 291(%edi,%eax,4), %xmm2 {%k7}
+# INTEL: vcvttpd2udqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0xfc,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2udqs (%eax){1to2}, %xmm2
+# INTEL: vcvttpd2udqs xmm2, qword ptr [eax]{1to2}
+0x62,0xf5,0xfc,0x18,0x6c,0x10
+
+# ATT: vcvttpd2udqsx -512(,%ebp,2), %xmm2
+# INTEL: vcvttpd2udqs xmm2, xmmword ptr [2*ebp - 512]
+0x62,0xf5,0xfc,0x08,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttpd2udqsx 2032(%ecx), %xmm2 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+0x62,0xf5,0xfc,0x8f,0x6c,0x51,0x7f
+
+# ATT: vcvttpd2udqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+0x62,0xf5,0xfc,0x9f,0x6c,0x52,0x80
+
+# ATT: vcvttpd2udqs (%eax){1to4}, %xmm2
+# INTEL: vcvttpd2udqs xmm2, qword ptr [eax]{1to4}
+0x62,0xf5,0xfc,0x38,0x6c,0x10
+
+# ATT: vcvttpd2udqsy -1024(,%ebp,2), %xmm2
+# INTEL: vcvttpd2udqs xmm2, ymmword ptr [2*ebp - 1024]
+0x62,0xf5,0xfc,0x28,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttpd2udqsy 4064(%ecx), %xmm2 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+0x62,0xf5,0xfc,0xaf,0x6c,0x51,0x7f
+
+# ATT: vcvttpd2udqs -1024(%edx){1to4}, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+0x62,0xf5,0xfc,0xbf,0x6c,0x52,0x80
+
+# ATT: vcvttpd2udqs 268435456(%esp,%esi,8), %ymm2
+# INTEL: vcvttpd2udqs ymm2, zmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0xfc,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2udqs 291(%edi,%eax,4), %ymm2 {%k7}
+# INTEL: vcvttpd2udqs ymm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0xfc,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2udqs (%eax){1to8}, %ymm2
+# INTEL: vcvttpd2udqs ymm2, qword ptr [eax]{1to8}
+0x62,0xf5,0xfc,0x58,0x6c,0x10
+
+# ATT: vcvttpd2udqs -2048(,%ebp,2), %ymm2
+# INTEL: vcvttpd2udqs ymm2, zmmword ptr [2*ebp - 2048]
+0x62,0xf5,0xfc,0x48,0x6c,0x14,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttpd2udqs 8128(%ecx), %ymm2 {%k7} {z}
+# INTEL: vcvttpd2udqs ymm2 {k7} {z}, zmmword ptr [ecx + 8128]
+0x62,0xf5,0xfc,0xcf,0x6c,0x51,0x7f
+
+# ATT: vcvttpd2udqs -1024(%edx){1to8}, %ymm2 {%k7} {z}
+# INTEL: vcvttpd2udqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+0x62,0xf5,0xfc,0xdf,0x6c,0x52,0x80
+
+# ATT: vcvttpd2uqqs %xmm3, %xmm2
+# INTEL: vcvttpd2uqqs xmm2, xmm3
+0x62,0xf5,0xfd,0x08,0x6c,0xd3
+
+# ATT: vcvttpd2uqqs %xmm3, %xmm2 {%k7}
+# INTEL: vcvttpd2uqqs xmm2 {k7}, xmm3
+0x62,0xf5,0xfd,0x0f,0x6c,0xd3
+
+# ATT: vcvttpd2uqqs %xmm3, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2uqqs xmm2 {k7} {z}, xmm3
+0x62,0xf5,0xfd,0x8f,0x6c,0xd3
+
+# ATT: vcvttpd2uqqs %ymm3, %ymm2
+# INTEL: vcvttpd2uqqs ymm2, ymm3
+0x62,0xf5,0xfd,0x28,0x6c,0xd3
+
+# ATT: vcvttpd2uqqs {sae}, %ymm3, %ymm2
+# INTEL: vcvttpd2uqqs ymm2, ymm3, {sae}
+0x62,0xf5,0xf9,0x18,0x6c,0xd3
+
+# ATT: vcvttpd2uqqs %ymm3, %ymm2 {%k7}
+# INTEL: vcvttpd2uqqs ymm2 {k7}, ymm3
+0x62,0xf5,0xfd,0x2f,0x6c,0xd3
+
+# ATT: vcvttpd2uqqs {sae}, %ymm3, %ymm2 {%k7} {z}
+# INTEL: vcvttpd2uqqs ymm2 {k7} {z}, ymm3, {sae}
+0x62,0xf5,0xf9,0x9f,0x6c,0xd3
+
+# ATT: vcvttpd2uqqs %zmm3, %zmm2
+# INTEL: vcvttpd2uqqs zmm2, zmm3
+0x62,0xf5,0xfd,0x48,0x6c,0xd3
+
+# ATT: vcvttpd2uqqs {sae}, %zmm3, %zmm2
+# INTEL: vcvttpd2uqqs zmm2, zmm3, {sae}
+0x62,0xf5,0xfd,0x18,0x6c,0xd3
+
+# ATT: vcvttpd2uqqs %zmm3, %zmm2 {%k7}
+# INTEL: vcvttpd2uqqs zmm2 {k7}, zmm3
+0x62,0xf5,0xfd,0x4f,0x6c,0xd3
+
+# ATT: vcvttpd2uqqs {sae}, %zmm3, %zmm2 {%k7} {z}
+# INTEL: vcvttpd2uqqs zmm2 {k7} {z}, zmm3, {sae}
+0x62,0xf5,0xfd,0x9f,0x6c,0xd3
+
+# ATT: vcvttpd2uqqs 268435456(%esp,%esi,8), %xmm2
+# INTEL: vcvttpd2uqqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0xfd,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2uqqs 291(%edi,%eax,4), %xmm2 {%k7}
+# INTEL: vcvttpd2uqqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0xfd,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2uqqs (%eax){1to2}, %xmm2
+# INTEL: vcvttpd2uqqs xmm2, qword ptr [eax]{1to2}
+0x62,0xf5,0xfd,0x18,0x6c,0x10
+
+# ATT: vcvttpd2uqqs -512(,%ebp,2), %xmm2
+# INTEL: vcvttpd2uqqs xmm2, xmmword ptr [2*ebp - 512]
+0x62,0xf5,0xfd,0x08,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttpd2uqqs 2032(%ecx), %xmm2 {%k7} {z}
+# INTEL: vcvttpd2uqqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+0x62,0xf5,0xfd,0x8f,0x6c,0x51,0x7f
+
+# ATT: vcvttpd2uqqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+# INTEL: vcvttpd2uqqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+0x62,0xf5,0xfd,0x9f,0x6c,0x52,0x80
+
+# ATT: vcvttpd2uqqs 268435456(%esp,%esi,8), %ymm2
+# INTEL: vcvttpd2uqqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0xfd,0x28,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2uqqs 291(%edi,%eax,4), %ymm2 {%k7}
+# INTEL: vcvttpd2uqqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0xfd,0x2f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2uqqs (%eax){1to4}, %ymm2
+# INTEL: vcvttpd2uqqs ymm2, qword ptr [eax]{1to4}
+0x62,0xf5,0xfd,0x38,0x6c,0x10
+
+# ATT: vcvttpd2uqqs -1024(,%ebp,2), %ymm2
+# INTEL: vcvttpd2uqqs ymm2, ymmword ptr [2*ebp - 1024]
+0x62,0xf5,0xfd,0x28,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttpd2uqqs 4064(%ecx), %ymm2 {%k7} {z}
+# INTEL: vcvttpd2uqqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+0x62,0xf5,0xfd,0xaf,0x6c,0x51,0x7f
+
+# ATT: vcvttpd2uqqs -1024(%edx){1to4}, %ymm2 {%k7} {z}
+# INTEL: vcvttpd2uqqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+0x62,0xf5,0xfd,0xbf,0x6c,0x52,0x80
+
+# ATT: vcvttpd2uqqs 268435456(%esp,%esi,8), %zmm2
+# INTEL: vcvttpd2uqqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0xfd,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2uqqs 291(%edi,%eax,4), %zmm2 {%k7}
+# INTEL: vcvttpd2uqqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0xfd,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2uqqs (%eax){1to8}, %zmm2
+# INTEL: vcvttpd2uqqs zmm2, qword ptr [eax]{1to8}
+0x62,0xf5,0xfd,0x58,0x6c,0x10
+
+# ATT: vcvttpd2uqqs -2048(,%ebp,2), %zmm2
+# INTEL: vcvttpd2uqqs zmm2, zmmword ptr [2*ebp - 2048]
+0x62,0xf5,0xfd,0x48,0x6c,0x14,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttpd2uqqs 8128(%ecx), %zmm2 {%k7} {z}
+# INTEL: vcvttpd2uqqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+0x62,0xf5,0xfd,0xcf,0x6c,0x51,0x7f
+
+# ATT: vcvttpd2uqqs -1024(%edx){1to8}, %zmm2 {%k7} {z}
+# INTEL: vcvttpd2uqqs zmm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+0x62,0xf5,0xfd,0xdf,0x6c,0x52,0x80
+
+# ATT: vcvttps2dqs %xmm3, %xmm2
+# INTEL: vcvttps2dqs xmm2, xmm3
+0x62,0xf5,0x7c,0x08,0x6d,0xd3
+
+# ATT: vcvttps2dqs %xmm3, %xmm2 {%k7}
+# INTEL: vcvttps2dqs xmm2 {k7}, xmm3
+0x62,0xf5,0x7c,0x0f,0x6d,0xd3
+
+# ATT: vcvttps2dqs %xmm3, %xmm2 {%k7} {z}
+# INTEL: vcvttps2dqs xmm2 {k7} {z}, xmm3
+0x62,0xf5,0x7c,0x8f,0x6d,0xd3
+
+# ATT: vcvttps2dqs %ymm3, %ymm2
+# INTEL: vcvttps2dqs ymm2, ymm3
+0x62,0xf5,0x7c,0x28,0x6d,0xd3
+
+# ATT: vcvttps2dqs {sae}, %ymm3, %ymm2
+# INTEL: vcvttps2dqs ymm2, ymm3, {sae}
+0x62,0xf5,0x78,0x18,0x6d,0xd3
+
+# ATT: vcvttps2dqs %ymm3, %ymm2 {%k7}
+# INTEL: vcvttps2dqs ymm2 {k7}, ymm3
+0x62,0xf5,0x7c,0x2f,0x6d,0xd3
+
+# ATT: vcvttps2dqs {sae}, %ymm3, %ymm2 {%k7} {z}
+# INTEL: vcvttps2dqs ymm2 {k7} {z}, ymm3, {sae}
+0x62,0xf5,0x78,0x9f,0x6d,0xd3
+
+# ATT: vcvttps2dqs %zmm3, %zmm2
+# INTEL: vcvttps2dqs zmm2, zmm3
+0x62,0xf5,0x7c,0x48,0x6d,0xd3
+
+# ATT: vcvttps2dqs {sae}, %zmm3, %zmm2
+# INTEL: vcvttps2dqs zmm2, zmm3, {sae}
+0x62,0xf5,0x7c,0x18,0x6d,0xd3
+
+# ATT: vcvttps2dqs %zmm3, %zmm2 {%k7}
+# INTEL: vcvttps2dqs zmm2 {k7}, zmm3
+0x62,0xf5,0x7c,0x4f,0x6d,0xd3
+
+# ATT: vcvttps2dqs {sae}, %zmm3, %zmm2 {%k7} {z}
+# INTEL: vcvttps2dqs zmm2 {k7} {z}, zmm3, {sae}
+0x62,0xf5,0x7c,0x9f,0x6d,0xd3
+
+# ATT: vcvttps2dqs 268435456(%esp,%esi,8), %xmm2
+# INTEL: vcvttps2dqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7c,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2dqs 291(%edi,%eax,4), %xmm2 {%k7}
+# INTEL: vcvttps2dqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7c,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2dqs (%eax){1to4}, %xmm2
+# INTEL: vcvttps2dqs xmm2, dword ptr [eax]{1to4}
+0x62,0xf5,0x7c,0x18,0x6d,0x10
+
+# ATT: vcvttps2dqs -512(,%ebp,2), %xmm2
+# INTEL: vcvttps2dqs xmm2, xmmword ptr [2*ebp - 512]
+0x62,0xf5,0x7c,0x08,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttps2dqs 2032(%ecx), %xmm2 {%k7} {z}
+# INTEL: vcvttps2dqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+0x62,0xf5,0x7c,0x8f,0x6d,0x51,0x7f
+
+# ATT: vcvttps2dqs -512(%edx){1to4}, %xmm2 {%k7} {z}
+# INTEL: vcvttps2dqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+0x62,0xf5,0x7c,0x9f,0x6d,0x52,0x80
+
+# ATT: vcvttps2dqs 268435456(%esp,%esi,8), %ymm2
+# INTEL: vcvttps2dqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7c,0x28,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2dqs 291(%edi,%eax,4), %ymm2 {%k7}
+# INTEL: vcvttps2dqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7c,0x2f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2dqs (%eax){1to8}, %ymm2
+# INTEL: vcvttps2dqs ymm2, dword ptr [eax]{1to8}
+0x62,0xf5,0x7c,0x38,0x6d,0x10
+
+# ATT: vcvttps2dqs -1024(,%ebp,2), %ymm2
+# INTEL: vcvttps2dqs ymm2, ymmword ptr [2*ebp - 1024]
+0x62,0xf5,0x7c,0x28,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttps2dqs 4064(%ecx), %ymm2 {%k7} {z}
+# INTEL: vcvttps2dqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+0x62,0xf5,0x7c,0xaf,0x6d,0x51,0x7f
+
+# ATT: vcvttps2dqs -512(%edx){1to8}, %ymm2 {%k7} {z}
+# INTEL: vcvttps2dqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+0x62,0xf5,0x7c,0xbf,0x6d,0x52,0x80
+
+# ATT: vcvttps2dqs 268435456(%esp,%esi,8), %zmm2
+# INTEL: vcvttps2dqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7c,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2dqs 291(%edi,%eax,4), %zmm2 {%k7}
+# INTEL: vcvttps2dqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7c,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2dqs (%eax){1to16}, %zmm2
+# INTEL: vcvttps2dqs zmm2, dword ptr [eax]{1to16}
+0x62,0xf5,0x7c,0x58,0x6d,0x10
+
+# ATT: vcvttps2dqs -2048(,%ebp,2), %zmm2
+# INTEL: vcvttps2dqs zmm2, zmmword ptr [2*ebp - 2048]
+0x62,0xf5,0x7c,0x48,0x6d,0x14,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttps2dqs 8128(%ecx), %zmm2 {%k7} {z}
+# INTEL: vcvttps2dqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+0x62,0xf5,0x7c,0xcf,0x6d,0x51,0x7f
+
+# ATT: vcvttps2dqs -512(%edx){1to16}, %zmm2 {%k7} {z}
+# INTEL: vcvttps2dqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to16}
+0x62,0xf5,0x7c,0xdf,0x6d,0x52,0x80
+
+# ATT: vcvttps2qqs %xmm3, %xmm2
+# INTEL: vcvttps2qqs xmm2, xmm3
+0x62,0xf5,0x7d,0x08,0x6d,0xd3
+
+# ATT: vcvttps2qqs %xmm3, %xmm2 {%k7}
+# INTEL: vcvttps2qqs xmm2 {k7}, xmm3
+0x62,0xf5,0x7d,0x0f,0x6d,0xd3
+
+# ATT: vcvttps2qqs %xmm3, %xmm2 {%k7} {z}
+# INTEL: vcvttps2qqs xmm2 {k7} {z}, xmm3
+0x62,0xf5,0x7d,0x8f,0x6d,0xd3
+
+# ATT: vcvttps2qqs %xmm3, %ymm2
+# INTEL: vcvttps2qqs ymm2, xmm3
+0x62,0xf5,0x7d,0x28,0x6d,0xd3
+
+# ATT: vcvttps2qqs {sae}, %xmm3, %ymm2
+# INTEL: vcvttps2qqs ymm2, xmm3, {sae}
+0x62,0xf5,0x79,0x18,0x6d,0xd3
+
+# ATT: vcvttps2qqs %xmm3, %ymm2 {%k7}
+# INTEL: vcvttps2qqs ymm2 {k7}, xmm3
+0x62,0xf5,0x7d,0x2f,0x6d,0xd3
+
+# ATT: vcvttps2qqs {sae}, %xmm3, %ymm2 {%k7} {z}
+# INTEL: vcvttps2qqs ymm2 {k7} {z}, xmm3, {sae}
+0x62,0xf5,0x79,0x9f,0x6d,0xd3
+
+# ATT: vcvttps2qqs %ymm3, %zmm2
+# INTEL: vcvttps2qqs zmm2, ymm3
+0x62,0xf5,0x7d,0x48,0x6d,0xd3
+
+# ATT: vcvttps2qqs {sae}, %ymm3, %zmm2
+# INTEL: vcvttps2qqs zmm2, ymm3, {sae}
+0x62,0xf5,0x7d,0x18,0x6d,0xd3
+
+# ATT: vcvttps2qqs %ymm3, %zmm2 {%k7}
+# INTEL: vcvttps2qqs zmm2 {k7}, ymm3
+0x62,0xf5,0x7d,0x4f,0x6d,0xd3
+
+# ATT: vcvttps2qqs {sae}, %ymm3, %zmm2 {%k7} {z}
+# INTEL: vcvttps2qqs zmm2 {k7} {z}, ymm3, {sae}
+0x62,0xf5,0x7d,0x9f,0x6d,0xd3
+
+# ATT: vcvttps2qqs 268435456(%esp,%esi,8), %xmm2
+# INTEL: vcvttps2qqs xmm2, qword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7d,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2qqs 291(%edi,%eax,4), %xmm2 {%k7}
+# INTEL: vcvttps2qqs xmm2 {k7}, qword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7d,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2qqs (%eax){1to2}, %xmm2
+# INTEL: vcvttps2qqs xmm2, dword ptr [eax]{1to2}
+0x62,0xf5,0x7d,0x18,0x6d,0x10
+
+# ATT: vcvttps2qqs -256(,%ebp,2), %xmm2
+# INTEL: vcvttps2qqs xmm2, qword ptr [2*ebp - 256]
+0x62,0xf5,0x7d,0x08,0x6d,0x14,0x6d,0x00,0xff,0xff,0xff
+
+# ATT: vcvttps2qqs 1016(%ecx), %xmm2 {%k7} {z}
+# INTEL: vcvttps2qqs xmm2 {k7} {z}, qword ptr [ecx + 1016]
+0x62,0xf5,0x7d,0x8f,0x6d,0x51,0x7f
+
+# ATT: vcvttps2qqs -512(%edx){1to2}, %xmm2 {%k7} {z}
+# INTEL: vcvttps2qqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to2}
+0x62,0xf5,0x7d,0x9f,0x6d,0x52,0x80
+
+# ATT: vcvttps2qqs 268435456(%esp,%esi,8), %ymm2
+# INTEL: vcvttps2qqs ymm2, xmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7d,0x28,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2qqs 291(%edi,%eax,4), %ymm2 {%k7}
+# INTEL: vcvttps2qqs ymm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7d,0x2f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2qqs (%eax){1to4}, %ymm2
+# INTEL: vcvttps2qqs ymm2, dword ptr [eax]{1to4}
+0x62,0xf5,0x7d,0x38,0x6d,0x10
+
+# ATT: vcvttps2qqs -512(,%ebp,2), %ymm2
+# INTEL: vcvttps2qqs ymm2, xmmword ptr [2*ebp - 512]
+0x62,0xf5,0x7d,0x28,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttps2qqs 2032(%ecx), %ymm2 {%k7} {z}
+# INTEL: vcvttps2qqs ymm2 {k7} {z}, xmmword ptr [ecx + 2032]
+0x62,0xf5,0x7d,0xaf,0x6d,0x51,0x7f
+
+# ATT: vcvttps2qqs -512(%edx){1to4}, %ymm2 {%k7} {z}
+# INTEL: vcvttps2qqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+0x62,0xf5,0x7d,0xbf,0x6d,0x52,0x80
+
+# ATT: vcvttps2qqs 268435456(%esp,%esi,8), %zmm2
+# INTEL: vcvttps2qqs zmm2, ymmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7d,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2qqs 291(%edi,%eax,4), %zmm2 {%k7}
+# INTEL: vcvttps2qqs zmm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7d,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2qqs (%eax){1to8}, %zmm2
+# INTEL: vcvttps2qqs zmm2, dword ptr [eax]{1to8}
+0x62,0xf5,0x7d,0x58,0x6d,0x10
+
+# ATT: vcvttps2qqs -1024(,%ebp,2), %zmm2
+# INTEL: vcvttps2qqs zmm2, ymmword ptr [2*ebp - 1024]
+0x62,0xf5,0x7d,0x48,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttps2qqs 4064(%ecx), %zmm2 {%k7} {z}
+# INTEL: vcvttps2qqs zmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+0x62,0xf5,0x7d,0xcf,0x6d,0x51,0x7f
+
+# ATT: vcvttps2qqs -512(%edx){1to8}, %zmm2 {%k7} {z}
+# INTEL: vcvttps2qqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+0x62,0xf5,0x7d,0xdf,0x6d,0x52,0x80
+
+# ATT: vcvttps2udqs %xmm3, %xmm2
+# INTEL: vcvttps2udqs xmm2, xmm3
+0x62,0xf5,0x7c,0x08,0x6c,0xd3
+
+# ATT: vcvttps2udqs %xmm3, %xmm2 {%k7}
+# INTEL: vcvttps2udqs xmm2 {k7}, xmm3
+0x62,0xf5,0x7c,0x0f,0x6c,0xd3
+
+# ATT: vcvttps2udqs %xmm3, %xmm2 {%k7} {z}
+# INTEL: vcvttps2udqs xmm2 {k7} {z}, xmm3
+0x62,0xf5,0x7c,0x8f,0x6c,0xd3
+
+# ATT: vcvttps2udqs %ymm3, %ymm2
+# INTEL: vcvttps2udqs ymm2, ymm3
+0x62,0xf5,0x7c,0x28,0x6c,0xd3
+
+# ATT: vcvttps2udqs {sae}, %ymm3, %ymm2
+# INTEL: vcvttps2udqs ymm2, ymm3, {sae}
+0x62,0xf5,0x78,0x18,0x6c,0xd3
+
+# ATT: vcvttps2udqs %ymm3, %ymm2 {%k7}
+# INTEL: vcvttps2udqs ymm2 {k7}, ymm3
+0x62,0xf5,0x7c,0x2f,0x6c,0xd3
+
+# ATT: vcvttps2udqs {sae}, %ymm3, %ymm2 {%k7} {z}
+# INTEL: vcvttps2udqs ymm2 {k7} {z}, ymm3, {sae}
+0x62,0xf5,0x78,0x9f,0x6c,0xd3
+
+# ATT: vcvttps2udqs %zmm3, %zmm2
+# INTEL: vcvttps2udqs zmm2, zmm3
+0x62,0xf5,0x7c,0x48,0x6c,0xd3
+
+# ATT: vcvttps2udqs {sae}, %zmm3, %zmm2
+# INTEL: vcvttps2udqs zmm2, zmm3, {sae}
+0x62,0xf5,0x7c,0x18,0x6c,0xd3
+
+# ATT: vcvttps2udqs %zmm3, %zmm2 {%k7}
+# INTEL: vcvttps2udqs zmm2 {k7}, zmm3
+0x62,0xf5,0x7c,0x4f,0x6c,0xd3
+
+# ATT: vcvttps2udqs {sae}, %zmm3, %zmm2 {%k7} {z}
+# INTEL: vcvttps2udqs zmm2 {k7} {z}, zmm3, {sae}
+0x62,0xf5,0x7c,0x9f,0x6c,0xd3
+
+# ATT: vcvttps2udqs 268435456(%esp,%esi,8), %xmm2
+# INTEL: vcvttps2udqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7c,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2udqs 291(%edi,%eax,4), %xmm2 {%k7}
+# INTEL: vcvttps2udqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7c,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2udqs (%eax){1to4}, %xmm2
+# INTEL: vcvttps2udqs xmm2, dword ptr [eax]{1to4}
+0x62,0xf5,0x7c,0x18,0x6c,0x10
+
+# ATT: vcvttps2udqs -512(,%ebp,2), %xmm2
+# INTEL: vcvttps2udqs xmm2, xmmword ptr [2*ebp - 512]
+0x62,0xf5,0x7c,0x08,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttps2udqs 2032(%ecx), %xmm2 {%k7} {z}
+# INTEL: vcvttps2udqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+0x62,0xf5,0x7c,0x8f,0x6c,0x51,0x7f
+
+# ATT: vcvttps2udqs -512(%edx){1to4}, %xmm2 {%k7} {z}
+# INTEL: vcvttps2udqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+0x62,0xf5,0x7c,0x9f,0x6c,0x52,0x80
+
+# ATT: vcvttps2udqs 268435456(%esp,%esi,8), %ymm2
+# INTEL: vcvttps2udqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7c,0x28,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2udqs 291(%edi,%eax,4), %ymm2 {%k7}
+# INTEL: vcvttps2udqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7c,0x2f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2udqs (%eax){1to8}, %ymm2
+# INTEL: vcvttps2udqs ymm2, dword ptr [eax]{1to8}
+0x62,0xf5,0x7c,0x38,0x6c,0x10
+
+# ATT: vcvttps2udqs -1024(,%ebp,2), %ymm2
+# INTEL: vcvttps2udqs ymm2, ymmword ptr [2*ebp - 1024]
+0x62,0xf5,0x7c,0x28,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttps2udqs 4064(%ecx), %ymm2 {%k7} {z}
+# INTEL: vcvttps2udqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+0x62,0xf5,0x7c,0xaf,0x6c,0x51,0x7f
+
+# ATT: vcvttps2udqs -512(%edx){1to8}, %ymm2 {%k7} {z}
+# INTEL: vcvttps2udqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+0x62,0xf5,0x7c,0xbf,0x6c,0x52,0x80
+
+# ATT: vcvttps2udqs 268435456(%esp,%esi,8), %zmm2
+# INTEL: vcvttps2udqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7c,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2udqs 291(%edi,%eax,4), %zmm2 {%k7}
+# INTEL: vcvttps2udqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7c,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2udqs (%eax){1to16}, %zmm2
+# INTEL: vcvttps2udqs zmm2, dword ptr [eax]{1to16}
+0x62,0xf5,0x7c,0x58,0x6c,0x10
+
+# ATT: vcvttps2udqs -2048(,%ebp,2), %zmm2
+# INTEL: vcvttps2udqs zmm2, zmmword ptr [2*ebp - 2048]
+0x62,0xf5,0x7c,0x48,0x6c,0x14,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttps2udqs 8128(%ecx), %zmm2 {%k7} {z}
+# INTEL: vcvttps2udqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+0x62,0xf5,0x7c,0xcf,0x6c,0x51,0x7f
+
+# ATT: vcvttps2udqs -512(%edx){1to16}, %zmm2 {%k7} {z}
+# INTEL: vcvttps2udqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to16}
+0x62,0xf5,0x7c,0xdf,0x6c,0x52,0x80
+
+# ATT: vcvttps2uqqs %xmm3, %xmm2
+# INTEL: vcvttps2uqqs xmm2, xmm3
+0x62,0xf5,0x7d,0x08,0x6c,0xd3
+
+# ATT: vcvttps2uqqs %xmm3, %xmm2 {%k7}
+# INTEL: vcvttps2uqqs xmm2 {k7}, xmm3
+0x62,0xf5,0x7d,0x0f,0x6c,0xd3
+
+# ATT: vcvttps2uqqs %xmm3, %xmm2 {%k7} {z}
+# INTEL: vcvttps2uqqs xmm2 {k7} {z}, xmm3
+0x62,0xf5,0x7d,0x8f,0x6c,0xd3
+
+# ATT: vcvttps2uqqs %xmm3, %ymm2
+# INTEL: vcvttps2uqqs ymm2, xmm3
+0x62,0xf5,0x7d,0x28,0x6c,0xd3
+
+# ATT: vcvttps2uqqs {sae}, %xmm3, %ymm2
+# INTEL: vcvttps2uqqs ymm2, xmm3, {sae}
+0x62,0xf5,0x79,0x18,0x6c,0xd3
+
+# ATT: vcvttps2uqqs %xmm3, %ymm2 {%k7}
+# INTEL: vcvttps2uqqs ymm2 {k7}, xmm3
+0x62,0xf5,0x7d,0x2f,0x6c,0xd3
+
+# ATT: vcvttps2uqqs {sae}, %xmm3, %ymm2 {%k7} {z}
+# INTEL: vcvttps2uqqs ymm2 {k7} {z}, xmm3, {sae}
+0x62,0xf5,0x79,0x9f,0x6c,0xd3
+
+# ATT: vcvttps2uqqs %ymm3, %zmm2
+# INTEL: vcvttps2uqqs zmm2, ymm3
+0x62,0xf5,0x7d,0x48,0x6c,0xd3
+
+# ATT: vcvttps2uqqs {sae}, %ymm3, %zmm2
+# INTEL: vcvttps2uqqs zmm2, ymm3, {sae}
+0x62,0xf5,0x7d,0x18,0x6c,0xd3
+
+# ATT: vcvttps2uqqs %ymm3, %zmm2 {%k7}
+# INTEL: vcvttps2uqqs zmm2 {k7}, ymm3
+0x62,0xf5,0x7d,0x4f,0x6c,0xd3
+
+# ATT: vcvttps2uqqs {sae}, %ymm3, %zmm2 {%k7} {z}
+# INTEL: vcvttps2uqqs zmm2 {k7} {z}, ymm3, {sae}
+0x62,0xf5,0x7d,0x9f,0x6c,0xd3
+
+# ATT: vcvttps2uqqs 268435456(%esp,%esi,8), %xmm2
+# INTEL: vcvttps2uqqs xmm2, qword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7d,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2uqqs 291(%edi,%eax,4), %xmm2 {%k7}
+# INTEL: vcvttps2uqqs xmm2 {k7}, qword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7d,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2uqqs (%eax){1to2}, %xmm2
+# INTEL: vcvttps2uqqs xmm2, dword ptr [eax]{1to2}
+0x62,0xf5,0x7d,0x18,0x6c,0x10
+
+# ATT: vcvttps2uqqs -256(,%ebp,2), %xmm2
+# INTEL: vcvttps2uqqs xmm2, qword ptr [2*ebp - 256]
+0x62,0xf5,0x7d,0x08,0x6c,0x14,0x6d,0x00,0xff,0xff,0xff
+
+# ATT: vcvttps2uqqs 1016(%ecx), %xmm2 {%k7} {z}
+# INTEL: vcvttps2uqqs xmm2 {k7} {z}, qword ptr [ecx + 1016]
+0x62,0xf5,0x7d,0x8f,0x6c,0x51,0x7f
+
+# ATT: vcvttps2uqqs -512(%edx){1to2}, %xmm2 {%k7} {z}
+# INTEL: vcvttps2uqqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to2}
+0x62,0xf5,0x7d,0x9f,0x6c,0x52,0x80
+
+# ATT: vcvttps2uqqs 268435456(%esp,%esi,8), %ymm2
+# INTEL: vcvttps2uqqs ymm2, xmmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7d,0x28,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2uqqs 291(%edi,%eax,4), %ymm2 {%k7}
+# INTEL: vcvttps2uqqs ymm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7d,0x2f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2uqqs (%eax){1to4}, %ymm2
+# INTEL: vcvttps2uqqs ymm2, dword ptr [eax]{1to4}
+0x62,0xf5,0x7d,0x38,0x6c,0x10
+
+# ATT: vcvttps2uqqs -512(,%ebp,2), %ymm2
+# INTEL: vcvttps2uqqs ymm2, xmmword ptr [2*ebp - 512]
+0x62,0xf5,0x7d,0x28,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttps2uqqs 2032(%ecx), %ymm2 {%k7} {z}
+# INTEL: vcvttps2uqqs ymm2 {k7} {z}, xmmword ptr [ecx + 2032]
+0x62,0xf5,0x7d,0xaf,0x6c,0x51,0x7f
+
+# ATT: vcvttps2uqqs -512(%edx){1to4}, %ymm2 {%k7} {z}
+# INTEL: vcvttps2uqqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+0x62,0xf5,0x7d,0xbf,0x6c,0x52,0x80
+
+# ATT: vcvttps2uqqs 268435456(%esp,%esi,8), %zmm2
+# INTEL: vcvttps2uqqs zmm2, ymmword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7d,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2uqqs 291(%edi,%eax,4), %zmm2 {%k7}
+# INTEL: vcvttps2uqqs zmm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7d,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2uqqs (%eax){1to8}, %zmm2
+# INTEL: vcvttps2uqqs zmm2, dword ptr [eax]{1to8}
+0x62,0xf5,0x7d,0x58,0x6c,0x10
+
+# ATT: vcvttps2uqqs -1024(,%ebp,2), %zmm2
+# INTEL: vcvttps2uqqs zmm2, ymmword ptr [2*ebp - 1024]
+0x62,0xf5,0x7d,0x48,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttps2uqqs 4064(%ecx), %zmm2 {%k7} {z}
+# INTEL: vcvttps2uqqs zmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+0x62,0xf5,0x7d,0xcf,0x6c,0x51,0x7f
+
+# ATT: vcvttps2uqqs -512(%edx){1to8}, %zmm2 {%k7} {z}
+# INTEL: vcvttps2uqqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+0x62,0xf5,0x7d,0xdf,0x6c,0x52,0x80
+
+# ATT: vcvttsd2sis %xmm2, %ecx
+# INTEL: vcvttsd2sis ecx, xmm2
+0x62,0xf5,0x7f,0x08,0x6d,0xca
+
+# ATT: vcvttsd2sis {sae}, %xmm2, %ecx
+# INTEL: vcvttsd2sis ecx, xmm2, {sae}
+0x62,0xf5,0x7f,0x18,0x6d,0xca
+
+# ATT: vcvttsd2sis 268435456(%esp,%esi,8), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7f,0x08,0x6d,0x8c,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttsd2sis 291(%edi,%eax,4), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7f,0x08,0x6d,0x8c,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttsd2sis (%eax), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [eax]
+0x62,0xf5,0x7f,0x08,0x6d,0x08
+
+# ATT: vcvttsd2sis -256(,%ebp,2), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [2*ebp - 256]
+0x62,0xf5,0x7f,0x08,0x6d,0x0c,0x6d,0x00,0xff,0xff,0xff
+
+# ATT: vcvttsd2sis 1016(%ecx), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [ecx + 1016]
+0x62,0xf5,0x7f,0x08,0x6d,0x49,0x7f
+
+# ATT: vcvttsd2sis -1024(%edx), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [edx - 1024]
+0x62,0xf5,0x7f,0x08,0x6d,0x4a,0x80
+
+# ATT: vcvttsd2usis %xmm2, %ecx
+# INTEL: vcvttsd2usis ecx, xmm2
+0x62,0xf5,0x7f,0x08,0x6c,0xca
+
+# ATT: vcvttsd2usis {sae}, %xmm2, %ecx
+# INTEL: vcvttsd2usis ecx, xmm2, {sae}
+0x62,0xf5,0x7f,0x18,0x6c,0xca
+
+# ATT: vcvttsd2usis 268435456(%esp,%esi,8), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7f,0x08,0x6c,0x8c,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttsd2usis 291(%edi,%eax,4), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7f,0x08,0x6c,0x8c,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttsd2usis (%eax), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [eax]
+0x62,0xf5,0x7f,0x08,0x6c,0x08
+
+# ATT: vcvttsd2usis -256(,%ebp,2), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [2*ebp - 256]
+0x62,0xf5,0x7f,0x08,0x6c,0x0c,0x6d,0x00,0xff,0xff,0xff
+
+# ATT: vcvttsd2usis 1016(%ecx), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [ecx + 1016]
+0x62,0xf5,0x7f,0x08,0x6c,0x49,0x7f
+
+# ATT: vcvttsd2usis -1024(%edx), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [edx - 1024]
+0x62,0xf5,0x7f,0x08,0x6c,0x4a,0x80
+
+# ATT: vcvttss2sis %xmm2, %ecx
+# INTEL: vcvttss2sis ecx, xmm2
+0x62,0xf5,0x7e,0x08,0x6d,0xca
+
+# ATT: vcvttss2sis {sae}, %xmm2, %ecx
+# INTEL: vcvttss2sis ecx, xmm2, {sae}
+0x62,0xf5,0x7e,0x18,0x6d,0xca
+
+# ATT: vcvttss2sis 268435456(%esp,%esi,8), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7e,0x08,0x6d,0x8c,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttss2sis 291(%edi,%eax,4), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7e,0x08,0x6d,0x8c,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttss2sis (%eax), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [eax]
+0x62,0xf5,0x7e,0x08,0x6d,0x08
+
+# ATT: vcvttss2sis -128(,%ebp,2), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [2*ebp - 128]
+0x62,0xf5,0x7e,0x08,0x6d,0x0c,0x6d,0x80,0xff,0xff,0xff
+
+# ATT: vcvttss2sis 508(%ecx), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [ecx + 508]
+0x62,0xf5,0x7e,0x08,0x6d,0x49,0x7f
+
+# ATT: vcvttss2sis -512(%edx), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [edx - 512]
+0x62,0xf5,0x7e,0x08,0x6d,0x4a,0x80
+
+# ATT: vcvttss2usis %xmm2, %ecx
+# INTEL: vcvttss2usis ecx, xmm2
+0x62,0xf5,0x7e,0x08,0x6c,0xca
+
+# ATT: vcvttss2usis {sae}, %xmm2, %ecx
+# INTEL: vcvttss2usis ecx, xmm2, {sae}
+0x62,0xf5,0x7e,0x18,0x6c,0xca
+
+# ATT: vcvttss2usis 268435456(%esp,%esi,8), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [esp + 8*esi + 268435456]
+0x62,0xf5,0x7e,0x08,0x6c,0x8c,0xf4,0x00,0x00,0x00,0x10
+
+# ATT: vcvttss2usis 291(%edi,%eax,4), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [edi + 4*eax + 291]
+0x62,0xf5,0x7e,0x08,0x6c,0x8c,0x87,0x23,0x01,0x00,0x00
+
+# ATT: vcvttss2usis (%eax), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [eax]
+0x62,0xf5,0x7e,0x08,0x6c,0x08
+
+# ATT: vcvttss2usis -128(,%ebp,2), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [2*ebp - 128]
+0x62,0xf5,0x7e,0x08,0x6c,0x0c,0x6d,0x80,0xff,0xff,0xff
+
+# ATT: vcvttss2usis 508(%ecx), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [ecx + 508]
+0x62,0xf5,0x7e,0x08,0x6c,0x49,0x7f
+
+# ATT: vcvttss2usis -512(%edx), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [edx - 512]
+0x62,0xf5,0x7e,0x08,0x6c,0x4a,0x80
+
diff --git a/llvm/test/MC/Disassembler/X86/avx10.2-satcvtds-64.txt b/llvm/test/MC/Disassembler/X86/avx10.2-satcvtds-64.txt
new file mode 100644
index 00000000000000..c0c3340dcc4350
--- /dev/null
+++ b/llvm/test/MC/Disassembler/X86/avx10.2-satcvtds-64.txt
@@ -0,0 +1,1171 @@
+# RUN: llvm-mc --disassemble %s -triple=x86_64 | FileCheck %s --check-prefixes=ATT
+# RUN: llvm-mc --disassemble %s -triple=x86_64 -x86-asm-syntax=intel --output-asm-variant=1 | FileCheck %s --check-prefixes=INTEL
+
+# ATT: vcvttpd2dqs %xmm23, %xmm22
+# INTEL: vcvttpd2dqs xmm22, xmm23
+0x62,0xa5,0xfc,0x08,0x6d,0xf7
+
+# ATT: vcvttpd2dqs %xmm23, %xmm22 {%k7}
+# INTEL: vcvttpd2dqs xmm22 {k7}, xmm23
+0x62,0xa5,0xfc,0x0f,0x6d,0xf7
+
+# ATT: vcvttpd2dqs %xmm23, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm22 {k7} {z}, xmm23
+0x62,0xa5,0xfc,0x8f,0x6d,0xf7
+
+# ATT: vcvttpd2dqs %ymm23, %xmm22
+# INTEL: vcvttpd2dqs xmm22, ymm23
+0x62,0xa5,0xfc,0x28,0x6d,0xf7
+
+# ATT: vcvttpd2dqs {sae}, %ymm23, %xmm22
+# INTEL: vcvttpd2dqs xmm22, ymm23, {sae}
+0x62,0xa5,0xf8,0x18,0x6d,0xf7
+
+# ATT: vcvttpd2dqs %ymm23, %xmm22 {%k7}
+# INTEL: vcvttpd2dqs xmm22 {k7}, ymm23
+0x62,0xa5,0xfc,0x2f,0x6d,0xf7
+
+# ATT: vcvttpd2dqs {sae}, %ymm23, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm22 {k7} {z}, ymm23, {sae}
+0x62,0xa5,0xf8,0x9f,0x6d,0xf7
+
+# ATT: vcvttpd2dqs %zmm23, %ymm22
+# INTEL: vcvttpd2dqs ymm22, zmm23
+0x62,0xa5,0xfc,0x48,0x6d,0xf7
+
+# ATT: vcvttpd2dqs {sae}, %zmm23, %ymm22
+# INTEL: vcvttpd2dqs ymm22, zmm23, {sae}
+0x62,0xa5,0xfc,0x18,0x6d,0xf7
+
+# ATT: vcvttpd2dqs %zmm23, %ymm22 {%k7}
+# INTEL: vcvttpd2dqs ymm22 {k7}, zmm23
+0x62,0xa5,0xfc,0x4f,0x6d,0xf7
+
+# ATT: vcvttpd2dqs {sae}, %zmm23, %ymm22 {%k7} {z}
+# INTEL: vcvttpd2dqs ymm22 {k7} {z}, zmm23, {sae}
+0x62,0xa5,0xfc,0x9f,0x6d,0xf7
+
+# ATT: vcvttpd2dqsx 268435456(%rbp,%r14,8), %xmm22
+# INTEL: vcvttpd2dqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0xfc,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2dqsx 291(%r8,%rax,4), %xmm22 {%k7}
+# INTEL: vcvttpd2dqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0xfc,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2dqs (%rip){1to2}, %xmm22
+# INTEL: vcvttpd2dqs xmm22, qword ptr [rip]{1to2}
+0x62,0xe5,0xfc,0x18,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2dqsx -512(,%rbp,2), %xmm22
+# INTEL: vcvttpd2dqs xmm22, xmmword ptr [2*rbp - 512]
+0x62,0xe5,0xfc,0x08,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttpd2dqsx 2032(%rcx), %xmm22 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+0x62,0xe5,0xfc,0x8f,0x6d,0x71,0x7f
+
+# ATT: vcvttpd2dqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+0x62,0xe5,0xfc,0x9f,0x6d,0x72,0x80
+
+# ATT: vcvttpd2dqs (%rip){1to4}, %xmm22
+# INTEL: vcvttpd2dqs xmm22, qword ptr [rip]{1to4}
+0x62,0xe5,0xfc,0x38,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2dqsy -1024(,%rbp,2), %xmm22
+# INTEL: vcvttpd2dqs xmm22, ymmword ptr [2*rbp - 1024]
+0x62,0xe5,0xfc,0x28,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttpd2dqsy 4064(%rcx), %xmm22 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+0x62,0xe5,0xfc,0xaf,0x6d,0x71,0x7f
+
+# ATT: vcvttpd2dqs -1024(%rdx){1to4}, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2dqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+0x62,0xe5,0xfc,0xbf,0x6d,0x72,0x80
+
+# ATT: vcvttpd2dqs 268435456(%rbp,%r14,8), %ymm22
+# INTEL: vcvttpd2dqs ymm22, zmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0xfc,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2dqs 291(%r8,%rax,4), %ymm22 {%k7}
+# INTEL: vcvttpd2dqs ymm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0xfc,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2dqs (%rip){1to8}, %ymm22
+# INTEL: vcvttpd2dqs ymm22, qword ptr [rip]{1to8}
+0x62,0xe5,0xfc,0x58,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2dqs -2048(,%rbp,2), %ymm22
+# INTEL: vcvttpd2dqs ymm22, zmmword ptr [2*rbp - 2048]
+0x62,0xe5,0xfc,0x48,0x6d,0x34,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttpd2dqs 8128(%rcx), %ymm22 {%k7} {z}
+# INTEL: vcvttpd2dqs ymm22 {k7} {z}, zmmword ptr [rcx + 8128]
+0x62,0xe5,0xfc,0xcf,0x6d,0x71,0x7f
+
+# ATT: vcvttpd2dqs -1024(%rdx){1to8}, %ymm22 {%k7} {z}
+# INTEL: vcvttpd2dqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+0x62,0xe5,0xfc,0xdf,0x6d,0x72,0x80
+
+# ATT: vcvttpd2qqs %xmm23, %xmm22
+# INTEL: vcvttpd2qqs xmm22, xmm23
+0x62,0xa5,0xfd,0x08,0x6d,0xf7
+
+# ATT: vcvttpd2qqs %xmm23, %xmm22 {%k7}
+# INTEL: vcvttpd2qqs xmm22 {k7}, xmm23
+0x62,0xa5,0xfd,0x0f,0x6d,0xf7
+
+# ATT: vcvttpd2qqs %xmm23, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2qqs xmm22 {k7} {z}, xmm23
+0x62,0xa5,0xfd,0x8f,0x6d,0xf7
+
+# ATT: vcvttpd2qqs %ymm23, %ymm22
+# INTEL: vcvttpd2qqs ymm22, ymm23
+0x62,0xa5,0xfd,0x28,0x6d,0xf7
+
+# ATT: vcvttpd2qqs {sae}, %ymm23, %ymm22
+# INTEL: vcvttpd2qqs ymm22, ymm23, {sae}
+0x62,0xa5,0xf9,0x18,0x6d,0xf7
+
+# ATT: vcvttpd2qqs %ymm23, %ymm22 {%k7}
+# INTEL: vcvttpd2qqs ymm22 {k7}, ymm23
+0x62,0xa5,0xfd,0x2f,0x6d,0xf7
+
+# ATT: vcvttpd2qqs {sae}, %ymm23, %ymm22 {%k7} {z}
+# INTEL: vcvttpd2qqs ymm22 {k7} {z}, ymm23, {sae}
+0x62,0xa5,0xf9,0x9f,0x6d,0xf7
+
+# ATT: vcvttpd2qqs %zmm23, %zmm22
+# INTEL: vcvttpd2qqs zmm22, zmm23
+0x62,0xa5,0xfd,0x48,0x6d,0xf7
+
+# ATT: vcvttpd2qqs {sae}, %zmm23, %zmm22
+# INTEL: vcvttpd2qqs zmm22, zmm23, {sae}
+0x62,0xa5,0xfd,0x18,0x6d,0xf7
+
+# ATT: vcvttpd2qqs %zmm23, %zmm22 {%k7}
+# INTEL: vcvttpd2qqs zmm22 {k7}, zmm23
+0x62,0xa5,0xfd,0x4f,0x6d,0xf7
+
+# ATT: vcvttpd2qqs {sae}, %zmm23, %zmm22 {%k7} {z}
+# INTEL: vcvttpd2qqs zmm22 {k7} {z}, zmm23, {sae}
+0x62,0xa5,0xfd,0x9f,0x6d,0xf7
+
+# ATT: vcvttpd2qqs 268435456(%rbp,%r14,8), %xmm22
+# INTEL: vcvttpd2qqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0xfd,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2qqs 291(%r8,%rax,4), %xmm22 {%k7}
+# INTEL: vcvttpd2qqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0xfd,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2qqs (%rip){1to2}, %xmm22
+# INTEL: vcvttpd2qqs xmm22, qword ptr [rip]{1to2}
+0x62,0xe5,0xfd,0x18,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2qqs -512(,%rbp,2), %xmm22
+# INTEL: vcvttpd2qqs xmm22, xmmword ptr [2*rbp - 512]
+0x62,0xe5,0xfd,0x08,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttpd2qqs 2032(%rcx), %xmm22 {%k7} {z}
+# INTEL: vcvttpd2qqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+0x62,0xe5,0xfd,0x8f,0x6d,0x71,0x7f
+
+# ATT: vcvttpd2qqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2qqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+0x62,0xe5,0xfd,0x9f,0x6d,0x72,0x80
+
+# ATT: vcvttpd2qqs 268435456(%rbp,%r14,8), %ymm22
+# INTEL: vcvttpd2qqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0xfd,0x28,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2qqs 291(%r8,%rax,4), %ymm22 {%k7}
+# INTEL: vcvttpd2qqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0xfd,0x2f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2qqs (%rip){1to4}, %ymm22
+# INTEL: vcvttpd2qqs ymm22, qword ptr [rip]{1to4}
+0x62,0xe5,0xfd,0x38,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2qqs -1024(,%rbp,2), %ymm22
+# INTEL: vcvttpd2qqs ymm22, ymmword ptr [2*rbp - 1024]
+0x62,0xe5,0xfd,0x28,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttpd2qqs 4064(%rcx), %ymm22 {%k7} {z}
+# INTEL: vcvttpd2qqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+0x62,0xe5,0xfd,0xaf,0x6d,0x71,0x7f
+
+# ATT: vcvttpd2qqs -1024(%rdx){1to4}, %ymm22 {%k7} {z}
+# INTEL: vcvttpd2qqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+0x62,0xe5,0xfd,0xbf,0x6d,0x72,0x80
+
+# ATT: vcvttpd2qqs 268435456(%rbp,%r14,8), %zmm22
+# INTEL: vcvttpd2qqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0xfd,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2qqs 291(%r8,%rax,4), %zmm22 {%k7}
+# INTEL: vcvttpd2qqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0xfd,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2qqs (%rip){1to8}, %zmm22
+# INTEL: vcvttpd2qqs zmm22, qword ptr [rip]{1to8}
+0x62,0xe5,0xfd,0x58,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2qqs -2048(,%rbp,2), %zmm22
+# INTEL: vcvttpd2qqs zmm22, zmmword ptr [2*rbp - 2048]
+0x62,0xe5,0xfd,0x48,0x6d,0x34,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttpd2qqs 8128(%rcx), %zmm22 {%k7} {z}
+# INTEL: vcvttpd2qqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+0x62,0xe5,0xfd,0xcf,0x6d,0x71,0x7f
+
+# ATT: vcvttpd2qqs -1024(%rdx){1to8}, %zmm22 {%k7} {z}
+# INTEL: vcvttpd2qqs zmm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+0x62,0xe5,0xfd,0xdf,0x6d,0x72,0x80
+
+# ATT: vcvttpd2udqs %xmm23, %xmm22
+# INTEL: vcvttpd2udqs xmm22, xmm23
+0x62,0xa5,0xfc,0x08,0x6c,0xf7
+
+# ATT: vcvttpd2udqs %xmm23, %xmm22 {%k7}
+# INTEL: vcvttpd2udqs xmm22 {k7}, xmm23
+0x62,0xa5,0xfc,0x0f,0x6c,0xf7
+
+# ATT: vcvttpd2udqs %xmm23, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm22 {k7} {z}, xmm23
+0x62,0xa5,0xfc,0x8f,0x6c,0xf7
+
+# ATT: vcvttpd2udqs %ymm23, %xmm22
+# INTEL: vcvttpd2udqs xmm22, ymm23
+0x62,0xa5,0xfc,0x28,0x6c,0xf7
+
+# ATT: vcvttpd2udqs {sae}, %ymm23, %xmm22
+# INTEL: vcvttpd2udqs xmm22, ymm23, {sae}
+0x62,0xa5,0xf8,0x18,0x6c,0xf7
+
+# ATT: vcvttpd2udqs %ymm23, %xmm22 {%k7}
+# INTEL: vcvttpd2udqs xmm22 {k7}, ymm23
+0x62,0xa5,0xfc,0x2f,0x6c,0xf7
+
+# ATT: vcvttpd2udqs {sae}, %ymm23, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm22 {k7} {z}, ymm23, {sae}
+0x62,0xa5,0xf8,0x9f,0x6c,0xf7
+
+# ATT: vcvttpd2udqs %zmm23, %ymm22
+# INTEL: vcvttpd2udqs ymm22, zmm23
+0x62,0xa5,0xfc,0x48,0x6c,0xf7
+
+# ATT: vcvttpd2udqs {sae}, %zmm23, %ymm22
+# INTEL: vcvttpd2udqs ymm22, zmm23, {sae}
+0x62,0xa5,0xfc,0x18,0x6c,0xf7
+
+# ATT: vcvttpd2udqs %zmm23, %ymm22 {%k7}
+# INTEL: vcvttpd2udqs ymm22 {k7}, zmm23
+0x62,0xa5,0xfc,0x4f,0x6c,0xf7
+
+# ATT: vcvttpd2udqs {sae}, %zmm23, %ymm22 {%k7} {z}
+# INTEL: vcvttpd2udqs ymm22 {k7} {z}, zmm23, {sae}
+0x62,0xa5,0xfc,0x9f,0x6c,0xf7
+
+# ATT: vcvttpd2udqsx 268435456(%rbp,%r14,8), %xmm22
+# INTEL: vcvttpd2udqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0xfc,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2udqsx 291(%r8,%rax,4), %xmm22 {%k7}
+# INTEL: vcvttpd2udqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0xfc,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2udqs (%rip){1to2}, %xmm22
+# INTEL: vcvttpd2udqs xmm22, qword ptr [rip]{1to2}
+0x62,0xe5,0xfc,0x18,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2udqsx -512(,%rbp,2), %xmm22
+# INTEL: vcvttpd2udqs xmm22, xmmword ptr [2*rbp - 512]
+0x62,0xe5,0xfc,0x08,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttpd2udqsx 2032(%rcx), %xmm22 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+0x62,0xe5,0xfc,0x8f,0x6c,0x71,0x7f
+
+# ATT: vcvttpd2udqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+0x62,0xe5,0xfc,0x9f,0x6c,0x72,0x80
+
+# ATT: vcvttpd2udqs (%rip){1to4}, %xmm22
+# INTEL: vcvttpd2udqs xmm22, qword ptr [rip]{1to4}
+0x62,0xe5,0xfc,0x38,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2udqsy -1024(,%rbp,2), %xmm22
+# INTEL: vcvttpd2udqs xmm22, ymmword ptr [2*rbp - 1024]
+0x62,0xe5,0xfc,0x28,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttpd2udqsy 4064(%rcx), %xmm22 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+0x62,0xe5,0xfc,0xaf,0x6c,0x71,0x7f
+
+# ATT: vcvttpd2udqs -1024(%rdx){1to4}, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2udqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+0x62,0xe5,0xfc,0xbf,0x6c,0x72,0x80
+
+# ATT: vcvttpd2udqs 268435456(%rbp,%r14,8), %ymm22
+# INTEL: vcvttpd2udqs ymm22, zmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0xfc,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2udqs 291(%r8,%rax,4), %ymm22 {%k7}
+# INTEL: vcvttpd2udqs ymm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0xfc,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2udqs (%rip){1to8}, %ymm22
+# INTEL: vcvttpd2udqs ymm22, qword ptr [rip]{1to8}
+0x62,0xe5,0xfc,0x58,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2udqs -2048(,%rbp,2), %ymm22
+# INTEL: vcvttpd2udqs ymm22, zmmword ptr [2*rbp - 2048]
+0x62,0xe5,0xfc,0x48,0x6c,0x34,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttpd2udqs 8128(%rcx), %ymm22 {%k7} {z}
+# INTEL: vcvttpd2udqs ymm22 {k7} {z}, zmmword ptr [rcx + 8128]
+0x62,0xe5,0xfc,0xcf,0x6c,0x71,0x7f
+
+# ATT: vcvttpd2udqs -1024(%rdx){1to8}, %ymm22 {%k7} {z}
+# INTEL: vcvttpd2udqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+0x62,0xe5,0xfc,0xdf,0x6c,0x72,0x80
+
+# ATT: vcvttpd2uqqs %xmm23, %xmm22
+# INTEL: vcvttpd2uqqs xmm22, xmm23
+0x62,0xa5,0xfd,0x08,0x6c,0xf7
+
+# ATT: vcvttpd2uqqs %xmm23, %xmm22 {%k7}
+# INTEL: vcvttpd2uqqs xmm22 {k7}, xmm23
+0x62,0xa5,0xfd,0x0f,0x6c,0xf7
+
+# ATT: vcvttpd2uqqs %xmm23, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2uqqs xmm22 {k7} {z}, xmm23
+0x62,0xa5,0xfd,0x8f,0x6c,0xf7
+
+# ATT: vcvttpd2uqqs %ymm23, %ymm22
+# INTEL: vcvttpd2uqqs ymm22, ymm23
+0x62,0xa5,0xfd,0x28,0x6c,0xf7
+
+# ATT: vcvttpd2uqqs {sae}, %ymm23, %ymm22
+# INTEL: vcvttpd2uqqs ymm22, ymm23, {sae}
+0x62,0xa5,0xf9,0x18,0x6c,0xf7
+
+# ATT: vcvttpd2uqqs %ymm23, %ymm22 {%k7}
+# INTEL: vcvttpd2uqqs ymm22 {k7}, ymm23
+0x62,0xa5,0xfd,0x2f,0x6c,0xf7
+
+# ATT: vcvttpd2uqqs {sae}, %ymm23, %ymm22 {%k7} {z}
+# INTEL: vcvttpd2uqqs ymm22 {k7} {z}, ymm23, {sae}
+0x62,0xa5,0xf9,0x9f,0x6c,0xf7
+
+# ATT: vcvttpd2uqqs %zmm23, %zmm22
+# INTEL: vcvttpd2uqqs zmm22, zmm23
+0x62,0xa5,0xfd,0x48,0x6c,0xf7
+
+# ATT: vcvttpd2uqqs {sae}, %zmm23, %zmm22
+# INTEL: vcvttpd2uqqs zmm22, zmm23, {sae}
+0x62,0xa5,0xfd,0x18,0x6c,0xf7
+
+# ATT: vcvttpd2uqqs %zmm23, %zmm22 {%k7}
+# INTEL: vcvttpd2uqqs zmm22 {k7}, zmm23
+0x62,0xa5,0xfd,0x4f,0x6c,0xf7
+
+# ATT: vcvttpd2uqqs {sae}, %zmm23, %zmm22 {%k7} {z}
+# INTEL: vcvttpd2uqqs zmm22 {k7} {z}, zmm23, {sae}
+0x62,0xa5,0xfd,0x9f,0x6c,0xf7
+
+# ATT: vcvttpd2uqqs 268435456(%rbp,%r14,8), %xmm22
+# INTEL: vcvttpd2uqqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0xfd,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2uqqs 291(%r8,%rax,4), %xmm22 {%k7}
+# INTEL: vcvttpd2uqqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0xfd,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2uqqs (%rip){1to2}, %xmm22
+# INTEL: vcvttpd2uqqs xmm22, qword ptr [rip]{1to2}
+0x62,0xe5,0xfd,0x18,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2uqqs -512(,%rbp,2), %xmm22
+# INTEL: vcvttpd2uqqs xmm22, xmmword ptr [2*rbp - 512]
+0x62,0xe5,0xfd,0x08,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttpd2uqqs 2032(%rcx), %xmm22 {%k7} {z}
+# INTEL: vcvttpd2uqqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+0x62,0xe5,0xfd,0x8f,0x6c,0x71,0x7f
+
+# ATT: vcvttpd2uqqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+# INTEL: vcvttpd2uqqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+0x62,0xe5,0xfd,0x9f,0x6c,0x72,0x80
+
+# ATT: vcvttpd2uqqs 268435456(%rbp,%r14,8), %ymm22
+# INTEL: vcvttpd2uqqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0xfd,0x28,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2uqqs 291(%r8,%rax,4), %ymm22 {%k7}
+# INTEL: vcvttpd2uqqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0xfd,0x2f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2uqqs (%rip){1to4}, %ymm22
+# INTEL: vcvttpd2uqqs ymm22, qword ptr [rip]{1to4}
+0x62,0xe5,0xfd,0x38,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2uqqs -1024(,%rbp,2), %ymm22
+# INTEL: vcvttpd2uqqs ymm22, ymmword ptr [2*rbp - 1024]
+0x62,0xe5,0xfd,0x28,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttpd2uqqs 4064(%rcx), %ymm22 {%k7} {z}
+# INTEL: vcvttpd2uqqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+0x62,0xe5,0xfd,0xaf,0x6c,0x71,0x7f
+
+# ATT: vcvttpd2uqqs -1024(%rdx){1to4}, %ymm22 {%k7} {z}
+# INTEL: vcvttpd2uqqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+0x62,0xe5,0xfd,0xbf,0x6c,0x72,0x80
+
+# ATT: vcvttpd2uqqs 268435456(%rbp,%r14,8), %zmm22
+# INTEL: vcvttpd2uqqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0xfd,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttpd2uqqs 291(%r8,%rax,4), %zmm22 {%k7}
+# INTEL: vcvttpd2uqqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0xfd,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttpd2uqqs (%rip){1to8}, %zmm22
+# INTEL: vcvttpd2uqqs zmm22, qword ptr [rip]{1to8}
+0x62,0xe5,0xfd,0x58,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttpd2uqqs -2048(,%rbp,2), %zmm22
+# INTEL: vcvttpd2uqqs zmm22, zmmword ptr [2*rbp - 2048]
+0x62,0xe5,0xfd,0x48,0x6c,0x34,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttpd2uqqs 8128(%rcx), %zmm22 {%k7} {z}
+# INTEL: vcvttpd2uqqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+0x62,0xe5,0xfd,0xcf,0x6c,0x71,0x7f
+
+# ATT: vcvttpd2uqqs -1024(%rdx){1to8}, %zmm22 {%k7} {z}
+# INTEL: vcvttpd2uqqs zmm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+0x62,0xe5,0xfd,0xdf,0x6c,0x72,0x80
+
+# ATT: vcvttps2dqs %xmm23, %xmm22
+# INTEL: vcvttps2dqs xmm22, xmm23
+0x62,0xa5,0x7c,0x08,0x6d,0xf7
+
+# ATT: vcvttps2dqs %xmm23, %xmm22 {%k7}
+# INTEL: vcvttps2dqs xmm22 {k7}, xmm23
+0x62,0xa5,0x7c,0x0f,0x6d,0xf7
+
+# ATT: vcvttps2dqs %xmm23, %xmm22 {%k7} {z}
+# INTEL: vcvttps2dqs xmm22 {k7} {z}, xmm23
+0x62,0xa5,0x7c,0x8f,0x6d,0xf7
+
+# ATT: vcvttps2dqs %ymm23, %ymm22
+# INTEL: vcvttps2dqs ymm22, ymm23
+0x62,0xa5,0x7c,0x28,0x6d,0xf7
+
+# ATT: vcvttps2dqs {sae}, %ymm23, %ymm22
+# INTEL: vcvttps2dqs ymm22, ymm23, {sae}
+0x62,0xa5,0x78,0x18,0x6d,0xf7
+
+# ATT: vcvttps2dqs %ymm23, %ymm22 {%k7}
+# INTEL: vcvttps2dqs ymm22 {k7}, ymm23
+0x62,0xa5,0x7c,0x2f,0x6d,0xf7
+
+# ATT: vcvttps2dqs {sae}, %ymm23, %ymm22 {%k7} {z}
+# INTEL: vcvttps2dqs ymm22 {k7} {z}, ymm23, {sae}
+0x62,0xa5,0x78,0x9f,0x6d,0xf7
+
+# ATT: vcvttps2dqs %zmm23, %zmm22
+# INTEL: vcvttps2dqs zmm22, zmm23
+0x62,0xa5,0x7c,0x48,0x6d,0xf7
+
+# ATT: vcvttps2dqs {sae}, %zmm23, %zmm22
+# INTEL: vcvttps2dqs zmm22, zmm23, {sae}
+0x62,0xa5,0x7c,0x18,0x6d,0xf7
+
+# ATT: vcvttps2dqs %zmm23, %zmm22 {%k7}
+# INTEL: vcvttps2dqs zmm22 {k7}, zmm23
+0x62,0xa5,0x7c,0x4f,0x6d,0xf7
+
+# ATT: vcvttps2dqs {sae}, %zmm23, %zmm22 {%k7} {z}
+# INTEL: vcvttps2dqs zmm22 {k7} {z}, zmm23, {sae}
+0x62,0xa5,0x7c,0x9f,0x6d,0xf7
+
+# ATT: vcvttps2dqs 268435456(%rbp,%r14,8), %xmm22
+# INTEL: vcvttps2dqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7c,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2dqs 291(%r8,%rax,4), %xmm22 {%k7}
+# INTEL: vcvttps2dqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7c,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2dqs (%rip){1to4}, %xmm22
+# INTEL: vcvttps2dqs xmm22, dword ptr [rip]{1to4}
+0x62,0xe5,0x7c,0x18,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2dqs -512(,%rbp,2), %xmm22
+# INTEL: vcvttps2dqs xmm22, xmmword ptr [2*rbp - 512]
+0x62,0xe5,0x7c,0x08,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttps2dqs 2032(%rcx), %xmm22 {%k7} {z}
+# INTEL: vcvttps2dqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+0x62,0xe5,0x7c,0x8f,0x6d,0x71,0x7f
+
+# ATT: vcvttps2dqs -512(%rdx){1to4}, %xmm22 {%k7} {z}
+# INTEL: vcvttps2dqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+0x62,0xe5,0x7c,0x9f,0x6d,0x72,0x80
+
+# ATT: vcvttps2dqs 268435456(%rbp,%r14,8), %ymm22
+# INTEL: vcvttps2dqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7c,0x28,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2dqs 291(%r8,%rax,4), %ymm22 {%k7}
+# INTEL: vcvttps2dqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7c,0x2f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2dqs (%rip){1to8}, %ymm22
+# INTEL: vcvttps2dqs ymm22, dword ptr [rip]{1to8}
+0x62,0xe5,0x7c,0x38,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2dqs -1024(,%rbp,2), %ymm22
+# INTEL: vcvttps2dqs ymm22, ymmword ptr [2*rbp - 1024]
+0x62,0xe5,0x7c,0x28,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttps2dqs 4064(%rcx), %ymm22 {%k7} {z}
+# INTEL: vcvttps2dqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+0x62,0xe5,0x7c,0xaf,0x6d,0x71,0x7f
+
+# ATT: vcvttps2dqs -512(%rdx){1to8}, %ymm22 {%k7} {z}
+# INTEL: vcvttps2dqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+0x62,0xe5,0x7c,0xbf,0x6d,0x72,0x80
+
+# ATT: vcvttps2dqs 268435456(%rbp,%r14,8), %zmm22
+# INTEL: vcvttps2dqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7c,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2dqs 291(%r8,%rax,4), %zmm22 {%k7}
+# INTEL: vcvttps2dqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7c,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2dqs (%rip){1to16}, %zmm22
+# INTEL: vcvttps2dqs zmm22, dword ptr [rip]{1to16}
+0x62,0xe5,0x7c,0x58,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2dqs -2048(,%rbp,2), %zmm22
+# INTEL: vcvttps2dqs zmm22, zmmword ptr [2*rbp - 2048]
+0x62,0xe5,0x7c,0x48,0x6d,0x34,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttps2dqs 8128(%rcx), %zmm22 {%k7} {z}
+# INTEL: vcvttps2dqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+0x62,0xe5,0x7c,0xcf,0x6d,0x71,0x7f
+
+# ATT: vcvttps2dqs -512(%rdx){1to16}, %zmm22 {%k7} {z}
+# INTEL: vcvttps2dqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to16}
+0x62,0xe5,0x7c,0xdf,0x6d,0x72,0x80
+
+# ATT: vcvttps2qqs %xmm23, %xmm22
+# INTEL: vcvttps2qqs xmm22, xmm23
+0x62,0xa5,0x7d,0x08,0x6d,0xf7
+
+# ATT: vcvttps2qqs %xmm23, %xmm22 {%k7}
+# INTEL: vcvttps2qqs xmm22 {k7}, xmm23
+0x62,0xa5,0x7d,0x0f,0x6d,0xf7
+
+# ATT: vcvttps2qqs %xmm23, %xmm22 {%k7} {z}
+# INTEL: vcvttps2qqs xmm22 {k7} {z}, xmm23
+0x62,0xa5,0x7d,0x8f,0x6d,0xf7
+
+# ATT: vcvttps2qqs %xmm23, %ymm22
+# INTEL: vcvttps2qqs ymm22, xmm23
+0x62,0xa5,0x7d,0x28,0x6d,0xf7
+
+# ATT: vcvttps2qqs {sae}, %xmm23, %ymm22
+# INTEL: vcvttps2qqs ymm22, xmm23, {sae}
+0x62,0xa5,0x79,0x18,0x6d,0xf7
+
+# ATT: vcvttps2qqs %xmm23, %ymm22 {%k7}
+# INTEL: vcvttps2qqs ymm22 {k7}, xmm23
+0x62,0xa5,0x7d,0x2f,0x6d,0xf7
+
+# ATT: vcvttps2qqs {sae}, %xmm23, %ymm22 {%k7} {z}
+# INTEL: vcvttps2qqs ymm22 {k7} {z}, xmm23, {sae}
+0x62,0xa5,0x79,0x9f,0x6d,0xf7
+
+# ATT: vcvttps2qqs %ymm23, %zmm22
+# INTEL: vcvttps2qqs zmm22, ymm23
+0x62,0xa5,0x7d,0x48,0x6d,0xf7
+
+# ATT: vcvttps2qqs {sae}, %ymm23, %zmm22
+# INTEL: vcvttps2qqs zmm22, ymm23, {sae}
+0x62,0xa5,0x7d,0x18,0x6d,0xf7
+
+# ATT: vcvttps2qqs %ymm23, %zmm22 {%k7}
+# INTEL: vcvttps2qqs zmm22 {k7}, ymm23
+0x62,0xa5,0x7d,0x4f,0x6d,0xf7
+
+# ATT: vcvttps2qqs {sae}, %ymm23, %zmm22 {%k7} {z}
+# INTEL: vcvttps2qqs zmm22 {k7} {z}, ymm23, {sae}
+0x62,0xa5,0x7d,0x9f,0x6d,0xf7
+
+# ATT: vcvttps2qqs 268435456(%rbp,%r14,8), %xmm22
+# INTEL: vcvttps2qqs xmm22, qword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7d,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2qqs 291(%r8,%rax,4), %xmm22 {%k7}
+# INTEL: vcvttps2qqs xmm22 {k7}, qword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7d,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2qqs (%rip){1to2}, %xmm22
+# INTEL: vcvttps2qqs xmm22, dword ptr [rip]{1to2}
+0x62,0xe5,0x7d,0x18,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2qqs -256(,%rbp,2), %xmm22
+# INTEL: vcvttps2qqs xmm22, qword ptr [2*rbp - 256]
+0x62,0xe5,0x7d,0x08,0x6d,0x34,0x6d,0x00,0xff,0xff,0xff
+
+# ATT: vcvttps2qqs 1016(%rcx), %xmm22 {%k7} {z}
+# INTEL: vcvttps2qqs xmm22 {k7} {z}, qword ptr [rcx + 1016]
+0x62,0xe5,0x7d,0x8f,0x6d,0x71,0x7f
+
+# ATT: vcvttps2qqs -512(%rdx){1to2}, %xmm22 {%k7} {z}
+# INTEL: vcvttps2qqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to2}
+0x62,0xe5,0x7d,0x9f,0x6d,0x72,0x80
+
+# ATT: vcvttps2qqs 268435456(%rbp,%r14,8), %ymm22
+# INTEL: vcvttps2qqs ymm22, xmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7d,0x28,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2qqs 291(%r8,%rax,4), %ymm22 {%k7}
+# INTEL: vcvttps2qqs ymm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7d,0x2f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2qqs (%rip){1to4}, %ymm22
+# INTEL: vcvttps2qqs ymm22, dword ptr [rip]{1to4}
+0x62,0xe5,0x7d,0x38,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2qqs -512(,%rbp,2), %ymm22
+# INTEL: vcvttps2qqs ymm22, xmmword ptr [2*rbp - 512]
+0x62,0xe5,0x7d,0x28,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttps2qqs 2032(%rcx), %ymm22 {%k7} {z}
+# INTEL: vcvttps2qqs ymm22 {k7} {z}, xmmword ptr [rcx + 2032]
+0x62,0xe5,0x7d,0xaf,0x6d,0x71,0x7f
+
+# ATT: vcvttps2qqs -512(%rdx){1to4}, %ymm22 {%k7} {z}
+# INTEL: vcvttps2qqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+0x62,0xe5,0x7d,0xbf,0x6d,0x72,0x80
+
+# ATT: vcvttps2qqs 268435456(%rbp,%r14,8), %zmm22
+# INTEL: vcvttps2qqs zmm22, ymmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7d,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2qqs 291(%r8,%rax,4), %zmm22 {%k7}
+# INTEL: vcvttps2qqs zmm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7d,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2qqs (%rip){1to8}, %zmm22
+# INTEL: vcvttps2qqs zmm22, dword ptr [rip]{1to8}
+0x62,0xe5,0x7d,0x58,0x6d,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2qqs -1024(,%rbp,2), %zmm22
+# INTEL: vcvttps2qqs zmm22, ymmword ptr [2*rbp - 1024]
+0x62,0xe5,0x7d,0x48,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttps2qqs 4064(%rcx), %zmm22 {%k7} {z}
+# INTEL: vcvttps2qqs zmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+0x62,0xe5,0x7d,0xcf,0x6d,0x71,0x7f
+
+# ATT: vcvttps2qqs -512(%rdx){1to8}, %zmm22 {%k7} {z}
+# INTEL: vcvttps2qqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+0x62,0xe5,0x7d,0xdf,0x6d,0x72,0x80
+
+# ATT: vcvttps2udqs %xmm23, %xmm22
+# INTEL: vcvttps2udqs xmm22, xmm23
+0x62,0xa5,0x7c,0x08,0x6c,0xf7
+
+# ATT: vcvttps2udqs %xmm23, %xmm22 {%k7}
+# INTEL: vcvttps2udqs xmm22 {k7}, xmm23
+0x62,0xa5,0x7c,0x0f,0x6c,0xf7
+
+# ATT: vcvttps2udqs %xmm23, %xmm22 {%k7} {z}
+# INTEL: vcvttps2udqs xmm22 {k7} {z}, xmm23
+0x62,0xa5,0x7c,0x8f,0x6c,0xf7
+
+# ATT: vcvttps2udqs %ymm23, %ymm22
+# INTEL: vcvttps2udqs ymm22, ymm23
+0x62,0xa5,0x7c,0x28,0x6c,0xf7
+
+# ATT: vcvttps2udqs {sae}, %ymm23, %ymm22
+# INTEL: vcvttps2udqs ymm22, ymm23, {sae}
+0x62,0xa5,0x78,0x18,0x6c,0xf7
+
+# ATT: vcvttps2udqs %ymm23, %ymm22 {%k7}
+# INTEL: vcvttps2udqs ymm22 {k7}, ymm23
+0x62,0xa5,0x7c,0x2f,0x6c,0xf7
+
+# ATT: vcvttps2udqs {sae}, %ymm23, %ymm22 {%k7} {z}
+# INTEL: vcvttps2udqs ymm22 {k7} {z}, ymm23, {sae}
+0x62,0xa5,0x78,0x9f,0x6c,0xf7
+
+# ATT: vcvttps2udqs %zmm23, %zmm22
+# INTEL: vcvttps2udqs zmm22, zmm23
+0x62,0xa5,0x7c,0x48,0x6c,0xf7
+
+# ATT: vcvttps2udqs {sae}, %zmm23, %zmm22
+# INTEL: vcvttps2udqs zmm22, zmm23, {sae}
+0x62,0xa5,0x7c,0x18,0x6c,0xf7
+
+# ATT: vcvttps2udqs %zmm23, %zmm22 {%k7}
+# INTEL: vcvttps2udqs zmm22 {k7}, zmm23
+0x62,0xa5,0x7c,0x4f,0x6c,0xf7
+
+# ATT: vcvttps2udqs {sae}, %zmm23, %zmm22 {%k7} {z}
+# INTEL: vcvttps2udqs zmm22 {k7} {z}, zmm23, {sae}
+0x62,0xa5,0x7c,0x9f,0x6c,0xf7
+
+# ATT: vcvttps2udqs 268435456(%rbp,%r14,8), %xmm22
+# INTEL: vcvttps2udqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7c,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2udqs 291(%r8,%rax,4), %xmm22 {%k7}
+# INTEL: vcvttps2udqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7c,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2udqs (%rip){1to4}, %xmm22
+# INTEL: vcvttps2udqs xmm22, dword ptr [rip]{1to4}
+0x62,0xe5,0x7c,0x18,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2udqs -512(,%rbp,2), %xmm22
+# INTEL: vcvttps2udqs xmm22, xmmword ptr [2*rbp - 512]
+0x62,0xe5,0x7c,0x08,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttps2udqs 2032(%rcx), %xmm22 {%k7} {z}
+# INTEL: vcvttps2udqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+0x62,0xe5,0x7c,0x8f,0x6c,0x71,0x7f
+
+# ATT: vcvttps2udqs -512(%rdx){1to4}, %xmm22 {%k7} {z}
+# INTEL: vcvttps2udqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+0x62,0xe5,0x7c,0x9f,0x6c,0x72,0x80
+
+# ATT: vcvttps2udqs 268435456(%rbp,%r14,8), %ymm22
+# INTEL: vcvttps2udqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7c,0x28,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2udqs 291(%r8,%rax,4), %ymm22 {%k7}
+# INTEL: vcvttps2udqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7c,0x2f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2udqs (%rip){1to8}, %ymm22
+# INTEL: vcvttps2udqs ymm22, dword ptr [rip]{1to8}
+0x62,0xe5,0x7c,0x38,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2udqs -1024(,%rbp,2), %ymm22
+# INTEL: vcvttps2udqs ymm22, ymmword ptr [2*rbp - 1024]
+0x62,0xe5,0x7c,0x28,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttps2udqs 4064(%rcx), %ymm22 {%k7} {z}
+# INTEL: vcvttps2udqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+0x62,0xe5,0x7c,0xaf,0x6c,0x71,0x7f
+
+# ATT: vcvttps2udqs -512(%rdx){1to8}, %ymm22 {%k7} {z}
+# INTEL: vcvttps2udqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+0x62,0xe5,0x7c,0xbf,0x6c,0x72,0x80
+
+# ATT: vcvttps2udqs 268435456(%rbp,%r14,8), %zmm22
+# INTEL: vcvttps2udqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7c,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2udqs 291(%r8,%rax,4), %zmm22 {%k7}
+# INTEL: vcvttps2udqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7c,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2udqs (%rip){1to16}, %zmm22
+# INTEL: vcvttps2udqs zmm22, dword ptr [rip]{1to16}
+0x62,0xe5,0x7c,0x58,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2udqs -2048(,%rbp,2), %zmm22
+# INTEL: vcvttps2udqs zmm22, zmmword ptr [2*rbp - 2048]
+0x62,0xe5,0x7c,0x48,0x6c,0x34,0x6d,0x00,0xf8,0xff,0xff
+
+# ATT: vcvttps2udqs 8128(%rcx), %zmm22 {%k7} {z}
+# INTEL: vcvttps2udqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+0x62,0xe5,0x7c,0xcf,0x6c,0x71,0x7f
+
+# ATT: vcvttps2udqs -512(%rdx){1to16}, %zmm22 {%k7} {z}
+# INTEL: vcvttps2udqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to16}
+0x62,0xe5,0x7c,0xdf,0x6c,0x72,0x80
+
+# ATT: vcvttps2uqqs %xmm23, %xmm22
+# INTEL: vcvttps2uqqs xmm22, xmm23
+0x62,0xa5,0x7d,0x08,0x6c,0xf7
+
+# ATT: vcvttps2uqqs %xmm23, %xmm22 {%k7}
+# INTEL: vcvttps2uqqs xmm22 {k7}, xmm23
+0x62,0xa5,0x7d,0x0f,0x6c,0xf7
+
+# ATT: vcvttps2uqqs %xmm23, %xmm22 {%k7} {z}
+# INTEL: vcvttps2uqqs xmm22 {k7} {z}, xmm23
+0x62,0xa5,0x7d,0x8f,0x6c,0xf7
+
+# ATT: vcvttps2uqqs %xmm23, %ymm22
+# INTEL: vcvttps2uqqs ymm22, xmm23
+0x62,0xa5,0x7d,0x28,0x6c,0xf7
+
+# ATT: vcvttps2uqqs {sae}, %xmm23, %ymm22
+# INTEL: vcvttps2uqqs ymm22, xmm23, {sae}
+0x62,0xa5,0x79,0x18,0x6c,0xf7
+
+# ATT: vcvttps2uqqs %xmm23, %ymm22 {%k7}
+# INTEL: vcvttps2uqqs ymm22 {k7}, xmm23
+0x62,0xa5,0x7d,0x2f,0x6c,0xf7
+
+# ATT: vcvttps2uqqs {sae}, %xmm23, %ymm22 {%k7} {z}
+# INTEL: vcvttps2uqqs ymm22 {k7} {z}, xmm23, {sae}
+0x62,0xa5,0x79,0x9f,0x6c,0xf7
+
+# ATT: vcvttps2uqqs %ymm23, %zmm22
+# INTEL: vcvttps2uqqs zmm22, ymm23
+0x62,0xa5,0x7d,0x48,0x6c,0xf7
+
+# ATT: vcvttps2uqqs {sae}, %ymm23, %zmm22
+# INTEL: vcvttps2uqqs zmm22, ymm23, {sae}
+0x62,0xa5,0x7d,0x18,0x6c,0xf7
+
+# ATT: vcvttps2uqqs %ymm23, %zmm22 {%k7}
+# INTEL: vcvttps2uqqs zmm22 {k7}, ymm23
+0x62,0xa5,0x7d,0x4f,0x6c,0xf7
+
+# ATT: vcvttps2uqqs {sae}, %ymm23, %zmm22 {%k7} {z}
+# INTEL: vcvttps2uqqs zmm22 {k7} {z}, ymm23, {sae}
+0x62,0xa5,0x7d,0x9f,0x6c,0xf7
+
+# ATT: vcvttps2uqqs 268435456(%rbp,%r14,8), %xmm22
+# INTEL: vcvttps2uqqs xmm22, qword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7d,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2uqqs 291(%r8,%rax,4), %xmm22 {%k7}
+# INTEL: vcvttps2uqqs xmm22 {k7}, qword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7d,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2uqqs (%rip){1to2}, %xmm22
+# INTEL: vcvttps2uqqs xmm22, dword ptr [rip]{1to2}
+0x62,0xe5,0x7d,0x18,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2uqqs -256(,%rbp,2), %xmm22
+# INTEL: vcvttps2uqqs xmm22, qword ptr [2*rbp - 256]
+0x62,0xe5,0x7d,0x08,0x6c,0x34,0x6d,0x00,0xff,0xff,0xff
+
+# ATT: vcvttps2uqqs 1016(%rcx), %xmm22 {%k7} {z}
+# INTEL: vcvttps2uqqs xmm22 {k7} {z}, qword ptr [rcx + 1016]
+0x62,0xe5,0x7d,0x8f,0x6c,0x71,0x7f
+
+# ATT: vcvttps2uqqs -512(%rdx){1to2}, %xmm22 {%k7} {z}
+# INTEL: vcvttps2uqqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to2}
+0x62,0xe5,0x7d,0x9f,0x6c,0x72,0x80
+
+# ATT: vcvttps2uqqs 268435456(%rbp,%r14,8), %ymm22
+# INTEL: vcvttps2uqqs ymm22, xmmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7d,0x28,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2uqqs 291(%r8,%rax,4), %ymm22 {%k7}
+# INTEL: vcvttps2uqqs ymm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7d,0x2f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2uqqs (%rip){1to4}, %ymm22
+# INTEL: vcvttps2uqqs ymm22, dword ptr [rip]{1to4}
+0x62,0xe5,0x7d,0x38,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2uqqs -512(,%rbp,2), %ymm22
+# INTEL: vcvttps2uqqs ymm22, xmmword ptr [2*rbp - 512]
+0x62,0xe5,0x7d,0x28,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff
+
+# ATT: vcvttps2uqqs 2032(%rcx), %ymm22 {%k7} {z}
+# INTEL: vcvttps2uqqs ymm22 {k7} {z}, xmmword ptr [rcx + 2032]
+0x62,0xe5,0x7d,0xaf,0x6c,0x71,0x7f
+
+# ATT: vcvttps2uqqs -512(%rdx){1to4}, %ymm22 {%k7} {z}
+# INTEL: vcvttps2uqqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+0x62,0xe5,0x7d,0xbf,0x6c,0x72,0x80
+
+# ATT: vcvttps2uqqs 268435456(%rbp,%r14,8), %zmm22
+# INTEL: vcvttps2uqqs zmm22, ymmword ptr [rbp + 8*r14 + 268435456]
+0x62,0xa5,0x7d,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttps2uqqs 291(%r8,%rax,4), %zmm22 {%k7}
+# INTEL: vcvttps2uqqs zmm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+0x62,0xc5,0x7d,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttps2uqqs (%rip){1to8}, %zmm22
+# INTEL: vcvttps2uqqs zmm22, dword ptr [rip]{1to8}
+0x62,0xe5,0x7d,0x58,0x6c,0x35,0x00,0x00,0x00,0x00
+
+# ATT: vcvttps2uqqs -1024(,%rbp,2), %zmm22
+# INTEL: vcvttps2uqqs zmm22, ymmword ptr [2*rbp - 1024]
+0x62,0xe5,0x7d,0x48,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff
+
+# ATT: vcvttps2uqqs 4064(%rcx), %zmm22 {%k7} {z}
+# INTEL: vcvttps2uqqs zmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+0x62,0xe5,0x7d,0xcf,0x6c,0x71,0x7f
+
+# ATT: vcvttps2uqqs -512(%rdx){1to8}, %zmm22 {%k7} {z}
+# INTEL: vcvttps2uqqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+0x62,0xe5,0x7d,0xdf,0x6c,0x72,0x80
+
+# ATT: vcvttsd2sis %xmm22, %ecx
+# INTEL: vcvttsd2sis ecx, xmm22
+0x62,0xb5,0x7f,0x08,0x6d,0xce
+
+# ATT: vcvttsd2sis {sae}, %xmm22, %ecx
+# INTEL: vcvttsd2sis ecx, xmm22, {sae}
+0x62,0xb5,0x7f,0x18,0x6d,0xce
+
+# ATT: vcvttsd2sis %xmm22, %r9
+# INTEL: vcvttsd2sis r9, xmm22
+0x62,0x35,0xff,0x08,0x6d,0xce
+
+# ATT: vcvttsd2sis {sae}, %xmm22, %r9
+# INTEL: vcvttsd2sis r9, xmm22, {sae}
+0x62,0x35,0xff,0x18,0x6d,0xce
+
+# ATT: vcvttsd2sis 268435456(%rbp,%r14,8), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [rbp + 8*r14 + 268435456]
+0x62,0xb5,0x7f,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttsd2sis 291(%r8,%rax,4), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [r8 + 4*rax + 291]
+0x62,0xd5,0x7f,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttsd2sis (%rip), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [rip]
+0x62,0xf5,0x7f,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00
+
+# ATT: vcvttsd2sis -256(,%rbp,2), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [2*rbp - 256]
+0x62,0xf5,0x7f,0x08,0x6d,0x0c,0x6d,0x00,0xff,0xff,0xff
+
+# ATT: vcvttsd2sis 1016(%rcx), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [rcx + 1016]
+0x62,0xf5,0x7f,0x08,0x6d,0x49,0x7f
+
+# ATT: vcvttsd2sis -1024(%rdx), %ecx
+# INTEL: vcvttsd2sis ecx, qword ptr [rdx - 1024]
+0x62,0xf5,0x7f,0x08,0x6d,0x4a,0x80
+
+# ATT: vcvttsd2sis 268435456(%rbp,%r14,8), %r9
+# INTEL: vcvttsd2sis r9, qword ptr [rbp + 8*r14 + 268435456]
+0x62,0x35,0xff,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttsd2sis 291(%r8,%rax,4), %r9
+# INTEL: vcvttsd2sis r9, qword ptr [r8 + 4*rax + 291]
+0x62,0x55,0xff,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttsd2sis (%rip), %r9
+# INTEL: vcvttsd2sis r9, qword ptr [rip]
+0x62,0x75,0xff,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00
+
+# ATT: vcvttsd2sis -256(,%rbp,2), %r9
+# INTEL: vcvttsd2sis r9, qword ptr [2*rbp - 256]
+0x62,0x75,0xff,0x08,0x6d,0x0c,0x6d,0x00,0xff,0xff,0xff
+
+# ATT: vcvttsd2sis 1016(%rcx), %r9
+# INTEL: vcvttsd2sis r9, qword ptr [rcx + 1016]
+0x62,0x75,0xff,0x08,0x6d,0x49,0x7f
+
+# ATT: vcvttsd2sis -1024(%rdx), %r9
+# INTEL: vcvttsd2sis r9, qword ptr [rdx - 1024]
+0x62,0x75,0xff,0x08,0x6d,0x4a,0x80
+
+# ATT: vcvttsd2usis %xmm22, %ecx
+# INTEL: vcvttsd2usis ecx, xmm22
+0x62,0xb5,0x7f,0x08,0x6c,0xce
+
+# ATT: vcvttsd2usis {sae}, %xmm22, %ecx
+# INTEL: vcvttsd2usis ecx, xmm22, {sae}
+0x62,0xb5,0x7f,0x18,0x6c,0xce
+
+# ATT: vcvttsd2usis %xmm22, %r9
+# INTEL: vcvttsd2usis r9, xmm22
+0x62,0x35,0xff,0x08,0x6c,0xce
+
+# ATT: vcvttsd2usis {sae}, %xmm22, %r9
+# INTEL: vcvttsd2usis r9, xmm22, {sae}
+0x62,0x35,0xff,0x18,0x6c,0xce
+
+# ATT: vcvttsd2usis 268435456(%rbp,%r14,8), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [rbp + 8*r14 + 268435456]
+0x62,0xb5,0x7f,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttsd2usis 291(%r8,%rax,4), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [r8 + 4*rax + 291]
+0x62,0xd5,0x7f,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttsd2usis (%rip), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [rip]
+0x62,0xf5,0x7f,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00
+
+# ATT: vcvttsd2usis -256(,%rbp,2), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [2*rbp - 256]
+0x62,0xf5,0x7f,0x08,0x6c,0x0c,0x6d,0x00,0xff,0xff,0xff
+
+# ATT: vcvttsd2usis 1016(%rcx), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [rcx + 1016]
+0x62,0xf5,0x7f,0x08,0x6c,0x49,0x7f
+
+# ATT: vcvttsd2usis -1024(%rdx), %ecx
+# INTEL: vcvttsd2usis ecx, qword ptr [rdx - 1024]
+0x62,0xf5,0x7f,0x08,0x6c,0x4a,0x80
+
+# ATT: vcvttsd2usis 268435456(%rbp,%r14,8), %r9
+# INTEL: vcvttsd2usis r9, qword ptr [rbp + 8*r14 + 268435456]
+0x62,0x35,0xff,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttsd2usis 291(%r8,%rax,4), %r9
+# INTEL: vcvttsd2usis r9, qword ptr [r8 + 4*rax + 291]
+0x62,0x55,0xff,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttsd2usis (%rip), %r9
+# INTEL: vcvttsd2usis r9, qword ptr [rip]
+0x62,0x75,0xff,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00
+
+# ATT: vcvttsd2usis -256(,%rbp,2), %r9
+# INTEL: vcvttsd2usis r9, qword ptr [2*rbp - 256]
+0x62,0x75,0xff,0x08,0x6c,0x0c,0x6d,0x00,0xff,0xff,0xff
+
+# ATT: vcvttsd2usis 1016(%rcx), %r9
+# INTEL: vcvttsd2usis r9, qword ptr [rcx + 1016]
+0x62,0x75,0xff,0x08,0x6c,0x49,0x7f
+
+# ATT: vcvttsd2usis -1024(%rdx), %r9
+# INTEL: vcvttsd2usis r9, qword ptr [rdx - 1024]
+0x62,0x75,0xff,0x08,0x6c,0x4a,0x80
+
+# ATT: vcvttss2sis %xmm22, %ecx
+# INTEL: vcvttss2sis ecx, xmm22
+0x62,0xb5,0x7e,0x08,0x6d,0xce
+
+# ATT: vcvttss2sis {sae}, %xmm22, %ecx
+# INTEL: vcvttss2sis ecx, xmm22, {sae}
+0x62,0xb5,0x7e,0x18,0x6d,0xce
+
+# ATT: vcvttss2sis %xmm22, %r9
+# INTEL: vcvttss2sis r9, xmm22
+0x62,0x35,0xfe,0x08,0x6d,0xce
+
+# ATT: vcvttss2sis {sae}, %xmm22, %r9
+# INTEL: vcvttss2sis r9, xmm22, {sae}
+0x62,0x35,0xfe,0x18,0x6d,0xce
+
+# ATT: vcvttss2sis 268435456(%rbp,%r14,8), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [rbp + 8*r14 + 268435456]
+0x62,0xb5,0x7e,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttss2sis 291(%r8,%rax,4), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [r8 + 4*rax + 291]
+0x62,0xd5,0x7e,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttss2sis (%rip), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [rip]
+0x62,0xf5,0x7e,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00
+
+# ATT: vcvttss2sis -128(,%rbp,2), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [2*rbp - 128]
+0x62,0xf5,0x7e,0x08,0x6d,0x0c,0x6d,0x80,0xff,0xff,0xff
+
+# ATT: vcvttss2sis 508(%rcx), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [rcx + 508]
+0x62,0xf5,0x7e,0x08,0x6d,0x49,0x7f
+
+# ATT: vcvttss2sis -512(%rdx), %ecx
+# INTEL: vcvttss2sis ecx, dword ptr [rdx - 512]
+0x62,0xf5,0x7e,0x08,0x6d,0x4a,0x80
+
+# ATT: vcvttss2sis 268435456(%rbp,%r14,8), %r9
+# INTEL: vcvttss2sis r9, dword ptr [rbp + 8*r14 + 268435456]
+0x62,0x35,0xfe,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttss2sis 291(%r8,%rax,4), %r9
+# INTEL: vcvttss2sis r9, dword ptr [r8 + 4*rax + 291]
+0x62,0x55,0xfe,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttss2sis (%rip), %r9
+# INTEL: vcvttss2sis r9, dword ptr [rip]
+0x62,0x75,0xfe,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00
+
+# ATT: vcvttss2sis -128(,%rbp,2), %r9
+# INTEL: vcvttss2sis r9, dword ptr [2*rbp - 128]
+0x62,0x75,0xfe,0x08,0x6d,0x0c,0x6d,0x80,0xff,0xff,0xff
+
+# ATT: vcvttss2sis 508(%rcx), %r9
+# INTEL: vcvttss2sis r9, dword ptr [rcx + 508]
+0x62,0x75,0xfe,0x08,0x6d,0x49,0x7f
+
+# ATT: vcvttss2sis -512(%rdx), %r9
+# INTEL: vcvttss2sis r9, dword ptr [rdx - 512]
+0x62,0x75,0xfe,0x08,0x6d,0x4a,0x80
+
+# ATT: vcvttss2usis %xmm22, %ecx
+# INTEL: vcvttss2usis ecx, xmm22
+0x62,0xb5,0x7e,0x08,0x6c,0xce
+
+# ATT: vcvttss2usis {sae}, %xmm22, %ecx
+# INTEL: vcvttss2usis ecx, xmm22, {sae}
+0x62,0xb5,0x7e,0x18,0x6c,0xce
+
+# ATT: vcvttss2usis %xmm22, %r9
+# INTEL: vcvttss2usis r9, xmm22
+0x62,0x35,0xfe,0x08,0x6c,0xce
+
+# ATT: vcvttss2usis {sae}, %xmm22, %r9
+# INTEL: vcvttss2usis r9, xmm22, {sae}
+0x62,0x35,0xfe,0x18,0x6c,0xce
+
+# ATT: vcvttss2usis 268435456(%rbp,%r14,8), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [rbp + 8*r14 + 268435456]
+0x62,0xb5,0x7e,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttss2usis 291(%r8,%rax,4), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [r8 + 4*rax + 291]
+0x62,0xd5,0x7e,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttss2usis (%rip), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [rip]
+0x62,0xf5,0x7e,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00
+
+# ATT: vcvttss2usis -128(,%rbp,2), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [2*rbp - 128]
+0x62,0xf5,0x7e,0x08,0x6c,0x0c,0x6d,0x80,0xff,0xff,0xff
+
+# ATT: vcvttss2usis 508(%rcx), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [rcx + 508]
+0x62,0xf5,0x7e,0x08,0x6c,0x49,0x7f
+
+# ATT: vcvttss2usis -512(%rdx), %ecx
+# INTEL: vcvttss2usis ecx, dword ptr [rdx - 512]
+0x62,0xf5,0x7e,0x08,0x6c,0x4a,0x80
+
+# ATT: vcvttss2usis 268435456(%rbp,%r14,8), %r9
+# INTEL: vcvttss2usis r9, dword ptr [rbp + 8*r14 + 268435456]
+0x62,0x35,0xfe,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10
+
+# ATT: vcvttss2usis 291(%r8,%rax,4), %r9
+# INTEL: vcvttss2usis r9, dword ptr [r8 + 4*rax + 291]
+0x62,0x55,0xfe,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00
+
+# ATT: vcvttss2usis (%rip), %r9
+# INTEL: vcvttss2usis r9, dword ptr [rip]
+0x62,0x75,0xfe,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00
+
+# ATT: vcvttss2usis -128(,%rbp,2), %r9
+# INTEL: vcvttss2usis r9, dword ptr [2*rbp - 128]
+0x62,0x75,0xfe,0x08,0x6c,0x0c,0x6d,0x80,0xff,0xff,0xff
+
+# ATT: vcvttss2usis 508(%rcx), %r9
+# INTEL: vcvttss2usis r9, dword ptr [rcx + 508]
+0x62,0x75,0xfe,0x08,0x6c,0x49,0x7f
+
+# ATT: vcvttss2usis -512(%rdx), %r9
+# INTEL: vcvttss2usis r9, dword ptr [rdx - 512]
+0x62,0x75,0xfe,0x08,0x6c,0x4a,0x80
+
diff --git a/llvm/test/MC/X86/avx10_2satcvtds-32-att.s b/llvm/test/MC/X86/avx10_2satcvtds-32-att.s
new file mode 100644
index 00000000000000..ec59839150b5ff
--- /dev/null
+++ b/llvm/test/MC/X86/avx10_2satcvtds-32-att.s
@@ -0,0 +1,1042 @@
+// RUN: llvm-mc -triple i386 --show-encoding %s | FileCheck %s
+
+// CHECK: vcvttsd2sis %xmm2, %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0xca]
+ vcvttsd2sis %xmm2, %ecx
+
+// CHECK: vcvttsd2sis {sae}, %xmm2, %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x18,0x6d,0xca]
+ vcvttsd2sis {sae}, %xmm2, %ecx
+
+// CHECK: vcvttsd2sis 268435456(%esp,%esi,8), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x8c,0xf4,0x00,0x00,0x00,0x10]
+ vcvttsd2sis 268435456(%esp,%esi,8), %ecx
+
+// CHECK: vcvttsd2sis 291(%edi,%eax,4), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x8c,0x87,0x23,0x01,0x00,0x00]
+ vcvttsd2sis 291(%edi,%eax,4), %ecx
+
+// CHECK: vcvttsd2sis (%eax), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x08]
+ vcvttsd2sis (%eax), %ecx
+
+// CHECK: vcvttsd2sis -256(,%ebp,2), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2sis -256(,%ebp,2), %ecx
+
+// CHECK: vcvttsd2sis 1016(%ecx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x49,0x7f]
+ vcvttsd2sis 1016(%ecx), %ecx
+
+// CHECK: vcvttsd2sis -1024(%edx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x4a,0x80]
+ vcvttsd2sis -1024(%edx), %ecx
+
+// CHECK: vcvttsd2usis %xmm2, %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0xca]
+ vcvttsd2usis %xmm2, %ecx
+
+// CHECK: vcvttsd2usis {sae}, %xmm2, %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x18,0x6c,0xca]
+ vcvttsd2usis {sae}, %xmm2, %ecx
+
+// CHECK: vcvttsd2usis 268435456(%esp,%esi,8), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x8c,0xf4,0x00,0x00,0x00,0x10]
+ vcvttsd2usis 268435456(%esp,%esi,8), %ecx
+
+// CHECK: vcvttsd2usis 291(%edi,%eax,4), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x8c,0x87,0x23,0x01,0x00,0x00]
+ vcvttsd2usis 291(%edi,%eax,4), %ecx
+
+// CHECK: vcvttsd2usis (%eax), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x08]
+ vcvttsd2usis (%eax), %ecx
+
+// CHECK: vcvttsd2usis -256(,%ebp,2), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2usis -256(,%ebp,2), %ecx
+
+// CHECK: vcvttsd2usis 1016(%ecx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x49,0x7f]
+ vcvttsd2usis 1016(%ecx), %ecx
+
+// CHECK: vcvttsd2usis -1024(%edx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x4a,0x80]
+ vcvttsd2usis -1024(%edx), %ecx
+
+// CHECK: vcvttss2sis %xmm2, %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0xca]
+ vcvttss2sis %xmm2, %ecx
+
+// CHECK: vcvttss2sis {sae}, %xmm2, %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x18,0x6d,0xca]
+ vcvttss2sis {sae}, %xmm2, %ecx
+
+// CHECK: vcvttss2sis 268435456(%esp,%esi,8), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x8c,0xf4,0x00,0x00,0x00,0x10]
+ vcvttss2sis 268435456(%esp,%esi,8), %ecx
+
+// CHECK: vcvttss2sis 291(%edi,%eax,4), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x8c,0x87,0x23,0x01,0x00,0x00]
+ vcvttss2sis 291(%edi,%eax,4), %ecx
+
+// CHECK: vcvttss2sis (%eax), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x08]
+ vcvttss2sis (%eax), %ecx
+
+// CHECK: vcvttss2sis -128(,%ebp,2), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2sis -128(,%ebp,2), %ecx
+
+// CHECK: vcvttss2sis 508(%ecx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x49,0x7f]
+ vcvttss2sis 508(%ecx), %ecx
+
+// CHECK: vcvttss2sis -512(%edx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x4a,0x80]
+ vcvttss2sis -512(%edx), %ecx
+
+// CHECK: vcvttss2usis %xmm2, %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0xca]
+ vcvttss2usis %xmm2, %ecx
+
+// CHECK: vcvttss2usis {sae}, %xmm2, %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x18,0x6c,0xca]
+ vcvttss2usis {sae}, %xmm2, %ecx
+
+// CHECK: vcvttss2usis 268435456(%esp,%esi,8), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x8c,0xf4,0x00,0x00,0x00,0x10]
+ vcvttss2usis 268435456(%esp,%esi,8), %ecx
+
+// CHECK: vcvttss2usis 291(%edi,%eax,4), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x8c,0x87,0x23,0x01,0x00,0x00]
+ vcvttss2usis 291(%edi,%eax,4), %ecx
+
+// CHECK: vcvttss2usis (%eax), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x08]
+ vcvttss2usis (%eax), %ecx
+
+// CHECK: vcvttss2usis -128(,%ebp,2), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2usis -128(,%ebp,2), %ecx
+
+// CHECK: vcvttss2usis 508(%ecx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x49,0x7f]
+ vcvttss2usis 508(%ecx), %ecx
+
+// CHECK: vcvttss2usis -512(%edx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x4a,0x80]
+ vcvttss2usis -512(%edx), %ecx
+
+// CHECK: vcvttpd2dqs %xmm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6d,0xd3]
+ vcvttpd2dqs %xmm3, %xmm2
+
+// CHECK: vcvttpd2dqs %xmm3, %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x0f,0x6d,0xd3]
+ vcvttpd2dqs %xmm3, %xmm2 {%k7}
+
+// CHECK: vcvttpd2dqs %xmm3, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x8f,0x6d,0xd3]
+ vcvttpd2dqs %xmm3, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2dqs %ymm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x28,0x6d,0xd3]
+ vcvttpd2dqs %ymm3, %xmm2
+
+// CHECK: vcvttpd2dqs {sae}, %ymm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xf8,0x18,0x6d,0xd3]
+ vcvttpd2dqs {sae}, %ymm3, %xmm2
+
+// CHECK: vcvttpd2dqs %ymm3, %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x2f,0x6d,0xd3]
+ vcvttpd2dqs %ymm3, %xmm2 {%k7}
+
+// CHECK: vcvttpd2dqs {sae}, %ymm3, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xf8,0x9f,0x6d,0xd3]
+ vcvttpd2dqs {sae}, %ymm3, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2dqs %zmm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6d,0xd3]
+ vcvttpd2dqs %zmm3, %ymm2
+
+// CHECK: vcvttpd2dqs {sae}, %zmm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x18,0x6d,0xd3]
+ vcvttpd2dqs {sae}, %zmm3, %ymm2
+
+// CHECK: vcvttpd2dqs %zmm3, %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x4f,0x6d,0xd3]
+ vcvttpd2dqs %zmm3, %ymm2 {%k7}
+
+// CHECK: vcvttpd2dqs {sae}, %zmm3, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x9f,0x6d,0xd3]
+ vcvttpd2dqs {sae}, %zmm3, %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2dqsx 268435456(%esp,%esi,8), %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2dqsx 268435456(%esp,%esi,8), %xmm2
+
+// CHECK: vcvttpd2dqsx 291(%edi,%eax,4), %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2dqsx 291(%edi,%eax,4), %xmm2 {%k7}
+
+// CHECK: vcvttpd2dqs (%eax){1to2}, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x18,0x6d,0x10]
+ vcvttpd2dqs (%eax){1to2}, %xmm2
+
+// CHECK: vcvttpd2dqsx -512(,%ebp,2), %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2dqsx -512(,%ebp,2), %xmm2
+
+// CHECK: vcvttpd2dqsx 2032(%ecx), %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x8f,0x6d,0x51,0x7f]
+ vcvttpd2dqsx 2032(%ecx), %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2dqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x9f,0x6d,0x52,0x80]
+ vcvttpd2dqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2dqs (%eax){1to4}, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x38,0x6d,0x10]
+ vcvttpd2dqs (%eax){1to4}, %xmm2
+
+// CHECK: vcvttpd2dqsy -1024(,%ebp,2), %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x28,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2dqsy -1024(,%ebp,2), %xmm2
+
+// CHECK: vcvttpd2dqsy 4064(%ecx), %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xaf,0x6d,0x51,0x7f]
+ vcvttpd2dqsy 4064(%ecx), %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2dqs -1024(%edx){1to4}, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xbf,0x6d,0x52,0x80]
+ vcvttpd2dqs -1024(%edx){1to4}, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2dqs 268435456(%esp,%esi,8), %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2dqs 268435456(%esp,%esi,8), %ymm2
+
+// CHECK: vcvttpd2dqs 291(%edi,%eax,4), %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2dqs 291(%edi,%eax,4), %ymm2 {%k7}
+
+// CHECK: vcvttpd2dqs (%eax){1to8}, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x58,0x6d,0x10]
+ vcvttpd2dqs (%eax){1to8}, %ymm2
+
+// CHECK: vcvttpd2dqs -2048(,%ebp,2), %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6d,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2dqs -2048(,%ebp,2), %ymm2
+
+// CHECK: vcvttpd2dqs 8128(%ecx), %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xcf,0x6d,0x51,0x7f]
+ vcvttpd2dqs 8128(%ecx), %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2dqs -1024(%edx){1to8}, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xdf,0x6d,0x52,0x80]
+ vcvttpd2dqs -1024(%edx){1to8}, %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2qqs %xmm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6d,0xd3]
+ vcvttpd2qqs %xmm3, %xmm2
+
+// CHECK: vcvttpd2qqs %xmm3, %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x0f,0x6d,0xd3]
+ vcvttpd2qqs %xmm3, %xmm2 {%k7}
+
+// CHECK: vcvttpd2qqs %xmm3, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x8f,0x6d,0xd3]
+ vcvttpd2qqs %xmm3, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2qqs %ymm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6d,0xd3]
+ vcvttpd2qqs %ymm3, %ymm2
+
+// CHECK: vcvttpd2qqs {sae}, %ymm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xf9,0x18,0x6d,0xd3]
+ vcvttpd2qqs {sae}, %ymm3, %ymm2
+
+// CHECK: vcvttpd2qqs %ymm3, %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x2f,0x6d,0xd3]
+ vcvttpd2qqs %ymm3, %ymm2 {%k7}
+
+// CHECK: vcvttpd2qqs {sae}, %ymm3, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xf9,0x9f,0x6d,0xd3]
+ vcvttpd2qqs {sae}, %ymm3, %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2qqs %zmm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6d,0xd3]
+ vcvttpd2qqs %zmm3, %zmm2
+
+// CHECK: vcvttpd2qqs {sae}, %zmm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x18,0x6d,0xd3]
+ vcvttpd2qqs {sae}, %zmm3, %zmm2
+
+// CHECK: vcvttpd2qqs %zmm3, %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x4f,0x6d,0xd3]
+ vcvttpd2qqs %zmm3, %zmm2 {%k7}
+
+// CHECK: vcvttpd2qqs {sae}, %zmm3, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x9f,0x6d,0xd3]
+ vcvttpd2qqs {sae}, %zmm3, %zmm2 {%k7} {z}
+
+// CHECK: vcvttpd2qqs 268435456(%esp,%esi,8), %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs 268435456(%esp,%esi,8), %xmm2
+
+// CHECK: vcvttpd2qqs 291(%edi,%eax,4), %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs 291(%edi,%eax,4), %xmm2 {%k7}
+
+// CHECK: vcvttpd2qqs (%eax){1to2}, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x18,0x6d,0x10]
+ vcvttpd2qqs (%eax){1to2}, %xmm2
+
+// CHECK: vcvttpd2qqs -512(,%ebp,2), %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2qqs -512(,%ebp,2), %xmm2
+
+// CHECK: vcvttpd2qqs 2032(%ecx), %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x8f,0x6d,0x51,0x7f]
+ vcvttpd2qqs 2032(%ecx), %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2qqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x9f,0x6d,0x52,0x80]
+ vcvttpd2qqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2qqs 268435456(%esp,%esi,8), %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs 268435456(%esp,%esi,8), %ymm2
+
+// CHECK: vcvttpd2qqs 291(%edi,%eax,4), %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x2f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs 291(%edi,%eax,4), %ymm2 {%k7}
+
+// CHECK: vcvttpd2qqs (%eax){1to4}, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x38,0x6d,0x10]
+ vcvttpd2qqs (%eax){1to4}, %ymm2
+
+// CHECK: vcvttpd2qqs -1024(,%ebp,2), %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2qqs -1024(,%ebp,2), %ymm2
+
+// CHECK: vcvttpd2qqs 4064(%ecx), %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xaf,0x6d,0x51,0x7f]
+ vcvttpd2qqs 4064(%ecx), %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2qqs -1024(%edx){1to4}, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xbf,0x6d,0x52,0x80]
+ vcvttpd2qqs -1024(%edx){1to4}, %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2qqs 268435456(%esp,%esi,8), %zmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs 268435456(%esp,%esi,8), %zmm2
+
+// CHECK: vcvttpd2qqs 291(%edi,%eax,4), %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs 291(%edi,%eax,4), %zmm2 {%k7}
+
+// CHECK: vcvttpd2qqs (%eax){1to8}, %zmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x58,0x6d,0x10]
+ vcvttpd2qqs (%eax){1to8}, %zmm2
+
+// CHECK: vcvttpd2qqs -2048(,%ebp,2), %zmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6d,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2qqs -2048(,%ebp,2), %zmm2
+
+// CHECK: vcvttpd2qqs 8128(%ecx), %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xcf,0x6d,0x51,0x7f]
+ vcvttpd2qqs 8128(%ecx), %zmm2 {%k7} {z}
+
+// CHECK: vcvttpd2qqs -1024(%edx){1to8}, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xdf,0x6d,0x52,0x80]
+ vcvttpd2qqs -1024(%edx){1to8}, %zmm2 {%k7} {z}
+
+// CHECK: vcvttpd2udqs %xmm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6c,0xd3]
+ vcvttpd2udqs %xmm3, %xmm2
+
+// CHECK: vcvttpd2udqs %xmm3, %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x0f,0x6c,0xd3]
+ vcvttpd2udqs %xmm3, %xmm2 {%k7}
+
+// CHECK: vcvttpd2udqs %xmm3, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x8f,0x6c,0xd3]
+ vcvttpd2udqs %xmm3, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2udqs %ymm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x28,0x6c,0xd3]
+ vcvttpd2udqs %ymm3, %xmm2
+
+// CHECK: vcvttpd2udqs {sae}, %ymm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xf8,0x18,0x6c,0xd3]
+ vcvttpd2udqs {sae}, %ymm3, %xmm2
+
+// CHECK: vcvttpd2udqs %ymm3, %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x2f,0x6c,0xd3]
+ vcvttpd2udqs %ymm3, %xmm2 {%k7}
+
+// CHECK: vcvttpd2udqs {sae}, %ymm3, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xf8,0x9f,0x6c,0xd3]
+ vcvttpd2udqs {sae}, %ymm3, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2udqs %zmm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6c,0xd3]
+ vcvttpd2udqs %zmm3, %ymm2
+
+// CHECK: vcvttpd2udqs {sae}, %zmm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x18,0x6c,0xd3]
+ vcvttpd2udqs {sae}, %zmm3, %ymm2
+
+// CHECK: vcvttpd2udqs %zmm3, %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x4f,0x6c,0xd3]
+ vcvttpd2udqs %zmm3, %ymm2 {%k7}
+
+// CHECK: vcvttpd2udqs {sae}, %zmm3, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x9f,0x6c,0xd3]
+ vcvttpd2udqs {sae}, %zmm3, %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2udqsx 268435456(%esp,%esi,8), %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2udqsx 268435456(%esp,%esi,8), %xmm2
+
+// CHECK: vcvttpd2udqsx 291(%edi,%eax,4), %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2udqsx 291(%edi,%eax,4), %xmm2 {%k7}
+
+// CHECK: vcvttpd2udqs (%eax){1to2}, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x18,0x6c,0x10]
+ vcvttpd2udqs (%eax){1to2}, %xmm2
+
+// CHECK: vcvttpd2udqsx -512(,%ebp,2), %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2udqsx -512(,%ebp,2), %xmm2
+
+// CHECK: vcvttpd2udqsx 2032(%ecx), %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x8f,0x6c,0x51,0x7f]
+ vcvttpd2udqsx 2032(%ecx), %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2udqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x9f,0x6c,0x52,0x80]
+ vcvttpd2udqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2udqs (%eax){1to4}, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x38,0x6c,0x10]
+ vcvttpd2udqs (%eax){1to4}, %xmm2
+
+// CHECK: vcvttpd2udqsy -1024(,%ebp,2), %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x28,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2udqsy -1024(,%ebp,2), %xmm2
+
+// CHECK: vcvttpd2udqsy 4064(%ecx), %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xaf,0x6c,0x51,0x7f]
+ vcvttpd2udqsy 4064(%ecx), %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2udqs -1024(%edx){1to4}, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xbf,0x6c,0x52,0x80]
+ vcvttpd2udqs -1024(%edx){1to4}, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2udqs 268435456(%esp,%esi,8), %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2udqs 268435456(%esp,%esi,8), %ymm2
+
+// CHECK: vcvttpd2udqs 291(%edi,%eax,4), %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2udqs 291(%edi,%eax,4), %ymm2 {%k7}
+
+// CHECK: vcvttpd2udqs (%eax){1to8}, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x58,0x6c,0x10]
+ vcvttpd2udqs (%eax){1to8}, %ymm2
+
+// CHECK: vcvttpd2udqs -2048(,%ebp,2), %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6c,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2udqs -2048(,%ebp,2), %ymm2
+
+// CHECK: vcvttpd2udqs 8128(%ecx), %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xcf,0x6c,0x51,0x7f]
+ vcvttpd2udqs 8128(%ecx), %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2udqs -1024(%edx){1to8}, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xdf,0x6c,0x52,0x80]
+ vcvttpd2udqs -1024(%edx){1to8}, %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs %xmm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6c,0xd3]
+ vcvttpd2uqqs %xmm3, %xmm2
+
+// CHECK: vcvttpd2uqqs %xmm3, %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x0f,0x6c,0xd3]
+ vcvttpd2uqqs %xmm3, %xmm2 {%k7}
+
+// CHECK: vcvttpd2uqqs %xmm3, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x8f,0x6c,0xd3]
+ vcvttpd2uqqs %xmm3, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs %ymm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6c,0xd3]
+ vcvttpd2uqqs %ymm3, %ymm2
+
+// CHECK: vcvttpd2uqqs {sae}, %ymm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xf9,0x18,0x6c,0xd3]
+ vcvttpd2uqqs {sae}, %ymm3, %ymm2
+
+// CHECK: vcvttpd2uqqs %ymm3, %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x2f,0x6c,0xd3]
+ vcvttpd2uqqs %ymm3, %ymm2 {%k7}
+
+// CHECK: vcvttpd2uqqs {sae}, %ymm3, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xf9,0x9f,0x6c,0xd3]
+ vcvttpd2uqqs {sae}, %ymm3, %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs %zmm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6c,0xd3]
+ vcvttpd2uqqs %zmm3, %zmm2
+
+// CHECK: vcvttpd2uqqs {sae}, %zmm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x18,0x6c,0xd3]
+ vcvttpd2uqqs {sae}, %zmm3, %zmm2
+
+// CHECK: vcvttpd2uqqs %zmm3, %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x4f,0x6c,0xd3]
+ vcvttpd2uqqs %zmm3, %zmm2 {%k7}
+
+// CHECK: vcvttpd2uqqs {sae}, %zmm3, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x9f,0x6c,0xd3]
+ vcvttpd2uqqs {sae}, %zmm3, %zmm2 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs 268435456(%esp,%esi,8), %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs 268435456(%esp,%esi,8), %xmm2
+
+// CHECK: vcvttpd2uqqs 291(%edi,%eax,4), %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs 291(%edi,%eax,4), %xmm2 {%k7}
+
+// CHECK: vcvttpd2uqqs (%eax){1to2}, %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x18,0x6c,0x10]
+ vcvttpd2uqqs (%eax){1to2}, %xmm2
+
+// CHECK: vcvttpd2uqqs -512(,%ebp,2), %xmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2uqqs -512(,%ebp,2), %xmm2
+
+// CHECK: vcvttpd2uqqs 2032(%ecx), %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x8f,0x6c,0x51,0x7f]
+ vcvttpd2uqqs 2032(%ecx), %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x9f,0x6c,0x52,0x80]
+ vcvttpd2uqqs -1024(%edx){1to2}, %xmm2 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs 268435456(%esp,%esi,8), %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs 268435456(%esp,%esi,8), %ymm2
+
+// CHECK: vcvttpd2uqqs 291(%edi,%eax,4), %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x2f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs 291(%edi,%eax,4), %ymm2 {%k7}
+
+// CHECK: vcvttpd2uqqs (%eax){1to4}, %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x38,0x6c,0x10]
+ vcvttpd2uqqs (%eax){1to4}, %ymm2
+
+// CHECK: vcvttpd2uqqs -1024(,%ebp,2), %ymm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2uqqs -1024(,%ebp,2), %ymm2
+
+// CHECK: vcvttpd2uqqs 4064(%ecx), %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xaf,0x6c,0x51,0x7f]
+ vcvttpd2uqqs 4064(%ecx), %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs -1024(%edx){1to4}, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xbf,0x6c,0x52,0x80]
+ vcvttpd2uqqs -1024(%edx){1to4}, %ymm2 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs 268435456(%esp,%esi,8), %zmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs 268435456(%esp,%esi,8), %zmm2
+
+// CHECK: vcvttpd2uqqs 291(%edi,%eax,4), %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs 291(%edi,%eax,4), %zmm2 {%k7}
+
+// CHECK: vcvttpd2uqqs (%eax){1to8}, %zmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x58,0x6c,0x10]
+ vcvttpd2uqqs (%eax){1to8}, %zmm2
+
+// CHECK: vcvttpd2uqqs -2048(,%ebp,2), %zmm2
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6c,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2uqqs -2048(,%ebp,2), %zmm2
+
+// CHECK: vcvttpd2uqqs 8128(%ecx), %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xcf,0x6c,0x51,0x7f]
+ vcvttpd2uqqs 8128(%ecx), %zmm2 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs -1024(%edx){1to8}, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xdf,0x6c,0x52,0x80]
+ vcvttpd2uqqs -1024(%edx){1to8}, %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2dqs %xmm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6d,0xd3]
+ vcvttps2dqs %xmm3, %xmm2
+
+// CHECK: vcvttps2dqs %xmm3, %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x0f,0x6d,0xd3]
+ vcvttps2dqs %xmm3, %xmm2 {%k7}
+
+// CHECK: vcvttps2dqs %xmm3, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x8f,0x6d,0xd3]
+ vcvttps2dqs %xmm3, %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2dqs %ymm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6d,0xd3]
+ vcvttps2dqs %ymm3, %ymm2
+
+// CHECK: vcvttps2dqs {sae}, %ymm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x78,0x18,0x6d,0xd3]
+ vcvttps2dqs {sae}, %ymm3, %ymm2
+
+// CHECK: vcvttps2dqs %ymm3, %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x2f,0x6d,0xd3]
+ vcvttps2dqs %ymm3, %ymm2 {%k7}
+
+// CHECK: vcvttps2dqs {sae}, %ymm3, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x78,0x9f,0x6d,0xd3]
+ vcvttps2dqs {sae}, %ymm3, %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2dqs %zmm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6d,0xd3]
+ vcvttps2dqs %zmm3, %zmm2
+
+// CHECK: vcvttps2dqs {sae}, %zmm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x18,0x6d,0xd3]
+ vcvttps2dqs {sae}, %zmm3, %zmm2
+
+// CHECK: vcvttps2dqs %zmm3, %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x4f,0x6d,0xd3]
+ vcvttps2dqs %zmm3, %zmm2 {%k7}
+
+// CHECK: vcvttps2dqs {sae}, %zmm3, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x9f,0x6d,0xd3]
+ vcvttps2dqs {sae}, %zmm3, %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2dqs 268435456(%esp,%esi,8), %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2dqs 268435456(%esp,%esi,8), %xmm2
+
+// CHECK: vcvttps2dqs 291(%edi,%eax,4), %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2dqs 291(%edi,%eax,4), %xmm2 {%k7}
+
+// CHECK: vcvttps2dqs (%eax){1to4}, %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x18,0x6d,0x10]
+ vcvttps2dqs (%eax){1to4}, %xmm2
+
+// CHECK: vcvttps2dqs -512(,%ebp,2), %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2dqs -512(,%ebp,2), %xmm2
+
+// CHECK: vcvttps2dqs 2032(%ecx), %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x8f,0x6d,0x51,0x7f]
+ vcvttps2dqs 2032(%ecx), %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2dqs -512(%edx){1to4}, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x9f,0x6d,0x52,0x80]
+ vcvttps2dqs -512(%edx){1to4}, %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2dqs 268435456(%esp,%esi,8), %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2dqs 268435456(%esp,%esi,8), %ymm2
+
+// CHECK: vcvttps2dqs 291(%edi,%eax,4), %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x2f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2dqs 291(%edi,%eax,4), %ymm2 {%k7}
+
+// CHECK: vcvttps2dqs (%eax){1to8}, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x38,0x6d,0x10]
+ vcvttps2dqs (%eax){1to8}, %ymm2
+
+// CHECK: vcvttps2dqs -1024(,%ebp,2), %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2dqs -1024(,%ebp,2), %ymm2
+
+// CHECK: vcvttps2dqs 4064(%ecx), %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xaf,0x6d,0x51,0x7f]
+ vcvttps2dqs 4064(%ecx), %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2dqs -512(%edx){1to8}, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xbf,0x6d,0x52,0x80]
+ vcvttps2dqs -512(%edx){1to8}, %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2dqs 268435456(%esp,%esi,8), %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2dqs 268435456(%esp,%esi,8), %zmm2
+
+// CHECK: vcvttps2dqs 291(%edi,%eax,4), %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2dqs 291(%edi,%eax,4), %zmm2 {%k7}
+
+// CHECK: vcvttps2dqs (%eax){1to16}, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x58,0x6d,0x10]
+ vcvttps2dqs (%eax){1to16}, %zmm2
+
+// CHECK: vcvttps2dqs -2048(,%ebp,2), %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6d,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttps2dqs -2048(,%ebp,2), %zmm2
+
+// CHECK: vcvttps2dqs 8128(%ecx), %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xcf,0x6d,0x51,0x7f]
+ vcvttps2dqs 8128(%ecx), %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2dqs -512(%edx){1to16}, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xdf,0x6d,0x52,0x80]
+ vcvttps2dqs -512(%edx){1to16}, %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2qqs %xmm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6d,0xd3]
+ vcvttps2qqs %xmm3, %xmm2
+
+// CHECK: vcvttps2qqs %xmm3, %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x0f,0x6d,0xd3]
+ vcvttps2qqs %xmm3, %xmm2 {%k7}
+
+// CHECK: vcvttps2qqs %xmm3, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x8f,0x6d,0xd3]
+ vcvttps2qqs %xmm3, %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2qqs %xmm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6d,0xd3]
+ vcvttps2qqs %xmm3, %ymm2
+
+// CHECK: vcvttps2qqs {sae}, %xmm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x79,0x18,0x6d,0xd3]
+ vcvttps2qqs {sae}, %xmm3, %ymm2
+
+// CHECK: vcvttps2qqs %xmm3, %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x2f,0x6d,0xd3]
+ vcvttps2qqs %xmm3, %ymm2 {%k7}
+
+// CHECK: vcvttps2qqs {sae}, %xmm3, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x79,0x9f,0x6d,0xd3]
+ vcvttps2qqs {sae}, %xmm3, %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2qqs %ymm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6d,0xd3]
+ vcvttps2qqs %ymm3, %zmm2
+
+// CHECK: vcvttps2qqs {sae}, %ymm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x18,0x6d,0xd3]
+ vcvttps2qqs {sae}, %ymm3, %zmm2
+
+// CHECK: vcvttps2qqs %ymm3, %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x4f,0x6d,0xd3]
+ vcvttps2qqs %ymm3, %zmm2 {%k7}
+
+// CHECK: vcvttps2qqs {sae}, %ymm3, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x9f,0x6d,0xd3]
+ vcvttps2qqs {sae}, %ymm3, %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2qqs 268435456(%esp,%esi,8), %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2qqs 268435456(%esp,%esi,8), %xmm2
+
+// CHECK: vcvttps2qqs 291(%edi,%eax,4), %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2qqs 291(%edi,%eax,4), %xmm2 {%k7}
+
+// CHECK: vcvttps2qqs (%eax){1to2}, %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x18,0x6d,0x10]
+ vcvttps2qqs (%eax){1to2}, %xmm2
+
+// CHECK: vcvttps2qqs -256(,%ebp,2), %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6d,0x14,0x6d,0x00,0xff,0xff,0xff]
+ vcvttps2qqs -256(,%ebp,2), %xmm2
+
+// CHECK: vcvttps2qqs 1016(%ecx), %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x8f,0x6d,0x51,0x7f]
+ vcvttps2qqs 1016(%ecx), %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2qqs -512(%edx){1to2}, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x9f,0x6d,0x52,0x80]
+ vcvttps2qqs -512(%edx){1to2}, %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2qqs 268435456(%esp,%esi,8), %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2qqs 268435456(%esp,%esi,8), %ymm2
+
+// CHECK: vcvttps2qqs 291(%edi,%eax,4), %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x2f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2qqs 291(%edi,%eax,4), %ymm2 {%k7}
+
+// CHECK: vcvttps2qqs (%eax){1to4}, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x38,0x6d,0x10]
+ vcvttps2qqs (%eax){1to4}, %ymm2
+
+// CHECK: vcvttps2qqs -512(,%ebp,2), %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2qqs -512(,%ebp,2), %ymm2
+
+// CHECK: vcvttps2qqs 2032(%ecx), %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xaf,0x6d,0x51,0x7f]
+ vcvttps2qqs 2032(%ecx), %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2qqs -512(%edx){1to4}, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xbf,0x6d,0x52,0x80]
+ vcvttps2qqs -512(%edx){1to4}, %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2qqs 268435456(%esp,%esi,8), %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2qqs 268435456(%esp,%esi,8), %zmm2
+
+// CHECK: vcvttps2qqs 291(%edi,%eax,4), %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2qqs 291(%edi,%eax,4), %zmm2 {%k7}
+
+// CHECK: vcvttps2qqs (%eax){1to8}, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x58,0x6d,0x10]
+ vcvttps2qqs (%eax){1to8}, %zmm2
+
+// CHECK: vcvttps2qqs -1024(,%ebp,2), %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2qqs -1024(,%ebp,2), %zmm2
+
+// CHECK: vcvttps2qqs 4064(%ecx), %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xcf,0x6d,0x51,0x7f]
+ vcvttps2qqs 4064(%ecx), %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2qqs -512(%edx){1to8}, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xdf,0x6d,0x52,0x80]
+ vcvttps2qqs -512(%edx){1to8}, %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2udqs %xmm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6c,0xd3]
+ vcvttps2udqs %xmm3, %xmm2
+
+// CHECK: vcvttps2udqs %xmm3, %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x0f,0x6c,0xd3]
+ vcvttps2udqs %xmm3, %xmm2 {%k7}
+
+// CHECK: vcvttps2udqs %xmm3, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x8f,0x6c,0xd3]
+ vcvttps2udqs %xmm3, %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2udqs %ymm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6c,0xd3]
+ vcvttps2udqs %ymm3, %ymm2
+
+// CHECK: vcvttps2udqs {sae}, %ymm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x78,0x18,0x6c,0xd3]
+ vcvttps2udqs {sae}, %ymm3, %ymm2
+
+// CHECK: vcvttps2udqs %ymm3, %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x2f,0x6c,0xd3]
+ vcvttps2udqs %ymm3, %ymm2 {%k7}
+
+// CHECK: vcvttps2udqs {sae}, %ymm3, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x78,0x9f,0x6c,0xd3]
+ vcvttps2udqs {sae}, %ymm3, %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2udqs %zmm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6c,0xd3]
+ vcvttps2udqs %zmm3, %zmm2
+
+// CHECK: vcvttps2udqs {sae}, %zmm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x18,0x6c,0xd3]
+ vcvttps2udqs {sae}, %zmm3, %zmm2
+
+// CHECK: vcvttps2udqs %zmm3, %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x4f,0x6c,0xd3]
+ vcvttps2udqs %zmm3, %zmm2 {%k7}
+
+// CHECK: vcvttps2udqs {sae}, %zmm3, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x9f,0x6c,0xd3]
+ vcvttps2udqs {sae}, %zmm3, %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2udqs 268435456(%esp,%esi,8), %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2udqs 268435456(%esp,%esi,8), %xmm2
+
+// CHECK: vcvttps2udqs 291(%edi,%eax,4), %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2udqs 291(%edi,%eax,4), %xmm2 {%k7}
+
+// CHECK: vcvttps2udqs (%eax){1to4}, %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x18,0x6c,0x10]
+ vcvttps2udqs (%eax){1to4}, %xmm2
+
+// CHECK: vcvttps2udqs -512(,%ebp,2), %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2udqs -512(,%ebp,2), %xmm2
+
+// CHECK: vcvttps2udqs 2032(%ecx), %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x8f,0x6c,0x51,0x7f]
+ vcvttps2udqs 2032(%ecx), %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2udqs -512(%edx){1to4}, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x9f,0x6c,0x52,0x80]
+ vcvttps2udqs -512(%edx){1to4}, %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2udqs 268435456(%esp,%esi,8), %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2udqs 268435456(%esp,%esi,8), %ymm2
+
+// CHECK: vcvttps2udqs 291(%edi,%eax,4), %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x2f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2udqs 291(%edi,%eax,4), %ymm2 {%k7}
+
+// CHECK: vcvttps2udqs (%eax){1to8}, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x38,0x6c,0x10]
+ vcvttps2udqs (%eax){1to8}, %ymm2
+
+// CHECK: vcvttps2udqs -1024(,%ebp,2), %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2udqs -1024(,%ebp,2), %ymm2
+
+// CHECK: vcvttps2udqs 4064(%ecx), %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xaf,0x6c,0x51,0x7f]
+ vcvttps2udqs 4064(%ecx), %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2udqs -512(%edx){1to8}, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xbf,0x6c,0x52,0x80]
+ vcvttps2udqs -512(%edx){1to8}, %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2udqs 268435456(%esp,%esi,8), %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2udqs 268435456(%esp,%esi,8), %zmm2
+
+// CHECK: vcvttps2udqs 291(%edi,%eax,4), %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2udqs 291(%edi,%eax,4), %zmm2 {%k7}
+
+// CHECK: vcvttps2udqs (%eax){1to16}, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x58,0x6c,0x10]
+ vcvttps2udqs (%eax){1to16}, %zmm2
+
+// CHECK: vcvttps2udqs -2048(,%ebp,2), %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6c,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttps2udqs -2048(,%ebp,2), %zmm2
+
+// CHECK: vcvttps2udqs 8128(%ecx), %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xcf,0x6c,0x51,0x7f]
+ vcvttps2udqs 8128(%ecx), %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2udqs -512(%edx){1to16}, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xdf,0x6c,0x52,0x80]
+ vcvttps2udqs -512(%edx){1to16}, %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2uqqs %xmm3, %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6c,0xd3]
+ vcvttps2uqqs %xmm3, %xmm2
+
+// CHECK: vcvttps2uqqs %xmm3, %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x0f,0x6c,0xd3]
+ vcvttps2uqqs %xmm3, %xmm2 {%k7}
+
+// CHECK: vcvttps2uqqs %xmm3, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x8f,0x6c,0xd3]
+ vcvttps2uqqs %xmm3, %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2uqqs %xmm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6c,0xd3]
+ vcvttps2uqqs %xmm3, %ymm2
+
+// CHECK: vcvttps2uqqs {sae}, %xmm3, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x79,0x18,0x6c,0xd3]
+ vcvttps2uqqs {sae}, %xmm3, %ymm2
+
+// CHECK: vcvttps2uqqs %xmm3, %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x2f,0x6c,0xd3]
+ vcvttps2uqqs %xmm3, %ymm2 {%k7}
+
+// CHECK: vcvttps2uqqs {sae}, %xmm3, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x79,0x9f,0x6c,0xd3]
+ vcvttps2uqqs {sae}, %xmm3, %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2uqqs %ymm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6c,0xd3]
+ vcvttps2uqqs %ymm3, %zmm2
+
+// CHECK: vcvttps2uqqs {sae}, %ymm3, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x18,0x6c,0xd3]
+ vcvttps2uqqs {sae}, %ymm3, %zmm2
+
+// CHECK: vcvttps2uqqs %ymm3, %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x4f,0x6c,0xd3]
+ vcvttps2uqqs %ymm3, %zmm2 {%k7}
+
+// CHECK: vcvttps2uqqs {sae}, %ymm3, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x9f,0x6c,0xd3]
+ vcvttps2uqqs {sae}, %ymm3, %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2uqqs 268435456(%esp,%esi,8), %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs 268435456(%esp,%esi,8), %xmm2
+
+// CHECK: vcvttps2uqqs 291(%edi,%eax,4), %xmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs 291(%edi,%eax,4), %xmm2 {%k7}
+
+// CHECK: vcvttps2uqqs (%eax){1to2}, %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x18,0x6c,0x10]
+ vcvttps2uqqs (%eax){1to2}, %xmm2
+
+// CHECK: vcvttps2uqqs -256(,%ebp,2), %xmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6c,0x14,0x6d,0x00,0xff,0xff,0xff]
+ vcvttps2uqqs -256(,%ebp,2), %xmm2
+
+// CHECK: vcvttps2uqqs 1016(%ecx), %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x8f,0x6c,0x51,0x7f]
+ vcvttps2uqqs 1016(%ecx), %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2uqqs -512(%edx){1to2}, %xmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x9f,0x6c,0x52,0x80]
+ vcvttps2uqqs -512(%edx){1to2}, %xmm2 {%k7} {z}
+
+// CHECK: vcvttps2uqqs 268435456(%esp,%esi,8), %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs 268435456(%esp,%esi,8), %ymm2
+
+// CHECK: vcvttps2uqqs 291(%edi,%eax,4), %ymm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x2f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs 291(%edi,%eax,4), %ymm2 {%k7}
+
+// CHECK: vcvttps2uqqs (%eax){1to4}, %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x38,0x6c,0x10]
+ vcvttps2uqqs (%eax){1to4}, %ymm2
+
+// CHECK: vcvttps2uqqs -512(,%ebp,2), %ymm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2uqqs -512(,%ebp,2), %ymm2
+
+// CHECK: vcvttps2uqqs 2032(%ecx), %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xaf,0x6c,0x51,0x7f]
+ vcvttps2uqqs 2032(%ecx), %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2uqqs -512(%edx){1to4}, %ymm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xbf,0x6c,0x52,0x80]
+ vcvttps2uqqs -512(%edx){1to4}, %ymm2 {%k7} {z}
+
+// CHECK: vcvttps2uqqs 268435456(%esp,%esi,8), %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs 268435456(%esp,%esi,8), %zmm2
+
+// CHECK: vcvttps2uqqs 291(%edi,%eax,4), %zmm2 {%k7}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs 291(%edi,%eax,4), %zmm2 {%k7}
+
+// CHECK: vcvttps2uqqs (%eax){1to8}, %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x58,0x6c,0x10]
+ vcvttps2uqqs (%eax){1to8}, %zmm2
+
+// CHECK: vcvttps2uqqs -1024(,%ebp,2), %zmm2
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2uqqs -1024(,%ebp,2), %zmm2
+
+// CHECK: vcvttps2uqqs 4064(%ecx), %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xcf,0x6c,0x51,0x7f]
+ vcvttps2uqqs 4064(%ecx), %zmm2 {%k7} {z}
+
+// CHECK: vcvttps2uqqs -512(%edx){1to8}, %zmm2 {%k7} {z}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xdf,0x6c,0x52,0x80]
+ vcvttps2uqqs -512(%edx){1to8}, %zmm2 {%k7} {z}
+
diff --git a/llvm/test/MC/X86/avx10_2satcvtds-32-intel.s b/llvm/test/MC/X86/avx10_2satcvtds-32-intel.s
new file mode 100644
index 00000000000000..37a090de2f2ceb
--- /dev/null
+++ b/llvm/test/MC/X86/avx10_2satcvtds-32-intel.s
@@ -0,0 +1,1042 @@
+// RUN: llvm-mc -triple i386 -x86-asm-syntax=intel -output-asm-variant=1 --show-encoding %s | FileCheck %s
+
+// CHECK: vcvttsd2sis ecx, xmm2
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0xca]
+ vcvttsd2sis ecx, xmm2
+
+// CHECK: vcvttsd2sis ecx, xmm2, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7f,0x18,0x6d,0xca]
+ vcvttsd2sis ecx, xmm2, {sae}
+
+// CHECK: vcvttsd2sis ecx, qword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x8c,0xf4,0x00,0x00,0x00,0x10]
+ vcvttsd2sis ecx, qword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttsd2sis ecx, qword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x8c,0x87,0x23,0x01,0x00,0x00]
+ vcvttsd2sis ecx, qword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttsd2sis ecx, qword ptr [eax]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x08]
+ vcvttsd2sis ecx, qword ptr [eax]
+
+// CHECK: vcvttsd2sis ecx, qword ptr [2*ebp - 256]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2sis ecx, qword ptr [2*ebp - 256]
+
+// CHECK: vcvttsd2sis ecx, qword ptr [ecx + 1016]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x49,0x7f]
+ vcvttsd2sis ecx, qword ptr [ecx + 1016]
+
+// CHECK: vcvttsd2sis ecx, qword ptr [edx - 1024]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x4a,0x80]
+ vcvttsd2sis ecx, qword ptr [edx - 1024]
+
+// CHECK: vcvttsd2usis ecx, xmm2
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0xca]
+ vcvttsd2usis ecx, xmm2
+
+// CHECK: vcvttsd2usis ecx, xmm2, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7f,0x18,0x6c,0xca]
+ vcvttsd2usis ecx, xmm2, {sae}
+
+// CHECK: vcvttsd2usis ecx, qword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x8c,0xf4,0x00,0x00,0x00,0x10]
+ vcvttsd2usis ecx, qword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttsd2usis ecx, qword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x8c,0x87,0x23,0x01,0x00,0x00]
+ vcvttsd2usis ecx, qword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttsd2usis ecx, qword ptr [eax]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x08]
+ vcvttsd2usis ecx, qword ptr [eax]
+
+// CHECK: vcvttsd2usis ecx, qword ptr [2*ebp - 256]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2usis ecx, qword ptr [2*ebp - 256]
+
+// CHECK: vcvttsd2usis ecx, qword ptr [ecx + 1016]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x49,0x7f]
+ vcvttsd2usis ecx, qword ptr [ecx + 1016]
+
+// CHECK: vcvttsd2usis ecx, qword ptr [edx - 1024]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x4a,0x80]
+ vcvttsd2usis ecx, qword ptr [edx - 1024]
+
+// CHECK: vcvttss2sis ecx, xmm2
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0xca]
+ vcvttss2sis ecx, xmm2
+
+// CHECK: vcvttss2sis ecx, xmm2, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7e,0x18,0x6d,0xca]
+ vcvttss2sis ecx, xmm2, {sae}
+
+// CHECK: vcvttss2sis ecx, dword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x8c,0xf4,0x00,0x00,0x00,0x10]
+ vcvttss2sis ecx, dword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttss2sis ecx, dword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x8c,0x87,0x23,0x01,0x00,0x00]
+ vcvttss2sis ecx, dword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttss2sis ecx, dword ptr [eax]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x08]
+ vcvttss2sis ecx, dword ptr [eax]
+
+// CHECK: vcvttss2sis ecx, dword ptr [2*ebp - 128]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2sis ecx, dword ptr [2*ebp - 128]
+
+// CHECK: vcvttss2sis ecx, dword ptr [ecx + 508]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x49,0x7f]
+ vcvttss2sis ecx, dword ptr [ecx + 508]
+
+// CHECK: vcvttss2sis ecx, dword ptr [edx - 512]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x4a,0x80]
+ vcvttss2sis ecx, dword ptr [edx - 512]
+
+// CHECK: vcvttss2usis ecx, xmm2
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0xca]
+ vcvttss2usis ecx, xmm2
+
+// CHECK: vcvttss2usis ecx, xmm2, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7e,0x18,0x6c,0xca]
+ vcvttss2usis ecx, xmm2, {sae}
+
+// CHECK: vcvttss2usis ecx, dword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x8c,0xf4,0x00,0x00,0x00,0x10]
+ vcvttss2usis ecx, dword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttss2usis ecx, dword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x8c,0x87,0x23,0x01,0x00,0x00]
+ vcvttss2usis ecx, dword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttss2usis ecx, dword ptr [eax]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x08]
+ vcvttss2usis ecx, dword ptr [eax]
+
+// CHECK: vcvttss2usis ecx, dword ptr [2*ebp - 128]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2usis ecx, dword ptr [2*ebp - 128]
+
+// CHECK: vcvttss2usis ecx, dword ptr [ecx + 508]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x49,0x7f]
+ vcvttss2usis ecx, dword ptr [ecx + 508]
+
+// CHECK: vcvttss2usis ecx, dword ptr [edx - 512]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x4a,0x80]
+ vcvttss2usis ecx, dword ptr [edx - 512]
+
+// CHECK: vcvttpd2dqs xmm2, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6d,0xd3]
+ vcvttpd2dqs xmm2, xmm3
+
+// CHECK: vcvttpd2dqs xmm2 {k7}, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x0f,0x6d,0xd3]
+ vcvttpd2dqs xmm2 {k7}, xmm3
+
+// CHECK: vcvttpd2dqs xmm2 {k7} {z}, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x8f,0x6d,0xd3]
+ vcvttpd2dqs xmm2 {k7} {z}, xmm3
+
+// CHECK: vcvttpd2dqs xmm2, ymm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x28,0x6d,0xd3]
+ vcvttpd2dqs xmm2, ymm3
+
+// CHECK: vcvttpd2dqs xmm2, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xf8,0x18,0x6d,0xd3]
+ vcvttpd2dqs xmm2, ymm3, {sae}
+
+// CHECK: vcvttpd2dqs xmm2 {k7}, ymm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x2f,0x6d,0xd3]
+ vcvttpd2dqs xmm2 {k7}, ymm3
+
+// CHECK: vcvttpd2dqs xmm2 {k7} {z}, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xf8,0x9f,0x6d,0xd3]
+ vcvttpd2dqs xmm2 {k7} {z}, ymm3, {sae}
+
+// CHECK: vcvttpd2dqs ymm2, zmm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6d,0xd3]
+ vcvttpd2dqs ymm2, zmm3
+
+// CHECK: vcvttpd2dqs ymm2, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x18,0x6d,0xd3]
+ vcvttpd2dqs ymm2, zmm3, {sae}
+
+// CHECK: vcvttpd2dqs ymm2 {k7}, zmm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x4f,0x6d,0xd3]
+ vcvttpd2dqs ymm2 {k7}, zmm3
+
+// CHECK: vcvttpd2dqs ymm2 {k7} {z}, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x9f,0x6d,0xd3]
+ vcvttpd2dqs ymm2 {k7} {z}, zmm3, {sae}
+
+// CHECK: vcvttpd2dqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2dqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttpd2dqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2dqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttpd2dqs xmm2, qword ptr [eax]{1to2}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x18,0x6d,0x10]
+ vcvttpd2dqs xmm2, qword ptr [eax]{1to2}
+
+// CHECK: vcvttpd2dqs xmm2, xmmword ptr [2*ebp - 512]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2dqs xmm2, xmmword ptr [2*ebp - 512]
+
+// CHECK: vcvttpd2dqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x8f,0x6d,0x51,0x7f]
+ vcvttpd2dqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+
+// CHECK: vcvttpd2dqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x9f,0x6d,0x52,0x80]
+ vcvttpd2dqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+
+// CHECK: vcvttpd2dqs xmm2, qword ptr [eax]{1to4}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x38,0x6d,0x10]
+ vcvttpd2dqs xmm2, qword ptr [eax]{1to4}
+
+// CHECK: vcvttpd2dqs xmm2, ymmword ptr [2*ebp - 1024]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x28,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2dqs xmm2, ymmword ptr [2*ebp - 1024]
+
+// CHECK: vcvttpd2dqs xmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+// CHECK: encoding: [0x62,0xf5,0xfc,0xaf,0x6d,0x51,0x7f]
+ vcvttpd2dqs xmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+
+// CHECK: vcvttpd2dqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xbf,0x6d,0x52,0x80]
+ vcvttpd2dqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+
+// CHECK: vcvttpd2dqs ymm2, zmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2dqs ymm2, zmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttpd2dqs ymm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2dqs ymm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttpd2dqs ymm2, qword ptr [eax]{1to8}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x58,0x6d,0x10]
+ vcvttpd2dqs ymm2, qword ptr [eax]{1to8}
+
+// CHECK: vcvttpd2dqs ymm2, zmmword ptr [2*ebp - 2048]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6d,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2dqs ymm2, zmmword ptr [2*ebp - 2048]
+
+// CHECK: vcvttpd2dqs ymm2 {k7} {z}, zmmword ptr [ecx + 8128]
+// CHECK: encoding: [0x62,0xf5,0xfc,0xcf,0x6d,0x51,0x7f]
+ vcvttpd2dqs ymm2 {k7} {z}, zmmword ptr [ecx + 8128]
+
+// CHECK: vcvttpd2dqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xdf,0x6d,0x52,0x80]
+ vcvttpd2dqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+
+// CHECK: vcvttpd2qqs xmm2, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6d,0xd3]
+ vcvttpd2qqs xmm2, xmm3
+
+// CHECK: vcvttpd2qqs xmm2 {k7}, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x0f,0x6d,0xd3]
+ vcvttpd2qqs xmm2 {k7}, xmm3
+
+// CHECK: vcvttpd2qqs xmm2 {k7} {z}, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x8f,0x6d,0xd3]
+ vcvttpd2qqs xmm2 {k7} {z}, xmm3
+
+// CHECK: vcvttpd2qqs ymm2, ymm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6d,0xd3]
+ vcvttpd2qqs ymm2, ymm3
+
+// CHECK: vcvttpd2qqs ymm2, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xf9,0x18,0x6d,0xd3]
+ vcvttpd2qqs ymm2, ymm3, {sae}
+
+// CHECK: vcvttpd2qqs ymm2 {k7}, ymm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x2f,0x6d,0xd3]
+ vcvttpd2qqs ymm2 {k7}, ymm3
+
+// CHECK: vcvttpd2qqs ymm2 {k7} {z}, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xf9,0x9f,0x6d,0xd3]
+ vcvttpd2qqs ymm2 {k7} {z}, ymm3, {sae}
+
+// CHECK: vcvttpd2qqs zmm2, zmm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6d,0xd3]
+ vcvttpd2qqs zmm2, zmm3
+
+// CHECK: vcvttpd2qqs zmm2, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x18,0x6d,0xd3]
+ vcvttpd2qqs zmm2, zmm3, {sae}
+
+// CHECK: vcvttpd2qqs zmm2 {k7}, zmm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x4f,0x6d,0xd3]
+ vcvttpd2qqs zmm2 {k7}, zmm3
+
+// CHECK: vcvttpd2qqs zmm2 {k7} {z}, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x9f,0x6d,0xd3]
+ vcvttpd2qqs zmm2 {k7} {z}, zmm3, {sae}
+
+// CHECK: vcvttpd2qqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttpd2qqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttpd2qqs xmm2, qword ptr [eax]{1to2}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x18,0x6d,0x10]
+ vcvttpd2qqs xmm2, qword ptr [eax]{1to2}
+
+// CHECK: vcvttpd2qqs xmm2, xmmword ptr [2*ebp - 512]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2qqs xmm2, xmmword ptr [2*ebp - 512]
+
+// CHECK: vcvttpd2qqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x8f,0x6d,0x51,0x7f]
+ vcvttpd2qqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+
+// CHECK: vcvttpd2qqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x9f,0x6d,0x52,0x80]
+ vcvttpd2qqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+
+// CHECK: vcvttpd2qqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttpd2qqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x2f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttpd2qqs ymm2, qword ptr [eax]{1to4}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x38,0x6d,0x10]
+ vcvttpd2qqs ymm2, qword ptr [eax]{1to4}
+
+// CHECK: vcvttpd2qqs ymm2, ymmword ptr [2*ebp - 1024]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2qqs ymm2, ymmword ptr [2*ebp - 1024]
+
+// CHECK: vcvttpd2qqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+// CHECK: encoding: [0x62,0xf5,0xfd,0xaf,0x6d,0x51,0x7f]
+ vcvttpd2qqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+
+// CHECK: vcvttpd2qqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xbf,0x6d,0x52,0x80]
+ vcvttpd2qqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+
+// CHECK: vcvttpd2qqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttpd2qqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttpd2qqs zmm2, qword ptr [eax]{1to8}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x58,0x6d,0x10]
+ vcvttpd2qqs zmm2, qword ptr [eax]{1to8}
+
+// CHECK: vcvttpd2qqs zmm2, zmmword ptr [2*ebp - 2048]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6d,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2qqs zmm2, zmmword ptr [2*ebp - 2048]
+
+// CHECK: vcvttpd2qqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+// CHECK: encoding: [0x62,0xf5,0xfd,0xcf,0x6d,0x51,0x7f]
+ vcvttpd2qqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+
+// CHECK: vcvttpd2qqs zmm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xdf,0x6d,0x52,0x80]
+ vcvttpd2qqs zmm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+
+// CHECK: vcvttpd2udqs xmm2, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6c,0xd3]
+ vcvttpd2udqs xmm2, xmm3
+
+// CHECK: vcvttpd2udqs xmm2 {k7}, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x0f,0x6c,0xd3]
+ vcvttpd2udqs xmm2 {k7}, xmm3
+
+// CHECK: vcvttpd2udqs xmm2 {k7} {z}, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x8f,0x6c,0xd3]
+ vcvttpd2udqs xmm2 {k7} {z}, xmm3
+
+// CHECK: vcvttpd2udqs xmm2, ymm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x28,0x6c,0xd3]
+ vcvttpd2udqs xmm2, ymm3
+
+// CHECK: vcvttpd2udqs xmm2, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xf8,0x18,0x6c,0xd3]
+ vcvttpd2udqs xmm2, ymm3, {sae}
+
+// CHECK: vcvttpd2udqs xmm2 {k7}, ymm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x2f,0x6c,0xd3]
+ vcvttpd2udqs xmm2 {k7}, ymm3
+
+// CHECK: vcvttpd2udqs xmm2 {k7} {z}, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xf8,0x9f,0x6c,0xd3]
+ vcvttpd2udqs xmm2 {k7} {z}, ymm3, {sae}
+
+// CHECK: vcvttpd2udqs ymm2, zmm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6c,0xd3]
+ vcvttpd2udqs ymm2, zmm3
+
+// CHECK: vcvttpd2udqs ymm2, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x18,0x6c,0xd3]
+ vcvttpd2udqs ymm2, zmm3, {sae}
+
+// CHECK: vcvttpd2udqs ymm2 {k7}, zmm3
+// CHECK: encoding: [0x62,0xf5,0xfc,0x4f,0x6c,0xd3]
+ vcvttpd2udqs ymm2 {k7}, zmm3
+
+// CHECK: vcvttpd2udqs ymm2 {k7} {z}, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x9f,0x6c,0xd3]
+ vcvttpd2udqs ymm2 {k7} {z}, zmm3, {sae}
+
+// CHECK: vcvttpd2udqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2udqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttpd2udqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2udqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttpd2udqs xmm2, qword ptr [eax]{1to2}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x18,0x6c,0x10]
+ vcvttpd2udqs xmm2, qword ptr [eax]{1to2}
+
+// CHECK: vcvttpd2udqs xmm2, xmmword ptr [2*ebp - 512]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x08,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2udqs xmm2, xmmword ptr [2*ebp - 512]
+
+// CHECK: vcvttpd2udqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x8f,0x6c,0x51,0x7f]
+ vcvttpd2udqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+
+// CHECK: vcvttpd2udqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x9f,0x6c,0x52,0x80]
+ vcvttpd2udqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+
+// CHECK: vcvttpd2udqs xmm2, qword ptr [eax]{1to4}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x38,0x6c,0x10]
+ vcvttpd2udqs xmm2, qword ptr [eax]{1to4}
+
+// CHECK: vcvttpd2udqs xmm2, ymmword ptr [2*ebp - 1024]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x28,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2udqs xmm2, ymmword ptr [2*ebp - 1024]
+
+// CHECK: vcvttpd2udqs xmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+// CHECK: encoding: [0x62,0xf5,0xfc,0xaf,0x6c,0x51,0x7f]
+ vcvttpd2udqs xmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+
+// CHECK: vcvttpd2udqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xbf,0x6c,0x52,0x80]
+ vcvttpd2udqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+
+// CHECK: vcvttpd2udqs ymm2, zmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2udqs ymm2, zmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttpd2udqs ymm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2udqs ymm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttpd2udqs ymm2, qword ptr [eax]{1to8}
+// CHECK: encoding: [0x62,0xf5,0xfc,0x58,0x6c,0x10]
+ vcvttpd2udqs ymm2, qword ptr [eax]{1to8}
+
+// CHECK: vcvttpd2udqs ymm2, zmmword ptr [2*ebp - 2048]
+// CHECK: encoding: [0x62,0xf5,0xfc,0x48,0x6c,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2udqs ymm2, zmmword ptr [2*ebp - 2048]
+
+// CHECK: vcvttpd2udqs ymm2 {k7} {z}, zmmword ptr [ecx + 8128]
+// CHECK: encoding: [0x62,0xf5,0xfc,0xcf,0x6c,0x51,0x7f]
+ vcvttpd2udqs ymm2 {k7} {z}, zmmword ptr [ecx + 8128]
+
+// CHECK: vcvttpd2udqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+// CHECK: encoding: [0x62,0xf5,0xfc,0xdf,0x6c,0x52,0x80]
+ vcvttpd2udqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+
+// CHECK: vcvttpd2uqqs xmm2, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6c,0xd3]
+ vcvttpd2uqqs xmm2, xmm3
+
+// CHECK: vcvttpd2uqqs xmm2 {k7}, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x0f,0x6c,0xd3]
+ vcvttpd2uqqs xmm2 {k7}, xmm3
+
+// CHECK: vcvttpd2uqqs xmm2 {k7} {z}, xmm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x8f,0x6c,0xd3]
+ vcvttpd2uqqs xmm2 {k7} {z}, xmm3
+
+// CHECK: vcvttpd2uqqs ymm2, ymm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6c,0xd3]
+ vcvttpd2uqqs ymm2, ymm3
+
+// CHECK: vcvttpd2uqqs ymm2, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xf9,0x18,0x6c,0xd3]
+ vcvttpd2uqqs ymm2, ymm3, {sae}
+
+// CHECK: vcvttpd2uqqs ymm2 {k7}, ymm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x2f,0x6c,0xd3]
+ vcvttpd2uqqs ymm2 {k7}, ymm3
+
+// CHECK: vcvttpd2uqqs ymm2 {k7} {z}, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xf9,0x9f,0x6c,0xd3]
+ vcvttpd2uqqs ymm2 {k7} {z}, ymm3, {sae}
+
+// CHECK: vcvttpd2uqqs zmm2, zmm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6c,0xd3]
+ vcvttpd2uqqs zmm2, zmm3
+
+// CHECK: vcvttpd2uqqs zmm2, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x18,0x6c,0xd3]
+ vcvttpd2uqqs zmm2, zmm3, {sae}
+
+// CHECK: vcvttpd2uqqs zmm2 {k7}, zmm3
+// CHECK: encoding: [0x62,0xf5,0xfd,0x4f,0x6c,0xd3]
+ vcvttpd2uqqs zmm2 {k7}, zmm3
+
+// CHECK: vcvttpd2uqqs zmm2 {k7} {z}, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x9f,0x6c,0xd3]
+ vcvttpd2uqqs zmm2 {k7} {z}, zmm3, {sae}
+
+// CHECK: vcvttpd2uqqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttpd2uqqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttpd2uqqs xmm2, qword ptr [eax]{1to2}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x18,0x6c,0x10]
+ vcvttpd2uqqs xmm2, qword ptr [eax]{1to2}
+
+// CHECK: vcvttpd2uqqs xmm2, xmmword ptr [2*ebp - 512]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x08,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2uqqs xmm2, xmmword ptr [2*ebp - 512]
+
+// CHECK: vcvttpd2uqqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x8f,0x6c,0x51,0x7f]
+ vcvttpd2uqqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+
+// CHECK: vcvttpd2uqqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x9f,0x6c,0x52,0x80]
+ vcvttpd2uqqs xmm2 {k7} {z}, qword ptr [edx - 1024]{1to2}
+
+// CHECK: vcvttpd2uqqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttpd2uqqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x2f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttpd2uqqs ymm2, qword ptr [eax]{1to4}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x38,0x6c,0x10]
+ vcvttpd2uqqs ymm2, qword ptr [eax]{1to4}
+
+// CHECK: vcvttpd2uqqs ymm2, ymmword ptr [2*ebp - 1024]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x28,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2uqqs ymm2, ymmword ptr [2*ebp - 1024]
+
+// CHECK: vcvttpd2uqqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+// CHECK: encoding: [0x62,0xf5,0xfd,0xaf,0x6c,0x51,0x7f]
+ vcvttpd2uqqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+
+// CHECK: vcvttpd2uqqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xbf,0x6c,0x52,0x80]
+ vcvttpd2uqqs ymm2 {k7} {z}, qword ptr [edx - 1024]{1to4}
+
+// CHECK: vcvttpd2uqqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttpd2uqqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttpd2uqqs zmm2, qword ptr [eax]{1to8}
+// CHECK: encoding: [0x62,0xf5,0xfd,0x58,0x6c,0x10]
+ vcvttpd2uqqs zmm2, qword ptr [eax]{1to8}
+
+// CHECK: vcvttpd2uqqs zmm2, zmmword ptr [2*ebp - 2048]
+// CHECK: encoding: [0x62,0xf5,0xfd,0x48,0x6c,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2uqqs zmm2, zmmword ptr [2*ebp - 2048]
+
+// CHECK: vcvttpd2uqqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+// CHECK: encoding: [0x62,0xf5,0xfd,0xcf,0x6c,0x51,0x7f]
+ vcvttpd2uqqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+
+// CHECK: vcvttpd2uqqs zmm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+// CHECK: encoding: [0x62,0xf5,0xfd,0xdf,0x6c,0x52,0x80]
+ vcvttpd2uqqs zmm2 {k7} {z}, qword ptr [edx - 1024]{1to8}
+
+// CHECK: vcvttps2dqs xmm2, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6d,0xd3]
+ vcvttps2dqs xmm2, xmm3
+
+// CHECK: vcvttps2dqs xmm2 {k7}, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x0f,0x6d,0xd3]
+ vcvttps2dqs xmm2 {k7}, xmm3
+
+// CHECK: vcvttps2dqs xmm2 {k7} {z}, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x8f,0x6d,0xd3]
+ vcvttps2dqs xmm2 {k7} {z}, xmm3
+
+// CHECK: vcvttps2dqs ymm2, ymm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6d,0xd3]
+ vcvttps2dqs ymm2, ymm3
+
+// CHECK: vcvttps2dqs ymm2, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x78,0x18,0x6d,0xd3]
+ vcvttps2dqs ymm2, ymm3, {sae}
+
+// CHECK: vcvttps2dqs ymm2 {k7}, ymm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x2f,0x6d,0xd3]
+ vcvttps2dqs ymm2 {k7}, ymm3
+
+// CHECK: vcvttps2dqs ymm2 {k7} {z}, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x78,0x9f,0x6d,0xd3]
+ vcvttps2dqs ymm2 {k7} {z}, ymm3, {sae}
+
+// CHECK: vcvttps2dqs zmm2, zmm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6d,0xd3]
+ vcvttps2dqs zmm2, zmm3
+
+// CHECK: vcvttps2dqs zmm2, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x18,0x6d,0xd3]
+ vcvttps2dqs zmm2, zmm3, {sae}
+
+// CHECK: vcvttps2dqs zmm2 {k7}, zmm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x4f,0x6d,0xd3]
+ vcvttps2dqs zmm2 {k7}, zmm3
+
+// CHECK: vcvttps2dqs zmm2 {k7} {z}, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x9f,0x6d,0xd3]
+ vcvttps2dqs zmm2 {k7} {z}, zmm3, {sae}
+
+// CHECK: vcvttps2dqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2dqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2dqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2dqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2dqs xmm2, dword ptr [eax]{1to4}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x18,0x6d,0x10]
+ vcvttps2dqs xmm2, dword ptr [eax]{1to4}
+
+// CHECK: vcvttps2dqs xmm2, xmmword ptr [2*ebp - 512]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2dqs xmm2, xmmword ptr [2*ebp - 512]
+
+// CHECK: vcvttps2dqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x8f,0x6d,0x51,0x7f]
+ vcvttps2dqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+
+// CHECK: vcvttps2dqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x9f,0x6d,0x52,0x80]
+ vcvttps2dqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+
+// CHECK: vcvttps2dqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2dqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2dqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x2f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2dqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2dqs ymm2, dword ptr [eax]{1to8}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x38,0x6d,0x10]
+ vcvttps2dqs ymm2, dword ptr [eax]{1to8}
+
+// CHECK: vcvttps2dqs ymm2, ymmword ptr [2*ebp - 1024]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2dqs ymm2, ymmword ptr [2*ebp - 1024]
+
+// CHECK: vcvttps2dqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+// CHECK: encoding: [0x62,0xf5,0x7c,0xaf,0x6d,0x51,0x7f]
+ vcvttps2dqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+
+// CHECK: vcvttps2dqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xbf,0x6d,0x52,0x80]
+ vcvttps2dqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+
+// CHECK: vcvttps2dqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2dqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2dqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2dqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2dqs zmm2, dword ptr [eax]{1to16}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x58,0x6d,0x10]
+ vcvttps2dqs zmm2, dword ptr [eax]{1to16}
+
+// CHECK: vcvttps2dqs zmm2, zmmword ptr [2*ebp - 2048]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6d,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttps2dqs zmm2, zmmword ptr [2*ebp - 2048]
+
+// CHECK: vcvttps2dqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+// CHECK: encoding: [0x62,0xf5,0x7c,0xcf,0x6d,0x51,0x7f]
+ vcvttps2dqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+
+// CHECK: vcvttps2dqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to16}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xdf,0x6d,0x52,0x80]
+ vcvttps2dqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to16}
+
+// CHECK: vcvttps2qqs xmm2, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6d,0xd3]
+ vcvttps2qqs xmm2, xmm3
+
+// CHECK: vcvttps2qqs xmm2 {k7}, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x0f,0x6d,0xd3]
+ vcvttps2qqs xmm2 {k7}, xmm3
+
+// CHECK: vcvttps2qqs xmm2 {k7} {z}, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x8f,0x6d,0xd3]
+ vcvttps2qqs xmm2 {k7} {z}, xmm3
+
+// CHECK: vcvttps2qqs ymm2, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6d,0xd3]
+ vcvttps2qqs ymm2, xmm3
+
+// CHECK: vcvttps2qqs ymm2, xmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x79,0x18,0x6d,0xd3]
+ vcvttps2qqs ymm2, xmm3, {sae}
+
+// CHECK: vcvttps2qqs ymm2 {k7}, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x2f,0x6d,0xd3]
+ vcvttps2qqs ymm2 {k7}, xmm3
+
+// CHECK: vcvttps2qqs ymm2 {k7} {z}, xmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x79,0x9f,0x6d,0xd3]
+ vcvttps2qqs ymm2 {k7} {z}, xmm3, {sae}
+
+// CHECK: vcvttps2qqs zmm2, ymm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6d,0xd3]
+ vcvttps2qqs zmm2, ymm3
+
+// CHECK: vcvttps2qqs zmm2, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x18,0x6d,0xd3]
+ vcvttps2qqs zmm2, ymm3, {sae}
+
+// CHECK: vcvttps2qqs zmm2 {k7}, ymm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x4f,0x6d,0xd3]
+ vcvttps2qqs zmm2 {k7}, ymm3
+
+// CHECK: vcvttps2qqs zmm2 {k7} {z}, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x9f,0x6d,0xd3]
+ vcvttps2qqs zmm2 {k7} {z}, ymm3, {sae}
+
+// CHECK: vcvttps2qqs xmm2, qword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2qqs xmm2, qword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2qqs xmm2 {k7}, qword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x0f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2qqs xmm2 {k7}, qword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2qqs xmm2, dword ptr [eax]{1to2}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x18,0x6d,0x10]
+ vcvttps2qqs xmm2, dword ptr [eax]{1to2}
+
+// CHECK: vcvttps2qqs xmm2, qword ptr [2*ebp - 256]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6d,0x14,0x6d,0x00,0xff,0xff,0xff]
+ vcvttps2qqs xmm2, qword ptr [2*ebp - 256]
+
+// CHECK: vcvttps2qqs xmm2 {k7} {z}, qword ptr [ecx + 1016]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x8f,0x6d,0x51,0x7f]
+ vcvttps2qqs xmm2 {k7} {z}, qword ptr [ecx + 1016]
+
+// CHECK: vcvttps2qqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to2}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x9f,0x6d,0x52,0x80]
+ vcvttps2qqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to2}
+
+// CHECK: vcvttps2qqs ymm2, xmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2qqs ymm2, xmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2qqs ymm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x2f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2qqs ymm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2qqs ymm2, dword ptr [eax]{1to4}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x38,0x6d,0x10]
+ vcvttps2qqs ymm2, dword ptr [eax]{1to4}
+
+// CHECK: vcvttps2qqs ymm2, xmmword ptr [2*ebp - 512]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6d,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2qqs ymm2, xmmword ptr [2*ebp - 512]
+
+// CHECK: vcvttps2qqs ymm2 {k7} {z}, xmmword ptr [ecx + 2032]
+// CHECK: encoding: [0x62,0xf5,0x7d,0xaf,0x6d,0x51,0x7f]
+ vcvttps2qqs ymm2 {k7} {z}, xmmword ptr [ecx + 2032]
+
+// CHECK: vcvttps2qqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xbf,0x6d,0x52,0x80]
+ vcvttps2qqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+
+// CHECK: vcvttps2qqs zmm2, ymmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6d,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2qqs zmm2, ymmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2qqs zmm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x4f,0x6d,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2qqs zmm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2qqs zmm2, dword ptr [eax]{1to8}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x58,0x6d,0x10]
+ vcvttps2qqs zmm2, dword ptr [eax]{1to8}
+
+// CHECK: vcvttps2qqs zmm2, ymmword ptr [2*ebp - 1024]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6d,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2qqs zmm2, ymmword ptr [2*ebp - 1024]
+
+// CHECK: vcvttps2qqs zmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+// CHECK: encoding: [0x62,0xf5,0x7d,0xcf,0x6d,0x51,0x7f]
+ vcvttps2qqs zmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+
+// CHECK: vcvttps2qqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xdf,0x6d,0x52,0x80]
+ vcvttps2qqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+
+// CHECK: vcvttps2udqs xmm2, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6c,0xd3]
+ vcvttps2udqs xmm2, xmm3
+
+// CHECK: vcvttps2udqs xmm2 {k7}, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x0f,0x6c,0xd3]
+ vcvttps2udqs xmm2 {k7}, xmm3
+
+// CHECK: vcvttps2udqs xmm2 {k7} {z}, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x8f,0x6c,0xd3]
+ vcvttps2udqs xmm2 {k7} {z}, xmm3
+
+// CHECK: vcvttps2udqs ymm2, ymm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6c,0xd3]
+ vcvttps2udqs ymm2, ymm3
+
+// CHECK: vcvttps2udqs ymm2, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x78,0x18,0x6c,0xd3]
+ vcvttps2udqs ymm2, ymm3, {sae}
+
+// CHECK: vcvttps2udqs ymm2 {k7}, ymm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x2f,0x6c,0xd3]
+ vcvttps2udqs ymm2 {k7}, ymm3
+
+// CHECK: vcvttps2udqs ymm2 {k7} {z}, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x78,0x9f,0x6c,0xd3]
+ vcvttps2udqs ymm2 {k7} {z}, ymm3, {sae}
+
+// CHECK: vcvttps2udqs zmm2, zmm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6c,0xd3]
+ vcvttps2udqs zmm2, zmm3
+
+// CHECK: vcvttps2udqs zmm2, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x18,0x6c,0xd3]
+ vcvttps2udqs zmm2, zmm3, {sae}
+
+// CHECK: vcvttps2udqs zmm2 {k7}, zmm3
+// CHECK: encoding: [0x62,0xf5,0x7c,0x4f,0x6c,0xd3]
+ vcvttps2udqs zmm2 {k7}, zmm3
+
+// CHECK: vcvttps2udqs zmm2 {k7} {z}, zmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x9f,0x6c,0xd3]
+ vcvttps2udqs zmm2 {k7} {z}, zmm3, {sae}
+
+// CHECK: vcvttps2udqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2udqs xmm2, xmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2udqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2udqs xmm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2udqs xmm2, dword ptr [eax]{1to4}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x18,0x6c,0x10]
+ vcvttps2udqs xmm2, dword ptr [eax]{1to4}
+
+// CHECK: vcvttps2udqs xmm2, xmmword ptr [2*ebp - 512]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x08,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2udqs xmm2, xmmword ptr [2*ebp - 512]
+
+// CHECK: vcvttps2udqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x8f,0x6c,0x51,0x7f]
+ vcvttps2udqs xmm2 {k7} {z}, xmmword ptr [ecx + 2032]
+
+// CHECK: vcvttps2udqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x9f,0x6c,0x52,0x80]
+ vcvttps2udqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+
+// CHECK: vcvttps2udqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2udqs ymm2, ymmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2udqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x2f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2udqs ymm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2udqs ymm2, dword ptr [eax]{1to8}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x38,0x6c,0x10]
+ vcvttps2udqs ymm2, dword ptr [eax]{1to8}
+
+// CHECK: vcvttps2udqs ymm2, ymmword ptr [2*ebp - 1024]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x28,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2udqs ymm2, ymmword ptr [2*ebp - 1024]
+
+// CHECK: vcvttps2udqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+// CHECK: encoding: [0x62,0xf5,0x7c,0xaf,0x6c,0x51,0x7f]
+ vcvttps2udqs ymm2 {k7} {z}, ymmword ptr [ecx + 4064]
+
+// CHECK: vcvttps2udqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xbf,0x6c,0x52,0x80]
+ vcvttps2udqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+
+// CHECK: vcvttps2udqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2udqs zmm2, zmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2udqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2udqs zmm2 {k7}, zmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2udqs zmm2, dword ptr [eax]{1to16}
+// CHECK: encoding: [0x62,0xf5,0x7c,0x58,0x6c,0x10]
+ vcvttps2udqs zmm2, dword ptr [eax]{1to16}
+
+// CHECK: vcvttps2udqs zmm2, zmmword ptr [2*ebp - 2048]
+// CHECK: encoding: [0x62,0xf5,0x7c,0x48,0x6c,0x14,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttps2udqs zmm2, zmmword ptr [2*ebp - 2048]
+
+// CHECK: vcvttps2udqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+// CHECK: encoding: [0x62,0xf5,0x7c,0xcf,0x6c,0x51,0x7f]
+ vcvttps2udqs zmm2 {k7} {z}, zmmword ptr [ecx + 8128]
+
+// CHECK: vcvttps2udqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to16}
+// CHECK: encoding: [0x62,0xf5,0x7c,0xdf,0x6c,0x52,0x80]
+ vcvttps2udqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to16}
+
+// CHECK: vcvttps2uqqs xmm2, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6c,0xd3]
+ vcvttps2uqqs xmm2, xmm3
+
+// CHECK: vcvttps2uqqs xmm2 {k7}, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x0f,0x6c,0xd3]
+ vcvttps2uqqs xmm2 {k7}, xmm3
+
+// CHECK: vcvttps2uqqs xmm2 {k7} {z}, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x8f,0x6c,0xd3]
+ vcvttps2uqqs xmm2 {k7} {z}, xmm3
+
+// CHECK: vcvttps2uqqs ymm2, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6c,0xd3]
+ vcvttps2uqqs ymm2, xmm3
+
+// CHECK: vcvttps2uqqs ymm2, xmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x79,0x18,0x6c,0xd3]
+ vcvttps2uqqs ymm2, xmm3, {sae}
+
+// CHECK: vcvttps2uqqs ymm2 {k7}, xmm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x2f,0x6c,0xd3]
+ vcvttps2uqqs ymm2 {k7}, xmm3
+
+// CHECK: vcvttps2uqqs ymm2 {k7} {z}, xmm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x79,0x9f,0x6c,0xd3]
+ vcvttps2uqqs ymm2 {k7} {z}, xmm3, {sae}
+
+// CHECK: vcvttps2uqqs zmm2, ymm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6c,0xd3]
+ vcvttps2uqqs zmm2, ymm3
+
+// CHECK: vcvttps2uqqs zmm2, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x18,0x6c,0xd3]
+ vcvttps2uqqs zmm2, ymm3, {sae}
+
+// CHECK: vcvttps2uqqs zmm2 {k7}, ymm3
+// CHECK: encoding: [0x62,0xf5,0x7d,0x4f,0x6c,0xd3]
+ vcvttps2uqqs zmm2 {k7}, ymm3
+
+// CHECK: vcvttps2uqqs zmm2 {k7} {z}, ymm3, {sae}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x9f,0x6c,0xd3]
+ vcvttps2uqqs zmm2 {k7} {z}, ymm3, {sae}
+
+// CHECK: vcvttps2uqqs xmm2, qword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs xmm2, qword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2uqqs xmm2 {k7}, qword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x0f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs xmm2 {k7}, qword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2uqqs xmm2, dword ptr [eax]{1to2}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x18,0x6c,0x10]
+ vcvttps2uqqs xmm2, dword ptr [eax]{1to2}
+
+// CHECK: vcvttps2uqqs xmm2, qword ptr [2*ebp - 256]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x08,0x6c,0x14,0x6d,0x00,0xff,0xff,0xff]
+ vcvttps2uqqs xmm2, qword ptr [2*ebp - 256]
+
+// CHECK: vcvttps2uqqs xmm2 {k7} {z}, qword ptr [ecx + 1016]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x8f,0x6c,0x51,0x7f]
+ vcvttps2uqqs xmm2 {k7} {z}, qword ptr [ecx + 1016]
+
+// CHECK: vcvttps2uqqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to2}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x9f,0x6c,0x52,0x80]
+ vcvttps2uqqs xmm2 {k7} {z}, dword ptr [edx - 512]{1to2}
+
+// CHECK: vcvttps2uqqs ymm2, xmmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs ymm2, xmmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2uqqs ymm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x2f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs ymm2 {k7}, xmmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2uqqs ymm2, dword ptr [eax]{1to4}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x38,0x6c,0x10]
+ vcvttps2uqqs ymm2, dword ptr [eax]{1to4}
+
+// CHECK: vcvttps2uqqs ymm2, xmmword ptr [2*ebp - 512]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x28,0x6c,0x14,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2uqqs ymm2, xmmword ptr [2*ebp - 512]
+
+// CHECK: vcvttps2uqqs ymm2 {k7} {z}, xmmword ptr [ecx + 2032]
+// CHECK: encoding: [0x62,0xf5,0x7d,0xaf,0x6c,0x51,0x7f]
+ vcvttps2uqqs ymm2 {k7} {z}, xmmword ptr [ecx + 2032]
+
+// CHECK: vcvttps2uqqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xbf,0x6c,0x52,0x80]
+ vcvttps2uqqs ymm2 {k7} {z}, dword ptr [edx - 512]{1to4}
+
+// CHECK: vcvttps2uqqs zmm2, ymmword ptr [esp + 8*esi + 268435456]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6c,0x94,0xf4,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs zmm2, ymmword ptr [esp + 8*esi + 268435456]
+
+// CHECK: vcvttps2uqqs zmm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x4f,0x6c,0x94,0x87,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs zmm2 {k7}, ymmword ptr [edi + 4*eax + 291]
+
+// CHECK: vcvttps2uqqs zmm2, dword ptr [eax]{1to8}
+// CHECK: encoding: [0x62,0xf5,0x7d,0x58,0x6c,0x10]
+ vcvttps2uqqs zmm2, dword ptr [eax]{1to8}
+
+// CHECK: vcvttps2uqqs zmm2, ymmword ptr [2*ebp - 1024]
+// CHECK: encoding: [0x62,0xf5,0x7d,0x48,0x6c,0x14,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2uqqs zmm2, ymmword ptr [2*ebp - 1024]
+
+// CHECK: vcvttps2uqqs zmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+// CHECK: encoding: [0x62,0xf5,0x7d,0xcf,0x6c,0x51,0x7f]
+ vcvttps2uqqs zmm2 {k7} {z}, ymmword ptr [ecx + 4064]
+
+// CHECK: vcvttps2uqqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+// CHECK: encoding: [0x62,0xf5,0x7d,0xdf,0x6c,0x52,0x80]
+ vcvttps2uqqs zmm2 {k7} {z}, dword ptr [edx - 512]{1to8}
+
diff --git a/llvm/test/MC/X86/avx10_2satcvtds-64-att.s b/llvm/test/MC/X86/avx10_2satcvtds-64-att.s
new file mode 100644
index 00000000000000..c653bf52219a45
--- /dev/null
+++ b/llvm/test/MC/X86/avx10_2satcvtds-64-att.s
@@ -0,0 +1,1170 @@
+// RUN: llvm-mc -triple x86_64 --show-encoding %s | FileCheck %s
+
+// CHECK: vcvttsd2sis %xmm22, %ecx
+// CHECK: encoding: [0x62,0xb5,0x7f,0x08,0x6d,0xce]
+ vcvttsd2sis %xmm22, %ecx
+
+// CHECK: vcvttsd2sis {sae}, %xmm22, %ecx
+// CHECK: encoding: [0x62,0xb5,0x7f,0x18,0x6d,0xce]
+ vcvttsd2sis {sae}, %xmm22, %ecx
+
+// CHECK: vcvttsd2sis %xmm22, %r9
+// CHECK: encoding: [0x62,0x35,0xff,0x08,0x6d,0xce]
+ vcvttsd2sis %xmm22, %r9
+
+// CHECK: vcvttsd2sis {sae}, %xmm22, %r9
+// CHECK: encoding: [0x62,0x35,0xff,0x18,0x6d,0xce]
+ vcvttsd2sis {sae}, %xmm22, %r9
+
+// CHECK: vcvttsd2sis 268435456(%rbp,%r14,8), %ecx
+// CHECK: encoding: [0x62,0xb5,0x7f,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttsd2sis 268435456(%rbp,%r14,8), %ecx
+
+// CHECK: vcvttsd2sis 291(%r8,%rax,4), %ecx
+// CHECK: encoding: [0x62,0xd5,0x7f,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttsd2sis 291(%r8,%rax,4), %ecx
+
+// CHECK: vcvttsd2sis (%rip), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00]
+ vcvttsd2sis (%rip), %ecx
+
+// CHECK: vcvttsd2sis -256(,%rbp,2), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2sis -256(,%rbp,2), %ecx
+
+// CHECK: vcvttsd2sis 1016(%rcx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x49,0x7f]
+ vcvttsd2sis 1016(%rcx), %ecx
+
+// CHECK: vcvttsd2sis -1024(%rdx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x4a,0x80]
+ vcvttsd2sis -1024(%rdx), %ecx
+
+// CHECK: vcvttsd2sis 268435456(%rbp,%r14,8), %r9
+// CHECK: encoding: [0x62,0x35,0xff,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttsd2sis 268435456(%rbp,%r14,8), %r9
+
+// CHECK: vcvttsd2sis 291(%r8,%rax,4), %r9
+// CHECK: encoding: [0x62,0x55,0xff,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttsd2sis 291(%r8,%rax,4), %r9
+
+// CHECK: vcvttsd2sis (%rip), %r9
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00]
+ vcvttsd2sis (%rip), %r9
+
+// CHECK: vcvttsd2sis -256(,%rbp,2), %r9
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6d,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2sis -256(,%rbp,2), %r9
+
+// CHECK: vcvttsd2sis 1016(%rcx), %r9
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6d,0x49,0x7f]
+ vcvttsd2sis 1016(%rcx), %r9
+
+// CHECK: vcvttsd2sis -1024(%rdx), %r9
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6d,0x4a,0x80]
+ vcvttsd2sis -1024(%rdx), %r9
+
+// CHECK: vcvttsd2usis %xmm22, %ecx
+// CHECK: encoding: [0x62,0xb5,0x7f,0x08,0x6c,0xce]
+ vcvttsd2usis %xmm22, %ecx
+
+// CHECK: vcvttsd2usis {sae}, %xmm22, %ecx
+// CHECK: encoding: [0x62,0xb5,0x7f,0x18,0x6c,0xce]
+ vcvttsd2usis {sae}, %xmm22, %ecx
+
+// CHECK: vcvttsd2usis %xmm22, %r9
+// CHECK: encoding: [0x62,0x35,0xff,0x08,0x6c,0xce]
+ vcvttsd2usis %xmm22, %r9
+
+// CHECK: vcvttsd2usis {sae}, %xmm22, %r9
+// CHECK: encoding: [0x62,0x35,0xff,0x18,0x6c,0xce]
+ vcvttsd2usis {sae}, %xmm22, %r9
+
+// CHECK: vcvttsd2usis 268435456(%rbp,%r14,8), %ecx
+// CHECK: encoding: [0x62,0xb5,0x7f,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttsd2usis 268435456(%rbp,%r14,8), %ecx
+
+// CHECK: vcvttsd2usis 291(%r8,%rax,4), %ecx
+// CHECK: encoding: [0x62,0xd5,0x7f,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttsd2usis 291(%r8,%rax,4), %ecx
+
+// CHECK: vcvttsd2usis (%rip), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00]
+ vcvttsd2usis (%rip), %ecx
+
+// CHECK: vcvttsd2usis -256(,%rbp,2), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2usis -256(,%rbp,2), %ecx
+
+// CHECK: vcvttsd2usis 1016(%rcx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x49,0x7f]
+ vcvttsd2usis 1016(%rcx), %ecx
+
+// CHECK: vcvttsd2usis -1024(%rdx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x4a,0x80]
+ vcvttsd2usis -1024(%rdx), %ecx
+
+// CHECK: vcvttsd2usis 268435456(%rbp,%r14,8), %r9
+// CHECK: encoding: [0x62,0x35,0xff,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttsd2usis 268435456(%rbp,%r14,8), %r9
+
+// CHECK: vcvttsd2usis 291(%r8,%rax,4), %r9
+// CHECK: encoding: [0x62,0x55,0xff,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttsd2usis 291(%r8,%rax,4), %r9
+
+// CHECK: vcvttsd2usis (%rip), %r9
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00]
+ vcvttsd2usis (%rip), %r9
+
+// CHECK: vcvttsd2usis -256(,%rbp,2), %r9
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6c,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2usis -256(,%rbp,2), %r9
+
+// CHECK: vcvttsd2usis 1016(%rcx), %r9
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6c,0x49,0x7f]
+ vcvttsd2usis 1016(%rcx), %r9
+
+// CHECK: vcvttsd2usis -1024(%rdx), %r9
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6c,0x4a,0x80]
+ vcvttsd2usis -1024(%rdx), %r9
+
+// CHECK: vcvttss2sis %xmm22, %ecx
+// CHECK: encoding: [0x62,0xb5,0x7e,0x08,0x6d,0xce]
+ vcvttss2sis %xmm22, %ecx
+
+// CHECK: vcvttss2sis {sae}, %xmm22, %ecx
+// CHECK: encoding: [0x62,0xb5,0x7e,0x18,0x6d,0xce]
+ vcvttss2sis {sae}, %xmm22, %ecx
+
+// CHECK: vcvttss2sis %xmm22, %r9
+// CHECK: encoding: [0x62,0x35,0xfe,0x08,0x6d,0xce]
+ vcvttss2sis %xmm22, %r9
+
+// CHECK: vcvttss2sis {sae}, %xmm22, %r9
+// CHECK: encoding: [0x62,0x35,0xfe,0x18,0x6d,0xce]
+ vcvttss2sis {sae}, %xmm22, %r9
+
+// CHECK: vcvttss2sis 268435456(%rbp,%r14,8), %ecx
+// CHECK: encoding: [0x62,0xb5,0x7e,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttss2sis 268435456(%rbp,%r14,8), %ecx
+
+// CHECK: vcvttss2sis 291(%r8,%rax,4), %ecx
+// CHECK: encoding: [0x62,0xd5,0x7e,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttss2sis 291(%r8,%rax,4), %ecx
+
+// CHECK: vcvttss2sis (%rip), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00]
+ vcvttss2sis (%rip), %ecx
+
+// CHECK: vcvttss2sis -128(,%rbp,2), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2sis -128(,%rbp,2), %ecx
+
+// CHECK: vcvttss2sis 508(%rcx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x49,0x7f]
+ vcvttss2sis 508(%rcx), %ecx
+
+// CHECK: vcvttss2sis -512(%rdx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x4a,0x80]
+ vcvttss2sis -512(%rdx), %ecx
+
+// CHECK: vcvttss2sis 268435456(%rbp,%r14,8), %r9
+// CHECK: encoding: [0x62,0x35,0xfe,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttss2sis 268435456(%rbp,%r14,8), %r9
+
+// CHECK: vcvttss2sis 291(%r8,%rax,4), %r9
+// CHECK: encoding: [0x62,0x55,0xfe,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttss2sis 291(%r8,%rax,4), %r9
+
+// CHECK: vcvttss2sis (%rip), %r9
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00]
+ vcvttss2sis (%rip), %r9
+
+// CHECK: vcvttss2sis -128(,%rbp,2), %r9
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6d,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2sis -128(,%rbp,2), %r9
+
+// CHECK: vcvttss2sis 508(%rcx), %r9
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6d,0x49,0x7f]
+ vcvttss2sis 508(%rcx), %r9
+
+// CHECK: vcvttss2sis -512(%rdx), %r9
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6d,0x4a,0x80]
+ vcvttss2sis -512(%rdx), %r9
+
+// CHECK: vcvttss2usis %xmm22, %ecx
+// CHECK: encoding: [0x62,0xb5,0x7e,0x08,0x6c,0xce]
+ vcvttss2usis %xmm22, %ecx
+
+// CHECK: vcvttss2usis {sae}, %xmm22, %ecx
+// CHECK: encoding: [0x62,0xb5,0x7e,0x18,0x6c,0xce]
+ vcvttss2usis {sae}, %xmm22, %ecx
+
+// CHECK: vcvttss2usis %xmm22, %r9
+// CHECK: encoding: [0x62,0x35,0xfe,0x08,0x6c,0xce]
+ vcvttss2usis %xmm22, %r9
+
+// CHECK: vcvttss2usis {sae}, %xmm22, %r9
+// CHECK: encoding: [0x62,0x35,0xfe,0x18,0x6c,0xce]
+ vcvttss2usis {sae}, %xmm22, %r9
+
+// CHECK: vcvttss2usis 268435456(%rbp,%r14,8), %ecx
+// CHECK: encoding: [0x62,0xb5,0x7e,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttss2usis 268435456(%rbp,%r14,8), %ecx
+
+// CHECK: vcvttss2usis 291(%r8,%rax,4), %ecx
+// CHECK: encoding: [0x62,0xd5,0x7e,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttss2usis 291(%r8,%rax,4), %ecx
+
+// CHECK: vcvttss2usis (%rip), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00]
+ vcvttss2usis (%rip), %ecx
+
+// CHECK: vcvttss2usis -128(,%rbp,2), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2usis -128(,%rbp,2), %ecx
+
+// CHECK: vcvttss2usis 508(%rcx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x49,0x7f]
+ vcvttss2usis 508(%rcx), %ecx
+
+// CHECK: vcvttss2usis -512(%rdx), %ecx
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x4a,0x80]
+ vcvttss2usis -512(%rdx), %ecx
+
+// CHECK: vcvttss2usis 268435456(%rbp,%r14,8), %r9
+// CHECK: encoding: [0x62,0x35,0xfe,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttss2usis 268435456(%rbp,%r14,8), %r9
+
+// CHECK: vcvttss2usis 291(%r8,%rax,4), %r9
+// CHECK: encoding: [0x62,0x55,0xfe,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttss2usis 291(%r8,%rax,4), %r9
+
+// CHECK: vcvttss2usis (%rip), %r9
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00]
+ vcvttss2usis (%rip), %r9
+
+// CHECK: vcvttss2usis -128(,%rbp,2), %r9
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6c,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2usis -128(,%rbp,2), %r9
+
+// CHECK: vcvttss2usis 508(%rcx), %r9
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6c,0x49,0x7f]
+ vcvttss2usis 508(%rcx), %r9
+
+// CHECK: vcvttss2usis -512(%rdx), %r9
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6c,0x4a,0x80]
+ vcvttss2usis -512(%rdx), %r9
+
+// CHECK: vcvttpd2dqs %xmm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x08,0x6d,0xf7]
+ vcvttpd2dqs %xmm23, %xmm22
+
+// CHECK: vcvttpd2dqs %xmm23, %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x0f,0x6d,0xf7]
+ vcvttpd2dqs %xmm23, %xmm22 {%k7}
+
+// CHECK: vcvttpd2dqs %xmm23, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x8f,0x6d,0xf7]
+ vcvttpd2dqs %xmm23, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2dqs %ymm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x28,0x6d,0xf7]
+ vcvttpd2dqs %ymm23, %xmm22
+
+// CHECK: vcvttpd2dqs {sae}, %ymm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0xf8,0x18,0x6d,0xf7]
+ vcvttpd2dqs {sae}, %ymm23, %xmm22
+
+// CHECK: vcvttpd2dqs %ymm23, %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x2f,0x6d,0xf7]
+ vcvttpd2dqs %ymm23, %xmm22 {%k7}
+
+// CHECK: vcvttpd2dqs {sae}, %ymm23, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xf8,0x9f,0x6d,0xf7]
+ vcvttpd2dqs {sae}, %ymm23, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2dqs %zmm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x48,0x6d,0xf7]
+ vcvttpd2dqs %zmm23, %ymm22
+
+// CHECK: vcvttpd2dqs {sae}, %zmm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x18,0x6d,0xf7]
+ vcvttpd2dqs {sae}, %zmm23, %ymm22
+
+// CHECK: vcvttpd2dqs %zmm23, %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x4f,0x6d,0xf7]
+ vcvttpd2dqs %zmm23, %ymm22 {%k7}
+
+// CHECK: vcvttpd2dqs {sae}, %zmm23, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x9f,0x6d,0xf7]
+ vcvttpd2dqs {sae}, %zmm23, %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2dqsx 268435456(%rbp,%r14,8), %xmm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2dqsx 268435456(%rbp,%r14,8), %xmm22
+
+// CHECK: vcvttpd2dqsx 291(%r8,%rax,4), %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0xfc,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2dqsx 291(%r8,%rax,4), %xmm22 {%k7}
+
+// CHECK: vcvttpd2dqs (%rip){1to2}, %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x18,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2dqs (%rip){1to2}, %xmm22
+
+// CHECK: vcvttpd2dqsx -512(,%rbp,2), %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x08,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2dqsx -512(,%rbp,2), %xmm22
+
+// CHECK: vcvttpd2dqsx 2032(%rcx), %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x8f,0x6d,0x71,0x7f]
+ vcvttpd2dqsx 2032(%rcx), %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2dqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x9f,0x6d,0x72,0x80]
+ vcvttpd2dqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2dqs (%rip){1to4}, %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x38,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2dqs (%rip){1to4}, %xmm22
+
+// CHECK: vcvttpd2dqsy -1024(,%rbp,2), %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x28,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2dqsy -1024(,%rbp,2), %xmm22
+
+// CHECK: vcvttpd2dqsy 4064(%rcx), %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xaf,0x6d,0x71,0x7f]
+ vcvttpd2dqsy 4064(%rcx), %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2dqs -1024(%rdx){1to4}, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xbf,0x6d,0x72,0x80]
+ vcvttpd2dqs -1024(%rdx){1to4}, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2dqs 268435456(%rbp,%r14,8), %ymm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2dqs 268435456(%rbp,%r14,8), %ymm22
+
+// CHECK: vcvttpd2dqs 291(%r8,%rax,4), %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0xfc,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2dqs 291(%r8,%rax,4), %ymm22 {%k7}
+
+// CHECK: vcvttpd2dqs (%rip){1to8}, %ymm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x58,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2dqs (%rip){1to8}, %ymm22
+
+// CHECK: vcvttpd2dqs -2048(,%rbp,2), %ymm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x48,0x6d,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2dqs -2048(,%rbp,2), %ymm22
+
+// CHECK: vcvttpd2dqs 8128(%rcx), %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xcf,0x6d,0x71,0x7f]
+ vcvttpd2dqs 8128(%rcx), %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2dqs -1024(%rdx){1to8}, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xdf,0x6d,0x72,0x80]
+ vcvttpd2dqs -1024(%rdx){1to8}, %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2qqs %xmm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x08,0x6d,0xf7]
+ vcvttpd2qqs %xmm23, %xmm22
+
+// CHECK: vcvttpd2qqs %xmm23, %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x0f,0x6d,0xf7]
+ vcvttpd2qqs %xmm23, %xmm22 {%k7}
+
+// CHECK: vcvttpd2qqs %xmm23, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x8f,0x6d,0xf7]
+ vcvttpd2qqs %xmm23, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2qqs %ymm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x28,0x6d,0xf7]
+ vcvttpd2qqs %ymm23, %ymm22
+
+// CHECK: vcvttpd2qqs {sae}, %ymm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0xf9,0x18,0x6d,0xf7]
+ vcvttpd2qqs {sae}, %ymm23, %ymm22
+
+// CHECK: vcvttpd2qqs %ymm23, %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x2f,0x6d,0xf7]
+ vcvttpd2qqs %ymm23, %ymm22 {%k7}
+
+// CHECK: vcvttpd2qqs {sae}, %ymm23, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xf9,0x9f,0x6d,0xf7]
+ vcvttpd2qqs {sae}, %ymm23, %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2qqs %zmm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x48,0x6d,0xf7]
+ vcvttpd2qqs %zmm23, %zmm22
+
+// CHECK: vcvttpd2qqs {sae}, %zmm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x18,0x6d,0xf7]
+ vcvttpd2qqs {sae}, %zmm23, %zmm22
+
+// CHECK: vcvttpd2qqs %zmm23, %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x4f,0x6d,0xf7]
+ vcvttpd2qqs %zmm23, %zmm22 {%k7}
+
+// CHECK: vcvttpd2qqs {sae}, %zmm23, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x9f,0x6d,0xf7]
+ vcvttpd2qqs {sae}, %zmm23, %zmm22 {%k7} {z}
+
+// CHECK: vcvttpd2qqs 268435456(%rbp,%r14,8), %xmm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs 268435456(%rbp,%r14,8), %xmm22
+
+// CHECK: vcvttpd2qqs 291(%r8,%rax,4), %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0xfd,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs 291(%r8,%rax,4), %xmm22 {%k7}
+
+// CHECK: vcvttpd2qqs (%rip){1to2}, %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x18,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2qqs (%rip){1to2}, %xmm22
+
+// CHECK: vcvttpd2qqs -512(,%rbp,2), %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x08,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2qqs -512(,%rbp,2), %xmm22
+
+// CHECK: vcvttpd2qqs 2032(%rcx), %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x8f,0x6d,0x71,0x7f]
+ vcvttpd2qqs 2032(%rcx), %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2qqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x9f,0x6d,0x72,0x80]
+ vcvttpd2qqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2qqs 268435456(%rbp,%r14,8), %ymm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x28,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs 268435456(%rbp,%r14,8), %ymm22
+
+// CHECK: vcvttpd2qqs 291(%r8,%rax,4), %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0xfd,0x2f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs 291(%r8,%rax,4), %ymm22 {%k7}
+
+// CHECK: vcvttpd2qqs (%rip){1to4}, %ymm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x38,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2qqs (%rip){1to4}, %ymm22
+
+// CHECK: vcvttpd2qqs -1024(,%rbp,2), %ymm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x28,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2qqs -1024(,%rbp,2), %ymm22
+
+// CHECK: vcvttpd2qqs 4064(%rcx), %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xaf,0x6d,0x71,0x7f]
+ vcvttpd2qqs 4064(%rcx), %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2qqs -1024(%rdx){1to4}, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xbf,0x6d,0x72,0x80]
+ vcvttpd2qqs -1024(%rdx){1to4}, %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2qqs 268435456(%rbp,%r14,8), %zmm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs 268435456(%rbp,%r14,8), %zmm22
+
+// CHECK: vcvttpd2qqs 291(%r8,%rax,4), %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0xfd,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs 291(%r8,%rax,4), %zmm22 {%k7}
+
+// CHECK: vcvttpd2qqs (%rip){1to8}, %zmm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x58,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2qqs (%rip){1to8}, %zmm22
+
+// CHECK: vcvttpd2qqs -2048(,%rbp,2), %zmm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x48,0x6d,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2qqs -2048(,%rbp,2), %zmm22
+
+// CHECK: vcvttpd2qqs 8128(%rcx), %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xcf,0x6d,0x71,0x7f]
+ vcvttpd2qqs 8128(%rcx), %zmm22 {%k7} {z}
+
+// CHECK: vcvttpd2qqs -1024(%rdx){1to8}, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xdf,0x6d,0x72,0x80]
+ vcvttpd2qqs -1024(%rdx){1to8}, %zmm22 {%k7} {z}
+
+// CHECK: vcvttpd2udqs %xmm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x08,0x6c,0xf7]
+ vcvttpd2udqs %xmm23, %xmm22
+
+// CHECK: vcvttpd2udqs %xmm23, %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x0f,0x6c,0xf7]
+ vcvttpd2udqs %xmm23, %xmm22 {%k7}
+
+// CHECK: vcvttpd2udqs %xmm23, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x8f,0x6c,0xf7]
+ vcvttpd2udqs %xmm23, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2udqs %ymm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x28,0x6c,0xf7]
+ vcvttpd2udqs %ymm23, %xmm22
+
+// CHECK: vcvttpd2udqs {sae}, %ymm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0xf8,0x18,0x6c,0xf7]
+ vcvttpd2udqs {sae}, %ymm23, %xmm22
+
+// CHECK: vcvttpd2udqs %ymm23, %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x2f,0x6c,0xf7]
+ vcvttpd2udqs %ymm23, %xmm22 {%k7}
+
+// CHECK: vcvttpd2udqs {sae}, %ymm23, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xf8,0x9f,0x6c,0xf7]
+ vcvttpd2udqs {sae}, %ymm23, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2udqs %zmm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x48,0x6c,0xf7]
+ vcvttpd2udqs %zmm23, %ymm22
+
+// CHECK: vcvttpd2udqs {sae}, %zmm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x18,0x6c,0xf7]
+ vcvttpd2udqs {sae}, %zmm23, %ymm22
+
+// CHECK: vcvttpd2udqs %zmm23, %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x4f,0x6c,0xf7]
+ vcvttpd2udqs %zmm23, %ymm22 {%k7}
+
+// CHECK: vcvttpd2udqs {sae}, %zmm23, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x9f,0x6c,0xf7]
+ vcvttpd2udqs {sae}, %zmm23, %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2udqsx 268435456(%rbp,%r14,8), %xmm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2udqsx 268435456(%rbp,%r14,8), %xmm22
+
+// CHECK: vcvttpd2udqsx 291(%r8,%rax,4), %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0xfc,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2udqsx 291(%r8,%rax,4), %xmm22 {%k7}
+
+// CHECK: vcvttpd2udqs (%rip){1to2}, %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x18,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2udqs (%rip){1to2}, %xmm22
+
+// CHECK: vcvttpd2udqsx -512(,%rbp,2), %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x08,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2udqsx -512(,%rbp,2), %xmm22
+
+// CHECK: vcvttpd2udqsx 2032(%rcx), %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x8f,0x6c,0x71,0x7f]
+ vcvttpd2udqsx 2032(%rcx), %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2udqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x9f,0x6c,0x72,0x80]
+ vcvttpd2udqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2udqs (%rip){1to4}, %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x38,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2udqs (%rip){1to4}, %xmm22
+
+// CHECK: vcvttpd2udqsy -1024(,%rbp,2), %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x28,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2udqsy -1024(,%rbp,2), %xmm22
+
+// CHECK: vcvttpd2udqsy 4064(%rcx), %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xaf,0x6c,0x71,0x7f]
+ vcvttpd2udqsy 4064(%rcx), %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2udqs -1024(%rdx){1to4}, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xbf,0x6c,0x72,0x80]
+ vcvttpd2udqs -1024(%rdx){1to4}, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2udqs 268435456(%rbp,%r14,8), %ymm22
+// CHECK: encoding: [0x62,0xa5,0xfc,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2udqs 268435456(%rbp,%r14,8), %ymm22
+
+// CHECK: vcvttpd2udqs 291(%r8,%rax,4), %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0xfc,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2udqs 291(%r8,%rax,4), %ymm22 {%k7}
+
+// CHECK: vcvttpd2udqs (%rip){1to8}, %ymm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x58,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2udqs (%rip){1to8}, %ymm22
+
+// CHECK: vcvttpd2udqs -2048(,%rbp,2), %ymm22
+// CHECK: encoding: [0x62,0xe5,0xfc,0x48,0x6c,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2udqs -2048(,%rbp,2), %ymm22
+
+// CHECK: vcvttpd2udqs 8128(%rcx), %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xcf,0x6c,0x71,0x7f]
+ vcvttpd2udqs 8128(%rcx), %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2udqs -1024(%rdx){1to8}, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xdf,0x6c,0x72,0x80]
+ vcvttpd2udqs -1024(%rdx){1to8}, %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs %xmm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x08,0x6c,0xf7]
+ vcvttpd2uqqs %xmm23, %xmm22
+
+// CHECK: vcvttpd2uqqs %xmm23, %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x0f,0x6c,0xf7]
+ vcvttpd2uqqs %xmm23, %xmm22 {%k7}
+
+// CHECK: vcvttpd2uqqs %xmm23, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x8f,0x6c,0xf7]
+ vcvttpd2uqqs %xmm23, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs %ymm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x28,0x6c,0xf7]
+ vcvttpd2uqqs %ymm23, %ymm22
+
+// CHECK: vcvttpd2uqqs {sae}, %ymm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0xf9,0x18,0x6c,0xf7]
+ vcvttpd2uqqs {sae}, %ymm23, %ymm22
+
+// CHECK: vcvttpd2uqqs %ymm23, %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x2f,0x6c,0xf7]
+ vcvttpd2uqqs %ymm23, %ymm22 {%k7}
+
+// CHECK: vcvttpd2uqqs {sae}, %ymm23, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xf9,0x9f,0x6c,0xf7]
+ vcvttpd2uqqs {sae}, %ymm23, %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs %zmm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x48,0x6c,0xf7]
+ vcvttpd2uqqs %zmm23, %zmm22
+
+// CHECK: vcvttpd2uqqs {sae}, %zmm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x18,0x6c,0xf7]
+ vcvttpd2uqqs {sae}, %zmm23, %zmm22
+
+// CHECK: vcvttpd2uqqs %zmm23, %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x4f,0x6c,0xf7]
+ vcvttpd2uqqs %zmm23, %zmm22 {%k7}
+
+// CHECK: vcvttpd2uqqs {sae}, %zmm23, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x9f,0x6c,0xf7]
+ vcvttpd2uqqs {sae}, %zmm23, %zmm22 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs 268435456(%rbp,%r14,8), %xmm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs 268435456(%rbp,%r14,8), %xmm22
+
+// CHECK: vcvttpd2uqqs 291(%r8,%rax,4), %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0xfd,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs 291(%r8,%rax,4), %xmm22 {%k7}
+
+// CHECK: vcvttpd2uqqs (%rip){1to2}, %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x18,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2uqqs (%rip){1to2}, %xmm22
+
+// CHECK: vcvttpd2uqqs -512(,%rbp,2), %xmm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x08,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2uqqs -512(,%rbp,2), %xmm22
+
+// CHECK: vcvttpd2uqqs 2032(%rcx), %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x8f,0x6c,0x71,0x7f]
+ vcvttpd2uqqs 2032(%rcx), %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x9f,0x6c,0x72,0x80]
+ vcvttpd2uqqs -1024(%rdx){1to2}, %xmm22 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs 268435456(%rbp,%r14,8), %ymm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x28,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs 268435456(%rbp,%r14,8), %ymm22
+
+// CHECK: vcvttpd2uqqs 291(%r8,%rax,4), %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0xfd,0x2f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs 291(%r8,%rax,4), %ymm22 {%k7}
+
+// CHECK: vcvttpd2uqqs (%rip){1to4}, %ymm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x38,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2uqqs (%rip){1to4}, %ymm22
+
+// CHECK: vcvttpd2uqqs -1024(,%rbp,2), %ymm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x28,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2uqqs -1024(,%rbp,2), %ymm22
+
+// CHECK: vcvttpd2uqqs 4064(%rcx), %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xaf,0x6c,0x71,0x7f]
+ vcvttpd2uqqs 4064(%rcx), %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs -1024(%rdx){1to4}, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xbf,0x6c,0x72,0x80]
+ vcvttpd2uqqs -1024(%rdx){1to4}, %ymm22 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs 268435456(%rbp,%r14,8), %zmm22
+// CHECK: encoding: [0x62,0xa5,0xfd,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs 268435456(%rbp,%r14,8), %zmm22
+
+// CHECK: vcvttpd2uqqs 291(%r8,%rax,4), %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0xfd,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs 291(%r8,%rax,4), %zmm22 {%k7}
+
+// CHECK: vcvttpd2uqqs (%rip){1to8}, %zmm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x58,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2uqqs (%rip){1to8}, %zmm22
+
+// CHECK: vcvttpd2uqqs -2048(,%rbp,2), %zmm22
+// CHECK: encoding: [0x62,0xe5,0xfd,0x48,0x6c,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2uqqs -2048(,%rbp,2), %zmm22
+
+// CHECK: vcvttpd2uqqs 8128(%rcx), %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xcf,0x6c,0x71,0x7f]
+ vcvttpd2uqqs 8128(%rcx), %zmm22 {%k7} {z}
+
+// CHECK: vcvttpd2uqqs -1024(%rdx){1to8}, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xdf,0x6c,0x72,0x80]
+ vcvttpd2uqqs -1024(%rdx){1to8}, %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2dqs %xmm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x08,0x6d,0xf7]
+ vcvttps2dqs %xmm23, %xmm22
+
+// CHECK: vcvttps2dqs %xmm23, %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x0f,0x6d,0xf7]
+ vcvttps2dqs %xmm23, %xmm22 {%k7}
+
+// CHECK: vcvttps2dqs %xmm23, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x8f,0x6d,0xf7]
+ vcvttps2dqs %xmm23, %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2dqs %ymm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x28,0x6d,0xf7]
+ vcvttps2dqs %ymm23, %ymm22
+
+// CHECK: vcvttps2dqs {sae}, %ymm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0x78,0x18,0x6d,0xf7]
+ vcvttps2dqs {sae}, %ymm23, %ymm22
+
+// CHECK: vcvttps2dqs %ymm23, %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x2f,0x6d,0xf7]
+ vcvttps2dqs %ymm23, %ymm22 {%k7}
+
+// CHECK: vcvttps2dqs {sae}, %ymm23, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x78,0x9f,0x6d,0xf7]
+ vcvttps2dqs {sae}, %ymm23, %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2dqs %zmm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x48,0x6d,0xf7]
+ vcvttps2dqs %zmm23, %zmm22
+
+// CHECK: vcvttps2dqs {sae}, %zmm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x18,0x6d,0xf7]
+ vcvttps2dqs {sae}, %zmm23, %zmm22
+
+// CHECK: vcvttps2dqs %zmm23, %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x4f,0x6d,0xf7]
+ vcvttps2dqs %zmm23, %zmm22 {%k7}
+
+// CHECK: vcvttps2dqs {sae}, %zmm23, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x9f,0x6d,0xf7]
+ vcvttps2dqs {sae}, %zmm23, %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2dqs 268435456(%rbp,%r14,8), %xmm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2dqs 268435456(%rbp,%r14,8), %xmm22
+
+// CHECK: vcvttps2dqs 291(%r8,%rax,4), %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7c,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2dqs 291(%r8,%rax,4), %xmm22 {%k7}
+
+// CHECK: vcvttps2dqs (%rip){1to4}, %xmm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x18,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2dqs (%rip){1to4}, %xmm22
+
+// CHECK: vcvttps2dqs -512(,%rbp,2), %xmm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x08,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2dqs -512(,%rbp,2), %xmm22
+
+// CHECK: vcvttps2dqs 2032(%rcx), %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x8f,0x6d,0x71,0x7f]
+ vcvttps2dqs 2032(%rcx), %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2dqs -512(%rdx){1to4}, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x9f,0x6d,0x72,0x80]
+ vcvttps2dqs -512(%rdx){1to4}, %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2dqs 268435456(%rbp,%r14,8), %ymm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x28,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2dqs 268435456(%rbp,%r14,8), %ymm22
+
+// CHECK: vcvttps2dqs 291(%r8,%rax,4), %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7c,0x2f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2dqs 291(%r8,%rax,4), %ymm22 {%k7}
+
+// CHECK: vcvttps2dqs (%rip){1to8}, %ymm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x38,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2dqs (%rip){1to8}, %ymm22
+
+// CHECK: vcvttps2dqs -1024(,%rbp,2), %ymm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x28,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2dqs -1024(,%rbp,2), %ymm22
+
+// CHECK: vcvttps2dqs 4064(%rcx), %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xaf,0x6d,0x71,0x7f]
+ vcvttps2dqs 4064(%rcx), %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2dqs -512(%rdx){1to8}, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xbf,0x6d,0x72,0x80]
+ vcvttps2dqs -512(%rdx){1to8}, %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2dqs 268435456(%rbp,%r14,8), %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2dqs 268435456(%rbp,%r14,8), %zmm22
+
+// CHECK: vcvttps2dqs 291(%r8,%rax,4), %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7c,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2dqs 291(%r8,%rax,4), %zmm22 {%k7}
+
+// CHECK: vcvttps2dqs (%rip){1to16}, %zmm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x58,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2dqs (%rip){1to16}, %zmm22
+
+// CHECK: vcvttps2dqs -2048(,%rbp,2), %zmm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x48,0x6d,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttps2dqs -2048(,%rbp,2), %zmm22
+
+// CHECK: vcvttps2dqs 8128(%rcx), %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xcf,0x6d,0x71,0x7f]
+ vcvttps2dqs 8128(%rcx), %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2dqs -512(%rdx){1to16}, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xdf,0x6d,0x72,0x80]
+ vcvttps2dqs -512(%rdx){1to16}, %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2qqs %xmm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x08,0x6d,0xf7]
+ vcvttps2qqs %xmm23, %xmm22
+
+// CHECK: vcvttps2qqs %xmm23, %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x0f,0x6d,0xf7]
+ vcvttps2qqs %xmm23, %xmm22 {%k7}
+
+// CHECK: vcvttps2qqs %xmm23, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x8f,0x6d,0xf7]
+ vcvttps2qqs %xmm23, %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2qqs %xmm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x28,0x6d,0xf7]
+ vcvttps2qqs %xmm23, %ymm22
+
+// CHECK: vcvttps2qqs {sae}, %xmm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0x79,0x18,0x6d,0xf7]
+ vcvttps2qqs {sae}, %xmm23, %ymm22
+
+// CHECK: vcvttps2qqs %xmm23, %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x2f,0x6d,0xf7]
+ vcvttps2qqs %xmm23, %ymm22 {%k7}
+
+// CHECK: vcvttps2qqs {sae}, %xmm23, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x79,0x9f,0x6d,0xf7]
+ vcvttps2qqs {sae}, %xmm23, %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2qqs %ymm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x48,0x6d,0xf7]
+ vcvttps2qqs %ymm23, %zmm22
+
+// CHECK: vcvttps2qqs {sae}, %ymm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x18,0x6d,0xf7]
+ vcvttps2qqs {sae}, %ymm23, %zmm22
+
+// CHECK: vcvttps2qqs %ymm23, %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x4f,0x6d,0xf7]
+ vcvttps2qqs %ymm23, %zmm22 {%k7}
+
+// CHECK: vcvttps2qqs {sae}, %ymm23, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x9f,0x6d,0xf7]
+ vcvttps2qqs {sae}, %ymm23, %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2qqs 268435456(%rbp,%r14,8), %xmm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2qqs 268435456(%rbp,%r14,8), %xmm22
+
+// CHECK: vcvttps2qqs 291(%r8,%rax,4), %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7d,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2qqs 291(%r8,%rax,4), %xmm22 {%k7}
+
+// CHECK: vcvttps2qqs (%rip){1to2}, %xmm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x18,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2qqs (%rip){1to2}, %xmm22
+
+// CHECK: vcvttps2qqs -256(,%rbp,2), %xmm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x08,0x6d,0x34,0x6d,0x00,0xff,0xff,0xff]
+ vcvttps2qqs -256(,%rbp,2), %xmm22
+
+// CHECK: vcvttps2qqs 1016(%rcx), %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x8f,0x6d,0x71,0x7f]
+ vcvttps2qqs 1016(%rcx), %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2qqs -512(%rdx){1to2}, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x9f,0x6d,0x72,0x80]
+ vcvttps2qqs -512(%rdx){1to2}, %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2qqs 268435456(%rbp,%r14,8), %ymm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x28,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2qqs 268435456(%rbp,%r14,8), %ymm22
+
+// CHECK: vcvttps2qqs 291(%r8,%rax,4), %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7d,0x2f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2qqs 291(%r8,%rax,4), %ymm22 {%k7}
+
+// CHECK: vcvttps2qqs (%rip){1to4}, %ymm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x38,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2qqs (%rip){1to4}, %ymm22
+
+// CHECK: vcvttps2qqs -512(,%rbp,2), %ymm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x28,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2qqs -512(,%rbp,2), %ymm22
+
+// CHECK: vcvttps2qqs 2032(%rcx), %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xaf,0x6d,0x71,0x7f]
+ vcvttps2qqs 2032(%rcx), %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2qqs -512(%rdx){1to4}, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xbf,0x6d,0x72,0x80]
+ vcvttps2qqs -512(%rdx){1to4}, %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2qqs 268435456(%rbp,%r14,8), %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2qqs 268435456(%rbp,%r14,8), %zmm22
+
+// CHECK: vcvttps2qqs 291(%r8,%rax,4), %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7d,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2qqs 291(%r8,%rax,4), %zmm22 {%k7}
+
+// CHECK: vcvttps2qqs (%rip){1to8}, %zmm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x58,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2qqs (%rip){1to8}, %zmm22
+
+// CHECK: vcvttps2qqs -1024(,%rbp,2), %zmm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x48,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2qqs -1024(,%rbp,2), %zmm22
+
+// CHECK: vcvttps2qqs 4064(%rcx), %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xcf,0x6d,0x71,0x7f]
+ vcvttps2qqs 4064(%rcx), %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2qqs -512(%rdx){1to8}, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xdf,0x6d,0x72,0x80]
+ vcvttps2qqs -512(%rdx){1to8}, %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2udqs %xmm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x08,0x6c,0xf7]
+ vcvttps2udqs %xmm23, %xmm22
+
+// CHECK: vcvttps2udqs %xmm23, %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x0f,0x6c,0xf7]
+ vcvttps2udqs %xmm23, %xmm22 {%k7}
+
+// CHECK: vcvttps2udqs %xmm23, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x8f,0x6c,0xf7]
+ vcvttps2udqs %xmm23, %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2udqs %ymm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x28,0x6c,0xf7]
+ vcvttps2udqs %ymm23, %ymm22
+
+// CHECK: vcvttps2udqs {sae}, %ymm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0x78,0x18,0x6c,0xf7]
+ vcvttps2udqs {sae}, %ymm23, %ymm22
+
+// CHECK: vcvttps2udqs %ymm23, %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x2f,0x6c,0xf7]
+ vcvttps2udqs %ymm23, %ymm22 {%k7}
+
+// CHECK: vcvttps2udqs {sae}, %ymm23, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x78,0x9f,0x6c,0xf7]
+ vcvttps2udqs {sae}, %ymm23, %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2udqs %zmm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x48,0x6c,0xf7]
+ vcvttps2udqs %zmm23, %zmm22
+
+// CHECK: vcvttps2udqs {sae}, %zmm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x18,0x6c,0xf7]
+ vcvttps2udqs {sae}, %zmm23, %zmm22
+
+// CHECK: vcvttps2udqs %zmm23, %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x4f,0x6c,0xf7]
+ vcvttps2udqs %zmm23, %zmm22 {%k7}
+
+// CHECK: vcvttps2udqs {sae}, %zmm23, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x9f,0x6c,0xf7]
+ vcvttps2udqs {sae}, %zmm23, %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2udqs 268435456(%rbp,%r14,8), %xmm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2udqs 268435456(%rbp,%r14,8), %xmm22
+
+// CHECK: vcvttps2udqs 291(%r8,%rax,4), %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7c,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2udqs 291(%r8,%rax,4), %xmm22 {%k7}
+
+// CHECK: vcvttps2udqs (%rip){1to4}, %xmm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x18,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2udqs (%rip){1to4}, %xmm22
+
+// CHECK: vcvttps2udqs -512(,%rbp,2), %xmm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x08,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2udqs -512(,%rbp,2), %xmm22
+
+// CHECK: vcvttps2udqs 2032(%rcx), %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x8f,0x6c,0x71,0x7f]
+ vcvttps2udqs 2032(%rcx), %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2udqs -512(%rdx){1to4}, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x9f,0x6c,0x72,0x80]
+ vcvttps2udqs -512(%rdx){1to4}, %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2udqs 268435456(%rbp,%r14,8), %ymm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x28,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2udqs 268435456(%rbp,%r14,8), %ymm22
+
+// CHECK: vcvttps2udqs 291(%r8,%rax,4), %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7c,0x2f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2udqs 291(%r8,%rax,4), %ymm22 {%k7}
+
+// CHECK: vcvttps2udqs (%rip){1to8}, %ymm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x38,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2udqs (%rip){1to8}, %ymm22
+
+// CHECK: vcvttps2udqs -1024(,%rbp,2), %ymm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x28,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2udqs -1024(,%rbp,2), %ymm22
+
+// CHECK: vcvttps2udqs 4064(%rcx), %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xaf,0x6c,0x71,0x7f]
+ vcvttps2udqs 4064(%rcx), %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2udqs -512(%rdx){1to8}, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xbf,0x6c,0x72,0x80]
+ vcvttps2udqs -512(%rdx){1to8}, %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2udqs 268435456(%rbp,%r14,8), %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7c,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2udqs 268435456(%rbp,%r14,8), %zmm22
+
+// CHECK: vcvttps2udqs 291(%r8,%rax,4), %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7c,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2udqs 291(%r8,%rax,4), %zmm22 {%k7}
+
+// CHECK: vcvttps2udqs (%rip){1to16}, %zmm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x58,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2udqs (%rip){1to16}, %zmm22
+
+// CHECK: vcvttps2udqs -2048(,%rbp,2), %zmm22
+// CHECK: encoding: [0x62,0xe5,0x7c,0x48,0x6c,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttps2udqs -2048(,%rbp,2), %zmm22
+
+// CHECK: vcvttps2udqs 8128(%rcx), %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xcf,0x6c,0x71,0x7f]
+ vcvttps2udqs 8128(%rcx), %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2udqs -512(%rdx){1to16}, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xdf,0x6c,0x72,0x80]
+ vcvttps2udqs -512(%rdx){1to16}, %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2uqqs %xmm23, %xmm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x08,0x6c,0xf7]
+ vcvttps2uqqs %xmm23, %xmm22
+
+// CHECK: vcvttps2uqqs %xmm23, %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x0f,0x6c,0xf7]
+ vcvttps2uqqs %xmm23, %xmm22 {%k7}
+
+// CHECK: vcvttps2uqqs %xmm23, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x8f,0x6c,0xf7]
+ vcvttps2uqqs %xmm23, %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2uqqs %xmm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x28,0x6c,0xf7]
+ vcvttps2uqqs %xmm23, %ymm22
+
+// CHECK: vcvttps2uqqs {sae}, %xmm23, %ymm22
+// CHECK: encoding: [0x62,0xa5,0x79,0x18,0x6c,0xf7]
+ vcvttps2uqqs {sae}, %xmm23, %ymm22
+
+// CHECK: vcvttps2uqqs %xmm23, %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x2f,0x6c,0xf7]
+ vcvttps2uqqs %xmm23, %ymm22 {%k7}
+
+// CHECK: vcvttps2uqqs {sae}, %xmm23, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x79,0x9f,0x6c,0xf7]
+ vcvttps2uqqs {sae}, %xmm23, %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2uqqs %ymm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x48,0x6c,0xf7]
+ vcvttps2uqqs %ymm23, %zmm22
+
+// CHECK: vcvttps2uqqs {sae}, %ymm23, %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x18,0x6c,0xf7]
+ vcvttps2uqqs {sae}, %ymm23, %zmm22
+
+// CHECK: vcvttps2uqqs %ymm23, %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x4f,0x6c,0xf7]
+ vcvttps2uqqs %ymm23, %zmm22 {%k7}
+
+// CHECK: vcvttps2uqqs {sae}, %ymm23, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x9f,0x6c,0xf7]
+ vcvttps2uqqs {sae}, %ymm23, %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2uqqs 268435456(%rbp,%r14,8), %xmm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs 268435456(%rbp,%r14,8), %xmm22
+
+// CHECK: vcvttps2uqqs 291(%r8,%rax,4), %xmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7d,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs 291(%r8,%rax,4), %xmm22 {%k7}
+
+// CHECK: vcvttps2uqqs (%rip){1to2}, %xmm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x18,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2uqqs (%rip){1to2}, %xmm22
+
+// CHECK: vcvttps2uqqs -256(,%rbp,2), %xmm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x08,0x6c,0x34,0x6d,0x00,0xff,0xff,0xff]
+ vcvttps2uqqs -256(,%rbp,2), %xmm22
+
+// CHECK: vcvttps2uqqs 1016(%rcx), %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x8f,0x6c,0x71,0x7f]
+ vcvttps2uqqs 1016(%rcx), %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2uqqs -512(%rdx){1to2}, %xmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x9f,0x6c,0x72,0x80]
+ vcvttps2uqqs -512(%rdx){1to2}, %xmm22 {%k7} {z}
+
+// CHECK: vcvttps2uqqs 268435456(%rbp,%r14,8), %ymm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x28,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs 268435456(%rbp,%r14,8), %ymm22
+
+// CHECK: vcvttps2uqqs 291(%r8,%rax,4), %ymm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7d,0x2f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs 291(%r8,%rax,4), %ymm22 {%k7}
+
+// CHECK: vcvttps2uqqs (%rip){1to4}, %ymm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x38,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2uqqs (%rip){1to4}, %ymm22
+
+// CHECK: vcvttps2uqqs -512(,%rbp,2), %ymm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x28,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2uqqs -512(,%rbp,2), %ymm22
+
+// CHECK: vcvttps2uqqs 2032(%rcx), %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xaf,0x6c,0x71,0x7f]
+ vcvttps2uqqs 2032(%rcx), %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2uqqs -512(%rdx){1to4}, %ymm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xbf,0x6c,0x72,0x80]
+ vcvttps2uqqs -512(%rdx){1to4}, %ymm22 {%k7} {z}
+
+// CHECK: vcvttps2uqqs 268435456(%rbp,%r14,8), %zmm22
+// CHECK: encoding: [0x62,0xa5,0x7d,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs 268435456(%rbp,%r14,8), %zmm22
+
+// CHECK: vcvttps2uqqs 291(%r8,%rax,4), %zmm22 {%k7}
+// CHECK: encoding: [0x62,0xc5,0x7d,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs 291(%r8,%rax,4), %zmm22 {%k7}
+
+// CHECK: vcvttps2uqqs (%rip){1to8}, %zmm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x58,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2uqqs (%rip){1to8}, %zmm22
+
+// CHECK: vcvttps2uqqs -1024(,%rbp,2), %zmm22
+// CHECK: encoding: [0x62,0xe5,0x7d,0x48,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2uqqs -1024(,%rbp,2), %zmm22
+
+// CHECK: vcvttps2uqqs 4064(%rcx), %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xcf,0x6c,0x71,0x7f]
+ vcvttps2uqqs 4064(%rcx), %zmm22 {%k7} {z}
+
+// CHECK: vcvttps2uqqs -512(%rdx){1to8}, %zmm22 {%k7} {z}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xdf,0x6c,0x72,0x80]
+ vcvttps2uqqs -512(%rdx){1to8}, %zmm22 {%k7} {z}
+
diff --git a/llvm/test/MC/X86/avx10_2satcvtds-64-intel.s b/llvm/test/MC/X86/avx10_2satcvtds-64-intel.s
new file mode 100644
index 00000000000000..9e9af84c054eff
--- /dev/null
+++ b/llvm/test/MC/X86/avx10_2satcvtds-64-intel.s
@@ -0,0 +1,1170 @@
+// RUN: llvm-mc -triple x86_64 -x86-asm-syntax=intel -output-asm-variant=1 --show-encoding %s | FileCheck %s
+
+// CHECK: vcvttsd2sis ecx, xmm22
+// CHECK: encoding: [0x62,0xb5,0x7f,0x08,0x6d,0xce]
+ vcvttsd2sis ecx, xmm22
+
+// CHECK: vcvttsd2sis ecx, xmm22, {sae}
+// CHECK: encoding: [0x62,0xb5,0x7f,0x18,0x6d,0xce]
+ vcvttsd2sis ecx, xmm22, {sae}
+
+// CHECK: vcvttsd2sis r9, xmm22
+// CHECK: encoding: [0x62,0x35,0xff,0x08,0x6d,0xce]
+ vcvttsd2sis r9, xmm22
+
+// CHECK: vcvttsd2sis r9, xmm22, {sae}
+// CHECK: encoding: [0x62,0x35,0xff,0x18,0x6d,0xce]
+ vcvttsd2sis r9, xmm22, {sae}
+
+// CHECK: vcvttsd2sis ecx, qword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xb5,0x7f,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttsd2sis ecx, qword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttsd2sis ecx, qword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xd5,0x7f,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttsd2sis ecx, qword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttsd2sis ecx, qword ptr [rip]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00]
+ vcvttsd2sis ecx, qword ptr [rip]
+
+// CHECK: vcvttsd2sis ecx, qword ptr [2*rbp - 256]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2sis ecx, qword ptr [2*rbp - 256]
+
+// CHECK: vcvttsd2sis ecx, qword ptr [rcx + 1016]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x49,0x7f]
+ vcvttsd2sis ecx, qword ptr [rcx + 1016]
+
+// CHECK: vcvttsd2sis ecx, qword ptr [rdx - 1024]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6d,0x4a,0x80]
+ vcvttsd2sis ecx, qword ptr [rdx - 1024]
+
+// CHECK: vcvttsd2sis r9, qword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0x35,0xff,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttsd2sis r9, qword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttsd2sis r9, qword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0x55,0xff,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttsd2sis r9, qword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttsd2sis r9, qword ptr [rip]
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00]
+ vcvttsd2sis r9, qword ptr [rip]
+
+// CHECK: vcvttsd2sis r9, qword ptr [2*rbp - 256]
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6d,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2sis r9, qword ptr [2*rbp - 256]
+
+// CHECK: vcvttsd2sis r9, qword ptr [rcx + 1016]
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6d,0x49,0x7f]
+ vcvttsd2sis r9, qword ptr [rcx + 1016]
+
+// CHECK: vcvttsd2sis r9, qword ptr [rdx - 1024]
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6d,0x4a,0x80]
+ vcvttsd2sis r9, qword ptr [rdx - 1024]
+
+// CHECK: vcvttsd2usis ecx, xmm22
+// CHECK: encoding: [0x62,0xb5,0x7f,0x08,0x6c,0xce]
+ vcvttsd2usis ecx, xmm22
+
+// CHECK: vcvttsd2usis ecx, xmm22, {sae}
+// CHECK: encoding: [0x62,0xb5,0x7f,0x18,0x6c,0xce]
+ vcvttsd2usis ecx, xmm22, {sae}
+
+// CHECK: vcvttsd2usis r9, xmm22
+// CHECK: encoding: [0x62,0x35,0xff,0x08,0x6c,0xce]
+ vcvttsd2usis r9, xmm22
+
+// CHECK: vcvttsd2usis r9, xmm22, {sae}
+// CHECK: encoding: [0x62,0x35,0xff,0x18,0x6c,0xce]
+ vcvttsd2usis r9, xmm22, {sae}
+
+// CHECK: vcvttsd2usis ecx, qword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xb5,0x7f,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttsd2usis ecx, qword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttsd2usis ecx, qword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xd5,0x7f,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttsd2usis ecx, qword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttsd2usis ecx, qword ptr [rip]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00]
+ vcvttsd2usis ecx, qword ptr [rip]
+
+// CHECK: vcvttsd2usis ecx, qword ptr [2*rbp - 256]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2usis ecx, qword ptr [2*rbp - 256]
+
+// CHECK: vcvttsd2usis ecx, qword ptr [rcx + 1016]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x49,0x7f]
+ vcvttsd2usis ecx, qword ptr [rcx + 1016]
+
+// CHECK: vcvttsd2usis ecx, qword ptr [rdx - 1024]
+// CHECK: encoding: [0x62,0xf5,0x7f,0x08,0x6c,0x4a,0x80]
+ vcvttsd2usis ecx, qword ptr [rdx - 1024]
+
+// CHECK: vcvttsd2usis r9, qword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0x35,0xff,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttsd2usis r9, qword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttsd2usis r9, qword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0x55,0xff,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttsd2usis r9, qword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttsd2usis r9, qword ptr [rip]
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00]
+ vcvttsd2usis r9, qword ptr [rip]
+
+// CHECK: vcvttsd2usis r9, qword ptr [2*rbp - 256]
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6c,0x0c,0x6d,0x00,0xff,0xff,0xff]
+ vcvttsd2usis r9, qword ptr [2*rbp - 256]
+
+// CHECK: vcvttsd2usis r9, qword ptr [rcx + 1016]
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6c,0x49,0x7f]
+ vcvttsd2usis r9, qword ptr [rcx + 1016]
+
+// CHECK: vcvttsd2usis r9, qword ptr [rdx - 1024]
+// CHECK: encoding: [0x62,0x75,0xff,0x08,0x6c,0x4a,0x80]
+ vcvttsd2usis r9, qword ptr [rdx - 1024]
+
+// CHECK: vcvttss2sis ecx, xmm22
+// CHECK: encoding: [0x62,0xb5,0x7e,0x08,0x6d,0xce]
+ vcvttss2sis ecx, xmm22
+
+// CHECK: vcvttss2sis ecx, xmm22, {sae}
+// CHECK: encoding: [0x62,0xb5,0x7e,0x18,0x6d,0xce]
+ vcvttss2sis ecx, xmm22, {sae}
+
+// CHECK: vcvttss2sis r9, xmm22
+// CHECK: encoding: [0x62,0x35,0xfe,0x08,0x6d,0xce]
+ vcvttss2sis r9, xmm22
+
+// CHECK: vcvttss2sis r9, xmm22, {sae}
+// CHECK: encoding: [0x62,0x35,0xfe,0x18,0x6d,0xce]
+ vcvttss2sis r9, xmm22, {sae}
+
+// CHECK: vcvttss2sis ecx, dword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xb5,0x7e,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttss2sis ecx, dword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttss2sis ecx, dword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xd5,0x7e,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttss2sis ecx, dword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttss2sis ecx, dword ptr [rip]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00]
+ vcvttss2sis ecx, dword ptr [rip]
+
+// CHECK: vcvttss2sis ecx, dword ptr [2*rbp - 128]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2sis ecx, dword ptr [2*rbp - 128]
+
+// CHECK: vcvttss2sis ecx, dword ptr [rcx + 508]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x49,0x7f]
+ vcvttss2sis ecx, dword ptr [rcx + 508]
+
+// CHECK: vcvttss2sis ecx, dword ptr [rdx - 512]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x4a,0x80]
+ vcvttss2sis ecx, dword ptr [rdx - 512]
+
+// CHECK: vcvttss2sis r9, dword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0x35,0xfe,0x08,0x6d,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttss2sis r9, dword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttss2sis r9, dword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0x55,0xfe,0x08,0x6d,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttss2sis r9, dword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttss2sis r9, dword ptr [rip]
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6d,0x0d,0x00,0x00,0x00,0x00]
+ vcvttss2sis r9, dword ptr [rip]
+
+// CHECK: vcvttss2sis r9, dword ptr [2*rbp - 128]
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6d,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2sis r9, dword ptr [2*rbp - 128]
+
+// CHECK: vcvttss2sis r9, dword ptr [rcx + 508]
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6d,0x49,0x7f]
+ vcvttss2sis r9, dword ptr [rcx + 508]
+
+// CHECK: vcvttss2sis r9, dword ptr [rdx - 512]
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6d,0x4a,0x80]
+ vcvttss2sis r9, dword ptr [rdx - 512]
+
+// CHECK: vcvttss2usis ecx, xmm22
+// CHECK: encoding: [0x62,0xb5,0x7e,0x08,0x6c,0xce]
+ vcvttss2usis ecx, xmm22
+
+// CHECK: vcvttss2usis ecx, xmm22, {sae}
+// CHECK: encoding: [0x62,0xb5,0x7e,0x18,0x6c,0xce]
+ vcvttss2usis ecx, xmm22, {sae}
+
+// CHECK: vcvttss2usis r9, xmm22
+// CHECK: encoding: [0x62,0x35,0xfe,0x08,0x6c,0xce]
+ vcvttss2usis r9, xmm22
+
+// CHECK: vcvttss2usis r9, xmm22, {sae}
+// CHECK: encoding: [0x62,0x35,0xfe,0x18,0x6c,0xce]
+ vcvttss2usis r9, xmm22, {sae}
+
+// CHECK: vcvttss2usis ecx, dword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xb5,0x7e,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttss2usis ecx, dword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttss2usis ecx, dword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xd5,0x7e,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttss2usis ecx, dword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttss2usis ecx, dword ptr [rip]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00]
+ vcvttss2usis ecx, dword ptr [rip]
+
+// CHECK: vcvttss2usis ecx, dword ptr [2*rbp - 128]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2usis ecx, dword ptr [2*rbp - 128]
+
+// CHECK: vcvttss2usis ecx, dword ptr [rcx + 508]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x49,0x7f]
+ vcvttss2usis ecx, dword ptr [rcx + 508]
+
+// CHECK: vcvttss2usis ecx, dword ptr [rdx - 512]
+// CHECK: encoding: [0x62,0xf5,0x7e,0x08,0x6c,0x4a,0x80]
+ vcvttss2usis ecx, dword ptr [rdx - 512]
+
+// CHECK: vcvttss2usis r9, dword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0x35,0xfe,0x08,0x6c,0x8c,0xf5,0x00,0x00,0x00,0x10]
+ vcvttss2usis r9, dword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttss2usis r9, dword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0x55,0xfe,0x08,0x6c,0x8c,0x80,0x23,0x01,0x00,0x00]
+ vcvttss2usis r9, dword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttss2usis r9, dword ptr [rip]
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6c,0x0d,0x00,0x00,0x00,0x00]
+ vcvttss2usis r9, dword ptr [rip]
+
+// CHECK: vcvttss2usis r9, dword ptr [2*rbp - 128]
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6c,0x0c,0x6d,0x80,0xff,0xff,0xff]
+ vcvttss2usis r9, dword ptr [2*rbp - 128]
+
+// CHECK: vcvttss2usis r9, dword ptr [rcx + 508]
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6c,0x49,0x7f]
+ vcvttss2usis r9, dword ptr [rcx + 508]
+
+// CHECK: vcvttss2usis r9, dword ptr [rdx - 512]
+// CHECK: encoding: [0x62,0x75,0xfe,0x08,0x6c,0x4a,0x80]
+ vcvttss2usis r9, dword ptr [rdx - 512]
+
+// CHECK: vcvttpd2dqs xmm22, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x08,0x6d,0xf7]
+ vcvttpd2dqs xmm22, xmm23
+
+// CHECK: vcvttpd2dqs xmm22 {k7}, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x0f,0x6d,0xf7]
+ vcvttpd2dqs xmm22 {k7}, xmm23
+
+// CHECK: vcvttpd2dqs xmm22 {k7} {z}, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x8f,0x6d,0xf7]
+ vcvttpd2dqs xmm22 {k7} {z}, xmm23
+
+// CHECK: vcvttpd2dqs xmm22, ymm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x28,0x6d,0xf7]
+ vcvttpd2dqs xmm22, ymm23
+
+// CHECK: vcvttpd2dqs xmm22, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xf8,0x18,0x6d,0xf7]
+ vcvttpd2dqs xmm22, ymm23, {sae}
+
+// CHECK: vcvttpd2dqs xmm22 {k7}, ymm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x2f,0x6d,0xf7]
+ vcvttpd2dqs xmm22 {k7}, ymm23
+
+// CHECK: vcvttpd2dqs xmm22 {k7} {z}, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xf8,0x9f,0x6d,0xf7]
+ vcvttpd2dqs xmm22 {k7} {z}, ymm23, {sae}
+
+// CHECK: vcvttpd2dqs ymm22, zmm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x48,0x6d,0xf7]
+ vcvttpd2dqs ymm22, zmm23
+
+// CHECK: vcvttpd2dqs ymm22, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x18,0x6d,0xf7]
+ vcvttpd2dqs ymm22, zmm23, {sae}
+
+// CHECK: vcvttpd2dqs ymm22 {k7}, zmm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x4f,0x6d,0xf7]
+ vcvttpd2dqs ymm22 {k7}, zmm23
+
+// CHECK: vcvttpd2dqs ymm22 {k7} {z}, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x9f,0x6d,0xf7]
+ vcvttpd2dqs ymm22 {k7} {z}, zmm23, {sae}
+
+// CHECK: vcvttpd2dqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0xfc,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2dqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttpd2dqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0xfc,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2dqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttpd2dqs xmm22, qword ptr [rip]{1to2}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x18,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2dqs xmm22, qword ptr [rip]{1to2}
+
+// CHECK: vcvttpd2dqs xmm22, xmmword ptr [2*rbp - 512]
+// CHECK: encoding: [0x62,0xe5,0xfc,0x08,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2dqs xmm22, xmmword ptr [2*rbp - 512]
+
+// CHECK: vcvttpd2dqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+// CHECK: encoding: [0x62,0xe5,0xfc,0x8f,0x6d,0x71,0x7f]
+ vcvttpd2dqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+
+// CHECK: vcvttpd2dqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x9f,0x6d,0x72,0x80]
+ vcvttpd2dqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+
+// CHECK: vcvttpd2dqs xmm22, qword ptr [rip]{1to4}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x38,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2dqs xmm22, qword ptr [rip]{1to4}
+
+// CHECK: vcvttpd2dqs xmm22, ymmword ptr [2*rbp - 1024]
+// CHECK: encoding: [0x62,0xe5,0xfc,0x28,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2dqs xmm22, ymmword ptr [2*rbp - 1024]
+
+// CHECK: vcvttpd2dqs xmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+// CHECK: encoding: [0x62,0xe5,0xfc,0xaf,0x6d,0x71,0x7f]
+ vcvttpd2dqs xmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+
+// CHECK: vcvttpd2dqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xbf,0x6d,0x72,0x80]
+ vcvttpd2dqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+
+// CHECK: vcvttpd2dqs ymm22, zmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0xfc,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2dqs ymm22, zmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttpd2dqs ymm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0xfc,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2dqs ymm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttpd2dqs ymm22, qword ptr [rip]{1to8}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x58,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2dqs ymm22, qword ptr [rip]{1to8}
+
+// CHECK: vcvttpd2dqs ymm22, zmmword ptr [2*rbp - 2048]
+// CHECK: encoding: [0x62,0xe5,0xfc,0x48,0x6d,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2dqs ymm22, zmmword ptr [2*rbp - 2048]
+
+// CHECK: vcvttpd2dqs ymm22 {k7} {z}, zmmword ptr [rcx + 8128]
+// CHECK: encoding: [0x62,0xe5,0xfc,0xcf,0x6d,0x71,0x7f]
+ vcvttpd2dqs ymm22 {k7} {z}, zmmword ptr [rcx + 8128]
+
+// CHECK: vcvttpd2dqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xdf,0x6d,0x72,0x80]
+ vcvttpd2dqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+
+// CHECK: vcvttpd2qqs xmm22, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x08,0x6d,0xf7]
+ vcvttpd2qqs xmm22, xmm23
+
+// CHECK: vcvttpd2qqs xmm22 {k7}, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x0f,0x6d,0xf7]
+ vcvttpd2qqs xmm22 {k7}, xmm23
+
+// CHECK: vcvttpd2qqs xmm22 {k7} {z}, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x8f,0x6d,0xf7]
+ vcvttpd2qqs xmm22 {k7} {z}, xmm23
+
+// CHECK: vcvttpd2qqs ymm22, ymm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x28,0x6d,0xf7]
+ vcvttpd2qqs ymm22, ymm23
+
+// CHECK: vcvttpd2qqs ymm22, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xf9,0x18,0x6d,0xf7]
+ vcvttpd2qqs ymm22, ymm23, {sae}
+
+// CHECK: vcvttpd2qqs ymm22 {k7}, ymm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x2f,0x6d,0xf7]
+ vcvttpd2qqs ymm22 {k7}, ymm23
+
+// CHECK: vcvttpd2qqs ymm22 {k7} {z}, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xf9,0x9f,0x6d,0xf7]
+ vcvttpd2qqs ymm22 {k7} {z}, ymm23, {sae}
+
+// CHECK: vcvttpd2qqs zmm22, zmm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x48,0x6d,0xf7]
+ vcvttpd2qqs zmm22, zmm23
+
+// CHECK: vcvttpd2qqs zmm22, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x18,0x6d,0xf7]
+ vcvttpd2qqs zmm22, zmm23, {sae}
+
+// CHECK: vcvttpd2qqs zmm22 {k7}, zmm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x4f,0x6d,0xf7]
+ vcvttpd2qqs zmm22 {k7}, zmm23
+
+// CHECK: vcvttpd2qqs zmm22 {k7} {z}, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x9f,0x6d,0xf7]
+ vcvttpd2qqs zmm22 {k7} {z}, zmm23, {sae}
+
+// CHECK: vcvttpd2qqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0xfd,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttpd2qqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0xfd,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttpd2qqs xmm22, qword ptr [rip]{1to2}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x18,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2qqs xmm22, qword ptr [rip]{1to2}
+
+// CHECK: vcvttpd2qqs xmm22, xmmword ptr [2*rbp - 512]
+// CHECK: encoding: [0x62,0xe5,0xfd,0x08,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2qqs xmm22, xmmword ptr [2*rbp - 512]
+
+// CHECK: vcvttpd2qqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+// CHECK: encoding: [0x62,0xe5,0xfd,0x8f,0x6d,0x71,0x7f]
+ vcvttpd2qqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+
+// CHECK: vcvttpd2qqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x9f,0x6d,0x72,0x80]
+ vcvttpd2qqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+
+// CHECK: vcvttpd2qqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0xfd,0x28,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttpd2qqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0xfd,0x2f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttpd2qqs ymm22, qword ptr [rip]{1to4}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x38,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2qqs ymm22, qword ptr [rip]{1to4}
+
+// CHECK: vcvttpd2qqs ymm22, ymmword ptr [2*rbp - 1024]
+// CHECK: encoding: [0x62,0xe5,0xfd,0x28,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2qqs ymm22, ymmword ptr [2*rbp - 1024]
+
+// CHECK: vcvttpd2qqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+// CHECK: encoding: [0x62,0xe5,0xfd,0xaf,0x6d,0x71,0x7f]
+ vcvttpd2qqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+
+// CHECK: vcvttpd2qqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xbf,0x6d,0x72,0x80]
+ vcvttpd2qqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+
+// CHECK: vcvttpd2qqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0xfd,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2qqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttpd2qqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0xfd,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2qqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttpd2qqs zmm22, qword ptr [rip]{1to8}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x58,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2qqs zmm22, qword ptr [rip]{1to8}
+
+// CHECK: vcvttpd2qqs zmm22, zmmword ptr [2*rbp - 2048]
+// CHECK: encoding: [0x62,0xe5,0xfd,0x48,0x6d,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2qqs zmm22, zmmword ptr [2*rbp - 2048]
+
+// CHECK: vcvttpd2qqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+// CHECK: encoding: [0x62,0xe5,0xfd,0xcf,0x6d,0x71,0x7f]
+ vcvttpd2qqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+
+// CHECK: vcvttpd2qqs zmm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xdf,0x6d,0x72,0x80]
+ vcvttpd2qqs zmm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+
+// CHECK: vcvttpd2udqs xmm22, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x08,0x6c,0xf7]
+ vcvttpd2udqs xmm22, xmm23
+
+// CHECK: vcvttpd2udqs xmm22 {k7}, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x0f,0x6c,0xf7]
+ vcvttpd2udqs xmm22 {k7}, xmm23
+
+// CHECK: vcvttpd2udqs xmm22 {k7} {z}, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x8f,0x6c,0xf7]
+ vcvttpd2udqs xmm22 {k7} {z}, xmm23
+
+// CHECK: vcvttpd2udqs xmm22, ymm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x28,0x6c,0xf7]
+ vcvttpd2udqs xmm22, ymm23
+
+// CHECK: vcvttpd2udqs xmm22, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xf8,0x18,0x6c,0xf7]
+ vcvttpd2udqs xmm22, ymm23, {sae}
+
+// CHECK: vcvttpd2udqs xmm22 {k7}, ymm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x2f,0x6c,0xf7]
+ vcvttpd2udqs xmm22 {k7}, ymm23
+
+// CHECK: vcvttpd2udqs xmm22 {k7} {z}, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xf8,0x9f,0x6c,0xf7]
+ vcvttpd2udqs xmm22 {k7} {z}, ymm23, {sae}
+
+// CHECK: vcvttpd2udqs ymm22, zmm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x48,0x6c,0xf7]
+ vcvttpd2udqs ymm22, zmm23
+
+// CHECK: vcvttpd2udqs ymm22, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x18,0x6c,0xf7]
+ vcvttpd2udqs ymm22, zmm23, {sae}
+
+// CHECK: vcvttpd2udqs ymm22 {k7}, zmm23
+// CHECK: encoding: [0x62,0xa5,0xfc,0x4f,0x6c,0xf7]
+ vcvttpd2udqs ymm22 {k7}, zmm23
+
+// CHECK: vcvttpd2udqs ymm22 {k7} {z}, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xfc,0x9f,0x6c,0xf7]
+ vcvttpd2udqs ymm22 {k7} {z}, zmm23, {sae}
+
+// CHECK: vcvttpd2udqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0xfc,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2udqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttpd2udqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0xfc,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2udqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttpd2udqs xmm22, qword ptr [rip]{1to2}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x18,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2udqs xmm22, qword ptr [rip]{1to2}
+
+// CHECK: vcvttpd2udqs xmm22, xmmword ptr [2*rbp - 512]
+// CHECK: encoding: [0x62,0xe5,0xfc,0x08,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2udqs xmm22, xmmword ptr [2*rbp - 512]
+
+// CHECK: vcvttpd2udqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+// CHECK: encoding: [0x62,0xe5,0xfc,0x8f,0x6c,0x71,0x7f]
+ vcvttpd2udqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+
+// CHECK: vcvttpd2udqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x9f,0x6c,0x72,0x80]
+ vcvttpd2udqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+
+// CHECK: vcvttpd2udqs xmm22, qword ptr [rip]{1to4}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x38,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2udqs xmm22, qword ptr [rip]{1to4}
+
+// CHECK: vcvttpd2udqs xmm22, ymmword ptr [2*rbp - 1024]
+// CHECK: encoding: [0x62,0xe5,0xfc,0x28,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2udqs xmm22, ymmword ptr [2*rbp - 1024]
+
+// CHECK: vcvttpd2udqs xmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+// CHECK: encoding: [0x62,0xe5,0xfc,0xaf,0x6c,0x71,0x7f]
+ vcvttpd2udqs xmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+
+// CHECK: vcvttpd2udqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xbf,0x6c,0x72,0x80]
+ vcvttpd2udqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+
+// CHECK: vcvttpd2udqs ymm22, zmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0xfc,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2udqs ymm22, zmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttpd2udqs ymm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0xfc,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2udqs ymm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttpd2udqs ymm22, qword ptr [rip]{1to8}
+// CHECK: encoding: [0x62,0xe5,0xfc,0x58,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2udqs ymm22, qword ptr [rip]{1to8}
+
+// CHECK: vcvttpd2udqs ymm22, zmmword ptr [2*rbp - 2048]
+// CHECK: encoding: [0x62,0xe5,0xfc,0x48,0x6c,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2udqs ymm22, zmmword ptr [2*rbp - 2048]
+
+// CHECK: vcvttpd2udqs ymm22 {k7} {z}, zmmword ptr [rcx + 8128]
+// CHECK: encoding: [0x62,0xe5,0xfc,0xcf,0x6c,0x71,0x7f]
+ vcvttpd2udqs ymm22 {k7} {z}, zmmword ptr [rcx + 8128]
+
+// CHECK: vcvttpd2udqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+// CHECK: encoding: [0x62,0xe5,0xfc,0xdf,0x6c,0x72,0x80]
+ vcvttpd2udqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+
+// CHECK: vcvttpd2uqqs xmm22, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x08,0x6c,0xf7]
+ vcvttpd2uqqs xmm22, xmm23
+
+// CHECK: vcvttpd2uqqs xmm22 {k7}, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x0f,0x6c,0xf7]
+ vcvttpd2uqqs xmm22 {k7}, xmm23
+
+// CHECK: vcvttpd2uqqs xmm22 {k7} {z}, xmm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x8f,0x6c,0xf7]
+ vcvttpd2uqqs xmm22 {k7} {z}, xmm23
+
+// CHECK: vcvttpd2uqqs ymm22, ymm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x28,0x6c,0xf7]
+ vcvttpd2uqqs ymm22, ymm23
+
+// CHECK: vcvttpd2uqqs ymm22, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xf9,0x18,0x6c,0xf7]
+ vcvttpd2uqqs ymm22, ymm23, {sae}
+
+// CHECK: vcvttpd2uqqs ymm22 {k7}, ymm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x2f,0x6c,0xf7]
+ vcvttpd2uqqs ymm22 {k7}, ymm23
+
+// CHECK: vcvttpd2uqqs ymm22 {k7} {z}, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xf9,0x9f,0x6c,0xf7]
+ vcvttpd2uqqs ymm22 {k7} {z}, ymm23, {sae}
+
+// CHECK: vcvttpd2uqqs zmm22, zmm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x48,0x6c,0xf7]
+ vcvttpd2uqqs zmm22, zmm23
+
+// CHECK: vcvttpd2uqqs zmm22, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x18,0x6c,0xf7]
+ vcvttpd2uqqs zmm22, zmm23, {sae}
+
+// CHECK: vcvttpd2uqqs zmm22 {k7}, zmm23
+// CHECK: encoding: [0x62,0xa5,0xfd,0x4f,0x6c,0xf7]
+ vcvttpd2uqqs zmm22 {k7}, zmm23
+
+// CHECK: vcvttpd2uqqs zmm22 {k7} {z}, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0xfd,0x9f,0x6c,0xf7]
+ vcvttpd2uqqs zmm22 {k7} {z}, zmm23, {sae}
+
+// CHECK: vcvttpd2uqqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0xfd,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttpd2uqqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0xfd,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttpd2uqqs xmm22, qword ptr [rip]{1to2}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x18,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2uqqs xmm22, qword ptr [rip]{1to2}
+
+// CHECK: vcvttpd2uqqs xmm22, xmmword ptr [2*rbp - 512]
+// CHECK: encoding: [0x62,0xe5,0xfd,0x08,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttpd2uqqs xmm22, xmmword ptr [2*rbp - 512]
+
+// CHECK: vcvttpd2uqqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+// CHECK: encoding: [0x62,0xe5,0xfd,0x8f,0x6c,0x71,0x7f]
+ vcvttpd2uqqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+
+// CHECK: vcvttpd2uqqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x9f,0x6c,0x72,0x80]
+ vcvttpd2uqqs xmm22 {k7} {z}, qword ptr [rdx - 1024]{1to2}
+
+// CHECK: vcvttpd2uqqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0xfd,0x28,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttpd2uqqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0xfd,0x2f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttpd2uqqs ymm22, qword ptr [rip]{1to4}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x38,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2uqqs ymm22, qword ptr [rip]{1to4}
+
+// CHECK: vcvttpd2uqqs ymm22, ymmword ptr [2*rbp - 1024]
+// CHECK: encoding: [0x62,0xe5,0xfd,0x28,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttpd2uqqs ymm22, ymmword ptr [2*rbp - 1024]
+
+// CHECK: vcvttpd2uqqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+// CHECK: encoding: [0x62,0xe5,0xfd,0xaf,0x6c,0x71,0x7f]
+ vcvttpd2uqqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+
+// CHECK: vcvttpd2uqqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xbf,0x6c,0x72,0x80]
+ vcvttpd2uqqs ymm22 {k7} {z}, qword ptr [rdx - 1024]{1to4}
+
+// CHECK: vcvttpd2uqqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0xfd,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttpd2uqqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttpd2uqqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0xfd,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttpd2uqqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttpd2uqqs zmm22, qword ptr [rip]{1to8}
+// CHECK: encoding: [0x62,0xe5,0xfd,0x58,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttpd2uqqs zmm22, qword ptr [rip]{1to8}
+
+// CHECK: vcvttpd2uqqs zmm22, zmmword ptr [2*rbp - 2048]
+// CHECK: encoding: [0x62,0xe5,0xfd,0x48,0x6c,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttpd2uqqs zmm22, zmmword ptr [2*rbp - 2048]
+
+// CHECK: vcvttpd2uqqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+// CHECK: encoding: [0x62,0xe5,0xfd,0xcf,0x6c,0x71,0x7f]
+ vcvttpd2uqqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+
+// CHECK: vcvttpd2uqqs zmm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+// CHECK: encoding: [0x62,0xe5,0xfd,0xdf,0x6c,0x72,0x80]
+ vcvttpd2uqqs zmm22 {k7} {z}, qword ptr [rdx - 1024]{1to8}
+
+// CHECK: vcvttps2dqs xmm22, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x08,0x6d,0xf7]
+ vcvttps2dqs xmm22, xmm23
+
+// CHECK: vcvttps2dqs xmm22 {k7}, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x0f,0x6d,0xf7]
+ vcvttps2dqs xmm22 {k7}, xmm23
+
+// CHECK: vcvttps2dqs xmm22 {k7} {z}, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x8f,0x6d,0xf7]
+ vcvttps2dqs xmm22 {k7} {z}, xmm23
+
+// CHECK: vcvttps2dqs ymm22, ymm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x28,0x6d,0xf7]
+ vcvttps2dqs ymm22, ymm23
+
+// CHECK: vcvttps2dqs ymm22, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x78,0x18,0x6d,0xf7]
+ vcvttps2dqs ymm22, ymm23, {sae}
+
+// CHECK: vcvttps2dqs ymm22 {k7}, ymm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x2f,0x6d,0xf7]
+ vcvttps2dqs ymm22 {k7}, ymm23
+
+// CHECK: vcvttps2dqs ymm22 {k7} {z}, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x78,0x9f,0x6d,0xf7]
+ vcvttps2dqs ymm22 {k7} {z}, ymm23, {sae}
+
+// CHECK: vcvttps2dqs zmm22, zmm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x48,0x6d,0xf7]
+ vcvttps2dqs zmm22, zmm23
+
+// CHECK: vcvttps2dqs zmm22, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x18,0x6d,0xf7]
+ vcvttps2dqs zmm22, zmm23, {sae}
+
+// CHECK: vcvttps2dqs zmm22 {k7}, zmm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x4f,0x6d,0xf7]
+ vcvttps2dqs zmm22 {k7}, zmm23
+
+// CHECK: vcvttps2dqs zmm22 {k7} {z}, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x9f,0x6d,0xf7]
+ vcvttps2dqs zmm22 {k7} {z}, zmm23, {sae}
+
+// CHECK: vcvttps2dqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7c,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2dqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2dqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7c,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2dqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2dqs xmm22, dword ptr [rip]{1to4}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x18,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2dqs xmm22, dword ptr [rip]{1to4}
+
+// CHECK: vcvttps2dqs xmm22, xmmword ptr [2*rbp - 512]
+// CHECK: encoding: [0x62,0xe5,0x7c,0x08,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2dqs xmm22, xmmword ptr [2*rbp - 512]
+
+// CHECK: vcvttps2dqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+// CHECK: encoding: [0x62,0xe5,0x7c,0x8f,0x6d,0x71,0x7f]
+ vcvttps2dqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+
+// CHECK: vcvttps2dqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x9f,0x6d,0x72,0x80]
+ vcvttps2dqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+
+// CHECK: vcvttps2dqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7c,0x28,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2dqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2dqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7c,0x2f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2dqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2dqs ymm22, dword ptr [rip]{1to8}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x38,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2dqs ymm22, dword ptr [rip]{1to8}
+
+// CHECK: vcvttps2dqs ymm22, ymmword ptr [2*rbp - 1024]
+// CHECK: encoding: [0x62,0xe5,0x7c,0x28,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2dqs ymm22, ymmword ptr [2*rbp - 1024]
+
+// CHECK: vcvttps2dqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+// CHECK: encoding: [0x62,0xe5,0x7c,0xaf,0x6d,0x71,0x7f]
+ vcvttps2dqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+
+// CHECK: vcvttps2dqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xbf,0x6d,0x72,0x80]
+ vcvttps2dqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+
+// CHECK: vcvttps2dqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7c,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2dqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2dqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7c,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2dqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2dqs zmm22, dword ptr [rip]{1to16}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x58,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2dqs zmm22, dword ptr [rip]{1to16}
+
+// CHECK: vcvttps2dqs zmm22, zmmword ptr [2*rbp - 2048]
+// CHECK: encoding: [0x62,0xe5,0x7c,0x48,0x6d,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttps2dqs zmm22, zmmword ptr [2*rbp - 2048]
+
+// CHECK: vcvttps2dqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+// CHECK: encoding: [0x62,0xe5,0x7c,0xcf,0x6d,0x71,0x7f]
+ vcvttps2dqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+
+// CHECK: vcvttps2dqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to16}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xdf,0x6d,0x72,0x80]
+ vcvttps2dqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to16}
+
+// CHECK: vcvttps2qqs xmm22, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x08,0x6d,0xf7]
+ vcvttps2qqs xmm22, xmm23
+
+// CHECK: vcvttps2qqs xmm22 {k7}, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x0f,0x6d,0xf7]
+ vcvttps2qqs xmm22 {k7}, xmm23
+
+// CHECK: vcvttps2qqs xmm22 {k7} {z}, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x8f,0x6d,0xf7]
+ vcvttps2qqs xmm22 {k7} {z}, xmm23
+
+// CHECK: vcvttps2qqs ymm22, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x28,0x6d,0xf7]
+ vcvttps2qqs ymm22, xmm23
+
+// CHECK: vcvttps2qqs ymm22, xmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x79,0x18,0x6d,0xf7]
+ vcvttps2qqs ymm22, xmm23, {sae}
+
+// CHECK: vcvttps2qqs ymm22 {k7}, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x2f,0x6d,0xf7]
+ vcvttps2qqs ymm22 {k7}, xmm23
+
+// CHECK: vcvttps2qqs ymm22 {k7} {z}, xmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x79,0x9f,0x6d,0xf7]
+ vcvttps2qqs ymm22 {k7} {z}, xmm23, {sae}
+
+// CHECK: vcvttps2qqs zmm22, ymm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x48,0x6d,0xf7]
+ vcvttps2qqs zmm22, ymm23
+
+// CHECK: vcvttps2qqs zmm22, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x18,0x6d,0xf7]
+ vcvttps2qqs zmm22, ymm23, {sae}
+
+// CHECK: vcvttps2qqs zmm22 {k7}, ymm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x4f,0x6d,0xf7]
+ vcvttps2qqs zmm22 {k7}, ymm23
+
+// CHECK: vcvttps2qqs zmm22 {k7} {z}, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x9f,0x6d,0xf7]
+ vcvttps2qqs zmm22 {k7} {z}, ymm23, {sae}
+
+// CHECK: vcvttps2qqs xmm22, qword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7d,0x08,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2qqs xmm22, qword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2qqs xmm22 {k7}, qword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7d,0x0f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2qqs xmm22 {k7}, qword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2qqs xmm22, dword ptr [rip]{1to2}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x18,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2qqs xmm22, dword ptr [rip]{1to2}
+
+// CHECK: vcvttps2qqs xmm22, qword ptr [2*rbp - 256]
+// CHECK: encoding: [0x62,0xe5,0x7d,0x08,0x6d,0x34,0x6d,0x00,0xff,0xff,0xff]
+ vcvttps2qqs xmm22, qword ptr [2*rbp - 256]
+
+// CHECK: vcvttps2qqs xmm22 {k7} {z}, qword ptr [rcx + 1016]
+// CHECK: encoding: [0x62,0xe5,0x7d,0x8f,0x6d,0x71,0x7f]
+ vcvttps2qqs xmm22 {k7} {z}, qword ptr [rcx + 1016]
+
+// CHECK: vcvttps2qqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to2}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x9f,0x6d,0x72,0x80]
+ vcvttps2qqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to2}
+
+// CHECK: vcvttps2qqs ymm22, xmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7d,0x28,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2qqs ymm22, xmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2qqs ymm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7d,0x2f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2qqs ymm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2qqs ymm22, dword ptr [rip]{1to4}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x38,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2qqs ymm22, dword ptr [rip]{1to4}
+
+// CHECK: vcvttps2qqs ymm22, xmmword ptr [2*rbp - 512]
+// CHECK: encoding: [0x62,0xe5,0x7d,0x28,0x6d,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2qqs ymm22, xmmword ptr [2*rbp - 512]
+
+// CHECK: vcvttps2qqs ymm22 {k7} {z}, xmmword ptr [rcx + 2032]
+// CHECK: encoding: [0x62,0xe5,0x7d,0xaf,0x6d,0x71,0x7f]
+ vcvttps2qqs ymm22 {k7} {z}, xmmword ptr [rcx + 2032]
+
+// CHECK: vcvttps2qqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xbf,0x6d,0x72,0x80]
+ vcvttps2qqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+
+// CHECK: vcvttps2qqs zmm22, ymmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7d,0x48,0x6d,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2qqs zmm22, ymmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2qqs zmm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7d,0x4f,0x6d,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2qqs zmm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2qqs zmm22, dword ptr [rip]{1to8}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x58,0x6d,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2qqs zmm22, dword ptr [rip]{1to8}
+
+// CHECK: vcvttps2qqs zmm22, ymmword ptr [2*rbp - 1024]
+// CHECK: encoding: [0x62,0xe5,0x7d,0x48,0x6d,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2qqs zmm22, ymmword ptr [2*rbp - 1024]
+
+// CHECK: vcvttps2qqs zmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+// CHECK: encoding: [0x62,0xe5,0x7d,0xcf,0x6d,0x71,0x7f]
+ vcvttps2qqs zmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+
+// CHECK: vcvttps2qqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xdf,0x6d,0x72,0x80]
+ vcvttps2qqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+
+// CHECK: vcvttps2udqs xmm22, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x08,0x6c,0xf7]
+ vcvttps2udqs xmm22, xmm23
+
+// CHECK: vcvttps2udqs xmm22 {k7}, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x0f,0x6c,0xf7]
+ vcvttps2udqs xmm22 {k7}, xmm23
+
+// CHECK: vcvttps2udqs xmm22 {k7} {z}, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x8f,0x6c,0xf7]
+ vcvttps2udqs xmm22 {k7} {z}, xmm23
+
+// CHECK: vcvttps2udqs ymm22, ymm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x28,0x6c,0xf7]
+ vcvttps2udqs ymm22, ymm23
+
+// CHECK: vcvttps2udqs ymm22, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x78,0x18,0x6c,0xf7]
+ vcvttps2udqs ymm22, ymm23, {sae}
+
+// CHECK: vcvttps2udqs ymm22 {k7}, ymm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x2f,0x6c,0xf7]
+ vcvttps2udqs ymm22 {k7}, ymm23
+
+// CHECK: vcvttps2udqs ymm22 {k7} {z}, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x78,0x9f,0x6c,0xf7]
+ vcvttps2udqs ymm22 {k7} {z}, ymm23, {sae}
+
+// CHECK: vcvttps2udqs zmm22, zmm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x48,0x6c,0xf7]
+ vcvttps2udqs zmm22, zmm23
+
+// CHECK: vcvttps2udqs zmm22, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x18,0x6c,0xf7]
+ vcvttps2udqs zmm22, zmm23, {sae}
+
+// CHECK: vcvttps2udqs zmm22 {k7}, zmm23
+// CHECK: encoding: [0x62,0xa5,0x7c,0x4f,0x6c,0xf7]
+ vcvttps2udqs zmm22 {k7}, zmm23
+
+// CHECK: vcvttps2udqs zmm22 {k7} {z}, zmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x7c,0x9f,0x6c,0xf7]
+ vcvttps2udqs zmm22 {k7} {z}, zmm23, {sae}
+
+// CHECK: vcvttps2udqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7c,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2udqs xmm22, xmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2udqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7c,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2udqs xmm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2udqs xmm22, dword ptr [rip]{1to4}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x18,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2udqs xmm22, dword ptr [rip]{1to4}
+
+// CHECK: vcvttps2udqs xmm22, xmmword ptr [2*rbp - 512]
+// CHECK: encoding: [0x62,0xe5,0x7c,0x08,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2udqs xmm22, xmmword ptr [2*rbp - 512]
+
+// CHECK: vcvttps2udqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+// CHECK: encoding: [0x62,0xe5,0x7c,0x8f,0x6c,0x71,0x7f]
+ vcvttps2udqs xmm22 {k7} {z}, xmmword ptr [rcx + 2032]
+
+// CHECK: vcvttps2udqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x9f,0x6c,0x72,0x80]
+ vcvttps2udqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+
+// CHECK: vcvttps2udqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7c,0x28,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2udqs ymm22, ymmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2udqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7c,0x2f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2udqs ymm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2udqs ymm22, dword ptr [rip]{1to8}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x38,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2udqs ymm22, dword ptr [rip]{1to8}
+
+// CHECK: vcvttps2udqs ymm22, ymmword ptr [2*rbp - 1024]
+// CHECK: encoding: [0x62,0xe5,0x7c,0x28,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2udqs ymm22, ymmword ptr [2*rbp - 1024]
+
+// CHECK: vcvttps2udqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+// CHECK: encoding: [0x62,0xe5,0x7c,0xaf,0x6c,0x71,0x7f]
+ vcvttps2udqs ymm22 {k7} {z}, ymmword ptr [rcx + 4064]
+
+// CHECK: vcvttps2udqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xbf,0x6c,0x72,0x80]
+ vcvttps2udqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+
+// CHECK: vcvttps2udqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7c,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2udqs zmm22, zmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2udqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7c,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2udqs zmm22 {k7}, zmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2udqs zmm22, dword ptr [rip]{1to16}
+// CHECK: encoding: [0x62,0xe5,0x7c,0x58,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2udqs zmm22, dword ptr [rip]{1to16}
+
+// CHECK: vcvttps2udqs zmm22, zmmword ptr [2*rbp - 2048]
+// CHECK: encoding: [0x62,0xe5,0x7c,0x48,0x6c,0x34,0x6d,0x00,0xf8,0xff,0xff]
+ vcvttps2udqs zmm22, zmmword ptr [2*rbp - 2048]
+
+// CHECK: vcvttps2udqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+// CHECK: encoding: [0x62,0xe5,0x7c,0xcf,0x6c,0x71,0x7f]
+ vcvttps2udqs zmm22 {k7} {z}, zmmword ptr [rcx + 8128]
+
+// CHECK: vcvttps2udqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to16}
+// CHECK: encoding: [0x62,0xe5,0x7c,0xdf,0x6c,0x72,0x80]
+ vcvttps2udqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to16}
+
+// CHECK: vcvttps2uqqs xmm22, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x08,0x6c,0xf7]
+ vcvttps2uqqs xmm22, xmm23
+
+// CHECK: vcvttps2uqqs xmm22 {k7}, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x0f,0x6c,0xf7]
+ vcvttps2uqqs xmm22 {k7}, xmm23
+
+// CHECK: vcvttps2uqqs xmm22 {k7} {z}, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x8f,0x6c,0xf7]
+ vcvttps2uqqs xmm22 {k7} {z}, xmm23
+
+// CHECK: vcvttps2uqqs ymm22, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x28,0x6c,0xf7]
+ vcvttps2uqqs ymm22, xmm23
+
+// CHECK: vcvttps2uqqs ymm22, xmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x79,0x18,0x6c,0xf7]
+ vcvttps2uqqs ymm22, xmm23, {sae}
+
+// CHECK: vcvttps2uqqs ymm22 {k7}, xmm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x2f,0x6c,0xf7]
+ vcvttps2uqqs ymm22 {k7}, xmm23
+
+// CHECK: vcvttps2uqqs ymm22 {k7} {z}, xmm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x79,0x9f,0x6c,0xf7]
+ vcvttps2uqqs ymm22 {k7} {z}, xmm23, {sae}
+
+// CHECK: vcvttps2uqqs zmm22, ymm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x48,0x6c,0xf7]
+ vcvttps2uqqs zmm22, ymm23
+
+// CHECK: vcvttps2uqqs zmm22, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x18,0x6c,0xf7]
+ vcvttps2uqqs zmm22, ymm23, {sae}
+
+// CHECK: vcvttps2uqqs zmm22 {k7}, ymm23
+// CHECK: encoding: [0x62,0xa5,0x7d,0x4f,0x6c,0xf7]
+ vcvttps2uqqs zmm22 {k7}, ymm23
+
+// CHECK: vcvttps2uqqs zmm22 {k7} {z}, ymm23, {sae}
+// CHECK: encoding: [0x62,0xa5,0x7d,0x9f,0x6c,0xf7]
+ vcvttps2uqqs zmm22 {k7} {z}, ymm23, {sae}
+
+// CHECK: vcvttps2uqqs xmm22, qword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7d,0x08,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs xmm22, qword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2uqqs xmm22 {k7}, qword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7d,0x0f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs xmm22 {k7}, qword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2uqqs xmm22, dword ptr [rip]{1to2}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x18,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2uqqs xmm22, dword ptr [rip]{1to2}
+
+// CHECK: vcvttps2uqqs xmm22, qword ptr [2*rbp - 256]
+// CHECK: encoding: [0x62,0xe5,0x7d,0x08,0x6c,0x34,0x6d,0x00,0xff,0xff,0xff]
+ vcvttps2uqqs xmm22, qword ptr [2*rbp - 256]
+
+// CHECK: vcvttps2uqqs xmm22 {k7} {z}, qword ptr [rcx + 1016]
+// CHECK: encoding: [0x62,0xe5,0x7d,0x8f,0x6c,0x71,0x7f]
+ vcvttps2uqqs xmm22 {k7} {z}, qword ptr [rcx + 1016]
+
+// CHECK: vcvttps2uqqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to2}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x9f,0x6c,0x72,0x80]
+ vcvttps2uqqs xmm22 {k7} {z}, dword ptr [rdx - 512]{1to2}
+
+// CHECK: vcvttps2uqqs ymm22, xmmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7d,0x28,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs ymm22, xmmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2uqqs ymm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7d,0x2f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs ymm22 {k7}, xmmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2uqqs ymm22, dword ptr [rip]{1to4}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x38,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2uqqs ymm22, dword ptr [rip]{1to4}
+
+// CHECK: vcvttps2uqqs ymm22, xmmword ptr [2*rbp - 512]
+// CHECK: encoding: [0x62,0xe5,0x7d,0x28,0x6c,0x34,0x6d,0x00,0xfe,0xff,0xff]
+ vcvttps2uqqs ymm22, xmmword ptr [2*rbp - 512]
+
+// CHECK: vcvttps2uqqs ymm22 {k7} {z}, xmmword ptr [rcx + 2032]
+// CHECK: encoding: [0x62,0xe5,0x7d,0xaf,0x6c,0x71,0x7f]
+ vcvttps2uqqs ymm22 {k7} {z}, xmmword ptr [rcx + 2032]
+
+// CHECK: vcvttps2uqqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xbf,0x6c,0x72,0x80]
+ vcvttps2uqqs ymm22 {k7} {z}, dword ptr [rdx - 512]{1to4}
+
+// CHECK: vcvttps2uqqs zmm22, ymmword ptr [rbp + 8*r14 + 268435456]
+// CHECK: encoding: [0x62,0xa5,0x7d,0x48,0x6c,0xb4,0xf5,0x00,0x00,0x00,0x10]
+ vcvttps2uqqs zmm22, ymmword ptr [rbp + 8*r14 + 268435456]
+
+// CHECK: vcvttps2uqqs zmm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+// CHECK: encoding: [0x62,0xc5,0x7d,0x4f,0x6c,0xb4,0x80,0x23,0x01,0x00,0x00]
+ vcvttps2uqqs zmm22 {k7}, ymmword ptr [r8 + 4*rax + 291]
+
+// CHECK: vcvttps2uqqs zmm22, dword ptr [rip]{1to8}
+// CHECK: encoding: [0x62,0xe5,0x7d,0x58,0x6c,0x35,0x00,0x00,0x00,0x00]
+ vcvttps2uqqs zmm22, dword ptr [rip]{1to8}
+
+// CHECK: vcvttps2uqqs zmm22, ymmword ptr [2*rbp - 1024]
+// CHECK: encoding: [0x62,0xe5,0x7d,0x48,0x6c,0x34,0x6d,0x00,0xfc,0xff,0xff]
+ vcvttps2uqqs zmm22, ymmword ptr [2*rbp - 1024]
+
+// CHECK: vcvttps2uqqs zmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+// CHECK: encoding: [0x62,0xe5,0x7d,0xcf,0x6c,0x71,0x7f]
+ vcvttps2uqqs zmm22 {k7} {z}, ymmword ptr [rcx + 4064]
+
+// CHECK: vcvttps2uqqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+// CHECK: encoding: [0x62,0xe5,0x7d,0xdf,0x6c,0x72,0x80]
+ vcvttps2uqqs zmm22 {k7} {z}, dword ptr [rdx - 512]{1to8}
+
diff --git a/llvm/test/TableGen/x86-fold-tables.inc b/llvm/test/TableGen/x86-fold-tables.inc
index 523db92bc543ea..49fd2be3c6064a 100644
--- a/llvm/test/TableGen/x86-fold-tables.inc
+++ b/llvm/test/TableGen/x86-fold-tables.inc
@@ -1324,17 +1324,29 @@ static const X86FoldTableEntry Table1[] = {
{X86::VCVTTNEBF162IUBSZ128rr, X86::VCVTTNEBF162IUBSZ128rm, 0},
{X86::VCVTTNEBF162IUBSZ256rr, X86::VCVTTNEBF162IUBSZ256rm, 0},
{X86::VCVTTNEBF162IUBSZrr, X86::VCVTTNEBF162IUBSZrm, 0},
+ {X86::VCVTTPD2DQSZ128rr, X86::VCVTTPD2DQSZ128rm, 0},
+ {X86::VCVTTPD2DQSZ256rr, X86::VCVTTPD2DQSZ256rm, 0},
+ {X86::VCVTTPD2DQSZrr, X86::VCVTTPD2DQSZrm, 0},
{X86::VCVTTPD2DQYrr, X86::VCVTTPD2DQYrm, 0},
{X86::VCVTTPD2DQZ128rr, X86::VCVTTPD2DQZ128rm, 0},
{X86::VCVTTPD2DQZ256rr, X86::VCVTTPD2DQZ256rm, 0},
{X86::VCVTTPD2DQZrr, X86::VCVTTPD2DQZrm, 0},
{X86::VCVTTPD2DQrr, X86::VCVTTPD2DQrm, 0},
+ {X86::VCVTTPD2QQSZ128rr, X86::VCVTTPD2QQSZ128rm, 0},
+ {X86::VCVTTPD2QQSZ256rr, X86::VCVTTPD2QQSZ256rm, 0},
+ {X86::VCVTTPD2QQSZrr, X86::VCVTTPD2QQSZrm, 0},
{X86::VCVTTPD2QQZ128rr, X86::VCVTTPD2QQZ128rm, 0},
{X86::VCVTTPD2QQZ256rr, X86::VCVTTPD2QQZ256rm, 0},
{X86::VCVTTPD2QQZrr, X86::VCVTTPD2QQZrm, 0},
+ {X86::VCVTTPD2UDQSZ128rr, X86::VCVTTPD2UDQSZ128rm, 0},
+ {X86::VCVTTPD2UDQSZ256rr, X86::VCVTTPD2UDQSZ256rm, 0},
+ {X86::VCVTTPD2UDQSZrr, X86::VCVTTPD2UDQSZrm, 0},
{X86::VCVTTPD2UDQZ128rr, X86::VCVTTPD2UDQZ128rm, 0},
{X86::VCVTTPD2UDQZ256rr, X86::VCVTTPD2UDQZ256rm, 0},
{X86::VCVTTPD2UDQZrr, X86::VCVTTPD2UDQZrm, 0},
+ {X86::VCVTTPD2UQQSZ128rr, X86::VCVTTPD2UQQSZ128rm, 0},
+ {X86::VCVTTPD2UQQSZ256rr, X86::VCVTTPD2UQQSZ256rm, 0},
+ {X86::VCVTTPD2UQQSZrr, X86::VCVTTPD2UQQSZrm, 0},
{X86::VCVTTPD2UQQZ128rr, X86::VCVTTPD2UQQZ128rm, 0},
{X86::VCVTTPD2UQQZ256rr, X86::VCVTTPD2UQQZ256rm, 0},
{X86::VCVTTPD2UQQZrr, X86::VCVTTPD2UQQZrm, 0},
@@ -1362,6 +1374,9 @@ static const X86FoldTableEntry Table1[] = {
{X86::VCVTTPH2WZ128rr, X86::VCVTTPH2WZ128rm, 0},
{X86::VCVTTPH2WZ256rr, X86::VCVTTPH2WZ256rm, 0},
{X86::VCVTTPH2WZrr, X86::VCVTTPH2WZrm, 0},
+ {X86::VCVTTPS2DQSZ128rr, X86::VCVTTPS2DQSZ128rm, 0},
+ {X86::VCVTTPS2DQSZ256rr, X86::VCVTTPS2DQSZ256rm, 0},
+ {X86::VCVTTPS2DQSZrr, X86::VCVTTPS2DQSZrm, 0},
{X86::VCVTTPS2DQYrr, X86::VCVTTPS2DQYrm, 0},
{X86::VCVTTPS2DQZ128rr, X86::VCVTTPS2DQZ128rm, 0},
{X86::VCVTTPS2DQZ256rr, X86::VCVTTPS2DQZ256rm, 0},
@@ -1373,25 +1388,42 @@ static const X86FoldTableEntry Table1[] = {
{X86::VCVTTPS2IUBSZ128rr, X86::VCVTTPS2IUBSZ128rm, 0},
{X86::VCVTTPS2IUBSZ256rr, X86::VCVTTPS2IUBSZ256rm, 0},
{X86::VCVTTPS2IUBSZrr, X86::VCVTTPS2IUBSZrm, 0},
+ {X86::VCVTTPS2QQSZ128rr, X86::VCVTTPS2QQSZ128rm, TB_NO_REVERSE},
+ {X86::VCVTTPS2QQSZ256rr, X86::VCVTTPS2QQSZ256rm, 0},
+ {X86::VCVTTPS2QQSZrr, X86::VCVTTPS2QQSZrm, 0},
{X86::VCVTTPS2QQZ128rr, X86::VCVTTPS2QQZ128rm, TB_NO_REVERSE},
{X86::VCVTTPS2QQZ256rr, X86::VCVTTPS2QQZ256rm, 0},
{X86::VCVTTPS2QQZrr, X86::VCVTTPS2QQZrm, 0},
+ {X86::VCVTTPS2UDQSZ128rr, X86::VCVTTPS2UDQSZ128rm, 0},
+ {X86::VCVTTPS2UDQSZ256rr, X86::VCVTTPS2UDQSZ256rm, 0},
+ {X86::VCVTTPS2UDQSZrr, X86::VCVTTPS2UDQSZrm, 0},
{X86::VCVTTPS2UDQZ128rr, X86::VCVTTPS2UDQZ128rm, 0},
{X86::VCVTTPS2UDQZ256rr, X86::VCVTTPS2UDQZ256rm, 0},
{X86::VCVTTPS2UDQZrr, X86::VCVTTPS2UDQZrm, 0},
+ {X86::VCVTTPS2UQQSZ128rr, X86::VCVTTPS2UQQSZ128rm, TB_NO_REVERSE},
+ {X86::VCVTTPS2UQQSZ256rr, X86::VCVTTPS2UQQSZ256rm, 0},
+ {X86::VCVTTPS2UQQSZrr, X86::VCVTTPS2UQQSZrm, 0},
{X86::VCVTTPS2UQQZ128rr, X86::VCVTTPS2UQQZ128rm, TB_NO_REVERSE},
{X86::VCVTTPS2UQQZ256rr, X86::VCVTTPS2UQQZ256rm, 0},
{X86::VCVTTPS2UQQZrr, X86::VCVTTPS2UQQZrm, 0},
+ {X86::VCVTTSD2SI64Srr, X86::VCVTTSD2SI64Srm, 0},
+ {X86::VCVTTSD2SI64Srr_Int, X86::VCVTTSD2SI64Srm_Int, TB_NO_REVERSE},
{X86::VCVTTSD2SI64Zrr, X86::VCVTTSD2SI64Zrm, 0},
{X86::VCVTTSD2SI64Zrr_Int, X86::VCVTTSD2SI64Zrm_Int, TB_NO_REVERSE},
{X86::VCVTTSD2SI64rr, X86::VCVTTSD2SI64rm, 0},
{X86::VCVTTSD2SI64rr_Int, X86::VCVTTSD2SI64rm_Int, TB_NO_REVERSE},
+ {X86::VCVTTSD2SISrr, X86::VCVTTSD2SISrm, 0},
+ {X86::VCVTTSD2SISrr_Int, X86::VCVTTSD2SISrm_Int, TB_NO_REVERSE},
{X86::VCVTTSD2SIZrr, X86::VCVTTSD2SIZrm, 0},
{X86::VCVTTSD2SIZrr_Int, X86::VCVTTSD2SIZrm_Int, TB_NO_REVERSE},
{X86::VCVTTSD2SIrr, X86::VCVTTSD2SIrm, 0},
{X86::VCVTTSD2SIrr_Int, X86::VCVTTSD2SIrm_Int, TB_NO_REVERSE},
+ {X86::VCVTTSD2USI64Srr, X86::VCVTTSD2USI64Srm, 0},
+ {X86::VCVTTSD2USI64Srr_Int, X86::VCVTTSD2USI64Srm_Int, TB_NO_REVERSE},
{X86::VCVTTSD2USI64Zrr, X86::VCVTTSD2USI64Zrm, 0},
{X86::VCVTTSD2USI64Zrr_Int, X86::VCVTTSD2USI64Zrm_Int, TB_NO_REVERSE},
+ {X86::VCVTTSD2USISrr, X86::VCVTTSD2USISrm, 0},
+ {X86::VCVTTSD2USISrr_Int, X86::VCVTTSD2USISrm_Int, TB_NO_REVERSE},
{X86::VCVTTSD2USIZrr, X86::VCVTTSD2USIZrm, 0},
{X86::VCVTTSD2USIZrr_Int, X86::VCVTTSD2USIZrm_Int, TB_NO_REVERSE},
{X86::VCVTTSH2SI64Zrr, X86::VCVTTSH2SI64Zrm, 0},
@@ -1402,16 +1434,24 @@ static const X86FoldTableEntry Table1[] = {
{X86::VCVTTSH2USI64Zrr_Int, X86::VCVTTSH2USI64Zrm_Int, TB_NO_REVERSE},
{X86::VCVTTSH2USIZrr, X86::VCVTTSH2USIZrm, 0},
{X86::VCVTTSH2USIZrr_Int, X86::VCVTTSH2USIZrm_Int, TB_NO_REVERSE},
+ {X86::VCVTTSS2SI64Srr, X86::VCVTTSS2SI64Srm, 0},
+ {X86::VCVTTSS2SI64Srr_Int, X86::VCVTTSS2SI64Srm_Int, TB_NO_REVERSE},
{X86::VCVTTSS2SI64Zrr, X86::VCVTTSS2SI64Zrm, 0},
{X86::VCVTTSS2SI64Zrr_Int, X86::VCVTTSS2SI64Zrm_Int, TB_NO_REVERSE},
{X86::VCVTTSS2SI64rr, X86::VCVTTSS2SI64rm, 0},
{X86::VCVTTSS2SI64rr_Int, X86::VCVTTSS2SI64rm_Int, TB_NO_REVERSE},
+ {X86::VCVTTSS2SISrr, X86::VCVTTSS2SISrm, 0},
+ {X86::VCVTTSS2SISrr_Int, X86::VCVTTSS2SISrm_Int, TB_NO_REVERSE},
{X86::VCVTTSS2SIZrr, X86::VCVTTSS2SIZrm, 0},
{X86::VCVTTSS2SIZrr_Int, X86::VCVTTSS2SIZrm_Int, TB_NO_REVERSE},
{X86::VCVTTSS2SIrr, X86::VCVTTSS2SIrm, 0},
{X86::VCVTTSS2SIrr_Int, X86::VCVTTSS2SIrm_Int, TB_NO_REVERSE},
+ {X86::VCVTTSS2USI64Srr, X86::VCVTTSS2USI64Srm, 0},
+ {X86::VCVTTSS2USI64Srr_Int, X86::VCVTTSS2USI64Srm_Int, TB_NO_REVERSE},
{X86::VCVTTSS2USI64Zrr, X86::VCVTTSS2USI64Zrm, 0},
{X86::VCVTTSS2USI64Zrr_Int, X86::VCVTTSS2USI64Zrm_Int, TB_NO_REVERSE},
+ {X86::VCVTTSS2USISrr, X86::VCVTTSS2USISrm, 0},
+ {X86::VCVTTSS2USISrr_Int, X86::VCVTTSS2USISrm_Int, TB_NO_REVERSE},
{X86::VCVTTSS2USIZrr, X86::VCVTTSS2USIZrm, 0},
{X86::VCVTTSS2USIZrr_Int, X86::VCVTTSS2USIZrm_Int, TB_NO_REVERSE},
{X86::VCVTUDQ2PDZ128rr, X86::VCVTUDQ2PDZ128rm, TB_NO_REVERSE},
@@ -2587,15 +2627,27 @@ static const X86FoldTableEntry Table2[] = {
{X86::VCVTTNEBF162IUBSZ128rrkz, X86::VCVTTNEBF162IUBSZ128rmkz, 0},
{X86::VCVTTNEBF162IUBSZ256rrkz, X86::VCVTTNEBF162IUBSZ256rmkz, 0},
{X86::VCVTTNEBF162IUBSZrrkz, X86::VCVTTNEBF162IUBSZrmkz, 0},
+ {X86::VCVTTPD2DQSZ128rrkz, X86::VCVTTPD2DQSZ128rmkz, 0},
+ {X86::VCVTTPD2DQSZ256rrkz, X86::VCVTTPD2DQSZ256rmkz, 0},
+ {X86::VCVTTPD2DQSZrrkz, X86::VCVTTPD2DQSZrmkz, 0},
{X86::VCVTTPD2DQZ128rrkz, X86::VCVTTPD2DQZ128rmkz, 0},
{X86::VCVTTPD2DQZ256rrkz, X86::VCVTTPD2DQZ256rmkz, 0},
{X86::VCVTTPD2DQZrrkz, X86::VCVTTPD2DQZrmkz, 0},
+ {X86::VCVTTPD2QQSZ128rrkz, X86::VCVTTPD2QQSZ128rmkz, 0},
+ {X86::VCVTTPD2QQSZ256rrkz, X86::VCVTTPD2QQSZ256rmkz, 0},
+ {X86::VCVTTPD2QQSZrrkz, X86::VCVTTPD2QQSZrmkz, 0},
{X86::VCVTTPD2QQZ128rrkz, X86::VCVTTPD2QQZ128rmkz, 0},
{X86::VCVTTPD2QQZ256rrkz, X86::VCVTTPD2QQZ256rmkz, 0},
{X86::VCVTTPD2QQZrrkz, X86::VCVTTPD2QQZrmkz, 0},
+ {X86::VCVTTPD2UDQSZ128rrkz, X86::VCVTTPD2UDQSZ128rmkz, 0},
+ {X86::VCVTTPD2UDQSZ256rrkz, X86::VCVTTPD2UDQSZ256rmkz, 0},
+ {X86::VCVTTPD2UDQSZrrkz, X86::VCVTTPD2UDQSZrmkz, 0},
{X86::VCVTTPD2UDQZ128rrkz, X86::VCVTTPD2UDQZ128rmkz, 0},
{X86::VCVTTPD2UDQZ256rrkz, X86::VCVTTPD2UDQZ256rmkz, 0},
{X86::VCVTTPD2UDQZrrkz, X86::VCVTTPD2UDQZrmkz, 0},
+ {X86::VCVTTPD2UQQSZ128rrkz, X86::VCVTTPD2UQQSZ128rmkz, 0},
+ {X86::VCVTTPD2UQQSZ256rrkz, X86::VCVTTPD2UQQSZ256rmkz, 0},
+ {X86::VCVTTPD2UQQSZrrkz, X86::VCVTTPD2UQQSZrmkz, 0},
{X86::VCVTTPD2UQQZ128rrkz, X86::VCVTTPD2UQQZ128rmkz, 0},
{X86::VCVTTPD2UQQZ256rrkz, X86::VCVTTPD2UQQZ256rmkz, 0},
{X86::VCVTTPD2UQQZrrkz, X86::VCVTTPD2UQQZrmkz, 0},
@@ -2623,6 +2675,9 @@ static const X86FoldTableEntry Table2[] = {
{X86::VCVTTPH2WZ128rrkz, X86::VCVTTPH2WZ128rmkz, 0},
{X86::VCVTTPH2WZ256rrkz, X86::VCVTTPH2WZ256rmkz, 0},
{X86::VCVTTPH2WZrrkz, X86::VCVTTPH2WZrmkz, 0},
+ {X86::VCVTTPS2DQSZ128rrkz, X86::VCVTTPS2DQSZ128rmkz, 0},
+ {X86::VCVTTPS2DQSZ256rrkz, X86::VCVTTPS2DQSZ256rmkz, 0},
+ {X86::VCVTTPS2DQSZrrkz, X86::VCVTTPS2DQSZrmkz, 0},
{X86::VCVTTPS2DQZ128rrkz, X86::VCVTTPS2DQZ128rmkz, 0},
{X86::VCVTTPS2DQZ256rrkz, X86::VCVTTPS2DQZ256rmkz, 0},
{X86::VCVTTPS2DQZrrkz, X86::VCVTTPS2DQZrmkz, 0},
@@ -2632,12 +2687,21 @@ static const X86FoldTableEntry Table2[] = {
{X86::VCVTTPS2IUBSZ128rrkz, X86::VCVTTPS2IUBSZ128rmkz, 0},
{X86::VCVTTPS2IUBSZ256rrkz, X86::VCVTTPS2IUBSZ256rmkz, 0},
{X86::VCVTTPS2IUBSZrrkz, X86::VCVTTPS2IUBSZrmkz, 0},
+ {X86::VCVTTPS2QQSZ128rrkz, X86::VCVTTPS2QQSZ128rmkz, TB_NO_REVERSE},
+ {X86::VCVTTPS2QQSZ256rrkz, X86::VCVTTPS2QQSZ256rmkz, 0},
+ {X86::VCVTTPS2QQSZrrkz, X86::VCVTTPS2QQSZrmkz, 0},
{X86::VCVTTPS2QQZ128rrkz, X86::VCVTTPS2QQZ128rmkz, TB_NO_REVERSE},
{X86::VCVTTPS2QQZ256rrkz, X86::VCVTTPS2QQZ256rmkz, 0},
{X86::VCVTTPS2QQZrrkz, X86::VCVTTPS2QQZrmkz, 0},
+ {X86::VCVTTPS2UDQSZ128rrkz, X86::VCVTTPS2UDQSZ128rmkz, 0},
+ {X86::VCVTTPS2UDQSZ256rrkz, X86::VCVTTPS2UDQSZ256rmkz, 0},
+ {X86::VCVTTPS2UDQSZrrkz, X86::VCVTTPS2UDQSZrmkz, 0},
{X86::VCVTTPS2UDQZ128rrkz, X86::VCVTTPS2UDQZ128rmkz, 0},
{X86::VCVTTPS2UDQZ256rrkz, X86::VCVTTPS2UDQZ256rmkz, 0},
{X86::VCVTTPS2UDQZrrkz, X86::VCVTTPS2UDQZrmkz, 0},
+ {X86::VCVTTPS2UQQSZ128rrkz, X86::VCVTTPS2UQQSZ128rmkz, TB_NO_REVERSE},
+ {X86::VCVTTPS2UQQSZ256rrkz, X86::VCVTTPS2UQQSZ256rmkz, 0},
+ {X86::VCVTTPS2UQQSZrrkz, X86::VCVTTPS2UQQSZrmkz, 0},
{X86::VCVTTPS2UQQZ128rrkz, X86::VCVTTPS2UQQZ128rmkz, TB_NO_REVERSE},
{X86::VCVTTPS2UQQZ256rrkz, X86::VCVTTPS2UQQZ256rmkz, 0},
{X86::VCVTTPS2UQQZrrkz, X86::VCVTTPS2UQQZrmkz, 0},
@@ -4187,15 +4251,27 @@ static const X86FoldTableEntry Table3[] = {
{X86::VCVTTNEBF162IUBSZ128rrk, X86::VCVTTNEBF162IUBSZ128rmk, 0},
{X86::VCVTTNEBF162IUBSZ256rrk, X86::VCVTTNEBF162IUBSZ256rmk, 0},
{X86::VCVTTNEBF162IUBSZrrk, X86::VCVTTNEBF162IUBSZrmk, 0},
+ {X86::VCVTTPD2DQSZ128rrk, X86::VCVTTPD2DQSZ128rmk, 0},
+ {X86::VCVTTPD2DQSZ256rrk, X86::VCVTTPD2DQSZ256rmk, 0},
+ {X86::VCVTTPD2DQSZrrk, X86::VCVTTPD2DQSZrmk, 0},
{X86::VCVTTPD2DQZ128rrk, X86::VCVTTPD2DQZ128rmk, 0},
{X86::VCVTTPD2DQZ256rrk, X86::VCVTTPD2DQZ256rmk, 0},
{X86::VCVTTPD2DQZrrk, X86::VCVTTPD2DQZrmk, 0},
+ {X86::VCVTTPD2QQSZ128rrk, X86::VCVTTPD2QQSZ128rmk, 0},
+ {X86::VCVTTPD2QQSZ256rrk, X86::VCVTTPD2QQSZ256rmk, 0},
+ {X86::VCVTTPD2QQSZrrk, X86::VCVTTPD2QQSZrmk, 0},
{X86::VCVTTPD2QQZ128rrk, X86::VCVTTPD2QQZ128rmk, 0},
{X86::VCVTTPD2QQZ256rrk, X86::VCVTTPD2QQZ256rmk, 0},
{X86::VCVTTPD2QQZrrk, X86::VCVTTPD2QQZrmk, 0},
+ {X86::VCVTTPD2UDQSZ128rrk, X86::VCVTTPD2UDQSZ128rmk, 0},
+ {X86::VCVTTPD2UDQSZ256rrk, X86::VCVTTPD2UDQSZ256rmk, 0},
+ {X86::VCVTTPD2UDQSZrrk, X86::VCVTTPD2UDQSZrmk, 0},
{X86::VCVTTPD2UDQZ128rrk, X86::VCVTTPD2UDQZ128rmk, 0},
{X86::VCVTTPD2UDQZ256rrk, X86::VCVTTPD2UDQZ256rmk, 0},
{X86::VCVTTPD2UDQZrrk, X86::VCVTTPD2UDQZrmk, 0},
+ {X86::VCVTTPD2UQQSZ128rrk, X86::VCVTTPD2UQQSZ128rmk, 0},
+ {X86::VCVTTPD2UQQSZ256rrk, X86::VCVTTPD2UQQSZ256rmk, 0},
+ {X86::VCVTTPD2UQQSZrrk, X86::VCVTTPD2UQQSZrmk, 0},
{X86::VCVTTPD2UQQZ128rrk, X86::VCVTTPD2UQQZ128rmk, 0},
{X86::VCVTTPD2UQQZ256rrk, X86::VCVTTPD2UQQZ256rmk, 0},
{X86::VCVTTPD2UQQZrrk, X86::VCVTTPD2UQQZrmk, 0},
@@ -4223,6 +4299,9 @@ static const X86FoldTableEntry Table3[] = {
{X86::VCVTTPH2WZ128rrk, X86::VCVTTPH2WZ128rmk, 0},
{X86::VCVTTPH2WZ256rrk, X86::VCVTTPH2WZ256rmk, 0},
{X86::VCVTTPH2WZrrk, X86::VCVTTPH2WZrmk, 0},
+ {X86::VCVTTPS2DQSZ128rrk, X86::VCVTTPS2DQSZ128rmk, 0},
+ {X86::VCVTTPS2DQSZ256rrk, X86::VCVTTPS2DQSZ256rmk, 0},
+ {X86::VCVTTPS2DQSZrrk, X86::VCVTTPS2DQSZrmk, 0},
{X86::VCVTTPS2DQZ128rrk, X86::VCVTTPS2DQZ128rmk, 0},
{X86::VCVTTPS2DQZ256rrk, X86::VCVTTPS2DQZ256rmk, 0},
{X86::VCVTTPS2DQZrrk, X86::VCVTTPS2DQZrmk, 0},
@@ -4232,12 +4311,21 @@ static const X86FoldTableEntry Table3[] = {
{X86::VCVTTPS2IUBSZ128rrk, X86::VCVTTPS2IUBSZ128rmk, 0},
{X86::VCVTTPS2IUBSZ256rrk, X86::VCVTTPS2IUBSZ256rmk, 0},
{X86::VCVTTPS2IUBSZrrk, X86::VCVTTPS2IUBSZrmk, 0},
+ {X86::VCVTTPS2QQSZ128rrk, X86::VCVTTPS2QQSZ128rmk, TB_NO_REVERSE},
+ {X86::VCVTTPS2QQSZ256rrk, X86::VCVTTPS2QQSZ256rmk, 0},
+ {X86::VCVTTPS2QQSZrrk, X86::VCVTTPS2QQSZrmk, 0},
{X86::VCVTTPS2QQZ128rrk, X86::VCVTTPS2QQZ128rmk, TB_NO_REVERSE},
{X86::VCVTTPS2QQZ256rrk, X86::VCVTTPS2QQZ256rmk, 0},
{X86::VCVTTPS2QQZrrk, X86::VCVTTPS2QQZrmk, 0},
+ {X86::VCVTTPS2UDQSZ128rrk, X86::VCVTTPS2UDQSZ128rmk, 0},
+ {X86::VCVTTPS2UDQSZ256rrk, X86::VCVTTPS2UDQSZ256rmk, 0},
+ {X86::VCVTTPS2UDQSZrrk, X86::VCVTTPS2UDQSZrmk, 0},
{X86::VCVTTPS2UDQZ128rrk, X86::VCVTTPS2UDQZ128rmk, 0},
{X86::VCVTTPS2UDQZ256rrk, X86::VCVTTPS2UDQZ256rmk, 0},
{X86::VCVTTPS2UDQZrrk, X86::VCVTTPS2UDQZrmk, 0},
+ {X86::VCVTTPS2UQQSZ128rrk, X86::VCVTTPS2UQQSZ128rmk, TB_NO_REVERSE},
+ {X86::VCVTTPS2UQQSZ256rrk, X86::VCVTTPS2UQQSZ256rmk, 0},
+ {X86::VCVTTPS2UQQSZrrk, X86::VCVTTPS2UQQSZrmk, 0},
{X86::VCVTTPS2UQQZ128rrk, X86::VCVTTPS2UQQZ128rmk, TB_NO_REVERSE},
{X86::VCVTTPS2UQQZ256rrk, X86::VCVTTPS2UQQZ256rmk, 0},
{X86::VCVTTPS2UQQZrrk, X86::VCVTTPS2UQQZrmk, 0},
@@ -7046,15 +7134,27 @@ static const X86FoldTableEntry BroadcastTable1[] = {
{X86::VCVTTNEBF162IUBSZ128rr, X86::VCVTTNEBF162IUBSZ128rmb, TB_BCAST_SH},
{X86::VCVTTNEBF162IUBSZ256rr, X86::VCVTTNEBF162IUBSZ256rmb, TB_BCAST_SH},
{X86::VCVTTNEBF162IUBSZrr, X86::VCVTTNEBF162IUBSZrmb, TB_BCAST_SH},
+ {X86::VCVTTPD2DQSZ128rr, X86::VCVTTPD2DQSZ128rmb, TB_BCAST_SD},
+ {X86::VCVTTPD2DQSZ256rr, X86::VCVTTPD2DQSZ256rmb, TB_BCAST_SD},
+ {X86::VCVTTPD2DQSZrr, X86::VCVTTPD2DQSZrmb, TB_BCAST_SD},
{X86::VCVTTPD2DQZ128rr, X86::VCVTTPD2DQZ128rmb, TB_BCAST_SD},
{X86::VCVTTPD2DQZ256rr, X86::VCVTTPD2DQZ256rmb, TB_BCAST_SD},
{X86::VCVTTPD2DQZrr, X86::VCVTTPD2DQZrmb, TB_BCAST_SD},
+ {X86::VCVTTPD2QQSZ128rr, X86::VCVTTPD2QQSZ128rmb, TB_BCAST_SD},
+ {X86::VCVTTPD2QQSZ256rr, X86::VCVTTPD2QQSZ256rmb, TB_BCAST_SD},
+ {X86::VCVTTPD2QQSZrr, X86::VCVTTPD2QQSZrmb, TB_BCAST_SD},
{X86::VCVTTPD2QQZ128rr, X86::VCVTTPD2QQZ128rmb, TB_BCAST_SD},
{X86::VCVTTPD2QQZ256rr, X86::VCVTTPD2QQZ256rmb, TB_BCAST_SD},
{X86::VCVTTPD2QQZrr, X86::VCVTTPD2QQZrmb, TB_BCAST_SD},
+ {X86::VCVTTPD2UDQSZ128rr, X86::VCVTTPD2UDQSZ128rmb, TB_BCAST_SD},
+ {X86::VCVTTPD2UDQSZ256rr, X86::VCVTTPD2UDQSZ256rmb, TB_BCAST_SD},
+ {X86::VCVTTPD2UDQSZrr, X86::VCVTTPD2UDQSZrmb, TB_BCAST_SD},
{X86::VCVTTPD2UDQZ128rr, X86::VCVTTPD2UDQZ128rmb, TB_BCAST_SD},
{X86::VCVTTPD2UDQZ256rr, X86::VCVTTPD2UDQZ256rmb, TB_BCAST_SD},
{X86::VCVTTPD2UDQZrr, X86::VCVTTPD2UDQZrmb, TB_BCAST_SD},
+ {X86::VCVTTPD2UQQSZ128rr, X86::VCVTTPD2UQQSZ128rmb, TB_BCAST_SD},
+ {X86::VCVTTPD2UQQSZ256rr, X86::VCVTTPD2UQQSZ256rmb, TB_BCAST_SD},
+ {X86::VCVTTPD2UQQSZrr, X86::VCVTTPD2UQQSZrmb, TB_BCAST_SD},
{X86::VCVTTPD2UQQZ128rr, X86::VCVTTPD2UQQZ128rmb, TB_BCAST_SD},
{X86::VCVTTPD2UQQZ256rr, X86::VCVTTPD2UQQZ256rmb, TB_BCAST_SD},
{X86::VCVTTPD2UQQZrr, X86::VCVTTPD2UQQZrmb, TB_BCAST_SD},
@@ -7082,6 +7182,9 @@ static const X86FoldTableEntry BroadcastTable1[] = {
{X86::VCVTTPH2WZ128rr, X86::VCVTTPH2WZ128rmb, TB_BCAST_SH},
{X86::VCVTTPH2WZ256rr, X86::VCVTTPH2WZ256rmb, TB_BCAST_SH},
{X86::VCVTTPH2WZrr, X86::VCVTTPH2WZrmb, TB_BCAST_SH},
+ {X86::VCVTTPS2DQSZ128rr, X86::VCVTTPS2DQSZ128rmb, TB_BCAST_SS},
+ {X86::VCVTTPS2DQSZ256rr, X86::VCVTTPS2DQSZ256rmb, TB_BCAST_SS},
+ {X86::VCVTTPS2DQSZrr, X86::VCVTTPS2DQSZrmb, TB_BCAST_SS},
{X86::VCVTTPS2DQZ128rr, X86::VCVTTPS2DQZ128rmb, TB_BCAST_SS},
{X86::VCVTTPS2DQZ256rr, X86::VCVTTPS2DQZ256rmb, TB_BCAST_SS},
{X86::VCVTTPS2DQZrr, X86::VCVTTPS2DQZrmb, TB_BCAST_SS},
@@ -7091,12 +7194,21 @@ static const X86FoldTableEntry BroadcastTable1[] = {
{X86::VCVTTPS2IUBSZ128rr, X86::VCVTTPS2IUBSZ128rmb, TB_BCAST_SS},
{X86::VCVTTPS2IUBSZ256rr, X86::VCVTTPS2IUBSZ256rmb, TB_BCAST_SS},
{X86::VCVTTPS2IUBSZrr, X86::VCVTTPS2IUBSZrmb, TB_BCAST_SS},
+ {X86::VCVTTPS2QQSZ128rr, X86::VCVTTPS2QQSZ128rmb, TB_BCAST_SS},
+ {X86::VCVTTPS2QQSZ256rr, X86::VCVTTPS2QQSZ256rmb, TB_BCAST_SS},
+ {X86::VCVTTPS2QQSZrr, X86::VCVTTPS2QQSZrmb, TB_BCAST_SS},
{X86::VCVTTPS2QQZ128rr, X86::VCVTTPS2QQZ128rmb, TB_BCAST_SS},
{X86::VCVTTPS2QQZ256rr, X86::VCVTTPS2QQZ256rmb, TB_BCAST_SS},
{X86::VCVTTPS2QQZrr, X86::VCVTTPS2QQZrmb, TB_BCAST_SS},
+ {X86::VCVTTPS2UDQSZ128rr, X86::VCVTTPS2UDQSZ128rmb, TB_BCAST_SS},
+ {X86::VCVTTPS2UDQSZ256rr, X86::VCVTTPS2UDQSZ256rmb, TB_BCAST_SS},
+ {X86::VCVTTPS2UDQSZrr, X86::VCVTTPS2UDQSZrmb, TB_BCAST_SS},
{X86::VCVTTPS2UDQZ128rr, X86::VCVTTPS2UDQZ128rmb, TB_BCAST_SS},
{X86::VCVTTPS2UDQZ256rr, X86::VCVTTPS2UDQZ256rmb, TB_BCAST_SS},
{X86::VCVTTPS2UDQZrr, X86::VCVTTPS2UDQZrmb, TB_BCAST_SS},
+ {X86::VCVTTPS2UQQSZ128rr, X86::VCVTTPS2UQQSZ128rmb, TB_BCAST_SS},
+ {X86::VCVTTPS2UQQSZ256rr, X86::VCVTTPS2UQQSZ256rmb, TB_BCAST_SS},
+ {X86::VCVTTPS2UQQSZrr, X86::VCVTTPS2UQQSZrmb, TB_BCAST_SS},
{X86::VCVTTPS2UQQZ128rr, X86::VCVTTPS2UQQZ128rmb, TB_BCAST_SS},
{X86::VCVTTPS2UQQZ256rr, X86::VCVTTPS2UQQZ256rmb, TB_BCAST_SS},
{X86::VCVTTPS2UQQZrr, X86::VCVTTPS2UQQZrmb, TB_BCAST_SS},
@@ -7422,15 +7534,27 @@ static const X86FoldTableEntry BroadcastTable2[] = {
{X86::VCVTTNEBF162IUBSZ128rrkz, X86::VCVTTNEBF162IUBSZ128rmbkz, TB_BCAST_SH},
{X86::VCVTTNEBF162IUBSZ256rrkz, X86::VCVTTNEBF162IUBSZ256rmbkz, TB_BCAST_SH},
{X86::VCVTTNEBF162IUBSZrrkz, X86::VCVTTNEBF162IUBSZrmbkz, TB_BCAST_SH},
+ {X86::VCVTTPD2DQSZ128rrkz, X86::VCVTTPD2DQSZ128rmbkz, TB_BCAST_SD},
+ {X86::VCVTTPD2DQSZ256rrkz, X86::VCVTTPD2DQSZ256rmbkz, TB_BCAST_SD},
+ {X86::VCVTTPD2DQSZrrkz, X86::VCVTTPD2DQSZrmbkz, TB_BCAST_SD},
{X86::VCVTTPD2DQZ128rrkz, X86::VCVTTPD2DQZ128rmbkz, TB_BCAST_SD},
{X86::VCVTTPD2DQZ256rrkz, X86::VCVTTPD2DQZ256rmbkz, TB_BCAST_SD},
{X86::VCVTTPD2DQZrrkz, X86::VCVTTPD2DQZrmbkz, TB_BCAST_SD},
+ {X86::VCVTTPD2QQSZ128rrkz, X86::VCVTTPD2QQSZ128rmbkz, TB_BCAST_SD},
+ {X86::VCVTTPD2QQSZ256rrkz, X86::VCVTTPD2QQSZ256rmbkz, TB_BCAST_SD},
+ {X86::VCVTTPD2QQSZrrkz, X86::VCVTTPD2QQSZrmbkz, TB_BCAST_SD},
{X86::VCVTTPD2QQZ128rrkz, X86::VCVTTPD2QQZ128rmbkz, TB_BCAST_SD},
{X86::VCVTTPD2QQZ256rrkz, X86::VCVTTPD2QQZ256rmbkz, TB_BCAST_SD},
{X86::VCVTTPD2QQZrrkz, X86::VCVTTPD2QQZrmbkz, TB_BCAST_SD},
+ {X86::VCVTTPD2UDQSZ128rrkz, X86::VCVTTPD2UDQSZ128rmbkz, TB_BCAST_SD},
+ {X86::VCVTTPD2UDQSZ256rrkz, X86::VCVTTPD2UDQSZ256rmbkz, TB_BCAST_SD},
+ {X86::VCVTTPD2UDQSZrrkz, X86::VCVTTPD2UDQSZrmbkz, TB_BCAST_SD},
{X86::VCVTTPD2UDQZ128rrkz, X86::VCVTTPD2UDQZ128rmbkz, TB_BCAST_SD},
{X86::VCVTTPD2UDQZ256rrkz, X86::VCVTTPD2UDQZ256rmbkz, TB_BCAST_SD},
{X86::VCVTTPD2UDQZrrkz, X86::VCVTTPD2UDQZrmbkz, TB_BCAST_SD},
+ {X86::VCVTTPD2UQQSZ128rrkz, X86::VCVTTPD2UQQSZ128rmbkz, TB_BCAST_SD},
+ {X86::VCVTTPD2UQQSZ256rrkz, X86::VCVTTPD2UQQSZ256rmbkz, TB_BCAST_SD},
+ {X86::VCVTTPD2UQQSZrrkz, X86::VCVTTPD2UQQSZrmbkz, TB_BCAST_SD},
{X86::VCVTTPD2UQQZ128rrkz, X86::VCVTTPD2UQQZ128rmbkz, TB_BCAST_SD},
{X86::VCVTTPD2UQQZ256rrkz, X86::VCVTTPD2UQQZ256rmbkz, TB_BCAST_SD},
{X86::VCVTTPD2UQQZrrkz, X86::VCVTTPD2UQQZrmbkz, TB_BCAST_SD},
@@ -7458,6 +7582,9 @@ static const X86FoldTableEntry BroadcastTable2[] = {
{X86::VCVTTPH2WZ128rrkz, X86::VCVTTPH2WZ128rmbkz, TB_BCAST_SH},
{X86::VCVTTPH2WZ256rrkz, X86::VCVTTPH2WZ256rmbkz, TB_BCAST_SH},
{X86::VCVTTPH2WZrrkz, X86::VCVTTPH2WZrmbkz, TB_BCAST_SH},
+ {X86::VCVTTPS2DQSZ128rrkz, X86::VCVTTPS2DQSZ128rmbkz, TB_BCAST_SS},
+ {X86::VCVTTPS2DQSZ256rrkz, X86::VCVTTPS2DQSZ256rmbkz, TB_BCAST_SS},
+ {X86::VCVTTPS2DQSZrrkz, X86::VCVTTPS2DQSZrmbkz, TB_BCAST_SS},
{X86::VCVTTPS2DQZ128rrkz, X86::VCVTTPS2DQZ128rmbkz, TB_BCAST_SS},
{X86::VCVTTPS2DQZ256rrkz, X86::VCVTTPS2DQZ256rmbkz, TB_BCAST_SS},
{X86::VCVTTPS2DQZrrkz, X86::VCVTTPS2DQZrmbkz, TB_BCAST_SS},
@@ -7467,12 +7594,21 @@ static const X86FoldTableEntry BroadcastTable2[] = {
{X86::VCVTTPS2IUBSZ128rrkz, X86::VCVTTPS2IUBSZ128rmbkz, TB_BCAST_SS},
{X86::VCVTTPS2IUBSZ256rrkz, X86::VCVTTPS2IUBSZ256rmbkz, TB_BCAST_SS},
{X86::VCVTTPS2IUBSZrrkz, X86::VCVTTPS2IUBSZrmbkz, TB_BCAST_SS},
+ {X86::VCVTTPS2QQSZ128rrkz, X86::VCVTTPS2QQSZ128rmbkz, TB_BCAST_SS},
+ {X86::VCVTTPS2QQSZ256rrkz, X86::VCVTTPS2QQSZ256rmbkz, TB_BCAST_SS},
+ {X86::VCVTTPS2QQSZrrkz, X86::VCVTTPS2QQSZrmbkz, TB_BCAST_SS},
{X86::VCVTTPS2QQZ128rrkz, X86::VCVTTPS2QQZ128rmbkz, TB_BCAST_SS},
{X86::VCVTTPS2QQZ256rrkz, X86::VCVTTPS2QQZ256rmbkz, TB_BCAST_SS},
{X86::VCVTTPS2QQZrrkz, X86::VCVTTPS2QQZrmbkz, TB_BCAST_SS},
+ {X86::VCVTTPS2UDQSZ128rrkz, X86::VCVTTPS2UDQSZ128rmbkz, TB_BCAST_SS},
+ {X86::VCVTTPS2UDQSZ256rrkz, X86::VCVTTPS2UDQSZ256rmbkz, TB_BCAST_SS},
+ {X86::VCVTTPS2UDQSZrrkz, X86::VCVTTPS2UDQSZrmbkz, TB_BCAST_SS},
{X86::VCVTTPS2UDQZ128rrkz, X86::VCVTTPS2UDQZ128rmbkz, TB_BCAST_SS},
{X86::VCVTTPS2UDQZ256rrkz, X86::VCVTTPS2UDQZ256rmbkz, TB_BCAST_SS},
{X86::VCVTTPS2UDQZrrkz, X86::VCVTTPS2UDQZrmbkz, TB_BCAST_SS},
+ {X86::VCVTTPS2UQQSZ128rrkz, X86::VCVTTPS2UQQSZ128rmbkz, TB_BCAST_SS},
+ {X86::VCVTTPS2UQQSZ256rrkz, X86::VCVTTPS2UQQSZ256rmbkz, TB_BCAST_SS},
+ {X86::VCVTTPS2UQQSZrrkz, X86::VCVTTPS2UQQSZrmbkz, TB_BCAST_SS},
{X86::VCVTTPS2UQQZ128rrkz, X86::VCVTTPS2UQQZ128rmbkz, TB_BCAST_SS},
{X86::VCVTTPS2UQQZ256rrkz, X86::VCVTTPS2UQQZ256rmbkz, TB_BCAST_SS},
{X86::VCVTTPS2UQQZrrkz, X86::VCVTTPS2UQQZrmbkz, TB_BCAST_SS},
@@ -8135,15 +8271,27 @@ static const X86FoldTableEntry BroadcastTable3[] = {
{X86::VCVTTNEBF162IUBSZ128rrk, X86::VCVTTNEBF162IUBSZ128rmbk, TB_BCAST_SH},
{X86::VCVTTNEBF162IUBSZ256rrk, X86::VCVTTNEBF162IUBSZ256rmbk, TB_BCAST_SH},
{X86::VCVTTNEBF162IUBSZrrk, X86::VCVTTNEBF162IUBSZrmbk, TB_BCAST_SH},
+ {X86::VCVTTPD2DQSZ128rrk, X86::VCVTTPD2DQSZ128rmbk, TB_BCAST_SD},
+ {X86::VCVTTPD2DQSZ256rrk, X86::VCVTTPD2DQSZ256rmbk, TB_BCAST_SD},
+ {X86::VCVTTPD2DQSZrrk, X86::VCVTTPD2DQSZrmbk, TB_BCAST_SD},
{X86::VCVTTPD2DQZ128rrk, X86::VCVTTPD2DQZ128rmbk, TB_BCAST_SD},
{X86::VCVTTPD2DQZ256rrk, X86::VCVTTPD2DQZ256rmbk, TB_BCAST_SD},
{X86::VCVTTPD2DQZrrk, X86::VCVTTPD2DQZrmbk, TB_BCAST_SD},
+ {X86::VCVTTPD2QQSZ128rrk, X86::VCVTTPD2QQSZ128rmbk, TB_BCAST_SD},
+ {X86::VCVTTPD2QQSZ256rrk, X86::VCVTTPD2QQSZ256rmbk, TB_BCAST_SD},
+ {X86::VCVTTPD2QQSZrrk, X86::VCVTTPD2QQSZrmbk, TB_BCAST_SD},
{X86::VCVTTPD2QQZ128rrk, X86::VCVTTPD2QQZ128rmbk, TB_BCAST_SD},
{X86::VCVTTPD2QQZ256rrk, X86::VCVTTPD2QQZ256rmbk, TB_BCAST_SD},
{X86::VCVTTPD2QQZrrk, X86::VCVTTPD2QQZrmbk, TB_BCAST_SD},
+ {X86::VCVTTPD2UDQSZ128rrk, X86::VCVTTPD2UDQSZ128rmbk, TB_BCAST_SD},
+ {X86::VCVTTPD2UDQSZ256rrk, X86::VCVTTPD2UDQSZ256rmbk, TB_BCAST_SD},
+ {X86::VCVTTPD2UDQSZrrk, X86::VCVTTPD2UDQSZrmbk, TB_BCAST_SD},
{X86::VCVTTPD2UDQZ128rrk, X86::VCVTTPD2UDQZ128rmbk, TB_BCAST_SD},
{X86::VCVTTPD2UDQZ256rrk, X86::VCVTTPD2UDQZ256rmbk, TB_BCAST_SD},
{X86::VCVTTPD2UDQZrrk, X86::VCVTTPD2UDQZrmbk, TB_BCAST_SD},
+ {X86::VCVTTPD2UQQSZ128rrk, X86::VCVTTPD2UQQSZ128rmbk, TB_BCAST_SD},
+ {X86::VCVTTPD2UQQSZ256rrk, X86::VCVTTPD2UQQSZ256rmbk, TB_BCAST_SD},
+ {X86::VCVTTPD2UQQSZrrk, X86::VCVTTPD2UQQSZrmbk, TB_BCAST_SD},
{X86::VCVTTPD2UQQZ128rrk, X86::VCVTTPD2UQQZ128rmbk, TB_BCAST_SD},
{X86::VCVTTPD2UQQZ256rrk, X86::VCVTTPD2UQQZ256rmbk, TB_BCAST_SD},
{X86::VCVTTPD2UQQZrrk, X86::VCVTTPD2UQQZrmbk, TB_BCAST_SD},
@@ -8171,6 +8319,9 @@ static const X86FoldTableEntry BroadcastTable3[] = {
{X86::VCVTTPH2WZ128rrk, X86::VCVTTPH2WZ128rmbk, TB_BCAST_SH},
{X86::VCVTTPH2WZ256rrk, X86::VCVTTPH2WZ256rmbk, TB_BCAST_SH},
{X86::VCVTTPH2WZrrk, X86::VCVTTPH2WZrmbk, TB_BCAST_SH},
+ {X86::VCVTTPS2DQSZ128rrk, X86::VCVTTPS2DQSZ128rmbk, TB_BCAST_SS},
+ {X86::VCVTTPS2DQSZ256rrk, X86::VCVTTPS2DQSZ256rmbk, TB_BCAST_SS},
+ {X86::VCVTTPS2DQSZrrk, X86::VCVTTPS2DQSZrmbk, TB_BCAST_SS},
{X86::VCVTTPS2DQZ128rrk, X86::VCVTTPS2DQZ128rmbk, TB_BCAST_SS},
{X86::VCVTTPS2DQZ256rrk, X86::VCVTTPS2DQZ256rmbk, TB_BCAST_SS},
{X86::VCVTTPS2DQZrrk, X86::VCVTTPS2DQZrmbk, TB_BCAST_SS},
@@ -8180,12 +8331,21 @@ static const X86FoldTableEntry BroadcastTable3[] = {
{X86::VCVTTPS2IUBSZ128rrk, X86::VCVTTPS2IUBSZ128rmbk, TB_BCAST_SS},
{X86::VCVTTPS2IUBSZ256rrk, X86::VCVTTPS2IUBSZ256rmbk, TB_BCAST_SS},
{X86::VCVTTPS2IUBSZrrk, X86::VCVTTPS2IUBSZrmbk, TB_BCAST_SS},
+ {X86::VCVTTPS2QQSZ128rrk, X86::VCVTTPS2QQSZ128rmbk, TB_BCAST_SS},
+ {X86::VCVTTPS2QQSZ256rrk, X86::VCVTTPS2QQSZ256rmbk, TB_BCAST_SS},
+ {X86::VCVTTPS2QQSZrrk, X86::VCVTTPS2QQSZrmbk, TB_BCAST_SS},
{X86::VCVTTPS2QQZ128rrk, X86::VCVTTPS2QQZ128rmbk, TB_BCAST_SS},
{X86::VCVTTPS2QQZ256rrk, X86::VCVTTPS2QQZ256rmbk, TB_BCAST_SS},
{X86::VCVTTPS2QQZrrk, X86::VCVTTPS2QQZrmbk, TB_BCAST_SS},
+ {X86::VCVTTPS2UDQSZ128rrk, X86::VCVTTPS2UDQSZ128rmbk, TB_BCAST_SS},
+ {X86::VCVTTPS2UDQSZ256rrk, X86::VCVTTPS2UDQSZ256rmbk, TB_BCAST_SS},
+ {X86::VCVTTPS2UDQSZrrk, X86::VCVTTPS2UDQSZrmbk, TB_BCAST_SS},
{X86::VCVTTPS2UDQZ128rrk, X86::VCVTTPS2UDQZ128rmbk, TB_BCAST_SS},
{X86::VCVTTPS2UDQZ256rrk, X86::VCVTTPS2UDQZ256rmbk, TB_BCAST_SS},
{X86::VCVTTPS2UDQZrrk, X86::VCVTTPS2UDQZrmbk, TB_BCAST_SS},
+ {X86::VCVTTPS2UQQSZ128rrk, X86::VCVTTPS2UQQSZ128rmbk, TB_BCAST_SS},
+ {X86::VCVTTPS2UQQSZ256rrk, X86::VCVTTPS2UQQSZ256rmbk, TB_BCAST_SS},
+ {X86::VCVTTPS2UQQSZrrk, X86::VCVTTPS2UQQSZrmbk, TB_BCAST_SS},
{X86::VCVTTPS2UQQZ128rrk, X86::VCVTTPS2UQQZ128rmbk, TB_BCAST_SS},
{X86::VCVTTPS2UQQZ256rrk, X86::VCVTTPS2UQQZ256rmbk, TB_BCAST_SS},
{X86::VCVTTPS2UQQZrrk, X86::VCVTTPS2UQQZrmbk, TB_BCAST_SS},
>From 4c1676902596d5d4b1ffecf2d3a5f8cd44b5ac03 Mon Sep 17 00:00:00 2001
From: Malay Sanghi <malay.sanghi at intel.com>
Date: Tue, 27 Aug 2024 05:09:32 -0700
Subject: [PATCH 2/7] review1
---
clang/lib/Headers/CMakeLists.txt | 4 +-
clang/lib/Headers/avx10_2_512satcvtdsintrin.h | 5 -
clang/lib/Headers/avx10_2satcvtdsintrin.h | 1181 +++++++++++------
clang/lib/Headers/immintrin.h | 10 +-
.../avx10_2_512satcvtds-builtins-x64-error.c | 12 +-
.../X86/avx10_2_512satcvtds-builtins-x64.c | 36 +-
.../X86/avx10_2_512satcvtds-builtins.c | 12 +-
llvm/lib/Target/X86/X86ISelLowering.cpp | 17 +-
.../X86/avx10_2_512satcvtds-intrinsics.ll | 22 -
.../CodeGen/X86/avx10_2satcvtds-intrinsics.ll | 32 -
10 files changed, 810 insertions(+), 521 deletions(-)
diff --git a/clang/lib/Headers/CMakeLists.txt b/clang/lib/Headers/CMakeLists.txt
index 9981290628697c..4d8d236ec9caf1 100644
--- a/clang/lib/Headers/CMakeLists.txt
+++ b/clang/lib/Headers/CMakeLists.txt
@@ -149,12 +149,12 @@ set(x86_files
amxintrin.h
avx10_2_512minmaxintrin.h
avx10_2_512niintrin.h
- avx10_2_512satcvtintrin.h
avx10_2_512satcvtdsintrin.h
+ avx10_2_512satcvtintrin.h
avx10_2minmaxintrin.h
avx10_2niintrin.h
- avx10_2satcvtintrin.h
avx10_2satcvtdsintrin.h
+ avx10_2satcvtintrin.h
avx2intrin.h
avx512bf16intrin.h
avx512bitalgintrin.h
diff --git a/clang/lib/Headers/avx10_2_512satcvtdsintrin.h b/clang/lib/Headers/avx10_2_512satcvtdsintrin.h
index e8b815653c3d6e..79a8699bc7e164 100644
--- a/clang/lib/Headers/avx10_2_512satcvtdsintrin.h
+++ b/clang/lib/Headers/avx10_2_512satcvtdsintrin.h
@@ -87,7 +87,6 @@ _mm512_maskz_cvttspd_epu32(__mmask8 U, __m512d A) {
(__v8df)(__m512d)(A), (__v8si)_mm256_setzero_si256(), (__mmask8)(U), \
(const int)(R)))
-#ifdef __x86_64__
// 512 bit : Double -> Long
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttspd_epi64(__m512d A) {
@@ -156,8 +155,6 @@ _mm512_maskz_cvttspd_epu64(__mmask8 U, __m512d A) {
(__v8df)(__m512d)(A), (__v8di)_mm512_setzero_si512(), (__mmask8)(U), \
(const int)(R)))
-#endif
-
// 512 bit: Float -> int
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttsps_epi32(__m512 A) {
return ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask(
@@ -228,7 +225,6 @@ _mm512_maskz_cvttsps_epu32(__mmask16 U, __m512 A) {
(__v16sf)(__m512)(A), (__v16si)_mm512_setzero_si512(), (__mmask16)(U), \
(const int)(R)))
-#ifdef __x86_64__
// 512 bit : float -> long
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttsps_epi64(__m256 A) {
return ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask(
@@ -296,7 +292,6 @@ _mm512_maskz_cvttsps_epu64(__mmask8 U, __m256 A) {
((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( \
(__v8sf)(__m256)(A), (__v8di)_mm512_setzero_si512(), (__mmask8)(U), \
(const int)(R)))
-#endif
#undef __DEFAULT_FN_ATTRS
#endif // __AVX10_2_512SATCVTDSINTRIN_H
diff --git a/clang/lib/Headers/avx10_2satcvtdsintrin.h b/clang/lib/Headers/avx10_2satcvtdsintrin.h
index 5588c9ccfa4319..bca34120a8fec8 100644
--- a/clang/lib/Headers/avx10_2satcvtdsintrin.h
+++ b/clang/lib/Headers/avx10_2satcvtdsintrin.h
@@ -20,434 +20,787 @@
__attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \
__min_vector_width__(256)))
-#define _mm_cvtt_roundssd_i32(A, R) \
+#define __DEFAULT_FN_ATTRS128 \
+ __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \
+ __min_vector_width__(128)))
+
+#define _mm_cvtts_roundsd_i32(A, R) \
((int)__builtin_ia32_vcvttssd2si32((__v2df)(__m128)(A), (const int)(R)))
-#define _mm_cvtt_roundssd_si32(A, R) \
+#define _mm_cvtts_roundsd_si32(A, R) \
((int)__builtin_ia32_vcvttssd2si32((__v2df)(__m128d)(A), (const int)(R)))
-
-#ifdef __x86_64__
-#define _mm_cvtt_roundssd_si64(A, R) \
- ((long long)__builtin_ia32_vcvttssd2si64((__v2df)(__m128d)(A), \
- (const int)(R)))
-
-#define _mm_cvtt_roundssd_i64(A, R) \
- ((long long)__builtin_ia32_vcvttssd2si64((__v2df)(__m128d)(A), \
(const int)(R)))
-#endif
-#define _mm_cvtt_roundssd_u32(A, R) \
- ((unsigned int)__builtin_ia32_vcvttssd2usi32((__v2df)(__m128d)(A), \
- (const int)(R)))
+#define _mm_cvtts_roundsd_u32(A, R) \
+ ((unsigned int) \
+ __builtin_ia32_vcvttssd2usi32( \
+ (__v2df)(__m128d)(A), \
+ (const int)(R)))
+
+#define _mm_cvtts_roundss_i32(A, R) \
+ ((int) \
+ __builtin_ia32_vcvttsss2si32( \
+ (__v4sf)(__m128)(A), \
+ (const int)(R)))
+
+#define _mm_cvtts_roundss_si32(A, \
+ R) \
+ ((int) \
+ __builtin_ia32_vcvttsss2si32( \
+ (__v4sf)(__m128)(A), \
+ (const int)(R)))
+
+#define _mm_cvtts_roundss_u32(A, R) \
+ ((unsigned int) \
+ __builtin_ia32_vcvttsss2usi32( \
+ (__v4sf)(__m128)(A), \
+ (const int)(R)))
#ifdef __x86_64__
-#define _mm_cvtt_roundssd_u64(A, R) \
- ((unsigned long long)__builtin_ia32_vcvttssd2usi64((__v2df)(__m128d)(A), \
- (const int)(R)))
-#endif
-
-#define _mm_cvtt_roundsss_i32(A, R) \
- ((int)__builtin_ia32_vcvttsss2si32((__v4sf)(__m128)(A), (const int)(R)))
-
-#define _mm_cvtt_roundsss_si32(A, R) \
- ((int)__builtin_ia32_vcvttsss2si32((__v4sf)(__m128)(A), (const int)(R)))
-
-#ifdef __x86_64__
-#define _mm_cvtt_roundsss_i64(A, R) \
- ((long long)__builtin_ia32_vcvttsss2si64((__v4sf)(__m128)(A), (const int)(R)))
-
-#define _mm_cvtt_roundsss_si64(A, R) \
- ((long long)__builtin_ia32_vcvttsss2si64((__v4sf)(__m128)(A), (const int)(R)))
-#endif
-
-#define _mm_cvtt_roundsss_u32(A, R) \
- ((unsigned int)__builtin_ia32_vcvttsss2usi32((__v4sf)(__m128)(A), \
- (const int)(R)))
-
-#ifdef __x86_64__
-#define _mm_cvtt_roundsss_u64(A, R) \
- ((unsigned long long)__builtin_ia32_vcvttsss2usi64((__v4sf)(__m128)(A), \
- (const int)(R)))
-#endif
-
-// 128 Bit : Double -> int
-#define _mm_cvttspd_epi32(A) \
- ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
- (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
- (__mmask8)(-1)))
+#define _mm_cvtts_roundss_u64(A, R) \
+ ((unsigned long long) \
+ __builtin_ia32_vcvttsss2usi64( \
+ (__v4sf)(__m128)(A), \
+ (const int)(R)))
+
+#define _mm_cvtts_roundsd_u64(A, R) \
+ ((unsigned long long) \
+ __builtin_ia32_vcvttssd2usi64( \
+ (__v2df)(__m128d)(A), \
+ (const int)(R)))
+
+#define _mm_cvtts_roundss_i64(A, R) \
+ ((long long) \
+ __builtin_ia32_vcvttsss2si64( \
+ (__v4sf)(__m128)(A), \
+ (const int)(R)))
+
+#define _mm_cvtts_roundss_si64(A, \
+ R) \
+ ((long long) \
+ __builtin_ia32_vcvttsss2si64( \
+ (__v4sf)(__m128)(A), \
+ (const int)(R)))
+
+#define _mm_cvtts_roundsd_si64(A, \
+ R) \
+ ((long long) \
+ __builtin_ia32_vcvttssd2si64( \
+ (__v2df)(__m128d)(A), \
+ (const int)(R)))
+
+#define _mm_cvtts_roundsd_i64(A, R) \
+ ((long long)__builtin_ia32_vcvttssd2si64((__v2df)(__m128d)(A), \
+#endif /* __x86_64__ */
+
+ // 128 Bit : Double -> int
+#define _mm_cvttspd_epi32(A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2dqs128_mask( \
+ (__v2df)(__m128d)A, \
+ (__v4si)(__m128i) \
+ _mm_undefined_si128(), \
+ (__mmask8)(-1)))
+
+#define _mm_mask_cvttspd_epi32( \
+ W, U, A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2dqs128_mask( \
+ (__v2df)(__m128d)A, \
+ (__v4si)(__m128i)W, \
+ (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epi32(U, \
+ A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2dqs128_mask( \
+ (__v2df)(__m128d)A, \
+ (__v4si)(__m128i) \
+ _mm_setzero_si128(), \
+ (__mmask8)U))
-#define _mm_mask_cvttspd_epi32(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
- (__v2df)(__m128d)A, (__v4si)(__m128i)W, (__mmask8)U))
+// 256 Bit : Double -> int
+static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm256_cvttspd_epi32(__m256d A) {
+ return (
+ (__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
+ (__v4df)(__m256d)A,
+ (__v4si)
+ _mm_undefined_si128(),
+ (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m128i
+ __DEFAULT_FN_ATTRS128
+ _mm256_mask_cvttspd_epi32(
+ __m128i W, __mmask8 U,
+ __m256d A) {
+ return (
+ (__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
+ (__v4df)A, (__v4si)W, U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m128i
+ __DEFAULT_FN_ATTRS128
+ _mm256_maskz_cvttspd_epi32(
+ __mmask8 U, __m256d A) {
+ return (
+ (__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
+ (__v4df)A,
+ (__v4si)
+ _mm_setzero_si128(),
+ U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+#define _mm256_cvtts_roundpd_epi32( \
+ A, R) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2dqs256_round_mask( \
+ (__v4df)(__m256d)A, \
+ (__v4si)(__m128i) \
+ _mm_undefined_si128(), \
+ (__mmask8) - 1, \
+ (int)(R)))
+
+#define _mm256_mask_cvtts_roundpd_epi32( \
+ W, U, A, R) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2dqs256_round_mask( \
+ (__v4df)(__m256d)A, \
+ (__v4si)(__m128i)W, \
+ (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundpd_epi32( \
+ U, A, R) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2dqs256_round_mask( \
+ (__v4df)(__m256d)A, \
+ (__v4si)(__m128i) \
+ _mm_setzero_si128(), \
+ (__mmask8)U, (int)(R)))
+
+ // 128 Bit : Double -> uint
+#define _mm_cvttspd_epu32(A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2udqs128_mask( \
+ (__v2df)(__m128d)A, \
+ (__v4si)(__m128i) \
+ _mm_undefined_si128(), \
+ (__mmask8)(-1)))
+
+#define _mm_mask_cvttspd_epu32( \
+ W, U, A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2udqs128_mask( \
+ ((__v2df)(__m128d)A), \
+ (__v4si)(__m128i)W, \
+ (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epu32(U, \
+ A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2udqs128_mask( \
+ (__v2df)(__m128d)A, \
+ (__v4si)(__m128i) \
+ _mm_setzero_si128(), \
+ (__mmask8)U))
+
+ // 256 Bit : Double -> uint
+ static __inline__ __m128i
+ __DEFAULT_FN_ATTRS128
+ _mm256_cvttspd_epu32(__m256d A) {
+ return (
+ (__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
+ (__v4df)A,
+ (__v4si)
+ _mm_undefined_si128(),
+ (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m128i
+ __DEFAULT_FN_ATTRS128
+ _mm256_mask_cvttspd_epu32(
+ __m128i W, __mmask8 U,
+ __m256d A) {
+ return (
+ (__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
+ (__v4df)A, (__v4si)W, U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m128i
+ __DEFAULT_FN_ATTRS128
+ _mm256_maskz_cvttspd_epu32(
+ __mmask8 U, __m256d A) {
+ return (
+ (__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
+ (__v4df)A,
+ (__v4si)
+ _mm_setzero_si128(),
+ U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+#define _mm256_cvtts_roundpd_epu32( \
+ A, R) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2udqs256_round_mask( \
+ (__v4df)(__m256d)A, \
+ (__v4si)(__m128i) \
+ _mm_undefined_si128(), \
+ (__mmask8) - 1, \
+ (int)(R)))
+
+#define _mm256_mask_cvtts_roundpd_epu32( \
+ W, U, A, R) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2udqs256_round_mask( \
+ (__v4df)(__m256d)A, \
+ (__v4si)(__m128i)W, \
+ (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundpd_epu32( \
+ U, A, R) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2udqs256_round_mask( \
+ (__v4df)(__m256d)A, \
+ (__v4si)(__m128i) \
+ _mm_setzero_si128(), \
+ (__mmask8)U, (int)(R)))
+
+ // 128 Bit : Double -> long
+#define _mm_cvttspd_epi64(A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2qqs128_mask( \
+ (__v2df)(__m128d)A, \
+ (__v2di) \
+ _mm_undefined_si128(), \
+ (__mmask8) - 1))
+
+#define _mm_mask_cvttspd_epi64( \
+ W, U, A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2qqs128_mask( \
+ (__v2df)(__m128d)A, \
+ (__v2di)W, (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epi64(U, \
+ A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2qqs128_mask( \
+ (__v2df)(__m128d)A, \
+ (__v2di) \
+ _mm_setzero_si128(), \
+ (__mmask8)U))
+
+ // 256 Bit : Double -> long
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_cvttspd_epi64(__m256d A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
+ (__v4df)A,
+ (__v4di)
+ _mm256_undefined_si256(),
+ (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_mask_cvttspd_epi64(
+ __m256i W, __mmask8 U,
+ __m256d A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
+ (__v4df)A, (__v4di)W, U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_maskz_cvttspd_epi64(
+ __mmask8 U, __m256d A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
+ (__v4df)A,
+ (__v4di)
+ _mm256_setzero_si256(),
+ U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+#define _mm256_cvtts_roundpd_epi64( \
+ A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( \
+ (__v4df)A, \
+ (__v4di) \
+ _mm256_undefined_si256(), \
+ (__mmask8) - 1, (int)R))
+
+#define _mm256_mask_cvtts_roundpd_epi64( \
+ W, U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttpd2qqs256_round_mask( \
+ (__v4df)A, (__v4di)W, \
+ (__mmask8)U, (int)R))
-#define _mm_maskz_cvttspd_epi32(U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
- (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+#define _mm256_maskz_cvtts_roundpd_epi64( \
+ U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttpd2qqs256_round_mask( \
+ (__v4df)A, \
+ (__v4di) \
+ _mm256_setzero_si256(), \
+ (__mmask8)U, (int)R))
-// 256 Bit : Double -> int
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_cvttspd_epi32(__m256d A) {
- return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
- (__v4df)(__m256d)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m128i __DEFAULT_FN_ATTRS
-_mm256_mask_cvttspd_epi32(__m128i W, __mmask8 U, __m256d A) {
- return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
- (__v4df)A, (__v4si)W, U, _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m128i __DEFAULT_FN_ATTRS
-_mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A) {
- return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
- (__v4df)A, (__v4si)_mm_setzero_si128(), U, _MM_FROUND_CUR_DIRECTION));
-}
-
-#define _mm256_cvtts_roundpd_epi32(A, R) \
- ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \
- (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
- (__mmask8) - 1, (int)(R)))
-
-#define _mm256_mask_cvtts_roundpd_epi32(W, U, A, R) \
- ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \
- (__v4df)(__m256d)A, (__v4si)(__m128i)W, (__mmask8)U, (int)(R)))
-
-#define _mm256_maskz_cvtts_roundpd_epi32(U, A, R) \
- ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \
- (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U, \
- (int)(R)))
-
-// 128 Bit : Double -> uint
-#define _mm_cvttspd_epu32(A) \
- ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
- (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
- (__mmask8)(-1)))
-
-#define _mm_mask_cvttspd_epu32(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
- ((__v2df)(__m128d)A), (__v4si)(__m128i)W, (__mmask8)U))
-
-#define _mm_maskz_cvttspd_epu32(U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
- (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
-
-// 256 Bit : Double -> uint
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_cvttspd_epu32(__m256d A) {
- return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
- (__v4df)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m128i __DEFAULT_FN_ATTRS
-_mm256_mask_cvttspd_epu32(__m128i W, __mmask8 U, __m256d A) {
- return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
- (__v4df)A, (__v4si)W, U, _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m128i __DEFAULT_FN_ATTRS
-_mm256_maskz_cvttspd_epu32(__mmask8 U, __m256d A) {
- return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
- (__v4df)A, (__v4si)_mm_setzero_si128(), U, _MM_FROUND_CUR_DIRECTION));
-}
-
-#define _mm256_cvtts_roundpd_epu32(A, R) \
- ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \
- (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
- (__mmask8) - 1, (int)(R)))
-
-#define _mm256_mask_cvtts_roundpd_epu32(W, U, A, R) \
- ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \
- (__v4df)(__m256d)A, (__v4si)(__m128i)W, (__mmask8)U, (int)(R)))
-
-#define _mm256_maskz_cvtts_roundpd_epu32(U, A, R) \
- ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \
- (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U, \
- (int)(R)))
-
-// 128 Bit : Double -> long
-#ifdef __x86_64__
+ // 128 Bit : Double -> ulong
+#define _mm_cvttspd_epu64(A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2uqqs128_mask( \
+ (__v2df)(__m128d)A, \
+ (__v2di) \
+ _mm_undefined_si128(), \
+ (__mmask8) - 1))
+
+#define _mm_mask_cvttspd_epu64( \
+ W, U, A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2uqqs128_mask( \
+ (__v2df)(__m128d)A, \
+ (__v2di)W, (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epu64(U, \
+ A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttpd2uqqs128_mask( \
+ (__v2df)(__m128d)A, \
+ (__v2di) \
+ _mm_setzero_si128(), \
+ (__mmask8)U))
+
+ // 256 Bit : Double -> ulong
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_cvttspd_epu64(__m256d A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
+ (__v4df)A,
+ (__v4di)
+ _mm256_undefined_si256(),
+ (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_mask_cvttspd_epu64(
+ __m256i W, __mmask8 U,
+ __m256d A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
+ (__v4df)A, (__v4di)W, U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_maskz_cvttspd_epu64(
+ __mmask8 U, __m256d A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
+ (__v4df)A,
+ (__v4di)
+ _mm256_setzero_si256(),
+ U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+#define _mm256_cvtts_roundpd_epu64( \
+ A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \
+ (__v4df)A, \
+ (__v4di) \
+ _mm256_undefined_si256(), \
+ (__mmask8) - 1, (int)R))
+
+#define _mm256_mask_cvtts_roundpd_epu64( \
+ W, U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttpd2uqqs256_round_mask( \
+ (__v4df)A, (__v4di)W, \
+ (__mmask8)U, (int)R))
-#define _mm_cvttspd_epi64(A) \
- ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( \
- (__v2df)(__m128d)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
-
-#define _mm_mask_cvttspd_epi64(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask((__v2df)(__m128d)A, (__v2di)W, \
- (__mmask8)U))
-
-#define _mm_maskz_cvttspd_epi64(U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( \
- (__v2df)(__m128d)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
-
-// 256 Bit : Double -> long
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttspd_epi64(__m256d A) {
- return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
- (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_mask_cvttspd_epi64(__m256i W, __mmask8 U, __m256d A) {
- return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
- (__v4df)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_maskz_cvttspd_epi64(__mmask8 U, __m256d A) {
- return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
- (__v4df)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
-}
-
-#define _mm256_cvtts_roundpd_epi64(A, R) \
- ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( \
- (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, (int)R))
-
-#define _mm256_mask_cvtts_roundpd_epi64(W, U, A, R) \
- ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask((__v4df)A, (__v4di)W, \
- (__mmask8)U, (int)R))
-
-#define _mm256_maskz_cvtts_roundpd_epi64(U, A, R) \
- ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( \
- (__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
-
-// 128 Bit : Double -> ulong
-#define _mm_cvttspd_epu64(A) \
- ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( \
- (__v2df)(__m128d)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
-
-#define _mm_mask_cvttspd_epu64(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask((__v2df)(__m128d)A, (__v2di)W, \
- (__mmask8)U))
-
-#define _mm_maskz_cvttspd_epu64(U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( \
- (__v2df)(__m128d)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
-
-// 256 Bit : Double -> ulong
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttspd_epu64(__m256d A) {
- return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
- (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_mask_cvttspd_epu64(__m256i W, __mmask8 U, __m256d A) {
- return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
- (__v4df)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_maskz_cvttspd_epu64(__mmask8 U, __m256d A) {
- return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
- (__v4df)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
-}
-
-#define _mm256_cvtts_roundpd_epu64(A, R) \
- ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \
- (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, (int)R))
-
-#define _mm256_mask_cvtts_roundpd_epu64(W, U, A, R) \
- ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask((__v4df)A, (__v4di)W, \
+#define _mm256_maskz_cvtts_roundpd_epu64( \
+ U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttpd2uqqs256_round_mask( \
+ (__v4df)A, \
+ (__v4di) \
+ _mm256_setzero_si256(), \
(__mmask8)U, (int)R))
-#define _mm256_maskz_cvtts_roundpd_epu64(U, A, R) \
- ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \
- (__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
-#endif
-
-// 128 Bit : float -> int
-#define _mm_cvttsps_epi32(A) \
- ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_undefined_si128(), \
- (__mmask8)(-1)))
-
-#define _mm_mask_cvttsps_epi32(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)W, (__mmask8)U))
-
-#define _mm_maskz_cvttsps_epi32(U, A) \
- ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
-
-// 256 Bit : float -> int
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi32(__m256 A) {
- return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
- (__v8sf)A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_mask_cvttsps_epi32(__m256i W, __mmask8 U, __m256 A) {
- return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
- (__v8sf)(__m256)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A) {
- return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
- (__v8sf)(__m256)A, (__v8si)_mm256_setzero_si256(), U,
- _MM_FROUND_CUR_DIRECTION));
-}
-
-#define _mm256_cvtts_roundps_epi32(A, R) \
- ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \
- (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_undefined_si256(), \
- (__mmask8) - 1, (int)(R)))
-
-#define _mm256_mask_cvtts_roundps_epi32(W, U, A, R) \
- ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \
- (__v8sf)(__m256)A, (__v8si)(__m256i)W, (__mmask8)U, (int)(R)))
-
-#define _mm256_maskz_cvtts_roundps_epi32(U, A, R) \
- ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \
- (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_setzero_si256(), (__mmask8)U, \
- (int)(R)))
-
-// 128 Bit : float -> uint
-#define _mm_cvttsps_epu32(A) \
- ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_undefined_si128(), \
- (__mmask8)(-1)))
-
-#define _mm_mask_cvttsps_epu32(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)W, (__mmask8)U))
-
-#define _mm_maskz_cvttsps_epu32(U, A) \
- ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
-
-// 256 Bit : float -> uint
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epu32(__m256 A) {
- return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
- (__v8sf)A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_mask_cvttsps_epu32(__m256i W, __mmask8 U, __m256 A) {
- return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
- (__v8sf)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_maskz_cvttsps_epu32(__mmask8 U, __m256 A) {
- return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
- (__v8sf)A, (__v8si)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
-}
-
-#define _mm256_cvtts_roundps_epu32(A, R) \
- ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \
- (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_undefined_si256(), \
- (__mmask8) - 1, (int)(R)))
-
-#define _mm256_mask_cvtts_roundps_epu32(W, U, A, R) \
- ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \
- (__v8sf)(__m256)A, (__v8si)(__m256i)W, (__mmask8)U, (int)(R)))
-
-#define _mm256_maskz_cvtts_roundps_epu32(U, A, R) \
- ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \
- (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_setzero_si256(), (__mmask8)U, \
- (int)(R)))
-
-// 128 bit : float -> long
-#ifdef __x86_64__
+ // 128 Bit : float -> int
+#define _mm_cvttsps_epi32(A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2dqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4si)(__m128i) \
+ _mm_undefined_si128(), \
+ (__mmask8)(-1)))
+
+#define _mm_mask_cvttsps_epi32( \
+ W, U, A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2dqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4si)(__m128i)W, \
+ (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epi32(U, \
+ A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2dqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4si)(__m128i) \
+ _mm_setzero_si128(), \
+ (__mmask8)U))
+
+ // 256 Bit : float -> int
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_cvttsps_epi32(__m256 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
+ (__v8sf)A,
+ (__v8si)
+ _mm256_undefined_si256(),
+ (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_mask_cvttsps_epi32(
+ __m256i W, __mmask8 U,
+ __m256 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
+ (__v8sf)(__m256)A,
+ (__v8si)W, U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_maskz_cvttsps_epi32(
+ __mmask8 U, __m256 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
+ (__v8sf)(__m256)A,
+ (__v8si)
+ _mm256_setzero_si256(),
+ U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+#define _mm256_cvtts_roundps_epi32( \
+ A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \
+ (__v8sf)(__m256)A, \
+ (__v8si)(__m256i) \
+ _mm256_undefined_si256(), \
+ (__mmask8) - 1, (int)(R)))
+
+#define _mm256_mask_cvtts_roundps_epi32( \
+ W, U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttps2dqs256_round_mask( \
+ (__v8sf)(__m256)A, \
+ (__v8si)(__m256i)W, \
+ (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundps_epi32( \
+ U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttps2dqs256_round_mask( \
+ (__v8sf)(__m256)A, \
+ (__v8si)(__m256i) \
+ _mm256_setzero_si256(), \
+ (__mmask8)U, (int)(R)))
+
+ // 128 Bit : float -> uint
+#define _mm_cvttsps_epu32(A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2udqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4si)(__m128i) \
+ _mm_undefined_si128(), \
+ (__mmask8)(-1)))
+
+#define _mm_mask_cvttsps_epu32( \
+ W, U, A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2udqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4si)(__m128i)W, \
+ (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epu32(U, \
+ A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2udqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4si)(__m128i) \
+ _mm_setzero_si128(), \
+ (__mmask8)U))
+
+ // 256 Bit : float -> uint
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_cvttsps_epu32(__m256 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
+ (__v8sf)A,
+ (__v8si)
+ _mm256_undefined_si256(),
+ (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_mask_cvttsps_epu32(
+ __m256i W, __mmask8 U,
+ __m256 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
+ (__v8sf)A, (__v8si)W, U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_maskz_cvttsps_epu32(
+ __mmask8 U, __m256 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
+ (__v8sf)A,
+ (__v8si)
+ _mm256_setzero_si256(),
+ U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+#define _mm256_cvtts_roundps_epu32( \
+ A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \
+ (__v8sf)(__m256)A, \
+ (__v8si)(__m256i) \
+ _mm256_undefined_si256(), \
+ (__mmask8) - 1, (int)(R)))
+
+#define _mm256_mask_cvtts_roundps_epu32( \
+ W, U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttps2udqs256_round_mask( \
+ (__v8sf)(__m256)A, \
+ (__v8si)(__m256i)W, \
+ (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundps_epu32( \
+ U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttps2udqs256_round_mask( \
+ (__v8sf)(__m256)A, \
+ (__v8si)(__m256i) \
+ _mm256_setzero_si256(), \
+ (__mmask8)U, (int)(R)))
+
+ // 128 bit : float -> long
+#define _mm_cvttsps_epi64(A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2qqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v2di) \
+ _mm_undefined_si128(), \
+ (__mmask8) - 1))
+
+#define _mm_mask_cvttsps_epi64( \
+ W, U, A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2qqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v2di)(__m128i)W, \
+ (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epi64(U, \
+ A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2qqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v2di) \
+ _mm_setzero_si128(), \
+ (__mmask8)U))
+ /*
+ // 256 bit : float -> long
+ */
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_cvttsps_epi64(__m128 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
+ (__v4sf)A,
+ (__v4di)
+ _mm256_undefined_si256(),
+ (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_mask_cvttsps_epi64(
+ __m256i W, __mmask8 U,
+ __m128 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
+ (__v4sf)A, (__v4di)W, U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_maskz_cvttsps_epi64(
+ __mmask8 U, __m128 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
+ (__v4sf)A,
+ (__v4di)
+ _mm256_setzero_si256(),
+ U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+#define _mm256_cvtts_roundps_epi64( \
+ A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4di) \
+ _mm256_undefined_si256(), \
+ (__mmask8) - 1, (int)R))
+
+#define _mm256_mask_cvtts_roundps_epi64( \
+ W, U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttps2qqs256_round_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4di)W, (__mmask8)U, \
+ (int)R))
+
+#define _mm256_maskz_cvtts_roundps_epi64( \
+ U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttps2qqs256_round_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4di) \
+ _mm256_setzero_si256(), \
+ (__mmask8)U, (int)R))
-#define _mm_cvttsps_epi64(A) \
- ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
-
-#define _mm_mask_cvttsps_epi64(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)(__m128i)W, (__mmask8)U))
-
-#define _mm_maskz_cvttsps_epi64(U, A) \
- ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
-/*
-// 256 bit : float -> long
-*/
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi64(__m128 A) {
- return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
- (__v4sf)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
-}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_mask_cvttsps_epi64(__m256i W, __mmask8 U, __m128 A) {
- return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
- (__v4sf)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_maskz_cvttsps_epi64(__mmask8 U, __m128 A) {
- return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
- (__v4sf)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
-}
-
-#define _mm256_cvtts_roundps_epi64(A, R) \
- ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \
- (__v4sf)(__m128)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, \
- (int)R))
-
-#define _mm256_mask_cvtts_roundps_epi64(W, U, A, R) \
- ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \
- (__v4sf)(__m128)A, (__v4di)W, (__mmask8)U, (int)R))
-
-#define _mm256_maskz_cvtts_roundps_epi64(U, A, R) \
- ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \
- (__v4sf)(__m128)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
-
-// 128 bit : float -> ulong
-#define _mm_cvttsps_epu64(A) \
- ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
-
-#define _mm_mask_cvttsps_epu64(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)(__m128i)W, (__mmask8)U))
-
-#define _mm_maskz_cvttsps_epu64(U, A) \
- ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
-/*
-// 256 bit : float -> ulong
-*/
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epu64(__m128 A) {
- return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
- (__v4sf)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_mask_cvttsps_epu64(__m256i W, __mmask8 U, __m128 A) {
- return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
- (__v4sf)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
-}
-
-static __inline__ __m256i __DEFAULT_FN_ATTRS
-_mm256_maskz_cvttsps_epu64(__mmask8 U, __m128 A) {
- return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
- (__v4sf)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
-}
-
-#define _mm256_cvtts_roundps_epu64(A, R) \
- ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
- (__v4sf)(__m128)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, \
- (int)R))
-
-#define _mm256_mask_cvtts_roundps_epu64(W, U, A, R) \
- ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
- (__v4sf)(__m128)A, (__v4di)W, (__mmask8)U, (int)R))
-
-#define _mm256_maskz_cvtts_roundps_epu64(U, A, R) \
- ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
- (__v4sf)(__m128)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
-#endif
+ // 128 bit : float -> ulong
+#define _mm_cvttsps_epu64(A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2uqqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v2di) \
+ _mm_undefined_si128(), \
+ (__mmask8) - 1))
+
+#define _mm_mask_cvttsps_epu64( \
+ W, U, A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2uqqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v2di)(__m128i)W, \
+ (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epu64(U, \
+ A) \
+ ((__m128i) \
+ __builtin_ia32_vcvttps2uqqs128_mask( \
+ (__v4sf)(__m128)A, \
+ (__v2di) \
+ _mm_setzero_si128(), \
+ (__mmask8)U))
+ /*
+ // 256 bit : float -> ulong
+ */
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_cvttsps_epu64(__m128 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
+ (__v4sf)A,
+ (__v4di)
+ _mm256_undefined_si256(),
+ (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_mask_cvttsps_epu64(
+ __m256i W, __mmask8 U,
+ __m128 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
+ (__v4sf)A, (__v4di)W, U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+ static __inline__ __m256i
+ __DEFAULT_FN_ATTRS
+ _mm256_maskz_cvttsps_epu64(
+ __mmask8 U, __m128 A) {
+ return (
+ (__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
+ (__v4sf)A,
+ (__v4di)
+ _mm256_setzero_si256(),
+ U,
+ _MM_FROUND_CUR_DIRECTION));
+ }
+
+#define _mm256_cvtts_roundps_epu64( \
+ A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4di) \
+ _mm256_undefined_si256(), \
+ (__mmask8) - 1, (int)R))
+
+#define _mm256_mask_cvtts_roundps_epu64( \
+ W, U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttps2uqqs256_round_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4di)W, (__mmask8)U, \
+ (int)R))
+
+#define _mm256_maskz_cvtts_roundps_epu64( \
+ U, A, R) \
+ ((__m256i) \
+ __builtin_ia32_vcvttps2uqqs256_round_mask( \
+ (__v4sf)(__m128)A, \
+ (__v4di) \
+ _mm256_setzero_si256(), \
+ (__mmask8)U, (int)R))
#undef __DEFAULT_FN_ATTRS128
#undef __DEFAULT_FN_ATTRS
-#endif /*__AVX10_2SATCVTDSINTRIN_H*/
\ No newline at end of file
+#endif /*__AVX10_2SATCVTDSINTRIN_H*/
diff --git a/clang/lib/Headers/immintrin.h b/clang/lib/Headers/immintrin.h
index ec9ad9201a0d24..42714ad418ba71 100644
--- a/clang/lib/Headers/immintrin.h
+++ b/clang/lib/Headers/immintrin.h
@@ -200,14 +200,6 @@
#include <avx512vlbf16intrin.h>
#endif
-#if !defined(__SCE__) || __has_feature(modules) || defined(__AVX10_2__)
-#include <avx10_2satcvtdsintrin.h>
-#endif
-
-#if !defined(__SCE__) || __has_feature(modules) || defined(__AVX10_2_512__)
-#include <avx10_2_512satcvtdsintrin.h>
-#endif
-
#if !defined(__SCE__) || __has_feature(modules) || defined(__PKU__)
#include <pkuintrin.h>
#endif
@@ -659,12 +651,14 @@ _storebe_i64(void * __P, long long __D) {
#if !defined(__SCE__) || __has_feature(modules) || defined(__AVX10_2__)
#include <avx10_2minmaxintrin.h>
#include <avx10_2niintrin.h>
+#include <avx10_2satcvtdsintrin.h>
#include <avx10_2satcvtintrin.h>
#endif
#if !defined(__SCE__) || __has_feature(modules) || defined(__AVX10_2_512__)
#include <avx10_2_512minmaxintrin.h>
#include <avx10_2_512niintrin.h>
+#include <avx10_2_512satcvtdsintrin.h>
#include <avx10_2_512satcvtintrin.h>
#endif
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64-error.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64-error.c
index 7c7c94fbf8c89b..2900256914570c 100755
--- a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64-error.c
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64-error.c
@@ -4,27 +4,27 @@
#include <stddef.h>
long long test_mm_cvttssd_si64(__m128d __A) {
- return _mm_cvtt_roundssd_si64(__A, 22); // expected-error {{invalid rounding argument}}
+ return _mm_cvtts_roundsd_si64(__A, 22); // expected-error {{invalid rounding argument}}
}
long long test_mm_cvttssd_i64(__m128d __A) {
- return _mm_cvtt_roundssd_i64(__A, 22); // expected-error {{invalid rounding argument}}
+ return _mm_cvtts_roundsd_i64(__A, 22); // expected-error {{invalid rounding argument}}
}
unsigned long long test_mm_cvttssd_u64(__m128d __A) {
- return _mm_cvtt_roundssd_u64(__A, 22); // expected-error {{invalid rounding argument}}
+ return _mm_cvtts_roundsd_u64(__A, 22); // expected-error {{invalid rounding argument}}
}
float test_mm_cvttsss_i64(__m128 __A) {
- return _mm_cvtt_roundsss_i64(__A, 22); // expected-error {{invalid rounding argument}}
+ return _mm_cvtts_roundss_i64(__A, 22); // expected-error {{invalid rounding argument}}
}
long long test_mm_cvttsss_si64(__m128 __A) {
- return _mm_cvtt_roundsss_si64(__A, 22); // expected-error {{invalid rounding argument}}
+ return _mm_cvtts_roundss_si64(__A, 22); // expected-error {{invalid rounding argument}}
}
unsigned long long test_mm_cvttsss_u64(__m128 __A) {
- return _mm_cvtt_roundsss_u64(__A, 22); // expected-error {{invalid rounding argument}}
+ return _mm_cvtts_roundss_u64(__A, 22); // expected-error {{invalid rounding argument}}
}
__m512i test_mm512_cvtts_roundpd_epi64(__m512d A) {
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
index 9e8b7f01c4c816..3c6f7f77100088 100644
--- a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
@@ -6,37 +6,37 @@
long long test_mm_cvttssd_si64(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_si64(
// CHECK: @llvm.x86.avx512.vcvttssd2si64(<2 x double>
- return _mm_cvtt_roundssd_si64(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundsd_si64(__A, _MM_FROUND_NO_EXC);
}
long long test_mm_cvttssd_i64(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_i64(
// CHECK: @llvm.x86.avx512.vcvttssd2si64(<2 x double>
- return _mm_cvtt_roundssd_i64(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundsd_i64(__A, _MM_FROUND_NO_EXC);
}
unsigned long long test_mm_cvttssd_u64(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_u64(
// CHECK: @llvm.x86.avx512.vcvttssd2usi64(<2 x double>
- return _mm_cvtt_roundssd_u64(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundsd_u64(__A, _MM_FROUND_NO_EXC);
}
float test_mm_cvttsss_i64(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_i64(
// CHECK: @llvm.x86.avx512.vcvttsss2si64(<4 x float>
- return _mm_cvtt_roundsss_i64(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundss_i64(__A, _MM_FROUND_NO_EXC);
}
long long test_mm_cvttsss_si64(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_si64(
// CHECK: @llvm.x86.avx512.vcvttsss2si64(<4 x float>
- return _mm_cvtt_roundsss_si64(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundss_si64(__A, _MM_FROUND_NO_EXC);
}
unsigned long long test_mm_cvttsss_u64(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_u64(
// CHECK: @llvm.x86.avx512.vcvttsss2usi64(<4 x float>
- return _mm_cvtt_roundsss_u64(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundss_u64(__A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_cvttspd_epi64(__m512d A) {
@@ -60,19 +60,19 @@ __m512i test_mm512_maskz_cvttspd_epi64(__mmask8 U, __m512d A) {
__m512i test_mm512_cvtts_roundpd_epi64(__m512d A) {
// CHECK-LABEL: test_mm512_cvtts_roundpd_epi64
// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
- return _mm512_cvtts_roundpd_epi64(A, _MM_FROUND_NEARBYINT);
+ return _mm512_cvtts_roundpd_epi64(A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_mask_cvtts_roundpd_epi64(__m512i W, __mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundpd_epi64
// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
- return _mm512_mask_cvtts_roundpd_epi64(W, U, A, _MM_FROUND_NEARBYINT);
+ return _mm512_mask_cvtts_roundpd_epi64(W, U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_maskz_cvtts_roundpd_epi64(__mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundpd_epi64
// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
- return _mm512_maskz_cvtts_roundpd_epi64(U, A, _MM_FROUND_NEARBYINT);
+ return _mm512_maskz_cvtts_roundpd_epi64(U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_cvttspd_epu64(__m512d A) {
@@ -96,19 +96,19 @@ __m512i test_mm512_maskz_cvttspd_epu64(__mmask8 U, __m512d A) {
__m512i test_mm512_cvtts_roundpd_epu64(__m512d A) {
// CHECK-LABEL: test_mm512_cvtts_roundpd_epu64
// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
- return _mm512_cvtts_roundpd_epu64(A, _MM_FROUND_NEARBYINT);
+ return _mm512_cvtts_roundpd_epu64(A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_mask_cvtts_roundpd_epu64(__m512i W, __mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundpd_epu64
// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
- return _mm512_mask_cvtts_roundpd_epu64(W, U, A, _MM_FROUND_NEARBYINT);
+ return _mm512_mask_cvtts_roundpd_epu64(W, U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_maskz_cvtts_roundpd_epu64(__mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundpd_epu64
// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
- return _mm512_maskz_cvtts_roundpd_epu64(U, A, _MM_FROUND_NEARBYINT);
+ return _mm512_maskz_cvtts_roundpd_epu64(U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_cvttsps_epi64(__m256 A) {
@@ -132,19 +132,19 @@ __m512i test_mm512_maskz_cvttsps_epi64(__mmask8 U, __m256 A) {
__m512i test_mm512_cvtts_roundps_epi64(__m256 A) {
// CHECK-LABEL: test_mm512_cvtts_roundps_epi64
// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
- return _mm512_cvtts_roundps_epi64(A, _MM_FROUND_NEARBYINT);
+ return _mm512_cvtts_roundps_epi64(A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_mask_cvtts_roundps_epi64(__m512i W, __mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundps_epi64
// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
- return _mm512_mask_cvtts_roundps_epi64(W, U, A, _MM_FROUND_NEARBYINT);
+ return _mm512_mask_cvtts_roundps_epi64(W, U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_maskz_cvtts_roundps_epi64(__mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundps_epi64
// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
- return _mm512_maskz_cvtts_roundps_epi64(U, A, _MM_FROUND_NEARBYINT);
+ return _mm512_maskz_cvtts_roundps_epi64(U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_cvttsps_epu64(__m256 A) {
@@ -168,17 +168,17 @@ __m512i test_mm512_maskz_cvttsps_epu64(__mmask8 U, __m256 A) {
__m512i test_mm512_cvtts_roundps_epu64(__m256 A) {
// CHECK-LABEL: test_mm512_cvtts_roundps_epu64
// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
- return _mm512_cvtts_roundps_epu64(A, _MM_FROUND_NEARBYINT);
+ return _mm512_cvtts_roundps_epu64(A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_mask_cvtts_roundps_epu64(__m512i W, __mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundps_epu64
// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
- return _mm512_mask_cvtts_roundps_epu64(W, U, A, _MM_FROUND_NEARBYINT);
+ return _mm512_mask_cvtts_roundps_epu64(W, U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_maskz_cvtts_roundps_epu64(__mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundps_epu64
// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
- return _mm512_maskz_cvtts_roundps_epu64(U, A, _MM_FROUND_NEARBYINT);
+ return _mm512_maskz_cvtts_roundps_epu64(U, A, _MM_FROUND_NO_EXC);
}
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
index c518d0c5d77884..5ea91d67b461d0 100644
--- a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
@@ -6,37 +6,37 @@
int test_mm_cvttssd_i32(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_i32
// CHECK: @llvm.x86.avx512.vcvttssd2si
- return _mm_cvtt_roundssd_i32(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundsd_i32(__A, _MM_FROUND_NO_EXC);
}
int test_mm_cvttssd_si32(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_si32(
// CHECK: @llvm.x86.avx512.vcvttssd2si(<2 x double>
- return _mm_cvtt_roundssd_si32(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundsd_si32(__A, _MM_FROUND_NO_EXC);
}
unsigned test_mm_cvttssd_u32(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_u32(
// CHECK: @llvm.x86.avx512.vcvttssd2usi(<2 x double>
- return _mm_cvtt_roundssd_u32(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundsd_u32(__A, _MM_FROUND_NO_EXC);
}
int test_mm_cvttsss_i32(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_i32(
// CHECK: @llvm.x86.avx512.vcvttsss2si(<4 x float>
- return _mm_cvtt_roundsss_i32(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundss_i32(__A, _MM_FROUND_NO_EXC);
}
int test_mm_cvttsss_si32(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_si32(
// CHECK: @llvm.x86.avx512.vcvttsss2si(<4 x float>
- return _mm_cvtt_roundsss_si32(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundss_si32(__A, _MM_FROUND_NO_EXC);
}
unsigned test_mm_cvttsss_u32(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_u32(
// CHECK: @llvm.x86.avx512.vcvttsss2usi(<4 x float>
- return _mm_cvtt_roundsss_u32(__A, _MM_FROUND_NO_EXC);
+ return _mm_cvtts_roundss_u32(__A, _MM_FROUND_NO_EXC);
}
__m256i test_mm512_cvttspd_epi32(__m512d A) {
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index f4fd8607ba0dc5..cb83bf73344985 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -324,14 +324,7 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
}
}
- if (Subtarget.hasAVX10_2() || Subtarget.hasAVX10_2_512()) {
- setOperationAction(ISD::FP_TO_UINT_SAT, MVT::i32, Legal);
- setOperationAction(ISD::FP_TO_SINT_SAT, MVT::i32, Legal);
- if (Subtarget.is64Bit()) {
- setOperationAction(ISD::FP_TO_UINT_SAT, MVT::i64, Legal);
- setOperationAction(ISD::FP_TO_SINT_SAT, MVT::i64, Legal);
- }
- } else if (Subtarget.hasSSE2()) {
+ if (Subtarget.hasSSE2()) {
// Custom lowering for saturating float to int conversions.
// We handle promotion to larger result types manually.
for (MVT VT : { MVT::i8, MVT::i16, MVT::i32 }) {
@@ -343,6 +336,14 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
setOperationAction(ISD::FP_TO_SINT_SAT, MVT::i64, Custom);
}
}
+ if (Subtarget.hasAVX10_2()) {
+ setOperationAction(ISD::FP_TO_UINT_SAT, MVT::i32, Legal);
+ setOperationAction(ISD::FP_TO_SINT_SAT, MVT::i32, Legal);
+ if (Subtarget.is64Bit()) {
+ setOperationAction(ISD::FP_TO_UINT_SAT, MVT::i64, Legal);
+ setOperationAction(ISD::FP_TO_SINT_SAT, MVT::i64, Legal);
+ }
+ }
// Handle address space casts between mixed sized pointers.
setOperationAction(ISD::ADDRSPACECAST, MVT::i32, Custom);
diff --git a/llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll b/llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll
index 5d3bb704984fb3..5d556dedcf8722 100644
--- a/llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll
+++ b/llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll
@@ -53,7 +53,6 @@ define <8 x i32> @test_int_x86_mask_vcvtt_pd2dqs_512_undef(<8 x double> %x0, i8
ret <8 x i32> %res
}
-
define <8 x i32> @test_int_x86_mask_vcvtt_pd2dqs_512_default(<8 x double>* %x0) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_512_default:
; X64: # %bb.0:
@@ -69,7 +68,6 @@ define <8 x i32> @test_int_x86_mask_vcvtt_pd2dqs_512_default(<8 x double>* %x0)
%res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512( <8 x double> %x10, <8 x i32> undef, i8 -1, i32 4)
ret <8 x i32> %res
}
-
declare <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>, <8 x i32>, i8 , i32)
define <8 x i32> @test_int_x86_mask_vcvtt_pd2udqs_512(<8 x double> %x0, <8 x i32> %src, i8 %mask) {
@@ -137,10 +135,8 @@ define <8 x i32> @test_int_x86_mask_vcvtt_pd2udqs_512_default(<8 x double>* %x0)
%res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512( <8 x double> %x10, <8 x i32> undef, i8 -1, i32 4)
ret <8 x i32> %res
}
-
declare <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>, <8 x i32>, i8 , i32)
-
define <8 x i64> @test_int_x86_mask_vcvtt_pd2qqs_512(<8 x double> %x0, <8 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_512:
; X64: # %bb.0:
@@ -191,7 +187,6 @@ define <8 x i64> @test_int_x86_mask_vcvtt_pd2qqs_512_undef(<8 x double> %x0, i8
ret <8 x i64> %res
}
-
define <8 x i64> @test_int_x86_mask_vcvtt_pd2qqs_512_default(<8 x double>* %x0) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_512_default:
; X64: # %bb.0:
@@ -207,7 +202,6 @@ define <8 x i64> @test_int_x86_mask_vcvtt_pd2qqs_512_default(<8 x double>* %x0)
%res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512( <8 x double> %x10, <8 x i64> undef, i8 -1, i32 4)
ret <8 x i64> %res
}
-
declare <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>, <8 x i64>, i8 , i32)
define <8 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_512(<8 x double> %x0, <8 x i64> %src, i8 %mask) {
@@ -260,7 +254,6 @@ define <8 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_512_undef(<8 x double> %x0, i8
ret <8 x i64> %res
}
-
define <8 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_512_default(<8 x double>* %x0) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_512_default:
; X64: # %bb.0:
@@ -276,13 +269,8 @@ define <8 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_512_default(<8 x double>* %x0)
%res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512( <8 x double> %x10, <8 x i64> undef, i8 -1, i32 4)
ret <8 x i64> %res
}
-
declare <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>, <8 x i64>, i8 , i32)
-
-
-
-
define <16 x i32> @test_int_x86_mask_vcvtt_ps2dqs_512(<16 x float> %x0, <16 x i32> %src, i16 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_512:
; X64: # %bb.0:
@@ -333,7 +321,6 @@ define <16 x i32> @test_int_x86_mask_vcvtt_ps2dqs_512_undef(<16 x float> %x0, i1
ret <16 x i32> %res
}
-
define <16 x i32> @test_int_x86_mask_vcvtt_ps2dqs_512_default(<16 x float>* %x0) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_512_default:
; X64: # %bb.0:
@@ -349,7 +336,6 @@ define <16 x i32> @test_int_x86_mask_vcvtt_ps2dqs_512_default(<16 x float>* %x0)
%res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x10, <16 x i32> undef, i16 -1, i32 4)
ret <16 x i32> %res
}
-
declare <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>, <16 x i32>, i16 , i32)
define <16 x i32> @test_int_x86_mask_vcvtt_ps2udqs_512(<16 x float> %x0, <16 x i32> %src, i16 %mask) {
@@ -402,7 +388,6 @@ define <16 x i32> @test_int_x86_mask_vcvtt_ps2udqs_512_undef(<16 x float> %x0, i
ret <16 x i32> %res
}
-
define <16 x i32> @test_int_x86_mask_vcvtt_ps2udqs_512_default(<16 x float>* %x0) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_512_default:
; X64: # %bb.0:
@@ -418,8 +403,6 @@ define <16 x i32> @test_int_x86_mask_vcvtt_ps2udqs_512_default(<16 x float>* %x0
%res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x10, <16 x i32> undef, i16 -1, i32 4)
ret <16 x i32> %res
}
-
-
declare <16 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>, <16 x i32>, i16 , i32)
define <8 x i64> @test_int_x86_mask_vcvtt_ps2qqs_512(<8 x float> %x0, <8 x i64> %src, i8 %mask) {
@@ -472,7 +455,6 @@ define <8 x i64> @test_int_x86_mask_vcvtt_ps2qqs_512_undef(<8 x float> %x0, i8 %
ret <8 x i64> %res
}
-
define <8 x i64> @test_int_x86_mask_vcvtt_ps2qqs_512_default(<8 x float> %x0) {
; CHECK-LABEL: test_int_x86_mask_vcvtt_ps2qqs_512_default:
; CHECK: # %bb.0:
@@ -481,7 +463,6 @@ define <8 x i64> @test_int_x86_mask_vcvtt_ps2qqs_512_default(<8 x float> %x0) {
%res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512( <8 x float> %x0, <8 x i64> undef, i8 -1, i32 4)
ret <8 x i64> %res
}
-
declare <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>, <8 x i64>, i8 , i32)
define <8 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_512(<8 x float> %x0, <8 x i64> %src, i8 %mask) {
@@ -534,7 +515,6 @@ define <8 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_512_undef(<8 x float> %x0, i8
ret <8 x i64> %res
}
-
define <8 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_512_default(<8 x float> %x0) {
; CHECK-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_512_default:
; CHECK: # %bb.0:
@@ -543,6 +523,4 @@ define <8 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_512_default(<8 x float> %x0) {
%res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512( <8 x float> %x0, <8 x i64> undef, i8 -1, i32 4)
ret <8 x i64> %res
}
-
declare <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>, <8 x i64>, i8 , i32)
-
diff --git a/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll b/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
index 28457c4e4d6329..7dbc97d7e1aaa5 100644
--- a/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
+++ b/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
@@ -145,7 +145,6 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_256_default(<4 x double>* %xptr
%res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> undef, i8 -1, i32 4)
ret <4 x i32> %res
}
-
declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>, <4 x i32>, i8 , i32)
define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_256(<4 x double> %x0, <4 x i32> %src, i8 %mask) {
@@ -220,10 +219,8 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_256_default(<4 x double>* %x0)
%res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256( <4 x double> %x10, <4 x i32> undef, i8 -1, i32 4)
ret <4 x i32> %res
}
-
declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>, <4 x i32>, i8 , i32)
-
define <4 x i64> @test_int_x86_mask_vcvtt_pd2qqs_256(<4 x double> %x0, <4 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_256:
; X64: # %bb.0:
@@ -290,12 +287,8 @@ define <4 x i64> @test_int_x86_mask_vcvtt_pd2qqs_256_default(<4 x double>* %x0)
%res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256( <4 x double> %x10, <4 x i64> undef, i8 -1, i32 4)
ret <4 x i64> %res
}
-
-
declare <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>, <4 x i64>, i8 , i32)
-
-
define <4 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_256(<4 x double> %x0, <4 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_256:
; X64: # %bb.0:
@@ -362,12 +355,8 @@ define <4 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_256_default(<4 x double>* %x0)
%res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256( <4 x double> %x10, <4 x i64> undef, i8 -1, i32 4)
ret <4 x i64> %res
}
-
-
declare <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>, <4 x i64>, i8 , i32)
-
-
define <8 x i32> @test_int_x86_mask_vcvtt_ps2dqs_256(<8 x float> %x0, <8 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_256:
; X64: # %bb.0:
@@ -433,11 +422,8 @@ define <8 x i32> @test_int_x86_mask_vcvtt_ps2dqs_256_default(<8 x float>* %x0) {
%res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256( <8 x float> %x10, <8 x i32> undef, i8 -1, i32 4)
ret <8 x i32> %res
}
-
-
declare <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>, <8 x i32>, i8 , i32)
-
define <8 x i32> @test_int_x86_mask_vcvtt_ps2udqs_256(<8 x float> %x0, <8 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_256:
; X64: # %bb.0:
@@ -504,10 +490,8 @@ define <8 x i32> @test_int_x86_mask_vcvtt_ps2udqs_256_default(<8 x float>* %x0)
%res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256( <8 x float> %x10, <8 x i32> undef, i8 -1, i32 4)
ret <8 x i32> %res
}
-
declare <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>, <8 x i32>, i8 , i32)
-
define <4 x i64> @test_int_x86_maskz_vcvtt_ps2qqs_256_z(<4 x float> %x0, i8 %mask) {
; X64-LABEL: test_int_x86_maskz_vcvtt_ps2qqs_256_z:
; X64: # %bb.0:
@@ -539,15 +523,8 @@ define <4 x i64> @test_int_x86_mask_vcvtt_ps2qqs_256_undef(<4 x float> %x0, i8 %
%res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.256( <4 x float> %x0, <4 x i64> undef, i8 %mask, i32 4)
ret <4 x i64> %res
}
-
-
-
-
-
declare <4 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>, <4 x i64>, i8 , i32)
-
-
define <4 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_256(<4 x float> %x0, <4 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_256:
; X64: # %bb.0:
@@ -610,8 +587,6 @@ define <4 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_256_default(<4 x float> %x0) {
declare <4 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>, <4 x i64>, i8 , i32)
-
-
define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_128(<2 x double> %x0, <4 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_128:
; X64: # %bb.0:
@@ -671,7 +646,6 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_128_default(<2 x double> %x0) {
%res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> undef, i8 -1)
ret <4 x i32> %res
}
-
declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128(<2 x double>, <4 x i32>, i8)
define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_128(<2 x double> %x0, <4 x i32> %src, i8 %mask) {
@@ -733,7 +707,6 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_128_default(<2 x double> %x0)
%res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> undef, i8 -1)
ret <4 x i32> %res
}
-
declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128(<2 x double>, <4 x i32>, i8)
define <2 x i64> @test_int_x86_mask_vcvtt_pd2qqs_128(<2 x double> %x0, <2 x i64> %src, i8 %mask) {
@@ -795,7 +768,6 @@ define <2 x i64> @test_int_x86_mask_vcvtt_pd2qqs_128_default(<2 x double> %x0) {
%res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> undef, i8 -1)
ret <2 x i64> %res
}
-
declare <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128(<2 x double>, <2 x i64>, i8)
define <2 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_128(<2 x double> %x0, <2 x i64> %src, i8 %mask) {
@@ -857,7 +829,6 @@ define <2 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_128_default(<2 x double> %x0)
%res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> undef, i8 -1)
ret <2 x i64> %res
}
-
declare <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128(<2 x double>, <2 x i64>, i8)
define <2 x i64> @test_int_x86_mask_vcvtt_ps2qqs_128_default(<4 x float> %x0) {
@@ -926,7 +897,6 @@ define <4 x i32> @test_int_x86_mask_vcvtt_ps2dqs_128_default(<4 x float> %x0) {
}
declare <4 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.128(<4 x float>, <4 x i32>, i8)
-
define <4 x i32> @test_int_x86_mask_vcvtt_ps2udqs_128(<4 x float> %x0, <4 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_128:
; X64: # %bb.0:
@@ -984,7 +954,6 @@ define <4 x i32> @test_int_x86_mask_vcvtt_ps2udqs_128_default(<4 x float> %x0) {
}
declare <4 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.128(<4 x float>, <4 x i32>, i8)
-
define <2 x i64> @test_int_x86_mask_vcvtt_ps2qqs_128_undef(<4 x float> %x0, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2qqs_128_undef:
; X64: # %bb.0:
@@ -1034,7 +1003,6 @@ define <2 x i64> @test_int_x86_mask_vcvtt_ps2qqs_128(<4 x float> %x0, <2 x i64>
%res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> %src, i8 %mask)
ret <2 x i64> %res
}
-
declare <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128(<4 x float>, <2 x i64>, i8)
define <2 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_128(<4 x float> %x0, <2 x i64> %src, i8 %mask) {
>From f99a6ed507e849fb47d4a061f068d1966bd0579d Mon Sep 17 00:00:00 2001
From: Malay Sanghi <malay.sanghi at intel.com>
Date: Wed, 4 Sep 2024 21:06:40 +0800
Subject: [PATCH 3/7] Match buultin name with asm
Fix error in header
---
clang/include/clang/Basic/BuiltinsX86.def | 8 +-
clang/include/clang/Basic/BuiltinsX86_64.def | 8 +-
clang/lib/Headers/avx10_2satcvtdsintrin.h | 1167 ++++++-----------
clang/lib/Sema/SemaX86.cpp | 16 +-
.../X86/avx10_2_512satcvtds-builtins-x64.c | 12 +-
.../X86/avx10_2_512satcvtds-builtins.c | 12 +-
llvm/include/llvm/IR/IntrinsicsX86.td | 16 +-
llvm/lib/Target/X86/X86IntrinsicsInfo.h | 16 +-
.../CodeGen/X86/avx10_2satcvtds-intrinsics.ll | 48 +-
.../X86/avx10_2satcvtds-x64-intrinsics.ll | 32 +-
10 files changed, 488 insertions(+), 847 deletions(-)
diff --git a/clang/include/clang/Basic/BuiltinsX86.def b/clang/include/clang/Basic/BuiltinsX86.def
index e8c6b4b7973a1f..3f47e34cc9098c 100644
--- a/clang/include/clang/Basic/BuiltinsX86.def
+++ b/clang/include/clang/Basic/BuiltinsX86.def
@@ -2123,10 +2123,10 @@ TARGET_BUILTIN(__builtin_ia32_vpdpwuuds128, "V4iV4iV4iV4i", "nV:128:", "avxvnnii
TARGET_BUILTIN(__builtin_ia32_vpdpwuuds256, "V8iV8iV8iV8i", "nV:256:", "avxvnniint16|avx10.2-256")
// AVX10.2 SATCVT-DS
-TARGET_BUILTIN(__builtin_ia32_vcvttssd2si32, "iV2dIi", "ncV:128:", "avx10.2-256")
-TARGET_BUILTIN(__builtin_ia32_vcvttssd2usi32, "UiV2dIi", "ncV:128:", "avx10.2-256")
-TARGET_BUILTIN(__builtin_ia32_vcvttsss2si32, "iV4fIi", "ncV:128:", "avx10.2-256")
-TARGET_BUILTIN(__builtin_ia32_vcvttsss2usi32, "UiV4fIi", "ncV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttsd2sis32, "iV2dIi", "ncV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttsd2usis32, "UiV2dIi", "ncV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttss2sis32, "iV4fIi", "ncV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttss2usis32, "UiV4fIi", "ncV:128:", "avx10.2-256")
TARGET_BUILTIN(__builtin_ia32_vcvttpd2dqs128_mask, "V4iV2dV4iUc", "nV:128:", "avx10.2-256")
TARGET_BUILTIN(__builtin_ia32_vcvttpd2dqs256_round_mask, "V4iV4dV4iUcIi", "nV:256:", "avx10.2-256")
TARGET_BUILTIN(__builtin_ia32_vcvttpd2dqs512_round_mask, "V8iV8dV8iUcIi", "nV:512:", "avx10.2-512")
diff --git a/clang/include/clang/Basic/BuiltinsX86_64.def b/clang/include/clang/Basic/BuiltinsX86_64.def
index ed9b17b8bd7b8e..4bd71ba274b968 100644
--- a/clang/include/clang/Basic/BuiltinsX86_64.def
+++ b/clang/include/clang/Basic/BuiltinsX86_64.def
@@ -100,10 +100,10 @@ TARGET_BUILTIN(__builtin_ia32_vcvttsh2usi64, "UOiV8xIi", "ncV:128:", "avx512fp16
TARGET_BUILTIN(__builtin_ia32_directstore_u64, "vULi*ULi", "n", "movdiri")
// AVX10.2 SATCVT-DS
-TARGET_BUILTIN(__builtin_ia32_vcvttssd2si64, "OiV2dIi", "ncV:128:", "avx10.2-512")
-TARGET_BUILTIN(__builtin_ia32_vcvttssd2usi64, "UOiV2dIi", "ncV:128:", "avx10.2-512")
-TARGET_BUILTIN(__builtin_ia32_vcvttsss2si64, "OiV4fIi", "ncV:128:", "avx10.2-512")
-TARGET_BUILTIN(__builtin_ia32_vcvttsss2usi64, "UOiV4fIi", "ncV:128:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttsd2sis64, "OiV2dIi", "ncV:128:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttsd2usis64, "UOiV2dIi", "ncV:128:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttss2sis64, "OiV4fIi", "ncV:128:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttss2usis64, "UOiV4fIi", "ncV:128:", "avx10.2-512")
// UINTR
TARGET_BUILTIN(__builtin_ia32_clui, "v", "n", "uintr")
diff --git a/clang/lib/Headers/avx10_2satcvtdsintrin.h b/clang/lib/Headers/avx10_2satcvtdsintrin.h
index bca34120a8fec8..75c6114a5bb2e1 100644
--- a/clang/lib/Headers/avx10_2satcvtdsintrin.h
+++ b/clang/lib/Headers/avx10_2satcvtdsintrin.h
@@ -25,782 +25,423 @@
__min_vector_width__(128)))
#define _mm_cvtts_roundsd_i32(A, R) \
- ((int)__builtin_ia32_vcvttssd2si32((__v2df)(__m128)(A), (const int)(R)))
+ ((int)__builtin_ia32_vcvttsd2sis32((__v2df)(__m128)(A), (const int)(R)))
#define _mm_cvtts_roundsd_si32(A, R) \
- ((int)__builtin_ia32_vcvttssd2si32((__v2df)(__m128d)(A), (const int)(R)))
- (const int)(R)))
+ ((int)__builtin_ia32_vcvttsd2sis32((__v2df)(__m128d)(A), (const int)(R)))
+
+#define _mm_cvtts_roundsd_u32(A, R) \
+ ((unsigned int)__builtin_ia32_vcvttsd2usis32((__v2df)(__m128d)(A), \
+ (const int)(R)))
+
+#define _mm_cvtts_roundss_i32(A, R) \
+ ((int)__builtin_ia32_vcvttss2sis32((__v4sf)(__m128)(A), (const int)(R)))
-#define _mm_cvtts_roundsd_u32(A, R) \
- ((unsigned int) \
- __builtin_ia32_vcvttssd2usi32( \
- (__v2df)(__m128d)(A), \
- (const int)(R)))
-
-#define _mm_cvtts_roundss_i32(A, R) \
- ((int) \
- __builtin_ia32_vcvttsss2si32( \
- (__v4sf)(__m128)(A), \
- (const int)(R)))
-
-#define _mm_cvtts_roundss_si32(A, \
- R) \
- ((int) \
- __builtin_ia32_vcvttsss2si32( \
- (__v4sf)(__m128)(A), \
- (const int)(R)))
-
-#define _mm_cvtts_roundss_u32(A, R) \
- ((unsigned int) \
- __builtin_ia32_vcvttsss2usi32( \
- (__v4sf)(__m128)(A), \
- (const int)(R)))
+#define _mm_cvtts_roundss_si32(A, R) \
+ ((int)__builtin_ia32_vcvttss2sis32((__v4sf)(__m128)(A), (const int)(R)))
+
+#define _mm_cvtts_roundss_u32(A, R) \
+ ((unsigned int)__builtin_ia32_vcvttss2usis32((__v4sf)(__m128)(A), \
+ (const int)(R)))
#ifdef __x86_64__
-#define _mm_cvtts_roundss_u64(A, R) \
- ((unsigned long long) \
- __builtin_ia32_vcvttsss2usi64( \
- (__v4sf)(__m128)(A), \
- (const int)(R)))
-
-#define _mm_cvtts_roundsd_u64(A, R) \
- ((unsigned long long) \
- __builtin_ia32_vcvttssd2usi64( \
- (__v2df)(__m128d)(A), \
- (const int)(R)))
-
-#define _mm_cvtts_roundss_i64(A, R) \
- ((long long) \
- __builtin_ia32_vcvttsss2si64( \
- (__v4sf)(__m128)(A), \
- (const int)(R)))
-
-#define _mm_cvtts_roundss_si64(A, \
- R) \
- ((long long) \
- __builtin_ia32_vcvttsss2si64( \
- (__v4sf)(__m128)(A), \
- (const int)(R)))
-
-#define _mm_cvtts_roundsd_si64(A, \
- R) \
- ((long long) \
- __builtin_ia32_vcvttssd2si64( \
- (__v2df)(__m128d)(A), \
- (const int)(R)))
-
-#define _mm_cvtts_roundsd_i64(A, R) \
- ((long long)__builtin_ia32_vcvttssd2si64((__v2df)(__m128d)(A), \
-#endif /* __x86_64__ */
+#define _mm_cvtts_roundss_u64(A, R) \
+ ((unsigned long long)__builtin_ia32_vcvttss2usis64((__v4sf)(__m128)(A), \
+ (const int)(R)))
- // 128 Bit : Double -> int
-#define _mm_cvttspd_epi32(A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2dqs128_mask( \
- (__v2df)(__m128d)A, \
- (__v4si)(__m128i) \
- _mm_undefined_si128(), \
- (__mmask8)(-1)))
-
-#define _mm_mask_cvttspd_epi32( \
- W, U, A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2dqs128_mask( \
- (__v2df)(__m128d)A, \
- (__v4si)(__m128i)W, \
- (__mmask8)U))
-
-#define _mm_maskz_cvttspd_epi32(U, \
- A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2dqs128_mask( \
- (__v2df)(__m128d)A, \
- (__v4si)(__m128i) \
- _mm_setzero_si128(), \
- (__mmask8)U))
+#define _mm_cvtts_roundsd_u64(A, R) \
+ ((unsigned long long)__builtin_ia32_vcvttsd2usis64((__v2df)(__m128d)(A), \
+ (const int)(R)))
-// 256 Bit : Double -> int
-static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm256_cvttspd_epi32(__m256d A) {
- return (
- (__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
- (__v4df)(__m256d)A,
- (__v4si)
- _mm_undefined_si128(),
- (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m128i
- __DEFAULT_FN_ATTRS128
- _mm256_mask_cvttspd_epi32(
- __m128i W, __mmask8 U,
- __m256d A) {
- return (
- (__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
- (__v4df)A, (__v4si)W, U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m128i
- __DEFAULT_FN_ATTRS128
- _mm256_maskz_cvttspd_epi32(
- __mmask8 U, __m256d A) {
- return (
- (__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
- (__v4df)A,
- (__v4si)
- _mm_setzero_si128(),
- U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
-#define _mm256_cvtts_roundpd_epi32( \
- A, R) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2dqs256_round_mask( \
- (__v4df)(__m256d)A, \
- (__v4si)(__m128i) \
- _mm_undefined_si128(), \
- (__mmask8) - 1, \
- (int)(R)))
-
-#define _mm256_mask_cvtts_roundpd_epi32( \
- W, U, A, R) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2dqs256_round_mask( \
- (__v4df)(__m256d)A, \
- (__v4si)(__m128i)W, \
- (__mmask8)U, (int)(R)))
-
-#define _mm256_maskz_cvtts_roundpd_epi32( \
- U, A, R) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2dqs256_round_mask( \
- (__v4df)(__m256d)A, \
- (__v4si)(__m128i) \
- _mm_setzero_si128(), \
- (__mmask8)U, (int)(R)))
-
- // 128 Bit : Double -> uint
-#define _mm_cvttspd_epu32(A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2udqs128_mask( \
- (__v2df)(__m128d)A, \
- (__v4si)(__m128i) \
- _mm_undefined_si128(), \
- (__mmask8)(-1)))
-
-#define _mm_mask_cvttspd_epu32( \
- W, U, A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2udqs128_mask( \
- ((__v2df)(__m128d)A), \
- (__v4si)(__m128i)W, \
- (__mmask8)U))
-
-#define _mm_maskz_cvttspd_epu32(U, \
- A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2udqs128_mask( \
- (__v2df)(__m128d)A, \
- (__v4si)(__m128i) \
- _mm_setzero_si128(), \
- (__mmask8)U))
-
- // 256 Bit : Double -> uint
- static __inline__ __m128i
- __DEFAULT_FN_ATTRS128
- _mm256_cvttspd_epu32(__m256d A) {
- return (
- (__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
- (__v4df)A,
- (__v4si)
- _mm_undefined_si128(),
- (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m128i
- __DEFAULT_FN_ATTRS128
- _mm256_mask_cvttspd_epu32(
- __m128i W, __mmask8 U,
- __m256d A) {
- return (
- (__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
- (__v4df)A, (__v4si)W, U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m128i
- __DEFAULT_FN_ATTRS128
- _mm256_maskz_cvttspd_epu32(
- __mmask8 U, __m256d A) {
- return (
- (__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
- (__v4df)A,
- (__v4si)
- _mm_setzero_si128(),
- U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
-#define _mm256_cvtts_roundpd_epu32( \
- A, R) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2udqs256_round_mask( \
- (__v4df)(__m256d)A, \
- (__v4si)(__m128i) \
- _mm_undefined_si128(), \
- (__mmask8) - 1, \
- (int)(R)))
-
-#define _mm256_mask_cvtts_roundpd_epu32( \
- W, U, A, R) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2udqs256_round_mask( \
- (__v4df)(__m256d)A, \
- (__v4si)(__m128i)W, \
- (__mmask8)U, (int)(R)))
-
-#define _mm256_maskz_cvtts_roundpd_epu32( \
- U, A, R) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2udqs256_round_mask( \
- (__v4df)(__m256d)A, \
- (__v4si)(__m128i) \
- _mm_setzero_si128(), \
- (__mmask8)U, (int)(R)))
-
- // 128 Bit : Double -> long
-#define _mm_cvttspd_epi64(A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2qqs128_mask( \
- (__v2df)(__m128d)A, \
- (__v2di) \
- _mm_undefined_si128(), \
- (__mmask8) - 1))
-
-#define _mm_mask_cvttspd_epi64( \
- W, U, A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2qqs128_mask( \
- (__v2df)(__m128d)A, \
- (__v2di)W, (__mmask8)U))
-
-#define _mm_maskz_cvttspd_epi64(U, \
- A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2qqs128_mask( \
- (__v2df)(__m128d)A, \
- (__v2di) \
- _mm_setzero_si128(), \
- (__mmask8)U))
-
- // 256 Bit : Double -> long
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_cvttspd_epi64(__m256d A) {
- return (
- (__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
- (__v4df)A,
- (__v4di)
- _mm256_undefined_si256(),
- (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_mask_cvttspd_epi64(
- __m256i W, __mmask8 U,
- __m256d A) {
- return (
- (__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
- (__v4df)A, (__v4di)W, U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_maskz_cvttspd_epi64(
- __mmask8 U, __m256d A) {
- return (
- (__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
- (__v4df)A,
- (__v4di)
- _mm256_setzero_si256(),
- U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
-#define _mm256_cvtts_roundpd_epi64( \
- A, R) \
- ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( \
- (__v4df)A, \
- (__v4di) \
- _mm256_undefined_si256(), \
- (__mmask8) - 1, (int)R))
-
-#define _mm256_mask_cvtts_roundpd_epi64( \
- W, U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttpd2qqs256_round_mask( \
- (__v4df)A, (__v4di)W, \
- (__mmask8)U, (int)R))
+#define _mm_cvtts_roundss_i64(A, R) \
+ ((long long)__builtin_ia32_vcvttss2sis64((__v4sf)(__m128)(A), (const int)(R)))
-#define _mm256_maskz_cvtts_roundpd_epi64( \
- U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttpd2qqs256_round_mask( \
- (__v4df)A, \
- (__v4di) \
- _mm256_setzero_si256(), \
- (__mmask8)U, (int)R))
+#define _mm_cvtts_roundss_si64(A, R) \
+ ((long long)__builtin_ia32_vcvttss2sis64((__v4sf)(__m128)(A), (const int)(R)))
- // 128 Bit : Double -> ulong
-#define _mm_cvttspd_epu64(A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2uqqs128_mask( \
- (__v2df)(__m128d)A, \
- (__v2di) \
- _mm_undefined_si128(), \
- (__mmask8) - 1))
-
-#define _mm_mask_cvttspd_epu64( \
- W, U, A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2uqqs128_mask( \
- (__v2df)(__m128d)A, \
- (__v2di)W, (__mmask8)U))
-
-#define _mm_maskz_cvttspd_epu64(U, \
- A) \
- ((__m128i) \
- __builtin_ia32_vcvttpd2uqqs128_mask( \
- (__v2df)(__m128d)A, \
- (__v2di) \
- _mm_setzero_si128(), \
- (__mmask8)U))
-
- // 256 Bit : Double -> ulong
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_cvttspd_epu64(__m256d A) {
- return (
- (__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
- (__v4df)A,
- (__v4di)
- _mm256_undefined_si256(),
- (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_mask_cvttspd_epu64(
- __m256i W, __mmask8 U,
- __m256d A) {
- return (
- (__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
- (__v4df)A, (__v4di)W, U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_maskz_cvttspd_epu64(
- __mmask8 U, __m256d A) {
- return (
- (__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
- (__v4df)A,
- (__v4di)
- _mm256_setzero_si256(),
- U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
-#define _mm256_cvtts_roundpd_epu64( \
- A, R) \
- ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \
- (__v4df)A, \
- (__v4di) \
- _mm256_undefined_si256(), \
- (__mmask8) - 1, (int)R))
-
-#define _mm256_mask_cvtts_roundpd_epu64( \
- W, U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttpd2uqqs256_round_mask( \
- (__v4df)A, (__v4di)W, \
- (__mmask8)U, (int)R))
+#define _mm_cvtts_roundsd_si64(A, R) \
+ ((long long)__builtin_ia32_vcvttsd2sis64((__v2df)(__m128d)(A), \
+ (const int)(R)))
-#define _mm256_maskz_cvtts_roundpd_epu64( \
- U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttpd2uqqs256_round_mask( \
- (__v4df)A, \
- (__v4di) \
- _mm256_setzero_si256(), \
- (__mmask8)U, (int)R))
+#define _mm_cvtts_roundsd_i64(A, R) \
+ ((long long)__builtin_ia32_vcvttsd2sis64((__v2df)(__m128d)(A), \
+ (const int)(R)))
+#endif /* __x86_64__ */
- // 128 Bit : float -> int
-#define _mm_cvttsps_epi32(A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2dqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v4si)(__m128i) \
- _mm_undefined_si128(), \
- (__mmask8)(-1)))
-
-#define _mm_mask_cvttsps_epi32( \
- W, U, A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2dqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v4si)(__m128i)W, \
- (__mmask8)U))
-
-#define _mm_maskz_cvttsps_epi32(U, \
- A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2dqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v4si)(__m128i) \
- _mm_setzero_si128(), \
- (__mmask8)U))
-
- // 256 Bit : float -> int
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_cvttsps_epi32(__m256 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
- (__v8sf)A,
- (__v8si)
- _mm256_undefined_si256(),
- (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_mask_cvttsps_epi32(
- __m256i W, __mmask8 U,
- __m256 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
- (__v8sf)(__m256)A,
- (__v8si)W, U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_maskz_cvttsps_epi32(
- __mmask8 U, __m256 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
- (__v8sf)(__m256)A,
- (__v8si)
- _mm256_setzero_si256(),
- U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
-#define _mm256_cvtts_roundps_epi32( \
- A, R) \
- ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \
- (__v8sf)(__m256)A, \
- (__v8si)(__m256i) \
- _mm256_undefined_si256(), \
- (__mmask8) - 1, (int)(R)))
-
-#define _mm256_mask_cvtts_roundps_epi32( \
- W, U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttps2dqs256_round_mask( \
- (__v8sf)(__m256)A, \
- (__v8si)(__m256i)W, \
- (__mmask8)U, (int)(R)))
-
-#define _mm256_maskz_cvtts_roundps_epi32( \
- U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttps2dqs256_round_mask( \
- (__v8sf)(__m256)A, \
- (__v8si)(__m256i) \
- _mm256_setzero_si256(), \
- (__mmask8)U, (int)(R)))
-
- // 128 Bit : float -> uint
-#define _mm_cvttsps_epu32(A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2udqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v4si)(__m128i) \
- _mm_undefined_si128(), \
- (__mmask8)(-1)))
-
-#define _mm_mask_cvttsps_epu32( \
- W, U, A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2udqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v4si)(__m128i)W, \
- (__mmask8)U))
-
-#define _mm_maskz_cvttsps_epu32(U, \
- A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2udqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v4si)(__m128i) \
- _mm_setzero_si128(), \
- (__mmask8)U))
-
- // 256 Bit : float -> uint
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_cvttsps_epu32(__m256 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
- (__v8sf)A,
- (__v8si)
- _mm256_undefined_si256(),
- (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_mask_cvttsps_epu32(
- __m256i W, __mmask8 U,
- __m256 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
- (__v8sf)A, (__v8si)W, U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_maskz_cvttsps_epu32(
- __mmask8 U, __m256 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
- (__v8sf)A,
- (__v8si)
- _mm256_setzero_si256(),
- U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
-#define _mm256_cvtts_roundps_epu32( \
- A, R) \
- ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \
- (__v8sf)(__m256)A, \
- (__v8si)(__m256i) \
- _mm256_undefined_si256(), \
- (__mmask8) - 1, (int)(R)))
-
-#define _mm256_mask_cvtts_roundps_epu32( \
- W, U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttps2udqs256_round_mask( \
- (__v8sf)(__m256)A, \
- (__v8si)(__m256i)W, \
- (__mmask8)U, (int)(R)))
-
-#define _mm256_maskz_cvtts_roundps_epu32( \
- U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttps2udqs256_round_mask( \
- (__v8sf)(__m256)A, \
- (__v8si)(__m256i) \
- _mm256_setzero_si256(), \
- (__mmask8)U, (int)(R)))
-
- // 128 bit : float -> long
-#define _mm_cvttsps_epi64(A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2qqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v2di) \
- _mm_undefined_si128(), \
- (__mmask8) - 1))
-
-#define _mm_mask_cvttsps_epi64( \
- W, U, A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2qqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v2di)(__m128i)W, \
- (__mmask8)U))
-
-#define _mm_maskz_cvttsps_epi64(U, \
- A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2qqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v2di) \
- _mm_setzero_si128(), \
- (__mmask8)U))
- /*
- // 256 bit : float -> long
- */
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_cvttsps_epi64(__m128 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
- (__v4sf)A,
- (__v4di)
- _mm256_undefined_si256(),
- (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
- }
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_mask_cvttsps_epi64(
- __m256i W, __mmask8 U,
- __m128 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
- (__v4sf)A, (__v4di)W, U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_maskz_cvttsps_epi64(
- __mmask8 U, __m128 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
- (__v4sf)A,
- (__v4di)
- _mm256_setzero_si256(),
- U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
-#define _mm256_cvtts_roundps_epi64( \
- A, R) \
- ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \
- (__v4sf)(__m128)A, \
- (__v4di) \
- _mm256_undefined_si256(), \
- (__mmask8) - 1, (int)R))
-
-#define _mm256_mask_cvtts_roundps_epi64( \
- W, U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttps2qqs256_round_mask( \
- (__v4sf)(__m128)A, \
- (__v4di)W, (__mmask8)U, \
- (int)R))
-
-#define _mm256_maskz_cvtts_roundps_epi64( \
- U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttps2qqs256_round_mask( \
- (__v4sf)(__m128)A, \
- (__v4di) \
- _mm256_setzero_si256(), \
- (__mmask8)U, (int)R))
+// 128 Bit : Double -> int
+#define _mm_cvttspd_epi32(A) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
+ (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8)(-1)))
- // 128 bit : float -> ulong
-#define _mm_cvttsps_epu64(A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2uqqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v2di) \
- _mm_undefined_si128(), \
- (__mmask8) - 1))
-
-#define _mm_mask_cvttsps_epu64( \
- W, U, A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2uqqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v2di)(__m128i)W, \
- (__mmask8)U))
-
-#define _mm_maskz_cvttsps_epu64(U, \
- A) \
- ((__m128i) \
- __builtin_ia32_vcvttps2uqqs128_mask( \
- (__v4sf)(__m128)A, \
- (__v2di) \
- _mm_setzero_si128(), \
- (__mmask8)U))
- /*
- // 256 bit : float -> ulong
- */
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_cvttsps_epu64(__m128 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
- (__v4sf)A,
- (__v4di)
- _mm256_undefined_si256(),
- (__mmask8)-1,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_mask_cvttsps_epu64(
- __m256i W, __mmask8 U,
- __m128 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
- (__v4sf)A, (__v4di)W, U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
- static __inline__ __m256i
- __DEFAULT_FN_ATTRS
- _mm256_maskz_cvttsps_epu64(
- __mmask8 U, __m128 A) {
- return (
- (__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
- (__v4sf)A,
- (__v4di)
- _mm256_setzero_si256(),
- U,
- _MM_FROUND_CUR_DIRECTION));
- }
-
-#define _mm256_cvtts_roundps_epu64( \
- A, R) \
- ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
- (__v4sf)(__m128)A, \
- (__v4di) \
- _mm256_undefined_si256(), \
- (__mmask8) - 1, (int)R))
-
-#define _mm256_mask_cvtts_roundps_epu64( \
- W, U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttps2uqqs256_round_mask( \
- (__v4sf)(__m128)A, \
- (__v4di)W, (__mmask8)U, \
- (int)R))
-
-#define _mm256_maskz_cvtts_roundps_epu64( \
- U, A, R) \
- ((__m256i) \
- __builtin_ia32_vcvttps2uqqs256_round_mask( \
- (__v4sf)(__m128)A, \
- (__v4di) \
- _mm256_setzero_si256(), \
+#define _mm_mask_cvttspd_epi32(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
+ (__v2df)(__m128d)A, (__v4si)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epi32(U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
+ (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : Double -> int
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm256_cvttspd_epi32(__m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
+ (__v4df)(__m256d)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm256_mask_cvttspd_epi32(__m128i W, __mmask8 U, __m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
+ (__v4df)A, (__v4si)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
+ (__v4df)A, (__v4si)_mm_setzero_si128(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundpd_epi32(A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8) - 1, (int)(R)))
+
+#define _mm256_mask_cvtts_roundpd_epi32(W, U, A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)W, (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundpd_epi32(U, A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U, \
+ (int)(R)))
+
+// 128 Bit : Double -> uint
+#define _mm_cvttspd_epu32(A) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
+ (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8)(-1)))
+
+#define _mm_mask_cvttspd_epu32(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
+ ((__v2df)(__m128d)A), (__v4si)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epu32(U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
+ (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : Double -> uint
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm256_cvttspd_epu32(__m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
+ (__v4df)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm256_mask_cvttspd_epu32(__m128i W, __mmask8 U, __m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
+ (__v4df)A, (__v4si)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm256_maskz_cvttspd_epu32(__mmask8 U, __m256d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
+ (__v4df)A, (__v4si)_mm_setzero_si128(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundpd_epu32(A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8) - 1, (int)(R)))
+
+#define _mm256_mask_cvtts_roundpd_epu32(W, U, A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)W, (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundpd_epu32(U, A, R) \
+ ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \
+ (__v4df)(__m256d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U, \
+ (int)(R)))
+
+// 128 Bit : Double -> long
+#define _mm_cvttspd_epi64(A) \
+ ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( \
+ (__v2df)(__m128d)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+
+#define _mm_mask_cvttspd_epi64(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask((__v2df)(__m128d)A, (__v2di)W, \
+ (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epi64(U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( \
+ (__v2df)(__m128d)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : Double -> long
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttspd_epi64(__m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
+ (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttspd_epi64(__m256i W, __mmask8 U, __m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
+ (__v4df)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttspd_epi64(__mmask8 U, __m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
+ (__v4df)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundpd_epi64(A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( \
+ (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, (int)R))
+
+#define _mm256_mask_cvtts_roundpd_epi64(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask((__v4df)A, (__v4di)W, \
+ (__mmask8)U, (int)R))
+
+#define _mm256_maskz_cvtts_roundpd_epi64(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( \
+ (__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
+
+// 128 Bit : Double -> ulong
+#define _mm_cvttspd_epu64(A) \
+ ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( \
+ (__v2df)(__m128d)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+
+#define _mm_mask_cvttspd_epu64(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask((__v2df)(__m128d)A, (__v2di)W, \
+ (__mmask8)U))
+
+#define _mm_maskz_cvttspd_epu64(U, A) \
+ ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( \
+ (__v2df)(__m128d)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : Double -> ulong
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttspd_epu64(__m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
+ (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttspd_epu64(__m256i W, __mmask8 U, __m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
+ (__v4df)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttspd_epu64(__mmask8 U, __m256d A) {
+ return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
+ (__v4df)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundpd_epu64(A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \
+ (__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, (int)R))
+
+#define _mm256_mask_cvtts_roundpd_epu64(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask((__v4df)A, (__v4di)W, \
(__mmask8)U, (int)R))
+#define _mm256_maskz_cvtts_roundpd_epu64(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \
+ (__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
+
+// 128 Bit : float -> int
+#define _mm_cvttsps_epi32(A) \
+ ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8)(-1)))
+
+#define _mm_mask_cvttsps_epi32(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epi32(U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : float -> int
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi32(__m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
+ (__v8sf)A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttsps_epi32(__m256i W, __mmask8 U, __m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
+ (__v8sf)(__m256)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
+ (__v8sf)(__m256)A, (__v8si)_mm256_setzero_si256(), U,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundps_epi32(A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_undefined_si256(), \
+ (__mmask8) - 1, (int)(R)))
+
+#define _mm256_mask_cvtts_roundps_epi32(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)W, (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundps_epi32(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_setzero_si256(), (__mmask8)U, \
+ (int)(R)))
+
+// 128 Bit : float -> uint
+#define _mm_cvttsps_epu32(A) \
+ ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_undefined_si128(), \
+ (__mmask8)(-1)))
+
+#define _mm_mask_cvttsps_epu32(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epu32(U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
+ (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+
+// 256 Bit : float -> uint
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epu32(__m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
+ (__v8sf)A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttsps_epu32(__m256i W, __mmask8 U, __m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
+ (__v8sf)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttsps_epu32(__mmask8 U, __m256 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
+ (__v8sf)A, (__v8si)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundps_epu32(A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_undefined_si256(), \
+ (__mmask8) - 1, (int)(R)))
+
+#define _mm256_mask_cvtts_roundps_epu32(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)W, (__mmask8)U, (int)(R)))
+
+#define _mm256_maskz_cvtts_roundps_epu32(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \
+ (__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_setzero_si256(), (__mmask8)U, \
+ (int)(R)))
+
+// 128 bit : float -> long
+#define _mm_cvttsps_epi64(A) \
+ ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+
+#define _mm_mask_cvttsps_epi64(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epi64(U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+/*
+// 256 bit : float -> long
+*/
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi64(__m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
+ (__v4sf)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttsps_epi64(__m256i W, __mmask8 U, __m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
+ (__v4sf)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttsps_epi64(__mmask8 U, __m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
+ (__v4sf)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundps_epi64(A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, \
+ (int)R))
+
+#define _mm256_mask_cvtts_roundps_epi64(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)W, (__mmask8)U, (int)R))
+
+#define _mm256_maskz_cvtts_roundps_epi64(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
+
+// 128 bit : float -> ulong
+#define _mm_cvttsps_epu64(A) \
+ ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+
+#define _mm_mask_cvttsps_epu64(W, U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)(__m128i)W, (__mmask8)U))
+
+#define _mm_maskz_cvttsps_epu64(U, A) \
+ ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
+ (__v4sf)(__m128)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+/*
+// 256 bit : float -> ulong
+*/
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epu64(__m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
+ (__v4sf)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
+ _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_cvttsps_epu64(__m256i W, __mmask8 U, __m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
+ (__v4sf)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_cvttsps_epu64(__mmask8 U, __m128 A) {
+ return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
+ (__v4sf)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
+}
+
+#define _mm256_cvtts_roundps_epu64(A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, \
+ (int)R))
+
+#define _mm256_mask_cvtts_roundps_epu64(W, U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)W, (__mmask8)U, (int)R))
+
+#define _mm256_maskz_cvtts_roundps_epu64(U, A, R) \
+ ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
+ (__v4sf)(__m128)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
+
#undef __DEFAULT_FN_ATTRS128
#undef __DEFAULT_FN_ATTRS
-#endif /*__AVX10_2SATCVTDSINTRIN_H*/
+#endif // __AVX10_2SATCVTDSINTRIN_H
diff --git a/clang/lib/Sema/SemaX86.cpp b/clang/lib/Sema/SemaX86.cpp
index 452a53e8883335..6a4d78f0ca9084 100644
--- a/clang/lib/Sema/SemaX86.cpp
+++ b/clang/lib/Sema/SemaX86.cpp
@@ -46,14 +46,14 @@ bool SemaX86::CheckBuiltinRoundingOrSAE(unsigned BuiltinID, CallExpr *TheCall) {
case X86::BI__builtin_ia32_vcvttsh2si64:
case X86::BI__builtin_ia32_vcvttsh2usi32:
case X86::BI__builtin_ia32_vcvttsh2usi64:
- case X86::BI__builtin_ia32_vcvttssd2si32:
- case X86::BI__builtin_ia32_vcvttssd2usi32:
- case X86::BI__builtin_ia32_vcvttsss2si32:
- case X86::BI__builtin_ia32_vcvttsss2usi32:
- case X86::BI__builtin_ia32_vcvttssd2si64:
- case X86::BI__builtin_ia32_vcvttssd2usi64:
- case X86::BI__builtin_ia32_vcvttsss2si64:
- case X86::BI__builtin_ia32_vcvttsss2usi64:
+ case X86::BI__builtin_ia32_vcvttsd2sis32:
+ case X86::BI__builtin_ia32_vcvttsd2usis32:
+ case X86::BI__builtin_ia32_vcvttss2sis32:
+ case X86::BI__builtin_ia32_vcvttss2usis32:
+ case X86::BI__builtin_ia32_vcvttsd2sis64:
+ case X86::BI__builtin_ia32_vcvttsd2usis64:
+ case X86::BI__builtin_ia32_vcvttss2sis64:
+ case X86::BI__builtin_ia32_vcvttss2usis64:
ArgNum = 1;
break;
case X86::BI__builtin_ia32_maxpd512:
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
index 3c6f7f77100088..32b1a2094c4da3 100644
--- a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
@@ -5,37 +5,37 @@
long long test_mm_cvttssd_si64(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_si64(
- // CHECK: @llvm.x86.avx512.vcvttssd2si64(<2 x double>
+ // CHECK: @llvm.x86.avx512.vcvttsd2sis64(<2 x double>
return _mm_cvtts_roundsd_si64(__A, _MM_FROUND_NO_EXC);
}
long long test_mm_cvttssd_i64(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_i64(
- // CHECK: @llvm.x86.avx512.vcvttssd2si64(<2 x double>
+ // CHECK: @llvm.x86.avx512.vcvttsd2sis64(<2 x double>
return _mm_cvtts_roundsd_i64(__A, _MM_FROUND_NO_EXC);
}
unsigned long long test_mm_cvttssd_u64(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_u64(
- // CHECK: @llvm.x86.avx512.vcvttssd2usi64(<2 x double>
+ // CHECK: @llvm.x86.avx512.vcvttsd2usis64(<2 x double>
return _mm_cvtts_roundsd_u64(__A, _MM_FROUND_NO_EXC);
}
float test_mm_cvttsss_i64(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_i64(
- // CHECK: @llvm.x86.avx512.vcvttsss2si64(<4 x float>
+ // CHECK: @llvm.x86.avx512.vcvttss2sis64(<4 x float>
return _mm_cvtts_roundss_i64(__A, _MM_FROUND_NO_EXC);
}
long long test_mm_cvttsss_si64(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_si64(
- // CHECK: @llvm.x86.avx512.vcvttsss2si64(<4 x float>
+ // CHECK: @llvm.x86.avx512.vcvttss2sis64(<4 x float>
return _mm_cvtts_roundss_si64(__A, _MM_FROUND_NO_EXC);
}
unsigned long long test_mm_cvttsss_u64(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_u64(
- // CHECK: @llvm.x86.avx512.vcvttsss2usi64(<4 x float>
+ // CHECK: @llvm.x86.avx512.vcvttss2usis64(<4 x float>
return _mm_cvtts_roundss_u64(__A, _MM_FROUND_NO_EXC);
}
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
index 5ea91d67b461d0..889ebc221c79e4 100644
--- a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
@@ -5,37 +5,37 @@
int test_mm_cvttssd_i32(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_i32
- // CHECK: @llvm.x86.avx512.vcvttssd2si
+ // CHECK: @llvm.x86.avx512.vcvttsd2sis
return _mm_cvtts_roundsd_i32(__A, _MM_FROUND_NO_EXC);
}
int test_mm_cvttssd_si32(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_si32(
- // CHECK: @llvm.x86.avx512.vcvttssd2si(<2 x double>
+ // CHECK: @llvm.x86.avx512.vcvttsd2sis(<2 x double>
return _mm_cvtts_roundsd_si32(__A, _MM_FROUND_NO_EXC);
}
unsigned test_mm_cvttssd_u32(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_u32(
- // CHECK: @llvm.x86.avx512.vcvttssd2usi(<2 x double>
+ // CHECK: @llvm.x86.avx512.vcvttsd2usis(<2 x double>
return _mm_cvtts_roundsd_u32(__A, _MM_FROUND_NO_EXC);
}
int test_mm_cvttsss_i32(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_i32(
- // CHECK: @llvm.x86.avx512.vcvttsss2si(<4 x float>
+ // CHECK: @llvm.x86.avx512.vcvttss2sis(<4 x float>
return _mm_cvtts_roundss_i32(__A, _MM_FROUND_NO_EXC);
}
int test_mm_cvttsss_si32(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_si32(
- // CHECK: @llvm.x86.avx512.vcvttsss2si(<4 x float>
+ // CHECK: @llvm.x86.avx512.vcvttss2sis(<4 x float>
return _mm_cvtts_roundss_si32(__A, _MM_FROUND_NO_EXC);
}
unsigned test_mm_cvttsss_u32(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_u32(
- // CHECK: @llvm.x86.avx512.vcvttsss2usi(<4 x float>
+ // CHECK: @llvm.x86.avx512.vcvttss2usis(<4 x float>
return _mm_cvtts_roundss_u32(__A, _MM_FROUND_NO_EXC);
}
diff --git a/llvm/include/llvm/IR/IntrinsicsX86.td b/llvm/include/llvm/IR/IntrinsicsX86.td
index 6efda49fe3d8c4..5df5348c993b76 100644
--- a/llvm/include/llvm/IR/IntrinsicsX86.td
+++ b/llvm/include/llvm/IR/IntrinsicsX86.td
@@ -5522,28 +5522,28 @@ let TargetPrefix = "x86" in {
// conversion with saturation
let TargetPrefix = "x86" in {
- def int_x86_avx512_vcvttsss2si : ClangBuiltin<"__builtin_ia32_vcvttsss2si32">,
+ def int_x86_avx512_vcvttss2sis : ClangBuiltin<"__builtin_ia32_vcvttss2sis32">,
DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttsss2si64 : ClangBuiltin<"__builtin_ia32_vcvttsss2si64">,
+ def int_x86_avx512_vcvttss2sis64 : ClangBuiltin<"__builtin_ia32_vcvttss2sis64">,
DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttsss2usi : ClangBuiltin<"__builtin_ia32_vcvttsss2usi32">,
+ def int_x86_avx512_vcvttss2usis : ClangBuiltin<"__builtin_ia32_vcvttss2usis32">,
DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttsss2usi64 : ClangBuiltin<"__builtin_ia32_vcvttsss2usi64">,
+ def int_x86_avx512_vcvttss2usis64 : ClangBuiltin<"__builtin_ia32_vcvttss2usis64">,
DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttssd2si : ClangBuiltin<"__builtin_ia32_vcvttssd2si32">,
+ def int_x86_avx512_vcvttsd2sis : ClangBuiltin<"__builtin_ia32_vcvttsd2sis32">,
DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttssd2si64 : ClangBuiltin<"__builtin_ia32_vcvttssd2si64">,
+ def int_x86_avx512_vcvttsd2sis64 : ClangBuiltin<"__builtin_ia32_vcvttsd2sis64">,
DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttssd2usi : ClangBuiltin<"__builtin_ia32_vcvttssd2usi32">,
+ def int_x86_avx512_vcvttsd2usis : ClangBuiltin<"__builtin_ia32_vcvttsd2usis32">,
DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttssd2usi64 : ClangBuiltin<"__builtin_ia32_vcvttssd2usi64">,
+ def int_x86_avx512_vcvttsd2usis64 : ClangBuiltin<"__builtin_ia32_vcvttsd2usis64">,
DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
def int_x86_avx512_mask_vcvttpd2dqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2dqs128_mask">,
diff --git a/llvm/lib/Target/X86/X86IntrinsicsInfo.h b/llvm/lib/Target/X86/X86IntrinsicsInfo.h
index 77c3947c3801e6..0e6c82e4e2e96c 100644
--- a/llvm/lib/Target/X86/X86IntrinsicsInfo.h
+++ b/llvm/lib/Target/X86/X86IntrinsicsInfo.h
@@ -1574,21 +1574,21 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::CVTS2UI_RND),
X86_INTRINSIC_DATA(avx512_vcvtss2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI,
X86ISD::CVTS2UI_RND),
- X86_INTRINSIC_DATA(avx512_vcvttssd2si, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
+ X86_INTRINSIC_DATA(avx512_vcvttsd2sis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
X86ISD::CVTTS2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttssd2si64, INTR_TYPE_1OP_SAE,
+ X86_INTRINSIC_DATA(avx512_vcvttsd2sis64, INTR_TYPE_1OP_SAE,
X86ISD::CVTTS2SIS, X86ISD::CVTTS2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttssd2usi, INTR_TYPE_1OP_SAE,
+ X86_INTRINSIC_DATA(avx512_vcvttsd2usis, INTR_TYPE_1OP_SAE,
X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttssd2usi64, INTR_TYPE_1OP_SAE,
+ X86_INTRINSIC_DATA(avx512_vcvttsd2usis64, INTR_TYPE_1OP_SAE,
X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttsss2si, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
+ X86_INTRINSIC_DATA(avx512_vcvttss2sis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
X86ISD::CVTTS2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttsss2si64, INTR_TYPE_1OP_SAE,
+ X86_INTRINSIC_DATA(avx512_vcvttss2sis64, INTR_TYPE_1OP_SAE,
X86ISD::CVTTS2SIS, X86ISD::CVTTS2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttsss2usi, INTR_TYPE_1OP_SAE,
+ X86_INTRINSIC_DATA(avx512_vcvttss2usis, INTR_TYPE_1OP_SAE,
X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttsss2usi64, INTR_TYPE_1OP_SAE,
+ X86_INTRINSIC_DATA(avx512_vcvttss2usis64, INTR_TYPE_1OP_SAE,
X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
X86_INTRINSIC_DATA(avx512_vfmadd_f32, INTR_TYPE_3OP, ISD::FMA,
diff --git a/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll b/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
index 7dbc97d7e1aaa5..84374216c0e89f 100644
--- a/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
+++ b/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
@@ -2,77 +2,77 @@
; RUN: llc < %s -verify-machineinstrs -mtriple=x86_64-unknown-unknown --show-mc-encoding -mattr=+avx10.2-256 | FileCheck %s --check-prefixes=CHECK,X64
; RUN: llc < %s -verify-machineinstrs -mtriple=i686-unknown-unknown --show-mc-encoding -mattr=+avx10.2-256 | FileCheck %s --check-prefixes=CHECK,X86
-define i32 @test_x86_avx512_vcvttssd2usi(<2 x double> %a0) {
-; CHECK-LABEL: test_x86_avx512_vcvttssd2usi:
+define i32 @test_x86_avx512_vcvttsd2usis(<2 x double> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttsd2usis:
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttsd2usis %xmm0, %ecx # encoding: [0x62,0xf5,0x7f,0x08,0x6c,0xc8]
; CHECK-NEXT: vcvttsd2usis {sae}, %xmm0, %eax # encoding: [0x62,0xf5,0x7f,0x18,0x6c,0xc0]
; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res0 = call i32 @llvm.x86.avx512.vcvttssd2usi(<2 x double> %a0, i32 4) ;
- %res1 = call i32 @llvm.x86.avx512.vcvttssd2usi(<2 x double> %a0, i32 8) ;
+ %res0 = call i32 @llvm.x86.avx512.vcvttsd2usis(<2 x double> %a0, i32 4) ;
+ %res1 = call i32 @llvm.x86.avx512.vcvttsd2usis(<2 x double> %a0, i32 8) ;
%res2 = add i32 %res0, %res1
ret i32 %res2
}
-declare i32 @llvm.x86.avx512.vcvttssd2usi(<2 x double>, i32) nounwind readnone
+declare i32 @llvm.x86.avx512.vcvttsd2usis(<2 x double>, i32) nounwind readnone
-define i32 @test_x86_avx512_vcvttssd2si(<2 x double> %a0) {
-; CHECK-LABEL: test_x86_avx512_vcvttssd2si:
+define i32 @test_x86_avx512_vcvttsd2sis(<2 x double> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttsd2sis:
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttsd2sis %xmm0, %ecx # encoding: [0x62,0xf5,0x7f,0x08,0x6d,0xc8]
; CHECK-NEXT: vcvttsd2sis {sae}, %xmm0, %eax # encoding: [0x62,0xf5,0x7f,0x18,0x6d,0xc0]
; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res0 = call i32 @llvm.x86.avx512.vcvttssd2si(<2 x double> %a0, i32 4) ;
- %res1 = call i32 @llvm.x86.avx512.vcvttssd2si(<2 x double> %a0, i32 8) ;
+ %res0 = call i32 @llvm.x86.avx512.vcvttsd2sis(<2 x double> %a0, i32 4) ;
+ %res1 = call i32 @llvm.x86.avx512.vcvttsd2sis(<2 x double> %a0, i32 8) ;
%res2 = add i32 %res0, %res1
ret i32 %res2
}
-declare i32 @llvm.x86.avx512.vcvttssd2si(<2 x double>, i32) nounwind readnone
+declare i32 @llvm.x86.avx512.vcvttsd2sis(<2 x double>, i32) nounwind readnone
-define i32 @test_x86_avx512_vcvttsss2si(<4 x float> %a0) {
-; CHECK-LABEL: test_x86_avx512_vcvttsss2si:
+define i32 @test_x86_avx512_vcvttss2sis(<4 x float> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttss2sis:
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttss2sis {sae}, %xmm0, %ecx # encoding: [0x62,0xf5,0x7e,0x18,0x6d,0xc8]
; CHECK-NEXT: vcvttss2sis %xmm0, %eax # encoding: [0x62,0xf5,0x7e,0x08,0x6d,0xc0]
; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res0 = call i32 @llvm.x86.avx512.vcvttsss2si(<4 x float> %a0, i32 8) ;
- %res1 = call i32 @llvm.x86.avx512.vcvttsss2si(<4 x float> %a0, i32 4) ;
+ %res0 = call i32 @llvm.x86.avx512.vcvttss2sis(<4 x float> %a0, i32 8) ;
+ %res1 = call i32 @llvm.x86.avx512.vcvttss2sis(<4 x float> %a0, i32 4) ;
%res2 = add i32 %res0, %res1
ret i32 %res2
}
-declare i32 @llvm.x86.avx512.vcvttsss2si(<4 x float>, i32) nounwind readnone
+declare i32 @llvm.x86.avx512.vcvttss2sis(<4 x float>, i32) nounwind readnone
-define i32 @test_x86_avx512_vcvttsss2si_load(ptr %a0) {
-; X64-LABEL: test_x86_avx512_vcvttsss2si_load:
+define i32 @test_x86_avx512_vcvttss2sis_load(ptr %a0) {
+; X64-LABEL: test_x86_avx512_vcvttss2sis_load:
; X64: # %bb.0:
; X64-NEXT: vcvttss2sis (%rdi), %eax # encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x07]
; X64-NEXT: retq # encoding: [0xc3]
;
-; X86-LABEL: test_x86_avx512_vcvttsss2si_load:
+; X86-LABEL: test_x86_avx512_vcvttss2sis_load:
; X86: # %bb.0:
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax # encoding: [0x8b,0x44,0x24,0x04]
; X86-NEXT: vcvttss2sis (%eax), %eax # encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%a1 = load <4 x float>, ptr %a0
- %res = call i32 @llvm.x86.avx512.vcvttsss2si(<4 x float> %a1, i32 4) ;
+ %res = call i32 @llvm.x86.avx512.vcvttss2sis(<4 x float> %a1, i32 4) ;
ret i32 %res
}
-define i32 @test_x86_avx512_vcvttsss2usi(<4 x float> %a0) {
-; CHECK-LABEL: test_x86_avx512_vcvttsss2usi:
+define i32 @test_x86_avx512_vcvttss2usis(<4 x float> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttss2usis:
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttss2usis {sae}, %xmm0, %ecx # encoding: [0x62,0xf5,0x7e,0x18,0x6c,0xc8]
; CHECK-NEXT: vcvttss2usis %xmm0, %eax # encoding: [0x62,0xf5,0x7e,0x08,0x6c,0xc0]
; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res0 = call i32 @llvm.x86.avx512.vcvttsss2usi(<4 x float> %a0, i32 8) ;
- %res1 = call i32 @llvm.x86.avx512.vcvttsss2usi(<4 x float> %a0, i32 4) ;
+ %res0 = call i32 @llvm.x86.avx512.vcvttss2usis(<4 x float> %a0, i32 8) ;
+ %res1 = call i32 @llvm.x86.avx512.vcvttss2usis(<4 x float> %a0, i32 4) ;
%res2 = add i32 %res0, %res1
ret i32 %res2
}
-declare i32 @llvm.x86.avx512.vcvttsss2usi(<4 x float>, i32) nounwind readnone
+declare i32 @llvm.x86.avx512.vcvttss2usis(<4 x float>, i32) nounwind readnone
define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_256(<4 x double> %x0, <4 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_256:
diff --git a/llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll b/llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll
index 5cf613e89ba502..460411e4222dee 100644
--- a/llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll
+++ b/llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll
@@ -8,12 +8,12 @@ define i64 @test_x86_avx512_vcvttsd2si64(<2 x double> %a0) {
; CHECK-NEXT: vcvttsd2sis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xff,0x18,0x6d,0xc0]
; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
; CHECK-NEXT: retq # encoding: [0xc3]
- %res0 = call i64 @llvm.x86.avx512.vcvttssd2si64(<2 x double> %a0, i32 4) ;
- %res1 = call i64 @llvm.x86.avx512.vcvttssd2si64(<2 x double> %a0, i32 8) ;
+ %res0 = call i64 @llvm.x86.avx512.vcvttsd2sis64(<2 x double> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx512.vcvttsd2sis64(<2 x double> %a0, i32 8) ;
%res2 = add i64 %res0, %res1
ret i64 %res2
}
-declare i64 @llvm.x86.avx512.vcvttssd2si64(<2 x double>, i32) nounwind readnone
+declare i64 @llvm.x86.avx512.vcvttsd2sis64(<2 x double>, i32) nounwind readnone
define i64 @test_x86_avx512_vcvttsd2usi64(<2 x double> %a0) {
; CHECK-LABEL: test_x86_avx512_vcvttsd2usi64:
@@ -22,37 +22,37 @@ define i64 @test_x86_avx512_vcvttsd2usi64(<2 x double> %a0) {
; CHECK-NEXT: vcvttsd2usis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xff,0x18,0x6c,0xc0]
; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
; CHECK-NEXT: retq # encoding: [0xc3]
- %res0 = call i64 @llvm.x86.avx512.vcvttssd2usi64(<2 x double> %a0, i32 4) ;
- %res1 = call i64 @llvm.x86.avx512.vcvttssd2usi64(<2 x double> %a0, i32 8) ;
+ %res0 = call i64 @llvm.x86.avx512.vcvttsd2usis64(<2 x double> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx512.vcvttsd2usis64(<2 x double> %a0, i32 8) ;
%res2 = add i64 %res0, %res1
ret i64 %res2
}
-declare i64 @llvm.x86.avx512.vcvttssd2usi64(<2 x double>, i32) nounwind readnone
+declare i64 @llvm.x86.avx512.vcvttsd2usis64(<2 x double>, i32) nounwind readnone
-define i64 @test_x86_avx512_vcvttsss2si64(<4 x float> %a0) {
-; CHECK-LABEL: test_x86_avx512_vcvttsss2si64:
+define i64 @test_x86_avx512_vcvttss2sis64(<4 x float> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttss2sis64:
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttss2sis %xmm0, %rcx # encoding: [0x62,0xf5,0xfe,0x08,0x6d,0xc8]
; CHECK-NEXT: vcvttss2sis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xfe,0x18,0x6d,0xc0]
; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
; CHECK-NEXT: retq # encoding: [0xc3]
- %res0 = call i64 @llvm.x86.avx512.vcvttsss2si64(<4 x float> %a0, i32 4) ;
- %res1 = call i64 @llvm.x86.avx512.vcvttsss2si64(<4 x float> %a0, i32 8) ;
+ %res0 = call i64 @llvm.x86.avx512.vcvttss2sis64(<4 x float> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx512.vcvttss2sis64(<4 x float> %a0, i32 8) ;
%res2 = add i64 %res0, %res1
ret i64 %res2
}
-declare i64 @llvm.x86.avx512.vcvttsss2si64(<4 x float>, i32) nounwind readnone
+declare i64 @llvm.x86.avx512.vcvttss2sis64(<4 x float>, i32) nounwind readnone
-define i64 @test_x86_avx512_vcvttsss2usi64(<4 x float> %a0) {
-; CHECK-LABEL: test_x86_avx512_vcvttsss2usi64:
+define i64 @test_x86_avx512_vcvttss2usis64(<4 x float> %a0) {
+; CHECK-LABEL: test_x86_avx512_vcvttss2usis64:
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttss2usis %xmm0, %rcx # encoding: [0x62,0xf5,0xfe,0x08,0x6c,0xc8]
; CHECK-NEXT: vcvttss2usis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xfe,0x18,0x6c,0xc0]
; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
; CHECK-NEXT: retq # encoding: [0xc3]
- %res0 = call i64 @llvm.x86.avx512.vcvttsss2usi64(<4 x float> %a0, i32 4) ;
- %res1 = call i64 @llvm.x86.avx512.vcvttsss2usi64(<4 x float> %a0, i32 8) ;
+ %res0 = call i64 @llvm.x86.avx512.vcvttss2usis64(<4 x float> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx512.vcvttss2usis64(<4 x float> %a0, i32 8) ;
%res2 = add i64 %res0, %res1
ret i64 %res2
}
-declare i64 @llvm.x86.avx512.vcvttsss2usi64(<4 x float>, i32) nounwind readnone
+declare i64 @llvm.x86.avx512.vcvttss2usis64(<4 x float>, i32) nounwind readnone
>From 90548f990114dc0b94277ea669b317a6102b2f56 Mon Sep 17 00:00:00 2001
From: Malay Sanghi <malay.sanghi at intel.com>
Date: Thu, 5 Sep 2024 17:00:48 +0800
Subject: [PATCH 4/7] review4
---
clang/include/clang/Basic/BuiltinsX86_64.def | 8 ++--
clang/lib/Headers/avx10_2satcvtdsintrin.h | 28 ++++++-------
.../X86/avx10_2_512satcvtds-builtins.c | 42 +++----------------
.../X86/avx10_2satcvtds-builtins-x64.c | 39 +++++++++++++++++
.../CodeGen/X86/avx10_2satcvtds-builtins.c | 13 ++++--
5 files changed, 69 insertions(+), 61 deletions(-)
diff --git a/clang/include/clang/Basic/BuiltinsX86_64.def b/clang/include/clang/Basic/BuiltinsX86_64.def
index 4bd71ba274b968..db381aa77e7612 100644
--- a/clang/include/clang/Basic/BuiltinsX86_64.def
+++ b/clang/include/clang/Basic/BuiltinsX86_64.def
@@ -100,10 +100,10 @@ TARGET_BUILTIN(__builtin_ia32_vcvttsh2usi64, "UOiV8xIi", "ncV:128:", "avx512fp16
TARGET_BUILTIN(__builtin_ia32_directstore_u64, "vULi*ULi", "n", "movdiri")
// AVX10.2 SATCVT-DS
-TARGET_BUILTIN(__builtin_ia32_vcvttsd2sis64, "OiV2dIi", "ncV:128:", "avx10.2-512")
-TARGET_BUILTIN(__builtin_ia32_vcvttsd2usis64, "UOiV2dIi", "ncV:128:", "avx10.2-512")
-TARGET_BUILTIN(__builtin_ia32_vcvttss2sis64, "OiV4fIi", "ncV:128:", "avx10.2-512")
-TARGET_BUILTIN(__builtin_ia32_vcvttss2usis64, "UOiV4fIi", "ncV:128:", "avx10.2-512")
+TARGET_BUILTIN(__builtin_ia32_vcvttsd2sis64, "OiV2dIi", "ncV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttsd2usis64, "UOiV2dIi", "ncV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttss2sis64, "OiV4fIi", "ncV:128:", "avx10.2-256")
+TARGET_BUILTIN(__builtin_ia32_vcvttss2usis64, "UOiV4fIi", "ncV:128:", "avx10.2-256")
// UINTR
TARGET_BUILTIN(__builtin_ia32_clui, "v", "n", "uintr")
diff --git a/clang/lib/Headers/avx10_2satcvtdsintrin.h b/clang/lib/Headers/avx10_2satcvtdsintrin.h
index 75c6114a5bb2e1..4e91b4a17f0c4b 100644
--- a/clang/lib/Headers/avx10_2satcvtdsintrin.h
+++ b/clang/lib/Headers/avx10_2satcvtdsintrin.h
@@ -68,7 +68,7 @@
(const int)(R)))
#endif /* __x86_64__ */
-// 128 Bit : Double -> int
+// 128 Bit : Double -> int
#define _mm_cvttspd_epi32(A) \
((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
(__v2df)(__m128d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
@@ -82,7 +82,7 @@
((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
(__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
-// 256 Bit : Double -> int
+// 256 Bit : Double -> int
static __inline__ __m128i __DEFAULT_FN_ATTRS128
_mm256_cvttspd_epi32(__m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
@@ -116,7 +116,7 @@ _mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A) {
(__v4df)(__m256d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U, \
(int)(R)))
-// 128 Bit : Double -> uint
+// 128 Bit : Double -> uint
#define _mm_cvttspd_epu32(A) \
((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
(__v2df)(__m128d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
@@ -130,7 +130,7 @@ _mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A) {
((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
(__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
-// 256 Bit : Double -> uint
+// 256 Bit : Double -> uint
static __inline__ __m128i __DEFAULT_FN_ATTRS128
_mm256_cvttspd_epu32(__m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
@@ -164,7 +164,7 @@ _mm256_maskz_cvttspd_epu32(__mmask8 U, __m256d A) {
(__v4df)(__m256d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U, \
(int)(R)))
-// 128 Bit : Double -> long
+// 128 Bit : Double -> long
#define _mm_cvttspd_epi64(A) \
((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( \
(__v2df)(__m128d)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
@@ -177,7 +177,7 @@ _mm256_maskz_cvttspd_epu32(__mmask8 U, __m256d A) {
((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( \
(__v2df)(__m128d)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
-// 256 Bit : Double -> long
+// 256 Bit : Double -> long
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttspd_epi64(__m256d A) {
return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
(__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
@@ -208,7 +208,7 @@ _mm256_maskz_cvttspd_epi64(__mmask8 U, __m256d A) {
((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( \
(__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
-// 128 Bit : Double -> ulong
+// 128 Bit : Double -> ulong
#define _mm_cvttspd_epu64(A) \
((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( \
(__v2df)(__m128d)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
@@ -221,7 +221,7 @@ _mm256_maskz_cvttspd_epi64(__mmask8 U, __m256d A) {
((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( \
(__v2df)(__m128d)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
-// 256 Bit : Double -> ulong
+// 256 Bit : Double -> ulong
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttspd_epu64(__m256d A) {
return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
@@ -253,7 +253,7 @@ _mm256_maskz_cvttspd_epu64(__mmask8 U, __m256d A) {
((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \
(__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
-// 128 Bit : float -> int
+// 128 Bit : float -> int
#define _mm_cvttsps_epi32(A) \
((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
(__v4sf)(__m128)A, (__v4si)(__m128i)_mm_undefined_si128(), \
@@ -267,7 +267,7 @@ _mm256_maskz_cvttspd_epu64(__mmask8 U, __m256d A) {
((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
(__v4sf)(__m128)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
-// 256 Bit : float -> int
+// 256 Bit : float -> int
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi32(__m256 A) {
return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
(__v8sf)A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,
@@ -301,7 +301,7 @@ _mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A) {
(__v8sf)(__m256)A, (__v8si)(__m256i)_mm256_setzero_si256(), (__mmask8)U, \
(int)(R)))
-// 128 Bit : float -> uint
+// 128 Bit : float -> uint
#define _mm_cvttsps_epu32(A) \
((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
(__v4sf)(__m128)A, (__v4si)(__m128i)_mm_undefined_si128(), \
@@ -315,7 +315,7 @@ _mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A) {
((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
(__v4sf)(__m128)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
-// 256 Bit : float -> uint
+// 256 Bit : float -> uint
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epu32(__m256 A) {
return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
@@ -361,9 +361,7 @@ _mm256_maskz_cvttsps_epu32(__mmask8 U, __m256 A) {
#define _mm_maskz_cvttsps_epi64(U, A) \
((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
(__v4sf)(__m128)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
-/*
// 256 bit : float -> long
-*/
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi64(__m128 A) {
return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
@@ -407,9 +405,7 @@ _mm256_maskz_cvttsps_epi64(__mmask8 U, __m128 A) {
#define _mm_maskz_cvttsps_epu64(U, A) \
((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
(__v4sf)(__m128)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
-/*
// 256 bit : float -> ulong
-*/
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epu64(__m128 A) {
return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
index 889ebc221c79e4..af92975d5953a5 100644
--- a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
@@ -1,44 +1,9 @@
-// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-unknown-unknown -target-feature +avx10.2-512 -emit-llvm -o - | FileCheck %s
+// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386 -target-feature +avx10.2-512 -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,X86
+// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64 -target-feature +avx10.2-512 -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,X64
#include <immintrin.h>
#include <stddef.h>
-int test_mm_cvttssd_i32(__m128d __A) {
- // CHECK-LABEL: @test_mm_cvttssd_i32
- // CHECK: @llvm.x86.avx512.vcvttsd2sis
- return _mm_cvtts_roundsd_i32(__A, _MM_FROUND_NO_EXC);
-}
-
-int test_mm_cvttssd_si32(__m128d __A) {
- // CHECK-LABEL: @test_mm_cvttssd_si32(
- // CHECK: @llvm.x86.avx512.vcvttsd2sis(<2 x double>
- return _mm_cvtts_roundsd_si32(__A, _MM_FROUND_NO_EXC);
-}
-
-unsigned test_mm_cvttssd_u32(__m128d __A) {
- // CHECK-LABEL: @test_mm_cvttssd_u32(
- // CHECK: @llvm.x86.avx512.vcvttsd2usis(<2 x double>
- return _mm_cvtts_roundsd_u32(__A, _MM_FROUND_NO_EXC);
-}
-
-int test_mm_cvttsss_i32(__m128 __A) {
- // CHECK-LABEL: @test_mm_cvttsss_i32(
- // CHECK: @llvm.x86.avx512.vcvttss2sis(<4 x float>
- return _mm_cvtts_roundss_i32(__A, _MM_FROUND_NO_EXC);
-}
-
-int test_mm_cvttsss_si32(__m128 __A) {
- // CHECK-LABEL: @test_mm_cvttsss_si32(
- // CHECK: @llvm.x86.avx512.vcvttss2sis(<4 x float>
- return _mm_cvtts_roundss_si32(__A, _MM_FROUND_NO_EXC);
-}
-
-unsigned test_mm_cvttsss_u32(__m128 __A) {
- // CHECK-LABEL: @test_mm_cvttsss_u32(
- // CHECK: @llvm.x86.avx512.vcvttss2usis(<4 x float>
- return _mm_cvtts_roundss_u32(__A, _MM_FROUND_NO_EXC);
-}
-
__m256i test_mm512_cvttspd_epi32(__m512d A) {
// CHECK-LABEL: test_mm512_cvttspd_epi32
// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
@@ -181,3 +146,6 @@ __m512i test_mm512_maskz_cvtts_roundps_epu32(__mmask8 U, __m512 A) {
// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
return _mm512_maskz_cvtts_roundps_epu32(U, A, _MM_FROUND_NO_EXC);
}
+
+// X64: {{.*}}
+// X86: {{.*}}
\ No newline at end of file
diff --git a/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c
index c72283c449ea9e..5d0af555465ff5 100644
--- a/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c
+++ b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c
@@ -3,6 +3,45 @@
#include <immintrin.h>
#include <stddef.h>
+// scalar
+
+int test_mm_cvttssd_i32(__m128d __A) {
+ // CHECK-LABEL: @test_mm_cvttssd_i32
+ // CHECK: @llvm.x86.avx512.vcvttsd2sis
+ return _mm_cvtts_roundsd_i32(__A, _MM_FROUND_NO_EXC);
+}
+
+int test_mm_cvttssd_si32(__m128d __A) {
+ // CHECK-LABEL: @test_mm_cvttssd_si32(
+ // CHECK: @llvm.x86.avx512.vcvttsd2sis(<2 x double>
+ return _mm_cvtts_roundsd_si32(__A, _MM_FROUND_NO_EXC);
+}
+
+unsigned test_mm_cvttssd_u32(__m128d __A) {
+ // CHECK-LABEL: @test_mm_cvttssd_u32(
+ // CHECK: @llvm.x86.avx512.vcvttsd2usis(<2 x double>
+ return _mm_cvtts_roundsd_u32(__A, _MM_FROUND_NO_EXC);
+}
+
+int test_mm_cvttsss_i32(__m128 __A) {
+ // CHECK-LABEL: @test_mm_cvttsss_i32(
+ // CHECK: @llvm.x86.avx512.vcvttss2sis(<4 x float>
+ return _mm_cvtts_roundss_i32(__A, _MM_FROUND_NO_EXC);
+}
+
+int test_mm_cvttsss_si32(__m128 __A) {
+ // CHECK-LABEL: @test_mm_cvttsss_si32(
+ // CHECK: @llvm.x86.avx512.vcvttss2sis(<4 x float>
+ return _mm_cvtts_roundss_si32(__A, _MM_FROUND_NO_EXC);
+}
+
+unsigned test_mm_cvttsss_u32(__m128 __A) {
+ // CHECK-LABEL: @test_mm_cvttsss_u32(
+ // CHECK: @llvm.x86.avx512.vcvttss2usis(<4 x float>
+ return _mm_cvtts_roundss_u32(__A, _MM_FROUND_NO_EXC);
+}
+
+// vector
// 128 bit
__m128i test_mm_cvttspd_epi64(__m128d A){
// CHECK-LABEL: @test_mm_cvttspd_epi64
diff --git a/clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c
index 5eee57ddc6a837..b537f91ed3a3d7 100644
--- a/clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c
+++ b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c
@@ -1,4 +1,5 @@
-// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-unknown-unknown -target-feature +avx10.2-256 -emit-llvm -o - | FileCheck %s
+// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386 -target-feature +avx10.2-256 -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,X86
+// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64 -target-feature +avx10.2-256 -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,X64
#include <immintrin.h>
#include <stddef.h>
@@ -16,7 +17,7 @@ __m128i test_mm_mask_cvttspd_epi32(__m128i W, __mmask8 U, __m128d A){
}
__m128i test_mm_maskz_cvttspd_epi32( __mmask8 U, __m128d A){
-// CHECK-LABEL: @test_mm_maskz_cvttspd_epi32
+// CHECK-LABEL: @test_mm_maskz_cvttspd_epi32(
// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.128(<2 x double>
return _mm_maskz_cvttspd_epi32(U,A);
}
@@ -38,11 +39,13 @@ __m128i test_mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A){
// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
return _mm256_maskz_cvttspd_epi32(U,A);
}
+
__m128i test_mm256_cvtts_roundpd_epi32(__m256d A){
// CHECK-LABEL: @test_mm256_cvtts_roundpd_epi32
// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
return _mm256_cvtts_roundpd_epi32(A, _MM_FROUND_NEARBYINT);
}
+
__m128i test_mm256_mask_cvtts_roundpd_epi32(__m128i W,__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_mask_cvtts_roundpd_epi32
// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
@@ -97,6 +100,7 @@ __m128i test_mm256_cvtts_roundpd_epu32(__m256d A){
// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
return _mm256_cvtts_roundpd_epu32(A, _MM_FROUND_NEARBYINT);
}
+
__m128i test_mm256_mask_cvtts_roundpd_epu32(__m128i W,__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_mask_cvtts_roundpd_epu32
// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
@@ -127,7 +131,6 @@ __m128i test_mm_maskz_cvttsps_epi32( __mmask8 U, __m128 A){
return _mm_maskz_cvttsps_epi32(U,A);
}
-
__m256i test_mm256_cvttsps_epi32(__m256 A){
// CHECK-LABEL: @test_mm256_cvttsps_epi32
// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
@@ -146,12 +149,12 @@ __m256i test_mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A){
return _mm256_maskz_cvttsps_epi32(U,A);
}
-
__m256i test_mm256_cvtts_roundps_epi32(__m256 A){
// CHECK-LABEL: @test_mm256_cvtts_roundps_epi32
// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
return _mm256_cvtts_roundps_epi32(A, _MM_FROUND_NEARBYINT);
}
+
__m256i test_mm256_mask_cvtts_roundps_epi32(__m256i W,__mmask8 U, __m256 A){
// CHECK-LABEL: @test_mm256_mask_cvtts_roundps_epi32
// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
@@ -218,3 +221,5 @@ __m256i test_mm256_maskz_cvtts_roundps_epu32(__mmask8 U, __m256 A){
return _mm256_maskz_cvtts_roundps_epu32(U,A,_MM_FROUND_NEARBYINT);
}
+// X64: {{.*}}
+// X86: {{.*}}
>From f7110dd6f4492ef3c08867f2a5f994ed4b7ed430 Mon Sep 17 00:00:00 2001
From: Malay Sanghi <malay.sanghi at intel.com>
Date: Fri, 6 Sep 2024 14:02:04 +0800
Subject: [PATCH 5/7] review5
---
clang/lib/Headers/avx10_2satcvtdsintrin.h | 19 +-
.../X86/avx10_2_512satcvtds-builtins-x64.c | 60 ++---
.../X86/avx10_2_512satcvtds-builtins.c | 48 ++--
.../X86/avx10_2satcvtds-builtins-x64.c | 98 ++++----
.../CodeGen/X86/avx10_2satcvtds-builtins.c | 72 +++---
llvm/include/llvm/IR/IntrinsicsX86.td | 64 ++---
llvm/lib/Target/X86/X86InstrAVX10.td | 231 +++++++++---------
llvm/lib/Target/X86/X86IntrinsicsInfo.h | 131 +++++-----
.../X86/avx10_2_512satcvtds-intrinsics.ll | 80 +++---
.../CodeGen/X86/avx10_2satcvtds-intrinsics.ll | 182 +++++++-------
.../X86/avx10_2satcvtds-x64-intrinsics.ll | 24 +-
11 files changed, 502 insertions(+), 507 deletions(-)
diff --git a/clang/lib/Headers/avx10_2satcvtdsintrin.h b/clang/lib/Headers/avx10_2satcvtdsintrin.h
index 4e91b4a17f0c4b..af79ff4e044fec 100644
--- a/clang/lib/Headers/avx10_2satcvtdsintrin.h
+++ b/clang/lib/Headers/avx10_2satcvtdsintrin.h
@@ -20,10 +20,6 @@
__attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \
__min_vector_width__(256)))
-#define __DEFAULT_FN_ATTRS128 \
- __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \
- __min_vector_width__(128)))
-
#define _mm_cvtts_roundsd_i32(A, R) \
((int)__builtin_ia32_vcvttsd2sis32((__v2df)(__m128)(A), (const int)(R)))
@@ -83,20 +79,19 @@
(__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
// 256 Bit : Double -> int
-static __inline__ __m128i __DEFAULT_FN_ATTRS128
-_mm256_cvttspd_epi32(__m256d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_cvttspd_epi32(__m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
(__v4df)(__m256d)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
_MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS128
+static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvttspd_epi32(__m128i W, __mmask8 U, __m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
(__v4df)A, (__v4si)W, U, _MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS128
+static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
(__v4df)A, (__v4si)_mm_setzero_si128(), U, _MM_FROUND_CUR_DIRECTION));
@@ -131,20 +126,19 @@ _mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A) {
(__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
// 256 Bit : Double -> uint
-static __inline__ __m128i __DEFAULT_FN_ATTRS128
-_mm256_cvttspd_epu32(__m256d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_cvttspd_epu32(__m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
(__v4df)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
_MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS128
+static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvttspd_epu32(__m128i W, __mmask8 U, __m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
(__v4df)A, (__v4si)W, U, _MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS128
+static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvttspd_epu32(__mmask8 U, __m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
(__v4df)A, (__v4si)_mm_setzero_si128(), U, _MM_FROUND_CUR_DIRECTION));
@@ -438,6 +432,5 @@ _mm256_maskz_cvttsps_epu64(__mmask8 U, __m128 A) {
((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
(__v4sf)(__m128)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
-#undef __DEFAULT_FN_ATTRS128
#undef __DEFAULT_FN_ATTRS
#endif // __AVX10_2SATCVTDSINTRIN_H
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
index 32b1a2094c4da3..8c8959a03d7bd4 100644
--- a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins-x64.c
@@ -5,180 +5,180 @@
long long test_mm_cvttssd_si64(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_si64(
- // CHECK: @llvm.x86.avx512.vcvttsd2sis64(<2 x double>
+ // CHECK: @llvm.x86.avx10.vcvttsd2sis64(<2 x double>
return _mm_cvtts_roundsd_si64(__A, _MM_FROUND_NO_EXC);
}
long long test_mm_cvttssd_i64(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_i64(
- // CHECK: @llvm.x86.avx512.vcvttsd2sis64(<2 x double>
+ // CHECK: @llvm.x86.avx10.vcvttsd2sis64(<2 x double>
return _mm_cvtts_roundsd_i64(__A, _MM_FROUND_NO_EXC);
}
unsigned long long test_mm_cvttssd_u64(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_u64(
- // CHECK: @llvm.x86.avx512.vcvttsd2usis64(<2 x double>
+ // CHECK: @llvm.x86.avx10.vcvttsd2usis64(<2 x double>
return _mm_cvtts_roundsd_u64(__A, _MM_FROUND_NO_EXC);
}
float test_mm_cvttsss_i64(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_i64(
- // CHECK: @llvm.x86.avx512.vcvttss2sis64(<4 x float>
+ // CHECK: @llvm.x86.avx10.vcvttss2sis64(<4 x float>
return _mm_cvtts_roundss_i64(__A, _MM_FROUND_NO_EXC);
}
long long test_mm_cvttsss_si64(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_si64(
- // CHECK: @llvm.x86.avx512.vcvttss2sis64(<4 x float>
+ // CHECK: @llvm.x86.avx10.vcvttss2sis64(<4 x float>
return _mm_cvtts_roundss_si64(__A, _MM_FROUND_NO_EXC);
}
unsigned long long test_mm_cvttsss_u64(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_u64(
- // CHECK: @llvm.x86.avx512.vcvttss2usis64(<4 x float>
+ // CHECK: @llvm.x86.avx10.vcvttss2usis64(<4 x float>
return _mm_cvtts_roundss_u64(__A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_cvttspd_epi64(__m512d A) {
// CHECK-LABEL: test_mm512_cvttspd_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.512(<8 x double>
return _mm512_cvttspd_epi64(A);
}
__m512i test_mm512_mask_cvttspd_epi64(__m512i W, __mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_mask_cvttspd_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.512(<8 x double>
return _mm512_mask_cvttspd_epi64(W, U, A);
}
__m512i test_mm512_maskz_cvttspd_epi64(__mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_maskz_cvttspd_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.512(<8 x double>
return _mm512_maskz_cvttspd_epi64(U, A);
}
__m512i test_mm512_cvtts_roundpd_epi64(__m512d A) {
// CHECK-LABEL: test_mm512_cvtts_roundpd_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.512(<8 x double>
return _mm512_cvtts_roundpd_epi64(A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_mask_cvtts_roundpd_epi64(__m512i W, __mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundpd_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.512(<8 x double>
return _mm512_mask_cvtts_roundpd_epi64(W, U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_maskz_cvtts_roundpd_epi64(__mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundpd_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.512(<8 x double>
return _mm512_maskz_cvtts_roundpd_epi64(U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_cvttspd_epu64(__m512d A) {
// CHECK-LABEL: test_mm512_cvttspd_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.512(<8 x double>
return _mm512_cvttspd_epu64(A);
}
__m512i test_mm512_mask_cvttspd_epu64(__m512i W, __mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_mask_cvttspd_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.512(<8 x double>
return _mm512_mask_cvttspd_epu64(W, U, A);
}
__m512i test_mm512_maskz_cvttspd_epu64(__mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_maskz_cvttspd_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.512(<8 x double>
return _mm512_maskz_cvttspd_epu64(U, A);
}
__m512i test_mm512_cvtts_roundpd_epu64(__m512d A) {
// CHECK-LABEL: test_mm512_cvtts_roundpd_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.512(<8 x double>
return _mm512_cvtts_roundpd_epu64(A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_mask_cvtts_roundpd_epu64(__m512i W, __mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundpd_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.512(<8 x double>
return _mm512_mask_cvtts_roundpd_epu64(W, U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_maskz_cvtts_roundpd_epu64(__mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundpd_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.512(<8 x double>
return _mm512_maskz_cvtts_roundpd_epu64(U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_cvttsps_epi64(__m256 A) {
// CHECK-LABEL: test_mm512_cvttsps_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.512(<8 x float>
return _mm512_cvttsps_epi64(A);
}
__m512i test_mm512_mask_cvttsps_epi64(__m512i W, __mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_mask_cvttsps_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.512(<8 x float>
return _mm512_mask_cvttsps_epi64(W, U, A);
}
__m512i test_mm512_maskz_cvttsps_epi64(__mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_maskz_cvttsps_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.512(<8 x float>
return _mm512_maskz_cvttsps_epi64(U, A);
}
__m512i test_mm512_cvtts_roundps_epi64(__m256 A) {
// CHECK-LABEL: test_mm512_cvtts_roundps_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.512(<8 x float>
return _mm512_cvtts_roundps_epi64(A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_mask_cvtts_roundps_epi64(__m512i W, __mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundps_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.512(<8 x float>
return _mm512_mask_cvtts_roundps_epi64(W, U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_maskz_cvtts_roundps_epi64(__mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundps_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.512(<8 x float>
return _mm512_maskz_cvtts_roundps_epi64(U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_cvttsps_epu64(__m256 A) {
// CHECK-LABEL: test_mm512_cvttsps_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.512(<8 x float>
return _mm512_cvttsps_epu64(A);
}
__m512i test_mm512_mask_cvttsps_epu64(__m512i W, __mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_mask_cvttsps_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.512(<8 x float>
return _mm512_mask_cvttsps_epu64(W, U, A);
}
__m512i test_mm512_maskz_cvttsps_epu64(__mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_maskz_cvttsps_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.512(<8 x float>
return _mm512_maskz_cvttsps_epu64(U, A);
}
__m512i test_mm512_cvtts_roundps_epu64(__m256 A) {
// CHECK-LABEL: test_mm512_cvtts_roundps_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.512(<8 x float>
return _mm512_cvtts_roundps_epu64(A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_mask_cvtts_roundps_epu64(__m512i W, __mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundps_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.512(<8 x float>
return _mm512_mask_cvtts_roundps_epu64(W, U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_maskz_cvtts_roundps_epu64(__mmask8 U, __m256 A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundps_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.512(<8 x float>
return _mm512_maskz_cvtts_roundps_epu64(U, A, _MM_FROUND_NO_EXC);
}
diff --git a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
index af92975d5953a5..cccee04627d22e 100644
--- a/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
+++ b/clang/test/CodeGen/X86/avx10_2_512satcvtds-builtins.c
@@ -6,144 +6,144 @@
__m256i test_mm512_cvttspd_epi32(__m512d A) {
// CHECK-LABEL: test_mm512_cvttspd_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.512(<8 x double>
return _mm512_cvttspd_epi32(A);
}
__m256i test_mm512_mask_cvttspd_epi32(__m256i W, __mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_mask_cvttspd_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.512(<8 x double>
return _mm512_mask_cvttspd_epi32(W, U, A);
}
__m256i test_mm512_maskz_cvttspd_epi32(__mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_maskz_cvttspd_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.512(<8 x double>
return _mm512_maskz_cvttspd_epi32(U, A);
}
__m256i test_mm512_cvtts_roundpd_epi32(__m512d A) {
// CHECK-LABEL: test_mm512_cvtts_roundpd_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.512(<8 x double>
return _mm512_cvtts_roundpd_epi32(A, _MM_FROUND_NO_EXC);
}
__m256i test_mm512_mask_cvtts_roundpd_epi32(__m256i W, __mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundpd_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.512(<8 x double>
return _mm512_mask_cvtts_roundpd_epi32(W, U, A, _MM_FROUND_NO_EXC);
}
__m256i test_mm512_maskz_cvtts_roundpd_epi32(__mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundpd_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.512(<8 x double>
return _mm512_maskz_cvtts_roundpd_epi32(U, A, _MM_FROUND_NO_EXC);
}
__m256i test_mm512_cvttspd_epu32(__m512d A) {
// CHECK-LABEL: test_mm512_cvttspd_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.512(<8 x double>
return _mm512_cvttspd_epu32(A);
}
__m256i test_mm512_mask_cvttspd_epu32(__m256i W, __mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_mask_cvttspd_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.512(<8 x double>
return _mm512_mask_cvttspd_epu32(W, U, A);
}
__m256i test_mm512_maskz_cvttspd_epu32(__mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_maskz_cvttspd_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.512(<8 x double>
return _mm512_maskz_cvttspd_epu32(U, A);
}
__m256i test_mm512_cvtts_roundpd_epu32(__m512d A) {
// CHECK-LABEL: test_mm512_cvtts_roundpd_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.512(<8 x double>
return _mm512_cvtts_roundpd_epu32(A, _MM_FROUND_NO_EXC);
}
__m256i test_mm512_mask_cvtts_roundpd_epu32(__m256i W, __mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundpd_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.512(<8 x double>
return _mm512_mask_cvtts_roundpd_epu32(W, U, A, _MM_FROUND_NO_EXC);
}
__m256i test_mm512_maskz_cvtts_roundpd_epu32(__mmask8 U, __m512d A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundpd_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.512(<8 x double>
return _mm512_maskz_cvtts_roundpd_epu32(U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_cvttsps_epi32(__m512 A) {
// CHECK-LABEL: test_mm512_cvttsps_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float>
return _mm512_cvttsps_epi32(A);
}
__m512i test_mm512_mask_cvttsps_epi32(__m512i W, __mmask8 U, __m512 A) {
// CHECK-LABEL: test_mm512_mask_cvttsps_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float>
return _mm512_mask_cvttsps_epi32(W, U, A);
}
__m512i test_mm512_maskz_cvttsps_epi32(__mmask8 U, __m512 A) {
// CHECK-LABEL: test_mm512_maskz_cvttsps_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float>
return _mm512_maskz_cvttsps_epi32(U, A);
}
__m512i test_mm512_cvtts_roundps_epi32(__m512 A) {
// CHECK-LABEL: test_mm512_cvtts_roundps_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float>
return _mm512_cvtts_roundps_epi32(A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_mask_cvtts_roundps_epi32(__m512i W, __mmask8 U, __m512 A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundps_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float>
return _mm512_mask_cvtts_roundps_epi32(W, U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_maskz_cvtts_roundps_epi32(__mmask8 U, __m512 A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundps_epi32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float>
return _mm512_maskz_cvtts_roundps_epi32(U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_cvttsps_epu32(__m512 A) {
// CHECK-LABEL: test_mm512_cvttsps_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.512(<16 x float>
return _mm512_cvttsps_epu32(A);
}
__m512i test_mm512_mask_cvttsps_epu32(__m512i W, __mmask8 U, __m512 A) {
// CHECK-LABEL: test_mm512_mask_cvttsps_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.512(<16 x float>
return _mm512_mask_cvttsps_epu32(W, U, A);
}
__m512i test_mm512_maskz_cvttsps_epu32(__mmask8 U, __m512 A) {
// CHECK-LABEL: test_mm512_maskz_cvttsps_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.512(<16 x float>
return _mm512_maskz_cvttsps_epu32(U, A);
}
__m512i test_mm512_cvtts_roundps_epu32(__m512 A) {
// CHECK-LABEL: test_mm512_cvtts_roundps_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.512(<16 x float>
return _mm512_cvtts_roundps_epu32(A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_mask_cvtts_roundps_epu32(__m512i W, __mmask8 U, __m512 A) {
// CHECK-LABEL: test_mm512_mask_cvtts_roundps_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.512(<16 x float>
return _mm512_mask_cvtts_roundps_epu32(W, U, A, _MM_FROUND_NO_EXC);
}
__m512i test_mm512_maskz_cvtts_roundps_epu32(__mmask8 U, __m512 A) {
// CHECK-LABEL: test_mm512_maskz_cvtts_roundps_epu32
- // CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.512(<16 x float>
return _mm512_maskz_cvtts_roundps_epu32(U, A, _MM_FROUND_NO_EXC);
}
diff --git a/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c
index 5d0af555465ff5..00384731a51f71 100644
--- a/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c
+++ b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins-x64.c
@@ -7,37 +7,37 @@
int test_mm_cvttssd_i32(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_i32
- // CHECK: @llvm.x86.avx512.vcvttsd2sis
+ // CHECK: @llvm.x86.avx10.vcvttsd2sis
return _mm_cvtts_roundsd_i32(__A, _MM_FROUND_NO_EXC);
}
int test_mm_cvttssd_si32(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_si32(
- // CHECK: @llvm.x86.avx512.vcvttsd2sis(<2 x double>
+ // CHECK: @llvm.x86.avx10.vcvttsd2sis(<2 x double>
return _mm_cvtts_roundsd_si32(__A, _MM_FROUND_NO_EXC);
}
unsigned test_mm_cvttssd_u32(__m128d __A) {
// CHECK-LABEL: @test_mm_cvttssd_u32(
- // CHECK: @llvm.x86.avx512.vcvttsd2usis(<2 x double>
+ // CHECK: @llvm.x86.avx10.vcvttsd2usis(<2 x double>
return _mm_cvtts_roundsd_u32(__A, _MM_FROUND_NO_EXC);
}
int test_mm_cvttsss_i32(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_i32(
- // CHECK: @llvm.x86.avx512.vcvttss2sis(<4 x float>
+ // CHECK: @llvm.x86.avx10.vcvttss2sis(<4 x float>
return _mm_cvtts_roundss_i32(__A, _MM_FROUND_NO_EXC);
}
int test_mm_cvttsss_si32(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_si32(
- // CHECK: @llvm.x86.avx512.vcvttss2sis(<4 x float>
+ // CHECK: @llvm.x86.avx10.vcvttss2sis(<4 x float>
return _mm_cvtts_roundss_si32(__A, _MM_FROUND_NO_EXC);
}
unsigned test_mm_cvttsss_u32(__m128 __A) {
// CHECK-LABEL: @test_mm_cvttsss_u32(
- // CHECK: @llvm.x86.avx512.vcvttss2usis(<4 x float>
+ // CHECK: @llvm.x86.avx10.vcvttss2usis(<4 x float>
return _mm_cvtts_roundss_u32(__A, _MM_FROUND_NO_EXC);
}
@@ -45,218 +45,218 @@ unsigned test_mm_cvttsss_u32(__m128 __A) {
// 128 bit
__m128i test_mm_cvttspd_epi64(__m128d A){
// CHECK-LABEL: @test_mm_cvttspd_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.128(<2 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.128(<2 x double>
return _mm_cvttspd_epi64(A);
}
__m128i test_mm_mask_cvttspd_epi64(__m128i W, __mmask8 U, __m128d A){
// CHECK-LABEL: @test_mm_mask_cvttspd_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.128(<2 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.128(<2 x double>
return _mm_mask_cvttspd_epi64(W, U, A);
}
__m128i test_mm_maskz_cvttspd_epi64(__mmask8 U,__m128d A){
// CHECK-LABEL: @test_mm_maskz_cvttspd_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.128(<2 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.128(<2 x double>
return _mm_maskz_cvttspd_epi64(U, A);
}
__m128i test_mm_cvttspd_epu64(__m128d A){
// CHECK-LABEL: @test_mm_cvttspd_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.128(<2 x double>
- return _mm_cvttspd_epu64( A);
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.128(<2 x double>
+ return _mm_cvttspd_epu64(A);
}
__m128i test_mm_mask_cvttspd_epu64(__m128i W, __mmask8 U, __m128d A){
// CHECK-LABEL: @test_mm_mask_cvttspd_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.128(<2 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.128(<2 x double>
return _mm_mask_cvttspd_epu64(W, U, A);
}
__m128i test_mm_maskz_cvttspd_epu64(__mmask8 U,__m128d A){
// CHECK-LABEL: @test_mm_maskz_cvttspd_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.128(<2 x double>
+ // CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.128(<2 x double>
return _mm_maskz_cvttspd_epu64(U, A);
}
// 256 bit
__m256i test_mm256_cvttspd_epi64(__m256d A){
// CHECK-LABEL: @test_mm256_cvttspd_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
- return _mm256_cvttspd_epi64( A);
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.256(<4 x double>
+ return _mm256_cvttspd_epi64(A);
}
__m256i test_mm256_mask_cvttspd_epi64(__m256i W,__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_mask_cvttspd_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.256(<4 x double>
return _mm256_mask_cvttspd_epi64(W,U, A);
}
__m256i test_mm256_maskz_cvttspd_epi64(__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_maskz_cvttspd_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.256(<4 x double>
return _mm256_maskz_cvttspd_epi64(U, A);
}
__m256i test_mm256_cvtts_roundpd_epi64(__m256d A){
// CHECK-LABEL: @test_mm256_cvtts_roundpd_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.256(<4 x double>
return _mm256_cvtts_roundpd_epi64(A,_MM_FROUND_NEARBYINT );
}
__m256i test_mm256_mask_cvtts_roundpd_epi64(__m256i W,__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_mask_cvtts_roundpd_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.256(<4 x double>
return _mm256_mask_cvtts_roundpd_epi64(W,U,A,_MM_FROUND_NEARBYINT );
}
__m256i test_mm256_maskz_cvtts_roundpd_epi64(__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_maskz_cvtts_roundpd_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2qqs.round.256(<4 x double>
return _mm256_maskz_cvtts_roundpd_epi64(U,A,_MM_FROUND_NEARBYINT );
}
__m256i test_mm256_cvttspd_epu64(__m256d A){
// CHECK-LABEL: @test_mm256_cvttspd_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
- return _mm256_cvttspd_epu64( A);
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.256(<4 x double>
+ return _mm256_cvttspd_epu64(A);
}
__m256i test_mm256_mask_cvttspd_epu64(__m256i W,__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_mask_cvttspd_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.256(<4 x double>
return _mm256_mask_cvttspd_epu64(W,U, A);
}
__m256i test_mm256_maskz_cvttspd_epu64(__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_maskz_cvttspd_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.256(<4 x double>
return _mm256_maskz_cvttspd_epu64(U, A);
}
__m256i test_mm256_cvtts_roundpd_epu64(__m256d A){
// CHECK-LABEL: @test_mm256_cvtts_roundpd_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.256(<4 x double>
return _mm256_cvtts_roundpd_epu64(A,_MM_FROUND_NEARBYINT );
}
__m256i test_mm256_mask_cvtts_roundpd_epu64(__m256i W,__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_mask_cvtts_roundpd_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.256(<4 x double>
return _mm256_mask_cvtts_roundpd_epu64(W,U,A,_MM_FROUND_NEARBYINT );
}
__m256i test_mm256_maskz_cvtts_roundpd_epu64(__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_maskz_cvtts_roundpd_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2uqqs.round.256(<4 x double>
return _mm256_maskz_cvtts_roundpd_epu64(U,A,_MM_FROUND_NEARBYINT );
}
// 128 bit
__m128i test_mm_cvttsps_epi64(__m128 A){
// CHECK-LABEL: @test_mm_cvttsps_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.128(<4 x float>
- return _mm_cvttsps_epi64( A);
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.128(<4 x float>
+ return _mm_cvttsps_epi64(A);
}
__m128i test_mm_mask_cvttsps_epi64(__m128i W, __mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm_mask_cvttsps_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.128(<4 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.128(<4 x float>
return _mm_mask_cvttsps_epi64(W, U, A);
}
__m128i test_mm_maskz_cvttsps_epi64(__mmask8 U,__m128 A){
// CHECK-LABEL: @test_mm_maskz_cvttsps_epi64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.128(<4 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.128(<4 x float>
return _mm_maskz_cvttsps_epi64(U, A);
}
__m128i test_mm_cvttsps_epu64(__m128 A){
// CHECK-LABEL: @test_mm_cvttsps_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.128(<4 x float>
- return _mm_cvttsps_epu64( A);
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.128(<4 x float>
+ return _mm_cvttsps_epu64(A);
}
__m128i test_mm_mask_cvttsps_epu64(__m128i W, __mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm_mask_cvttsps_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.128(<4 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.128(<4 x float>
return _mm_mask_cvttsps_epu64(W, U, A);
}
__m128i test_mm_maskz_cvttsps_epu64(__mmask8 U,__m128 A){
// CHECK-LABEL: @test_mm_maskz_cvttsps_epu64
- // CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.128(<4 x float>
+ // CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.128(<4 x float>
return _mm_maskz_cvttsps_epu64(U, A);
}
__m256i test_mm256_cvttsps_epi64(__m128 A){
// CHECK-LABEL: @test_mm256_cvttsps_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
- return _mm256_cvttsps_epi64( A);
+// CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.256(<4 x float>
+ return _mm256_cvttsps_epi64(A);
}
__m256i test_mm256_mask_cvttsps_epi64(__m256i W,__mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm256_mask_cvttsps_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.256(<4 x float>
return _mm256_mask_cvttsps_epi64(W,U, A);
}
__m256i test_mm256_maskz_cvttsps_epi64(__mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm256_maskz_cvttsps_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.256(<4 x float>
return _mm256_maskz_cvttsps_epi64(U, A);
}
__m256i test_mm256_cvtts_roundps_epi64(__m128 A){
// CHECK-LABEL: @test_mm256_cvtts_roundps_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.256(<4 x float>
return _mm256_cvtts_roundps_epi64(A, _MM_FROUND_NEARBYINT );
}
__m256i test_mm256_mask_cvtts_roundps_epi64(__m256i W,__mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm256_mask_cvtts_roundps_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.256(<4 x float>
return _mm256_mask_cvtts_roundps_epi64(W,U,A,_MM_FROUND_NEARBYINT );
}
__m256i test_mm256_maskz_cvtts_roundps_epi64(__mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm256_maskz_cvtts_roundps_epi64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2qqs.round.256(<4 x float>
return _mm256_maskz_cvtts_roundps_epi64(U,A,_MM_FROUND_NEARBYINT );
}
__m256i test_mm256_cvttsps_epu64(__m128 A){
// CHECK-LABEL: @test_mm256_cvttsps_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
- return _mm256_cvttsps_epu64( A);
+// CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.256(<4 x float>
+ return _mm256_cvttsps_epu64(A);
}
__m256i test_mm256_mask_cvttsps_epu64(__m256i W,__mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm256_mask_cvttsps_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.256(<4 x float>
return _mm256_mask_cvttsps_epu64(W,U, A);
}
__m256i test_mm256_maskz_cvttsps_epu64(__mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm256_maskz_cvttsps_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.256(<4 x float>
return _mm256_maskz_cvttsps_epu64(U, A);
}
__m256i test_mm256_cvtts_roundps_epu64(__m128 A){
// CHECK-LABEL: @test_mm256_cvtts_roundps_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.256(<4 x float>
return _mm256_cvtts_roundps_epu64(A, _MM_FROUND_NEARBYINT );
}
__m256i test_mm256_mask_cvtts_roundps_epu64(__m256i W,__mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm256_mask_cvtts_roundps_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.256(<4 x float>
return _mm256_mask_cvtts_roundps_epu64(W,U,A,_MM_FROUND_NEARBYINT );
}
__m256i test_mm256_maskz_cvtts_roundps_epu64(__mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm256_maskz_cvtts_roundps_epu64
-// CHECK: @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2uqqs.round.256(<4 x float>
return _mm256_maskz_cvtts_roundps_epu64(U,A,_MM_FROUND_NEARBYINT );
}
diff --git a/clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c
index b537f91ed3a3d7..bb90f6a086fa2b 100644
--- a/clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c
+++ b/clang/test/CodeGen/X86/avx10_2satcvtds-builtins.c
@@ -6,218 +6,218 @@
__m128i test_mm_cvttspd_epi32(__m128d A){
// CHECK-LABEL: @test_mm_cvttspd_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.128(<2 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.128(<2 x double>
return _mm_cvttspd_epi32(A);
}
__m128i test_mm_mask_cvttspd_epi32(__m128i W, __mmask8 U, __m128d A){
// CHECK-LABEL: @test_mm_mask_cvttspd_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.128(<2 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.128(<2 x double>
return _mm_mask_cvttspd_epi32(W,U,A);
}
__m128i test_mm_maskz_cvttspd_epi32( __mmask8 U, __m128d A){
// CHECK-LABEL: @test_mm_maskz_cvttspd_epi32(
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.128(<2 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.128(<2 x double>
return _mm_maskz_cvttspd_epi32(U,A);
}
__m128i test_mm256_cvttspd_epi32(__m256d A){
// CHECK-LABEL: @test_mm256_cvttspd_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.256(<4 x double>
return _mm256_cvttspd_epi32(A);
}
__m128i test_mm256_mask_cvttspd_epi32(__m128i W,__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_mask_cvttspd_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.256(<4 x double>
return _mm256_mask_cvttspd_epi32(W,U,A);
}
__m128i test_mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_maskz_cvttspd_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.256(<4 x double>
return _mm256_maskz_cvttspd_epi32(U,A);
}
__m128i test_mm256_cvtts_roundpd_epi32(__m256d A){
// CHECK-LABEL: @test_mm256_cvtts_roundpd_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.256(<4 x double>
return _mm256_cvtts_roundpd_epi32(A, _MM_FROUND_NEARBYINT);
}
__m128i test_mm256_mask_cvtts_roundpd_epi32(__m128i W,__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_mask_cvtts_roundpd_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.256(<4 x double>
return _mm256_mask_cvtts_roundpd_epi32(W,U,A,_MM_FROUND_NEARBYINT);
}
__m128i test_mm256_maskz_cvtts_roundpd_epi32(__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_maskz_cvtts_roundpd_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2dqs.round.256(<4 x double>
return _mm256_maskz_cvtts_roundpd_epi32(U,A,_MM_FROUND_NEARBYINT);
}
__m128i test_mm_cvttspd_epu32(__m128d A){
// CHECK-LABEL: @test_mm_cvttspd_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.128(<2 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.128(<2 x double>
return _mm_cvttspd_epu32(A);
}
__m128i test_mm_mask_cvttspd_epu32(__m128i W, __mmask8 U, __m128d A){
// CHECK-LABEL: @test_mm_mask_cvttspd_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.128(<2 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.128(<2 x double>
return _mm_mask_cvttspd_epu32(W,U,A);
}
__m128i test_mm_maskz_cvttspd_epu32( __mmask8 U, __m128d A){
// CHECK-LABEL: @test_mm_maskz_cvttspd_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.128(<2 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.128(<2 x double>
return _mm_maskz_cvttspd_epu32(U,A);
}
__m128i test_mm256_cvttspd_epu32(__m256d A){
// CHECK-LABEL: @test_mm256_cvttspd_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.256(<4 x double>
return _mm256_cvttspd_epu32(A);
}
__m128i test_mm256_mask_cvttspd_epu32(__m128i W,__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_mask_cvttspd_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.256(<4 x double>
return _mm256_mask_cvttspd_epu32(W,U,A);
}
__m128i test_mm256_maskz_cvttspd_epu32(__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_maskz_cvttspd_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.256(<4 x double>
return _mm256_maskz_cvttspd_epu32(U,A);
}
__m128i test_mm256_cvtts_roundpd_epu32(__m256d A){
// CHECK-LABEL: @test_mm256_cvtts_roundpd_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.256(<4 x double>
return _mm256_cvtts_roundpd_epu32(A, _MM_FROUND_NEARBYINT);
}
__m128i test_mm256_mask_cvtts_roundpd_epu32(__m128i W,__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_mask_cvtts_roundpd_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.256(<4 x double>
return _mm256_mask_cvtts_roundpd_epu32(W,U,A,_MM_FROUND_NEARBYINT);
}
__m128i test_mm256_maskz_cvtts_roundpd_epu32(__mmask8 U, __m256d A){
// CHECK-LABEL: @test_mm256_maskz_cvtts_roundpd_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>
+// CHECK: @llvm.x86.avx10.mask.vcvttpd2udqs.round.256(<4 x double>
return _mm256_maskz_cvtts_roundpd_epu32(U,A,_MM_FROUND_NEARBYINT);
}
__m128i test_mm_cvttsps_epi32(__m128 A){
// CHECK-LABEL: @test_mm_cvttsps_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.128(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.128(<4 x float>
return _mm_cvttsps_epi32(A);
}
__m128i test_mm_mask_cvttsps_epi32(__m128i W, __mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm_mask_cvttsps_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.128(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.128(<4 x float>
return _mm_mask_cvttsps_epi32(W,U,A);
}
__m128i test_mm_maskz_cvttsps_epi32( __mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm_maskz_cvttsps_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.128(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.128(<4 x float>
return _mm_maskz_cvttsps_epi32(U,A);
}
__m256i test_mm256_cvttsps_epi32(__m256 A){
// CHECK-LABEL: @test_mm256_cvttsps_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.256(<8 x float>
return _mm256_cvttsps_epi32(A);
}
__m256i test_mm256_mask_cvttsps_epi32(__m256i W,__mmask8 U, __m256 A){
// CHECK-LABEL: @test_mm256_mask_cvttsps_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.256(<8 x float>
return _mm256_mask_cvttsps_epi32(W,U,A);
}
__m256i test_mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A){
// CHECK-LABEL: @test_mm256_maskz_cvttsps_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.256(<8 x float>
return _mm256_maskz_cvttsps_epi32(U,A);
}
__m256i test_mm256_cvtts_roundps_epi32(__m256 A){
// CHECK-LABEL: @test_mm256_cvtts_roundps_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.256(<8 x float>
return _mm256_cvtts_roundps_epi32(A, _MM_FROUND_NEARBYINT);
}
__m256i test_mm256_mask_cvtts_roundps_epi32(__m256i W,__mmask8 U, __m256 A){
// CHECK-LABEL: @test_mm256_mask_cvtts_roundps_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.256(<8 x float>
return _mm256_mask_cvtts_roundps_epi32(W,U,A,_MM_FROUND_NEARBYINT);
}
__m256i test_mm256_maskz_cvtts_roundps_epi32(__mmask8 U, __m256 A){
// CHECK-LABEL: @test_mm256_maskz_cvtts_roundps_epi32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2dqs.round.256(<8 x float>
return _mm256_maskz_cvtts_roundps_epi32(U,A,_MM_FROUND_NEARBYINT);
}
__m128i test_mm_cvttsps_epu32(__m128 A){
// CHECK-LABEL: @test_mm_cvttsps_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.128(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.128(<4 x float>
return _mm_cvttsps_epu32(A);
}
__m128i test_mm_mask_cvttsps_epu32(__m128i W, __mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm_mask_cvttsps_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.128(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.128(<4 x float>
return _mm_mask_cvttsps_epu32(W,U,A);
}
__m128i test_mm_maskz_cvttsps_epu32( __mmask8 U, __m128 A){
// CHECK-LABEL: @test_mm_maskz_cvttsps_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.128(<4 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.128(<4 x float>
return _mm_maskz_cvttsps_epu32(U,A);
}
__m256i test_mm256_cvttsps_epu32(__m256 A){
// CHECK-LABEL: @test_mm256_cvttsps_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.256(<8 x float>
return _mm256_cvttsps_epu32(A);
}
__m256i test_mm256_mask_cvttsps_epu32(__m256i W,__mmask8 U, __m256 A){
// CHECK-LABEL: @test_mm256_mask_cvttsps_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.256(<8 x float>
return _mm256_mask_cvttsps_epu32(W,U,A);
}
__m256i test_mm256_maskz_cvttsps_epu32(__mmask8 U, __m256 A){
// CHECK-LABEL: @test_mm256_maskz_cvttsps_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.256(<8 x float>
return _mm256_maskz_cvttsps_epu32(U,A);
}
__m256i test_mm256_cvtts_roundps_epu32(__m256 A){
// CHECK-LABEL: @test_mm256_cvtts_roundps_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.256(<8 x float>
return _mm256_cvtts_roundps_epu32(A, _MM_FROUND_NEARBYINT);
}
__m256i test_mm256_mask_cvtts_roundps_epu32(__m256i W,__mmask8 U, __m256 A){
// CHECK-LABEL: @test_mm256_mask_cvtts_roundps_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.256(<8 x float>
return _mm256_mask_cvtts_roundps_epu32(W,U,A,_MM_FROUND_NEARBYINT);
}
__m256i test_mm256_maskz_cvtts_roundps_epu32(__mmask8 U, __m256 A){
// CHECK-LABEL: @test_mm256_maskz_cvtts_roundps_epu32
-// CHECK: @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>
+// CHECK: @llvm.x86.avx10.mask.vcvttps2udqs.round.256(<8 x float>
return _mm256_maskz_cvtts_roundps_epu32(U,A,_MM_FROUND_NEARBYINT);
}
diff --git a/llvm/include/llvm/IR/IntrinsicsX86.td b/llvm/include/llvm/IR/IntrinsicsX86.td
index 5df5348c993b76..5262e3154ff721 100644
--- a/llvm/include/llvm/IR/IntrinsicsX86.td
+++ b/llvm/include/llvm/IR/IntrinsicsX86.td
@@ -5522,100 +5522,100 @@ let TargetPrefix = "x86" in {
// conversion with saturation
let TargetPrefix = "x86" in {
- def int_x86_avx512_vcvttss2sis : ClangBuiltin<"__builtin_ia32_vcvttss2sis32">,
+ def int_x86_avx10_vcvttss2sis : ClangBuiltin<"__builtin_ia32_vcvttss2sis32">,
DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttss2sis64 : ClangBuiltin<"__builtin_ia32_vcvttss2sis64">,
+ def int_x86_avx10_vcvttss2sis64 : ClangBuiltin<"__builtin_ia32_vcvttss2sis64">,
DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttss2usis : ClangBuiltin<"__builtin_ia32_vcvttss2usis32">,
+ def int_x86_avx10_vcvttss2usis : ClangBuiltin<"__builtin_ia32_vcvttss2usis32">,
DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v4f32_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttss2usis64 : ClangBuiltin<"__builtin_ia32_vcvttss2usis64">,
+ def int_x86_avx10_vcvttss2usis64 : ClangBuiltin<"__builtin_ia32_vcvttss2usis64">,
DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v4f32_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttsd2sis : ClangBuiltin<"__builtin_ia32_vcvttsd2sis32">,
+ def int_x86_avx10_vcvttsd2sis : ClangBuiltin<"__builtin_ia32_vcvttsd2sis32">,
DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttsd2sis64 : ClangBuiltin<"__builtin_ia32_vcvttsd2sis64">,
+ def int_x86_avx10_vcvttsd2sis64 : ClangBuiltin<"__builtin_ia32_vcvttsd2sis64">,
DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttsd2usis : ClangBuiltin<"__builtin_ia32_vcvttsd2usis32">,
+ def int_x86_avx10_vcvttsd2usis : ClangBuiltin<"__builtin_ia32_vcvttsd2usis32">,
DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_v2f64_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_vcvttsd2usis64 : ClangBuiltin<"__builtin_ia32_vcvttsd2usis64">,
+ def int_x86_avx10_vcvttsd2usis64 : ClangBuiltin<"__builtin_ia32_vcvttsd2usis64">,
DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_v2f64_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<1>>]>;
- def int_x86_avx512_mask_vcvttpd2dqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2dqs128_mask">,
+ def int_x86_avx10_mask_vcvttpd2dqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2dqs128_mask">,
DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty, llvm_v4i32_ty, llvm_i8_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_vcvttpd2dqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2dqs256_round_mask">,
+ def int_x86_avx10_mask_vcvttpd2dqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2dqs256_round_mask">,
DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttpd2dqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2dqs512_round_mask">,
+ def int_x86_avx10_mask_vcvttpd2dqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2dqs512_round_mask">,
DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttpd2udqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2udqs128_mask">,
+ def int_x86_avx10_mask_vcvttpd2udqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2udqs128_mask">,
DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v2f64_ty,llvm_v4i32_ty, llvm_i8_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_vcvttpd2udqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2udqs256_round_mask">,
+ def int_x86_avx10_mask_vcvttpd2udqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2udqs256_round_mask">,
DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f64_ty, llvm_v4i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttpd2udqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2udqs512_round_mask">,
+ def int_x86_avx10_mask_vcvttpd2udqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2udqs512_round_mask">,
DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f64_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttpd2qqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2qqs128_mask">,
+ def int_x86_avx10_mask_vcvttpd2qqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2qqs128_mask">,
DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty,llvm_v2i64_ty, llvm_i8_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_vcvttpd2qqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2qqs256_round_mask">,
+ def int_x86_avx10_mask_vcvttpd2qqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2qqs256_round_mask">,
DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttpd2qqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2qqs512_round_mask">,
+ def int_x86_avx10_mask_vcvttpd2qqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2qqs512_round_mask">,
DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttpd2uqqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs128_mask">,
+ def int_x86_avx10_mask_vcvttpd2uqqs_128 : ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs128_mask">,
DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v2f64_ty,llvm_v2i64_ty, llvm_i8_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_vcvttpd2uqqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs256_round_mask">,
+ def int_x86_avx10_mask_vcvttpd2uqqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs256_round_mask">,
DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f64_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttpd2uqqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs512_round_mask">,
+ def int_x86_avx10_mask_vcvttpd2uqqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttpd2uqqs512_round_mask">,
DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f64_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttps2dqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2dqs128_mask">,
+ def int_x86_avx10_mask_vcvttps2dqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2dqs128_mask">,
DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_vcvttps2dqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2dqs256_round_mask">,
+ def int_x86_avx10_mask_vcvttps2dqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2dqs256_round_mask">,
DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttps2dqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2dqs512_round_mask">,
+ def int_x86_avx10_mask_vcvttps2dqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2dqs512_round_mask">,
DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttps2udqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2udqs128_mask">,
+ def int_x86_avx10_mask_vcvttps2udqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2udqs128_mask">,
DefaultAttrsIntrinsic<[llvm_v4i32_ty], [llvm_v4f32_ty, llvm_v4i32_ty, llvm_i8_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_vcvttps2udqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2udqs256_round_mask">,
+ def int_x86_avx10_mask_vcvttps2udqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2udqs256_round_mask">,
DefaultAttrsIntrinsic<[llvm_v8i32_ty], [llvm_v8f32_ty, llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttps2udqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2udqs512_round_mask">,
+ def int_x86_avx10_mask_vcvttps2udqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2udqs512_round_mask">,
DefaultAttrsIntrinsic<[llvm_v16i32_ty], [llvm_v16f32_ty, llvm_v16i32_ty, llvm_i16_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttps2qqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2qqs128_mask">,
+ def int_x86_avx10_mask_vcvttps2qqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2qqs128_mask">,
DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4f32_ty, llvm_v2i64_ty, llvm_i8_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_vcvttps2qqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2qqs256_round_mask">,
+ def int_x86_avx10_mask_vcvttps2qqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2qqs256_round_mask">,
DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttps2qqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2qqs512_round_mask">,
+ def int_x86_avx10_mask_vcvttps2qqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2qqs512_round_mask">,
DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttps2uqqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2uqqs128_mask">,
+ def int_x86_avx10_mask_vcvttps2uqqs_128 : ClangBuiltin<"__builtin_ia32_vcvttps2uqqs128_mask">,
DefaultAttrsIntrinsic<[llvm_v2i64_ty], [llvm_v4f32_ty,llvm_v2i64_ty, llvm_i8_ty],
[IntrNoMem]>;
- def int_x86_avx512_mask_vcvttps2uqqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2uqqs256_round_mask">,
+ def int_x86_avx10_mask_vcvttps2uqqs_round_256: ClangBuiltin<"__builtin_ia32_vcvttps2uqqs256_round_mask">,
DefaultAttrsIntrinsic<[llvm_v4i64_ty], [llvm_v4f32_ty, llvm_v4i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
- def int_x86_avx512_mask_vcvttps2uqqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2uqqs512_round_mask">,
+ def int_x86_avx10_mask_vcvttps2uqqs_round_512 : ClangBuiltin<"__builtin_ia32_vcvttps2uqqs512_round_mask">,
DefaultAttrsIntrinsic<[llvm_v8i64_ty], [llvm_v8f32_ty, llvm_v8i64_ty, llvm_i8_ty, llvm_i32_ty],
[IntrNoMem, ImmArg<ArgIndex<3>>]>;
}
diff --git a/llvm/lib/Target/X86/X86InstrAVX10.td b/llvm/lib/Target/X86/X86InstrAVX10.td
index ef435540eb63ea..ada2bbaffd6645 100644
--- a/llvm/lib/Target/X86/X86InstrAVX10.td
+++ b/llvm/lib/Target/X86/X86InstrAVX10.td
@@ -630,26 +630,26 @@ defm VCVTTPS2IUBS : avx10_sat_cvt_base<0x6a, "vcvttps2iubs", SchedWriteVecIMul,
//-------------------------------------------------
// Convert Double to Signed/Unsigned Doubleword with truncation.
-multiclass avx512_cvttpd2dqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
- SDNode MaskOpNode, SDNode OpNodeSAE,
- X86SchedWriteWidths sched> {
- let Predicates = [HasAVX10_2, HasAVX10_2_512] in {
+multiclass avx10_cvttpd2dqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
+ SDNode MaskOpNode, SDNode OpNodeSAE,
+ X86SchedWriteWidths sched> {
+ let Predicates = [HasAVX10_2_512] in {
defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f64_info, OpNode,
MaskOpNode, sched.ZMM>,
- avx512_vcvt_fp_sae<opc, OpcodeStr, v8i32x_info, v8f64_info,
- OpNodeSAE, sched.ZMM>, EVEX_V512;
+ avx512_vcvt_fp_sae<opc, OpcodeStr, v8i32x_info, v8f64_info,
+ OpNodeSAE, sched.ZMM>, EVEX_V512;
}
- let Predicates = [HasAVX10_2, HasVLX] in {
+ let Predicates = [HasAVX10_2] in {
defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v2f64x_info,
- null_frag, null_frag, sched.XMM, "{1to2}", "{x}",
- f128mem, VK2WM>, EVEX_V128;
+ null_frag, null_frag, sched.XMM, "{1to2}", "{x}",
+ f128mem, VK2WM>, EVEX_V128;
defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f64x_info, OpNode,
- MaskOpNode, sched.YMM, "{1to4}", "{y}">, EVEX_V256;
+ MaskOpNode, sched.YMM, "{1to4}", "{y}">, EVEX_V256;
}
- let Predicates = [HasAVX10_2, HasVLX], hasEVEX_U=1 in {
+ let Predicates = [HasAVX10_2], hasEVEX_U=1 in {
defm Z256 : avx512_vcvt_fp_sae<opc, OpcodeStr, v4i32x_info, v4f64x_info, OpNodeSAE,
- sched.YMM>, EVEX_V256;
+ sched.YMM>, EVEX_V256;
}
@@ -706,110 +706,111 @@ multiclass avx512_cvttpd2dqs<bits<8> opc, string OpcodeStr, SDPatternOperator Op
}
// Convert Double to Signed/Unsigned Quardword with truncation saturationn enabled
-multiclass avx512_cvttpd2qqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
- SDNode MaskOpNode, SDNode OpNodeRnd,
- X86SchedWriteWidths sched> {
- let Predicates = [HasDQI, HasAVX10_2, HasAVX10_2_512] in {
+multiclass avx10_cvttpd2qqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
+ SDNode MaskOpNode, SDNode OpNodeRnd,
+ X86SchedWriteWidths sched> {
+ let Predicates = [HasAVX10_2_512] in {
defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f64_info, OpNode,
- MaskOpNode, sched.ZMM>,
- avx512_vcvt_fp_sae<opc, OpcodeStr, v8i64_info, v8f64_info,
- OpNodeRnd, sched.ZMM>, EVEX_V512;
+ MaskOpNode, sched.ZMM>,
+ avx512_vcvt_fp_sae<opc, OpcodeStr, v8i64_info, v8f64_info,
+ OpNodeRnd, sched.ZMM>, EVEX_V512;
}
- let Predicates = [HasDQI, HasAVX10_2, HasVLX] in {
+ let Predicates = [HasAVX10_2] in {
defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v2f64x_info, OpNode,
- MaskOpNode, sched.XMM>, EVEX_V128;
+ MaskOpNode, sched.XMM>, EVEX_V128;
defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f64x_info, OpNode,
- MaskOpNode, sched.YMM>, EVEX_V256;
+ MaskOpNode, sched.YMM>, EVEX_V256;
}
- let Predicates = [HasDQI, HasAVX10_2, HasVLX], hasEVEX_U=1 in {
+ let Predicates = [HasAVX10_2], hasEVEX_U=1 in {
defm Z256 : avx512_vcvt_fp_sae<opc, OpcodeStr, v4i64x_info, v4f64x_info,
- OpNodeRnd, sched.YMM>, EVEX_V256;
+ OpNodeRnd, sched.YMM>, EVEX_V256;
}
}
// Convert Float to Signed/Unsigned Quardword with truncation
-multiclass avx512_cvttps2qqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
- SDNode MaskOpNode, SDNode OpNodeRnd,
- X86SchedWriteWidths sched> {
- let Predicates = [HasDQI, HasAVX10_2, HasAVX10_2_512] in {
+multiclass avx10_cvttps2qqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
+ SDNode MaskOpNode, SDNode OpNodeRnd,
+ X86SchedWriteWidths sched> {
+ let Predicates = [HasAVX10_2_512] in {
defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f32x_info, OpNode,
- MaskOpNode, sched.ZMM>,
+ MaskOpNode, sched.ZMM>,
avx512_vcvt_fp_sae<opc, OpcodeStr, v8i64_info, v8f32x_info,
- OpNodeRnd, sched.ZMM>, EVEX_V512;
+ OpNodeRnd, sched.ZMM>, EVEX_V512;
}
- let Predicates = [HasDQI, HasAVX10_2, HasVLX] in {
+ let Predicates = [HasAVX10_2] in {
defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v4f32x_info, OpNode,
- MaskOpNode, sched.XMM, "{1to2}", "", f64mem, VK2WM,
- (v2i64 (OpNode (bc_v4f32 (v2f64
- (scalar_to_vector (loadf64 addr:$src)))))),
- (v2i64 (MaskOpNode (bc_v4f32 (v2f64
- (scalar_to_vector (loadf64 addr:$src))))))>,
- EVEX_V128;
+ MaskOpNode, sched.XMM, "{1to2}", "", f64mem, VK2WM,
+ (v2i64 (OpNode (bc_v4f32 (v2f64
+ (scalar_to_vector (loadf64 addr:$src)))))),
+ (v2i64 (MaskOpNode (bc_v4f32 (v2f64
+ (scalar_to_vector (loadf64 addr:$src))))))>,
+ EVEX_V128;
defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f32x_info, OpNode,
- MaskOpNode, sched.YMM>, EVEX_V256;
+ MaskOpNode, sched.YMM>, EVEX_V256;
}
- let Predicates = [HasDQI, HasAVX10_2, HasVLX], hasEVEX_U=1 in {
+ let Predicates = [HasAVX10_2], hasEVEX_U=1 in {
defm Z256 : avx512_vcvt_fp_sae<opc, OpcodeStr, v4i64x_info, v4f32x_info, OpNodeRnd,
- sched.YMM>, EVEX_V256;
+ sched.YMM>, EVEX_V256;
}
}
// Convert Float to Signed/Unsigned Doubleword with truncation
-multiclass avx512_cvttps2dqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
+multiclass avx10_cvttps2dqs<bits<8> opc, string OpcodeStr, SDPatternOperator OpNode,
SDNode MaskOpNode,
SDNode OpNodeSAE, X86SchedWriteWidths sched> {
- let Predicates = [HasAVX10_2, HasAVX10_2_512] in {
+ let Predicates = [HasAVX10_2_512] in {
defm Z : avx512_vcvt_fp<opc, OpcodeStr, v16i32_info, v16f32_info, OpNode,
- MaskOpNode, sched.ZMM>,
- avx512_vcvt_fp_sae<opc, OpcodeStr, v16i32_info, v16f32_info,
- OpNodeSAE, sched.ZMM>, EVEX_V512;
+ MaskOpNode, sched.ZMM>,
+ avx512_vcvt_fp_sae<opc, OpcodeStr, v16i32_info, v16f32_info,
+ OpNodeSAE, sched.ZMM>, EVEX_V512;
}
- let Predicates = [HasAVX10_2, HasVLX] in {
+ let Predicates = [HasAVX10_2] in {
defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f32x_info, OpNode,
- MaskOpNode, sched.XMM>, EVEX_V128;
+ MaskOpNode, sched.XMM>, EVEX_V128;
defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f32x_info, OpNode,
- MaskOpNode, sched.YMM>, EVEX_V256;
+ MaskOpNode, sched.YMM>, EVEX_V256;
}
- let Predicates = [HasAVX10_2, HasVLX], hasEVEX_U=1 in {
+ let Predicates = [HasAVX10_2], hasEVEX_U=1 in {
defm Z256 : avx512_vcvt_fp_sae<opc, OpcodeStr, v8i32x_info, v8f32x_info,
- OpNodeSAE, sched.YMM>, EVEX_V256;
+ OpNodeSAE, sched.YMM>, EVEX_V256;
}
}
-defm VCVTTPD2DQS : avx512_cvttpd2dqs<0x6D, "vcvttpd2dqs", X86cvttp2sis,
- X86cvttp2sis, X86cvttp2sisSAE,
- SchedWriteCvtPD2DQ>,
- PD, REX_W, T_MAP5,PS, EVEX_CD8<64, CD8VF>;
-defm VCVTTPD2UDQS : avx512_cvttpd2dqs<0x6C, "vcvttpd2udqs", X86cvttp2uis,
- X86cvttp2uis, X86cvttp2uisSAE,
- SchedWriteCvtPD2DQ>,
- REX_W, T_MAP5,PS, EVEX_CD8<64, CD8VF>;
-defm VCVTTPS2DQS : avx512_cvttps2dqs<0x6D, "vcvttps2dqs", X86cvttp2sis,
- X86cvttp2sis, X86cvttp2sisSAE,
- SchedWriteCvtPS2DQ>, T_MAP5,PS,
- EVEX_CD8<32, CD8VF>;
-defm VCVTTPS2UDQS : avx512_cvttps2dqs<0x6C, "vcvttps2udqs", X86cvttp2uis,
- X86cvttp2uis, X86cvttp2uisSAE,
- SchedWriteCvtPS2DQ>, T_MAP5,PS, EVEX_CD8<32, CD8VF>;
-defm VCVTTPD2QQS : avx512_cvttpd2qqs<0x6D, "vcvttpd2qqs", X86cvttp2sis,
- X86cvttp2sis, X86cvttp2sisSAE,
- SchedWriteCvtPD2DQ>, REX_W, T_MAP5,PD,
- EVEX_CD8<64, CD8VF>;
-defm VCVTTPS2QQS : avx512_cvttps2qqs<0x6D, "vcvttps2qqs", X86cvttp2sis,
- X86cvttp2sis, X86cvttp2sisSAE,
- SchedWriteCvtPS2DQ>, T_MAP5,PD,
- EVEX_CD8<32, CD8VH>;
-defm VCVTTPD2UQQS : avx512_cvttpd2qqs<0x6C, "vcvttpd2uqqs", X86cvttp2uis,
- X86cvttp2uis, X86cvttp2uisSAE,
- SchedWriteCvtPD2DQ>, REX_W, T_MAP5,PD,
- EVEX_CD8<64, CD8VF>;
-defm VCVTTPS2UQQS : avx512_cvttps2qqs<0x6C, "vcvttps2uqqs", X86cvttp2uis,
- X86cvttp2uis, X86cvttp2uisSAE,
- SchedWriteCvtPS2DQ>, T_MAP5,PD,
- EVEX_CD8<32, CD8VH>;
+defm VCVTTPD2DQS : avx10_cvttpd2dqs<0x6D, "vcvttpd2dqs", X86cvttp2sis,
+ X86cvttp2sis, X86cvttp2sisSAE,
+ SchedWriteCvtPD2DQ>,
+ PD, REX_W, T_MAP5,PS, EVEX_CD8<64, CD8VF>;
+defm VCVTTPD2UDQS : avx10_cvttpd2dqs<0x6C, "vcvttpd2udqs", X86cvttp2uis,
+ X86cvttp2uis, X86cvttp2uisSAE,
+ SchedWriteCvtPD2DQ>,
+ REX_W, T_MAP5,PS, EVEX_CD8<64, CD8VF>;
+defm VCVTTPS2DQS : avx10_cvttps2dqs<0x6D, "vcvttps2dqs", X86cvttp2sis,
+ X86cvttp2sis, X86cvttp2sisSAE,
+ SchedWriteCvtPS2DQ>, T_MAP5,PS,
+ EVEX_CD8<32, CD8VF>;
+defm VCVTTPS2UDQS : avx10_cvttps2dqs<0x6C, "vcvttps2udqs", X86cvttp2uis,
+ X86cvttp2uis, X86cvttp2uisSAE,
+ SchedWriteCvtPS2DQ>, T_MAP5,PS,
+ EVEX_CD8<32, CD8VF>;
+defm VCVTTPD2QQS : avx10_cvttpd2qqs<0x6D, "vcvttpd2qqs", X86cvttp2sis,
+ X86cvttp2sis, X86cvttp2sisSAE,
+ SchedWriteCvtPD2DQ>, REX_W, T_MAP5,PD,
+ EVEX_CD8<64, CD8VF>;
+defm VCVTTPS2QQS : avx10_cvttps2qqs<0x6D, "vcvttps2qqs", X86cvttp2sis,
+ X86cvttp2sis, X86cvttp2sisSAE,
+ SchedWriteCvtPS2DQ>, T_MAP5,PD,
+ EVEX_CD8<32, CD8VH>;
+defm VCVTTPD2UQQS : avx10_cvttpd2qqs<0x6C, "vcvttpd2uqqs", X86cvttp2uis,
+ X86cvttp2uis, X86cvttp2uisSAE,
+ SchedWriteCvtPD2DQ>, REX_W, T_MAP5,PD,
+ EVEX_CD8<64, CD8VF>;
+defm VCVTTPS2UQQS : avx10_cvttps2qqs<0x6C, "vcvttps2uqqs", X86cvttp2uis,
+ X86cvttp2uis, X86cvttp2uisSAE,
+ SchedWriteCvtPS2DQ>, T_MAP5,PD,
+ EVEX_CD8<32, CD8VH>;
let Predicates = [HasAVX10_2] in {
// Special patterns to allow use of X86mcvttp2si for masking. Instruction
@@ -869,10 +870,10 @@ def : Pat<(X86mcvttp2uis (v2f64 (X86VBroadcastld64 addr:$src)),
}
// Convert scalar float/double to signed/unsigned int 32/64 with truncation and saturation.
-multiclass avx512_cvt_s_ds<bits<8> opc, string asm, X86VectorVTInfo _SrcRC,
- X86VectorVTInfo _DstRC, SDPatternOperator OpNode,
- SDNode OpNodeInt, SDNode OpNodeSAE,
- X86FoldableSchedWrite sched> {
+multiclass avx10_cvt_s_ds<bits<8> opc, string asm, X86VectorVTInfo _SrcRC,
+ X86VectorVTInfo _DstRC, SDPatternOperator OpNode,
+ SDNode OpNodeInt, SDNode OpNodeSAE,
+ X86FoldableSchedWrite sched> {
let Predicates = [HasAVX10_2], ExeDomain = _SrcRC.ExeDomain in {
let isCodeGenOnly = 1 in {
def rr : AVX512<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.FRC:$src),
@@ -903,38 +904,38 @@ multiclass avx512_cvt_s_ds<bits<8> opc, string asm, X86VectorVTInfo _SrcRC,
}
}
-defm VCVTTSS2SIS: avx512_cvt_s_ds<0x6D, "vcvttss2sis", f32x_info, i32x_info,
- fp_to_sint_sat, X86cvttss2Int,
- X86cvttss2IntSAE, WriteCvtSS2I>,
+defm VCVTTSS2SIS: avx10_cvt_s_ds<0x6D, "vcvttss2sis", f32x_info, i32x_info,
+ fp_to_sint_sat, X86cvttss2Int,
+ X86cvttss2IntSAE, WriteCvtSS2I>,
+ T_MAP5,XS, EVEX_CD8<32, CD8VT1>;
+defm VCVTTSS2SI64S: avx10_cvt_s_ds<0x6D, "vcvttss2sis", f32x_info, i64x_info,
+ fp_to_sint_sat, X86cvttss2Int,
+ X86cvttss2IntSAE, WriteCvtSS2I>,
+ REX_W, T_MAP5,XS, EVEX_CD8<32, CD8VT1>;
+defm VCVTTSD2SIS: avx10_cvt_s_ds<0x6D, "vcvttsd2sis", f64x_info, i32x_info,
+ fp_to_sint_sat, X86cvttss2Int,
+ X86cvttss2IntSAE, WriteCvtSD2I>,
+ T_MAP5,XD, EVEX_CD8<64, CD8VT1>;
+defm VCVTTSD2SI64S: avx10_cvt_s_ds<0x6D, "vcvttsd2sis", f64x_info, i64x_info,
+ fp_to_sint_sat, X86cvttss2Int,
+ X86cvttss2IntSAE, WriteCvtSD2I>,
+ REX_W, T_MAP5,XD, EVEX_CD8<64, CD8VT1>;
+defm VCVTTSS2USIS: avx10_cvt_s_ds<0x6C, "vcvttss2usis", f32x_info, i32x_info,
+ fp_to_uint_sat, X86cvttss2UInt,
+ X86cvttss2UIntSAE, WriteCvtSS2I>,
T_MAP5,XS, EVEX_CD8<32, CD8VT1>;
-defm VCVTTSS2SI64S: avx512_cvt_s_ds<0x6D, "vcvttss2sis", f32x_info, i64x_info,
- fp_to_sint_sat, X86cvttss2Int,
- X86cvttss2IntSAE, WriteCvtSS2I>,
- REX_W, T_MAP5,XS, EVEX_CD8<32, CD8VT1>;
-defm VCVTTSD2SIS: avx512_cvt_s_ds<0x6D, "vcvttsd2sis", f64x_info, i32x_info,
- fp_to_sint_sat, X86cvttss2Int,
- X86cvttss2IntSAE, WriteCvtSD2I>,
+defm VCVTTSS2USI64S: avx10_cvt_s_ds<0x6C, "vcvttss2usis", f32x_info, i64x_info,
+ fp_to_uint_sat, X86cvttss2UInt,
+ X86cvttss2UIntSAE, WriteCvtSS2I>,
+ T_MAP5,XS,REX_W, EVEX_CD8<32, CD8VT1>;
+defm VCVTTSD2USIS: avx10_cvt_s_ds<0x6C, "vcvttsd2usis", f64x_info, i32x_info,
+ fp_to_uint_sat, X86cvttss2UInt,
+ X86cvttss2UIntSAE, WriteCvtSD2I>,
T_MAP5,XD, EVEX_CD8<64, CD8VT1>;
-defm VCVTTSD2SI64S: avx512_cvt_s_ds<0x6D, "vcvttsd2sis", f64x_info, i64x_info,
- fp_to_sint_sat, X86cvttss2Int,
- X86cvttss2IntSAE, WriteCvtSD2I>,
- REX_W, T_MAP5,XD, EVEX_CD8<64, CD8VT1>;
-defm VCVTTSS2USIS: avx512_cvt_s_ds<0x6C, "vcvttss2usis", f32x_info, i32x_info,
- fp_to_uint_sat, X86cvttss2UInt,
- X86cvttss2UIntSAE, WriteCvtSS2I>,
- T_MAP5,XS, EVEX_CD8<32, CD8VT1>;
-defm VCVTTSS2USI64S: avx512_cvt_s_ds<0x6C, "vcvttss2usis", f32x_info, i64x_info,
- fp_to_uint_sat, X86cvttss2UInt,
- X86cvttss2UIntSAE, WriteCvtSS2I>,
- T_MAP5,XS,REX_W, EVEX_CD8<32, CD8VT1>;
-defm VCVTTSD2USIS: avx512_cvt_s_ds<0x6C, "vcvttsd2usis", f64x_info, i32x_info,
- fp_to_uint_sat, X86cvttss2UInt,
- X86cvttss2UIntSAE, WriteCvtSD2I>,
- T_MAP5,XD, EVEX_CD8<64, CD8VT1>;
-defm VCVTTSD2USI64S: avx512_cvt_s_ds<0x6C, "vcvttsd2usis", f64x_info, i64x_info,
- fp_to_uint_sat, X86cvttss2UInt,
- X86cvttss2UIntSAE, WriteCvtSD2I>,
- T_MAP5,XD, REX_W, EVEX_CD8<64, CD8VT1>;
+defm VCVTTSD2USI64S: avx10_cvt_s_ds<0x6C, "vcvttsd2usis", f64x_info, i64x_info,
+ fp_to_uint_sat, X86cvttss2UInt,
+ X86cvttss2UIntSAE, WriteCvtSD2I>,
+ T_MAP5,XD, REX_W, EVEX_CD8<64, CD8VT1>;
//-------------------------------------------------
// AVX10 CONVERT instructions
diff --git a/llvm/lib/Target/X86/X86IntrinsicsInfo.h b/llvm/lib/Target/X86/X86IntrinsicsInfo.h
index 0e6c82e4e2e96c..86fd04046d16a0 100644
--- a/llvm/lib/Target/X86/X86IntrinsicsInfo.h
+++ b/llvm/lib/Target/X86/X86IntrinsicsInfo.h
@@ -569,12 +569,36 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND),
X86_INTRINSIC_DATA(avx10_mask_vcvttpd2dq256, INTR_TYPE_1OP_MASK,
X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2dqs_128, CVTPD2DQ_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::MCVTTP2SIS),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2dqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2dqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
X86_INTRINSIC_DATA(avx10_mask_vcvttpd2qq256, INTR_TYPE_1OP_MASK,
X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2qqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, 0),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2qqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2qqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
X86_INTRINSIC_DATA(avx10_mask_vcvttpd2udq256, INTR_TYPE_1OP_MASK,
X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2udqs_128, CVTPD2DQ_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::MCVTTP2SIS),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2udqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2udqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
X86_INTRINSIC_DATA(avx10_mask_vcvttpd2uqq256, INTR_TYPE_1OP_MASK,
X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2uqqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, 0),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2uqqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttpd2uqqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
X86_INTRINSIC_DATA(avx10_mask_vcvttph2dq256, INTR_TYPE_1OP_MASK,
X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
X86_INTRINSIC_DATA(avx10_mask_vcvttph2ibs128, INTR_TYPE_1OP_MASK,
@@ -601,6 +625,12 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
X86_INTRINSIC_DATA(avx10_mask_vcvttps2dq256, INTR_TYPE_1OP_MASK,
X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2dqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, 0),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2dqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2dqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
X86_INTRINSIC_DATA(avx10_mask_vcvttps2ibs128, INTR_TYPE_1OP_MASK,
X86ISD::CVTTP2IBS, 0),
X86_INTRINSIC_DATA(avx10_mask_vcvttps2ibs256, INTR_TYPE_1OP_MASK,
@@ -615,10 +645,28 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::CVTTP2IUBS, X86ISD::CVTTP2IUBS_SAE),
X86_INTRINSIC_DATA(avx10_mask_vcvttps2qq256, INTR_TYPE_1OP_MASK,
X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2qqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, 0),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2qqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2qqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
X86_INTRINSIC_DATA(avx10_mask_vcvttps2udq256, INTR_TYPE_1OP_MASK,
X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2udqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, 0),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2udqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2udqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
X86_INTRINSIC_DATA(avx10_mask_vcvttps2uqq256, INTR_TYPE_1OP_MASK,
X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2uqqs_128, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, 0),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2uqqs_round_256, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
+ X86_INTRINSIC_DATA(avx10_mask_vcvttps2uqqs_round_512, INTR_TYPE_1OP_MASK,
+ X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
X86_INTRINSIC_DATA(avx10_mask_vfcmaddcph256, CFMA_OP_MASK, X86ISD::VFCMADDC,
X86ISD::VFCMADDC_RND),
X86_INTRINSIC_DATA(avx10_mask_vfcmulcph256, INTR_TYPE_2OP_MASK,
@@ -757,6 +805,22 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::CVTTP2IUBS, 0),
X86_INTRINSIC_DATA(avx10_vcvttnebf162iubs512, INTR_TYPE_1OP,
X86ISD::CVTTP2IUBS, 0),
+ X86_INTRINSIC_DATA(avx10_vcvttsd2sis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
+ X86ISD::CVTTS2SIS_SAE),
+ X86_INTRINSIC_DATA(avx10_vcvttsd2sis64, INTR_TYPE_1OP_SAE,
+ X86ISD::CVTTS2SIS, X86ISD::CVTTS2SIS_SAE),
+ X86_INTRINSIC_DATA(avx10_vcvttsd2usis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UIS,
+ X86ISD::CVTTS2UIS_SAE),
+ X86_INTRINSIC_DATA(avx10_vcvttsd2usis64, INTR_TYPE_1OP_SAE,
+ X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
+ X86_INTRINSIC_DATA(avx10_vcvttss2sis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
+ X86ISD::CVTTS2SIS_SAE),
+ X86_INTRINSIC_DATA(avx10_vcvttss2sis64, INTR_TYPE_1OP_SAE,
+ X86ISD::CVTTS2SIS, X86ISD::CVTTS2SIS_SAE),
+ X86_INTRINSIC_DATA(avx10_vcvttss2usis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UIS,
+ X86ISD::CVTTS2UIS_SAE),
+ X86_INTRINSIC_DATA(avx10_vcvttss2usis64, INTR_TYPE_1OP_SAE,
+ X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
X86_INTRINSIC_DATA(avx10_vdivpd256, INTR_TYPE_2OP, ISD::FDIV,
X86ISD::FDIV_RND),
X86_INTRINSIC_DATA(avx10_vdivph256, INTR_TYPE_2OP, ISD::FDIV,
@@ -834,6 +898,7 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::FSUB_RND),
X86_INTRINSIC_DATA(avx10_vsubps256, INTR_TYPE_2OP, ISD::FSUB,
X86ISD::FSUB_RND),
+
X86_INTRINSIC_DATA(avx2_mpsadbw, INTR_TYPE_3OP_IMM8, X86ISD::MPSADBW, 0),
X86_INTRINSIC_DATA(avx2_packssdw, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
X86_INTRINSIC_DATA(avx2_packsswb, INTR_TYPE_2OP, X86ISD::PACKSS, 0),
@@ -1351,54 +1416,6 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH),
X86_INTRINSIC_DATA(avx512_mask_vcvtps2ph_512, CVTPS2PH_MASK,
X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2dqs_128, CVTPD2DQ_MASK,
- X86ISD::CVTTP2SIS, X86ISD::MCVTTP2SIS),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2dqs_round_256, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2dqs_round_512, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2qqs_128, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2SIS, 0),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2qqs_round_256, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2qqs_round_512, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2udqs_128, CVTPD2DQ_MASK,
- X86ISD::CVTTP2UIS, X86ISD::MCVTTP2SIS),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2udqs_round_256, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2udqs_round_512, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2uqqs_128, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2UIS, 0),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2uqqs_round_256, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttpd2uqqs_round_512, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2dqs_128, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2SIS, 0),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2dqs_round_256, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2dqs_round_512, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2qqs_128, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2SIS, 0),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2qqs_round_256, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2qqs_round_512, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2SIS, X86ISD::CVTTP2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2udqs_128, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2UIS, 0),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2udqs_round_256, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2udqs_round_512, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2uqqs_128, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2UIS, 0),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2uqqs_round_256, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_mask_vcvttps2uqqs_round_512, INTR_TYPE_1OP_MASK,
- X86ISD::CVTTP2UIS, X86ISD::CVTTP2UIS_SAE),
X86_INTRINSIC_DATA(avx512_maskz_fixupimm_pd_128, FIXUPIMM_MASKZ,
X86ISD::VFIXUPIMM, 0),
@@ -1574,23 +1591,6 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::CVTS2UI_RND),
X86_INTRINSIC_DATA(avx512_vcvtss2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI,
X86ISD::CVTS2UI_RND),
- X86_INTRINSIC_DATA(avx512_vcvttsd2sis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
- X86ISD::CVTTS2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttsd2sis64, INTR_TYPE_1OP_SAE,
- X86ISD::CVTTS2SIS, X86ISD::CVTTS2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttsd2usis, INTR_TYPE_1OP_SAE,
- X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttsd2usis64, INTR_TYPE_1OP_SAE,
- X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttss2sis, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SIS,
- X86ISD::CVTTS2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttss2sis64, INTR_TYPE_1OP_SAE,
- X86ISD::CVTTS2SIS, X86ISD::CVTTS2SIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttss2usis, INTR_TYPE_1OP_SAE,
- X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
- X86_INTRINSIC_DATA(avx512_vcvttss2usis64, INTR_TYPE_1OP_SAE,
- X86ISD::CVTTS2UIS, X86ISD::CVTTS2UIS_SAE),
-
X86_INTRINSIC_DATA(avx512_vfmadd_f32, INTR_TYPE_3OP, ISD::FMA,
X86ISD::FMADD_RND),
X86_INTRINSIC_DATA(avx512_vfmadd_f64, INTR_TYPE_3OP, ISD::FMA,
@@ -1603,6 +1603,7 @@ static const IntrinsicData IntrinsicsWithoutChain[] = {
X86ISD::FMADDSUB_RND),
X86_INTRINSIC_DATA(avx512_vfmaddsub_ps_512, INTR_TYPE_3OP, X86ISD::FMADDSUB,
X86ISD::FMADDSUB_RND),
+
X86_INTRINSIC_DATA(avx512_vpdpbusd_128, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
X86_INTRINSIC_DATA(avx512_vpdpbusd_256, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
X86_INTRINSIC_DATA(avx512_vpdpbusd_512, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0),
diff --git a/llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll b/llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll
index 5d556dedcf8722..652c35c7770918 100644
--- a/llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll
+++ b/llvm/test/CodeGen/X86/avx10_2_512satcvtds-intrinsics.ll
@@ -17,7 +17,7 @@ define <8 x i32> @test_int_x86_mask_vcvtt_pd2dqs_512(<8 x double> %x0, <8 x i32>
; X86-NEXT: vcvttpd2dqs %zmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x49,0x6d,0xc8]
; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512( <8 x double> %x0, <8 x i32> %src, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.round.512(<8 x double> %x0, <8 x i32> %src, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -33,7 +33,7 @@ define <8 x i32> @test_int_x86_maskz_vcvtt_pd2dqs_512_z(<8 x double> %x0, i8 %ma
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2dqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512( <8 x double> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.round.512(<8 x double> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -49,7 +49,7 @@ define <8 x i32> @test_int_x86_mask_vcvtt_pd2dqs_512_undef(<8 x double> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2dqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512( <8 x double> %x0, <8 x i32> undef, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.round.512(<8 x double> %x0, <8 x i32> undef, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -65,10 +65,10 @@ define <8 x i32> @test_int_x86_mask_vcvtt_pd2dqs_512_default(<8 x double>* %x0)
; X86-NEXT: vcvttpd2dqs (%eax), %ymm0 # encoding: [0x62,0xf5,0xfc,0x48,0x6d,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x10 = load <8 x double>, <8 x double> * %x0
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512( <8 x double> %x10, <8 x i32> undef, i8 -1, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.round.512(<8 x double> %x10, <8 x i32> undef, i8 -1, i32 4)
ret <8 x i32> %res
}
-declare <8 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.512(<8 x double>, <8 x i32>, i8 , i32)
+declare <8 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.round.512(<8 x double>, <8 x i32>, i8 , i32)
define <8 x i32> @test_int_x86_mask_vcvtt_pd2udqs_512(<8 x double> %x0, <8 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2udqs_512:
@@ -84,7 +84,7 @@ define <8 x i32> @test_int_x86_mask_vcvtt_pd2udqs_512(<8 x double> %x0, <8 x i32
; X86-NEXT: vcvttpd2udqs %zmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x49,0x6c,0xc8]
; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512( <8 x double> %x0, <8 x i32> %src, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.round.512(<8 x double> %x0, <8 x i32> %src, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -100,7 +100,7 @@ define <8 x i32> @test_int_x86_maskz_vcvtt_pd2udqs_512_z(<8 x double> %x0, i8 %m
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2udqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512( <8 x double> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.round.512(<8 x double> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -116,7 +116,7 @@ define <8 x i32> @test_int_x86_mask_vcvtt_pd2udqs_512_undef(<8 x double> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2udqs %zmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xc9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512( <8 x double> %x0, <8 x i32> undef, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.round.512(<8 x double> %x0, <8 x i32> undef, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -132,10 +132,10 @@ define <8 x i32> @test_int_x86_mask_vcvtt_pd2udqs_512_default(<8 x double>* %x0)
; X86-NEXT: vcvttpd2udqs (%eax), %ymm0 # encoding: [0x62,0xf5,0xfc,0x48,0x6c,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x10 = load <8 x double>, <8 x double> * %x0
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512( <8 x double> %x10, <8 x i32> undef, i8 -1, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.round.512(<8 x double> %x10, <8 x i32> undef, i8 -1, i32 4)
ret <8 x i32> %res
}
-declare <8 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.512(<8 x double>, <8 x i32>, i8 , i32)
+declare <8 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.round.512(<8 x double>, <8 x i32>, i8 , i32)
define <8 x i64> @test_int_x86_mask_vcvtt_pd2qqs_512(<8 x double> %x0, <8 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_512:
@@ -151,7 +151,7 @@ define <8 x i64> @test_int_x86_mask_vcvtt_pd2qqs_512(<8 x double> %x0, <8 x i64>
; X86-NEXT: vcvttpd2qqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x49,0x6d,0xc8]
; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512( <8 x double> %x0, <8 x i64> %src, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.round.512(<8 x double> %x0, <8 x i64> %src, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -167,7 +167,7 @@ define <8 x i64> @test_int_x86_maskz_vcvtt_pd2qqs_512_z(<8 x double> %x0, i8 %ma
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2qqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512( <8 x double> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.round.512(<8 x double> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -183,7 +183,7 @@ define <8 x i64> @test_int_x86_mask_vcvtt_pd2qqs_512_undef(<8 x double> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2qqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512( <8 x double> %x0, <8 x i64> undef, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.round.512(<8 x double> %x0, <8 x i64> undef, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -199,10 +199,10 @@ define <8 x i64> @test_int_x86_mask_vcvtt_pd2qqs_512_default(<8 x double>* %x0)
; X86-NEXT: vcvttpd2qqs (%eax), %zmm0 # encoding: [0x62,0xf5,0xfd,0x48,0x6d,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x10 = load <8 x double>, <8 x double>* %x0
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512( <8 x double> %x10, <8 x i64> undef, i8 -1, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.round.512(<8 x double> %x10, <8 x i64> undef, i8 -1, i32 4)
ret <8 x i64> %res
}
-declare <8 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.512(<8 x double>, <8 x i64>, i8 , i32)
+declare <8 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.round.512(<8 x double>, <8 x i64>, i8 , i32)
define <8 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_512(<8 x double> %x0, <8 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_512:
@@ -218,7 +218,7 @@ define <8 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_512(<8 x double> %x0, <8 x i64
; X86-NEXT: vcvttpd2uqqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x49,0x6c,0xc8]
; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512( <8 x double> %x0, <8 x i64> %src, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.round.512(<8 x double> %x0, <8 x i64> %src, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -234,7 +234,7 @@ define <8 x i64> @test_int_x86_maskz_vcvtt_pd2uqqs_512_z(<8 x double> %x0, i8 %m
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2uqqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512( <8 x double> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.round.512(<8 x double> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -250,7 +250,7 @@ define <8 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_512_undef(<8 x double> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2uqqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xc9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512( <8 x double> %x0, <8 x i64> undef, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.round.512(<8 x double> %x0, <8 x i64> undef, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -266,10 +266,10 @@ define <8 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_512_default(<8 x double>* %x0)
; X86-NEXT: vcvttpd2uqqs (%eax), %zmm0 # encoding: [0x62,0xf5,0xfd,0x48,0x6c,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x10 = load <8 x double>, <8 x double>* %x0
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512( <8 x double> %x10, <8 x i64> undef, i8 -1, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.round.512(<8 x double> %x10, <8 x i64> undef, i8 -1, i32 4)
ret <8 x i64> %res
}
-declare <8 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.512(<8 x double>, <8 x i64>, i8 , i32)
+declare <8 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.round.512(<8 x double>, <8 x i64>, i8 , i32)
define <16 x i32> @test_int_x86_mask_vcvtt_ps2dqs_512(<16 x float> %x0, <16 x i32> %src, i16 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_512:
@@ -285,7 +285,7 @@ define <16 x i32> @test_int_x86_mask_vcvtt_ps2dqs_512(<16 x float> %x0, <16 x i3
; X86-NEXT: vcvttps2dqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x49,0x6d,0xc8]
; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x0, <16 x i32> %src, i16 %mask, i32 4)
+ %res = call <16 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float> %x0, <16 x i32> %src, i16 %mask, i32 4)
ret <16 x i32> %res
}
@@ -301,7 +301,7 @@ define <16 x i32> @test_int_x86_maskz_vcvtt_ps2dqs_512_z(<16 x float> %x0, i16 %
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2dqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x0, <16 x i32> zeroinitializer, i16 %mask, i32 4)
+ %res = call <16 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float> %x0, <16 x i32> zeroinitializer, i16 %mask, i32 4)
ret <16 x i32> %res
}
@@ -317,7 +317,7 @@ define <16 x i32> @test_int_x86_mask_vcvtt_ps2dqs_512_undef(<16 x float> %x0, i1
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2dqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x0, <16 x i32> undef, i16 %mask, i32 4)
+ %res = call <16 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float> %x0, <16 x i32> undef, i16 %mask, i32 4)
ret <16 x i32> %res
}
@@ -333,10 +333,10 @@ define <16 x i32> @test_int_x86_mask_vcvtt_ps2dqs_512_default(<16 x float>* %x0)
; X86-NEXT: vcvttps2dqs (%eax), %zmm0 # encoding: [0x62,0xf5,0x7c,0x48,0x6d,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x10 = load <16 x float>, <16 x float>* %x0
- %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x10, <16 x i32> undef, i16 -1, i32 4)
+ %res = call <16 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float> %x10, <16 x i32> undef, i16 -1, i32 4)
ret <16 x i32> %res
}
-declare <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512(<16 x float>, <16 x i32>, i16 , i32)
+declare <16 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float>, <16 x i32>, i16 , i32)
define <16 x i32> @test_int_x86_mask_vcvtt_ps2udqs_512(<16 x float> %x0, <16 x i32> %src, i16 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_512:
@@ -352,7 +352,7 @@ define <16 x i32> @test_int_x86_mask_vcvtt_ps2udqs_512(<16 x float> %x0, <16 x i
; X86-NEXT: vcvttps2udqs %zmm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x49,0x6c,0xc8]
; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.512( <16 x float> %x0, <16 x i32> %src, i16 %mask, i32 4)
+ %res = call <16 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.round.512(<16 x float> %x0, <16 x i32> %src, i16 %mask, i32 4)
ret <16 x i32> %res
}
@@ -368,7 +368,7 @@ define <16 x i32> @test_int_x86_maskz_vcvtt_ps2udqs_512_z(<16 x float> %x0, i16
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2udqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.512( <16 x float> %x0, <16 x i32> zeroinitializer, i16 %mask, i32 4)
+ %res = call <16 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.round.512(<16 x float> %x0, <16 x i32> zeroinitializer, i16 %mask, i32 4)
ret <16 x i32> %res
}
@@ -384,7 +384,7 @@ define <16 x i32> @test_int_x86_mask_vcvtt_ps2udqs_512_undef(<16 x float> %x0, i
; X86-NEXT: kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2udqs %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xc9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.512( <16 x float> %x0, <16 x i32> undef, i16 %mask, i32 4)
+ %res = call <16 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.round.512(<16 x float> %x0, <16 x i32> undef, i16 %mask, i32 4)
ret <16 x i32> %res
}
@@ -400,10 +400,10 @@ define <16 x i32> @test_int_x86_mask_vcvtt_ps2udqs_512_default(<16 x float>* %x0
; X86-NEXT: vcvttps2dqs (%eax), %zmm0 # encoding: [0x62,0xf5,0x7c,0x48,0x6d,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x10 = load <16 x float>, <16 x float>* %x0
- %res = call <16 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.512( <16 x float> %x10, <16 x i32> undef, i16 -1, i32 4)
+ %res = call <16 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.round.512(<16 x float> %x10, <16 x i32> undef, i16 -1, i32 4)
ret <16 x i32> %res
}
-declare <16 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.512(<16 x float>, <16 x i32>, i16 , i32)
+declare <16 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.round.512(<16 x float>, <16 x i32>, i16 , i32)
define <8 x i64> @test_int_x86_mask_vcvtt_ps2qqs_512(<8 x float> %x0, <8 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2qqs_512:
@@ -419,7 +419,7 @@ define <8 x i64> @test_int_x86_mask_vcvtt_ps2qqs_512(<8 x float> %x0, <8 x i64>
; X86-NEXT: vcvttps2qqs %ymm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x49,0x6d,0xc8]
; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512( <8 x float> %x0, <8 x i64> %src, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.round.512(<8 x float> %x0, <8 x i64> %src, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -435,7 +435,7 @@ define <8 x i64> @test_int_x86_maskz_vcvtt_ps2qqs_512_z(<8 x float> %x0, i8 %mas
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2qqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512( <8 x float> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.round.512(<8 x float> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -451,7 +451,7 @@ define <8 x i64> @test_int_x86_mask_vcvtt_ps2qqs_512_undef(<8 x float> %x0, i8 %
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2qqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512( <8 x float> %x0, <8 x i64> undef, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.round.512(<8 x float> %x0, <8 x i64> undef, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -460,10 +460,10 @@ define <8 x i64> @test_int_x86_mask_vcvtt_ps2qqs_512_default(<8 x float> %x0) {
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttps2qqs %ymm0, %zmm0 # encoding: [0x62,0xf5,0x7d,0x48,0x6d,0xc0]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512( <8 x float> %x0, <8 x i64> undef, i8 -1, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.round.512(<8 x float> %x0, <8 x i64> undef, i8 -1, i32 4)
ret <8 x i64> %res
}
-declare <8 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.512(<8 x float>, <8 x i64>, i8 , i32)
+declare <8 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.round.512(<8 x float>, <8 x i64>, i8 , i32)
define <8 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_512(<8 x float> %x0, <8 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_512:
@@ -479,7 +479,7 @@ define <8 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_512(<8 x float> %x0, <8 x i64>
; X86-NEXT: vcvttps2uqqs %ymm0, %zmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x49,0x6c,0xc8]
; X86-NEXT: vmovaps %zmm1, %zmm0 # encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512( <8 x float> %x0, <8 x i64> %src, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.round.512(<8 x float> %x0, <8 x i64> %src, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -495,7 +495,7 @@ define <8 x i64> @test_int_x86_maskz_vcvtt_ps2uqqs_512_z(<8 x float> %x0, i8 %ma
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2uqqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512( <8 x float> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.round.512(<8 x float> %x0, <8 x i64> zeroinitializer, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -511,7 +511,7 @@ define <8 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_512_undef(<8 x float> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2uqqs %ymm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xc9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512( <8 x float> %x0, <8 x i64> undef, i8 %mask, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.round.512(<8 x float> %x0, <8 x i64> undef, i8 %mask, i32 4)
ret <8 x i64> %res
}
@@ -520,7 +520,7 @@ define <8 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_512_default(<8 x float> %x0) {
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttps2uqqs %ymm0, %zmm0 # encoding: [0x62,0xf5,0x7d,0x48,0x6c,0xc0]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res = call <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512( <8 x float> %x0, <8 x i64> undef, i8 -1, i32 4)
+ %res = call <8 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.round.512(<8 x float> %x0, <8 x i64> undef, i8 -1, i32 4)
ret <8 x i64> %res
}
-declare <8 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.512(<8 x float>, <8 x i64>, i8 , i32)
+declare <8 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.round.512(<8 x float>, <8 x i64>, i8 , i32)
diff --git a/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll b/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
index 84374216c0e89f..922ac92be174a8 100644
--- a/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
+++ b/llvm/test/CodeGen/X86/avx10_2satcvtds-intrinsics.ll
@@ -9,12 +9,12 @@ define i32 @test_x86_avx512_vcvttsd2usis(<2 x double> %a0) {
; CHECK-NEXT: vcvttsd2usis {sae}, %xmm0, %eax # encoding: [0x62,0xf5,0x7f,0x18,0x6c,0xc0]
; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res0 = call i32 @llvm.x86.avx512.vcvttsd2usis(<2 x double> %a0, i32 4) ;
- %res1 = call i32 @llvm.x86.avx512.vcvttsd2usis(<2 x double> %a0, i32 8) ;
+ %res0 = call i32 @llvm.x86.avx10.vcvttsd2usis(<2 x double> %a0, i32 4) ;
+ %res1 = call i32 @llvm.x86.avx10.vcvttsd2usis(<2 x double> %a0, i32 8) ;
%res2 = add i32 %res0, %res1
ret i32 %res2
}
-declare i32 @llvm.x86.avx512.vcvttsd2usis(<2 x double>, i32) nounwind readnone
+declare i32 @llvm.x86.avx10.vcvttsd2usis(<2 x double>, i32) nounwind readnone
define i32 @test_x86_avx512_vcvttsd2sis(<2 x double> %a0) {
; CHECK-LABEL: test_x86_avx512_vcvttsd2sis:
@@ -23,12 +23,12 @@ define i32 @test_x86_avx512_vcvttsd2sis(<2 x double> %a0) {
; CHECK-NEXT: vcvttsd2sis {sae}, %xmm0, %eax # encoding: [0x62,0xf5,0x7f,0x18,0x6d,0xc0]
; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res0 = call i32 @llvm.x86.avx512.vcvttsd2sis(<2 x double> %a0, i32 4) ;
- %res1 = call i32 @llvm.x86.avx512.vcvttsd2sis(<2 x double> %a0, i32 8) ;
+ %res0 = call i32 @llvm.x86.avx10.vcvttsd2sis(<2 x double> %a0, i32 4) ;
+ %res1 = call i32 @llvm.x86.avx10.vcvttsd2sis(<2 x double> %a0, i32 8) ;
%res2 = add i32 %res0, %res1
ret i32 %res2
}
-declare i32 @llvm.x86.avx512.vcvttsd2sis(<2 x double>, i32) nounwind readnone
+declare i32 @llvm.x86.avx10.vcvttsd2sis(<2 x double>, i32) nounwind readnone
define i32 @test_x86_avx512_vcvttss2sis(<4 x float> %a0) {
; CHECK-LABEL: test_x86_avx512_vcvttss2sis:
@@ -37,12 +37,12 @@ define i32 @test_x86_avx512_vcvttss2sis(<4 x float> %a0) {
; CHECK-NEXT: vcvttss2sis %xmm0, %eax # encoding: [0x62,0xf5,0x7e,0x08,0x6d,0xc0]
; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res0 = call i32 @llvm.x86.avx512.vcvttss2sis(<4 x float> %a0, i32 8) ;
- %res1 = call i32 @llvm.x86.avx512.vcvttss2sis(<4 x float> %a0, i32 4) ;
+ %res0 = call i32 @llvm.x86.avx10.vcvttss2sis(<4 x float> %a0, i32 8) ;
+ %res1 = call i32 @llvm.x86.avx10.vcvttss2sis(<4 x float> %a0, i32 4) ;
%res2 = add i32 %res0, %res1
ret i32 %res2
}
-declare i32 @llvm.x86.avx512.vcvttss2sis(<4 x float>, i32) nounwind readnone
+declare i32 @llvm.x86.avx10.vcvttss2sis(<4 x float>, i32) nounwind readnone
define i32 @test_x86_avx512_vcvttss2sis_load(ptr %a0) {
; X64-LABEL: test_x86_avx512_vcvttss2sis_load:
@@ -56,7 +56,7 @@ define i32 @test_x86_avx512_vcvttss2sis_load(ptr %a0) {
; X86-NEXT: vcvttss2sis (%eax), %eax # encoding: [0x62,0xf5,0x7e,0x08,0x6d,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%a1 = load <4 x float>, ptr %a0
- %res = call i32 @llvm.x86.avx512.vcvttss2sis(<4 x float> %a1, i32 4) ;
+ %res = call i32 @llvm.x86.avx10.vcvttss2sis(<4 x float> %a1, i32 4) ;
ret i32 %res
}
@@ -67,12 +67,12 @@ define i32 @test_x86_avx512_vcvttss2usis(<4 x float> %a0) {
; CHECK-NEXT: vcvttss2usis %xmm0, %eax # encoding: [0x62,0xf5,0x7e,0x08,0x6c,0xc0]
; CHECK-NEXT: addl %ecx, %eax # encoding: [0x01,0xc8]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res0 = call i32 @llvm.x86.avx512.vcvttss2usis(<4 x float> %a0, i32 8) ;
- %res1 = call i32 @llvm.x86.avx512.vcvttss2usis(<4 x float> %a0, i32 4) ;
+ %res0 = call i32 @llvm.x86.avx10.vcvttss2usis(<4 x float> %a0, i32 8) ;
+ %res1 = call i32 @llvm.x86.avx10.vcvttss2usis(<4 x float> %a0, i32 4) ;
%res2 = add i32 %res0, %res1
ret i32 %res2
}
-declare i32 @llvm.x86.avx512.vcvttss2usis(<4 x float>, i32) nounwind readnone
+declare i32 @llvm.x86.avx10.vcvttss2usis(<4 x float>, i32) nounwind readnone
define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_256(<4 x double> %x0, <4 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_256:
@@ -90,7 +90,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_256(<4 x double> %x0, <4 x i32>
; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> %src, i8 %mask, i32 4)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> %src, i8 %mask, i32 4)
ret <4 x i32> %res
}
@@ -108,7 +108,7 @@ define <4 x i32> @test_int_x86_maskz_vcvtt_pd2dqs_256_z(<4 x double> %x0, i8 %ma
; X86-NEXT: vcvttpd2dqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6d,0xc0]
; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> zeroinitializer, i8 %mask, i32 4)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> zeroinitializer, i8 %mask, i32 4)
ret <4 x i32> %res
}
@@ -126,7 +126,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_256_undef(<4 x double> %x0, i8
; X86-NEXT: vcvttpd2dqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6d,0xc0]
; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> undef, i8 %mask, i32 4)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> undef, i8 %mask, i32 4)
ret <4 x i32> %res
}
@@ -142,10 +142,10 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_256_default(<4 x double>* %xptr
; X86-NEXT: vcvttpd2dqsy (%eax), %xmm0 # encoding: [0x62,0xf5,0xfc,0x28,0x6d,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x0 = load <4 x double>, <4 x double> * %xptr
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> undef, i8 -1, i32 4)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.round.256( <4 x double> %x0, <4 x i32> undef, i8 -1, i32 4)
ret <4 x i32> %res
}
-declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.round.256(<4 x double>, <4 x i32>, i8 , i32)
+declare <4 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.round.256(<4 x double>, <4 x i32>, i8 , i32)
define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_256(<4 x double> %x0, <4 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2udqs_256:
@@ -163,7 +163,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_256(<4 x double> %x0, <4 x i32
; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256( <4 x double> %x0, <4 x i32> %src, i8 %mask, i32 4)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.round.256( <4 x double> %x0, <4 x i32> %src, i8 %mask, i32 4)
ret <4 x i32> %res
}
@@ -181,7 +181,7 @@ define <4 x i32> @test_int_x86_maskz_vcvtt_pd2udqs_256_z(<4 x double> %x0, i8 %m
; X86-NEXT: vcvttpd2udqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6c,0xc0]
; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256( <4 x double> %x0, <4 x i32> zeroinitializer, i8 %mask, i32 4)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.round.256( <4 x double> %x0, <4 x i32> zeroinitializer, i8 %mask, i32 4)
ret <4 x i32> %res
}
@@ -199,7 +199,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_256_undef(<4 x double> %x0, i8
; X86-NEXT: vcvttpd2udqs %ymm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0xa9,0x6c,0xc0]
; X86-NEXT: vzeroupper # encoding: [0xc5,0xf8,0x77]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256( <4 x double> %x0, <4 x i32> undef, i8 %mask, i32 4)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.round.256( <4 x double> %x0, <4 x i32> undef, i8 %mask, i32 4)
ret <4 x i32> %res
}
@@ -216,10 +216,10 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_256_default(<4 x double>* %x0)
; X86-NEXT: vcvttpd2udqsy (%eax), %xmm0 # encoding: [0x62,0xf5,0xfc,0x28,0x6c,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x10 = load <4 x double>, <4 x double> * %x0
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256( <4 x double> %x10, <4 x i32> undef, i8 -1, i32 4)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.round.256( <4 x double> %x10, <4 x i32> undef, i8 -1, i32 4)
ret <4 x i32> %res
}
-declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.round.256(<4 x double>, <4 x i32>, i8 , i32)
+declare <4 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.round.256(<4 x double>, <4 x i32>, i8 , i32)
define <4 x i64> @test_int_x86_mask_vcvtt_pd2qqs_256(<4 x double> %x0, <4 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_256:
@@ -235,7 +235,7 @@ define <4 x i64> @test_int_x86_mask_vcvtt_pd2qqs_256(<4 x double> %x0, <4 x i64>
; X86-NEXT: vcvttpd2qqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x29,0x6d,0xc8]
; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256( <4 x double> %x0, <4 x i64> %src, i8 %mask, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.round.256( <4 x double> %x0, <4 x i64> %src, i8 %mask, i32 4)
ret <4 x i64> %res
}
@@ -251,7 +251,7 @@ define <4 x i64> @test_int_x86_maskz_vcvtt_pd2qqs_256_z(<4 x double> %x0, i8 %ma
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2qqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256( <4 x double> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.round.256( <4 x double> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
ret <4 x i64> %res
}
@@ -267,7 +267,7 @@ define <4 x i64> @test_int_x86_mask_vcvtt_pd2qqs_256_undef(<4 x double> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2qqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256( <4 x double> %x0, <4 x i64> undef, i8 %mask, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.round.256( <4 x double> %x0, <4 x i64> undef, i8 %mask, i32 4)
ret <4 x i64> %res
}
@@ -284,10 +284,10 @@ define <4 x i64> @test_int_x86_mask_vcvtt_pd2qqs_256_default(<4 x double>* %x0)
; X86-NEXT: vcvttpd2qqs (%eax), %ymm0 # encoding: [0x62,0xf5,0xfd,0x28,0x6d,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x10 = load <4 x double>, <4 x double>* %x0
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256( <4 x double> %x10, <4 x i64> undef, i8 -1, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.round.256( <4 x double> %x10, <4 x i64> undef, i8 -1, i32 4)
ret <4 x i64> %res
}
-declare <4 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.round.256(<4 x double>, <4 x i64>, i8 , i32)
+declare <4 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.round.256(<4 x double>, <4 x i64>, i8 , i32)
define <4 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_256(<4 x double> %x0, <4 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_256:
@@ -303,7 +303,7 @@ define <4 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_256(<4 x double> %x0, <4 x i64
; X86-NEXT: vcvttpd2uqqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x29,0x6c,0xc8]
; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256( <4 x double> %x0, <4 x i64> %src, i8 %mask, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.round.256( <4 x double> %x0, <4 x i64> %src, i8 %mask, i32 4)
ret <4 x i64> %res
}
@@ -319,7 +319,7 @@ define <4 x i64> @test_int_x86_maskz_vcvtt_pd2uqqs_256_z(<4 x double> %x0, i8 %m
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2uqqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256( <4 x double> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.round.256( <4 x double> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
ret <4 x i64> %res
}
@@ -335,7 +335,7 @@ define <4 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_256_undef(<4 x double> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2uqqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0xa9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256( <4 x double> %x0, <4 x i64> undef, i8 %mask, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.round.256( <4 x double> %x0, <4 x i64> undef, i8 %mask, i32 4)
ret <4 x i64> %res
}
@@ -352,10 +352,10 @@ define <4 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_256_default(<4 x double>* %x0)
; X86-NEXT: vcvttpd2uqqs (%eax), %ymm0 # encoding: [0x62,0xf5,0xfd,0x28,0x6c,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x10 = load <4 x double>, <4 x double>* %x0
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256( <4 x double> %x10, <4 x i64> undef, i8 -1, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.round.256( <4 x double> %x10, <4 x i64> undef, i8 -1, i32 4)
ret <4 x i64> %res
}
-declare <4 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.round.256(<4 x double>, <4 x i64>, i8 , i32)
+declare <4 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.round.256(<4 x double>, <4 x i64>, i8 , i32)
define <8 x i32> @test_int_x86_mask_vcvtt_ps2dqs_256(<8 x float> %x0, <8 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2dqs_256:
@@ -371,7 +371,7 @@ define <8 x i32> @test_int_x86_mask_vcvtt_ps2dqs_256(<8 x float> %x0, <8 x i32>
; X86-NEXT: vcvttps2dqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x29,0x6d,0xc8]
; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256( <8 x float> %x0, <8 x i32> %src, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.round.256( <8 x float> %x0, <8 x i32> %src, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -387,7 +387,7 @@ define <8 x i32> @test_int_x86_maskz_vcvtt_ps2dqs_256_z(<8 x float> %x0, i8 %mas
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2dqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256( <8 x float> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.round.256( <8 x float> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -403,7 +403,7 @@ define <8 x i32> @test_int_x86_mask_vcvtt_ps2dqs_256_undef(<8 x float> %x0, i8 %
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2dqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256( <8 x float> %x0, <8 x i32> undef, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.round.256( <8 x float> %x0, <8 x i32> undef, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -419,10 +419,10 @@ define <8 x i32> @test_int_x86_mask_vcvtt_ps2dqs_256_default(<8 x float>* %x0) {
; X86-NEXT: vcvttps2dqs (%eax), %ymm0 # encoding: [0x62,0xf5,0x7c,0x28,0x6d,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x10 = load <8 x float>, <8 x float>* %x0
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256( <8 x float> %x10, <8 x i32> undef, i8 -1, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.round.256( <8 x float> %x10, <8 x i32> undef, i8 -1, i32 4)
ret <8 x i32> %res
}
-declare <8 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.round.256(<8 x float>, <8 x i32>, i8 , i32)
+declare <8 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.round.256(<8 x float>, <8 x i32>, i8 , i32)
define <8 x i32> @test_int_x86_mask_vcvtt_ps2udqs_256(<8 x float> %x0, <8 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_256:
@@ -438,7 +438,7 @@ define <8 x i32> @test_int_x86_mask_vcvtt_ps2udqs_256(<8 x float> %x0, <8 x i32>
; X86-NEXT: vcvttps2udqs %ymm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x29,0x6c,0xc8]
; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256( <8 x float> %x0, <8 x i32> %src, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.round.256( <8 x float> %x0, <8 x i32> %src, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -454,7 +454,7 @@ define <8 x i32> @test_int_x86_maskz_vcvtt_ps2udqs_256_z(<8 x float> %x0, i8 %ma
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2udqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256( <8 x float> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.round.256( <8 x float> %x0, <8 x i32> zeroinitializer, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -470,7 +470,7 @@ define <8 x i32> @test_int_x86_mask_vcvtt_ps2udqs_256_undef(<8 x float> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2udqs %ymm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0xa9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256( <8 x float> %x0, <8 x i32> undef, i8 %mask, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.round.256( <8 x float> %x0, <8 x i32> undef, i8 %mask, i32 4)
ret <8 x i32> %res
}
@@ -487,10 +487,10 @@ define <8 x i32> @test_int_x86_mask_vcvtt_ps2udqs_256_default(<8 x float>* %x0)
; X86-NEXT: vcvttps2udqs (%eax), %ymm0 # encoding: [0x62,0xf5,0x7c,0x28,0x6c,0x00]
; X86-NEXT: retl # encoding: [0xc3]
%x10 = load <8 x float>, <8 x float>* %x0
- %res = call <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256( <8 x float> %x10, <8 x i32> undef, i8 -1, i32 4)
+ %res = call <8 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.round.256( <8 x float> %x10, <8 x i32> undef, i8 -1, i32 4)
ret <8 x i32> %res
}
-declare <8 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.round.256(<8 x float>, <8 x i32>, i8 , i32)
+declare <8 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.round.256(<8 x float>, <8 x i32>, i8 , i32)
define <4 x i64> @test_int_x86_maskz_vcvtt_ps2qqs_256_z(<4 x float> %x0, i8 %mask) {
; X64-LABEL: test_int_x86_maskz_vcvtt_ps2qqs_256_z:
@@ -504,7 +504,7 @@ define <4 x i64> @test_int_x86_maskz_vcvtt_ps2qqs_256_z(<4 x float> %x0, i8 %mas
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2qqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.256( <4 x float> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.round.256( <4 x float> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
ret <4 x i64> %res
}
@@ -520,10 +520,10 @@ define <4 x i64> @test_int_x86_mask_vcvtt_ps2qqs_256_undef(<4 x float> %x0, i8 %
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2qqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.256( <4 x float> %x0, <4 x i64> undef, i8 %mask, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.round.256( <4 x float> %x0, <4 x i64> undef, i8 %mask, i32 4)
ret <4 x i64> %res
}
-declare <4 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.round.256(<4 x float>, <4 x i64>, i8 , i32)
+declare <4 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.round.256(<4 x float>, <4 x i64>, i8 , i32)
define <4 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_256(<4 x float> %x0, <4 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_256:
@@ -539,7 +539,7 @@ define <4 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_256(<4 x float> %x0, <4 x i64>
; X86-NEXT: vcvttps2uqqs %xmm0, %ymm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x29,0x6c,0xc8]
; X86-NEXT: vmovaps %ymm1, %ymm0 # EVEX TO VEX Compression encoding: [0xc5,0xfc,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> %src, i8 %mask, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> %src, i8 %mask, i32 4)
ret <4 x i64> %res
}
@@ -555,7 +555,7 @@ define <4 x i64> @test_int_x86_maskz_vcvtt_ps2uqqs_256_z(<4 x float> %x0, i8 %ma
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2uqqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> zeroinitializer, i8 %mask, i32 4)
ret <4 x i64> %res
}
@@ -571,7 +571,7 @@ define <4 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_256_undef(<4 x float> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2uqqs %xmm0, %ymm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0xa9,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> undef, i8 %mask, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> undef, i8 %mask, i32 4)
ret <4 x i64> %res
}
@@ -581,11 +581,11 @@ define <4 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_256_default(<4 x float> %x0) {
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttps2uqqs %xmm0, %ymm0 # encoding: [0x62,0xf5,0x7d,0x28,0x6c,0xc0]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res = call <4 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> undef, i8 -1, i32 4)
+ %res = call <4 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.round.256( <4 x float> %x0, <4 x i64> undef, i8 -1, i32 4)
ret <4 x i64> %res
}
-declare <4 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.round.256(<4 x float>, <4 x i64>, i8 , i32)
+declare <4 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.round.256(<4 x float>, <4 x i64>, i8 , i32)
define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_128(<2 x double> %x0, <4 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2dqs_128:
@@ -601,7 +601,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_128(<2 x double> %x0, <4 x i32>
; X86-NEXT: vcvttpd2dqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc8]
; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> %src, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> %src, i8 %mask)
ret <4 x i32> %res
}
@@ -617,7 +617,7 @@ define <4 x i32> @test_int_x86_maskz_vcvtt_pd2dqs_128_z(<2 x double> %x0, i8 %ma
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0x89,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> zeroinitializer, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> zeroinitializer, i8 %mask)
ret <4 x i32> %res
}
@@ -633,7 +633,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_128_undef(<2 x double> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> undef, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> undef, i8 %mask)
ret <4 x i32> %res
}
@@ -643,10 +643,10 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2dqs_128_default(<2 x double> %x0) {
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttpd2dqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0xfc,0x08,0x6d,0xc0]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> undef, i8 -1)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.128( <2 x double> %x0, <4 x i32> undef, i8 -1)
ret <4 x i32> %res
}
-declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2dqs.128(<2 x double>, <4 x i32>, i8)
+declare <4 x i32> @llvm.x86.avx10.mask.vcvttpd2dqs.128(<2 x double>, <4 x i32>, i8)
define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_128(<2 x double> %x0, <4 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2udqs_128:
@@ -662,7 +662,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_128(<2 x double> %x0, <4 x i32
; X86-NEXT: vcvttpd2dqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc8]
; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> %src, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> %src, i8 %mask)
ret <4 x i32> %res
}
@@ -678,7 +678,7 @@ define <4 x i32> @test_int_x86_maskz_vcvtt_pd2udqs_128_z(<2 x double> %x0, i8 %m
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfc,0x89,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> zeroinitializer, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> zeroinitializer, i8 %mask)
ret <4 x i32> %res
}
@@ -694,7 +694,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_128_undef(<2 x double> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2dqs %xmm0, %xmm0 {%k1} # encoding: [0x62,0xf5,0xfc,0x09,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> undef, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> undef, i8 %mask)
ret <4 x i32> %res
}
@@ -704,10 +704,10 @@ define <4 x i32> @test_int_x86_mask_vcvtt_pd2udqs_128_default(<2 x double> %x0)
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttpd2udqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0xfc,0x08,0x6c,0xc0]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> undef, i8 -1)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.128( <2 x double> %x0, <4 x i32> undef, i8 -1)
ret <4 x i32> %res
}
-declare <4 x i32> @llvm.x86.avx512.mask.vcvttpd2udqs.128(<2 x double>, <4 x i32>, i8)
+declare <4 x i32> @llvm.x86.avx10.mask.vcvttpd2udqs.128(<2 x double>, <4 x i32>, i8)
define <2 x i64> @test_int_x86_mask_vcvtt_pd2qqs_128(<2 x double> %x0, <2 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2qqs_128:
@@ -723,7 +723,7 @@ define <2 x i64> @test_int_x86_mask_vcvtt_pd2qqs_128(<2 x double> %x0, <2 x i64>
; X86-NEXT: vcvttpd2qqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x09,0x6d,0xc8]
; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> %src, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> %src, i8 %mask)
ret <2 x i64> %res
}
@@ -739,7 +739,7 @@ define <2 x i64> @test_int_x86_maskz_vcvtt_pd2qqs_128_z(<2 x double> %x0, i8 %ma
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> zeroinitializer, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> zeroinitializer, i8 %mask)
ret <2 x i64> %res
}
@@ -755,7 +755,7 @@ define <2 x i64> @test_int_x86_mask_vcvtt_pd2qqs_128_undef(<2 x double> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> undef, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> undef, i8 %mask)
ret <2 x i64> %res
}
@@ -765,10 +765,10 @@ define <2 x i64> @test_int_x86_mask_vcvtt_pd2qqs_128_default(<2 x double> %x0) {
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttpd2qqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0xfd,0x08,0x6d,0xc0]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> undef, i8 -1)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.128( <2 x double> %x0, <2 x i64> undef, i8 -1)
ret <2 x i64> %res
}
-declare <2 x i64> @llvm.x86.avx512.mask.vcvttpd2qqs.128(<2 x double>, <2 x i64>, i8)
+declare <2 x i64> @llvm.x86.avx10.mask.vcvttpd2qqs.128(<2 x double>, <2 x i64>, i8)
define <2 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_128(<2 x double> %x0, <2 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_pd2uqqs_128:
@@ -784,7 +784,7 @@ define <2 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_128(<2 x double> %x0, <2 x i64
; X86-NEXT: vcvttpd2uqqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0xfd,0x09,0x6c,0xc8]
; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> %src, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> %src, i8 %mask)
ret <2 x i64> %res
}
@@ -800,7 +800,7 @@ define <2 x i64> @test_int_x86_maskz_vcvtt_pd2uqqs_128_z(<2 x double> %x0, i8 %m
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> zeroinitializer, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> zeroinitializer, i8 %mask)
ret <2 x i64> %res
}
@@ -816,7 +816,7 @@ define <2 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_128_undef(<2 x double> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttpd2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0xfd,0x89,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> undef, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> undef, i8 %mask)
ret <2 x i64> %res
}
@@ -826,17 +826,17 @@ define <2 x i64> @test_int_x86_mask_vcvtt_pd2uqqs_128_default(<2 x double> %x0)
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttpd2uqqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0xfd,0x08,0x6c,0xc0]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> undef, i8 -1)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.128( <2 x double> %x0, <2 x i64> undef, i8 -1)
ret <2 x i64> %res
}
-declare <2 x i64> @llvm.x86.avx512.mask.vcvttpd2uqqs.128(<2 x double>, <2 x i64>, i8)
+declare <2 x i64> @llvm.x86.avx10.mask.vcvttpd2uqqs.128(<2 x double>, <2 x i64>, i8)
define <2 x i64> @test_int_x86_mask_vcvtt_ps2qqs_128_default(<4 x float> %x0) {
; CHECK-LABEL: test_int_x86_mask_vcvtt_ps2qqs_128_default:
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttps2qqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x6d,0xc0]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> undef, i8 -1)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> undef, i8 -1)
ret <2 x i64> %res
}
@@ -854,7 +854,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_ps2dqs_128(<4 x float> %x0, <4 x i32>
; X86-NEXT: vcvttps2dqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x09,0x6d,0xc8]
; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> %src, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> %src, i8 %mask)
ret <4 x i32> %res
}
define <4 x i32> @test_int_x86_maskz_vcvtt_ps2dqs_128_z(<4 x float> %x0, i8 %mask) {
@@ -869,7 +869,7 @@ define <4 x i32> @test_int_x86_maskz_vcvtt_ps2dqs_128_z(<4 x float> %x0, i8 %mas
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> zeroinitializer, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> zeroinitializer, i8 %mask)
ret <4 x i32> %res
}
define <4 x i32> @test_int_x86_mask_vcvtt_ps2dqs_128_undef(<4 x float> %x0, i8 %mask) {
@@ -884,7 +884,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_ps2dqs_128_undef(<4 x float> %x0, i8 %
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2dqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> undef, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> undef, i8 %mask)
ret <4 x i32> %res
}
define <4 x i32> @test_int_x86_mask_vcvtt_ps2dqs_128_default(<4 x float> %x0) {
@@ -892,10 +892,10 @@ define <4 x i32> @test_int_x86_mask_vcvtt_ps2dqs_128_default(<4 x float> %x0) {
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttps2dqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x08,0x6d,0xc0]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> undef, i8 -1)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.128( <4 x float> %x0, <4 x i32> undef, i8 -1)
ret <4 x i32> %res
}
-declare <4 x i32> @llvm.x86.avx512.mask.vcvttps2dqs.128(<4 x float>, <4 x i32>, i8)
+declare <4 x i32> @llvm.x86.avx10.mask.vcvttps2dqs.128(<4 x float>, <4 x i32>, i8)
define <4 x i32> @test_int_x86_mask_vcvtt_ps2udqs_128(<4 x float> %x0, <4 x i32> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2udqs_128:
@@ -911,7 +911,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_ps2udqs_128(<4 x float> %x0, <4 x i32>
; X86-NEXT: vcvttps2udqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7c,0x09,0x6c,0xc8]
; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> %src, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> %src, i8 %mask)
ret <4 x i32> %res
}
define <4 x i32> @test_int_x86_maskz_vcvtt_ps2udqs_128_z(<4 x float> %x0, i8 %mask) {
@@ -926,7 +926,7 @@ define <4 x i32> @test_int_x86_maskz_vcvtt_ps2udqs_128_z(<4 x float> %x0, i8 %ma
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2udqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> zeroinitializer, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> zeroinitializer, i8 %mask)
ret <4 x i32> %res
}
define <4 x i32> @test_int_x86_mask_vcvtt_ps2udqs_128_undef(<4 x float> %x0, i8 %mask) {
@@ -941,7 +941,7 @@ define <4 x i32> @test_int_x86_mask_vcvtt_ps2udqs_128_undef(<4 x float> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2udqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7c,0x89,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> undef, i8 %mask)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> undef, i8 %mask)
ret <4 x i32> %res
}
define <4 x i32> @test_int_x86_mask_vcvtt_ps2udqs_128_default(<4 x float> %x0) {
@@ -949,10 +949,10 @@ define <4 x i32> @test_int_x86_mask_vcvtt_ps2udqs_128_default(<4 x float> %x0) {
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttps2udqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7c,0x08,0x6c,0xc0]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res = call <4 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> undef, i8 -1)
+ %res = call <4 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.128( <4 x float> %x0, <4 x i32> undef, i8 -1)
ret <4 x i32> %res
}
-declare <4 x i32> @llvm.x86.avx512.mask.vcvttps2udqs.128(<4 x float>, <4 x i32>, i8)
+declare <4 x i32> @llvm.x86.avx10.mask.vcvttps2udqs.128(<4 x float>, <4 x i32>, i8)
define <2 x i64> @test_int_x86_mask_vcvtt_ps2qqs_128_undef(<4 x float> %x0, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2qqs_128_undef:
@@ -966,7 +966,7 @@ define <2 x i64> @test_int_x86_mask_vcvtt_ps2qqs_128_undef(<4 x float> %x0, i8 %
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> undef, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> undef, i8 %mask)
ret <2 x i64> %res
}
@@ -982,7 +982,7 @@ define <2 x i64> @test_int_x86_maskz_vcvtt_ps2qqs_128_z(<4 x float> %x0, i8 %mas
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2qqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6d,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> zeroinitializer, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> zeroinitializer, i8 %mask)
ret <2 x i64> %res
}
@@ -1000,10 +1000,10 @@ define <2 x i64> @test_int_x86_mask_vcvtt_ps2qqs_128(<4 x float> %x0, <2 x i64>
; X86-NEXT: vcvttps2qqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x09,0x6d,0xc8]
; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> %src, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.128( <4 x float> %x0, <2 x i64> %src, i8 %mask)
ret <2 x i64> %res
}
-declare <2 x i64> @llvm.x86.avx512.mask.vcvttps2qqs.128(<4 x float>, <2 x i64>, i8)
+declare <2 x i64> @llvm.x86.avx10.mask.vcvttps2qqs.128(<4 x float>, <2 x i64>, i8)
define <2 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_128(<4 x float> %x0, <2 x i64> %src, i8 %mask) {
; X64-LABEL: test_int_x86_mask_vcvtt_ps2uqqs_128:
@@ -1019,7 +1019,7 @@ define <2 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_128(<4 x float> %x0, <2 x i64>
; X86-NEXT: vcvttps2uqqs %xmm0, %xmm1 {%k1} # encoding: [0x62,0xf5,0x7d,0x09,0x6c,0xc8]
; X86-NEXT: vmovaps %xmm1, %xmm0 # EVEX TO VEX Compression encoding: [0xc5,0xf8,0x28,0xc1]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> %src, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> %src, i8 %mask)
ret <2 x i64> %res
}
@@ -1035,7 +1035,7 @@ define <2 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_128_undef(<4 x float> %x0, i8
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> undef, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> undef, i8 %mask)
ret <2 x i64> %res
}
@@ -1044,7 +1044,7 @@ define <2 x i64> @test_int_x86_mask_vcvtt_ps2uqqs_128_default(<4 x float> %x0) {
; CHECK: # %bb.0:
; CHECK-NEXT: vcvttps2uqqs %xmm0, %xmm0 # encoding: [0x62,0xf5,0x7d,0x08,0x6c,0xc0]
; CHECK-NEXT: ret{{[l|q]}} # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> undef, i8 -1)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> undef, i8 -1)
ret <2 x i64> %res
}
define <2 x i64> @test_int_x86_maskz_vcvtt_ps2uqqs_128_z(<4 x float> %x0, i8 %mask) {
@@ -1059,8 +1059,8 @@ define <2 x i64> @test_int_x86_maskz_vcvtt_ps2uqqs_128_z(<4 x float> %x0, i8 %ma
; X86-NEXT: kmovb {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf9,0x90,0x4c,0x24,0x04]
; X86-NEXT: vcvttps2uqqs %xmm0, %xmm0 {%k1} {z} # encoding: [0x62,0xf5,0x7d,0x89,0x6c,0xc0]
; X86-NEXT: retl # encoding: [0xc3]
- %res = call <2 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> zeroinitializer, i8 %mask)
+ %res = call <2 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.128( <4 x float> %x0, <2 x i64> zeroinitializer, i8 %mask)
ret <2 x i64> %res
}
-declare <2 x i64> @llvm.x86.avx512.mask.vcvttps2uqqs.128(<4 x float>, <2 x i64>, i8)
+declare <2 x i64> @llvm.x86.avx10.mask.vcvttps2uqqs.128(<4 x float>, <2 x i64>, i8)
diff --git a/llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll b/llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll
index 460411e4222dee..f5be929bc85ce9 100644
--- a/llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll
+++ b/llvm/test/CodeGen/X86/avx10_2satcvtds-x64-intrinsics.ll
@@ -8,12 +8,12 @@ define i64 @test_x86_avx512_vcvttsd2si64(<2 x double> %a0) {
; CHECK-NEXT: vcvttsd2sis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xff,0x18,0x6d,0xc0]
; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
; CHECK-NEXT: retq # encoding: [0xc3]
- %res0 = call i64 @llvm.x86.avx512.vcvttsd2sis64(<2 x double> %a0, i32 4) ;
- %res1 = call i64 @llvm.x86.avx512.vcvttsd2sis64(<2 x double> %a0, i32 8) ;
+ %res0 = call i64 @llvm.x86.avx10.vcvttsd2sis64(<2 x double> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx10.vcvttsd2sis64(<2 x double> %a0, i32 8) ;
%res2 = add i64 %res0, %res1
ret i64 %res2
}
-declare i64 @llvm.x86.avx512.vcvttsd2sis64(<2 x double>, i32) nounwind readnone
+declare i64 @llvm.x86.avx10.vcvttsd2sis64(<2 x double>, i32) nounwind readnone
define i64 @test_x86_avx512_vcvttsd2usi64(<2 x double> %a0) {
; CHECK-LABEL: test_x86_avx512_vcvttsd2usi64:
@@ -22,12 +22,12 @@ define i64 @test_x86_avx512_vcvttsd2usi64(<2 x double> %a0) {
; CHECK-NEXT: vcvttsd2usis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xff,0x18,0x6c,0xc0]
; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
; CHECK-NEXT: retq # encoding: [0xc3]
- %res0 = call i64 @llvm.x86.avx512.vcvttsd2usis64(<2 x double> %a0, i32 4) ;
- %res1 = call i64 @llvm.x86.avx512.vcvttsd2usis64(<2 x double> %a0, i32 8) ;
+ %res0 = call i64 @llvm.x86.avx10.vcvttsd2usis64(<2 x double> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx10.vcvttsd2usis64(<2 x double> %a0, i32 8) ;
%res2 = add i64 %res0, %res1
ret i64 %res2
}
-declare i64 @llvm.x86.avx512.vcvttsd2usis64(<2 x double>, i32) nounwind readnone
+declare i64 @llvm.x86.avx10.vcvttsd2usis64(<2 x double>, i32) nounwind readnone
define i64 @test_x86_avx512_vcvttss2sis64(<4 x float> %a0) {
; CHECK-LABEL: test_x86_avx512_vcvttss2sis64:
@@ -36,12 +36,12 @@ define i64 @test_x86_avx512_vcvttss2sis64(<4 x float> %a0) {
; CHECK-NEXT: vcvttss2sis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xfe,0x18,0x6d,0xc0]
; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
; CHECK-NEXT: retq # encoding: [0xc3]
- %res0 = call i64 @llvm.x86.avx512.vcvttss2sis64(<4 x float> %a0, i32 4) ;
- %res1 = call i64 @llvm.x86.avx512.vcvttss2sis64(<4 x float> %a0, i32 8) ;
+ %res0 = call i64 @llvm.x86.avx10.vcvttss2sis64(<4 x float> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx10.vcvttss2sis64(<4 x float> %a0, i32 8) ;
%res2 = add i64 %res0, %res1
ret i64 %res2
}
-declare i64 @llvm.x86.avx512.vcvttss2sis64(<4 x float>, i32) nounwind readnone
+declare i64 @llvm.x86.avx10.vcvttss2sis64(<4 x float>, i32) nounwind readnone
define i64 @test_x86_avx512_vcvttss2usis64(<4 x float> %a0) {
; CHECK-LABEL: test_x86_avx512_vcvttss2usis64:
@@ -50,9 +50,9 @@ define i64 @test_x86_avx512_vcvttss2usis64(<4 x float> %a0) {
; CHECK-NEXT: vcvttss2usis {sae}, %xmm0, %rax # encoding: [0x62,0xf5,0xfe,0x18,0x6c,0xc0]
; CHECK-NEXT: addq %rcx, %rax # encoding: [0x48,0x01,0xc8]
; CHECK-NEXT: retq # encoding: [0xc3]
- %res0 = call i64 @llvm.x86.avx512.vcvttss2usis64(<4 x float> %a0, i32 4) ;
- %res1 = call i64 @llvm.x86.avx512.vcvttss2usis64(<4 x float> %a0, i32 8) ;
+ %res0 = call i64 @llvm.x86.avx10.vcvttss2usis64(<4 x float> %a0, i32 4) ;
+ %res1 = call i64 @llvm.x86.avx10.vcvttss2usis64(<4 x float> %a0, i32 8) ;
%res2 = add i64 %res0, %res1
ret i64 %res2
}
-declare i64 @llvm.x86.avx512.vcvttss2usis64(<4 x float>, i32) nounwind readnone
+declare i64 @llvm.x86.avx10.vcvttss2usis64(<4 x float>, i32) nounwind readnone
>From 0ccaae1f26e38ba2f6ca000355c8ec6139dde78d Mon Sep 17 00:00:00 2001
From: Malay Sanghi <malay.sanghi at intel.com>
Date: Mon, 9 Sep 2024 19:39:13 +0800
Subject: [PATCH 6/7] review6
---
clang/lib/Headers/avx10_2satcvtdsintrin.h | 202 +++++++++++++---------
1 file changed, 122 insertions(+), 80 deletions(-)
diff --git a/clang/lib/Headers/avx10_2satcvtdsintrin.h b/clang/lib/Headers/avx10_2satcvtdsintrin.h
index af79ff4e044fec..85a4a532abde23 100644
--- a/clang/lib/Headers/avx10_2satcvtdsintrin.h
+++ b/clang/lib/Headers/avx10_2satcvtdsintrin.h
@@ -65,23 +65,27 @@
#endif /* __x86_64__ */
// 128 Bit : Double -> int
-#define _mm_cvttspd_epi32(A) \
- ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
- (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
- (__mmask8)(-1)))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttspd_epi32(__m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask(
+ (__v2df)A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1)));
+}
-#define _mm_mask_cvttspd_epi32(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
- (__v2df)(__m128d)A, (__v4si)(__m128i)W, (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttspd_epi32(__m128i W,
+ __mmask8 U,
+ __m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask((__v2df)A, (__v4si)W, U));
+}
-#define _mm_maskz_cvttspd_epi32(U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( \
- (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_maskz_cvttspd_epi32(__mmask16 U, __m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask(
+ (__v2df)A, (__v4si)(__m128i)_mm_setzero_si128(), U));
+}
// 256 Bit : Double -> int
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_cvttspd_epi32(__m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
- (__v4df)(__m256d)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
+ (__v4df)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
_MM_FROUND_CUR_DIRECTION));
}
@@ -112,18 +116,23 @@ _mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A) {
(int)(R)))
// 128 Bit : Double -> uint
-#define _mm_cvttspd_epu32(A) \
- ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
- (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_undefined_si128(), \
- (__mmask8)(-1)))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttspd_epu32(__m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask(
+ (__v2df)A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1)));
+}
-#define _mm_mask_cvttspd_epu32(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
- ((__v2df)(__m128d)A), (__v4si)(__m128i)W, (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttspd_epu32(__m128i W,
+ __mmask8 U,
+ __m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask(
+ (__v2df)A, (__v4si)(__m128i)W, (__mmask8)U));
+}
-#define _mm_maskz_cvttspd_epu32(U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( \
- (__v2df)(__m128d)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_maskz_cvttspd_epu32(__mmask8 U, __m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask(
+ (__v2df)A, (__v4si)(__m128i)_mm_setzero_si128(), U));
+}
// 256 Bit : Double -> uint
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_cvttspd_epu32(__m256d A) {
@@ -159,17 +168,23 @@ _mm256_maskz_cvttspd_epu32(__mmask8 U, __m256d A) {
(int)(R)))
// 128 Bit : Double -> long
-#define _mm_cvttspd_epi64(A) \
- ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( \
- (__v2df)(__m128d)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttspd_epi64(__m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask(
+ (__v2df)A, (__v2di)_mm_undefined_si128(), (__mmask8)-1));
+}
-#define _mm_mask_cvttspd_epi64(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask((__v2df)(__m128d)A, (__v2di)W, \
- (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttspd_epi64(__m128i W,
+ __mmask8 U,
+ __m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask((__v2df)A, (__v2di)W,
+ (__mmask8)U));
+}
-#define _mm_maskz_cvttspd_epi64(U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( \
- (__v2df)(__m128d)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_maskz_cvttspd_epi64(__mmask8 U, __m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask(
+ (__v2df)A, (__v2di)_mm_setzero_si128(), (__mmask8)U));
+}
// 256 Bit : Double -> long
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttspd_epi64(__m256d A) {
@@ -203,17 +218,23 @@ _mm256_maskz_cvttspd_epi64(__mmask8 U, __m256d A) {
(__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
// 128 Bit : Double -> ulong
-#define _mm_cvttspd_epu64(A) \
- ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( \
- (__v2df)(__m128d)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttspd_epu64(__m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask(
+ (__v2df)A, (__v2di)_mm_undefined_si128(), (__mmask8)-1));
+}
-#define _mm_mask_cvttspd_epu64(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask((__v2df)(__m128d)A, (__v2di)W, \
- (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttspd_epu64(__m128i W,
+ __mmask8 U,
+ __m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask((__v2df)A, (__v2di)W,
+ (__mmask8)U));
+}
-#define _mm_maskz_cvttspd_epu64(U, A) \
- ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( \
- (__v2df)(__m128d)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_maskz_cvttspd_epu64(__mmask8 U, __m128d A) {
+ return ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask(
+ (__v2df)A, (__v2di)_mm_setzero_si128(), (__mmask8)U));
+}
// 256 Bit : Double -> ulong
@@ -248,18 +269,23 @@ _mm256_maskz_cvttspd_epu64(__mmask8 U, __m256d A) {
(__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
// 128 Bit : float -> int
-#define _mm_cvttsps_epi32(A) \
- ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_undefined_si128(), \
- (__mmask8)(-1)))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttsps_epi32(__m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2dqs128_mask(
+ (__v4sf)A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1)));
+}
-#define _mm_mask_cvttsps_epi32(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)W, (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttsps_epi32(__m128i W,
+ __mmask8 U,
+ __m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2dqs128_mask((__v4sf)A, (__v4si)W,
+ (__mmask8)U));
+}
-#define _mm_maskz_cvttsps_epi32(U, A) \
- ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_cvttsps_epi32(__mmask8 U,
+ __m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2dqs128_mask(
+ (__v4sf)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U));
+}
// 256 Bit : float -> int
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi32(__m256 A) {
@@ -271,14 +297,13 @@ static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi32(__m256 A) {
static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvttsps_epi32(__m256i W, __mmask8 U, __m256 A) {
return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
- (__v8sf)(__m256)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
+ (__v8sf)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
}
static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A) {
return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
- (__v8sf)(__m256)A, (__v8si)_mm256_setzero_si256(), U,
- _MM_FROUND_CUR_DIRECTION));
+ (__v8sf)A, (__v8si)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
}
#define _mm256_cvtts_roundps_epi32(A, R) \
@@ -296,18 +321,23 @@ _mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A) {
(int)(R)))
// 128 Bit : float -> uint
-#define _mm_cvttsps_epu32(A) \
- ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_undefined_si128(), \
- (__mmask8)(-1)))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttsps_epu32(__m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2udqs128_mask(
+ (__v4sf)A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1)));
+}
-#define _mm_mask_cvttsps_epu32(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)W, (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttsps_epu32(__m128i W,
+ __mmask8 U,
+ __m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2udqs128_mask((__v4sf)A, (__v4si)W,
+ (__mmask8)U));
+}
-#define _mm_maskz_cvttsps_epu32(U, A) \
- ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( \
- (__v4sf)(__m128)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_cvttsps_epu32(__mmask8 U,
+ __m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2udqs128_mask(
+ (__v4sf)A, (__v4si)_mm_setzero_si128(), (__mmask8)U));
+}
// 256 Bit : float -> uint
@@ -344,17 +374,23 @@ _mm256_maskz_cvttsps_epu32(__mmask8 U, __m256 A) {
(int)(R)))
// 128 bit : float -> long
-#define _mm_cvttsps_epi64(A) \
- ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttsps_epi64(__m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2qqs128_mask(
+ (__v4sf)A, (__v2di)_mm_undefined_si128(), (__mmask8)-1));
+}
-#define _mm_mask_cvttsps_epi64(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)(__m128i)W, (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttsps_epi64(__m128i W,
+ __mmask8 U,
+ __m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2qqs128_mask(
+ (__v4sf)A, (__v2di)(__m128i)W, (__mmask8)U));
+}
-#define _mm_maskz_cvttsps_epi64(U, A) \
- ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_cvttsps_epi64(__mmask8 U,
+ __m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2qqs128_mask(
+ (__v4sf)A, (__v2di)_mm_setzero_si128(), (__mmask8)U));
+}
// 256 bit : float -> long
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi64(__m128 A) {
@@ -388,17 +424,23 @@ _mm256_maskz_cvttsps_epi64(__mmask8 U, __m128 A) {
(__v4sf)(__m128)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
// 128 bit : float -> ulong
-#define _mm_cvttsps_epu64(A) \
- ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)_mm_undefined_si128(), (__mmask8) - 1))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttsps_epu64(__m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask(
+ (__v4sf)A, (__v2di)_mm_undefined_si128(), (__mmask8)-1));
+}
-#define _mm_mask_cvttsps_epu64(W, U, A) \
- ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)(__m128i)W, (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttsps_epu64(__m128i W,
+ __mmask8 U,
+ __m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask(
+ (__v4sf)A, (__v2di)(__m128i)W, (__mmask8)U));
+}
-#define _mm_maskz_cvttsps_epu64(U, A) \
- ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( \
- (__v4sf)(__m128)A, (__v2di)_mm_setzero_si128(), (__mmask8)U))
+static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_cvttsps_epu64(__mmask8 U,
+ __m128 A) {
+ return ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask(
+ (__v4sf)A, (__v2di)_mm_setzero_si128(), (__mmask8)U));
+}
// 256 bit : float -> ulong
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epu64(__m128 A) {
>From 4f25bcb64fdca9abd9d4492808233db0f3398f7d Mon Sep 17 00:00:00 2001
From: Malay Sanghi <malay.sanghi at intel.com>
Date: Tue, 10 Sep 2024 12:22:29 +0800
Subject: [PATCH 7/7] review7
---
clang/lib/Headers/avx10_2satcvtdsintrin.h | 141 +++++++++++-----------
1 file changed, 71 insertions(+), 70 deletions(-)
diff --git a/clang/lib/Headers/avx10_2satcvtdsintrin.h b/clang/lib/Headers/avx10_2satcvtdsintrin.h
index 85a4a532abde23..9c47617b20b4c6 100644
--- a/clang/lib/Headers/avx10_2satcvtdsintrin.h
+++ b/clang/lib/Headers/avx10_2satcvtdsintrin.h
@@ -16,10 +16,14 @@
#define __AVX10_2SATCVTDSINTRIN_H
/* Define the default attributes for the functions in this file. */
-#define __DEFAULT_FN_ATTRS \
+#define __DEFAULT_FN_ATTRS256 \
__attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \
__min_vector_width__(256)))
+#define __DEFAULT_FN_ATTRS128 \
+ __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \
+ __min_vector_width__(128)))
+
#define _mm_cvtts_roundsd_i32(A, R) \
((int)__builtin_ia32_vcvttsd2sis32((__v2df)(__m128)(A), (const int)(R)))
@@ -65,37 +69,37 @@
#endif /* __x86_64__ */
// 128 Bit : Double -> int
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttspd_epi32(__m128d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttspd_epi32(__m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask(
(__v2df)A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1)));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttspd_epi32(__m128i W,
- __mmask8 U,
- __m128d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_mask_cvttspd_epi32(__m128i W, __mmask8 U, __m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask((__v2df)A, (__v4si)W, U));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
_mm_maskz_cvttspd_epi32(__mmask16 U, __m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask(
(__v2df)A, (__v4si)(__m128i)_mm_setzero_si128(), U));
}
// 256 Bit : Double -> int
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_cvttspd_epi32(__m256d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS256
+_mm256_cvttspd_epi32(__m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
(__v4df)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
_MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS
+static __inline__ __m128i __DEFAULT_FN_ATTRS256
_mm256_mask_cvttspd_epi32(__m128i W, __mmask8 U, __m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
(__v4df)A, (__v4si)W, U, _MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS
+static __inline__ __m128i __DEFAULT_FN_ATTRS256
_mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask(
(__v4df)A, (__v4si)_mm_setzero_si128(), U, _MM_FROUND_CUR_DIRECTION));
@@ -116,38 +120,38 @@ _mm256_maskz_cvttspd_epi32(__mmask8 U, __m256d A) {
(int)(R)))
// 128 Bit : Double -> uint
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttspd_epu32(__m128d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttspd_epu32(__m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask(
(__v2df)A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1)));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttspd_epu32(__m128i W,
- __mmask8 U,
- __m128d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_mask_cvttspd_epu32(__m128i W, __mmask8 U, __m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask(
(__v2df)A, (__v4si)(__m128i)W, (__mmask8)U));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
_mm_maskz_cvttspd_epu32(__mmask8 U, __m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask(
(__v2df)A, (__v4si)(__m128i)_mm_setzero_si128(), U));
}
// 256 Bit : Double -> uint
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm256_cvttspd_epu32(__m256d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS256
+_mm256_cvttspd_epu32(__m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
(__v4df)A, (__v4si)_mm_undefined_si128(), (__mmask8)-1,
_MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS
+static __inline__ __m128i __DEFAULT_FN_ATTRS256
_mm256_mask_cvttspd_epu32(__m128i W, __mmask8 U, __m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
(__v4df)A, (__v4si)W, U, _MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS
+static __inline__ __m128i __DEFAULT_FN_ATTRS256
_mm256_maskz_cvttspd_epu32(__mmask8 U, __m256d A) {
return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask(
(__v4df)A, (__v4si)_mm_setzero_si128(), U, _MM_FROUND_CUR_DIRECTION));
@@ -168,38 +172,38 @@ _mm256_maskz_cvttspd_epu32(__mmask8 U, __m256d A) {
(int)(R)))
// 128 Bit : Double -> long
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttspd_epi64(__m128d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttspd_epi64(__m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask(
(__v2df)A, (__v2di)_mm_undefined_si128(), (__mmask8)-1));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttspd_epi64(__m128i W,
- __mmask8 U,
- __m128d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_mask_cvttspd_epi64(__m128i W, __mmask8 U, __m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask((__v2df)A, (__v2di)W,
(__mmask8)U));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
_mm_maskz_cvttspd_epi64(__mmask8 U, __m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask(
(__v2df)A, (__v2di)_mm_setzero_si128(), (__mmask8)U));
}
// 256 Bit : Double -> long
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttspd_epi64(__m256d A) {
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
+_mm256_cvttspd_epi64(__m256d A) {
return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
(__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
_MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_mask_cvttspd_epi64(__m256i W, __mmask8 U, __m256d A) {
return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
(__v4df)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_maskz_cvttspd_epi64(__mmask8 U, __m256d A) {
return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask(
(__v4df)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
@@ -218,19 +222,18 @@ _mm256_maskz_cvttspd_epi64(__mmask8 U, __m256d A) {
(__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
// 128 Bit : Double -> ulong
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttspd_epu64(__m128d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttspd_epu64(__m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask(
(__v2df)A, (__v2di)_mm_undefined_si128(), (__mmask8)-1));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttspd_epu64(__m128i W,
- __mmask8 U,
- __m128d A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_mask_cvttspd_epu64(__m128i W, __mmask8 U, __m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask((__v2df)A, (__v2di)W,
(__mmask8)U));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
_mm_maskz_cvttspd_epu64(__mmask8 U, __m128d A) {
return ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask(
(__v2df)A, (__v2di)_mm_setzero_si128(), (__mmask8)U));
@@ -238,19 +241,20 @@ _mm_maskz_cvttspd_epu64(__mmask8 U, __m128d A) {
// 256 Bit : Double -> ulong
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttspd_epu64(__m256d A) {
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
+_mm256_cvttspd_epu64(__m256d A) {
return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
(__v4df)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
_MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_mask_cvttspd_epu64(__m256i W, __mmask8 U, __m256d A) {
return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
(__v4df)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_maskz_cvttspd_epu64(__mmask8 U, __m256d A) {
return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask(
(__v4df)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
@@ -269,38 +273,37 @@ _mm256_maskz_cvttspd_epu64(__mmask8 U, __m256d A) {
(__v4df)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
// 128 Bit : float -> int
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttsps_epi32(__m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttsps_epi32(__m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2dqs128_mask(
(__v4sf)A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1)));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttsps_epi32(__m128i W,
- __mmask8 U,
- __m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_mask_cvttsps_epi32(__m128i W, __mmask8 U, __m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2dqs128_mask((__v4sf)A, (__v4si)W,
(__mmask8)U));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_cvttsps_epi32(__mmask8 U,
- __m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_maskz_cvttsps_epi32(__mmask8 U, __m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2dqs128_mask(
(__v4sf)A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)U));
}
// 256 Bit : float -> int
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi32(__m256 A) {
+static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_cvttsps_epi32(__m256 A) {
return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
(__v8sf)A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,
_MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_mask_cvttsps_epi32(__m256i W, __mmask8 U, __m256 A) {
return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
(__v8sf)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A) {
return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask(
(__v8sf)A, (__v8si)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
@@ -321,39 +324,38 @@ _mm256_maskz_cvttsps_epi32(__mmask8 U, __m256 A) {
(int)(R)))
// 128 Bit : float -> uint
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttsps_epu32(__m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttsps_epu32(__m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2udqs128_mask(
(__v4sf)A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1)));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttsps_epu32(__m128i W,
- __mmask8 U,
- __m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_mask_cvttsps_epu32(__m128i W, __mmask8 U, __m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2udqs128_mask((__v4sf)A, (__v4si)W,
(__mmask8)U));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_cvttsps_epu32(__mmask8 U,
- __m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_maskz_cvttsps_epu32(__mmask8 U, __m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2udqs128_mask(
(__v4sf)A, (__v4si)_mm_setzero_si128(), (__mmask8)U));
}
// 256 Bit : float -> uint
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epu32(__m256 A) {
+static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_cvttsps_epu32(__m256 A) {
return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
(__v8sf)A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,
_MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_mask_cvttsps_epu32(__m256i W, __mmask8 U, __m256 A) {
return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
(__v8sf)A, (__v8si)W, U, _MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_maskz_cvttsps_epu32(__mmask8 U, __m256 A) {
return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask(
(__v8sf)A, (__v8si)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
@@ -374,37 +376,36 @@ _mm256_maskz_cvttsps_epu32(__mmask8 U, __m256 A) {
(int)(R)))
// 128 bit : float -> long
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttsps_epi64(__m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttsps_epi64(__m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2qqs128_mask(
(__v4sf)A, (__v2di)_mm_undefined_si128(), (__mmask8)-1));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttsps_epi64(__m128i W,
- __mmask8 U,
- __m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_mask_cvttsps_epi64(__m128i W, __mmask8 U, __m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2qqs128_mask(
(__v4sf)A, (__v2di)(__m128i)W, (__mmask8)U));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_cvttsps_epi64(__mmask8 U,
- __m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_maskz_cvttsps_epi64(__mmask8 U, __m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2qqs128_mask(
(__v4sf)A, (__v2di)_mm_setzero_si128(), (__mmask8)U));
}
// 256 bit : float -> long
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epi64(__m128 A) {
+static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_cvttsps_epi64(__m128 A) {
return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
(__v4sf)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
_MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_mask_cvttsps_epi64(__m256i W, __mmask8 U, __m128 A) {
return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
(__v4sf)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_maskz_cvttsps_epi64(__mmask8 U, __m128 A) {
return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask(
(__v4sf)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
@@ -424,38 +425,37 @@ _mm256_maskz_cvttsps_epi64(__mmask8 U, __m128 A) {
(__v4sf)(__m128)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
// 128 bit : float -> ulong
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvttsps_epu64(__m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttsps_epu64(__m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask(
(__v4sf)A, (__v2di)_mm_undefined_si128(), (__mmask8)-1));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mask_cvttsps_epu64(__m128i W,
- __mmask8 U,
- __m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_mask_cvttsps_epu64(__m128i W, __mmask8 U, __m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask(
(__v4sf)A, (__v2di)(__m128i)W, (__mmask8)U));
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_maskz_cvttsps_epu64(__mmask8 U,
- __m128 A) {
+static __inline__ __m128i __DEFAULT_FN_ATTRS128
+_mm_maskz_cvttsps_epu64(__mmask8 U, __m128 A) {
return ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask(
(__v4sf)A, (__v2di)_mm_setzero_si128(), (__mmask8)U));
}
// 256 bit : float -> ulong
-static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_cvttsps_epu64(__m128 A) {
+static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_cvttsps_epu64(__m128 A) {
return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
(__v4sf)A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1,
_MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_mask_cvttsps_epu64(__m256i W, __mmask8 U, __m128 A) {
return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
(__v4sf)A, (__v4di)W, U, _MM_FROUND_CUR_DIRECTION));
}
-static __inline__ __m256i __DEFAULT_FN_ATTRS
+static __inline__ __m256i __DEFAULT_FN_ATTRS256
_mm256_maskz_cvttsps_epu64(__mmask8 U, __m128 A) {
return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask(
(__v4sf)A, (__v4di)_mm256_setzero_si256(), U, _MM_FROUND_CUR_DIRECTION));
@@ -474,5 +474,6 @@ _mm256_maskz_cvttsps_epu64(__mmask8 U, __m128 A) {
((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \
(__v4sf)(__m128)A, (__v4di)_mm256_setzero_si256(), (__mmask8)U, (int)R))
-#undef __DEFAULT_FN_ATTRS
+#undef __DEFAULT_FN_ATTRS128
+#undef __DEFAULT_FN_ATTRS256
#endif // __AVX10_2SATCVTDSINTRIN_H
More information about the cfe-commits
mailing list