MOVNTDQA non-temporal aligned vector loads can be correctly represented using generic builtin loads, allowing us to remove the existing x86 intrinsics.
The Clang companion patch can be found at D31766
Paths
| Differential D31767
[LLVM][X86][SSE] Update MOVNTDQA non-temporal loads to generic implementation ClosedPublic Authored by RKSimon on Apr 6 2017, 9:04 AM.
Details Summary MOVNTDQA non-temporal aligned vector loads can be correctly represented using generic builtin loads, allowing us to remove the existing x86 intrinsics. The Clang companion patch can be found at D31766
Diff Detail
Event Timeline
This revision is now accepted and ready to land.Apr 11 2017, 9:29 AM Comment Actions
Nope and I'm not sure why not. Closed by commit rL300325: [X86][SSE] Update MOVNTDQA non-temporal loads to generic implementation (LLVM) (authored by RKSimon). · Explain WhyApr 14 2017, 8:18 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 94380 include/llvm/IR/IntrinsicsX86.td
lib/IR/AutoUpgrade.cpp
lib/Target/X86/X86InstrAVX512.td
lib/Target/X86/X86InstrSSE.td
test/CodeGen/X86/avx2-intrinsics-x86-upgrade.ll
test/CodeGen/X86/avx2-intrinsics-x86.ll
test/CodeGen/X86/avx512-intrinsics-upgrade.ll
test/CodeGen/X86/sse41-intrinsics-x86-upgrade.ll
|
I know we already do this in several places in this file, but why do we need a SmallVector of 1? Won't a single Metadata * variable auto convert to ArrayRef for the MDNode::get call?