search for: nontemporal

Displaying 20 results from an estimated 70 matches for "nontemporal".

2020 Apr 28
2
Nontemporal memory accesses and fences
The current specification of the behavior of the !nontemporal attribute in LLVM, and the __builtin_nontemporal_* functions in Clang, is rather spartan and underspecified. In effect, it says the following things: * Atomic !nontemporal has no defined semantics * !nontemporal may use special instructions to save cache bandwidth, such as "MOVNT&quot...
2010 Feb 11
0
[LLVMdev] Metadata
...know about general metadata. > > My inkling is to fix ParseOptionalCommaAlign. Sound reasonable? Well, that's a rat's nest. I backed up and thought maybe I have the metadata syntax wrong. So I tried a bunch of things: %r8 = load <2 x double>* %r6, align 16, metadata !"nontemporal" %r8 = load <2 x double>* %r6, align 16, metadata !nontemporal %r8 = load <2 x double>* %r6, align 16, !{ metadata !"nontemporal" } %r8 = load <2 x double>* %r6, align 16, !{ metadata !nontemporal } %r8 = load <2 x double>* %r6, align 16, !{ !"nontemporal...
2020 Apr 29
2
Nontemporal memory accesses and fences
...<llvm-dev-bounces at lists.llvm.org> on behalf of JF Bastien via llvm-dev <llvm-dev at lists.llvm.org> Sent: Tuesday, April 28, 2020 4:54 PM To: Cranmer, Joshua <joshua.cranmer at intel.com> Cc: llvm-dev at lists.llvm.org <llvm-dev at lists.llvm.org> Subject: Re: [llvm-dev] Nontemporal memory accesses and fences I see nontemporals as a nice builtin so you don’t have to hand-write the assembly. I don’t think existing hardware is consistent enough to allow us to expose nice semantics at a language or IR level, in the sense that we probably don’t want to define what happens if you...
2010 Feb 11
3
[LLVMdev] Metadata
...vid Greene wrote: > > Putting a bit (or multiple bits) in MachineMemOperand for this > > would also make sense. > > Is there any chance a MachineMemOperand will be shared by multiple > instructions? So I tried to do this: %r8 = load <2 x double>* %r6, align 16, !"nontemporal" and the assembler doesn't like it. Do I need to use named metadata? That would be rather inconvenient. The problem is this code in llvm-as: int LLParser::ParseLoad(Instruction *&Inst, PerFunctionState &PFS, bool isVolatile) { Value *Val; LocTy Loc;...
2010 Feb 11
4
[LLVMdev] Metadata
...gt; My inkling is to fix ParseOptionalCommaAlign. Sound reasonable? > > Well, that's a rat's nest. I backed up and thought maybe I have the metadata > syntax wrong. > > So I tried a bunch of things: > > %r8 = load <2 x double>* %r6, align 16, metadata !"nontemporal" > %r8 = load <2 x double>* %r6, align 16, metadata !nontemporal > %r8 = load <2 x double>* %r6, align 16, !{ metadata !"nontemporal" } > %r8 = load <2 x double>* %r6, align 16, !{ metadata !nontemporal } > %r8 = load <2 x double>* %r6, align 16, !...
2018 Jan 20
2
Non-Temporal hints from Loop Vectorizer
i have already seen usage of __builtin_nontemporal_store but i want to automate identification of non temporal loads/stores. i think i need to go for a pass. is it possiblee to detect non temporal loops without polly? On Sat, Jan 20, 2018 at 11:26 PM, Simon Pilgrim <llvm-dev at redking.me.uk> wrote: > On 20/01/2018 18:16, hameeza ahmed w...
2018 Jan 20
2
Non-Temporal hints from Loop Vectorizer
...> %16, <16 x i32>* %21, align 16, !tbaa !1 However, i want it to emit following IR %0 = getelementptr inbounds [2048 x i32], [2048 x i32]* @b, i64 0, i64 %index %1 = bitcast i32* %0 to <16 x i32>* %wide.load = load <16 x i32>, <16 x i32>* %1, align 16, !tbaa !1, !nontemporal !1 %8 = getelementptr inbounds [2048 x i32], [2048 x i32]* @c, i64 0, i64 %index %9 = bitcast i32* %8 to <16 x i32>* %wide.load14 = load <16 x i32>, <16 x i32>* %9, align 16, !tbaa !1, !nontemporal !1 %16 = add nsw <16 x i32> %wide.load14, %wide.load, !nontemporal !1...
2018 Jan 21
0
Non-Temporal hints from Loop Vectorizer
On 01/20/2018 12:29 PM, hameeza ahmed via llvm-dev wrote: > i have already seen usage of __builtin_nontemporal_store but i want to > automate identification of non temporal loads/stores. i think i need > to go for a pass. is it possiblee to detect non temporal loops without > polly? Yes, but we don't have anything that does that right now. The cost modeling is non-trivial, however. In the loop...
2010 Feb 11
2
[LLVMdev] Metadata
On Thu, Feb 11, 2010 at 8:50 PM, David Greene <dag at cray.com> wrote: > > So I tried a bunch of things: > > %r8 = load <2 x double>* %r6, align 16, metadata !"nontemporal" > %r8 = load <2 x double>* %r6, align 16, metadata !nontemporal > %r8 = load <2 x double>* %r6, align 16, !{ metadata !"nontemporal" } > %r8 = load <2 x double>* %r6, align 16, !{ metadata !nontemporal } > %r8 = load <2 x double>* %r6, align 16, !...
2018 Jan 20
0
Non-Temporal hints from Loop Vectorizer
...tbaa !1 > > > However, i want it to emit following IR > >   %0 = getelementptr inbounds [2048 x i32], [2048 x i32]* @b, i64 0, > i64 %index >   %1 = bitcast i32* %0 to <16 x i32>* >   %wide.load = load <16 x i32>, <16 x i32>* %1, align 16, !tbaa !1, > !nontemporal !1 >   %8 = getelementptr inbounds [2048 x i32], [2048 x i32]* @c, i64 0, > i64 %index >   %9 = bitcast i32* %8 to <16 x i32>* >   %wide.load14 = load <16 x i32>, <16 x i32>* %9, align 16, !tbaa > !1, !nontemporal !1 >   %16 = add nsw <16 x i32> %wide.loa...
2010 Jan 04
2
[LLVMdev] Metadata
...metadata and how to use it somewhere? The doxygen-generated stuff obviously doesn't specify things like how to create custom metadata kinds and all that jazz. As a few of us discussed at the latest dev meeting, I'd like to use custom metadata to annotate load/store instructions with "nontemporal" semantics to allow generation of instructions like MOVNT on x86-based targets. Losing the "nontemporal" annotation won't affect correctness so it seems a prime candidate for metadata. One question: should "nontemporal" be "native" metadata or "external...
2010 Feb 12
1
[LLVMdev] Adding NonTemporal
On Fri, Feb 12, 2010 at 1:43 PM, David Greene <dag at cray.com> wrote: > On Thursday 11 February 2010 17:40:24 David Greene wrote: >> While hacking around in the SelectionDAG build code, I've made the >> isVolatile, (new) isNonTemporal and Alignment parameters to >> SelectionDAG::getLoad/getStore and friends non-default. >> >> I've already caught one bug in the XCore backend by doing this: >> >>     if (Offset % 4 == 0) { >>       // We've managed to infer better alignment information t...
2010 Feb 12
0
[LLVMdev] Adding NonTemporal
On Thursday 11 February 2010 17:40:24 David Greene wrote: > While hacking around in the SelectionDAG build code, I've made the > isVolatile, (new) isNonTemporal and Alignment parameters to > SelectionDAG::getLoad/getStore and friends non-default. > > I've already caught one bug in the XCore backend by doing this: > > if (Offset % 4 == 0) { > // We've managed to infer better alignment information than the load >...
2016 Jan 14
4
RFC: non-temporal fencing in LLVM IR
...Tim's assessment for ARM. That's interesting; I wasn't previously aware of that instruction. My understanding is that Alpha would have the same problem for normal loads. I'm all in favor of more systematic handling of the fences associated with x86 non-temporal accesses. AFAICT, nontemporal loads and stores seem to have different fencing rules on x86, none of them very clear. Nontemporal stores should probably ideally use an SFENCE. Locked instructions seem to be documented to work with MOVNTDQA. In both cases, there seems to be only empirical evidence as to which side(s) of the no...
2010 Feb 11
3
[LLVMdev] Adding NonTemporal
While hacking around in the SelectionDAG build code, I've made the isVolatile, (new) isNonTemporal and Alignment parameters to SelectionDAG::getLoad/getStore and friends non-default. I've already caught one bug in the XCore backend by doing this: if (Offset % 4 == 0) { // We've managed to infer better alignment information than the load // already has. Use an aligned l...
2010 Feb 11
0
[LLVMdev] Metadata
...ParseOptionalCommaAlign.  Sound reasonable? >> >> Well, that's a rat's nest.  I backed up and thought maybe I have the metadata >> syntax wrong. >> >> So I tried a bunch of things: >> >> %r8 = load <2 x double>* %r6, align 16, metadata !"nontemporal" >> %r8 = load <2 x double>* %r6, align 16, metadata !nontemporal >> %r8 = load <2 x double>* %r6, align 16, !{ metadata !"nontemporal" } >> %r8 = load <2 x double>* %r6, align 16, !{ metadata !nontemporal } >> %r8 = load <2 x double>*...
2018 Jan 20
0
Non-Temporal hints from Loop Vectorizer
On 20/01/2018 17:44, hameeza ahmed via llvm-dev wrote: > Hello, > > My work deals with non-temporal loads and stores i found non-temporal > meta data in llvm documentation but its not shown in IR. > > How to get non-temporal meta data? llvm\test\CodeGen\X86\nontemporal-loads.ll shows how to create nt vector loads in IR - is that what you're after? Simon.
2010 Feb 11
0
[LLVMdev] Metadata
...etadata node: '!' <ID> '=' METADATA '!' '{' <MDNodeList> '}' And MDNodeList contains a list of stuff like integer values, strings and so on. Is that basically right? So I would have to do this: %r8 = load <2 x double>* %r6, align 16, !nontemporal !0 [...] !0 = metadata !{ i32 1 } I would really rather not have to specify the entirely redundant !0. Just the fact that the instruction has metadata with index/name "nontemporal" should be enough. -Dave
2018 Jan 20
2
Non-Temporal hints from Loop Vectorizer
Hello, My work deals with non-temporal loads and stores i found non-temporal meta data in llvm documentation but its not shown in IR. How to get non-temporal meta data? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180120/7dd4ba6f/attachment.html>
2010 Feb 11
2
[LLVMdev] Metadata
...'=' METADATA '!' '{' <MDNodeList> '}' > > And MDNodeList contains a list of stuff like integer values, strings and so > on. > > Is that basically right?  So I would have to do this: > >        %r8 = load <2 x double>* %r6, align 16, !nontemporal !0 > [...] > !0 = metadata !{ i32 1 } I guess, that's what I described in the example in previous email :). In this case, your metadata is just an integer one. In my example, my metadata was a collection of 4 values. > I would really rather not have to specify the entirely redundant...