/// \endcode
template <typename ForwardIterator, typename UnaryFunctor,
typename NullaryFunctor,
- typename = typename std::enable_if<
+ typename = std::enable_if_t<
!std::is_constructible<StringRef, UnaryFunctor>::value &&
- !std::is_constructible<StringRef, NullaryFunctor>::value>::type>
+ !std::is_constructible<StringRef, NullaryFunctor>::value>>
inline void interleave(ForwardIterator begin, ForwardIterator end,
UnaryFunctor each_fn, NullaryFunctor between_fn) {
if (begin == end)
}
template <typename Container, typename UnaryFunctor, typename NullaryFunctor,
- typename = typename std::enable_if<
+ typename = std::enable_if_t<
!std::is_constructible<StringRef, UnaryFunctor>::value &&
- !std::is_constructible<StringRef, NullaryFunctor>::value>::type>
+ !std::is_constructible<StringRef, NullaryFunctor>::value>>
inline void interleave(const Container &c, UnaryFunctor each_fn,
NullaryFunctor between_fn) {
interleave(c.begin(), c.end(), each_fn, between_fn);
template <typename Underlying> class fallible_iterator {
private:
template <typename T>
- using enable_if_struct_deref_supported = std::enable_if<
+ using enable_if_struct_deref_supported = std::enable_if_t<
!std::is_void<decltype(std::declval<T>().operator->())>::value,
decltype(std::declval<T>().operator->())>;
/// Forward structure dereference to the underlying iterator (if the
/// underlying iterator supports it).
template <typename T = Underlying>
- typename enable_if_struct_deref_supported<T>::type operator->() {
+ enable_if_struct_deref_supported<T> operator->() {
return I.operator->();
}
/// Forward const structure dereference to the underlying iterator (if the
/// underlying iterator supports it).
template <typename T = Underlying>
- typename enable_if_struct_deref_supported<const T>::type operator->() const {
+ enable_if_struct_deref_supported<const T> operator->() const {
return I.operator->();
}
IRBuilderBase &B, Value *Row, Value *Col,
Value *Ptr, Value *Stride, Value *Tile);
template <Intrinsic::ID IntrID>
- typename std::enable_if<IntrID == Intrinsic::x86_tdpbssd_internal ||
- IntrID == Intrinsic::x86_tdpbsud_internal ||
- IntrID == Intrinsic::x86_tdpbusd_internal ||
- IntrID == Intrinsic::x86_tdpbuud_internal ||
- IntrID == Intrinsic::x86_tdpbf16ps_internal,
- Value *>::type
+ std::enable_if_t<IntrID == Intrinsic::x86_tdpbssd_internal ||
+ IntrID == Intrinsic::x86_tdpbsud_internal ||
+ IntrID == Intrinsic::x86_tdpbusd_internal ||
+ IntrID == Intrinsic::x86_tdpbuud_internal ||
+ IntrID == Intrinsic::x86_tdpbf16ps_internal,
+ Value *>
createTileDPLoops(BasicBlock *Start, BasicBlock *End, IRBuilderBase &B,
Value *Row, Value *Col, Value *K, Value *Acc, Value *LHS,
Value *RHS);
template <bool IsTileLoad>
bool lowerTileLoadStore(Instruction *TileLoadStore);
template <Intrinsic::ID IntrID>
- typename std::enable_if<IntrID == Intrinsic::x86_tdpbssd_internal ||
- IntrID == Intrinsic::x86_tdpbsud_internal ||
- IntrID == Intrinsic::x86_tdpbusd_internal ||
- IntrID == Intrinsic::x86_tdpbuud_internal ||
- IntrID == Intrinsic::x86_tdpbf16ps_internal,
- bool>::type
+ std::enable_if_t<IntrID == Intrinsic::x86_tdpbssd_internal ||
+ IntrID == Intrinsic::x86_tdpbsud_internal ||
+ IntrID == Intrinsic::x86_tdpbusd_internal ||
+ IntrID == Intrinsic::x86_tdpbuud_internal ||
+ IntrID == Intrinsic::x86_tdpbf16ps_internal,
+ bool>
lowerTileDP(Instruction *TileDP);
bool lowerTileZero(Instruction *TileZero);
};
}
template <Intrinsic::ID IntrID>
-typename std::enable_if<IntrID == Intrinsic::x86_tdpbssd_internal ||
- IntrID == Intrinsic::x86_tdpbsud_internal ||
- IntrID == Intrinsic::x86_tdpbusd_internal ||
- IntrID == Intrinsic::x86_tdpbuud_internal ||
- IntrID == Intrinsic::x86_tdpbf16ps_internal,
- Value *>::type
+std::enable_if_t<IntrID == Intrinsic::x86_tdpbssd_internal ||
+ IntrID == Intrinsic::x86_tdpbsud_internal ||
+ IntrID == Intrinsic::x86_tdpbusd_internal ||
+ IntrID == Intrinsic::x86_tdpbuud_internal ||
+ IntrID == Intrinsic::x86_tdpbf16ps_internal,
+ Value *>
X86LowerAMXIntrinsics::createTileDPLoops(BasicBlock *Start, BasicBlock *End,
IRBuilderBase &B, Value *Row,
Value *Col, Value *K, Value *Acc,
}
template <Intrinsic::ID IntrID>
-typename std::enable_if<IntrID == Intrinsic::x86_tdpbssd_internal ||
- IntrID == Intrinsic::x86_tdpbsud_internal ||
- IntrID == Intrinsic::x86_tdpbusd_internal ||
- IntrID == Intrinsic::x86_tdpbuud_internal ||
- IntrID == Intrinsic::x86_tdpbf16ps_internal,
- bool>::type
+std::enable_if_t<IntrID == Intrinsic::x86_tdpbssd_internal ||
+ IntrID == Intrinsic::x86_tdpbsud_internal ||
+ IntrID == Intrinsic::x86_tdpbusd_internal ||
+ IntrID == Intrinsic::x86_tdpbuud_internal ||
+ IntrID == Intrinsic::x86_tdpbf16ps_internal,
+ bool>
X86LowerAMXIntrinsics::lowerTileDP(Instruction *TileDP) {
Value *M, *N, *K, *C, *A, *B;
match(TileDP, m_Intrinsic<IntrID>(m_Value(M), m_Value(N), m_Value(K),