| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
The s64/u64 vcvt conversion operations are actually pretty much identical to
the s32/u32 ones in implementation, and can be shared with just one extra
variable.
llvm-svn: 201145
|
| |
|
|
|
|
|
| |
Now that both ARM backends use the same implementation for vshll operations,
the code can be shared. This is also a necessary LLVM/Clang interface update.
llvm-svn: 201094
|
| |
|
|
|
|
|
| |
Now the backend supports the natural LLVM IR, we can shamelessly steal the
AArch64 front-end code to implement the vshrn intrinsic on 32-bit ARM.
llvm-svn: 201086
|
| |
|
|
|
|
|
|
| |
Now that the back-end intrinsics are more regular, there's no need for the
special handling these got in the front-end, so they can be moved to
EmitCommonNeonBuiltinExpr.
llvm-svn: 200769
|
| |
|
|
| |
llvm-svn: 200708
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 200527
|
| |
|
|
| |
llvm-svn: 200526
|
| |
|
|
| |
llvm-svn: 200525
|
| |
|
|
| |
llvm-svn: 200524
|
| |
|
|
|
|
|
| |
This extends the refactoring to the whole of the first block of
trivial correspondences (as a fairly arbitrary boundary).
llvm-svn: 200472
|
| |
|
|
|
|
|
| |
As a starting point, this moves the CodeGen for NEON permutation
instructions (vtrn, vzip, vuzp) into a new shared function.
llvm-svn: 200471
|
| |
|
|
| |
llvm-svn: 200470
|
| |
|
|
|
|
|
| |
As vcles_f32() and vcled_f64 are implemented by FCMGE, operands
should make a swap.
llvm-svn: 199866
|
| |
|
|
|
|
| |
and 'sext' not 'zext'. Modify the implementation by replacing zext with sext.
llvm-svn: 197898
|
| |
|
|
|
|
| |
intrinsics to use f32 types, rather than their vector equivalents.
llvm-svn: 197091
|
| |
|
|
|
|
| |
use f32/f64 types, rather than their vector equivalents.
llvm-svn: 197071
|
| |
|
|
|
|
|
| |
floating-point reciprocal square root step LLVM AArch64 intrinsics to
use f32/f64 types, rather than their vector equivalents.
llvm-svn: 197070
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
intrinsic to use f32/f64 types, rather than their vector equivalents.
llvm-svn: 196969
|
| |
|
|
|
|
|
|
| |
fixed-point
LLVM AArch64 intrinsics to use f32/f64, rather than their vector equivalents.
llvm-svn: 196968
|
| |
|
|
|
|
| |
and fixed-point convert to floating-point LLVM AArch64 intrinsics.
llvm-svn: 196967
|
| |
|
|
|
|
| |
LLVM AArch64 intrinsics.
llvm-svn: 196966
|
| |
|
|
|
|
| |
function. No functional change intended.
llvm-svn: 196936
|
| |
|
|
|
|
| |
that they use float/double rather than the vector equivalents when appropriate.
llvm-svn: 196931
|
| |
|
|
|
|
| |
Specifically, reuse the ARM intrinsics when possible.
llvm-svn: 196927
|
| |
|
|
| |
llvm-svn: 196888
|
| |
|
|
|
|
| |
float/double rather than the vector equivalents when appropriate.
llvm-svn: 196836
|
| |
|
|
|
|
| |
unnecessary patterns in tablegen.
llvm-svn: 196835
|
| |
|
|
|
|
| |
pairwise implementation, using an overloaded definition instead.
llvm-svn: 196834
|
| |
|
|
|
|
|
| |
int32_t vminv_s32(int32x2_t a)
which should be compiled into SMINP Vd.2S,Vn.2S,Vm.2S
llvm-svn: 196750
|
| |
|
|
| |
llvm-svn: 196361
|
| |
|
|
| |
llvm-svn: 196359
|
| |
|
|
|
|
| |
E.g. int64x1_t vcvt_s64_f64(float64x1_t a) -> FCVTZS Dd, Dn
llvm-svn: 196211
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
E.g. "float32_t vaddv_f32(float32x2_t a)" to be matched into "faddp s0, v1.2s".
llvm-svn: 196199
|
| |
|
|
| |
llvm-svn: 196152
|
| |
|
|
|
|
| |
E.g. the immediate value of vshrns_n_s16 is [1,16], which should be [1,8].
llvm-svn: 195942
|
| |
|
|
| |
llvm-svn: 195804
|
| |
|
|
|
|
| |
instructions.
llvm-svn: 195789
|
| |
|
|
|
|
| |
Fixed scalar dup alias and added test case.
llvm-svn: 195329
|
| |
|
|
|
|
|
| |
Intrinsics implemented: vqdmull_lane, vqdmulh_lane, vqrdmulh_lane,
vqdmlal_lane, vqdmlsl_lane scalar Neon intrinsics.
llvm-svn: 195326
|
| |
|
|
| |
llvm-svn: 195079
|
| |
|
|
|
|
| |
The functions are like: vst1_s8_x2 ...
llvm-svn: 194991
|
| |
|
|
| |
llvm-svn: 194920
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
and accumulate instructions.
llvm-svn: 194732
|
| |
|
|
| |
llvm-svn: 194660
|
| |
|
|
| |
llvm-svn: 194657
|