forked from OSchip/llvm-project
[Aarch64] Add cost for missing extensions.
This patch adds a cost estimate for some missing sign and zero extensions. The costs were determined by counting the number of shift instructions generated without context for each new extension. Differential Revision: http://reviews.llvm.org/D14730 llvm-svn: 253482
This commit is contained in:
parent
8e7f00b0eb
commit
343af07aa9
|
@ -188,28 +188,29 @@ int AArch64TTIImpl::getCastInstrCost(unsigned Opcode, Type *Dst, Type *Src) {
|
|||
|
||||
static const TypeConversionCostTblEntry
|
||||
ConversionTbl[] = {
|
||||
{ ISD::SIGN_EXTEND, MVT::v4i32, MVT::v4i16, 0 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v4i32, MVT::v4i16, 0 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v2i64, MVT::v2i32, 1 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v2i64, MVT::v2i32, 1 },
|
||||
{ ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 0 },
|
||||
{ ISD::TRUNCATE, MVT::v4i16, MVT::v4i32, 1 },
|
||||
{ ISD::TRUNCATE, MVT::v4i16, MVT::v4i32, 1 },
|
||||
{ ISD::TRUNCATE, MVT::v4i32, MVT::v4i64, 0 },
|
||||
{ ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 3 },
|
||||
{ ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 6 },
|
||||
|
||||
// The number of shll instructions for the extension.
|
||||
{ ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i16, 3 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i16, 3 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i8, 3 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i8, 3 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i8, 7 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i8, 7 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i16, 6 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i16, 6 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i16, 3 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i16, 3 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v4i64, MVT::v4i32, 2 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v4i64, MVT::v4i32, 2 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i8, 3 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i8, 3 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v8i32, MVT::v8i16, 2 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v8i32, MVT::v8i16, 2 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i8, 7 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i8, 7 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v8i64, MVT::v8i16, 6 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v8i64, MVT::v8i16, 6 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v16i16, MVT::v16i8, 2 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v16i16, MVT::v16i8, 2 },
|
||||
{ ISD::SIGN_EXTEND, MVT::v16i32, MVT::v16i8, 6 },
|
||||
{ ISD::ZERO_EXTEND, MVT::v16i32, MVT::v16i8, 6 },
|
||||
|
||||
{ ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 6 },
|
||||
{ ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 3 },
|
||||
|
||||
// LowerVectorINT_TO_FP:
|
||||
{ ISD::SINT_TO_FP, MVT::v2f32, MVT::v2i32, 1 },
|
||||
{ ISD::SINT_TO_FP, MVT::v4f32, MVT::v4i32, 1 },
|
||||
|
|
Loading…
Reference in New Issue