Lines Matching refs:atomics
669 // Emit all the different atomics
734 AtomicInfo atomics(*this, src);
737 if (atomics.shouldUseLibcall()) {
740 assert(atomics.getEvaluationKind() == TEK_Aggregate);
743 tempAddr = CreateMemTemp(atomics.getAtomicType(), "atomic-load-temp");
748 args.add(RValue::get(atomics.getAtomicSizeValue()),
760 return atomics.convertTempToRValue(tempAddr, resultSlot);
764 llvm::Value *addr = atomics.emitCastToAtomicIntPointer(src.getAddress());
776 QualType valueType = atomics.getValueType();
780 if (atomics.getEvaluationKind() == TEK_Aggregate && resultSlot.isIgnored())
785 if (atomics.getEvaluationKind() == TEK_Scalar && !atomics.hasPadding()) {
803 if (atomics.getEvaluationKind() == TEK_Aggregate) {
806 tempAlignment = atomics.getValueAlignment();
809 temp = CreateMemTemp(atomics.getAtomicType(), "atomic-load-temp");
810 tempAlignment = atomics.getAtomicAlignment();
814 llvm::Value *castTemp = atomics.emitCastToAtomicIntPointer(temp);
818 return atomics.convertTempToRValue(temp, resultSlot);
884 AtomicInfo atomics(*this, dest);
888 atomics.emitCopyIntoMemory(rvalue, dest);
893 if (atomics.shouldUseLibcall()) {
895 llvm::Value *srcAddr = atomics.materializeRValue(rvalue);
899 args.add(RValue::get(atomics.getAtomicSizeValue()),
917 if (rvalue.isScalar() && !atomics.hasPadding()) {
923 llvm::IntegerType::get(getLLVMContext(), atomics.getValueSizeInBits());
934 llvm::Value *addr = atomics.materializeRValue(rvalue);
937 addr = atomics.emitCastToAtomicIntPointer(addr);
939 atomics.getAtomicAlignment().getQuantity());
943 llvm::Value *addr = atomics.emitCastToAtomicIntPointer(dest.getAddress());
958 AtomicInfo atomics(*this, dest);
960 switch (atomics.getEvaluationKind()) {
963 atomics.emitCopyIntoMemory(RValue::get(value), dest);
969 atomics.emitCopyIntoMemory(RValue::getComplex(value), dest);
978 Zeroed = atomics.emitMemSetZeroIfNecessary(dest);
979 dest = atomics.projectValue(dest);