From 86da3d8d7ca1ac4139073ca40cdca55f8eb6947d Mon Sep 17 00:00:00 2001 From: Ahmed Bougacha Date: Sat, 22 Aug 2015 01:30:13 +0000 Subject: [PATCH] [ARM NEON] Remove special-case for f16 vcvt handling. NFCI. We can use the 'H' typespec modifier to use 128-bit vectors directly in the only two users of this special-case: the vcvt f16 intrinsics. This also lets us use more meaningful prototype modifiers. llvm-svn: 245778 --- clang/include/clang/Basic/arm_neon.td | 6 +++--- clang/utils/TableGen/NeonEmitter.cpp | 4 ---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/clang/include/clang/Basic/arm_neon.td b/clang/include/clang/Basic/arm_neon.td index 6e29cb21dc55..d088da4dfb26 100644 --- a/clang/include/clang/Basic/arm_neon.td +++ b/clang/include/clang/Basic/arm_neon.td @@ -688,8 +688,8 @@ def VGET_LOW : NoTestOpInst<"vget_low", "dk", "csilhfUcUsUiUlPcPs", OP_LO>; //////////////////////////////////////////////////////////////////////////////// // E.3.22 Converting vectors -def VCVT_F16_F32 : SInst<"vcvt_f16_f32", "hk", "f">; -def VCVT_F32_F16 : SInst<"vcvt_f32_f16", "fd", "h">; +def VCVT_F16_F32 : SInst<"vcvt_f16_f32", "md", "Hf">; +def VCVT_F32_F16 : SInst<"vcvt_f32_f16", "wd", "h">; def VCVT_S32 : SInst<"vcvt_s32", "xd", "fQf">; def VCVT_U32 : SInst<"vcvt_u32", "ud", "fQf">; @@ -956,7 +956,7 @@ def VCVT_S64 : SInst<"vcvt_s64", "xd", "dQd">; def VCVT_U64 : SInst<"vcvt_u64", "ud", "dQd">; def VCVT_F64 : SInst<"vcvt_f64", "Fd", "lUlQlQUl">; -def VCVT_HIGH_F16_f32 : SOpInst<"vcvt_high_f16", "qhj", "f", OP_VCVT_NA_HI_F16>; +def VCVT_HIGH_F16_F32 : SOpInst<"vcvt_high_f16", "hmj", "Hf", OP_VCVT_NA_HI_F16>; def VCVT_HIGH_F32_F16 : SOpInst<"vcvt_high_f32", "wk", "h", OP_VCVT_EX_HI_F32>; def VCVT_HIGH_F32_F64 : SOpInst<"vcvt_high_f32", "qfj", "d", OP_VCVT_NA_HI_F32>; def VCVT_HIGH_F64_F32 : SOpInst<"vcvt_high_f64", "wj", "f", OP_VCVT_EX_HI_F64>; diff --git a/clang/utils/TableGen/NeonEmitter.cpp b/clang/utils/TableGen/NeonEmitter.cpp index c77e91e02f99..6e7bc9057fd7 100644 --- a/clang/utils/TableGen/NeonEmitter.cpp +++ b/clang/utils/TableGen/NeonEmitter.cpp @@ -837,10 +837,6 @@ void Type::applyModifier(char Mod) { Float = true; break; case 'f': - // Special case - if we're half-precision, a floating - // point argument needs to be 128-bits (double size). - if (isHalf()) - Bitwidth = 128; Float = true; ElementBitwidth = 32; break;