diff options
author | Adam Nemet <anemet@apple.com> | 2014-06-18 16:51:10 +0000 |
---|---|---|
committer | Adam Nemet <anemet@apple.com> | 2014-06-18 16:51:10 +0000 |
commit | f1b790f7913a07ccc51f47a898ad1bed33bb614d (patch) | |
tree | 429d2e1297aa5875dea206bf45a37efd575e8be5 /test | |
parent | 7fc69597b78d96a42fb96f406b1f96232fe848dc (diff) | |
download | llvm-f1b790f7913a07ccc51f47a898ad1bed33bb614d.tar.gz llvm-f1b790f7913a07ccc51f47a898ad1bed33bb614d.tar.bz2 llvm-f1b790f7913a07ccc51f47a898ad1bed33bb614d.tar.xz |
[X86] AVX512: Add non-temporal stores
Note that I followed the AVX2 convention here and didn't add LLVM intrinsics
for stores. These can be generated with the nontemporal hint on LLVM IR
stores (see new test). The GCC builtins are lowered directly into nontemporal
stores.
<rdar://problem/17082571>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211176 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/X86/avx512-nontemporal.ll | 19 | ||||
-rw-r--r-- | test/MC/X86/avx512-encodings.s | 12 |
2 files changed, 31 insertions, 0 deletions
diff --git a/test/CodeGen/X86/avx512-nontemporal.ll b/test/CodeGen/X86/avx512-nontemporal.ll new file mode 100644 index 0000000000..ef50cdb828 --- /dev/null +++ b/test/CodeGen/X86/avx512-nontemporal.ll @@ -0,0 +1,19 @@ +; RUN: llc < %s -march=x86-64 -mattr=+avx512f | FileCheck %s + +define void @f(<16 x float> %A, <16 x float> %AA, i8* %B, <8 x double> %C, <8 x double> %CC, i32 %D, <8 x i64> %E, <8 x i64> %EE) { +; CHECK: vmovntps %z + %cast = bitcast i8* %B to <16 x float>* + %A2 = fadd <16 x float> %A, %AA + store <16 x float> %A2, <16 x float>* %cast, align 64, !nontemporal !0 +; CHECK: vmovntdq %z + %cast1 = bitcast i8* %B to <8 x i64>* + %E2 = add <8 x i64> %E, %EE + store <8 x i64> %E2, <8 x i64>* %cast1, align 64, !nontemporal !0 +; CHECK: vmovntpd %z + %cast2 = bitcast i8* %B to <8 x double>* + %C2 = fadd <8 x double> %C, %CC + store <8 x double> %C2, <8 x double>* %cast2, align 64, !nontemporal !0 + ret void +} + +!0 = metadata !{i32 1} diff --git a/test/MC/X86/avx512-encodings.s b/test/MC/X86/avx512-encodings.s index a7a87cd0b4..b9674231d9 100644 --- a/test/MC/X86/avx512-encodings.s +++ b/test/MC/X86/avx512-encodings.s @@ -3163,3 +3163,15 @@ vmovntdqa (%r14,%rdx,2), %zmm18 // CHECK: vmovntdqa // CHECK: encoding: [0x62,0xc2,0x7d,0x48,0x2a,0x7c,0x14,0x02] vmovntdqa 128(%r12,%rdx), %zmm23 + +// CHECK: vmovntdq +// CHECK: encoding: [0x62,0x21,0x7d,0x48,0xe7,0x24,0xa9] +vmovntdq %zmm28, (%rcx,%r13,4) + +// CHECK: vmovntpd +// CHECK: encoding: [0x62,0xf1,0xfd,0x48,0x2b,0xb2,0x04,0x00,0x00,0x00] +vmovntpd %zmm6, 4(%rdx) + +// CHECK: vmovntps +// CHECK: encoding: [0x62,0x51,0x7c,0x48,0x2b,0x5c,0x8d,0x00] +vmovntps %zmm11, (%r13,%rcx,4) |