xref: /llvm-project/clang/test/CodeGen/X86/raoint-builtins.c (revision b51b90d6e25c3a3129608e2d764cae8818b7ad15)
1 // RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown -target-feature +raoint \
2 // RUN: -emit-llvm -o - -Wall -Werror -pedantic -Wno-gnu-statement-expression | FileCheck %s --check-prefixes=CHECK,X64
3 // RUN: %clang_cc1 %s -ffreestanding -triple=i686-unknown-unknown -target-feature +raoint \
4 // RUN: -emit-llvm -o - -Wall -Werror -pedantic -Wno-gnu-statement-expression | FileCheck %s --check-prefixes=CHECK
5 
6 #include <stddef.h>
7 #include <x86gprintrin.h>
8 
test_aadd_i32(int * __A,int __B)9 void test_aadd_i32(int *__A, int __B) {
10   // CHECK-LABEL: @test_aadd_i32(
11   // CHECK: call void @llvm.x86.aadd32(ptr %{{.*}}, i32 %{{.*}})
12   _aadd_i32(__A, __B);
13 }
14 
test_aand_i32(int * __A,int __B)15 void test_aand_i32(int *__A, int __B) {
16   // CHECK-LABEL: @test_aand_i32(
17   // CHECK: call void @llvm.x86.aand32(ptr %{{.*}}, i32 %{{.*}})
18   _aand_i32(__A, __B);
19 }
20 
test_aor_i32(int * __A,int __B)21 void test_aor_i32(int *__A, int __B) {
22   // CHECK-LABEL: @test_aor_i32(
23   // CHECK: call void @llvm.x86.aor32(ptr %{{.*}}, i32 %{{.*}})
24   _aor_i32(__A, __B);
25 }
26 
test_axor_i32(int * __A,int __B)27 void test_axor_i32(int *__A, int __B) {
28   // CHECK-LABEL: @test_axor_i32(
29   // CHECK: call void @llvm.x86.axor32(ptr %{{.*}}, i32 %{{.*}})
30   _axor_i32(__A, __B);
31 }
32 
33 #ifdef __x86_64__
test_aadd_i64(long long * __A,long long __B)34 void test_aadd_i64(long long *__A, long long __B) {
35   // X64-LABEL: @test_aadd_i64(
36   // X64: call void @llvm.x86.aadd64(ptr %{{.*}}, i64 %{{.*}})
37   _aadd_i64(__A, __B);
38 }
39 
test_aand_i64(long long * __A,long long __B)40 void test_aand_i64(long long *__A, long long __B) {
41   // X64-LABEL: @test_aand_i64(
42   // X64: call void @llvm.x86.aand64(ptr %{{.*}}, i64 %{{.*}})
43   _aand_i64(__A, __B);
44 }
45 
test_aor_i64(long long * __A,long long __B)46 void test_aor_i64(long long *__A, long long __B) {
47   // X64-LABEL: @test_aor_i64(
48   // X64: call void @llvm.x86.aor64(ptr %{{.*}}, i64 %{{.*}})
49   _aor_i64(__A, __B);
50 }
51 
test_axor_i64(long long * __A,long long __B)52 void test_axor_i64(long long *__A, long long __B) {
53   // X64-LABEL: @test_axor_i64(
54   // X64: call void @llvm.x86.axor64(ptr %{{.*}}, i64 %{{.*}})
55   _axor_i64(__A, __B);
56 }
57 #endif
58