xref: /llvm-project/clang/test/CodeGen/X86/builtin-movdir.c (revision 39db5e1ed87363a9ffea81e53520b542201b3262)
1 // RUN: %clang_cc1 -ffreestanding -Wall -pedantic -triple x86_64-unknown-unknown -target-feature +movdiri -target-feature +movdir64b %s -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,X86_64
2 // RUN: %clang_cc1 -ffreestanding -Wall -pedantic -triple i386-unknown-unknown -target-feature +movdiri -target-feature +movdir64b %s -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK
3 
4 #include <immintrin.h>
5 #include <stdint.h>
6 
test_directstore32(void * dst,uint32_t value)7 void test_directstore32(void *dst, uint32_t value) {
8   // CHECK-LABEL: test_directstore32
9   // CHECK: call void @llvm.x86.directstore32
10   _directstoreu_u32(dst, value);
11 }
12 
13 #ifdef __x86_64__
14 
test_directstore64(void * dst,uint64_t value)15 void test_directstore64(void *dst, uint64_t value) {
16   // X86_64-LABEL: test_directstore64
17   // X86_64: call void @llvm.x86.directstore64
18   _directstoreu_u64(dst, value);
19 }
20 
21 #endif
22 
test_dir64b(void * dst,const void * src)23 void test_dir64b(void *dst, const void *src) {
24   // CHECK-LABEL: test_dir64b
25   // CHECK: call void @llvm.x86.movdir64b
26   _movdir64b(dst, src);
27 }
28 
29 // CHECK: declare void @llvm.x86.directstore32(ptr, i32)
30 // X86_64: declare void @llvm.x86.directstore64(ptr, i64)
31 // CHECK: declare void @llvm.x86.movdir64b(ptr, ptr)
32