// RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown -target-feature +avx2 -target-feature +avxneconvert \
// RUN: -emit-llvm -o - -Wall -Werror -pedantic -Wno-gnu-statement-expression | FileCheck %s
// RUN: %clang_cc1 %s -ffreestanding -triple=i386-unknown-unknown -target-feature +avx2 -target-feature +avxneconvert \
// RUN: -emit-llvm -o - -Wall -Werror -pedantic -Wno-gnu-statement-expression | FileCheck %s
#include <immintrin.h>
#include <stddef.h>
__m128 test_mm_bcstnebf16_ps(const void *__A) {
// CHECK-LABEL: @test_mm_bcstnebf16_ps(
// CHECK: call <4 x float> @llvm.x86.vbcstnebf162ps128(ptr %{{.*}})
return _mm_bcstnebf16_ps(__A);
}
__m256 test_mm256_bcstnebf16_ps(const void *__A) {
// CHECK-LABEL: @test_mm256_bcstnebf16_ps(
// CHECK: call <8 x float> @llvm.x86.vbcstnebf162ps256(ptr %{{.*}})
return _mm256_bcstnebf16_ps(__A);
}
__m128 test_mm_bcstnesh_ps(const void *__A) {
// CHECK-LABEL: @test_mm_bcstnesh_ps(
// CHECK: call <4 x float> @llvm.x86.vbcstnesh2ps128(ptr %{{.*}})
return _mm_bcstnesh_ps(__A);
}
__m256 test_mm256_bcstnesh_ps(const void *__A) {
// CHECK-LABEL: @test_mm256_bcstnesh_ps(
// CHECK: call <8 x float> @llvm.x86.vbcstnesh2ps256(ptr %{{.*}})
return _mm256_bcstnesh_ps(__A);
}
__m128 test_mm_cvtneebf16_ps(const __m128bh *__A) {
// CHECK-LABEL: @test_mm_cvtneebf16_ps(
// CHECK: call <4 x float> @llvm.x86.vcvtneebf162ps128(ptr %{{.*}})
return _mm_cvtneebf16_ps(__A);
}
__m256 test_mm256_cvtneebf16_ps(const __m256bh *__A) {
// CHECK-LABEL: @test_mm256_cvtneebf16_ps(
// CHECK: call <8 x float> @llvm.x86.vcvtneebf162ps256(ptr %{{.*}})
return _mm256_cvtneebf16_ps(__A);
}
__m128 test_mm_cvtneeph_ps(const __m128h *__A) {
// CHECK-LABEL: @test_mm_cvtneeph_ps(
// CHECK: call <4 x float> @llvm.x86.vcvtneeph2ps128(ptr %{{.*}})
return _mm_cvtneeph_ps(__A);
}
__m256 test_mm256_cvtneeph_ps(const __m256h *__A) {
// CHECK-LABEL: @test_mm256_cvtneeph_ps(
// CHECK: call <8 x float> @llvm.x86.vcvtneeph2ps256(ptr %{{.*}})
return _mm256_cvtneeph_ps(__A);
}
__m128 test_mm_cvtneobf16_ps(const __m128bh *__A) {
// CHECK-LABEL: @test_mm_cvtneobf16_ps(
// CHECK: call <4 x float> @llvm.x86.vcvtneobf162ps128(ptr %{{.*}})
return _mm_cvtneobf16_ps(__A);
}
__m256 test_mm256_cvtneobf16_ps(const __m256bh *__A) {
// CHECK-LABEL: @test_mm256_cvtneobf16_ps(
// CHECK: call <8 x float> @llvm.x86.vcvtneobf162ps256(ptr %{{.*}})
return _mm256_cvtneobf16_ps(__A);
}
__m128 test_mm_cvtneoph_ps(const __m128h *__A) {
// CHECK-LABEL: @test_mm_cvtneoph_ps(
// CHECK: call <4 x float> @llvm.x86.vcvtneoph2ps128(ptr %{{.*}})
return _mm_cvtneoph_ps(__A);
}
__m256 test_mm256_cvtneoph_ps(const __m256h *__A) {
// CHECK-LABEL: @test_mm256_cvtneoph_ps(
// CHECK: call <8 x float> @llvm.x86.vcvtneoph2ps256(ptr %{{.*}})
return _mm256_cvtneoph_ps(__A);
}
__m128bh test_mm_cvtneps_avx_pbh(__m128 __A) {
// CHECK-LABEL: @test_mm_cvtneps_avx_pbh(
// CHECK: call <8 x bfloat> @llvm.x86.vcvtneps2bf16128(<4 x float> %{{.*}})
return _mm_cvtneps_avx_pbh(__A);
}
__m128bh test_mm256_cvtneps_avx_pbh(__m256 __A) {
// CHECK-LABEL: @test_mm256_cvtneps_avx_pbh(
// CHECK: call <8 x bfloat> @llvm.x86.vcvtneps2bf16256(<8 x float> %{{.*}})
return _mm256_cvtneps_avx_pbh(__A);
}