[llvm] r272010 - [X86][SSE] Add general lowering of nontemporal vector loads
H.J. Lu via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 7 07:54:36 PDT 2016
On Tue, Jun 7, 2016 at 6:34 AM, Simon Pilgrim via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: rksimon
> Date: Tue Jun 7 08:34:24 2016
> New Revision: 272010
>
> URL: http://llvm.org/viewvc/llvm-project?rev=272010&view=rev
> Log:
> [X86][SSE] Add general lowering of nontemporal vector loads
>
> Currently the only way to use the (V)MOVNTDQA nontemporal vector loads instructions is through the int_x86_sse41_movntdqa style builtins.
>
> This patch adds support for lowering nontemporal loads from general IR, allowing us to remove the movntdqa builtins in a future patch.
>
> We currently still fold nontemporal loads into suitable instructions, we should probably look at removing this (and nontemporal stores as well) or at least make the target's folding implementation aware that its dealing with a nontemporal memory transaction.
>
> There is also an issue that VMOVNTDQA only acts on 128-bit vectors on pre-AVX2 hardware - so currently a normal ymm load is still used on AVX1 targets.
>
> Differential Review: http://reviews.llvm.org/D20965
>
> Modified:
> llvm/trunk/include/llvm/Target/TargetSelectionDAG.td
> llvm/trunk/lib/Target/X86/X86InstrAVX512.td
> llvm/trunk/lib/Target/X86/X86InstrSSE.td
> llvm/trunk/test/CodeGen/X86/fast-isel-nontemporal.ll
> llvm/trunk/test/CodeGen/X86/nontemporal-loads.ll
>
On Fedora 23, I got
FAIL: LLVM :: CodeGen/X86/fast-isel-nontemporal.ll (19968 of 29658)
******************** TEST 'LLVM ::
CodeGen/X86/fast-isel-nontemporal.ll' FAILED ********************
Script:
--
/export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/llc
-verify-machineinstrs -mtriple=x86_64-unknown-unknown -mattr=+sse2
-fast-isel -O0 <
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
| /export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/FileCheck
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
--check-prefix=ALL --check-prefix=SSE --check-prefix=SSE2
/export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/llc
-verify-machineinstrs -mtriple=x86_64-unknown-unknown -mattr=+sse4a
-fast-isel -O0 <
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
| /export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/FileCheck
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
--check-prefix=ALL --check-prefix=SSE --check-prefix=SSE4A
/export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/llc
-verify-machineinstrs -mtriple=x86_64-unknown-unknown -mattr=+sse4.1
-fast-isel -O0 <
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
| /export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/FileCheck
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
--check-prefix=ALL --check-prefix=SSE --check-prefix=SSE41
/export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/llc
-verify-machineinstrs -mtriple=x86_64-unknown-unknown -mattr=+avx
-fast-isel -O0 <
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
| /export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/FileCheck
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
--check-prefix=ALL --check-prefix=AVX --check-prefix=AVX1
/export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/llc
-verify-machineinstrs -mtriple=x86_64-unknown-unknown -mattr=+avx2
-fast-isel -O0 <
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
| /export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/FileCheck
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
--check-prefix=ALL --check-prefix=AVX --check-prefix=AVX2
/export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/llc
-verify-machineinstrs -mtriple=x86_64-unknown-unknown -mattr=+avx512f
-fast-isel -O0 <
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
| /export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/FileCheck
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
--check-prefix=ALL --check-prefix=AVX512 --check-prefix=AVX512F
/export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/llc
-verify-machineinstrs -mtriple=x86_64-unknown-unknown -mattr=+avx512bw
-fast-isel -O0 <
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
| /export/build/gnu/llvm-clang-bootstrap/stage1/build-x86_64-linux/./bin/FileCheck
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll
--check-prefix=ALL --check-prefix=AVX512 --check-prefix=AVX512BW
--
Exit Code: 1
Command Output (stderr):
--
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll:285:13:
error: expected string not found in input
; SSE-NEXT: movntdqa (%rdi), %xmm0
^
<stdin>:153:2: note: scanning from here
movdqa (%rdi), %xmm0
^
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll:305:13:
error: expected string not found in input
; SSE-NEXT: movntdqa (%rdi), %xmm0
^
<stdin>:165:2: note: scanning from here
movdqa (%rdi), %xmm0
^
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll:325:13:
error: expected string not found in input
; SSE-NEXT: movntdqa (%rdi), %xmm0
^
<stdin>:177:2: note: scanning from here
movdqa (%rdi), %xmm0
^
/export/gnu/import/git/llvm/test/CodeGen/X86/fast-isel-nontemporal.ll:345:13:
error: expected string not found in input
; SSE-NEXT: movntdqa (%rdi), %xmm0
^
<stdin>:189:2: note: scanning from here
movdqa (%rdi), %xmm0
^
--
--
H.J.
More information about the llvm-commits
mailing list