Displaying 20 results from an estimated 9000 matches similar to: "AtomicExpandPass and branch weighting"
2016 Dec 14
0
AtomicExpandPass and branch weighting
Seems reasonable.
I'd note additionally that on some architectures, that the success block *must* be the fallthrough case (that is to say: you must not have any taken branches between the load-linked and store-conditional) in order to have an architectural guarantee that two such loops on different CPUs won't livelock against eachother.
On Dec 12, 2016, at 12:30 PM, Kyle Butt via
2016 Dec 14
1
AtomicExpandPass and branch weighting
On Wed, Dec 14, 2016 at 1:34 PM, James Knight <jyknight at google.com> wrote:
> Seems reasonable.
>
> I'd note additionally that on some architectures, that the success block
> *must* be the fallthrough case (that is to say: you must not have any taken
> branches between the load-linked and store-conditional) in order to have an
> architectural guarantee that two such
2018 Jun 13
12
RFC: Atomic LL/SC loops in LLVM revisited
# RFC: Atomic LL/SC loops in LLVM revisited
## Summary
This proposal gives a brief overview of the challenges of lowering to LL/SC
loops and details the approach I am taking for RISC-V. Beyond getting feedback
on that work, my intention is to find consensus on moving other backends
towards a similar approach and sharing common code where feasible. Scroll down
to 'Questions' for a summary
2017 Jan 10
2
[PATCHish] IfConversion; lost edges for some diamonds
On Tue, Jan 10, 2017 at 2:31 AM, Peter A Jonsson <pj at sics.se> wrote:
> Hi Kyle,
>
> my apologies for mailing you directly but it seems new user creation is
> disabled on the llvm bugzilla.
>
> We sometime lose edges during IfConversion of diamonds and it’s not
> obvious how to reproduce on an upstream target. The documentation for
> HasFallThrough says *may*
2017 May 30
3
[atomics][AArch64] Possible bug in cmpxchg lowering
Currently the AtomicExpandPass will lower the following IR:
define i1 @foo(i32* %obj, i32 %old, i32 %new) {
entry:
%v0 = cmpxchg weak volatile i32* %obj, i32 %old, i32 %new _*release
acquire*_
%v1 = extractvalue { i32, i1 } %v0, 1
ret i1 %v1
}
to the equivalent of the following on AArch64:
_*ldxr w8, [x0]*_
cmp w8, w1
b.ne .LBB0_3
// BB#1:
2016 Jan 27
7
Adding sanity to the Atomics implementation
Right now, the atomics implementation in clang is a bit of a mess. It has three basically completely distinct code-paths:
There's the legacy __sync_* builtins, which clang lowers directly to atomic IR instructions. Then, the llvm atomic IR instructions themselves can sometimes emit libcalls to __sync_* library functions (which are basically undocumented, and users are often responsible for
2017 Sep 15
4
RFC: Trace-based layout.
I plan on rewriting the block placement algorithm to proceed by traces.
A trace is a chain of blocks where each block in the chain may fall through
to
the successor in the chain.
The overall algorithm would be to first produce traces for a function, and
then
order those traces to try and get cache locality.
Currently block placement uses a greedy single step approach to layout. It
produces
2015 Dec 11
7
RFC: Extending atomic loads and stores to floating point and vector types
Currently, we limit atomic loads and stores to either pointer or integer
types. I would like to propose that we extend this to allow both
floating point and vector types which meet the other requirements.
(i.e. power-of-two multiple of 8 bits, and aligned)
This will enable a couple of follow on changes:
1) Teaching the vectorizer how to vectorize unordered atomic loads and
stores
2)
2016 Jan 28
0
Adding sanity to the Atomics implementation
I don't have much of substance to add, but I will say that I like the
proposal (I too prefer Alternative A). When adding C11 atomic support
for hexagon, I found it surprising that support for the __sync_* was
implemented completely differently than the C11 atomics.
On 1/27/2016 1:55 PM, James Knight via llvm-dev wrote:
> Right now, the atomics implementation in clang is a bit of a
2017 Sep 19
2
RFC: Trace-based layout.
On Mon, Sep 18, 2017 at 1:16 PM, Andrew Trick <atrick at apple.com> wrote:
>
> On Sep 14, 2017, at 6:53 PM, Kyle Butt via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
> I plan on rewriting the block placement algorithm to proceed by traces.
>
> A trace is a chain of blocks where each block in the chain may fall
> through to
> the successor in the chain.
2015 Dec 11
2
RFC: Extending atomic loads and stores to floating point and vector types
On 12/11/2015 01:29 PM, James Y Knight wrote:
>
> On Fri, Dec 11, 2015 at 3:05 PM, Philip Reames via llvm-dev
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>
>> One open question I don't know the answer to: Are there any
>> special semantics required from floating point stores which
>> aren't met
2017 Sep 19
0
RFC: Trace-based layout.
> On Sep 18, 2017, at 5:17 PM, Kyle Butt <iteratee at google.com> wrote:
>
>
>
> On Mon, Sep 18, 2017 at 1:16 PM, Andrew Trick <atrick at apple.com <mailto:atrick at apple.com>> wrote:
>
>> On Sep 14, 2017, at 6:53 PM, Kyle Butt via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>>
>> I plan on
2017 Sep 18
0
RFC: Trace-based layout.
> On Sep 14, 2017, at 6:53 PM, Kyle Butt via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> I plan on rewriting the block placement algorithm to proceed by traces.
>
> A trace is a chain of blocks where each block in the chain may fall through to
> the successor in the chain.
>
> The overall algorithm would be to first produce traces for a function, and then
>
2008 May 13
1
Hard(?) lock when reassociating ath with wpa_supplicant on RELENG_7
I seem to be able to lock my machine by going into wpa_cli and asking it
to 'reassoc'. The reason for question mark after "hard" is that debug
information (caused by wlandebug and athdebug) is being printed on the
console. The only way to get machine's attention is to hold power button
for 8 seconds.
Note: manual reassociation is just the handy way to reproduce the
problem
2014 Aug 15
2
[LLVMdev] Plan to optimize atomics in LLVM
> From my reading of Atomics.rst, it would be sound to reorder (It does not
> say much about load-linked, so I am treating it as a normal load here)
>
>> store seq_cst
>> fence release
>> load-linked monotonic
>
> into
>
>> load-linked monotonic
>> store seq_cst
>> fence release
> Which would make an execution ending in %old_x = %old_y = 0
2012 Mar 25
3
attempt to access beyond end of device and livelock
Hi Dongyang, Yan,
When testing BTRFS with RAID 0 metadata on linux-3.3, we see discard
ranges exceeding the end of the block device [1], potentially causing
dataloss; when this occurs, filesystem writeback becomes catatonic due
to continual resubmission.
The reproducer is quite simple [2]. Hope this proves useful...
Thanks,
Daniel
--- [1]
attempt to access beyond end of device
ram0: rw=129,
2016 Jan 31
2
Adding sanity to the Atomics implementation
----- Original Message -----
> From: "Ben via llvm-dev Craig" <llvm-dev at lists.llvm.org>
> To: llvm-dev at lists.llvm.org
> Sent: Thursday, January 28, 2016 9:41:06 AM
> Subject: Re: [llvm-dev] Adding sanity to the Atomics implementation
>
>
> I don't have much of substance to add, but I will say that I like the
> proposal (I too prefer Alternative
2015 Dec 11
2
RFC: Extending atomic loads and stores to floating point and vector types
On 12/11/2015 12:05 AM, JF Bastien wrote:
> On Fri, Dec 11, 2015 at 3:22 AM, Philip Reames via llvm-dev
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>
> Currently, we limit atomic loads and stores to either pointer or
> integer types. I would like to propose that we extend this to
> allow both floating point and vector types
2016 Jan 13
4
RFC: non-temporal fencing in LLVM IR
Hello, fencing enthusiasts!
*TL;DR:* We'd like to propose an addition to the LLVM memory model
requiring non-temporal accesses be surrounded by non-temporal load barriers
and non-temporal store barriers, and we'd like to add such orderings to the
fence IR opcode.
We are open to different approaches, hence this email instead of a patch.
*Who's "we"?*
Philip Reames brought
2013 Feb 18
0
[LLVMdev] splitting a branch within a pseudo
This is the old MIPS I code that sort of does what I need to do. This
seems really involved to do such a simple thing.
Maybe there are now helper classes for this or some better example I can
look at. I suppose I can mimick this if people say this just the correct
way to do this in LLVM.
static MachineBasicBlock* ExpandCondMov(MachineInstr *MI,
MachineBasicBlock *BB,