On Tue, Mar 4, 2014 at 10:04 AM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote:
> Hello Uroš,
> On 04 Mar 01:13, Uros Bizjak wrote:
>> On Tue, Mar 4, 2014 at 12:31 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
>> > They are all:
>> >
>> > FAIL: gcc.target/i386/avx512pf-vscatterpf0dpd-1.c (test for excess errors)
>> > Excess errors:
>> > /ssd/uros/gcc-build/gcc/include/avx512pfintrin.h:108:3: error: the
>> > last argument must be hint 0 or 1
>> >
>> > They are due to _MM_HINT_ET0 fix, and probably show that the pattern
>> > was not updated when hint constants were adjusted to 2 and 3.
>> >
>> > Kirill, can you please look at this inconsistency?
>>
>> Attached patch fixes these failures, and also fixes and improves error 
>> message.
>>
>> Uros.
>
>> Index: i386.c
>> ===================================================================
>> --- i386.c    (revision 208296)
>> +++ i386.c    (working copy)
>> @@ -36022,7 +36022,7 @@ addcarryx:
>>
>>        if (!insn_data[icode].operand[4].predicate (op4, mode4))
>>       {
>> -       error ("the last argument must be hint 0 or 1");
>> +       error ("incorrect hint operand");
>>         return const0_rtx;
>>       }
>>
>> Index: predicates.md
>> ===================================================================
>> --- predicates.md     (revision 208295)
>> +++ predicates.md     (working copy)
>> @@ -660,12 +660,12 @@
>>    return i == 2 || i == 4 || i == 8;
>>  })
>>
>> -;; Match 2, 3, 5, or 6
>> -(define_predicate "const2356_operand"
>> +;; Match 2, 3, 6, or 7
>> +(define_predicate "const2367_operand"
>>    (match_code "const_int")
>>  {
>>    HOST_WIDE_INT i = INTVAL (op);
>> -  return i == 2 || i == 3 || i == 5 || i == 6;
>> +  return i == 2 || i == 3 || i == 6 || i == 7;
>>  })
> This will break `immediate' compatibility w/ ICC, since
> ICC using ET0=5.
> But as far as IMHO using immediates instead of literals
> is ugly, I think this is minor issue.

I don't think this is an issue at all, as said earlier - builtins are
considered internal implementation detail, published interface is in
relevant *.h files (this is also why wrong error message was fixed).

Uros.

Reply via email to