Skip to content
  1. Feb 27, 2008
    • Evan Cheng's avatar
      Fix a bug in dead spill slot elimination. · fdc732ab
      Evan Cheng authored
      llvm-svn: 47687
      fdc732ab
    • Dan Gohman's avatar
      Remove the `else', at Evan's insistence. · e5e32ec8
      Dan Gohman authored
      llvm-svn: 47686
      e5e32ec8
    • Duncan Sands's avatar
      Add a FIXME about the VECTOR_SHUFFLE evil hack. · ef40c5b2
      Duncan Sands authored
      llvm-svn: 47676
      ef40c5b2
    • Duncan Sands's avatar
      LegalizeTypes support for EXTRACT_VECTOR_ELT. The · e158a82f
      Duncan Sands authored
      approach taken is different to that in LegalizeDAG
      when it is a question of expanding or promoting the
      result type: for example, if extracting an i64 from
      a <2 x i64>, when i64 needs expanding, it bitcasts
      the vector to <4 x i32>, extracts the appropriate
      two i32's, and uses those for the Lo and Hi parts.
      Likewise, when extracting an i16 from a <4 x i16>,
      and i16 needs promoting, it bitcasts the vector to
      <2 x i32>, extracts the appropriate i32, twiddles
      the bits if necessary, and uses that as the promoted
      value.  This puts more pressure on bitcast legalization,
      and I've added the appropriate cases.  They needed to
      be added anyway since users can generate such bitcasts
      too if they want to.  Also, when considering various
      cases (Legal, Promote, Expand, Scalarize, Split) it is
      a pain that expand can correspond to Expand, Scalarize
      or Split, so I've changed the LegalizeTypes enum so it
      lists those different cases - now Expand only means
      splitting a scalar in two.
      The code produced is the same as by LegalizeDAG for
      all relevant testcases, except for
      2007-10-31-extractelement-i64.ll, where the code seems
      to have improved (see below; can an expert please tell
      me if it is better or not).
      Before < vs after >.
      
      <       subl    $92, %esp
      <       movaps  %xmm0, 64(%esp)
      <       movaps  %xmm0, (%esp)
      <       movl    4(%esp), %eax
      <       movl    %eax, 28(%esp)
      <       movl    (%esp), %eax
      <       movl    %eax, 24(%esp)
      <       movq    24(%esp), %mm0
      <       movq    %mm0, 56(%esp)
      ---
      >       subl    $44, %esp
      >       movaps  %xmm0, 16(%esp)
      >       pshufd  $1, %xmm0, %xmm1
      >       movd    %xmm1, 4(%esp)
      >       movd    %xmm0, (%esp)
      >       movq    (%esp), %mm0
      >       movq    %mm0, 8(%esp)
      
      <       subl    $92, %esp
      <       movaps  %xmm0, 64(%esp)
      <       movaps  %xmm0, (%esp)
      <       movl    12(%esp), %eax
      <       movl    %eax, 28(%esp)
      <       movl    8(%esp), %eax
      <       movl    %eax, 24(%esp)
      <       movq    24(%esp), %mm0
      <       movq    %mm0, 56(%esp)
      ---
      >       subl    $44, %esp
      >       movaps  %xmm0, 16(%esp)
      >       pshufd  $3, %xmm0, %xmm1
      >       movd    %xmm1, 4(%esp)
      >       movhlps %xmm0, %xmm0
      >       movd    %xmm0, (%esp)
      >       movq    (%esp), %mm0
      >       movq    %mm0, 8(%esp)
      
      <       subl    $92, %esp
      <       movaps  %xmm0, 64(%esp)
      ---
      >       subl    $44, %esp
      
      <       movl    16(%esp), %eax
      <       movl    %eax, 48(%esp)
      <       movl    20(%esp), %eax
      <       movl    %eax, 52(%esp)
      <       movaps  %xmm0, (%esp)
      <       movl    4(%esp), %eax
      <       movl    %eax, 60(%esp)
      <       movl    (%esp), %eax
      <       movl    %eax, 56(%esp)
      ---
      >       pshufd  $1, %xmm0, %xmm1
      >       movd    %xmm1, 4(%esp)
      >       movd    %xmm0, (%esp)
      >       movd    %xmm1, 12(%esp)
      >       movd    %xmm0, 8(%esp)
      
      <       subl    $92, %esp
      <       movaps  %xmm0, 64(%esp)
      ---
      >       subl    $44, %esp
      
      <       movl    24(%esp), %eax
      <       movl    %eax, 48(%esp)
      <       movl    28(%esp), %eax
      <       movl    %eax, 52(%esp)
      <       movaps  %xmm0, (%esp)
      <       movl    12(%esp), %eax
      <       movl    %eax, 60(%esp)
      <       movl    8(%esp), %eax
      <       movl    %eax, 56(%esp)
      ---
      >       pshufd  $3, %xmm0, %xmm1
      >       movd    %xmm1, 4(%esp)
      >       movhlps %xmm0, %xmm0
      >       movd    %xmm0, (%esp)
      >       movd    %xmm1, 12(%esp)
      >       movd    %xmm0, 8(%esp)
      
      llvm-svn: 47672
      e158a82f
    • Duncan Sands's avatar
      LegalizeTypes support for legalizing the mask · 2111bd2e
      Duncan Sands authored
      operand of a VECTOR_SHUFFLE.  The mask is a
      vector of constant integers.  The code in
      LegalizeDAG doesn't bother to legalize the
      mask, since it's basically just storage for
      a bunch of constants, however LegalizeTypes
      is more picky.  The problem is that there may
      not exist any legal vector-of-integers type
      with a legal element type, so it is impossible
      to create a legal mask!  Unless of course you
      cheat by creating a BUILD_VECTOR where the
      operands have a different type to the element
      type of the vector being built...  This is
      pretty ugly but works - all relevant tests in
      the testsuite pass, and produce the same
      assembler with and without LegalizeTypes.
      
      llvm-svn: 47670
      2111bd2e
    • Duncan Sands's avatar
      LegalizeTypes support for INSERT_VECTOR_ELT. · 5d5bc484
      Duncan Sands authored
      llvm-svn: 47669
      5d5bc484
    • Evan Cheng's avatar
      Don't track max alignment during stack object allocations since they can be... · 8ae8e2d5
      Evan Cheng authored
      Don't track max alignment during stack object allocations since they can be deleted later. Let PEI compute it.
      
      llvm-svn: 47668
      8ae8e2d5
    • Duncan Sands's avatar
      Support for legalizing MEMBARRIER. · 96658d01
      Duncan Sands authored
      llvm-svn: 47667
      96658d01
    • Bill Wendling's avatar
      Final de-tabification. · 97925ec7
      Bill Wendling authored
      llvm-svn: 47663
      97925ec7
    • Evan Cheng's avatar
      Spiller now remove unused spill slots. · 6d56368c
      Evan Cheng authored
      llvm-svn: 47657
      6d56368c
    • Dan Gohman's avatar
      Teach Legalize how to expand an EXTRACT_ELEMENT. · 66272a54
      Dan Gohman authored
      llvm-svn: 47656
      66272a54
    • Dan Gohman's avatar
      Convert the last remaining users of the non-APInt form of · f19609ab
      Dan Gohman authored
      ComputeMaskedBits to use the APInt form, and remove the
      non-APInt form.
      
      llvm-svn: 47654
      f19609ab
    • Dan Gohman's avatar
      Convert SimplifyDemandedMask and ShrinkDemandedConstant to use APInt. · ae2b6fbb
      Dan Gohman authored
      Change several cases in SimplifyDemandedMask that don't ever do any
      simplifying to reuse the logic in ComputeMaskedBits instead of
      duplicating it.
      
      llvm-svn: 47648
      ae2b6fbb
  2. Feb 26, 2008
  3. Feb 25, 2008
  4. Feb 24, 2008
  5. Feb 23, 2008
  6. Feb 22, 2008
Loading