Author: gbuella Date: Fri May 11 07:22:04 2018 New Revision: 332091 URL: http://llvm.org/viewvc/llvm-project?rev=332091&view=rev Log: [X86] Assume alignment of movdir64b dst argument
Reviewers: craig.topper Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D46683 Modified: cfe/trunk/lib/Headers/movdirintrin.h cfe/trunk/test/CodeGen/builtin-movdir.c Modified: cfe/trunk/lib/Headers/movdirintrin.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/movdirintrin.h?rev=332091&r1=332090&r2=332091&view=diff ============================================================================== --- cfe/trunk/lib/Headers/movdirintrin.h (original) +++ cfe/trunk/lib/Headers/movdirintrin.h Fri May 11 07:22:04 2018 @@ -47,10 +47,15 @@ _directstoreu_u64 (void *__dst, unsigned #endif /* __x86_64__ */ -// Move 64 bytes as direct store +/* + * movdir64b - Move 64 bytes as direct store. + * The destination must be 64 byte aligned, and the store is atomic. + * The source address has no alignment requirement, and the load from + * the source address is not atomic. + */ static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("movdir64b"))) -_movdir64b (void *__dst, const void *__src) +_movdir64b (void *__dst __attribute__((align_value(64))), const void *__src) { __builtin_ia32_movdir64b(__dst, __src); } Modified: cfe/trunk/test/CodeGen/builtin-movdir.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtin-movdir.c?rev=332091&r1=332090&r2=332091&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtin-movdir.c (original) +++ cfe/trunk/test/CodeGen/builtin-movdir.c Fri May 11 07:22:04 2018 @@ -1,5 +1,5 @@ // RUN: %clang_cc1 -ffreestanding -Wall -pedantic -triple x86_64-unknown-unknown -target-feature +movdiri -target-feature +movdir64b %s -emit-llvm -o - | FileCheck %s --check-prefix=X86_64 --check-prefix=CHECK -// RUN: %clang_cc1 -ffreestanding -Wall -pedantic -triple i386-unknown-unknown -target-feature +movdiri -target-feature +movdir64b %s -emit-llvm -o - | FileCheck %s --check-prefix=CHECK +// RUN: %clang_cc1 -ffreestanding -Wall -pedantic -triple i386-unknown-unknown -target-feature +movdiri -target-feature +movdir64b %s -emit-llvm -o - | FileCheck %s --check-prefix=X86 --check-prefix=CHECK #include <x86intrin.h> #include <stdint.h> @@ -22,6 +22,11 @@ void test_directstore64(void *dst, uint6 void test_dir64b(void *dst, const void *src) { // CHECK-LABEL: test_dir64b + // CHECK: [[PTRINT1:%.+]] = ptrtoint + // X86: [[MASKEDPTR1:%.+]] = and i32 [[PTRINT1]], 63 + // X86: [[MASKCOND1:%.+]] = icmp eq i32 [[MASKEDPTR1]], 0 + // X86_64: [[MASKEDPTR1:%.+]] = and i64 [[PTRINT1]], 63 + // X86_64: [[MASKCOND1:%.+]] = icmp eq i64 [[MASKEDPTR1]], 0 // CHECK: call void @llvm.x86.movdir64b _movdir64b(dst, src); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits