Skip to content
  • Arnold Schwaighofer's avatar
    CostModel: Add parameter to instruction cost to further classify operand values · b9773871
    Arnold Schwaighofer authored
    On certain architectures we can support efficient vectorized version of
    instructions if the operand value is uniform (splat) or a constant scalar.
    An example of this is a vector shift on x86.
    
    We can efficiently support
    
    for (i = 0 ; i < ; i += 4)
      w[0:3] = v[0:3] << <2, 2, 2, 2>
    
    but not
    
    for (i = 0; i < ; i += 4)
      w[0:3] = v[0:3] << x[0:3]
    
    This patch adds a parameter to getArithmeticInstrCost to further qualify operand
    values as uniform or uniform constant.
    
    Targets can then choose to return a different cost for instructions with such
    operand values.
    
    A follow-up commit will test this feature on x86.
    
    radar://13576547
    
    llvm-svn: 178807
    b9773871
Loading