1c7a9ef75SPhilippe Mathieu-Daudé# MIPS SIMD Architecture Module instruction set 2c7a9ef75SPhilippe Mathieu-Daudé# 3c7a9ef75SPhilippe Mathieu-Daudé# Copyright (C) 2020 Philippe Mathieu-Daudé 4c7a9ef75SPhilippe Mathieu-Daudé# 5c7a9ef75SPhilippe Mathieu-Daudé# SPDX-License-Identifier: LGPL-2.1-or-later 6c7a9ef75SPhilippe Mathieu-Daudé# 7c7a9ef75SPhilippe Mathieu-Daudé# Reference: 8c7a9ef75SPhilippe Mathieu-Daudé# MIPS Architecture for Programmers Volume IV-j 9f5c6ee0cSPhilippe Mathieu-Daudé# - The MIPS32 SIMD Architecture Module, Revision 1.12 10c7a9ef75SPhilippe Mathieu-Daudé# (Document Number: MD00866-2B-MSA32-AFP-01.12) 11f5c6ee0cSPhilippe Mathieu-Daudé# - The MIPS64 SIMD Architecture Module, Revision 1.12 12f5c6ee0cSPhilippe Mathieu-Daudé# (Document Number: MD00868-1D-MSA64-AFP-01.12) 13c7a9ef75SPhilippe Mathieu-Daudé 1434fe9fa3SPhilippe Mathieu-Daudé&r rs rt rd sa 155f21f30dSPhilippe Mathieu-Daudé 165c5b6400SPhilippe Mathieu-Daudé&msa_r df wd ws wt 17d61566cfSPhilippe Mathieu-Daudé&msa_bz df wt sa 1875094c33SPhilippe Mathieu-Daudé&msa_ldi df wd sa 19b8e74816SPhilippe Mathieu-Daudé&msa_i df wd ws sa 204701d23aSPhilippe Mathieu-Daudé&msa_bit df wd ws m 214701d23aSPhilippe Mathieu-Daudé 224701d23aSPhilippe Mathieu-Daudé%bit_df 16:7 !function=bit_df 234701d23aSPhilippe Mathieu-Daudé%bit_m 16:7 !function=bit_m 245c5b6400SPhilippe Mathieu-Daudé%2r_df_w 16:1 !function=plus_2 25ff29e5d3SPhilippe Mathieu-Daudé%3r_df_h 21:1 !function=plus_1 262d5246f3SPhilippe Mathieu-Daudé%3r_df_w 21:1 !function=plus_2 27c7a9ef75SPhilippe Mathieu-Daudé 2834fe9fa3SPhilippe Mathieu-Daudé@lsa ...... rs:5 rt:5 rd:5 ... sa:2 ...... &r 29ce121fe2SPhilippe Mathieu-Daudé@ldst ...... sa:s10 ws:5 wd:5 .... df:2 &msa_i 30d61566cfSPhilippe Mathieu-Daudé@bz_v ...... ... .. wt:5 sa:16 &msa_bz df=3 31d61566cfSPhilippe Mathieu-Daudé@bz ...... ... df:2 wt:5 sa:16 &msa_bz 327acb5c78SPhilippe Mathieu-Daudé@vec ...... ..... wt:5 ws:5 wd:5 ...... &msa_r df=0 33675bf34aSPhilippe Mathieu-Daudé@2r ...... ........ df:2 ws:5 wd:5 ...... &msa_r wt=0 345c5b6400SPhilippe Mathieu-Daudé@2rf ...... ......... . ws:5 wd:5 ...... &msa_r wt=0 df=%2r_df_w 3567bedef5SPhilippe Mathieu-Daudé@3r ...... ... df:2 wt:5 ws:5 wd:5 ...... &msa_r 36ff29e5d3SPhilippe Mathieu-Daudé@3rf_h ...... .... . wt:5 ws:5 wd:5 ...... &msa_r df=%3r_df_h 372d5246f3SPhilippe Mathieu-Daudé@3rf_w ...... .... . wt:5 ws:5 wd:5 ...... &msa_r df=%3r_df_w 38b8e74816SPhilippe Mathieu-Daudé@u5 ...... ... df:2 sa:5 ws:5 wd:5 ...... &msa_i 39b8e74816SPhilippe Mathieu-Daudé@s5 ...... ... df:2 sa:s5 ws:5 wd:5 ...... &msa_i 40a9e17958SPhilippe Mathieu-Daudé@i8_df ...... df:2 sa:s8 ws:5 wd:5 ...... &msa_i 417cc351ffSPhilippe Mathieu-Daudé@i8 ...... .. sa:s8 ws:5 wd:5 ...... &msa_i df=0 4275094c33SPhilippe Mathieu-Daudé@ldi ...... ... df:2 sa:s10 wd:5 ...... &msa_ldi 434701d23aSPhilippe Mathieu-Daudé@bit ...... ... ....... ws:5 wd:5 ...... &msa_bit df=%bit_df m=%bit_m 44c7a9ef75SPhilippe Mathieu-Daudé 455f21f30dSPhilippe Mathieu-DaudéLSA 000000 ..... ..... ..... 000 .. 000101 @lsa 46f5c6ee0cSPhilippe Mathieu-DaudéDLSA 000000 ..... ..... ..... 000 .. 010101 @lsa 475f21f30dSPhilippe Mathieu-Daudé 48d61566cfSPhilippe Mathieu-DaudéBZ_V 010001 01011 ..... ................ @bz_v 49d61566cfSPhilippe Mathieu-DaudéBNZ_V 010001 01111 ..... ................ @bz_v 50d61566cfSPhilippe Mathieu-DaudéBZ 010001 110 .. ..... ................ @bz 51d61566cfSPhilippe Mathieu-DaudéBNZ 010001 111 .. ..... ................ @bz 52c7a9ef75SPhilippe Mathieu-Daudé 5375094c33SPhilippe Mathieu-Daudé{ 547cc351ffSPhilippe Mathieu-Daudé ANDI 011110 00 ........ ..... ..... 000000 @i8 557cc351ffSPhilippe Mathieu-Daudé ORI 011110 01 ........ ..... ..... 000000 @i8 567cc351ffSPhilippe Mathieu-Daudé NORI 011110 10 ........ ..... ..... 000000 @i8 577cc351ffSPhilippe Mathieu-Daudé XORI 011110 11 ........ ..... ..... 000000 @i8 587cc351ffSPhilippe Mathieu-Daudé BMNZI 011110 00 ........ ..... ..... 000001 @i8 597cc351ffSPhilippe Mathieu-Daudé BMZI 011110 01 ........ ..... ..... 000001 @i8 607cc351ffSPhilippe Mathieu-Daudé BSELI 011110 10 ........ ..... ..... 000001 @i8 61a9e17958SPhilippe Mathieu-Daudé SHF 011110 .. ........ ..... ..... 000010 @i8_df 62a9e17958SPhilippe Mathieu-Daudé 63b8e74816SPhilippe Mathieu-Daudé ADDVI 011110 000 .. ..... ..... ..... 000110 @u5 64b8e74816SPhilippe Mathieu-Daudé SUBVI 011110 001 .. ..... ..... ..... 000110 @u5 65b8e74816SPhilippe Mathieu-Daudé MAXI_S 011110 010 .. ..... ..... ..... 000110 @s5 66b8e74816SPhilippe Mathieu-Daudé MAXI_U 011110 011 .. ..... ..... ..... 000110 @u5 67b8e74816SPhilippe Mathieu-Daudé MINI_S 011110 100 .. ..... ..... ..... 000110 @s5 68b8e74816SPhilippe Mathieu-Daudé MINI_U 011110 101 .. ..... ..... ..... 000110 @u5 69b8e74816SPhilippe Mathieu-Daudé 70b8e74816SPhilippe Mathieu-Daudé CEQI 011110 000 .. ..... ..... ..... 000111 @s5 71b8e74816SPhilippe Mathieu-Daudé CLTI_S 011110 010 .. ..... ..... ..... 000111 @s5 72b8e74816SPhilippe Mathieu-Daudé CLTI_U 011110 011 .. ..... ..... ..... 000111 @u5 73b8e74816SPhilippe Mathieu-Daudé CLEI_S 011110 100 .. ..... ..... ..... 000111 @s5 74b8e74816SPhilippe Mathieu-Daudé CLEI_U 011110 101 .. ..... ..... ..... 000111 @u5 75b8e74816SPhilippe Mathieu-Daudé 7675094c33SPhilippe Mathieu-Daudé LDI 011110 110 .. .......... ..... 000111 @ldi 7775094c33SPhilippe Mathieu-Daudé 784701d23aSPhilippe Mathieu-Daudé SLLI 011110 000 ....... ..... ..... 001001 @bit 794701d23aSPhilippe Mathieu-Daudé SRAI 011110 001 ....... ..... ..... 001001 @bit 804701d23aSPhilippe Mathieu-Daudé SRLI 011110 010 ....... ..... ..... 001001 @bit 814701d23aSPhilippe Mathieu-Daudé BCLRI 011110 011 ....... ..... ..... 001001 @bit 824701d23aSPhilippe Mathieu-Daudé BSETI 011110 100 ....... ..... ..... 001001 @bit 834701d23aSPhilippe Mathieu-Daudé BNEGI 011110 101 ....... ..... ..... 001001 @bit 844701d23aSPhilippe Mathieu-Daudé BINSLI 011110 110 ....... ..... ..... 001001 @bit 854701d23aSPhilippe Mathieu-Daudé BINSRI 011110 111 ....... ..... ..... 001001 @bit 864701d23aSPhilippe Mathieu-Daudé 874701d23aSPhilippe Mathieu-Daudé SAT_S 011110 000 ....... ..... ..... 001010 @bit 884701d23aSPhilippe Mathieu-Daudé SAT_U 011110 001 ....... ..... ..... 001010 @bit 894701d23aSPhilippe Mathieu-Daudé SRARI 011110 010 ....... ..... ..... 001010 @bit 904701d23aSPhilippe Mathieu-Daudé SRLRI 011110 011 ....... ..... ..... 001010 @bit 914701d23aSPhilippe Mathieu-Daudé 92*f18708a5SPhilippe Mathieu-Daudé DOTP_S 011110 000.. ..... ..... ..... 010011 @3r 93*f18708a5SPhilippe Mathieu-Daudé DOTP_U 011110 001.. ..... ..... ..... 010011 @3r 94*f18708a5SPhilippe Mathieu-Daudé DPADD_S 011110 010.. ..... ..... ..... 010011 @3r 95*f18708a5SPhilippe Mathieu-Daudé DPADD_U 011110 011.. ..... ..... ..... 010011 @3r 96*f18708a5SPhilippe Mathieu-Daudé DPSUB_S 011110 100.. ..... ..... ..... 010011 @3r 97*f18708a5SPhilippe Mathieu-Daudé DPSUB_U 011110 101.. ..... ..... ..... 010011 @3r 98*f18708a5SPhilippe Mathieu-Daudé 9967bedef5SPhilippe Mathieu-Daudé SLD 011110 000 .. ..... ..... ..... 010100 @3r 10067bedef5SPhilippe Mathieu-Daudé SPLAT 011110 001 .. ..... ..... ..... 010100 @3r 10167bedef5SPhilippe Mathieu-Daudé 10267bedef5SPhilippe Mathieu-Daudé VSHF 011110 000 .. ..... ..... ..... 010101 @3r 103*f18708a5SPhilippe Mathieu-Daudé HADD_S 011110 100.. ..... ..... ..... 010101 @3r 104*f18708a5SPhilippe Mathieu-Daudé HADD_U 011110 101.. ..... ..... ..... 010101 @3r 105*f18708a5SPhilippe Mathieu-Daudé HSUB_S 011110 110.. ..... ..... ..... 010101 @3r 106*f18708a5SPhilippe Mathieu-Daudé HSUB_U 011110 111.. ..... ..... ..... 010101 @3r 10767bedef5SPhilippe Mathieu-Daudé 1082d5246f3SPhilippe Mathieu-Daudé FCAF 011110 0000 . ..... ..... ..... 011010 @3rf_w 1092d5246f3SPhilippe Mathieu-Daudé FCUN 011110 0001 . ..... ..... ..... 011010 @3rf_w 1102d5246f3SPhilippe Mathieu-Daudé FCEQ 011110 0010 . ..... ..... ..... 011010 @3rf_w 1112d5246f3SPhilippe Mathieu-Daudé FCUEQ 011110 0011 . ..... ..... ..... 011010 @3rf_w 1122d5246f3SPhilippe Mathieu-Daudé FCLT 011110 0100 . ..... ..... ..... 011010 @3rf_w 1132d5246f3SPhilippe Mathieu-Daudé FCULT 011110 0101 . ..... ..... ..... 011010 @3rf_w 1142d5246f3SPhilippe Mathieu-Daudé FCLE 011110 0110 . ..... ..... ..... 011010 @3rf_w 1152d5246f3SPhilippe Mathieu-Daudé FCULE 011110 0111 . ..... ..... ..... 011010 @3rf_w 1162d5246f3SPhilippe Mathieu-Daudé FSAF 011110 1000 . ..... ..... ..... 011010 @3rf_w 1172d5246f3SPhilippe Mathieu-Daudé FSUN 011110 1001 . ..... ..... ..... 011010 @3rf_w 1182d5246f3SPhilippe Mathieu-Daudé FSEQ 011110 1010 . ..... ..... ..... 011010 @3rf_w 1192d5246f3SPhilippe Mathieu-Daudé FSUEQ 011110 1011 . ..... ..... ..... 011010 @3rf_w 1202d5246f3SPhilippe Mathieu-Daudé FSLT 011110 1100 . ..... ..... ..... 011010 @3rf_w 1212d5246f3SPhilippe Mathieu-Daudé FSULT 011110 1101 . ..... ..... ..... 011010 @3rf_w 1222d5246f3SPhilippe Mathieu-Daudé FSLE 011110 1110 . ..... ..... ..... 011010 @3rf_w 1232d5246f3SPhilippe Mathieu-Daudé FSULE 011110 1111 . ..... ..... ..... 011010 @3rf_w 1242d5246f3SPhilippe Mathieu-Daudé 1252d5246f3SPhilippe Mathieu-Daudé FADD 011110 0000 . ..... ..... ..... 011011 @3rf_w 1262d5246f3SPhilippe Mathieu-Daudé FSUB 011110 0001 . ..... ..... ..... 011011 @3rf_w 1272d5246f3SPhilippe Mathieu-Daudé FMUL 011110 0010 . ..... ..... ..... 011011 @3rf_w 1282d5246f3SPhilippe Mathieu-Daudé FDIV 011110 0011 . ..... ..... ..... 011011 @3rf_w 1292d5246f3SPhilippe Mathieu-Daudé FMADD 011110 0100 . ..... ..... ..... 011011 @3rf_w 1302d5246f3SPhilippe Mathieu-Daudé FMSUB 011110 0101 . ..... ..... ..... 011011 @3rf_w 1312d5246f3SPhilippe Mathieu-Daudé FEXP2 011110 0111 . ..... ..... ..... 011011 @3rf_w 1322d5246f3SPhilippe Mathieu-Daudé FEXDO 011110 1000 . ..... ..... ..... 011011 @3rf_w 1332d5246f3SPhilippe Mathieu-Daudé FTQ 011110 1010 . ..... ..... ..... 011011 @3rf_w 1342d5246f3SPhilippe Mathieu-Daudé FMIN 011110 1100 . ..... ..... ..... 011011 @3rf_w 1352d5246f3SPhilippe Mathieu-Daudé FMIN_A 011110 1101 . ..... ..... ..... 011011 @3rf_w 1362d5246f3SPhilippe Mathieu-Daudé FMAX 011110 1110 . ..... ..... ..... 011011 @3rf_w 1372d5246f3SPhilippe Mathieu-Daudé FMAX_A 011110 1111 . ..... ..... ..... 011011 @3rf_w 1382d5246f3SPhilippe Mathieu-Daudé 1392d5246f3SPhilippe Mathieu-Daudé FCOR 011110 0001 . ..... ..... ..... 011100 @3rf_w 1402d5246f3SPhilippe Mathieu-Daudé FCUNE 011110 0010 . ..... ..... ..... 011100 @3rf_w 1412d5246f3SPhilippe Mathieu-Daudé FCNE 011110 0011 . ..... ..... ..... 011100 @3rf_w 142ff29e5d3SPhilippe Mathieu-Daudé MUL_Q 011110 0100 . ..... ..... ..... 011100 @3rf_h 143ff29e5d3SPhilippe Mathieu-Daudé MADD_Q 011110 0101 . ..... ..... ..... 011100 @3rf_h 144ff29e5d3SPhilippe Mathieu-Daudé MSUB_Q 011110 0110 . ..... ..... ..... 011100 @3rf_h 1452d5246f3SPhilippe Mathieu-Daudé FSOR 011110 1001 . ..... ..... ..... 011100 @3rf_w 1462d5246f3SPhilippe Mathieu-Daudé FSUNE 011110 1010 . ..... ..... ..... 011100 @3rf_w 1472d5246f3SPhilippe Mathieu-Daudé FSNE 011110 1011 . ..... ..... ..... 011100 @3rf_w 148ff29e5d3SPhilippe Mathieu-Daudé MULR_Q 011110 1100 . ..... ..... ..... 011100 @3rf_h 149ff29e5d3SPhilippe Mathieu-Daudé MADDR_Q 011110 1101 . ..... ..... ..... 011100 @3rf_h 150ff29e5d3SPhilippe Mathieu-Daudé MSUBR_Q 011110 1110 . ..... ..... ..... 011100 @3rf_h 151ff29e5d3SPhilippe Mathieu-Daudé 1527acb5c78SPhilippe Mathieu-Daudé AND_V 011110 00000 ..... ..... ..... 011110 @vec 1537acb5c78SPhilippe Mathieu-Daudé OR_V 011110 00001 ..... ..... ..... 011110 @vec 1547acb5c78SPhilippe Mathieu-Daudé NOR_V 011110 00010 ..... ..... ..... 011110 @vec 1557acb5c78SPhilippe Mathieu-Daudé XOR_V 011110 00011 ..... ..... ..... 011110 @vec 1567acb5c78SPhilippe Mathieu-Daudé BMNZ_V 011110 00100 ..... ..... ..... 011110 @vec 1577acb5c78SPhilippe Mathieu-Daudé BMZ_V 011110 00101 ..... ..... ..... 011110 @vec 1587acb5c78SPhilippe Mathieu-Daudé BSEL_V 011110 00110 ..... ..... ..... 011110 @vec 159675bf34aSPhilippe Mathieu-Daudé FILL 011110 11000000 .. ..... ..... 011110 @2r 160adcff99aSPhilippe Mathieu-Daudé PCNT 011110 11000001 .. ..... ..... 011110 @2r 161adcff99aSPhilippe Mathieu-Daudé NLOC 011110 11000010 .. ..... ..... 011110 @2r 162adcff99aSPhilippe Mathieu-Daudé NLZC 011110 11000011 .. ..... ..... 011110 @2r 1635c5b6400SPhilippe Mathieu-Daudé FCLASS 011110 110010000 . ..... ..... 011110 @2rf 1645c5b6400SPhilippe Mathieu-Daudé FTRUNC_S 011110 110010001 . ..... ..... 011110 @2rf 1655c5b6400SPhilippe Mathieu-Daudé FTRUNC_U 011110 110010010 . ..... ..... 011110 @2rf 1665c5b6400SPhilippe Mathieu-Daudé FSQRT 011110 110010011 . ..... ..... 011110 @2rf 1675c5b6400SPhilippe Mathieu-Daudé FRSQRT 011110 110010100 . ..... ..... 011110 @2rf 1685c5b6400SPhilippe Mathieu-Daudé FRCP 011110 110010101 . ..... ..... 011110 @2rf 1695c5b6400SPhilippe Mathieu-Daudé FRINT 011110 110010110 . ..... ..... 011110 @2rf 1705c5b6400SPhilippe Mathieu-Daudé FLOG2 011110 110010111 . ..... ..... 011110 @2rf 1715c5b6400SPhilippe Mathieu-Daudé FEXUPL 011110 110011000 . ..... ..... 011110 @2rf 1725c5b6400SPhilippe Mathieu-Daudé FEXUPR 011110 110011001 . ..... ..... 011110 @2rf 1735c5b6400SPhilippe Mathieu-Daudé FFQL 011110 110011010 . ..... ..... 011110 @2rf 1745c5b6400SPhilippe Mathieu-Daudé FFQR 011110 110011011 . ..... ..... 011110 @2rf 1755c5b6400SPhilippe Mathieu-Daudé FTINT_S 011110 110011100 . ..... ..... 011110 @2rf 1765c5b6400SPhilippe Mathieu-Daudé FTINT_U 011110 110011101 . ..... ..... 011110 @2rf 1775c5b6400SPhilippe Mathieu-Daudé FFINT_S 011110 110011110 . ..... ..... 011110 @2rf 1785c5b6400SPhilippe Mathieu-Daudé FFINT_U 011110 110011111 . ..... ..... 011110 @2rf 1795c5b6400SPhilippe Mathieu-Daudé 180ce121fe2SPhilippe Mathieu-Daudé LD 011110 .......... ..... ..... 1000 .. @ldst 181ce121fe2SPhilippe Mathieu-Daudé ST 011110 .......... ..... ..... 1001 .. @ldst 182ce121fe2SPhilippe Mathieu-Daudé 183c7a9ef75SPhilippe Mathieu-Daudé MSA 011110 -------------------------- 18475094c33SPhilippe Mathieu-Daudé} 185