llvm/clang/test/CodeGen/X86/avx10_2_512satcvt-builtins.c

// RUN: %clang_cc1 %s -flax-vector-conversions=none -ffreestanding -triple=x86_64 -target-feature +avx10.2-512 \
// RUN: -emit-llvm -o - -Wall -Werror | FileCheck %s
// RUN: %clang_cc1 %s -flax-vector-conversions=none -ffreestanding -triple=i386 -target-feature +avx10.2-512 \
// RUN: -emit-llvm -o - -Wall -Werror | FileCheck %s

#include <immintrin.h>

__m512i test_mm512_ipcvtnebf16_epi8(__m512bh __A) {
  // CHECK-LABEL: @test_mm512_ipcvtnebf16_epi8(
  // CHECK: @llvm.x86.avx10.vcvtnebf162ibs512
  return _mm512_ipcvtnebf16_epi8(__A);
}

__m512i test_mm512_mask_ipcvtnebf16_epi8(__m512i __S, __mmask32 __A, __m512bh __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvtnebf16_epi8(
  // CHECK: @llvm.x86.avx10.vcvtnebf162ibs512
  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
  return _mm512_mask_ipcvtnebf16_epi8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvtnebf16_epi8(__mmask32 __A, __m512bh __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvtnebf16_epi8
  // CHECK: @llvm.x86.avx10.vcvtnebf162ibs512
  // CHECK: zeroinitializer
  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
  return _mm512_maskz_ipcvtnebf16_epi8(__A, __B);
}

__m512i test_mm512_ipcvtnebf16_epu8(__m512bh __A) {
  // CHECK-LABEL: @test_mm512_ipcvtnebf16_epu8(
  // CHECK: @llvm.x86.avx10.vcvtnebf162iubs512
  return _mm512_ipcvtnebf16_epu8(__A);
}

__m512i test_mm512_mask_ipcvtnebf16_epu8(__m512i __S, __mmask32 __A, __m512bh __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvtnebf16_epu8(
  // CHECK: @llvm.x86.avx10.vcvtnebf162iubs512
  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
  return _mm512_mask_ipcvtnebf16_epu8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvtnebf16_epu8(__mmask32 __A, __m512bh __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvtnebf16_epu8
  // CHECK: @llvm.x86.avx10.vcvtnebf162iubs512
  // CHECK: zeroinitializer
  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
  return _mm512_maskz_ipcvtnebf16_epu8(__A, __B);
}

__m512i test_mm512_ipcvtph_epi8(__m512h __A) {
  // CHECK-LABEL: @test_mm512_ipcvtph_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
  return _mm512_ipcvtph_epi8(__A);
}

__m512i test_mm512_mask_ipcvtph_epi8(__m512i __S, __mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvtph_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
  return _mm512_mask_ipcvtph_epi8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvtph_epi8(__mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvtph_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
  return _mm512_maskz_ipcvtph_epi8(__A, __B);
}

__m512i test_mm512_ipcvt_roundph_epi8(__m512h __A) {
  // CHECK-LABEL: @test_mm512_ipcvt_roundph_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
  return _mm512_ipcvt_roundph_epi8(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_mask_ipcvt_roundph_epi8(__m512i __S, __mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvt_roundph_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
  return _mm512_mask_ipcvt_roundph_epi8(__S, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_maskz_ipcvt_roundph_epi8(__mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvt_roundph_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvtph2ibs512
  return _mm512_maskz_ipcvt_roundph_epi8(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_ipcvtph_epu8(__m512h __A) {
  // CHECK-LABEL: @test_mm512_ipcvtph_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
  return _mm512_ipcvtph_epu8(__A);
}

__m512i test_mm512_mask_ipcvtph_epu8(__m512i __S, __mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvtph_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
  return _mm512_mask_ipcvtph_epu8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvtph_epu8(__mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvtph_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
  return _mm512_maskz_ipcvtph_epu8(__A, __B);
}

__m512i test_mm512_ipcvt_roundph_epu8(__m512h __A) {
  // CHECK-LABEL: @test_mm512_ipcvt_roundph_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
  return _mm512_ipcvt_roundph_epu8(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_mask_ipcvt_roundph_epu8(__m512i __S, __mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvt_roundph_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
  return _mm512_mask_ipcvt_roundph_epu8(__S, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_maskz_ipcvt_roundph_epu8(__mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvt_roundph_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvtph2iubs512
  return _mm512_maskz_ipcvt_roundph_epu8(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_ipcvtps_epi8(__m512 __A) {
  // CHECK-LABEL: @test_mm512_ipcvtps_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
  return _mm512_ipcvtps_epi8(__A);
}

__m512i test_mm512_mask_ipcvtps_epi8(__m512i __S, __mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvtps_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
  return _mm512_mask_ipcvtps_epi8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvtps_epi8(__mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvtps_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
  return _mm512_maskz_ipcvtps_epi8(__A, __B);
}

__m512i test_mm512_ipcvt_roundps_epi8(__m512 __A) {
  // CHECK-LABEL: @test_mm512_ipcvt_roundps_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
  return _mm512_ipcvt_roundps_epi8(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_mask_ipcvt_roundps_epi8(__m512i __S, __mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvt_roundps_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
  return _mm512_mask_ipcvt_roundps_epi8(__S, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_maskz_ipcvt_roundps_epi8(__mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvt_roundps_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvtps2ibs512
  return _mm512_maskz_ipcvt_roundps_epi8(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_ipcvtps_epu8(__m512 __A) {
  // CHECK-LABEL: @test_mm512_ipcvtps_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
  return _mm512_ipcvtps_epu8(__A);
}

__m512i test_mm512_mask_ipcvtps_epu8(__m512i __S, __mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvtps_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
  return _mm512_mask_ipcvtps_epu8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvtps_epu8(__mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvtps_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
  return _mm512_maskz_ipcvtps_epu8(__A, __B);
}

__m512i test_mm512_ipcvt_roundps_epu8(__m512 __A) {
  // CHECK-LABEL: @test_mm512_ipcvt_roundps_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
  return _mm512_ipcvt_roundps_epu8(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_mask_ipcvt_roundps_epu8(__m512i __S, __mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvt_roundps_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
  return _mm512_mask_ipcvt_roundps_epu8(__S, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_maskz_ipcvt_roundps_epu8(__mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvt_roundps_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvtps2iubs512
  return _mm512_maskz_ipcvt_roundps_epu8(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
}

__m512i test_mm512_ipcvttnebf16_epi8(__m512bh __A) {
  // CHECK-LABEL: @test_mm512_ipcvttnebf16_epi8(
  // CHECK: @llvm.x86.avx10.vcvttnebf162ibs512(
  return _mm512_ipcvttnebf16_epi8(__A);
}

__m512i test_mm512_mask_ipcvttnebf16_epi8(__m512i __S, __mmask32 __A, __m512bh __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvttnebf16_epi8(
  // CHECK: @llvm.x86.avx10.vcvttnebf162ibs512(
  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
  return _mm512_mask_ipcvttnebf16_epi8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvttnebf16_epi8(__mmask32 __A, __m512bh __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvttnebf16_epi8
  // CHECK: @llvm.x86.avx10.vcvttnebf162ibs512(
  // CHECK: zeroinitializer
  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
  return _mm512_maskz_ipcvttnebf16_epi8(__A, __B);
}

__m512i test_mm512_ipcvttnebf16_epu8(__m512bh __A) {
  // CHECK-LABEL: @test_mm512_ipcvttnebf16_epu8(
  // CHECK: @llvm.x86.avx10.vcvttnebf162iubs512(
  return _mm512_ipcvttnebf16_epu8(__A);
}

__m512i test_mm512_mask_ipcvttnebf16_epu8(__m512i __S, __mmask32 __A, __m512bh __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvttnebf16_epu8(
  // CHECK: @llvm.x86.avx10.vcvttnebf162iubs512(
  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
  return _mm512_mask_ipcvttnebf16_epu8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvttnebf16_epu8(__mmask32 __A, __m512bh __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvttnebf16_epu8
  // CHECK: @llvm.x86.avx10.vcvttnebf162iubs512(
  // CHECK: zeroinitializer
  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
  return _mm512_maskz_ipcvttnebf16_epu8(__A, __B);
}

__m512i test_mm512_ipcvttph_epi8(__m512h __A) {
  // CHECK-LABEL: @test_mm512_ipcvttph_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
  return _mm512_ipcvttph_epi8(__A);
}

__m512i test_mm512_mask_ipcvttph_epi8(__m512i __S, __mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvttph_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
  return _mm512_mask_ipcvttph_epi8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvttph_epi8(__mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvttph_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
  return _mm512_maskz_ipcvttph_epi8(__A, __B);
}

__m512i test_mm512_ipcvtt_roundph_epi8(__m512h __A) {
  // CHECK-LABEL: @test_mm512_ipcvtt_roundph_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
  return _mm512_ipcvtt_roundph_epi8(__A, _MM_FROUND_NO_EXC);
}

__m512i test_mm512_mask_ipcvtt_roundph_epi8(__m512i __S, __mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvtt_roundph_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
  return _mm512_mask_ipcvtt_roundph_epi8(__S, __A, __B, _MM_FROUND_NO_EXC);
}

__m512i test_mm512_maskz_ipcvtt_roundph_epi8(__mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvtt_roundph_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvttph2ibs512
  return _mm512_maskz_ipcvtt_roundph_epi8(__A, __B, _MM_FROUND_NO_EXC);
}

__m512i test_mm512_ipcvttph_epu8(__m512h __A) {
  // CHECK-LABEL: @test_mm512_ipcvttph_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
  return _mm512_ipcvttph_epu8(__A);
}

__m512i test_mm512_mask_ipcvttph_epu8(__m512i __S, __mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvttph_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
  return _mm512_mask_ipcvttph_epu8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvttph_epu8(__mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvttph_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
  return _mm512_maskz_ipcvttph_epu8(__A, __B);
}

__m512i test_mm512_ipcvtt_roundph_epu8(__m512h __A) {
  // CHECK-LABEL: @test_mm512_ipcvtt_roundph_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
  return _mm512_ipcvtt_roundph_epu8(__A, _MM_FROUND_NO_EXC);
}

__m512i test_mm512_mask_ipcvtt_roundph_epu8(__m512i __S, __mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvtt_roundph_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
  return _mm512_mask_ipcvtt_roundph_epu8(__S, __A, __B, _MM_FROUND_NO_EXC);
}

__m512i test_mm512_maskz_ipcvtt_roundph_epu8(__mmask32 __A, __m512h __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvtt_roundph_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvttph2iubs512
  return _mm512_maskz_ipcvtt_roundph_epu8(__A, __B, _MM_FROUND_NO_EXC);
}

__m512i test_mm512_ipcvttps_epi8(__m512 __A) {
  // CHECK-LABEL: @test_mm512_ipcvttps_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
  return _mm512_ipcvttps_epi8(__A);
}

__m512i test_mm512_mask_ipcvttps_epi8(__m512i __S, __mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvttps_epi8(
  // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
  return _mm512_mask_ipcvttps_epi8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvttps_epi8(__mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvttps_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
  return _mm512_maskz_ipcvttps_epi8(__A, __B);
}

__m512i test_mm512_ipcvtt_roundps_epi8(__m512 __A) {
  // CHECK-LABEL: @test_mm512_ipcvtt_roundps_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
  return _mm512_ipcvtt_roundps_epi8(__A, _MM_FROUND_NO_EXC);
}

__m512i test_mm512_mask_ipcvtt_roundps_epi8(__m512i __S, __mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvtt_roundps_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
  return _mm512_mask_ipcvtt_roundps_epi8(__S, __A, __B, _MM_FROUND_NO_EXC);
}


__m512i test_mm512_maskz_ipcvtt_roundps_epi8(__mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvtt_roundps_epi8
  // CHECK: @llvm.x86.avx10.mask.vcvttps2ibs512
  return _mm512_maskz_ipcvtt_roundps_epi8(__A, __B, _MM_FROUND_NO_EXC);
}

__m512i test_mm512_ipcvttps_epu8(__m512 __A) {
  // CHECK-LABEL: @test_mm512_ipcvttps_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
  return _mm512_ipcvttps_epu8(__A);
}

__m512i test_mm512_mask_ipcvttps_epu8(__m512i __S, __mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvttps_epu8(
  // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
  return _mm512_mask_ipcvttps_epu8(__S, __A, __B);
}

__m512i test_mm512_maskz_ipcvttps_epu8(__mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvttps_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
  return _mm512_maskz_ipcvttps_epu8(__A, __B);
}

__m512i test_mm512_ipcvtt_roundps_epu8(__m512 __A) {
  // CHECK-LABEL: @test_mm512_ipcvtt_roundps_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
  return _mm512_ipcvtt_roundps_epu8(__A, _MM_FROUND_NO_EXC);
}

__m512i test_mm512_mask_ipcvtt_roundps_epu8(__m512i __S, __mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_mask_ipcvtt_roundps_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
  return _mm512_mask_ipcvtt_roundps_epu8(__S, __A, __B, _MM_FROUND_NO_EXC);
}

__m512i test_mm512_maskz_ipcvtt_roundps_epu8(__mmask16 __A, __m512 __B) {
  // CHECK-LABEL: @test_mm512_maskz_ipcvtt_roundps_epu8
  // CHECK: @llvm.x86.avx10.mask.vcvttps2iubs512
  return _mm512_maskz_ipcvtt_roundps_epu8(__A, __B, _MM_FROUND_NO_EXC);
}