Skip to content
Snippets Groups Projects
  • Joseph Myers's avatar
    aa406fea
    target/i386: fix phminposuw in-place operation · aa406fea
    Joseph Myers authored
    
    The SSE4.1 phminposuw instruction finds the minimum 16-bit element in
    the source vector, putting the value of that element in the low 16
    bits of the destination vector, the index of that element in the next
    three bits and zeroing the rest of the destination.  The helper for
    this operation fills the destination from high to low, meaning that
    when the source and destination are the same register, the minimum
    source element can be overwritten before it is copied to the
    destination.  This patch fixes it to fill the destination from low to
    high instead, so the minimum source element is always copied first.
    This fixes one gcc test failure in my GCC 6-based testing (and so
    concludes the present sequence of patches, as I don't have any further
    gcc test failures left in that testing that I attribute to QEMU bugs).
    
    Signed-off-by: default avatarJoseph Myers <joseph@codesourcery.com>
    
    Message-Id: <alpine.DEB.2.20.1708111422580.11919@digraph.polyomino.org.uk>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    aa406fea
    History
    target/i386: fix phminposuw in-place operation
    Joseph Myers authored
    
    The SSE4.1 phminposuw instruction finds the minimum 16-bit element in
    the source vector, putting the value of that element in the low 16
    bits of the destination vector, the index of that element in the next
    three bits and zeroing the rest of the destination.  The helper for
    this operation fills the destination from high to low, meaning that
    when the source and destination are the same register, the minimum
    source element can be overwritten before it is copied to the
    destination.  This patch fixes it to fill the destination from low to
    high instead, so the minimum source element is always copied first.
    This fixes one gcc test failure in my GCC 6-based testing (and so
    concludes the present sequence of patches, as I don't have any further
    gcc test failures left in that testing that I attribute to QEMU bugs).
    
    Signed-off-by: default avatarJoseph Myers <joseph@codesourcery.com>
    
    Message-Id: <alpine.DEB.2.20.1708111422580.11919@digraph.polyomino.org.uk>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>