Lines Matching defs:replacement
680 /// Registers the vector replacement of a scalar operation and its result
683 /// This utility is used to register the replacement for the vast majority of
688 /// * 'replacement': %0 = arith.addf %1, %2 : vector<128xf32>
689 void registerOpVectorReplacement(Operation *replaced, Operation *replacement);
691 /// Registers the vector replacement of a scalar value. The replacement
694 /// This utility is used to register the vector replacement of block arguments
701 /// * 'replacement': %0 = vector.broadcast %1 : f32 to vector<128xf32>
702 void registerValueVectorReplacement(Value replaced, Operation *replacement);
704 /// Registers the vector replacement of a block argument (e.g., iter_args).
708 /// * 'replacement': vectorized 'iter_arg' block argument.
710 BlockArgument replacement);
712 /// Registers the scalar replacement of a scalar value. 'replacement' must be
715 /// This utility is used to register the replacement of block arguments
721 /// * 'replacement': new induction variable in the new vector loop.
722 void registerValueScalarReplacement(Value replaced, Value replacement);
724 /// Registers the scalar replacement of a scalar result returned from a
725 /// reduction loop. 'replacement' must be scalar.
727 /// This utility is used to register the replacement for scalar results of
732 /// * 'replacement': %1 = vector.reduction <add>, %0 : vector<4xf32> into
734 void registerLoopResultScalarReplacement(Value replaced, Value replacement);
736 /// Returns in 'replacedVals' the scalar replacement for values in
771 void registerValueVectorReplacementImpl(Value replaced, Value replacement);
776 /// Registers the vector replacement of a scalar operation and its result
779 /// This utility is used to register the replacement for the vast majority of
784 /// * 'replacement': %0 = arith.addf %1, %2 : vector<128xf32>
786 Operation *replacement) {
790 LLVM_DEBUG(dbgs() << *replacement << "\n");
792 assert(replaced->getNumResults() == replacement->getNumResults() &&
793 "Unexpected replaced and replacement results");
795 opVectorReplacement[replaced] = replacement;
798 llvm::zip(replaced->getResults(), replacement->getResults()))
803 /// Registers the vector replacement of a scalar value. The replacement
806 /// This utility is used to register the vector replacement of block arguments
812 /// * 'replacement': %0 = vector.broadcast %1 : f32 to vector<128xf32>
814 Value replaced, Operation *replacement) {
815 assert(replacement->getNumResults() == 1 &&
816 "Expected single-result replacement");
818 registerOpVectorReplacement(defOp, replacement);
820 registerValueVectorReplacementImpl(replaced, replacement->getResult(0));
823 /// Registers the vector replacement of a block argument (e.g., iter_args).
827 /// * 'replacement': vectorized 'iter_arg' block argument.
829 BlockArgument replaced, BlockArgument replacement) {
830 registerValueVectorReplacementImpl(replaced, replacement);
834 Value replacement) {
836 "Vector replacement already registered");
837 assert(isa<VectorType>(replacement.getType()) &&
838 "Expected vector type in vector replacement");
839 valueVectorReplacement.map(replaced, replacement);
842 /// Registers the scalar replacement of a scalar value. 'replacement' must be
845 /// This utility is used to register the replacement of block arguments
851 /// * 'replacement': new induction variable in the new vector loop.
853 Value replacement) {
855 "Scalar value replacement already registered");
856 assert(!isa<VectorType>(replacement.getType()) &&
857 "Expected scalar type in scalar replacement");
858 valueScalarReplacement.map(replaced, replacement);
861 /// Registers the scalar replacement of a scalar result returned from a
862 /// reduction loop. 'replacement' must be scalar.
864 /// This utility is used to register the replacement for scalar results of
869 /// * 'replacement': %1 = vector.reduction <add>, %0 : vector<4xf32> into f32
871 Value replaced, Value replacement) {
877 << replacement);
878 loopResultScalarReplacement[replaced] = replacement;
881 /// Returns in 'replacedVals' the scalar replacement for values in 'inputVals'.
966 // Register vector replacement for future uses in the scope.
1135 /// Newly created vector operations are registered in `state` as replacement
1153 // An vector operand that is not in the replacement map should never reach
1157 "Vector op not found in replacement map");
1187 /// registered as replacement of the scalar load. Returns the newly created
1229 // Register replacement for future uses in the scope.
1237 /// registered as replacement of the scalar load. Returns the newly created
1274 // Register replacement for future uses in the scope.
1294 /// created and registered as replacement for the scalar loop. The builder's
1363 // 1) The new vectorized loop is registered as vector replacement of the
1365 // 2) The new iv of the vectorized loop is registered as scalar replacement
1367 // TODO: A vector replacement will also be added in the future when
1620 "Expected vector replacement for loop nest");