Lines Matching refs:CXI
485 void visitAtomicCmpXchgInst(AtomicCmpXchgInst &CXI);
3628 void Verifier::visitAtomicCmpXchgInst(AtomicCmpXchgInst &CXI) {
3631 Assert(CXI.getSuccessOrdering() != AtomicOrdering::NotAtomic,
3632 "cmpxchg instructions must be atomic.", &CXI);
3633 Assert(CXI.getFailureOrdering() != AtomicOrdering::NotAtomic,
3634 "cmpxchg instructions must be atomic.", &CXI);
3635 Assert(CXI.getSuccessOrdering() != AtomicOrdering::Unordered,
3636 "cmpxchg instructions cannot be unordered.", &CXI);
3637 Assert(CXI.getFailureOrdering() != AtomicOrdering::Unordered,
3638 "cmpxchg instructions cannot be unordered.", &CXI);
3639 Assert(!isStrongerThan(CXI.getFailureOrdering(), CXI.getSuccessOrdering()),
3642 &CXI);
3643 Assert(CXI.getFailureOrdering() != AtomicOrdering::Release &&
3644 CXI.getFailureOrdering() != AtomicOrdering::AcquireRelease,
3645 "cmpxchg failure ordering cannot include release semantics", &CXI);
3647 PointerType *PTy = dyn_cast<PointerType>(CXI.getOperand(0)->getType());
3648 Assert(PTy, "First cmpxchg operand must be a pointer.", &CXI);
3651 "cmpxchg operand must have integer or pointer type", ElTy, &CXI);
3652 checkAtomicMemAccessSize(ElTy, &CXI);
3653 Assert(ElTy == CXI.getOperand(1)->getType(),
3654 "Expected value type does not match pointer operand type!", &CXI,
3656 Assert(ElTy == CXI.getOperand(2)->getType(),
3657 "Stored value type does not match pointer operand type!", &CXI, ElTy);
3658 visitInstruction(CXI);