[cfe-commits] r105684 - in /cfe/trunk: include/clang/Basic/BuiltinsARM.def lib/CodeGen/CGBuiltin.cpp

Nate Begeman natebegeman at mac.com
Tue Jun 8 22:30:26 PDT 2010


Author: sampo
Date: Wed Jun  9 00:30:26 2010
New Revision: 105684

URL: http://llvm.org/viewvc/llvm-project?rev=105684&view=rev
Log:
More accurate BuiltinsARM.def 
vget_lane support

Modified:
    cfe/trunk/include/clang/Basic/BuiltinsARM.def
    cfe/trunk/lib/CodeGen/CGBuiltin.cpp

Modified: cfe/trunk/include/clang/Basic/BuiltinsARM.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsARM.def?rev=105684&r1=105683&r2=105684&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/BuiltinsARM.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsARM.def Wed Jun  9 00:30:26 2010
@@ -34,14 +34,14 @@
 BUILTIN(__builtin_neon_vaddw_v, "V16cV16cV8ci", "n")
 BUILTIN(__builtin_neon_vbsl_v, "V8cV8cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vbslq_v, "V16cV16cV16cV16ci", "n")
-BUILTIN(__builtin_neon_vcage_v, "V2iV8cV8ci", "n")
-BUILTIN(__builtin_neon_vcageq_v, "V4iV16cV16ci", "n")
-BUILTIN(__builtin_neon_vcagt_v, "V2iV8cV8ci", "n")
-BUILTIN(__builtin_neon_vcagtq_v, "V4iV16cV16ci", "n")
-BUILTIN(__builtin_neon_vcale_v, "V2iV8cV8ci", "n")
-BUILTIN(__builtin_neon_vcaleq_v, "V4iV16cV16ci", "n")
-BUILTIN(__builtin_neon_vcalt_v, "V2iV8cV8ci", "n")
-BUILTIN(__builtin_neon_vcaltq_v, "V4iV16cV16ci", "n")
+BUILTIN(__builtin_neon_vcage_v, "V8cV8cV8ci", "n")
+BUILTIN(__builtin_neon_vcageq_v, "V16cV16cV16ci", "n")
+BUILTIN(__builtin_neon_vcagt_v, "V8cV8cV8ci", "n")
+BUILTIN(__builtin_neon_vcagtq_v, "V16cV16cV16ci", "n")
+BUILTIN(__builtin_neon_vcale_v, "V8cV8cV8ci", "n")
+BUILTIN(__builtin_neon_vcaleq_v, "V16cV16cV16ci", "n")
+BUILTIN(__builtin_neon_vcalt_v, "V8cV8cV8ci", "n")
+BUILTIN(__builtin_neon_vcaltq_v, "V16cV16cV16ci", "n")
 BUILTIN(__builtin_neon_vcls_v, "V8cV8ci", "n")
 BUILTIN(__builtin_neon_vclsq_v, "V16cV16ci", "n")
 BUILTIN(__builtin_neon_vclz_v, "V8cV8ci", "n")
@@ -54,26 +54,26 @@
 BUILTIN(__builtin_neon_vcvt_f32_f16, "V16cV8ci", "n")
 BUILTIN(__builtin_neon_vcvt_n_f32_v, "V2fV8cii", "n")
 BUILTIN(__builtin_neon_vcvtq_n_f32_v, "V4fV16cii", "n")
-BUILTIN(__builtin_neon_vcvt_n_s32_v, "V2iV8cii", "n")
-BUILTIN(__builtin_neon_vcvtq_n_s32_v, "V4iV16cii", "n")
-BUILTIN(__builtin_neon_vcvt_n_u32_v, "V2iV8cii", "n")
-BUILTIN(__builtin_neon_vcvtq_n_u32_v, "V4iV16cii", "n")
-BUILTIN(__builtin_neon_vcvt_s32_v, "V2iV8ci", "n")
-BUILTIN(__builtin_neon_vcvtq_s32_v, "V4iV16ci", "n")
-BUILTIN(__builtin_neon_vcvt_u32_v, "V2iV8ci", "n")
-BUILTIN(__builtin_neon_vcvtq_u32_v, "V4iV16ci", "n")
+BUILTIN(__builtin_neon_vcvt_n_s32_v, "V8cV8cii", "n")
+BUILTIN(__builtin_neon_vcvtq_n_s32_v, "V16cV16cii", "n")
+BUILTIN(__builtin_neon_vcvt_n_u32_v, "V8cV8cii", "n")
+BUILTIN(__builtin_neon_vcvtq_n_u32_v, "V16cV16cii", "n")
+BUILTIN(__builtin_neon_vcvt_s32_v, "V8cV8ci", "n")
+BUILTIN(__builtin_neon_vcvtq_s32_v, "V16cV16ci", "n")
+BUILTIN(__builtin_neon_vcvt_u32_v, "V8cV8ci", "n")
+BUILTIN(__builtin_neon_vcvtq_u32_v, "V16cV16ci", "n")
 BUILTIN(__builtin_neon_vext_v, "V8cV8cV8cii", "n")
 BUILTIN(__builtin_neon_vextq_v, "V16cV16cV16cii", "n")
 BUILTIN(__builtin_neon_vget_lane_i8, "UcV8ci", "n")
-BUILTIN(__builtin_neon_vget_lane_i16, "UsV8ci", "n")
-BUILTIN(__builtin_neon_vget_lane_i32, "UiV8ci", "n")
-BUILTIN(__builtin_neon_vget_lane_f32, "fV8ci", "n")
+BUILTIN(__builtin_neon_vget_lane_i16, "UsV4si", "n")
+BUILTIN(__builtin_neon_vget_lane_i32, "UiV2ii", "n")
+BUILTIN(__builtin_neon_vget_lane_f32, "fV2fi", "n")
 BUILTIN(__builtin_neon_vgetq_lane_i8, "UcV16ci", "n")
-BUILTIN(__builtin_neon_vgetq_lane_i16, "UsV16ci", "n")
-BUILTIN(__builtin_neon_vgetq_lane_i32, "UiV16ci", "n")
-BUILTIN(__builtin_neon_vgetq_lane_f32, "fV16ci", "n")
-BUILTIN(__builtin_neon_vget_lane_i64, "ULLiV8ci", "n")
-BUILTIN(__builtin_neon_vgetq_lane_i64, "ULLiV16ci", "n")
+BUILTIN(__builtin_neon_vgetq_lane_i16, "UsV8si", "n")
+BUILTIN(__builtin_neon_vgetq_lane_i32, "UiV4ii", "n")
+BUILTIN(__builtin_neon_vgetq_lane_f32, "fV4fi", "n")
+BUILTIN(__builtin_neon_vget_lane_i64, "ULLiV1LLii", "n")
+BUILTIN(__builtin_neon_vgetq_lane_i64, "ULLiV2LLii", "n")
 BUILTIN(__builtin_neon_vhadd_v, "V8cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vhaddq_v, "V16cV16cV16ci", "n")
 BUILTIN(__builtin_neon_vhsub_v, "V8cV8cV8ci", "n")
@@ -111,12 +111,12 @@
 BUILTIN(__builtin_neon_vmlal_n_u32, "V16cV16cV8cUi", "n")
 BUILTIN(__builtin_neon_vmla_lane_v, "V8cV8cV8cV8cii", "n")
 BUILTIN(__builtin_neon_vmlaq_lane_v, "V16cV16cV16cV16cii", "n")
-BUILTIN(__builtin_neon_vmla_n_i16, "V8cV8cV8cUs", "n")
-BUILTIN(__builtin_neon_vmla_n_i32, "V8cV8cV8cUi", "n")
-BUILTIN(__builtin_neon_vmla_n_f32, "V8cV8cV8cf", "n")
-BUILTIN(__builtin_neon_vmlaq_n_i16, "V16cV16cV16cUs", "n")
-BUILTIN(__builtin_neon_vmlaq_n_i32, "V16cV16cV16cUi", "n")
-BUILTIN(__builtin_neon_vmlaq_n_f32, "V16cV16cV16cf", "n")
+BUILTIN(__builtin_neon_vmla_n_i16, "V4sV4sV4sUs", "n")
+BUILTIN(__builtin_neon_vmla_n_i32, "V2iV2iV2iUi", "n")
+BUILTIN(__builtin_neon_vmla_n_f32, "V2fV2fV2ff", "n")
+BUILTIN(__builtin_neon_vmlaq_n_i16, "V8sV8sV8sUs", "n")
+BUILTIN(__builtin_neon_vmlaq_n_i32, "V4iV4iV4iUi", "n")
+BUILTIN(__builtin_neon_vmlaq_n_f32, "V4fV4fV4ff", "n")
 BUILTIN(__builtin_neon_vmlsl_v, "V16cV16cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vmlsl_lane_v, "V16cV16cV8cV8cii", "n")
 BUILTIN(__builtin_neon_vmlsl_n_s16, "V16cV16cV8cs", "n")
@@ -125,36 +125,36 @@
 BUILTIN(__builtin_neon_vmlsl_n_u32, "V16cV16cV8cUi", "n")
 BUILTIN(__builtin_neon_vmls_lane_v, "V8cV8cV8cV8cii", "n")
 BUILTIN(__builtin_neon_vmlsq_lane_v, "V16cV16cV16cV16cii", "n")
-BUILTIN(__builtin_neon_vmls_n_i16, "V8cV8cV8cUs", "n")
-BUILTIN(__builtin_neon_vmls_n_i32, "V8cV8cV8cUi", "n")
-BUILTIN(__builtin_neon_vmls_n_f32, "V8cV8cV8cf", "n")
-BUILTIN(__builtin_neon_vmlsq_n_i16, "V16cV16cV16cUs", "n")
-BUILTIN(__builtin_neon_vmlsq_n_i32, "V16cV16cV16cUi", "n")
-BUILTIN(__builtin_neon_vmlsq_n_f32, "V16cV16cV16cf", "n")
+BUILTIN(__builtin_neon_vmls_n_i16, "V4sV4sV4sUs", "n")
+BUILTIN(__builtin_neon_vmls_n_i32, "V2iV2iV2iUi", "n")
+BUILTIN(__builtin_neon_vmls_n_f32, "V2fV2fV2ff", "n")
+BUILTIN(__builtin_neon_vmlsq_n_i16, "V8sV8sV8sUs", "n")
+BUILTIN(__builtin_neon_vmlsq_n_i32, "V4iV4iV4iUi", "n")
+BUILTIN(__builtin_neon_vmlsq_n_f32, "V4fV4fV4ff", "n")
 BUILTIN(__builtin_neon_vmovl_v, "V16cV8ci", "n")
 BUILTIN(__builtin_neon_vmovn_v, "V8cV16ci", "n")
 BUILTIN(__builtin_neon_vmov_n_i8, "V8cUc", "n")
-BUILTIN(__builtin_neon_vmov_n_i16, "V8cUs", "n")
-BUILTIN(__builtin_neon_vmov_n_i32, "V8cUi", "n")
-BUILTIN(__builtin_neon_vmov_n_f32, "V8cf", "n")
+BUILTIN(__builtin_neon_vmov_n_i16, "V4sUs", "n")
+BUILTIN(__builtin_neon_vmov_n_i32, "V2iUi", "n")
+BUILTIN(__builtin_neon_vmov_n_f32, "V2ff", "n")
 BUILTIN(__builtin_neon_vmovq_n_i8, "V16cUc", "n")
-BUILTIN(__builtin_neon_vmovq_n_i16, "V16cUs", "n")
-BUILTIN(__builtin_neon_vmovq_n_i32, "V16cUi", "n")
-BUILTIN(__builtin_neon_vmovq_n_f32, "V16cf", "n")
-BUILTIN(__builtin_neon_vmov_n_i64, "V8cULLi", "n")
-BUILTIN(__builtin_neon_vmovq_n_i64, "V16cULLi", "n")
+BUILTIN(__builtin_neon_vmovq_n_i16, "V8sUs", "n")
+BUILTIN(__builtin_neon_vmovq_n_i32, "V4iUi", "n")
+BUILTIN(__builtin_neon_vmovq_n_f32, "V4ff", "n")
+BUILTIN(__builtin_neon_vmov_n_i64, "V1LLiULLi", "n")
+BUILTIN(__builtin_neon_vmovq_n_i64, "V2LLiULLi", "n")
 BUILTIN(__builtin_neon_vmull_v, "V16cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vmull_lane_v, "V16cV8cV8cii", "n")
 BUILTIN(__builtin_neon_vmull_n_s16, "V16cV8cs", "n")
 BUILTIN(__builtin_neon_vmull_n_s32, "V16cV8ci", "n")
 BUILTIN(__builtin_neon_vmull_n_u16, "V16cV8cUs", "n")
 BUILTIN(__builtin_neon_vmull_n_u32, "V16cV8cUi", "n")
-BUILTIN(__builtin_neon_vmul_n_i16, "V8cV8cUs", "n")
-BUILTIN(__builtin_neon_vmul_n_i32, "V8cV8cUi", "n")
-BUILTIN(__builtin_neon_vmul_n_f32, "V8cV8cf", "n")
-BUILTIN(__builtin_neon_vmulq_n_i16, "V16cV16cUs", "n")
-BUILTIN(__builtin_neon_vmulq_n_i32, "V16cV16cUi", "n")
-BUILTIN(__builtin_neon_vmulq_n_f32, "V16cV16cf", "n")
+BUILTIN(__builtin_neon_vmul_n_i16, "V4sV4sUs", "n")
+BUILTIN(__builtin_neon_vmul_n_i32, "V2iV2iUi", "n")
+BUILTIN(__builtin_neon_vmul_n_f32, "V2fV2ff", "n")
+BUILTIN(__builtin_neon_vmulq_n_i16, "V8sV8sUs", "n")
+BUILTIN(__builtin_neon_vmulq_n_i32, "V4iV4iUi", "n")
+BUILTIN(__builtin_neon_vmulq_n_f32, "V4fV4ff", "n")
 BUILTIN(__builtin_neon_vpadal_v, "V8cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vpadalq_v, "V16cV16cV16ci", "n")
 BUILTIN(__builtin_neon_vpadd_v, "V8cV8cV8ci", "n")
@@ -201,15 +201,15 @@
 BUILTIN(__builtin_neon_vqrshl_v, "V8cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vqrshlq_v, "V16cV16cV16ci", "n")
 BUILTIN(__builtin_neon_vqrshrn_n_v, "V8cV16cii", "n")
-BUILTIN(__builtin_neon_vqrshrun_n_v, "V2iV16cii", "n")
+BUILTIN(__builtin_neon_vqrshrun_n_v, "V8cV16cii", "n")
 BUILTIN(__builtin_neon_vqshl_v, "V8cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vqshlq_v, "V16cV16cV16ci", "n")
-BUILTIN(__builtin_neon_vqshlu_n_v, "V2iV8cii", "n")
-BUILTIN(__builtin_neon_vqshluq_n_v, "V4iV16cii", "n")
+BUILTIN(__builtin_neon_vqshlu_n_v, "V8cV8cii", "n")
+BUILTIN(__builtin_neon_vqshluq_n_v, "V16cV16cii", "n")
 BUILTIN(__builtin_neon_vqshl_n_v, "V8cV8cii", "n")
 BUILTIN(__builtin_neon_vqshlq_n_v, "V16cV16cii", "n")
 BUILTIN(__builtin_neon_vqshrn_n_v, "V8cV16cii", "n")
-BUILTIN(__builtin_neon_vqshrun_n_v, "V2iV16cii", "n")
+BUILTIN(__builtin_neon_vqshrun_n_v, "V8cV16cii", "n")
 BUILTIN(__builtin_neon_vqsub_v, "V8cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vqsubq_v, "V16cV16cV16ci", "n")
 BUILTIN(__builtin_neon_vraddhn_v, "V8cV16cV16ci", "n")
@@ -238,15 +238,15 @@
 BUILTIN(__builtin_neon_vrsraq_n_v, "V16cV16cV16cii", "n")
 BUILTIN(__builtin_neon_vrsubhn_v, "V8cV16cV16ci", "n")
 BUILTIN(__builtin_neon_vset_lane_i8, "V8cUcV8ci", "n")
-BUILTIN(__builtin_neon_vset_lane_i16, "V8cUsV8ci", "n")
-BUILTIN(__builtin_neon_vset_lane_i32, "V8cUiV8ci", "n")
-BUILTIN(__builtin_neon_vset_lane_f32, "V8cfV8ci", "n")
+BUILTIN(__builtin_neon_vset_lane_i16, "V4sUsV4si", "n")
+BUILTIN(__builtin_neon_vset_lane_i32, "V2iUiV2ii", "n")
+BUILTIN(__builtin_neon_vset_lane_f32, "V2ffV2fi", "n")
 BUILTIN(__builtin_neon_vsetq_lane_i8, "V16cUcV16ci", "n")
-BUILTIN(__builtin_neon_vsetq_lane_i16, "V16cUsV16ci", "n")
-BUILTIN(__builtin_neon_vsetq_lane_i32, "V16cUiV16ci", "n")
-BUILTIN(__builtin_neon_vsetq_lane_f32, "V16cfV16ci", "n")
-BUILTIN(__builtin_neon_vset_lane_i64, "V8cULLiV8ci", "n")
-BUILTIN(__builtin_neon_vsetq_lane_i64, "V16cULLiV16ci", "n")
+BUILTIN(__builtin_neon_vsetq_lane_i16, "V8sUsV8si", "n")
+BUILTIN(__builtin_neon_vsetq_lane_i32, "V4iUiV4ii", "n")
+BUILTIN(__builtin_neon_vsetq_lane_f32, "V4ffV4fi", "n")
+BUILTIN(__builtin_neon_vset_lane_i64, "V1LLiULLiV1LLii", "n")
+BUILTIN(__builtin_neon_vsetq_lane_i64, "V2LLiULLiV2LLii", "n")
 BUILTIN(__builtin_neon_vshl_v, "V8cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vshlq_v, "V16cV16cV16ci", "n")
 BUILTIN(__builtin_neon_vshll_n_v, "V16cV8cii", "n")
@@ -290,8 +290,8 @@
 BUILTIN(__builtin_neon_vtbx4_v, "V8cV8cV8cV8cV8cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vtrn_v, "V16cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vtrnq_v, "V32cV16cV16ci", "n")
-BUILTIN(__builtin_neon_vtst_v, "V2iV8cV8ci", "n")
-BUILTIN(__builtin_neon_vtstq_v, "V4iV16cV16ci", "n")
+BUILTIN(__builtin_neon_vtst_v, "V8cV8cV8ci", "n")
+BUILTIN(__builtin_neon_vtstq_v, "V16cV16cV16ci", "n")
 BUILTIN(__builtin_neon_vuzp_v, "V16cV8cV8ci", "n")
 BUILTIN(__builtin_neon_vuzpq_v, "V32cV16cV16ci", "n")
 BUILTIN(__builtin_neon_vzip_v, "V16cV8cV8ci", "n")

Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=105684&r1=105683&r2=105684&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Wed Jun  9 00:30:26 2010
@@ -1058,6 +1058,17 @@
     Value* SV = llvm::ConstantVector::get(Indices.begin(), Indices.size());
     return Builder.CreateShuffleVector(Ops[0], Ops[1], SV, "vext");
   }
+  case ARM::BI__builtin_neon_vget_lane_i8:
+  case ARM::BI__builtin_neon_vget_lane_i16:
+  case ARM::BI__builtin_neon_vget_lane_i32:
+  case ARM::BI__builtin_neon_vget_lane_i64:
+  case ARM::BI__builtin_neon_vget_lane_f32:
+  case ARM::BI__builtin_neon_vgetq_lane_i8:
+  case ARM::BI__builtin_neon_vgetq_lane_i16:
+  case ARM::BI__builtin_neon_vgetq_lane_i32:
+  case ARM::BI__builtin_neon_vgetq_lane_i64:
+  case ARM::BI__builtin_neon_vgetq_lane_f32:
+    return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)));
   case ARM::BI__builtin_neon_vtbl1_v:
     return EmitNeonCall(CGM.getIntrinsic(Intrinsic::arm_neon_vtbl1),
                         Ops, "vtbl1");





More information about the cfe-commits mailing list