Chad Rosier
6030c84a2f
[AArch64] Refactor NEON floating-point Max/Min/Maxnm/Minnm across vector AArch64
...
intrinsics to use f32 types, rather than their vector equivalents.
llvm-svn: 197091
2013-12-11 23:21:39 +00:00
Chad Rosier
c520fce72d
[AArch64] Add NEON scalar floating-point compare LLVM AArch64 intrinsics that
...
use f32/f64 types, rather than their vector equivalents.
llvm-svn: 197071
2013-12-11 21:03:56 +00:00
Chad Rosier
edd4403510
[AArch64] Refactor the NEON scalar floating-point reciprocal step and
...
floating-point reciprocal square root step LLVM AArch64 intrinsics to
use f32/f64 types, rather than their vector equivalents.
llvm-svn: 197070
2013-12-11 21:03:54 +00:00
Chad Rosier
6ce4387c5c
[AArch64] Refactor the NEON scalar floating-point reciprocal estimate, floating-
...
point reciprocal exponent, and floating-point reciprocal square root estimate
LLVM AArch64 intrinsics to use f32/f64 types, rather than their vector
equivalents.
llvm-svn: 197069
2013-12-11 21:03:52 +00:00
Chad Rosier
17c248a7a2
[AArch64] Refactor the NEON floating-point absolute difference LLVM AArch64
...
intrinsic to use f32/f64 types, rather than their vector equivalents.
llvm-svn: 196969
2013-12-10 21:34:23 +00:00
Chad Rosier
37051a80e9
[AArch64] Refactor the NEON signed/unsigned floating-point convert to fixed-point
...
LLVM AArch64 intrinsics to use f32/f64, rather than their vector equivalents.
llvm-svn: 196968
2013-12-10 21:34:21 +00:00
Chad Rosier
8f6f3d124c
[AArch64] Overload NEON signed/unsigned floating-point convert to fixed-point
...
and fixed-point convert to floating-point LLVM AArch64 intrinsics.
llvm-svn: 196967
2013-12-10 21:34:20 +00:00
Chad Rosier
11a78c86e1
[AArch64] Overload NEON signed/unsigned integer convert to floating-point
...
LLVM AArch64 intrinsics.
llvm-svn: 196966
2013-12-10 21:34:17 +00:00
Chad Rosier
8d96c803df
[AArch64] Refactor the redundant code in the EmitAArch64ScalarBuiltinExpr()
...
function. No functional change intended.
llvm-svn: 196936
2013-12-10 17:44:36 +00:00
Chad Rosier
58f6a1fee7
[AArch64] Refactor the Neon vector/scalar floating-point convert intrinsics so
...
that they use float/double rather than the vector equivalents when appropriate.
llvm-svn: 196931
2013-12-10 16:11:55 +00:00
Chad Rosier
ff3b79aead
[AArch64] Refactor the Neon vector/scalar floating-point convert implementation.
...
Specifically, reuse the ARM intrinsics when possible.
llvm-svn: 196927
2013-12-10 15:35:40 +00:00
Kevin Qin
fb79d7f843
[AArch64 NEON] Support poly128_t and implement relevant intrinsic.
...
llvm-svn: 196888
2013-12-10 06:49:01 +00:00
Chad Rosier
ce511f2fcb
[AArch64] Refactor the NEON scalar reduce pairwise intrinsics so that they use
...
float/double rather than the vector equivalents when appropriate.
llvm-svn: 196836
2013-12-09 22:47:59 +00:00
Chad Rosier
01703584eb
[AArch64] Refactor the NEON scalar reduce pairwise front-end codegen to remove
...
unnecessary patterns in tablegen.
llvm-svn: 196835
2013-12-09 22:47:57 +00:00
Chad Rosier
ad3683c3cb
[AArch64] Remove q and non-q intrinsic definitions from the NEON scalar reduce
...
pairwise implementation, using an overloaded definition instead.
llvm-svn: 196834
2013-12-09 22:47:55 +00:00
Hao Liu
844a7da243
[AArch64]Add missing pair intrinsics such as:
...
int32_t vminv_s32(int32x2_t a)
which should be compiled into SMINP Vd.2S,Vn.2S,Vm.2S
llvm-svn: 196750
2013-12-09 03:52:22 +00:00
Kevin Qin
ad53b87c70
[AArch64 NEON] Add ACLE intrinsic vceqz_f64.
...
llvm-svn: 196361
2013-12-04 08:02:11 +00:00
Kevin Qin
8903f8df4b
[AArch64 NEON] Add missing compare intrinsics.
...
llvm-svn: 196359
2013-12-04 07:53:09 +00:00
Hao Liu
a5246fde90
[AArch64]Add missing floating point convert, round and misc intrinsics.
...
E.g. int64x1_t vcvt_s64_f64(float64x1_t a) -> FCVTZS Dd, Dn
llvm-svn: 196211
2013-12-03 06:07:13 +00:00
Hao Liu
4b850c5e0d
revert r196152.
...
This is a duplicate implementation.
E.g. this patch defines:
float64_t vabd_f64(float64_t a, float64_t b)
But there is already a similar intrinsic "vabdd_f64" with the same types.
Also, this intrinsic will be conflicted to the vector type intrinsic as following(Which is implemented by me and will be committed to trunk):
float64x1_t vabd_f64(float64x1_t a, float64x1_t b).
Two functions shouldn't have a same name in arm_neon.h.
According to ARM ACLE document, such vabd_f64 with float64_t is not existing.
So I revert this commit.
llvm-svn: 196205
2013-12-03 05:35:17 +00:00
Hao Liu
ce258820ca
AArch64: Add missing scalar pair intrinsics.
...
E.g. "float32_t vaddv_f32(float32x2_t a)" to be matched into "faddp s0, v1.2s".
llvm-svn: 196199
2013-12-03 03:40:08 +00:00
Chad Rosier
b0574f3bf7
[AArch64] Add missing NEON scalar floating-point to integer convert ACLEs.
...
llvm-svn: 196152
2013-12-02 21:07:24 +00:00
Hao Liu
8a0099e02c
Fix the problem that the range check for scalar narrow shift is too wide.
...
E.g. the immediate value of vshrns_n_s16 is [1,16], which should be [1,8].
llvm-svn: 195942
2013-11-29 02:13:17 +00:00
Chad Rosier
9e59285cc8
[AArch64] Add support for NEON scalar floating-point absolute difference.
...
llvm-svn: 195804
2013-11-27 01:46:19 +00:00
Chad Rosier
52e31b20cb
[AArch64] Add support for NEON scalar floating-point to integer convert
...
instructions.
llvm-svn: 195789
2013-11-26 22:17:51 +00:00
Ana Pazos
dbd1a22496
Implemented Neon scalar vdup_lane intrinsics.
...
Fixed scalar dup alias and added test case.
llvm-svn: 195329
2013-11-21 08:15:01 +00:00
Ana Pazos
2b02688fd9
Implemented Neon scalar by element intrinsics.
...
Intrinsics implemented: vqdmull_lane, vqdmulh_lane, vqrdmulh_lane,
vqdmlal_lane, vqdmlsl_lane scalar Neon intrinsics.
llvm-svn: 195326
2013-11-21 07:36:33 +00:00
Hao Liu
171cedf61e
Implement AArch64 neon instructions class SIMD lsone and SIMD lone-post.
...
llvm-svn: 195079
2013-11-19 02:17:31 +00:00
Hao Liu
5e4ce1ae9d
Implement the newly added AArch64 ACLE functions for ld1/st1 with 2/3/4 vectors.
...
The functions are like: vst1_s8_x2 ...
llvm-svn: 194991
2013-11-18 06:33:43 +00:00
Benjamin Kramer
847c1d90e1
Remove unused but set variable.
...
llvm-svn: 194920
2013-11-16 11:47:52 +00:00
Ana Pazos
6f2a47a9e5
Implemented aarch64 Neon scalar vmulx_lane intrinsics
...
Implemented aarch64 Neon scalar vfma_lane intrinsics
Implemented aarch64 Neon scalar vfms_lane intrinsics
Implemented legacy vmul_n_f64, vmul_lane_f64, vmul_laneq_f64
intrinsics (v1f64 parameter type) using Neon scalar instructions.
Implemented legacy vfma_lane_f64, vfms_lane_f64,
vfma_laneq_f64, vfms_laneq_f64 intrinsics (v1f64 parameter type)
using Neon scalar instructions.
llvm-svn: 194889
2013-11-15 23:33:31 +00:00
Chad Rosier
7aaee48bf0
[AArch64] Add support for legacy AArch32 NEON scalar shift right by immediate
...
and accumulate instructions.
llvm-svn: 194732
2013-11-14 22:02:24 +00:00
Kevin Qin
caac85e612
[AArch64 neon] support poly64 and relevant intrinsic functions.
...
llvm-svn: 194660
2013-11-14 03:29:16 +00:00
Kevin Qin
1718af6f0a
Implement aarch64 neon instruction class misc.
...
llvm-svn: 194657
2013-11-14 02:45:18 +00:00
Jiangning Liu
18b707cb3f
Implement AArch64 NEON instruction set AdvSIMD (table).
...
llvm-svn: 194649
2013-11-14 01:57:55 +00:00
Reid Kleckner
59e4a6f5e2
-fms-extensions: Recognize _alloca as an alias for the alloca builtin
...
Differential Revision: http://llvm-reviews.chandlerc.com/D1989
llvm-svn: 194617
2013-11-13 22:58:53 +00:00
Chad Rosier
e714a962b5
[AArch64] Tests for legacy AArch32 NEON scalar shift by immediate instructions.
...
A number of non-overloaded intrinsics have been replaced by thier overloaded
counterparts.
llvm-svn: 194599
2013-11-13 20:05:44 +00:00
Chad Rosier
249c714bb4
[AArch64] Add support for NEON scalar floating-point convert to fixed-point instructions.
...
llvm-svn: 194395
2013-11-11 18:04:22 +00:00
Jiangning Liu
c628af66c7
Implement AArch64 Neon instruction set Perm.
...
llvm-svn: 194124
2013-11-06 03:35:53 +00:00
Jiangning Liu
37f5bb1b28
Implement AArch64 Neon instruction set Bitwise Extract.
...
llvm-svn: 194119
2013-11-06 02:26:12 +00:00
Jiangning Liu
34a7109b47
Implement AArch64 Neon Crypto instruction classes AES, SHA, and 3 SHA.
...
llvm-svn: 194086
2013-11-05 17:42:24 +00:00
Kevin Qin
9eece7b5e0
Implemented aarch64 neon intrinsic vcopy_lane with float type.
...
llvm-svn: 194042
2013-11-05 02:05:44 +00:00
Chad Rosier
74329d6cff
[AArch64] Add support for NEON scalar fixed-point convert to floating-point instructions.
...
llvm-svn: 193817
2013-10-31 22:37:08 +00:00
Chad Rosier
bdca387884
[AArch64] Add support for NEON scalar shift immediate instructions.
...
llvm-svn: 193791
2013-10-31 19:29:05 +00:00
Mark Lacey
a8e7df3602
Add CodeGenABITypes.h for use in LLDB.
...
CodeGenABITypes is a wrapper built on top of CodeGenModule that exposes
some of the functionality of CodeGenTypes (held by CodeGenModule),
specifically methods that determine the LLVM types appropriate for
function argument and return values.
I addition to CodeGenABITypes.h, CGFunctionInfo.h is introduced, and the
definitions of ABIArgInfo, RequiredArgs, and CGFunctionInfo are moved
into this new header from the private headers ABIInfo.h and CGCall.h.
Exposing this functionality is one part of making it possible for LLDB
to determine the actual ABI locations of function arguments and return
values, making it possible for it to determine this for any supported
target without hard-coding ABI knowledge in the LLDB code.
llvm-svn: 193717
2013-10-30 21:53:58 +00:00
Chad Rosier
4d55e6e0a4
[AArch64] Add support for NEON scalar floating-point compare instructions.
...
llvm-svn: 193692
2013-10-30 15:20:07 +00:00
Peter Collingbourne
b453cd64a7
Implement function type checker for the undefined behavior sanitizer.
...
This uses function prefix data to store function type information at the
function pointer.
Differential Revision: http://llvm-reviews.chandlerc.com/D1338
llvm-svn: 193058
2013-10-20 21:29:19 +00:00
Chad Rosier
3c03dee1d1
[AArch64] Add support for NEON scalar extract narrow instructions.
...
llvm-svn: 192971
2013-10-18 14:03:36 +00:00
Chad Rosier
e7465644c6
[AArch64] Add support for NEON scalar three register different instruction
...
class. The instruction class includes the signed saturating doubling
multiply-add long, signed saturating doubling multiply-subtract long, and
the signed saturating doubling multiply long instructions.
llvm-svn: 192909
2013-10-17 18:12:50 +00:00
Chad Rosier
00eef17dbe
[AArch64] Add support for NEON scalar negate instruction.
...
llvm-svn: 192845
2013-10-16 21:04:53 +00:00