| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 196510
|
| |
|
|
|
|
|
| |
This patch tries to avoid unrelated changes other than fixing a few
hyphen-related ambiguities in nearby lines.
llvm-svn: 196466
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
MSVC destroys arguments in the callee from left to right. Because C++
objects have to be destroyed in the reverse order of construction, Clang
has to construct arguments from right to left and destroy arguments from
left to right.
This patch fixes the ordering by reversing the order of evaluation of
all call arguments under the MS C++ ABI.
Fixes PR18035.
Reviewers: rsmith
Differential Revision: http://llvm-reviews.chandlerc.com/D2275
llvm-svn: 196402
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I'd misunderstood getIndirect() to mean that the argument should be passed
as a pointer at the ABI level, with the ByVal argument choosing caller-copy
semantics over no-caller-copy (callee-copy-on-write) semantics. But
getIndirect(x) actually means that x is passed by pointer at the IR
level but (at least on all other targets I looked at) directly at the
ABI level. getIndirect(x, false) selects a pointer to a caller-made
copy, which is what SystemZ was aiming for.
This fixes a miscompilation of c-index-test. Structure arguments were being
passed by pointer, but no copy was being made, so a write in the callee
stomped over a caller's local variable.
llvm-svn: 196370
|
| |
|
|
| |
llvm-svn: 196361
|
| |
|
|
| |
llvm-svn: 196359
|
| |
|
|
| |
llvm-svn: 196350
|
| |
|
|
| |
llvm-svn: 196349
|
| |
|
|
|
|
| |
nvptx64-registered-target". "nvptx" should imply it.
llvm-svn: 196348
|
| |
|
|
|
|
| |
E.g. int64x1_t vcvt_s64_f64(float64x1_t a) -> FCVTZS Dd, Dn
llvm-svn: 196211
|
| |
|
|
|
|
|
|
| |
from VFP instructions.
E.g. float64x1_t vadd_f64(float64x1_t a, float64x1_t b) -> FADD Dd, Dn, Dm.
llvm-svn: 196209
|
| |
|
|
|
|
| |
Fixed vcopy_laneq_f64 intrinsic implementation.
llvm-svn: 196206
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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: 196191
|
| |
|
|
| |
llvm-svn: 196189
|
| |
|
|
|
|
| |
Patch by Ana Pazos!
llvm-svn: 196153
|
| |
|
|
| |
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: 195940
|
| |
|
|
| |
llvm-svn: 195937
|
| |
|
|
|
|
| |
of ACLE intrinsics.
llvm-svn: 195844
|
| |
|
|
| |
llvm-svn: 195804
|
| |
|
|
|
|
| |
instructions.
llvm-svn: 195789
|
| |
|
|
|
|
|
|
| |
info version number.
Will error out when modules have different version numbers.
llvm-svn: 195495
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Not long ago I made the CodeGen of for loops simplify the condition at
-O0 in the same way we do for if and conditionals. Unfortunately this
ties how loops and simple conditions work together too tightly, which
makes features such as instrumentation based PGO awkward.
Ultimately, we should find a more general way to simplify the logic in
a given condition, but for now we'll just avoid using EmitBranchOnBool
for loops, like we already do for while and do loops.
llvm-svn: 195438
|
| |
|
|
|
|
| |
test/Preprocessor/arm-target-features.c and test/Driver/arm-cortex-cpus.c
llvm-svn: 195430
|
| |
|
|
| |
llvm-svn: 195409
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
For PTX, we want the target to handle struct returns directly.
llvm-svn: 195268
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
RTTI is not yet implemented for the Microsoft C++ ABI and isn't expected
soon. We could easily add the mangling, but the error is what prevents
us from silently miscompiling code that expects RTTI.
Instead, add a new mangleTypeName entry point that simply forwards to
mangleName or mangleType to produce a string that isn't part of the ABI.
Itanium can continue to use RTTI names to avoid unecessary test
breakage.
This also seems like the right design. The fact that TBAA names happen
to be RTTI names is now an implementation detail of the mangler, rather
than part of TBAA.
Differential Revision: http://llvm-reviews.chandlerc.com/D2153
llvm-svn: 195168
|
| |
|
|
| |
llvm-svn: 195079
|
| |
|
|
| |
llvm-svn: 195073
|
| |
|
|
| |
llvm-svn: 195069
|
| |
|
|
|
|
| |
The functions are like: vst1_s8_x2 ...
llvm-svn: 194991
|
| |
|
|
| |
llvm-svn: 194954
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 194854
|
| |
|
|
|
|
| |
and accumulate instructions.
llvm-svn: 194732
|
| |
|
|
| |
llvm-svn: 194678
|
| |
|
|
| |
llvm-svn: 194674
|
| |
|
|
| |
llvm-svn: 194672
|
| |
|
|
| |
llvm-svn: 194649
|
| |
|
|
|
|
| |
Differential Revision: http://llvm-reviews.chandlerc.com/D1989
llvm-svn: 194617
|
| |
|
|
|
|
|
|
|
|
|
| |
We already have builtins that are only available in GNU mode, so this
mirrors that.
Reviewers: rsmith
Differential Revision: http://llvm-reviews.chandlerc.com/D2128
llvm-svn: 194615
|
| |
|
|
|
|
|
| |
A number of non-overloaded intrinsics have been replaced by thier overloaded
counterparts.
llvm-svn: 194599
|
| |
|
|
| |
llvm-svn: 194513
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Like GCC, this re-uses the 'f' constraint and a new 'w' print-modifier:
asm ("ldi.w %w0, 1", "=f"(result));
Unlike GCC, the 'w' print-modifer is not _required_ to produce the intended
output. This is a consequence of differences in the internal handling of
the registers in each compiler. To be source-compatible between the
compilers, users must use the 'w' print-modifier.
MSA registers (including control registers) are supported in clobber lists.
llvm-svn: 194476
|
| |
|
|
| |
llvm-svn: 194474
|