diff options
author | Francesco Petrogalli <francesco.petrogalli@arm.com> | 2019-11-11 16:48:51 +0000 |
---|---|---|
committer | Francesco Petrogalli <francesco.petrogalli@arm.com> | 2019-11-13 03:26:39 +0000 |
commit | d8b6b1114307558a5245de3806bb70f53f6f3efe (patch) | |
tree | 77063d7ed72c4c99148d79b02c68cee900a9dacc /llvm/unittests/Analysis/VectorFunctionABITest.cpp | |
parent | bc4bc5aa0d84413e4e3f082dee0d30cf839fb7ea (diff) | |
download | bcm5719-llvm-d8b6b1114307558a5245de3806bb70f53f6f3efe.tar.gz bcm5719-llvm-d8b6b1114307558a5245de3806bb70f53f6f3efe.zip |
[VFABI] Add LLVM internal mangling for vector functions.
Summary:
This patch adds a custom ISA for vector functions for internal use
in LLVM. The <isa> token is set to "_LLVM_", and it is not attached
to any specific instruction Vector ISA, or Vector Function ABI.
The ISA is used as a token for handling Vector Function ABI-style
vectorization for those vector functions that are not directly
associated to any existing Vector Function ABI (for example, some of
the vector functions exposed by TargetLibraryInfo). The demangling
function for this ISA in a Vector Function ABI context is set to be
the same as the common one shared between X86 and AArch64.
Reviewers: jdoerfert, sdesmalen, simoll
Subscribers: kristof.beyls, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70089
Diffstat (limited to 'llvm/unittests/Analysis/VectorFunctionABITest.cpp')
-rw-r--r-- | llvm/unittests/Analysis/VectorFunctionABITest.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/unittests/Analysis/VectorFunctionABITest.cpp b/llvm/unittests/Analysis/VectorFunctionABITest.cpp index 331f46b39b3..6fe85298d54 100644 --- a/llvm/unittests/Analysis/VectorFunctionABITest.cpp +++ b/llvm/unittests/Analysis/VectorFunctionABITest.cpp @@ -346,6 +346,13 @@ TEST_F(VFABIParserTest, ISAIndependentMangling) { __COMMON_CHECKS; EXPECT_EQ(VectorName, "_ZGVeN2vls2Ls27Us4Rs5l1L10U100R1000u2_sin"); + // LLVM: <isa> = "_LLVM_" internal vector function. + EXPECT_TRUE( + invokeParser("_ZGV_LLVM_N2vls2Ls27Us4Rs5l1L10U100R1000u2_sin(vectorf)")); + EXPECT_EQ(ISA, VFISAKind::LLVM); + __COMMON_CHECKS; + EXPECT_EQ(VectorName, "vectorf"); + // Unknown ISA (randomly using "q"). This test will need update if // some targets decide to use "q" as their ISA token. EXPECT_TRUE(invokeParser("_ZGVqN2vls2Ls27Us4Rs5l1L10U100R1000u2_sin")); @@ -473,3 +480,9 @@ TEST_F(VFABIAttrTest, Read) { Exp.push_back("_ZGVnN4v_g"); EXPECT_EQ(Mappings, Exp); } + +TEST_F(VFABIParserTest, LLVM_InternalISA) { + EXPECT_FALSE(invokeParser("_ZGV_LLVM_N2v_sin")); + EXPECT_TRUE(invokeParser("_ZGV_LLVM_N2v_sin_(vector_name)")); + EXPECT_EQ(ISA, VFISAKind::LLVM); +} |