Tim Northover
420a216817
IR: add "cmpxchg weak" variant to support permitted failure.
...
This commit adds a weak variant of the cmpxchg operation, as described
in C++11. A cmpxchg instruction with this modifier is permitted to
fail to store, even if the comparison indicated it should.
As a result, cmpxchg instructions must return a flag indicating
success in addition to their original iN value loaded. Thus, for
uniformity *all* cmpxchg instructions now return "{ iN, i1 }". The
second flag is 1 when the store succeeded.
At the DAG level, a new ATOMIC_CMP_SWAP_WITH_SUCCESS node has been
added as the natural representation for the new cmpxchg instructions.
It is a strong cmpxchg.
By default this gets Expanded to the existing ATOMIC_CMP_SWAP during
Legalization, so existing backends should see no change in behaviour.
If they wish to deal with the enhanced node instead, they can call
setOperationAction on it. Beware: as a node with 2 results, it cannot
be selected from TableGen.
Currently, no use is made of the extra information provided in this
patch. Test updates are almost entirely adapting the input IR to the
new scheme.
Summary for out of tree users:
------------------------------
+ Legacy Bitcode files are upgraded during read.
+ Legacy assembly IR files will be invalid.
+ Front-ends must adapt to different type for "cmpxchg".
+ Backends should be unaffected by default.
llvm-svn: 210903
2014-06-13 14:24:07 +00:00
..
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 08:59:55 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-06-03 03:25:09 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-06-03 13:54:53 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 10:09:59 +00:00
2014-05-30 05:58:19 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-06-09 01:25:51 +00:00
2014-05-24 12:50:23 +00:00
2014-06-13 14:24:07 +00:00
2014-06-13 14:24:07 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 08:59:55 +00:00
2014-05-30 08:59:55 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-28 15:33:19 +00:00
2014-05-30 08:59:55 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 05:58:19 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-06-10 09:52:44 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-06-11 21:06:56 +00:00
2014-06-09 01:54:00 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-26 17:21:53 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 05:58:19 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 05:58:19 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 08:59:55 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-27 16:50:03 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-06-13 14:24:07 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:50:23 +00:00
2014-06-13 14:24:07 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-06-10 14:32:08 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-06-11 06:44:53 +00:00
2014-05-24 12:50:23 +00:00
2014-05-26 17:22:07 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:42:26 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:50:23 +00:00
2014-06-03 16:03:00 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-06-09 22:42:55 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-27 16:50:09 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-06-10 10:50:24 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:50:23 +00:00