summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang/RecursiveASTVisitor.h
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2013-09-18 03:29:45 +0000
committerHal Finkel <hfinkel@anl.gov>2013-09-18 03:29:45 +0000
commitc4d7c82c7f7356ac9aca70d67593479897ad7f2b (patch)
tree6805191117ef09e757b99f96db3d0764c7f296fb /clang/tools/libclang/RecursiveASTVisitor.h
parent4c2316be490f798ed44e439d91a6604f57d3b9db (diff)
downloadbcm5719-llvm-c4d7c82c7f7356ac9aca70d67593479897ad7f2b.tar.gz
bcm5719-llvm-c4d7c82c7f7356ac9aca70d67593479897ad7f2b.zip
Add the intrinsic __builtin_convertvector
LLVM supports applying conversion instructions to vectors of the same number of elements (fptrunc, fptosi, etc.) but there had been no way for a Clang user to cause such instructions to be generated when using builtin vector types. C-style casting on vectors is already defined in terms of bitcasts, and so cannot be used for these conversions as well (without leading to a very confusing set of semantics). As a result, this adds a __builtin_convertvector intrinsic (patterned after the OpenCL __builtin_astype intrinsic). This is intended to aid the creation of vector intrinsic headers that create generic IR instead of target-dependent intrinsics (in other words, this is a generic _mm_cvtepi32_ps). As noted in the documentation, the action of __builtin_convertvector is defined in terms of the action of a C-style cast on each vector element. llvm-svn: 190915
Diffstat (limited to 'clang/tools/libclang/RecursiveASTVisitor.h')
-rw-r--r--clang/tools/libclang/RecursiveASTVisitor.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/tools/libclang/RecursiveASTVisitor.h b/clang/tools/libclang/RecursiveASTVisitor.h
index 4d2b3a98409..b8e66d481b4 100644
--- a/clang/tools/libclang/RecursiveASTVisitor.h
+++ b/clang/tools/libclang/RecursiveASTVisitor.h
@@ -2239,6 +2239,7 @@ DEF_TRAVERSE_STMT(ParenExpr, { })
DEF_TRAVERSE_STMT(ParenListExpr, { })
DEF_TRAVERSE_STMT(PredefinedExpr, { })
DEF_TRAVERSE_STMT(ShuffleVectorExpr, { })
+DEF_TRAVERSE_STMT(ConvertVectorExpr, { })
DEF_TRAVERSE_STMT(StmtExpr, { })
DEF_TRAVERSE_STMT(UnresolvedLookupExpr, {
TRY_TO(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));
OpenPOWER on IntegriCloud