search for: r293036

Displaying 2 results from an estimated 2 matches for "r293036".

2018 Dec 04
2
MatchLoadCombine(): handling for vectorized loop.
...///  i8 *a = ... ///  i32 val = a[0] | (a[1] << 8) | (a[2] << 16) | (a[3] << 24) becomes during DAGCombine (this is from the comment in DAGCombiner.cpp:5750) /// => ///  i32 val = *((i32)a) I also wondered why this is done so late but found in the commit message (b52af07 / r293036) that there had been a discussion where this had intentionally been addressed late: "...We came to the conclusion that we want to do this transformation late in the pipeline because in presence of atomic loads load widening is irreversible transformation and it might hinder other optimizat...
2018 Dec 03
2
MatchLoadCombine(): handling for vectorized loop.
Hi, I have noticed some loops that build a wider element by loading small elements, zero-extending them, shifting them (with different amounts) to then 'or' them all together. They are either equivalent of a wider load, or to that of a byte-swapped one. DAGCombiner::MatchLoadCombine() will combine this to a single wide load, but only in the scalar cases of i16, i32 and i64. The