[PATCH] D11001: Add support for System z vector language extensions

Richard Smith richard at metafoo.co.uk
Wed Jul 8 17:06:18 PDT 2015


rsmith added a comment.

I think it's reasonable for Clang to natively support this extension [especially since GCC and xlC support this, there is presumably a significant amount of existing code that uses this extension on System z, there is a lot of overlap with our existing Altivec extension, and we have a code owner with a strong track record proposing it].

The patch looks to be in really good shape. (FWIW, I find it a bit weird that `vector long` is not valid but all the other vectors of integral types are, but hey, it's your extension...)


================
Comment at: lib/Driver/Tools.cpp:3955-3959
@@ -3952,7 +3954,7 @@
 
   if (getToolChain().SupportsProfiling())
     Args.AddLastArg(CmdArgs, options::OPT_pg);
 
   // -flax-vector-conversions is default.
   if (!Args.hasFlag(options::OPT_flax_vector_conversions,
                     options::OPT_fno_lax_vector_conversions))
----------------
Thanks.

We should probably reject `-faltivec -fzvector`, since they give different semantics for certain vector operations. (Either that, or we need to pick which one wins in each case, which doesn't sound great.)

================
Comment at: lib/Sema/SemaExpr.cpp:7430
@@ +7429,3 @@
+    return CheckVectorOperands(LHS, RHS, Loc, IsCompAssign,
+                               /*AllowBothBool*/!getLangOpts().ZVector,
+                               /*AllowBoolConversions*/false);
----------------
It'd be better to phrase this as a positive language mode check than a negative one (that is, `AllowbothBool = getLangOpts().Altivec`) -- generally, where possible, we should aim for LangOptions values to enable features rather than disable them.


http://reviews.llvm.org/D11001







More information about the cfe-commits mailing list