Skip to content
  • Ian Romanick's avatar
    nir/opcodes: Add integer dot-product opcodes · 6c18a3b4
    Ian Romanick authored
    
    
    Six opcodes are added: sdot_4x8_iadd, udot_4x8_uadd, sudot_4x8_iadd,
    sdot_4x8_iadd_sat, udot_4x8_uadd_sate, and sudot_4x8_iadd_sat.  These
    represent the combinations of integer dot-product and add that operate
    on packed source vectors.  That is, the four 8-bit values for each
    vector is stored in a single 32-bit integer.
    
    Some hardware may prefer to operate on unpacked byte vectors.  When such
    hardware comes to Mesa, we'll have to figure out how to name things.
    
    v2: Add nir_op_iudp4a and nir_op_iudp4a_sat instructions.  These opcodes
    are not 2-source commutative.
    
    v3: Rename all opcodes to be more like some existing 4x8 opcodes.
    Suggested by Timur.  Change type of packed vector sources to uint32,
    change types of constant folding variables to have explicit size, and
    delete some extra casts.  All suggested by Jason.
    
    v4: Fix typo previously noticed by Alyssa but missed in v2.
    
    v5: Add has_sudot_4x8 flag.  Requested by Rhys.
    
    Reviewed-by: default avatarJason Ekstrand <jason@jlekstrand.net>
    Part-of: <!12142>
    6c18a3b4