On Tue, Mar 4, 2014 at 1:13 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
> On Tue, Mar 4, 2014 at 12:31 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
>
>>>> The new gcc.target/i386/prefetchwt1-1.c test currently FAILs on Solaris 
>>>> 9/x86:
>>>>
>>>> FAIL: gcc.target/i386/prefetchwt1-1.c (test for excess errors)
>>>> Excess errors:
>>>> /var/gcc/regression/trunk/9-gcc-gas/build/gcc/include/xmmintrin.h:1195:1: 
>>>> error:
>>>>  inlining failed in call to always_inline '_mm_prefetch': target specific 
>>>> option
>>>>  mismatch
>>>> /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/i386/prefetchwt1-1.c:12:5:
>>>> error: called from here
>>>>
>>>> gcc.target/i386/prefetchwt1-1.c: output file does not exist
>>>> UNRESOLVED: gcc.target/i386/prefetchwt1-1.c scan-assembler [ 
>>>> \\t]+prefetchwt1[ \
>>>> \t]+
>>>>
>>>> This can be fixed by compiling with -msse2.
>>>
>>> Actually, we should take prefetch instructions out of various GCC
>>> target pragmas. Patterns that emit these instructions are designed to
>>> (depending on selected ISA) always emit  the most optimal prefetch
>>> instruction.
>>>
>>> The patch also changes the compiler to emit prefetchwt1 only for
>>> _MM_HINT_T1, while for _MM_HINT_T0, it still emits prefetchw. In
>>> addition, the patch corrects wrong MM_HINT_T0 value.
>>>
>>> Patch was bootstrapped and tested on x86_64-pc-linux-gnu {,-m32}  and
>>> committed to mainline SVN.
>>>
>>> 2014-03-03  Uros Bizjak  <ubiz...@gmail.com>
>>>
>>>     * config/i386/xmmintrin.h (enum _mm_hint) <_MM_HINT_ET0>: Correct
>>>     hint value.
>>>     (_mm_prefetch): Move out of GCC target("sse") pragma.
>>>     * config/i386/prfchwintrin.h (_m_prefetchw): Move out of
>>>     GCC target("prfchw") pragma.
>>>     * config/i386/i386.md (prefetch): Emit prefetchwt1 only
>>>     for locality <= 2.
>>>     * config/i386/i386.c (ix86_option_override_internal): Enable
>>>     -mprfchw with -mprefetchwt1.
>>
>> BTW: There are a couple of new testsuite failures:
>>
>> FAIL: gcc.target/i386/avx512pf-vscatterpf0dpd-1.c (test for excess errors)
>> UNRESOLVED: gcc.target/i386/avx512pf-vscatterpf0dpd-1.c
>> scan-assembler-times vscatterpf0dpd[ \\\\t]+[^\\n]*%ymm[0-9] 2
>> UNRESOLVED: gcc.target/i386/avx512pf-vscatterpf0dpd-1.c
>> scan-assembler-times vscatterpf0dpd[ \\\\t]+[^\\n]*{%k[1-7] 1
>> FAIL: gcc.target/i386/avx512pf-vscatterpf0dps-1.c (test for excess errors)
>> UNRESOLVED: gcc.target/i386/avx512pf-vscatterpf0dps-1.c
>> scan-assembler-times vscatterpf0dps[ \\\\t]+[^\\n]*%zmm[0-9] 2
>> UNRESOLVED: gcc.target/i386/avx512pf-vscatterpf0dps-1.c
>> scan-assembler-times vscatterpf0dps[ \\\\t]+[^\\n]*{%k[1-7] 1
>> FAIL: gcc.target/i386/avx512pf-vscatterpf0qpd-1.c (test for excess errors)
>> UNRESOLVED: gcc.target/i386/avx512pf-vscatterpf0qpd-1.c
>> scan-assembler-times vscatterpf0qpd[ \\\\t]+[^\\n]*%zmm[0-9] 2
>> UNRESOLVED: gcc.target/i386/avx512pf-vscatterpf0qpd-1.c
>> scan-assembler-times vscatterpf0qpd[ \\\\t]+[^\\n]*{%k[1-7] 1
>> FAIL: gcc.target/i386/avx512pf-vscatterpf0qps-1.c (test for excess errors)
>> UNRESOLVED: gcc.target/i386/avx512pf-vscatterpf0qps-1.c
>> scan-assembler-times vscatterpf0qps[ \\\\t]+[^\\n]*%zmm[0-9] 2
>> UNRESOLVED: gcc.target/i386/avx512pf-vscatterpf0qps-1.c
>> scan-assembler-times vscatterpf0qps[ \\\\t]+[^\\n]*{%k[1-7] 1
>>
>> 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.

2014-03-04  Uros Bizjak  <ubiz...@gmail.com>

    * config/i386/predicates.md (const2356_operand): Change to ...
    (const2367_operand): ... this.
    * config/i386/sse.md (avx512pf_scatterpf<mode>sf): Use
    const2367_operand.
    (*avx512pf_scatterpf<mode>sf_mask): Ditto.
    (*avx512pf_scatterpf<mode>sf): Ditto.
    (avx512pf_scatterpf<mode>df): Ditto.
    (*avx512pf_scatterpf<mode>df_mask): Ditto.
    (*avx512pf_scatterpf<mode>df): Ditto.
    * config/i386/i386.c (ix86_expand_builtin): Update
    incorrect hint operand error message.

Bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32} and
committed to mainline SVN.

Uros.

Reply via email to