Implement correct cost for SVE bitcasts
We have some bitcasts which we know will be simplified,
so their cost is zero.
Reviewed By: david-arm, sdesmalen
Differential Revision: https://reviews.llvm.org/D118019
diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
index 2df5f09..a4d666a 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
@@ -1590,6 +1590,15 @@
{ ISD::FP_EXTEND, MVT::nxv4f64, MVT::nxv4f32, 2},
{ ISD::FP_EXTEND, MVT::nxv8f64, MVT::nxv8f32, 6},
+ // Bitcasts from float to integer
+ { ISD::BITCAST, MVT::nxv2f16, MVT::nxv2i16, 0 },
+ { ISD::BITCAST, MVT::nxv4f16, MVT::nxv4i16, 0 },
+ { ISD::BITCAST, MVT::nxv2f32, MVT::nxv2i32, 0 },
+
+ // Bitcasts from integer to float
+ { ISD::BITCAST, MVT::nxv2i16, MVT::nxv2f16, 0 },
+ { ISD::BITCAST, MVT::nxv4i16, MVT::nxv4f16, 0 },
+ { ISD::BITCAST, MVT::nxv2i32, MVT::nxv2f32, 0 },
};
if (const auto *Entry = ConvertCostTableLookup(ConversionTbl, ISD,