search for: memintrinsic

Displaying 13 results from an estimated 13 matches for "memintrinsic".

2017 Aug 21
2
[RFC] Injecting new element atomic memory intrinsics into MemIntrinsic class hierarchy
...he Java frontends that don't manifest in clang. Option 2) ------------- Add separate classes to the hierarchy for each intrinsic. There are a few different ways that this could be organized (note: UA* = unordered-atomic version of intrinsic, to save typing): a) Completely disjoint hierarchy UAMemIntrinsic * UAMemSetInst * UAMemTransferInst ** UAMemCpyInst ** UAMemMoveInst MemIntrinsic * MemSetInst * MemTransferInst ** MemCpyInst ** MemMoveInst e) Multiple inheritance This is a variant on options 2b to 2d. To make it possible to easily use isa<> to query for whether or not a memory intrinsic...
2017 Aug 17
3
[RFC] Injecting new element atomic memory intrinsics into MemIntrinsic class hierarchy
...w memory intrinsics to the instruction class hierarchy. We have a preference for the first option, but would appreciate thoughts/opinions/discussion on the best way to insert the element atomic intrinsics into the hierarchy. For background, the relevant portion of the current hierarchy looks like: MemIntrinsic * MemSetInst * MemTransferInst ** MemCpyInst ** MemMoveInst Option 1) ------------- Do not add any new classes to the hierarchy. Instead, teach each class to recognize the unordered-atomic variant as belonging to the class (ex: element unordered-atomic memcpy is recognized as a MemCpyInst, MemT...
2013 Jan 28
4
[LLVMdev] Specify the volatile access behaviour of the memcpy, memmove and memset intrinsics
...ond for the source accesses. If there is general agreement, I plan to proceed with the following steps : 1. Specify the access behavior (this patch). 2. Auto-upgrade the existing memcpy, memmove and memset intrinsics into the more precise form by replicating the single volatile flag and rework the MemIntrinsic hierarchy to provide (is|set)SrcVolatile(), (is|set)DestVolatile() and implement (set|is)Volatile in terms of the former 2 methods. This will conservatively preserve semantics. No functional change so far. Commit 1 & 2. 3. Audit all uses of isVolatile() / setVolatile() and move them to the more...
2013 Jan 29
0
[LLVMdev] Specify the volatile access behaviour of the memcpy, memmove and memset intrinsics
...gt; > If there is general agreement, I plan to proceed with the following steps : > 1. Specify the access behavior (this patch). > 2. Auto-upgrade the existing memcpy, memmove and memset intrinsics into > the more precise form by replicating the single volatile flag and rework > the MemIntrinsic hierarchy to provide (is|set)SrcVolatile(), > (is|set)DestVolatile() and implement (set|is)Volatile in terms of the > former 2 methods. This will conservatively preserve semantics. No > functional change so far. Commit 1 & 2. > 3. Audit all uses of isVolatile() / setVolatile() and m...
2007 Jul 30
0
[LLVMdev] For the avoidance of doubt...
Sarah Thompson wrote: > ... can *any* instruction(s) other than load and store cause memory > reads or writes? Not that I know of, but some intrinsic functions do. > > This is pretty important, because I need to be able to track (at least) > writes, and ideally also reads in order to be able to make > explicit-state model checking work efficiently. I specifically know that
2007 Jul 30
4
[LLVMdev] For the avoidance of doubt...
... can *any* instruction(s) other than load and store cause memory reads or writes? This is pretty important, because I need to be able to track (at least) writes, and ideally also reads in order to be able to make explicit-state model checking work efficiently. (I don't really care about reads or writes to spilled registers added by the code generator). Sarah
2020 Jan 13
2
Incorrect code generation when using -fprofile-generate on code which contains exception handling (Windows target)
...te the funclet information onto the value profiling intrinsics created. And then also propagate this info to the library routines these intrinsics get lowered into. For indirect function calls, the funclet information can be copied from the original function call. However, for MemIntrinsic call operand value profiling, these do not have funclet operand bundles attached to them by the front-end. (Not sure if it's possible to do because the interfaces that are used to create these do not take operand bundles) Therefore, PGO would need to determine the appropriate funclet value with...
2013 Jan 31
0
[LLVMdev] Specify the volatile access behaviour of the memcpy, memmove and memset intrinsics
...> > If there is general agreement, I plan to proceed with the following steps : > 1. Specify the access behavior (this patch). > 2. Auto-upgrade the existing memcpy, memmove and memset intrinsics into > the more precise form by replicating the single volatile flag and rework > the MemIntrinsic hierarchy to provide (is|set)SrcVolatile(), > (is|set)DestVolatile() and implement (set|is)Volatile in terms of the > former 2 methods. This will conservatively preserve semantics. No > functional change so far. Commit 1 & 2. > 3. Audit all uses of isVolatile() / setVolatile() and m...
2020 Jan 14
2
Incorrect code generation when using -fprofile-generate on code which contains exception handling (Windows target)
...ion onto the value profiling > intrinsics created. And then also propagate this info to the library > routines these intrinsics get lowered into. > For indirect function calls, the funclet information can be > copied from the original function call. > However, for MemIntrinsic call operand value profiling, these do > not have funclet operand bundles attached to them by the front-end. (Not > sure if it's possible to do because the interfaces that are used to create > these do not take operand bundles) Therefore, PGO would need to determine > the appropriat...
2013 Feb 03
0
[LLVMdev] Specify the volatile access behaviour of the memcpy, memmove and memset intrinsics
...re is general agreement, I plan to proceed with the following steps : >> 1. Specify the access behavior (this patch). >> 2. Auto-upgrade the existing memcpy, memmove and memset intrinsics into >> the more precise form by replicating the single volatile flag and rework >> the MemIntrinsic hierarchy to provide (is|set)SrcVolatile(), >> (is|set)DestVolatile() and implement (set|is)Volatile in terms of the >> former 2 methods. This will conservatively preserve semantics. No >> functional change so far. Commit 1 & 2. >> 3. Audit all uses of isVolatile() / set...
2017 May 08
3
RFC: Element-atomic memory intrinsics
...for (len_ty i=0; i < num_iters; i++) *(copy_ty*)(dest + i*sizeof(copy_ty)) = *(copy_ty*)(src + i*sizeof(copy_ty)); // Note: restriction on len means we don’t need a residual loop. } We would inject the new intrinsic into the MemIntrinsic introspection hierarchy (IR/InstrinsicInst.h). Pros: * New intrinsic doesn’t interfere with existing memory intrinsics code. * Adding new intrinsic to MemIntrinsic hierarchy means that many LLVM passes will handle the new intrinsic “for free” (though, not *really* free; some wor...
2011 May 07
0
[LLVMdev] Question about linking llvm-mc when porting a new backend
...ed int, llvm::Type const*, llvm::Instruction*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o) GetStoreValueForLoad(llvm::Value*, unsigned int, llvm::Type const*, llvm::Instruction*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o) GetMemInstValueForLoad(llvm::MemIntrinsic*, unsigned int, llvm::Type const*, llvm::Instruction*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o) AnalyzeLoadFromClobberingWrite(llvm::Type const*, llvm::Value*, llvm::Value*, unsigned long long, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o) AnalyzeLoa...
2011 May 06
0
[LLVMdev] Question about linking llvm-mc when porting a new backend
...ed int, llvm::Type const*, llvm::Instruction*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o) GetStoreValueForLoad(llvm::Value*, unsigned int, llvm::Type const*, llvm::Instruction*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o) GetMemInstValueForLoad(llvm::MemIntrinsic*, unsigned int, llvm::Type const*, llvm::Instruction*, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o) AnalyzeLoadFromClobberingWrite(llvm::Type const*, llvm::Value*, llvm::Value*, unsigned long long, llvm::TargetData const&)in libLLVMScalarOpts.a(GVN.cpp.o) AnalyzeLoa...