Skip to content
  • Mateja Marjanovic's avatar
    0df911fd
    target/mips: Improve performance of certain MSA instructions · 0df911fd
    Mateja Marjanovic authored
    
    
    Eliminate loops for better performance.
    
    Following MSA instructions from "UNOP" group are affected:
    
     - NLZC.<B|H|W|D>
     - NLOC.<B|H|W|D>
     - PCNT.<B|H|W|D>
    
    Following MSA instructions from "BINOP" group are affected:
    
     - ADD_A.<B|H|W|D>
     - ADDS_A.<B|H|W|D>
     - ADDS_S.<B|H|W|D>
     - ADDS_U.<B|H|W|D>
     - ADDV.<B|H|W|D>
     - ASUB_S.<B|H|W|D>
     - ASUB_U.<B|H|W|D>
     - AVE_S.<B|H|W|D>
     - AVE_U.<B|H|W|D>
     - AVER_S.<B|H|W|D>
     - AVER_U.<B|H|W|D>
     - BCLR.<B|H|W|D>
     - BNEG.<B|H|W|D>
     - BSET.<B|H|W|D>
     - CEQ.<B|H|W|D>
     - CLE_S.<B|H|W|D>
     - CLE_U.<B|H|W|D>
     - CLT_S.<B|H|W|D>
     - CLT_U.<B|H|W|D>
     - DIV_S.<B|H|W|D>
     - DIV_U.<B|H|W|D>
     - DOTP_S.<B|H|W|D>
     - DOTP_U.<B|H|W|D>
     - HADD_S.<B|H|W|D>
     - HADD_U.<B|H|W|D>
     - HSUB_S.<B|H|W|D>
     - HSUB_U.<B|H|W|D>
     - MAX_A.<B|H|W|D>
     - MAX_S.<B|H|W|D>
     - MAX_U.<B|H|W|D>
     - MIN_A.<B|H|W|D>
     - MIN_S.<B|H|W|D>
     - MIN_U.<B|H|W|D>
     - MOD_S.<B|H|W|D>
     - MOD_U.<B|H|W|D>
     - MUL_Q.<B|H|W|D>
     - MULR_Q.<B|H|W|D>
     - MULV.<B|H|W|D>
     - SLL.<B|H|W|D>
     - SRA.<B|H|W|D>
     - SRAR.<B|H|W|D>
     - SRL.<B|H|W|D>
     - SRLR.<B|H|W|D>
     - SUBS_S.<B|H|W|D>
     - SUBS_U.<B|H|W|D>
     - SUBSUS_U.<B|H|W|D>
     - SUBSUU_S.<B|H|W|D>
     - SUBV.<B|H|W|D>
    
    Following MSA instructions from "TEROP" group are affected:
    
     - BINSL.<B|H|W|D>
     - BINSR.<B|H|W|D>
     - DPADD_S.<B|H|W|D>
     - DPADD_U.<B|H|W|D>
     - DPSUB_S.<B|H|W|D>
     - DPSUB_U.<B|H|W|D>
     - MADD_Q.<B|H|W|D>
     - MADDR_Q.<B|H|W|D>
     - MADDV.<B|H|W|D>
     - MSUB_Q.<B|H|W|D>
     - MSUBR_Q.<B|H|W|D>
     - MSUBV.<B|H|W|D>
    
    Additionally, following MSA instructionas are also affected:
    
     - ILVL.<B|H|W|D>
     - ILVR.<B|H|W|D>
     - ILVEV.<B|H|W|D>
     - ILVOD.<B|H|W|D>
     - PCKEV.<B|H|W|D>
     - PCKOD.<B|H|W|D>
    
    Signed-off-by: default avatarMateja Marjanovic <mateja.marjanovic@rt-rk.com>
    Signed-off-by: default avatarAleksandar Markovic <amarkovic@wavecomp.com>
    Reviewed-by: default avatarAleksandar Markovic <amarkovic@wavecomp.com>
    Message-Id: <1551718283-4487-2-git-send-email-mateja.marjanovic@rt-rk.com>
    0df911fd
    target/mips: Improve performance of certain MSA instructions
    Mateja Marjanovic authored
    
    
    Eliminate loops for better performance.
    
    Following MSA instructions from "UNOP" group are affected:
    
     - NLZC.<B|H|W|D>
     - NLOC.<B|H|W|D>
     - PCNT.<B|H|W|D>
    
    Following MSA instructions from "BINOP" group are affected:
    
     - ADD_A.<B|H|W|D>
     - ADDS_A.<B|H|W|D>
     - ADDS_S.<B|H|W|D>
     - ADDS_U.<B|H|W|D>
     - ADDV.<B|H|W|D>
     - ASUB_S.<B|H|W|D>
     - ASUB_U.<B|H|W|D>
     - AVE_S.<B|H|W|D>
     - AVE_U.<B|H|W|D>
     - AVER_S.<B|H|W|D>
     - AVER_U.<B|H|W|D>
     - BCLR.<B|H|W|D>
     - BNEG.<B|H|W|D>
     - BSET.<B|H|W|D>
     - CEQ.<B|H|W|D>
     - CLE_S.<B|H|W|D>
     - CLE_U.<B|H|W|D>
     - CLT_S.<B|H|W|D>
     - CLT_U.<B|H|W|D>
     - DIV_S.<B|H|W|D>
     - DIV_U.<B|H|W|D>
     - DOTP_S.<B|H|W|D>
     - DOTP_U.<B|H|W|D>
     - HADD_S.<B|H|W|D>
     - HADD_U.<B|H|W|D>
     - HSUB_S.<B|H|W|D>
     - HSUB_U.<B|H|W|D>
     - MAX_A.<B|H|W|D>
     - MAX_S.<B|H|W|D>
     - MAX_U.<B|H|W|D>
     - MIN_A.<B|H|W|D>
     - MIN_S.<B|H|W|D>
     - MIN_U.<B|H|W|D>
     - MOD_S.<B|H|W|D>
     - MOD_U.<B|H|W|D>
     - MUL_Q.<B|H|W|D>
     - MULR_Q.<B|H|W|D>
     - MULV.<B|H|W|D>
     - SLL.<B|H|W|D>
     - SRA.<B|H|W|D>
     - SRAR.<B|H|W|D>
     - SRL.<B|H|W|D>
     - SRLR.<B|H|W|D>
     - SUBS_S.<B|H|W|D>
     - SUBS_U.<B|H|W|D>
     - SUBSUS_U.<B|H|W|D>
     - SUBSUU_S.<B|H|W|D>
     - SUBV.<B|H|W|D>
    
    Following MSA instructions from "TEROP" group are affected:
    
     - BINSL.<B|H|W|D>
     - BINSR.<B|H|W|D>
     - DPADD_S.<B|H|W|D>
     - DPADD_U.<B|H|W|D>
     - DPSUB_S.<B|H|W|D>
     - DPSUB_U.<B|H|W|D>
     - MADD_Q.<B|H|W|D>
     - MADDR_Q.<B|H|W|D>
     - MADDV.<B|H|W|D>
     - MSUB_Q.<B|H|W|D>
     - MSUBR_Q.<B|H|W|D>
     - MSUBV.<B|H|W|D>
    
    Additionally, following MSA instructionas are also affected:
    
     - ILVL.<B|H|W|D>
     - ILVR.<B|H|W|D>
     - ILVEV.<B|H|W|D>
     - ILVOD.<B|H|W|D>
     - PCKEV.<B|H|W|D>
     - PCKOD.<B|H|W|D>
    
    Signed-off-by: default avatarMateja Marjanovic <mateja.marjanovic@rt-rk.com>
    Signed-off-by: default avatarAleksandar Markovic <amarkovic@wavecomp.com>
    Reviewed-by: default avatarAleksandar Markovic <amarkovic@wavecomp.com>
    Message-Id: <1551718283-4487-2-git-send-email-mateja.marjanovic@rt-rk.com>
Loading