Skip to content

SSE: incorrect code generated for i8 vector shuffles #11556

@llvmbot

Description

@llvmbot
Bugzilla Link 11184
Resolution FIXED
Resolved on Oct 20, 2011 08:39
Version trunk
OS All
Attachments bitcode, test program
Reporter LLVM Bugzilla Contributor

Extended Description

The attached test case generates an <8xi8> vector with values <1 2 3 4 5 6 7 8> using a shuffle of 2 <4xi8> vectors and stores it to memory. With top-of-tree, it seems that incorrect values are being stored; the attached test program should print out "1 2 3 4 5 6 7 8" but instead prints the last 4 values, repeated twice:

% llc -filetype=obj bug.ll -o bug.o && clang bug.cpp bug.o && ./a.out
5 6 7 8 5 6 7 8
%

Some archaeology in the checkins indicates that the enabling of element promotion type legalization broke this. If I check out the version immediately before that one, I get the expected result:

% llc -filetype=obj bug.ll -o bug.o && clang bug.cpp bug.o && ./a.out
1 2 3 4 5 6 7 8
%

Author: Nadav Rotem nadav.rotem@intel.com
Date: Sun Oct 16 20:31:33 2011 +0000

Enable element promotion type legalization by deafault.
Changed tests which assumed that vectors are legalized by widening them.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142152 91177308-0d34-0410-b5e6-96231b3b80d8

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzilla

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions