Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | AArch64: use new non-polymorphic crypto intrinsics | Tim Northover | 2014-02-03 | 1 | -14/+14 | |
| | | | | | | | The LLVM backend now has invariant types on the various crypto-intrinsics, because in all cases there's only really one interpretation. llvm-svn: 200707 | |||||
* | ARM & AArch64: unify the rest of the completely shared NEON implementations | Tim Northover | 2014-01-31 | 1 | -22/+16 | |
| | | | | | | | | This should be the last routine patch: AArch64 does still delegate to EmitARMBuiltinExpr, but the remaining instances have complications of one sort or another so some more cunning thought will be needed. llvm-svn: 200528 | |||||
* | ARM & AArch64: another block of miscellaneous NEON sharing. | Tim Northover | 2014-01-31 | 1 | -119/+83 | |
| | | | | llvm-svn: 200527 | |||||
* | ARM & AArch64: move shared vld/vst intrinsics to common implementation. | Tim Northover | 2014-01-31 | 1 | -175/+145 | |
| | | | | llvm-svn: 200526 | |||||
* | ARM & AArch64: more instructions into common block | Tim Northover | 2014-01-31 | 1 | -73/+52 | |
| | | | | llvm-svn: 200525 | |||||
* | ARM & AArch64: merge another NEON block completely. | Tim Northover | 2014-01-31 | 1 | -236/+154 | |
| | | | | llvm-svn: 200524 | |||||
* | ARM & AArch64: extend shared NEON implementation to first block. | Tim Northover | 2014-01-30 | 1 | -86/+72 | |
| | | | | | | | This extends the refactoring to the whole of the first block of trivial correspondences (as a fairly arbitrary boundary). llvm-svn: 200472 | |||||
* | ARM & AArch64: fully share NEON implementation of permutation intrinsics | Tim Northover | 2014-01-30 | 1 | -71/+80 | |
| | | | | | | | As a starting point, this moves the CodeGen for NEON permutation instructions (vtrn, vzip, vuzp) into a new shared function. llvm-svn: 200471 | |||||
* | ARM & AArch64: share the BI__builtin_neon enum defs. | Tim Northover | 2014-01-30 | 1 | -1102/+1102 | |
| | | | | llvm-svn: 200470 | |||||
* | [AArch64 NEON] Fix a bug about vcles_f32 and vcled_f64. | Kevin Qin | 2014-01-23 | 1 | -0/+1 | |
| | | | | | | | As vcles_f32() and vcled_f64 are implemented by FCMGE, operands should make a swap. llvm-svn: 199866 | |||||
* | [AArch64]The compare to zero intrinsics should be implemented by 'icmp/fcmp' ↵ | Hao Liu | 2013-12-23 | 1 | -1/+1 | |
| | | | | | | and 'sext' not 'zext'. Modify the implementation by replacing zext with sext. llvm-svn: 197898 | |||||
* | [AArch64] Refactor NEON floating-point Max/Min/Maxnm/Minnm across vector AArch64 | Chad Rosier | 2013-12-11 | 1 | -4/+4 | |
| | | | | | | intrinsics to use f32 types, rather than their vector equivalents. llvm-svn: 197091 | |||||
* | [AArch64] Add NEON scalar floating-point compare LLVM AArch64 intrinsics that | Chad Rosier | 2013-12-11 | 1 | -31/+31 | |
| | | | | | | use f32/f64 types, rather than their vector equivalents. llvm-svn: 197071 | |||||
* | [AArch64] Refactor the NEON scalar floating-point reciprocal step and | Chad Rosier | 2013-12-11 | 1 | -5/+5 | |
| | | | | | | | floating-point reciprocal square root step LLVM AArch64 intrinsics to use f32/f64 types, rather than their vector equivalents. llvm-svn: 197070 | |||||
* | [AArch64] Refactor the NEON scalar floating-point reciprocal estimate, floating- | Chad Rosier | 2013-12-11 | 1 | -5/+5 | |
| | | | | | | | | 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 | |||||
* | [AArch64] Refactor the NEON floating-point absolute difference LLVM AArch64 | Chad Rosier | 2013-12-10 | 1 | -1/+1 | |
| | | | | | | intrinsic to use f32/f64 types, rather than their vector equivalents. llvm-svn: 196969 | |||||
* | [AArch64] Refactor the NEON signed/unsigned floating-point convert to ↵ | Chad Rosier | 2013-12-10 | 1 | -11/+15 | |
| | | | | | | | | fixed-point LLVM AArch64 intrinsics to use f32/f64, rather than their vector equivalents. llvm-svn: 196968 | |||||
* | [AArch64] Overload NEON signed/unsigned floating-point convert to fixed-point | Chad Rosier | 2013-12-10 | 1 | -16/+8 | |
| | | | | | | and fixed-point convert to floating-point LLVM AArch64 intrinsics. llvm-svn: 196967 | |||||
* | [AArch64] Overload NEON signed/unsigned integer convert to floating-point | Chad Rosier | 2013-12-10 | 1 | -8/+4 | |
| | | | | | | LLVM AArch64 intrinsics. llvm-svn: 196966 | |||||
* | [AArch64] Refactor the redundant code in the EmitAArch64ScalarBuiltinExpr() | Chad Rosier | 2013-12-10 | 1 | -206/+189 | |
| | | | | | | function. No functional change intended. llvm-svn: 196936 | |||||
* | [AArch64] Refactor the Neon vector/scalar floating-point convert intrinsics so | Chad Rosier | 2013-12-10 | 1 | -12/+11 | |
| | | | | | | that they use float/double rather than the vector equivalents when appropriate. llvm-svn: 196931 | |||||
* | [AArch64] Refactor the Neon vector/scalar floating-point convert implementation. | Chad Rosier | 2013-12-10 | 1 | -24/+24 | |
| | | | | | | Specifically, reuse the ARM intrinsics when possible. llvm-svn: 196927 | |||||
* | [AArch64 NEON] Support poly128_t and implement relevant intrinsic. | Kevin Qin | 2013-12-10 | 1 | -0/+30 | |
| | | | | llvm-svn: 196888 | |||||
* | [AArch64] Refactor the NEON scalar reduce pairwise intrinsics so that they use | Chad Rosier | 2013-12-09 | 1 | -6/+17 | |
| | | | | | | float/double rather than the vector equivalents when appropriate. llvm-svn: 196836 | |||||
* | [AArch64] Refactor the NEON scalar reduce pairwise front-end codegen to remove | Chad Rosier | 2013-12-09 | 1 | -11/+11 | |
| | | | | | | unnecessary patterns in tablegen. llvm-svn: 196835 | |||||
* | [AArch64] Remove q and non-q intrinsic definitions from the NEON scalar reduce | Chad Rosier | 2013-12-09 | 1 | -20/+10 | |
| | | | | | | pairwise implementation, using an overloaded definition instead. llvm-svn: 196834 | |||||
* | [AArch64]Add missing pair intrinsics such as: | Hao Liu | 2013-12-09 | 1 | -0/+8 | |
| | | | | | | | int32_t vminv_s32(int32x2_t a) which should be compiled into SMINP Vd.2S,Vn.2S,Vm.2S llvm-svn: 196750 | |||||
* | [AArch64 NEON] Add ACLE intrinsic vceqz_f64. | Kevin Qin | 2013-12-04 | 1 | -5/+13 | |
| | | | | llvm-svn: 196361 | |||||
* | [AArch64 NEON] Add missing compare intrinsics. | Kevin Qin | 2013-12-04 | 1 | -3/+31 | |
| | | | | llvm-svn: 196359 | |||||
* | [AArch64]Add missing floating point convert, round and misc intrinsics. | Hao Liu | 2013-12-03 | 1 | -7/+22 | |
| | | | | | | E.g. int64x1_t vcvt_s64_f64(float64x1_t a) -> FCVTZS Dd, Dn llvm-svn: 196211 | |||||
* | revert r196152. | Hao Liu | 2013-12-03 | 1 | -13/+0 | |
| | | | | | | | | | | | | | | 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 | |||||
* | AArch64: Add missing scalar pair intrinsics. | Hao Liu | 2013-12-03 | 1 | -0/+14 | |
| | | | | | | E.g. "float32_t vaddv_f32(float32x2_t a)" to be matched into "faddp s0, v1.2s". llvm-svn: 196199 | |||||
* | [AArch64] Add missing NEON scalar floating-point to integer convert ACLEs. | Chad Rosier | 2013-12-02 | 1 | -0/+13 | |
| | | | | llvm-svn: 196152 | |||||
* | Fix the problem that the range check for scalar narrow shift is too wide. | Hao Liu | 2013-11-29 | 1 | -1/+0 | |
| | | | | | | E.g. the immediate value of vshrns_n_s16 is [1,16], which should be [1,8]. llvm-svn: 195942 | |||||
* | [AArch64] Add support for NEON scalar floating-point absolute difference. | Chad Rosier | 2013-11-27 | 1 | -0/+5 | |
| | | | | llvm-svn: 195804 | |||||
* | [AArch64] Add support for NEON scalar floating-point to integer convert | Chad Rosier | 2013-11-26 | 1 | -0/+57 | |
| | | | | | | instructions. llvm-svn: 195789 | |||||
* | Implemented Neon scalar vdup_lane intrinsics. | Ana Pazos | 2013-11-21 | 1 | -0/+25 | |
| | | | | | | Fixed scalar dup alias and added test case. llvm-svn: 195329 | |||||
* | Implemented Neon scalar by element intrinsics. | Ana Pazos | 2013-11-21 | 1 | -6/+45 | |
| | | | | | | | Intrinsics implemented: vqdmull_lane, vqdmulh_lane, vqrdmulh_lane, vqdmlal_lane, vqdmlsl_lane scalar Neon intrinsics. llvm-svn: 195326 | |||||
* | Implement AArch64 neon instructions class SIMD lsone and SIMD lone-post. | Hao Liu | 2013-11-19 | 1 | -0/+127 | |
| | | | | llvm-svn: 195079 | |||||
* | Implement the newly added AArch64 ACLE functions for ld1/st1 with 2/3/4 vectors. | Hao Liu | 2013-11-18 | 1 | -0/+86 | |
| | | | | | | The functions are like: vst1_s8_x2 ... llvm-svn: 194991 | |||||
* | Remove unused but set variable. | Benjamin Kramer | 2013-11-16 | 1 | -4/+0 | |
| | | | | llvm-svn: 194920 | |||||
* | Implemented aarch64 Neon scalar vmulx_lane intrinsics | Ana Pazos | 2013-11-15 | 1 | -7/+80 | |
| | | | | | | | | | | | | | | 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 | |||||
* | [AArch64] Add support for legacy AArch32 NEON scalar shift right by immediate | Chad Rosier | 2013-11-14 | 1 | -0/+11 | |
| | | | | | | and accumulate instructions. llvm-svn: 194732 | |||||
* | [AArch64 neon] support poly64 and relevant intrinsic functions. | Kevin Qin | 2013-11-14 | 1 | -0/+1 | |
| | | | | llvm-svn: 194660 | |||||
* | Implement aarch64 neon instruction class misc. | Kevin Qin | 2013-11-14 | 1 | -0/+278 | |
| | | | | llvm-svn: 194657 | |||||
* | Implement AArch64 NEON instruction set AdvSIMD (table). | Jiangning Liu | 2013-11-14 | 1 | -2/+229 | |
| | | | | llvm-svn: 194649 | |||||
* | -fms-extensions: Recognize _alloca as an alias for the alloca builtin | Reid Kleckner | 2013-11-13 | 1 | -0/+1 | |
| | | | | | | Differential Revision: http://llvm-reviews.chandlerc.com/D1989 llvm-svn: 194617 | |||||
* | [AArch64] Tests for legacy AArch32 NEON scalar shift by immediate instructions. | Chad Rosier | 2013-11-13 | 1 | -9/+9 | |
| | | | | | | | A number of non-overloaded intrinsics have been replaced by thier overloaded counterparts. llvm-svn: 194599 | |||||
* | [AArch64] Add support for NEON scalar floating-point convert to fixed-point ↵ | Chad Rosier | 2013-11-11 | 1 | -0/+14 | |
| | | | | | | instructions. llvm-svn: 194395 | |||||
* | Implement AArch64 Neon instruction set Perm. | Jiangning Liu | 2013-11-06 | 1 | -0/+12 | |
| | | | | llvm-svn: 194124 |