@@ -650,50 +650,50 @@ int ARMTTIImpl::getArithmeticInstrCost(
650650 int ISDOpcode = TLI->InstructionOpcodeToISD (Opcode);
651651 std::pair<int , MVT> LT = TLI->getTypeLegalizationCost (DL, Ty);
652652
653- const unsigned FunctionCallDivCost = 20 ;
654- const unsigned ReciprocalDivCost = 10 ;
655- static const CostTblEntry CostTbl[] = {
656- // Division.
657- // These costs are somewhat random. Choose a cost of 20 to indicate that
658- // vectorizing devision (added function call) is going to be very expensive.
659- // Double registers types.
660- { ISD::SDIV, MVT::v1i64, 1 * FunctionCallDivCost},
661- { ISD::UDIV, MVT::v1i64, 1 * FunctionCallDivCost},
662- { ISD::SREM, MVT::v1i64, 1 * FunctionCallDivCost},
663- { ISD::UREM, MVT::v1i64, 1 * FunctionCallDivCost},
664- { ISD::SDIV, MVT::v2i32, 2 * FunctionCallDivCost},
665- { ISD::UDIV, MVT::v2i32, 2 * FunctionCallDivCost},
666- { ISD::SREM, MVT::v2i32, 2 * FunctionCallDivCost},
667- { ISD::UREM, MVT::v2i32, 2 * FunctionCallDivCost},
668- { ISD::SDIV, MVT::v4i16, ReciprocalDivCost},
669- { ISD::UDIV, MVT::v4i16, ReciprocalDivCost},
670- { ISD::SREM, MVT::v4i16, 4 * FunctionCallDivCost},
671- { ISD::UREM, MVT::v4i16, 4 * FunctionCallDivCost},
672- { ISD::SDIV, MVT::v8i8, ReciprocalDivCost},
673- { ISD::UDIV, MVT::v8i8, ReciprocalDivCost},
674- { ISD::SREM, MVT::v8i8, 8 * FunctionCallDivCost},
675- { ISD::UREM, MVT::v8i8, 8 * FunctionCallDivCost},
676- // Quad register types.
677- { ISD::SDIV, MVT::v2i64, 2 * FunctionCallDivCost},
678- { ISD::UDIV, MVT::v2i64, 2 * FunctionCallDivCost},
679- { ISD::SREM, MVT::v2i64, 2 * FunctionCallDivCost},
680- { ISD::UREM, MVT::v2i64, 2 * FunctionCallDivCost},
681- { ISD::SDIV, MVT::v4i32, 4 * FunctionCallDivCost},
682- { ISD::UDIV, MVT::v4i32, 4 * FunctionCallDivCost},
683- { ISD::SREM, MVT::v4i32, 4 * FunctionCallDivCost},
684- { ISD::UREM, MVT::v4i32, 4 * FunctionCallDivCost},
685- { ISD::SDIV, MVT::v8i16, 8 * FunctionCallDivCost},
686- { ISD::UDIV, MVT::v8i16, 8 * FunctionCallDivCost},
687- { ISD::SREM, MVT::v8i16, 8 * FunctionCallDivCost},
688- { ISD::UREM, MVT::v8i16, 8 * FunctionCallDivCost},
689- { ISD::SDIV, MVT::v16i8, 16 * FunctionCallDivCost},
690- { ISD::UDIV, MVT::v16i8, 16 * FunctionCallDivCost},
691- { ISD::SREM, MVT::v16i8, 16 * FunctionCallDivCost},
692- { ISD::UREM, MVT::v16i8, 16 * FunctionCallDivCost},
693- // Multiplication.
694- };
695-
696653 if (ST->hasNEON ()) {
654+ const unsigned FunctionCallDivCost = 20 ;
655+ const unsigned ReciprocalDivCost = 10 ;
656+ static const CostTblEntry CostTbl[] = {
657+ // Division.
658+ // These costs are somewhat random. Choose a cost of 20 to indicate that
659+ // vectorizing devision (added function call) is going to be very expensive.
660+ // Double registers types.
661+ { ISD::SDIV, MVT::v1i64, 1 * FunctionCallDivCost},
662+ { ISD::UDIV, MVT::v1i64, 1 * FunctionCallDivCost},
663+ { ISD::SREM, MVT::v1i64, 1 * FunctionCallDivCost},
664+ { ISD::UREM, MVT::v1i64, 1 * FunctionCallDivCost},
665+ { ISD::SDIV, MVT::v2i32, 2 * FunctionCallDivCost},
666+ { ISD::UDIV, MVT::v2i32, 2 * FunctionCallDivCost},
667+ { ISD::SREM, MVT::v2i32, 2 * FunctionCallDivCost},
668+ { ISD::UREM, MVT::v2i32, 2 * FunctionCallDivCost},
669+ { ISD::SDIV, MVT::v4i16, ReciprocalDivCost},
670+ { ISD::UDIV, MVT::v4i16, ReciprocalDivCost},
671+ { ISD::SREM, MVT::v4i16, 4 * FunctionCallDivCost},
672+ { ISD::UREM, MVT::v4i16, 4 * FunctionCallDivCost},
673+ { ISD::SDIV, MVT::v8i8, ReciprocalDivCost},
674+ { ISD::UDIV, MVT::v8i8, ReciprocalDivCost},
675+ { ISD::SREM, MVT::v8i8, 8 * FunctionCallDivCost},
676+ { ISD::UREM, MVT::v8i8, 8 * FunctionCallDivCost},
677+ // Quad register types.
678+ { ISD::SDIV, MVT::v2i64, 2 * FunctionCallDivCost},
679+ { ISD::UDIV, MVT::v2i64, 2 * FunctionCallDivCost},
680+ { ISD::SREM, MVT::v2i64, 2 * FunctionCallDivCost},
681+ { ISD::UREM, MVT::v2i64, 2 * FunctionCallDivCost},
682+ { ISD::SDIV, MVT::v4i32, 4 * FunctionCallDivCost},
683+ { ISD::UDIV, MVT::v4i32, 4 * FunctionCallDivCost},
684+ { ISD::SREM, MVT::v4i32, 4 * FunctionCallDivCost},
685+ { ISD::UREM, MVT::v4i32, 4 * FunctionCallDivCost},
686+ { ISD::SDIV, MVT::v8i16, 8 * FunctionCallDivCost},
687+ { ISD::UDIV, MVT::v8i16, 8 * FunctionCallDivCost},
688+ { ISD::SREM, MVT::v8i16, 8 * FunctionCallDivCost},
689+ { ISD::UREM, MVT::v8i16, 8 * FunctionCallDivCost},
690+ { ISD::SDIV, MVT::v16i8, 16 * FunctionCallDivCost},
691+ { ISD::UDIV, MVT::v16i8, 16 * FunctionCallDivCost},
692+ { ISD::SREM, MVT::v16i8, 16 * FunctionCallDivCost},
693+ { ISD::UREM, MVT::v16i8, 16 * FunctionCallDivCost},
694+ // Multiplication.
695+ };
696+
697697 if (const auto *Entry = CostTableLookup (CostTbl, ISDOpcode, LT.second ))
698698 return LT.first * Entry->Cost ;
699699
0 commit comments