[cfe-dev] __builtin_shufflevector question

Eli Friedman eli.friedman at gmail.com
Fri Jul 19 11:01:16 PDT 2013


On Thu, Jul 18, 2013 at 10:03 PM, Craig Topper <craig.topper at gmail.com> wrote:
> And another question, should -1 be a valid index to specify undef?

I can't think of a better way to specify undef in the general case.

> On Thu, Jul 18, 2013 at 9:58 PM, Craig Topper <craig.topper at gmail.com>
> wrote:
>>
>> What are the supported forms of __builtin_shufflevector supposed to be?
>>
>> Comments in SemaChecking.cpp indicates these
>>   // 1) unary, vector mask: (lhs, mask)
>>   // 2) binary, vector mask: (lhs, rhs, mask)
>>   // 3) binary, scalar mask: (lhs, rhs, index, ..., index)
>>
>> But the actual code in SemaChecking.cpp only implements 1 and 3. I tried
>> to use 2 and it fails with "index for __builtin_shufflevector must be a
>> constant integer" on the 3rd argument.
>>
>>
>> Additionally, official documentation indicates only form 3 is supported.
>> http://clang.llvm.org/docs/LanguageExtensions.html

IIRC, the original __builtin_shufflevector only supported form 3;
forms 1 and 2 got added in a later patch, and I guess the patch wasn't
very good quality.

-Eli



More information about the cfe-dev mailing list