In order to better account for the cost of constant materialization in phis, specifically in the SLP vectorizer, we would like to start providing targets information about their operands via OperandValueInfo.
This patch separates out phi instructions from getCFInstrCost so we can pass the type as well as information about the incoming values, i.e. if they are constant or not.
std::nullopt instead of {}