Skip to content
  • Sam Parker's avatar
    [TTI] Add TargetCostKind argument to getUserCost · e9c9329a
    Sam Parker authored
    There are several different types of cost that TTI tries to provide
    explicit information for: throughput, latency, code size along with
    a vague 'intersection of code-size cost and execution cost'.
    
    The vectorizer is a keen user of RecipThroughput and there's at least
    'getInstructionThroughput' and 'getArithmeticInstrCost' designed to
    help with this cost. The latency cost has a single use and a single
    implementation. The intersection cost appears to cover most of the
    rest of the API.
    
    getUserCost is explicitly called from within TTI when the user has
    been explicit in wanting the code size (also only one use) as well
    as a few passes which are concerned with a mixture of size and/or
    a relative cost. In many cases these costs are closely related, such
    as when multiple instructions are required, but one evident diverging
    cost in this function is for div/rem.
    
    This patch adds an argument so that the cost required is explicit,
    so that we can make the important distinction when necessary.
    
    Differential Revision: https://reviews.llvm.org/D78635
    e9c9329a