OSDN Git Service

[clang][AArch64][SVE] Avoid going through memory for coerced VLST return values
authorJoe Ellis <joe.ellis@arm.com>
Fri, 8 Jan 2021 11:44:15 +0000 (11:44 +0000)
committerJoe Ellis <joe.ellis@arm.com>
Mon, 11 Jan 2021 12:10:59 +0000 (12:10 +0000)
commit8ea72b388734ce660f861e0dfbe53d203e94876a
tree9956b65eacb83cd9f46bc1b8dec6269da787b957
parentc74751d4b5bd8e6753ba8dbc5baa88d7c8929c5c
[clang][AArch64][SVE] Avoid going through memory for coerced VLST return values

VLST return values are coerced to VLATs in the function epilog for
consistency with the VLAT ABI. Previously, this coercion was done
through memory. It is preferable to use the
llvm.experimental.vector.insert intrinsic to avoid going through memory
here.

Reviewed By: c-rhodes

Differential Revision: https://reviews.llvm.org/D94290
clang/lib/CodeGen/CGCall.cpp
clang/test/CodeGen/aarch64-sve-acle-__ARM_FEATURE_SVE_VECTOR_OPERATORS.cpp
clang/test/CodeGen/attr-arm-sve-vector-bits-call.c
clang/test/CodeGen/attr-arm-sve-vector-bits-cast.c
clang/test/CodeGen/attr-arm-sve-vector-bits-codegen.c