Skip to content
  • Rob Clark's avatar
    nir+vtn: vec8+vec16 support · a8ec4082
    Rob Clark authored and Karol Herbst's avatar Karol Herbst committed
    
    
    This introduces new vec8 and vec16 instructions (which are the only
    instructions taking more than 4 sources), in order to construct 8 and 16
    component vectors.
    
    In order to avoid fixing up the non-autogenerated nir_build_alu() sites
    and making them pass 16 src args for the benefit of the two instructions
    that take more than 4 srcs (ie vec8 and vec16), nir_build_alu() is has
    nir_build_alu_tail() split out and re-used by nir_build_alu2() (which is
    used for the > 4 src args case).
    
    v2 (Karol Herbst):
      use nir_build_alu2 for vec8 and vec16
      use python's array multiplication syntax
      add nir_op_vec helper
      simplify nir_vec
      nir_build_alu_tail -> nir_builder_alu_instr_finish_and_insert
      use nir_build_alu for opcodes with <= 4 sources
    v3 (Karol Herbst):
      fix nir_serialize
    v4 (Dave Airlie):
      fix serialization of glsl_type
      handle vec8/16 in lowering of bools
    v5 (Karol Herbst):
      fix load store vectorizer
    
    Signed-off-by: Karol Herbst's avatarKarol Herbst <kherbst@redhat.com>
    Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
    a8ec4082