@@ -4183,37 +4183,37 @@ X86TTIImpl::getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
41834183 { ISD::FSQRT, MVT::v4f32, { 56 , 56 , 1 , 2 } }, // Pentium III from http://www.agner.org/
41844184 };
41854185 static const CostKindTblEntry BMI64CostTbl[] = { // 64-bit targets
4186- { ISD::CTTZ, MVT::i64 , { 1 } },
4186+ { ISD::CTTZ, MVT::i64 , { 1 , 1 , 1 , 1 } },
41874187 };
41884188 static const CostKindTblEntry BMI32CostTbl[] = { // 32 or 64-bit targets
4189- { ISD::CTTZ, MVT::i32 , { 1 } },
4190- { ISD::CTTZ, MVT::i16 , { 1 } },
4191- { ISD::CTTZ, MVT::i8 , { 1 } },
4189+ { ISD::CTTZ, MVT::i32 , { 1 , 1 , 1 , 1 } },
4190+ { ISD::CTTZ, MVT::i16 , { 2 , 1 , 1 , 1 } },
4191+ { ISD::CTTZ, MVT::i8 , { 2 , 1 , 1 , 1 } },
41924192 };
41934193 static const CostKindTblEntry LZCNT64CostTbl[] = { // 64-bit targets
4194- { ISD::CTLZ, MVT::i64 , { 1 } },
4194+ { ISD::CTLZ, MVT::i64 , { 1 , 1 , 1 , 1 } },
41954195 };
41964196 static const CostKindTblEntry LZCNT32CostTbl[] = { // 32 or 64-bit targets
4197- { ISD::CTLZ, MVT::i32 , { 1 } },
4198- { ISD::CTLZ, MVT::i16 , { 2 } },
4199- { ISD::CTLZ, MVT::i8 , { 2 } },
4197+ { ISD::CTLZ, MVT::i32 , { 1 , 1 , 1 , 1 } },
4198+ { ISD::CTLZ, MVT::i16 , { 2 , 1 , 1 , 1 } },
4199+ { ISD::CTLZ, MVT::i8 , { 2 , 1 , 1 , 1 } },
42004200 };
42014201 static const CostKindTblEntry POPCNT64CostTbl[] = { // 64-bit targets
4202- { ISD::CTPOP, MVT::i64 , { 1 , 1 , 1 , 1 } }, // popcnt
4202+ { ISD::CTPOP, MVT::i64 , { 1 , 1 , 1 , 1 } }, // popcnt
42034203 };
42044204 static const CostKindTblEntry POPCNT32CostTbl[] = { // 32 or 64-bit targets
4205- { ISD::CTPOP, MVT::i32 , { 1 , 1 , 1 , 1 } }, // popcnt
4206- { ISD::CTPOP, MVT::i16 , { 1 , 1 , 2 , 2 } }, // popcnt(zext())
4207- { ISD::CTPOP, MVT::i8 , { 1 , 1 , 2 , 2 } }, // popcnt(zext())
4205+ { ISD::CTPOP, MVT::i32 , { 1 , 1 , 1 , 1 } }, // popcnt
4206+ { ISD::CTPOP, MVT::i16 , { 1 , 1 , 2 , 2 } }, // popcnt(zext())
4207+ { ISD::CTPOP, MVT::i8 , { 1 , 1 , 2 , 2 } }, // popcnt(zext())
42084208 };
42094209 static const CostKindTblEntry X64CostTbl[] = { // 64-bit targets
42104210 { ISD::ABS, MVT::i64 , { 1 , 2 , 3 , 3 } }, // SUB+CMOV
42114211 { ISD::BITREVERSE, MVT::i64 , { 10 , 12 , 20 , 22 } },
42124212 { ISD::BSWAP, MVT::i64 , { 1 , 2 , 1 , 2 } },
4213- { ISD::CTLZ, MVT::i64 , { 4 } }, // BSR+XOR or BSR+XOR+CMOV
4214- { ISD::CTLZ_ZERO_UNDEF, MVT::i64 ,{ 1 , 1 , 1 , 1 } }, // BSR+XOR
4215- { ISD::CTTZ, MVT::i64 , { 3 } }, // TEST+BSF+CMOV/BRANCH
4216- { ISD::CTTZ_ZERO_UNDEF, MVT::i64 ,{ 1 , 1 , 1 , 1 } }, // BSR
4213+ { ISD::CTLZ, MVT::i64 , { 3 , 2 , 6 , 6 } }, // BSR+XOR or BSR+XOR+CMOV
4214+ { ISD::CTLZ_ZERO_UNDEF, MVT::i64 ,{ 1 , 2 , 2 , 2 } }, // BSR+XOR
4215+ { ISD::CTTZ, MVT::i64 , { 2 , 2 , 5 , 5 } }, // TEST+BSF+CMOV/BRANCH
4216+ { ISD::CTTZ_ZERO_UNDEF, MVT::i64 ,{ 1 , 2 , 1 , 2 } }, // BSF
42174217 { ISD::CTPOP, MVT::i64 , { 10 , 6 , 19 , 19 } },
42184218 { ISD::ROTL, MVT::i64 , { 2 , 3 , 1 , 3 } },
42194219 { ISD::ROTR, MVT::i64 , { 2 , 3 , 1 , 3 } },
@@ -4241,18 +4241,18 @@ X86TTIImpl::getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
42414241 { ISD::BITREVERSE, MVT::i8 , { 7 , 9 , 13 , 14 } },
42424242 { ISD::BSWAP, MVT::i32 , { 1 , 1 , 1 , 1 } },
42434243 { ISD::BSWAP, MVT::i16 , { 1 , 2 , 1 , 2 } }, // ROL
4244- { ISD::CTLZ, MVT::i32 , { 4 } }, // BSR+XOR or BSR+XOR+CMOV
4245- { ISD::CTLZ, MVT::i16 , { 4 } }, // BSR+XOR or BSR+XOR+CMOV
4246- { ISD::CTLZ, MVT::i8 , { 4 } }, // BSR+XOR or BSR+XOR+CMOV
4247- { ISD::CTLZ_ZERO_UNDEF, MVT::i32 ,{ 1 , 1 , 1 , 1 } }, // BSR+XOR
4248- { ISD::CTLZ_ZERO_UNDEF, MVT::i16 ,{ 2 , 2 , 3 , 3 } }, // BSR+XOR
4244+ { ISD::CTLZ, MVT::i32 , { 3 , 2 , 6 , 6 } }, // BSR+XOR or BSR+XOR+CMOV
4245+ { ISD::CTLZ, MVT::i16 , { 3 , 2 , 6 , 6 } }, // BSR+XOR or BSR+XOR+CMOV
4246+ { ISD::CTLZ, MVT::i8 , { 3 , 2 , 7 , 7 } }, // BSR+XOR or BSR+XOR+CMOV
4247+ { ISD::CTLZ_ZERO_UNDEF, MVT::i32 ,{ 1 , 2 , 2 , 2 } }, // BSR+XOR
4248+ { ISD::CTLZ_ZERO_UNDEF, MVT::i16 ,{ 2 , 2 , 2 , 2 } }, // BSR+XOR
42494249 { ISD::CTLZ_ZERO_UNDEF, MVT::i8 , { 2 , 2 , 3 , 3 } }, // BSR+XOR
4250- { ISD::CTTZ, MVT::i32 , { 3 } }, // TEST+BSF+CMOV/BRANCH
4251- { ISD::CTTZ, MVT::i16 , { 3 } }, // TEST+BSF+CMOV/BRANCH
4252- { ISD::CTTZ, MVT::i8 , { 3 } }, // TEST+BSF+CMOV/BRANCH
4253- { ISD::CTTZ_ZERO_UNDEF, MVT::i32 ,{ 1 , 1 , 1 , 1 } }, // BSF
4254- { ISD::CTTZ_ZERO_UNDEF, MVT::i16 ,{ 2 , 2 , 1 , 1 } }, // BSF
4255- { ISD::CTTZ_ZERO_UNDEF, MVT::i8 , { 2 , 2 , 1 , 1 } }, // BSF
4250+ { ISD::CTTZ, MVT::i32 , { 2 , 2 , 3 , 3 } }, // TEST+BSF+CMOV/BRANCH
4251+ { ISD::CTTZ, MVT::i16 , { 2 , 2 , 2 , 3 } }, // TEST+BSF+CMOV/BRANCH
4252+ { ISD::CTTZ, MVT::i8 , { 2 , 2 , 2 , 3 } }, // TEST+BSF+CMOV/BRANCH
4253+ { ISD::CTTZ_ZERO_UNDEF, MVT::i32 ,{ 1 , 2 , 1 , 2 } }, // BSF
4254+ { ISD::CTTZ_ZERO_UNDEF, MVT::i16 ,{ 2 , 2 , 1 , 2 } }, // BSF
4255+ { ISD::CTTZ_ZERO_UNDEF, MVT::i8 , { 2 , 2 , 1 , 2 } }, // BSF
42564256 { ISD::CTPOP, MVT::i32 , { 8 , 7 , 15 , 15 } },
42574257 { ISD::CTPOP, MVT::i16 , { 9 , 8 , 17 , 17 } },
42584258 { ISD::CTPOP, MVT::i8 , { 7 , 6 , 6 , 6 } },
0 commit comments