Quuxplusone / LLVMBugzillaTest

0 stars 0 forks source link

Spec2006 403.gcc misscompare runfail with avx512 loop vectorization #22224

Closed Quuxplusone closed 9 years ago

Quuxplusone commented 9 years ago
Bugzilla Link PR22225
Status RESOLVED FIXED
Importance P normal
Reported by Sergey Gvozdarev (sgvozdar@gmail.com)
Reported on 2015-01-14 06:25:45 -0800
Last modified on 2015-02-18 11:09:01 -0800
Version 3.6
Hardware PC Linux
CC denis.briltz@intel.com, hans@chromium.org, hfinkel@anl.gov, llvm-bugs@lists.llvm.org
Fixed by commit(s)
Attachments
Blocks
Blocked by
See also
Test 403.gcc from spec2006 started to fail after a commit:

commit 14fb445715551c6eda9146e829d0470550c8fff6
Author: Elena Demikhovsky <elena.demikhovsky@intel.com>
Date:   Tue Dec 16 11:50:42 2014 +0000

    Masked Load and Store Intrinsics in loop vectorizer.
    The loop vectorizer optimizes loops containing conditional memory
    accesses by generating masked load and store intrinsics.
    This decision is target dependent.

    http://reviews.llvm.org/D6527

Compiler options:
-O2 -ffast-math -static -m32 -mfpmath=sse -march=core-avx2

On -march=slm this test is OK.

LOG:
...
*** Miscompare of 166.s;
32309:          movq    %rbx, %rdi
                movl    $1, %r9d
            ^
32311:          movl    $.LC154, %esi
                movq    %rbx, %rdi
            ^
32312:          movl    $.LC155, %edx
                movl    $.LC154, %esi
                    ^
32313:          movl    $max_insts, %ecx
                movl    $.LC155, %edx
               ^
32314:          movl    $1, %r9d
                movl    $max_insts, %ecx
               ^
32318:          xorl    %r8d, %r8d
                movl    $.LC156, %esi
         ^
32319:          movl    $.LC156, %esi
                movl    $.LC157, %edx
                    ^
32320:          movl    $.LC157, %edx
                movl    $fastfwd_count, %ecx
               ^
32321:          movl    $fastfwd_count, %ecx
                movq    $0, (%rsp)
            ^
32322:          movl    $1, %r9d
                call    opt_reg_int
         ^

Sergey Gvozdarev
===============
Software Engineer
Intel Compiler Team
Intel
Quuxplusone commented 9 years ago
The bug was in LoopVectorize.cpp in handling masked load/store in the case of
reversed loop.
The mask should be reversed as well.
Added a test.

The bug is fixed in revision 226791.
Quuxplusone commented 9 years ago

Elena,

3.6 branch is still affected, please backport the patch to 3.6 branch.

Thanks

Quuxplusone commented 9 years ago
(In reply to comment #2)
> Elena,
>
> 3.6 branch is still affected, please backport the patch to 3.6 branch.
>
> Thanks

It was merged yesterday: http://llvm.org/viewvc/llvm-project?rev=229555&view=rev