]> granicus.if.org Git - clang/commitdiff
[ARM NEON] Remove special-case for f16 vcvt handling. NFCI.
authorAhmed Bougacha <ahmed.bougacha@gmail.com>
Sat, 22 Aug 2015 01:30:13 +0000 (01:30 +0000)
committerAhmed Bougacha <ahmed.bougacha@gmail.com>
Sat, 22 Aug 2015 01:30:13 +0000 (01:30 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@245778 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/arm_neon.td
utils/TableGen/NeonEmitter.cpp

index 6e29cb21dc55fc10912ab96773ad66068ac36a6d..d088da4dfb26e7bfd3d091d565360a6a24fac6b7 100644 (file)
@@ -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>;
index c77e91e02f998db08b190ec8ebb6d57b59c9bb64..6e7bc9057fd743c01ddc90b1461996edb237e7b8 100644 (file)
@@ -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;