diff options
author | Kevin Qin <Kevin.Qin@arm.com> | 2013-10-11 02:34:30 +0000 |
---|---|---|
committer | Kevin Qin <Kevin.Qin@arm.com> | 2013-10-11 02:34:30 +0000 |
commit | f22bf50443ee049f768829009011a5a3d7b8017f (patch) | |
tree | ebd9e5e2daf2dea78233161681f2b7c69cc48390 /clang/lib | |
parent | a89e7a0e1c5521b506940104af1537a2d612adc2 (diff) | |
download | bcm5719-llvm-f22bf50443ee049f768829009011a5a3d7b8017f.tar.gz bcm5719-llvm-f22bf50443ee049f768829009011a5a3d7b8017f.zip |
Implemented aarch64 SIMD copy related ACLE intrinsic :
vget_lane, vset_lane, vcopy_lane, vcreate, vdup_n, vdup_lane, vmov_n.
llvm-svn: 192411
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 97a3173ee9a..a1320bb0ebf 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -2074,6 +2074,34 @@ Value *CodeGenFunction::EmitAArch64BuiltinExpr(unsigned BuiltinID, for (unsigned i = 0, e = E->getNumArgs() - 1; i != e; i++) { Ops.push_back(EmitScalarExpr(E->getArg(i))); } +// Some intrinsic isn't overloaded. + switch (BuiltinID) { + default: break; + case AArch64::BI__builtin_neon_vget_lane_i8: + case AArch64::BI__builtin_neon_vget_lane_i16: + case AArch64::BI__builtin_neon_vget_lane_i32: + case AArch64::BI__builtin_neon_vget_lane_i64: + case AArch64::BI__builtin_neon_vgetq_lane_i8: + case AArch64::BI__builtin_neon_vgetq_lane_i16: + case AArch64::BI__builtin_neon_vgetq_lane_i32: + case AArch64::BI__builtin_neon_vgetq_lane_i64: + return EmitARMBuiltinExpr(ARM::BI__builtin_neon_vget_lane_i8, E); + case AArch64::BI__builtin_neon_vset_lane_i8: + case AArch64::BI__builtin_neon_vset_lane_i16: + case AArch64::BI__builtin_neon_vset_lane_i32: + case AArch64::BI__builtin_neon_vset_lane_i64: + case AArch64::BI__builtin_neon_vset_lane_f16: + case AArch64::BI__builtin_neon_vset_lane_f32: + case AArch64::BI__builtin_neon_vset_lane_f64: + case AArch64::BI__builtin_neon_vsetq_lane_i8: + case AArch64::BI__builtin_neon_vsetq_lane_i16: + case AArch64::BI__builtin_neon_vsetq_lane_i32: + case AArch64::BI__builtin_neon_vsetq_lane_i64: + case AArch64::BI__builtin_neon_vsetq_lane_f16: + case AArch64::BI__builtin_neon_vsetq_lane_f32: + case AArch64::BI__builtin_neon_vsetq_lane_f64: + return EmitARMBuiltinExpr(ARM::BI__builtin_neon_vset_lane_i8, E); + } // Get the last argument, which specifies the vector type. llvm::APSInt Result; |