llvm/test/Assembler
Tim Northover 8f2a85e099 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210903 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-13 14:24:07 +00:00
..
2002-03-08-NameCollision2.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2002-03-08-NameCollision.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2002-04-07-HexFloatConstants.ll Use opt -S instead of piping bitcode output through llvm-dis. 2009-09-08 22:34:10 +00:00
2002-04-07-InfConstant.ll
2002-04-29-NameBinding.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2002-05-02-InvalidForwardRef.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2002-07-14-OpaqueType.ll
2002-07-25-QuoteInString.ll
2002-07-25-ReturnPtrFunction.ll Land the long talked about "type system rewrite" patch. This 2011-07-09 17:41:24 +00:00
2002-07-31-SlashInString.ll
2002-08-15-CastAmbiguity.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2002-08-15-ConstantExprProblem.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2002-08-15-UnresolvedGlobalReference.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2002-08-16-ConstExprInlined.ll
2002-08-19-BytecodeReader.ll Fix this test to test what it was originally intended to test. 2009-09-11 18:16:43 +00:00
2002-08-22-DominanceProblem.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2002-10-08-LargeArrayPerformance.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2002-10-13-ConstantEncodingProblem.ll
2002-12-15-GlobalResolve.ll Land the long talked about "type system rewrite" patch. This 2011-07-09 17:41:24 +00:00
2003-01-30-UnsignedString.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2003-04-15-ConstantInitAssertion.ll Make tests which first provide a negative assertion via 'not', then 2012-07-02 12:23:19 +00:00
2003-04-25-UnresolvedGlobalReference.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2003-05-03-BytecodeReaderProblem.ll
2003-05-12-MinIntProblem.ll
2003-05-15-AssemblerProblem.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2003-05-15-SwitchBug.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2003-05-21-ConstantShiftExpr.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2003-05-21-EmptyStructTest.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2003-05-21-MalformedShiftCrash.ll Make tests which first provide a negative assertion via 'not', then 2012-07-02 12:23:19 +00:00
2003-05-21-MalformedStructCrash.ll Make tests which first provide a negative assertion via 'not', then 2012-07-02 12:23:19 +00:00
2003-08-20-ConstantExprGEP-Fold.ll fix test to not get a moduleid that matches 'br' 2009-09-11 16:47:41 +00:00
2003-08-21-ConstantExprCast-Fold.ll
2003-11-05-ConstantExprShift.ll
2003-11-11-ImplicitRename.ll
2003-11-12-ConstantExprCast.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2003-11-24-SymbolTableCrash.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
2004-01-11-getelementptrfolding.ll Fix the remaining TCL-style quotes found in the testsuite. This is 2012-07-02 19:09:46 +00:00
2004-01-20-MaxLongLong.ll
2004-02-01-NegativeZero.ll
2004-02-27-SelfUseAssertError.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2004-03-07-FunctionAddressAlignment.ll
2004-03-30-UnclosedFunctionCrash.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
2004-04-04-GetElementPtrIndexTypes.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2004-06-07-VerifierBug.ll
2004-10-22-BCWriterUndefBug.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2004-11-28-InvalidTypeCrash.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
2005-01-03-FPConstantDisassembly.ll
2005-01-31-CallingAggregateFunction.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2005-05-05-OpaqueUndefValues.ll
2005-12-21-ZeroInitVector.ll
2006-09-28-CrashOnInvalid.ll Make tests which first provide a negative assertion via 'not', then 2012-07-02 12:23:19 +00:00
2006-12-09-Cast-To-Bool.ll
2007-01-02-Undefined-Arg-Type.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
2007-01-05-Cmp-ConstExpr.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2007-01-16-CrashOnBadCast2.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
2007-01-16-CrashOnBadCast.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
2007-03-18-InvalidNumberedVar.ll Make tests which first provide a negative assertion via 'not', then 2012-07-02 12:23:19 +00:00
2007-03-19-NegValue.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2007-04-20-AlignedLoad.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2007-04-20-AlignedStore.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2007-04-25-AssemblerFoldExternWeak.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2007-05-21-Escape.ll
2007-07-19-ParamAttrAmbiguity.ll
2007-08-06-AliasInvalid.ll Make tests which first provide a negative assertion via 'not', then 2012-07-02 12:23:19 +00:00
2007-09-10-AliasFwdRef.ll Reject alias to undefined symbols in the verifier. 2014-03-12 20:15:49 +00:00
2007-09-29-GC.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2007-11-26-AttributeOverload.ll
2007-12-11-AddressSpaces.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
2008-01-11-VarargAttrs.ll
2008-02-18-IntPointerCrash.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
2008-07-10-APInt.ll
2008-09-02-FunctionNotes2.ll Inline the checks for mutually exclusive attributes since they're used in only one module. 2012-10-09 20:11:19 +00:00
2008-09-02-FunctionNotes.ll Modify the LLVM assembly output so that it uses references to represent function attributes. 2013-02-20 07:21:42 +00:00
2008-09-29-RetAttr.ll
2008-10-14-QuoteInName.ll
2009-02-01-UnnamedForwardRef.ll
2009-02-28-CastOpc.ll Remove support for parsing the "type i32" syntax for defining a numbered 2011-06-19 00:03:46 +00:00
2009-02-28-StripOpaqueName.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2009-03-24-ZextConstantExpr.ll
2009-07-24-ZeroArgGEP.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
2010-02-05-FunctionLocalMetadataBecomesNull.ll Debug Info Testing: updated to use NULL instead of "i32 0" in a few fields. 2013-09-06 21:03:58 +00:00
addrspacecast-alias.ll Allow alias to point to an arbitrary ConstantExpr. 2014-06-03 02:41:57 +00:00
aggregate-constant-values.ll FileCheckize these testcases. 2012-04-08 11:00:38 +00:00
aggregate-return-single-value.ll Remove some support for ReturnInsts with multiple operands, and for 2011-04-04 07:44:02 +00:00
alias-redefinition.ll Don't crash on redefinitions. 2014-05-09 21:49:17 +00:00
align-inst-alloca.ll Define a maximum supported alignment value for load, store, and 2010-07-28 20:12:04 +00:00
align-inst-load.ll Define a maximum supported alignment value for load, store, and 2010-07-28 20:12:04 +00:00
align-inst-store.ll Define a maximum supported alignment value for load, store, and 2010-07-28 20:12:04 +00:00
align-inst.ll Make GlobalValue alignment consistent with load, store, and alloca 2010-07-28 20:56:48 +00:00
alignstack.ll Adjust testcases for msasm -> alignstack. 2009-10-21 23:29:12 +00:00
anon-functions.ll Fix spacing. 2009-09-06 00:00:13 +00:00
atomic.ll IR: add "cmpxchg weak" variant to support permitted failure. 2014-06-13 14:24:07 +00:00
attribute-builtin.ll Remove verifier check that attribute 'builtin' is only applied to calls to 2013-09-07 00:25:48 +00:00
auto_upgrade_intrinsics.ll Change objectsize intrinsic to accept different address spaces. 2013-10-07 18:06:48 +00:00
bcwrap.ll FileCheckize these testcases. 2012-04-08 11:00:38 +00:00
comment.ll Reapply: Add type output to llvm-dis annotations. Patch by Yuri! 2011-03-17 19:50:04 +00:00
ConstantExprFold.ll Convert all tests using TCL-style quoting to use shell-style quoting. 2012-07-02 12:47:22 +00:00
ConstantExprFoldCast.ll Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
ConstantExprFoldSelect.ll Fold vector selects with undef elements in the condition. Fixes PR18319. 2013-12-31 19:30:47 +00:00
ConstantExprNoFold.ll Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
externally-initialized.ll Added LLVM Asm/Bitcode Reader/Writer support for new IR keyword externally_initialized. 2013-02-05 05:57:38 +00:00
extractvalue-invalid-idx.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
fast-math-flags.ll Fast-math test case for bitcode and textual reading/writing 2012-11-27 00:45:08 +00:00
flags.ll implement .ll and .bc support for nsw/nuw on shl and exact on lshr/ashr. 2011-02-07 16:40:21 +00:00
functionlocal-metadata.ll Fix broken CHECK lines. 2014-01-11 21:06:00 +00:00
getelementptr_struct.ll Make tests which first provide a negative assertion via 'not', then 2012-07-02 12:23:19 +00:00
getelementptr_vec_idx1.ll Relax the restrictions on vector of pointer types, and vector getelementptr. 2012-11-13 12:59:33 +00:00
getelementptr_vec_idx2.ll Relax the restrictions on vector of pointer types, and vector getelementptr. 2012-11-13 12:59:33 +00:00
getelementptr_vec_idx3.ll Relax the restrictions on vector of pointer types, and vector getelementptr. 2012-11-13 12:59:33 +00:00
getelementptr_vec_struct.ll Relax the restrictions on vector of pointer types, and vector getelementptr. 2012-11-13 12:59:33 +00:00
getelementptr.ll Relax the restrictions on vector of pointer types, and vector getelementptr. 2012-11-13 12:59:33 +00:00
getInt.ll Clean up RUN command for Assembler/getInt.ll. 2014-01-13 22:37:35 +00:00
global-addrspace-forwardref.ll Preserve address space of forward-referenced global variables in the LL parser 2012-11-16 21:03:47 +00:00
half-constprop.ll No need for those tests to go thru llvm-as and/or llvm-dis. 2014-05-27 22:03:28 +00:00
half-conv.ll No need for those tests to go thru llvm-as and/or llvm-dis. 2014-05-27 22:03:28 +00:00
half.ll Add half support to LLVM (for OpenCL) 2012-05-24 15:59:06 +00:00
huge-array.ll FileCheckize these testcases. 2012-04-08 11:00:38 +00:00
inalloca.ll IR: Change inalloca's grammar a bit 2014-03-09 06:41:58 +00:00
insertextractvalue.ll Remove old 'grep' lines. 2012-04-08 11:53:54 +00:00
insertvalue-invalid-idx.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
internal-hidden-alias.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
internal-hidden-function.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
internal-hidden-variable.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
internal-protected-alias.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
internal-protected-function.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
internal-protected-variable.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
invalid_cast2.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
invalid_cast3.ll Bug 18228 - Fix accepting bitcasts between vectors of pointers with a 2014-01-22 19:21:33 +00:00
invalid_cast.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
invalid-fwdref1.ll Don't crash if a .ll file contains a forward-reference that looks like a global 2012-10-11 00:38:25 +00:00
invalid-name.ll Make it explicit that nulls are not allowed in names. 2013-11-19 21:12:39 +00:00
metadata.ll FileCheckize these testcases. 2012-04-08 11:00:38 +00:00
MultipleReturnValueType.ll
named-metadata.ll Add testcase for r133050 which added support for printing and parsing escaped 2011-06-16 17:14:38 +00:00
numbered-values.ll
private-hidden-alias.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
private-hidden-function.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
private-hidden-variable.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
private-protected-alias.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
private-protected-function.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
private-protected-variable.ll IR: Don't allow non-default visibility on local linkage 2014-05-07 22:57:20 +00:00
select.ll Remove obsolete -f flags. 2009-08-25 15:38:29 +00:00
tls-models.ll Extend the IL for selecting TLS models (PR9788) 2012-06-23 11:37:03 +00:00
unnamed-addr.ll Modify the LLVM assembly output so that it uses references to represent function attributes. 2013-02-20 07:21:42 +00:00
unnamed.ll
vbool-cmp.ll FileCheckize these testcases. 2012-04-08 11:00:38 +00:00
vector-cmp.ll FileCheckize these testcases. 2012-04-08 11:00:38 +00:00
vector-select.ll FileCheckize these testcases. 2012-04-08 11:00:38 +00:00
vector-shift.ll FileCheckize these testcases. 2012-04-08 11:00:38 +00:00
x86mmx.ll Basic smoke test for new x86mmx type. 2010-09-13 21:01:36 +00:00