regNumber storeDataReg = (treeNode->OperGet() == GT_XCHG) ? dataReg : treeNode->ExtractTempReg(RBM_ALLINT);
regNumber loadReg = (targetReg != REG_NA) ? targetReg : storeDataReg;
- // The register allocator should have extended the lifetime of the address
- // so that it is not used as the target.
+ // Check allocator assumptions
+ //
+ // The register allocator should have extended the lifetimes of all input and internal registers so that
+ // none interfere with the target.
noway_assert(addrReg != targetReg);
noway_assert(addrReg != loadReg);
regNumber exResultReg = treeNode->ExtractTempReg(RBM_ALLINT);
// Check allocator assumptions
+ //
+ // The register allocator should have extended the lifetimes of all input and internal registers so that
+ // none interfere with the target.
noway_assert(addrReg != targetReg);
noway_assert(dataReg != targetReg);
noway_assert(comparandReg != targetReg);
op1->gtFlags |= GTF_GLOB_REF | GTF_ASG;
retNode = op1;
break;
-#endif // _TARGET_XARCH_
+#endif // defined(_TARGET_XARCH_) || defined(_TARGET_ARM64_)
case CORINFO_INTRINSIC_MemoryBarrier:
retNode = node;
break;
}
-#endif
+#endif // defined(_TARGET_XARCH_) || defined(_TARGET_ARM64_)
case CORINFO_INTRINSIC_StringLength:
op1 = impPopStack().val;