Lines Matching defs:CXI
482 void visitAtomicCmpXchgInst(AtomicCmpXchgInst &CXI);
3513 void Verifier::visitAtomicCmpXchgInst(AtomicCmpXchgInst &CXI) {
3516 Assert(CXI.getSuccessOrdering() != AtomicOrdering::NotAtomic,
3517 "cmpxchg instructions must be atomic.", &CXI);
3518 Assert(CXI.getFailureOrdering() != AtomicOrdering::NotAtomic,
3519 "cmpxchg instructions must be atomic.", &CXI);
3520 Assert(CXI.getSuccessOrdering() != AtomicOrdering::Unordered,
3521 "cmpxchg instructions cannot be unordered.", &CXI);
3522 Assert(CXI.getFailureOrdering() != AtomicOrdering::Unordered,
3523 "cmpxchg instructions cannot be unordered.", &CXI);
3524 Assert(!isStrongerThan(CXI.getFailureOrdering(), CXI.getSuccessOrdering()),
3527 &CXI);
3528 Assert(CXI.getFailureOrdering() != AtomicOrdering::Release &&
3529 CXI.getFailureOrdering() != AtomicOrdering::AcquireRelease,
3530 "cmpxchg failure ordering cannot include release semantics", &CXI);
3532 PointerType *PTy = dyn_cast<PointerType>(CXI.getOperand(0)->getType());
3533 Assert(PTy, "First cmpxchg operand must be a pointer.", &CXI);
3536 "cmpxchg operand must have integer or pointer type", ElTy, &CXI);
3537 checkAtomicMemAccessSize(ElTy, &CXI);
3538 Assert(ElTy == CXI.getOperand(1)->getType(),
3539 "Expected value type does not match pointer operand type!", &CXI,
3541 Assert(ElTy == CXI.getOperand(2)->getType(),
3542 "Stored value type does not match pointer operand type!", &CXI, ElTy);
3543 visitInstruction(CXI);