Clang Project

clang_source_code/test/CodeGen/vaes-builtins.c
1// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +vaes -emit-llvm -o - | FileCheck %s --check-prefix AVX
2// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +vaes -target-feature +avx512f -emit-llvm -o - | FileCheck %s --check-prefixes AVX,AVX512
3
4#include <immintrin.h>
5
6__m256i test_mm256_aesenc_epi128(__m256i __A, __m256i __B) {
7  // AVX-LABEL: @test_mm256_aesenc_epi128
8  // AVX: @llvm.x86.aesni.aesenc.256
9  return _mm256_aesenc_epi128(__A, __B);
10}
11
12__m256i test_mm256_aesenclast_epi128(__m256i __A, __m256i __B) {
13  // AVX-LABEL: @test_mm256_aesenclast_epi128
14  // AVX: @llvm.x86.aesni.aesenclast.256
15  return _mm256_aesenclast_epi128(__A, __B);
16}
17
18__m256i test_mm256_aesdec_epi128(__m256i __A, __m256i __B) {
19  // AVX-LABEL: @test_mm256_aesdec_epi128
20  // AVX: @llvm.x86.aesni.aesdec.256
21  return _mm256_aesdec_epi128(__A, __B);
22}
23
24__m256i test_mm256_aesdeclast_epi128(__m256i __A, __m256i __B) {
25  // AVX-LABEL: @test_mm256_aesdeclast_epi128
26  // AVX: @llvm.x86.aesni.aesdeclast.256
27  return _mm256_aesdeclast_epi128(__A, __B);
28}
29
30#ifdef __AVX512F__
31__m512i test_mm512_aesenc_epi128(__m512i __A, __m512i __B) {
32  // AVX512-LABEL: @test_mm512_aesenc_epi128
33  // AVX512: @llvm.x86.aesni.aesenc.512
34  return _mm512_aesenc_epi128(__A, __B);
35}
36
37__m512i test_mm512_aesenclast_epi128(__m512i __A, __m512i __B) {
38  // AVX512-LABEL: @test_mm512_aesenclast_epi128
39  // AVX512: @llvm.x86.aesni.aesenclast.512
40  return _mm512_aesenclast_epi128(__A, __B);
41}
42
43__m512i test_mm512_aesdec_epi128(__m512i __A, __m512i __B) {
44  // AVX512-LABEL: @test_mm512_aesdec_epi128
45  // AVX512: @llvm.x86.aesni.aesdec.512
46  return _mm512_aesdec_epi128(__A, __B);
47}
48
49__m512i test_mm512_aesdeclast_epi128(__m512i __A, __m512i __B) {
50  // AVX512-LABEL: @test_mm512_aesdeclast_epi128
51  // AVX512: @llvm.x86.aesni.aesdeclast.512
52  return _mm512_aesdeclast_epi128(__A, __B);
53}
54#endif
55
56