Source file src/cmd/internal/obj/s390x/vector.go

     1  // Copyright 2016 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package s390x
     6  
     7  import (
     8  	"cmd/internal/obj"
     9  )
    10  
    11  // This file contains utility functions for use when
    12  // assembling vector instructions.
    13  
    14  // vop returns the opcode, element size and condition
    15  // setting for the given (possibly extended) mnemonic.
    16  func vop(as obj.As) (opcode, es, cs uint32) {
    17  	switch as {
    18  	default:
    19  		return 0, 0, 0
    20  	case AVA:
    21  		return op_VA, 0, 0
    22  	case AVAB:
    23  		return op_VA, 0, 0
    24  	case AVAH:
    25  		return op_VA, 1, 0
    26  	case AVAF:
    27  		return op_VA, 2, 0
    28  	case AVAG:
    29  		return op_VA, 3, 0
    30  	case AVAQ:
    31  		return op_VA, 4, 0
    32  	case AVACC:
    33  		return op_VACC, 0, 0
    34  	case AVACCB:
    35  		return op_VACC, 0, 0
    36  	case AVACCH:
    37  		return op_VACC, 1, 0
    38  	case AVACCF:
    39  		return op_VACC, 2, 0
    40  	case AVACCG:
    41  		return op_VACC, 3, 0
    42  	case AVACCQ:
    43  		return op_VACC, 4, 0
    44  	case AVAC:
    45  		return op_VAC, 0, 0
    46  	case AVACQ:
    47  		return op_VAC, 4, 0
    48  	case AVMSLG:
    49  		return op_VMSL, 3, 0
    50  	case AVMSLEG:
    51  		return op_VMSL, 3, 8
    52  	case AVMSLOG:
    53  		return op_VMSL, 3, 4
    54  	case AVMSLEOG:
    55  		return op_VMSL, 3, 12
    56  	case AVACCC:
    57  		return op_VACCC, 0, 0
    58  	case AVACCCQ:
    59  		return op_VACCC, 4, 0
    60  	case AVN:
    61  		return op_VN, 0, 0
    62  	case AVNC:
    63  		return op_VNC, 0, 0
    64  	case AVAVG:
    65  		return op_VAVG, 0, 0
    66  	case AVAVGB:
    67  		return op_VAVG, 0, 0
    68  	case AVAVGH:
    69  		return op_VAVG, 1, 0
    70  	case AVAVGF:
    71  		return op_VAVG, 2, 0
    72  	case AVAVGG:
    73  		return op_VAVG, 3, 0
    74  	case AVAVGL:
    75  		return op_VAVGL, 0, 0
    76  	case AVAVGLB:
    77  		return op_VAVGL, 0, 0
    78  	case AVAVGLH:
    79  		return op_VAVGL, 1, 0
    80  	case AVAVGLF:
    81  		return op_VAVGL, 2, 0
    82  	case AVAVGLG:
    83  		return op_VAVGL, 3, 0
    84  	case AVCKSM:
    85  		return op_VCKSM, 0, 0
    86  	case AVCEQ:
    87  		return op_VCEQ, 0, 0
    88  	case AVCEQB:
    89  		return op_VCEQ, 0, 0
    90  	case AVCEQH:
    91  		return op_VCEQ, 1, 0
    92  	case AVCEQF:
    93  		return op_VCEQ, 2, 0
    94  	case AVCEQG:
    95  		return op_VCEQ, 3, 0
    96  	case AVCEQBS:
    97  		return op_VCEQ, 0, 1
    98  	case AVCEQHS:
    99  		return op_VCEQ, 1, 1
   100  	case AVCEQFS:
   101  		return op_VCEQ, 2, 1
   102  	case AVCEQGS:
   103  		return op_VCEQ, 3, 1
   104  	case AVCH:
   105  		return op_VCH, 0, 0
   106  	case AVCHB:
   107  		return op_VCH, 0, 0
   108  	case AVCHH:
   109  		return op_VCH, 1, 0
   110  	case AVCHF:
   111  		return op_VCH, 2, 0
   112  	case AVCHG:
   113  		return op_VCH, 3, 0
   114  	case AVCHBS:
   115  		return op_VCH, 0, 1
   116  	case AVCHHS:
   117  		return op_VCH, 1, 1
   118  	case AVCHFS:
   119  		return op_VCH, 2, 1
   120  	case AVCHGS:
   121  		return op_VCH, 3, 1
   122  	case AVCHL:
   123  		return op_VCHL, 0, 0
   124  	case AVCHLB:
   125  		return op_VCHL, 0, 0
   126  	case AVCHLH:
   127  		return op_VCHL, 1, 0
   128  	case AVCHLF:
   129  		return op_VCHL, 2, 0
   130  	case AVCHLG:
   131  		return op_VCHL, 3, 0
   132  	case AVCHLBS:
   133  		return op_VCHL, 0, 1
   134  	case AVCHLHS:
   135  		return op_VCHL, 1, 1
   136  	case AVCHLFS:
   137  		return op_VCHL, 2, 1
   138  	case AVCHLGS:
   139  		return op_VCHL, 3, 1
   140  	case AVCLZ:
   141  		return op_VCLZ, 0, 0
   142  	case AVCLZB:
   143  		return op_VCLZ, 0, 0
   144  	case AVCLZH:
   145  		return op_VCLZ, 1, 0
   146  	case AVCLZF:
   147  		return op_VCLZ, 2, 0
   148  	case AVCLZG:
   149  		return op_VCLZ, 3, 0
   150  	case AVCTZ:
   151  		return op_VCTZ, 0, 0
   152  	case AVCTZB:
   153  		return op_VCTZ, 0, 0
   154  	case AVCTZH:
   155  		return op_VCTZ, 1, 0
   156  	case AVCTZF:
   157  		return op_VCTZ, 2, 0
   158  	case AVCTZG:
   159  		return op_VCTZ, 3, 0
   160  	case AVEC:
   161  		return op_VEC, 0, 0
   162  	case AVECB:
   163  		return op_VEC, 0, 0
   164  	case AVECH:
   165  		return op_VEC, 1, 0
   166  	case AVECF:
   167  		return op_VEC, 2, 0
   168  	case AVECG:
   169  		return op_VEC, 3, 0
   170  	case AVECL:
   171  		return op_VECL, 0, 0
   172  	case AVECLB:
   173  		return op_VECL, 0, 0
   174  	case AVECLH:
   175  		return op_VECL, 1, 0
   176  	case AVECLF:
   177  		return op_VECL, 2, 0
   178  	case AVECLG:
   179  		return op_VECL, 3, 0
   180  	case AVERIM:
   181  		return op_VERIM, 0, 0
   182  	case AVERIMB:
   183  		return op_VERIM, 0, 0
   184  	case AVERIMH:
   185  		return op_VERIM, 1, 0
   186  	case AVERIMF:
   187  		return op_VERIM, 2, 0
   188  	case AVERIMG:
   189  		return op_VERIM, 3, 0
   190  	case AVERLL:
   191  		return op_VERLL, 0, 0
   192  	case AVERLLB:
   193  		return op_VERLL, 0, 0
   194  	case AVERLLH:
   195  		return op_VERLL, 1, 0
   196  	case AVERLLF:
   197  		return op_VERLL, 2, 0
   198  	case AVERLLG:
   199  		return op_VERLL, 3, 0
   200  	case AVERLLV:
   201  		return op_VERLLV, 0, 0
   202  	case AVERLLVB:
   203  		return op_VERLLV, 0, 0
   204  	case AVERLLVH:
   205  		return op_VERLLV, 1, 0
   206  	case AVERLLVF:
   207  		return op_VERLLV, 2, 0
   208  	case AVERLLVG:
   209  		return op_VERLLV, 3, 0
   210  	case AVESLV:
   211  		return op_VESLV, 0, 0
   212  	case AVESLVB:
   213  		return op_VESLV, 0, 0
   214  	case AVESLVH:
   215  		return op_VESLV, 1, 0
   216  	case AVESLVF:
   217  		return op_VESLV, 2, 0
   218  	case AVESLVG:
   219  		return op_VESLV, 3, 0
   220  	case AVESL:
   221  		return op_VESL, 0, 0
   222  	case AVESLB:
   223  		return op_VESL, 0, 0
   224  	case AVESLH:
   225  		return op_VESL, 1, 0
   226  	case AVESLF:
   227  		return op_VESL, 2, 0
   228  	case AVESLG:
   229  		return op_VESL, 3, 0
   230  	case AVESRA:
   231  		return op_VESRA, 0, 0
   232  	case AVESRAB:
   233  		return op_VESRA, 0, 0
   234  	case AVESRAH:
   235  		return op_VESRA, 1, 0
   236  	case AVESRAF:
   237  		return op_VESRA, 2, 0
   238  	case AVESRAG:
   239  		return op_VESRA, 3, 0
   240  	case AVESRAV:
   241  		return op_VESRAV, 0, 0
   242  	case AVESRAVB:
   243  		return op_VESRAV, 0, 0
   244  	case AVESRAVH:
   245  		return op_VESRAV, 1, 0
   246  	case AVESRAVF:
   247  		return op_VESRAV, 2, 0
   248  	case AVESRAVG:
   249  		return op_VESRAV, 3, 0
   250  	case AVESRL:
   251  		return op_VESRL, 0, 0
   252  	case AVESRLB:
   253  		return op_VESRL, 0, 0
   254  	case AVESRLH:
   255  		return op_VESRL, 1, 0
   256  	case AVESRLF:
   257  		return op_VESRL, 2, 0
   258  	case AVESRLG:
   259  		return op_VESRL, 3, 0
   260  	case AVESRLV:
   261  		return op_VESRLV, 0, 0
   262  	case AVESRLVB:
   263  		return op_VESRLV, 0, 0
   264  	case AVESRLVH:
   265  		return op_VESRLV, 1, 0
   266  	case AVESRLVF:
   267  		return op_VESRLV, 2, 0
   268  	case AVESRLVG:
   269  		return op_VESRLV, 3, 0
   270  	case AVX:
   271  		return op_VX, 0, 0
   272  	case AVFAE:
   273  		return op_VFAE, 0, 0
   274  	case AVFAEB:
   275  		return op_VFAE, 0, 0
   276  	case AVFAEH:
   277  		return op_VFAE, 1, 0
   278  	case AVFAEF:
   279  		return op_VFAE, 2, 0
   280  	case AVFAEBS:
   281  		return op_VFAE, 0, 1
   282  	case AVFAEHS:
   283  		return op_VFAE, 1, 1
   284  	case AVFAEFS:
   285  		return op_VFAE, 2, 1
   286  	case AVFAEZB:
   287  		return op_VFAE, 0, 2
   288  	case AVFAEZH:
   289  		return op_VFAE, 1, 2
   290  	case AVFAEZF:
   291  		return op_VFAE, 2, 2
   292  	case AVFAEZBS:
   293  		return op_VFAE, 0, 3
   294  	case AVFAEZHS:
   295  		return op_VFAE, 1, 3
   296  	case AVFAEZFS:
   297  		return op_VFAE, 2, 3
   298  	case AVFEE:
   299  		return op_VFEE, 0, 0
   300  	case AVFEEB:
   301  		return op_VFEE, 0, 0
   302  	case AVFEEH:
   303  		return op_VFEE, 1, 0
   304  	case AVFEEF:
   305  		return op_VFEE, 2, 0
   306  	case AVFEEBS:
   307  		return op_VFEE, 0, 1
   308  	case AVFEEHS:
   309  		return op_VFEE, 1, 1
   310  	case AVFEEFS:
   311  		return op_VFEE, 2, 1
   312  	case AVFEEZB:
   313  		return op_VFEE, 0, 2
   314  	case AVFEEZH:
   315  		return op_VFEE, 1, 2
   316  	case AVFEEZF:
   317  		return op_VFEE, 2, 2
   318  	case AVFEEZBS:
   319  		return op_VFEE, 0, 3
   320  	case AVFEEZHS:
   321  		return op_VFEE, 1, 3
   322  	case AVFEEZFS:
   323  		return op_VFEE, 2, 3
   324  	case AVFENE:
   325  		return op_VFENE, 0, 0
   326  	case AVFENEB:
   327  		return op_VFENE, 0, 0
   328  	case AVFENEH:
   329  		return op_VFENE, 1, 0
   330  	case AVFENEF:
   331  		return op_VFENE, 2, 0
   332  	case AVFENEBS:
   333  		return op_VFENE, 0, 1
   334  	case AVFENEHS:
   335  		return op_VFENE, 1, 1
   336  	case AVFENEFS:
   337  		return op_VFENE, 2, 1
   338  	case AVFENEZB:
   339  		return op_VFENE, 0, 2
   340  	case AVFENEZH:
   341  		return op_VFENE, 1, 2
   342  	case AVFENEZF:
   343  		return op_VFENE, 2, 2
   344  	case AVFENEZBS:
   345  		return op_VFENE, 0, 3
   346  	case AVFENEZHS:
   347  		return op_VFENE, 1, 3
   348  	case AVFENEZFS:
   349  		return op_VFENE, 2, 3
   350  	case AVFA:
   351  		return op_VFA, 0, 0
   352  	case AVFADB:
   353  		return op_VFA, 3, 0
   354  	case AWFADB:
   355  		return op_VFA, 3, 0
   356  	case AWFK:
   357  		return op_WFK, 0, 0
   358  	case AWFKDB:
   359  		return op_WFK, 3, 0
   360  	case AVFCE:
   361  		return op_VFCE, 0, 0
   362  	case AVFCEDB:
   363  		return op_VFCE, 3, 0
   364  	case AVFCEDBS:
   365  		return op_VFCE, 3, 1
   366  	case AWFCEDB:
   367  		return op_VFCE, 3, 0
   368  	case AWFCEDBS:
   369  		return op_VFCE, 3, 1
   370  	case AVFCH:
   371  		return op_VFCH, 0, 0
   372  	case AVFCHDB:
   373  		return op_VFCH, 3, 0
   374  	case AVFCHDBS:
   375  		return op_VFCH, 3, 1
   376  	case AWFCHDB:
   377  		return op_VFCH, 3, 0
   378  	case AWFCHDBS:
   379  		return op_VFCH, 3, 1
   380  	case AVFCHE:
   381  		return op_VFCHE, 0, 0
   382  	case AVFCHEDB:
   383  		return op_VFCHE, 3, 0
   384  	case AVFCHEDBS:
   385  		return op_VFCHE, 3, 1
   386  	case AWFCHEDB:
   387  		return op_VFCHE, 3, 0
   388  	case AWFCHEDBS:
   389  		return op_VFCHE, 3, 1
   390  	case AWFC:
   391  		return op_WFC, 0, 0
   392  	case AWFCDB:
   393  		return op_WFC, 3, 0
   394  	case AVCDG:
   395  		return op_VCDG, 0, 0
   396  	case AVCDGB:
   397  		return op_VCDG, 3, 0
   398  	case AWCDGB:
   399  		return op_VCDG, 3, 0
   400  	case AVCDLG:
   401  		return op_VCDLG, 0, 0
   402  	case AVCDLGB:
   403  		return op_VCDLG, 3, 0
   404  	case AWCDLGB:
   405  		return op_VCDLG, 3, 0
   406  	case AVCGD:
   407  		return op_VCGD, 0, 0
   408  	case AVCGDB:
   409  		return op_VCGD, 3, 0
   410  	case AWCGDB:
   411  		return op_VCGD, 3, 0
   412  	case AVCLGD:
   413  		return op_VCLGD, 0, 0
   414  	case AVCLGDB:
   415  		return op_VCLGD, 3, 0
   416  	case AWCLGDB:
   417  		return op_VCLGD, 3, 0
   418  	case AVFD:
   419  		return op_VFD, 0, 0
   420  	case AVFDDB:
   421  		return op_VFD, 3, 0
   422  	case AWFDDB:
   423  		return op_VFD, 3, 0
   424  	case AVLDE:
   425  		return op_VLDE, 0, 0
   426  	case AVLDEB:
   427  		return op_VLDE, 2, 0
   428  	case AWLDEB:
   429  		return op_VLDE, 2, 0
   430  	case AVLED:
   431  		return op_VLED, 0, 0
   432  	case AVLEDB:
   433  		return op_VLED, 3, 0
   434  	case AWLEDB:
   435  		return op_VLED, 3, 0
   436  	case AVFM:
   437  		return op_VFM, 0, 0
   438  	case AVFMDB:
   439  		return op_VFM, 3, 0
   440  	case AWFMDB:
   441  		return op_VFM, 3, 0
   442  	case AVFMA:
   443  		return op_VFMA, 0, 0
   444  	case AVFMADB:
   445  		return op_VFMA, 3, 0
   446  	case AWFMADB:
   447  		return op_VFMA, 3, 0
   448  	case AVFMS:
   449  		return op_VFMS, 0, 0
   450  	case AVFMSDB:
   451  		return op_VFMS, 3, 0
   452  	case AWFMSDB:
   453  		return op_VFMS, 3, 0
   454  	case AVFPSO:
   455  		return op_VFPSO, 0, 0
   456  	case AVFPSODB:
   457  		return op_VFPSO, 3, 0
   458  	case AWFPSODB:
   459  		return op_VFPSO, 3, 0
   460  	case AVFLCDB:
   461  		return op_VFPSO, 3, 0
   462  	case AWFLCDB:
   463  		return op_VFPSO, 3, 0
   464  	case AVFLNDB:
   465  		return op_VFPSO, 3, 1
   466  	case AWFLNDB:
   467  		return op_VFPSO, 3, 1
   468  	case AVFLPDB:
   469  		return op_VFPSO, 3, 2
   470  	case AWFLPDB:
   471  		return op_VFPSO, 3, 2
   472  	case AVFSQ:
   473  		return op_VFSQ, 0, 0
   474  	case AVFSQDB:
   475  		return op_VFSQ, 3, 0
   476  	case AWFSQDB:
   477  		return op_VFSQ, 3, 0
   478  	case AVFS:
   479  		return op_VFS, 0, 0
   480  	case AVFSDB:
   481  		return op_VFS, 3, 0
   482  	case AWFSDB:
   483  		return op_VFS, 3, 0
   484  	case AVFTCI:
   485  		return op_VFTCI, 0, 0
   486  	case AVFTCIDB:
   487  		return op_VFTCI, 3, 0
   488  	case AWFTCIDB:
   489  		return op_VFTCI, 3, 0
   490  	case AVGFM:
   491  		return op_VGFM, 0, 0
   492  	case AVGFMB:
   493  		return op_VGFM, 0, 0
   494  	case AVGFMH:
   495  		return op_VGFM, 1, 0
   496  	case AVGFMF:
   497  		return op_VGFM, 2, 0
   498  	case AVGFMG:
   499  		return op_VGFM, 3, 0
   500  	case AVGFMA:
   501  		return op_VGFMA, 0, 0
   502  	case AVGFMAB:
   503  		return op_VGFMA, 0, 0
   504  	case AVGFMAH:
   505  		return op_VGFMA, 1, 0
   506  	case AVGFMAF:
   507  		return op_VGFMA, 2, 0
   508  	case AVGFMAG:
   509  		return op_VGFMA, 3, 0
   510  	case AVGEF:
   511  		return op_VGEF, 0, 0
   512  	case AVGEG:
   513  		return op_VGEG, 0, 0
   514  	case AVGBM:
   515  		return op_VGBM, 0, 0
   516  	case AVZERO:
   517  		return op_VGBM, 0, 0
   518  	case AVONE:
   519  		return op_VGBM, 0, 0
   520  	case AVGM:
   521  		return op_VGM, 0, 0
   522  	case AVGMB:
   523  		return op_VGM, 0, 0
   524  	case AVGMH:
   525  		return op_VGM, 1, 0
   526  	case AVGMF:
   527  		return op_VGM, 2, 0
   528  	case AVGMG:
   529  		return op_VGM, 3, 0
   530  	case AVISTR:
   531  		return op_VISTR, 0, 0
   532  	case AVISTRB:
   533  		return op_VISTR, 0, 0
   534  	case AVISTRH:
   535  		return op_VISTR, 1, 0
   536  	case AVISTRF:
   537  		return op_VISTR, 2, 0
   538  	case AVISTRBS:
   539  		return op_VISTR, 0, 1
   540  	case AVISTRHS:
   541  		return op_VISTR, 1, 1
   542  	case AVISTRFS:
   543  		return op_VISTR, 2, 1
   544  	case AVL:
   545  		return op_VL, 0, 0
   546  	case AVLR:
   547  		return op_VLR, 0, 0
   548  	case AVLREP:
   549  		return op_VLREP, 0, 0
   550  	case AVLREPB:
   551  		return op_VLREP, 0, 0
   552  	case AVLREPH:
   553  		return op_VLREP, 1, 0
   554  	case AVLREPF:
   555  		return op_VLREP, 2, 0
   556  	case AVLREPG:
   557  		return op_VLREP, 3, 0
   558  	case AVLC:
   559  		return op_VLC, 0, 0
   560  	case AVLCB:
   561  		return op_VLC, 0, 0
   562  	case AVLCH:
   563  		return op_VLC, 1, 0
   564  	case AVLCF:
   565  		return op_VLC, 2, 0
   566  	case AVLCG:
   567  		return op_VLC, 3, 0
   568  	case AVLEH:
   569  		return op_VLEH, 0, 0
   570  	case AVLEF:
   571  		return op_VLEF, 0, 0
   572  	case AVLEG:
   573  		return op_VLEG, 0, 0
   574  	case AVLEB:
   575  		return op_VLEB, 0, 0
   576  	case AVLEIH:
   577  		return op_VLEIH, 0, 0
   578  	case AVLEIF:
   579  		return op_VLEIF, 0, 0
   580  	case AVLEIG:
   581  		return op_VLEIG, 0, 0
   582  	case AVLEIB:
   583  		return op_VLEIB, 0, 0
   584  	case AVFI:
   585  		return op_VFI, 0, 0
   586  	case AVFIDB:
   587  		return op_VFI, 3, 0
   588  	case AWFIDB:
   589  		return op_VFI, 3, 0
   590  	case AVLGV:
   591  		return op_VLGV, 0, 0
   592  	case AVLGVB:
   593  		return op_VLGV, 0, 0
   594  	case AVLGVH:
   595  		return op_VLGV, 1, 0
   596  	case AVLGVF:
   597  		return op_VLGV, 2, 0
   598  	case AVLGVG:
   599  		return op_VLGV, 3, 0
   600  	case AVLLEZ:
   601  		return op_VLLEZ, 0, 0
   602  	case AVLLEZB:
   603  		return op_VLLEZ, 0, 0
   604  	case AVLLEZH:
   605  		return op_VLLEZ, 1, 0
   606  	case AVLLEZF:
   607  		return op_VLLEZ, 2, 0
   608  	case AVLLEZG:
   609  		return op_VLLEZ, 3, 0
   610  	case AVLM:
   611  		return op_VLM, 0, 0
   612  	case AVLP:
   613  		return op_VLP, 0, 0
   614  	case AVLPB:
   615  		return op_VLP, 0, 0
   616  	case AVLPH:
   617  		return op_VLP, 1, 0
   618  	case AVLPF:
   619  		return op_VLP, 2, 0
   620  	case AVLPG:
   621  		return op_VLP, 3, 0
   622  	case AVLBB:
   623  		return op_VLBB, 0, 0
   624  	case AVLVG:
   625  		return op_VLVG, 0, 0
   626  	case AVLVGB:
   627  		return op_VLVG, 0, 0
   628  	case AVLVGH:
   629  		return op_VLVG, 1, 0
   630  	case AVLVGF:
   631  		return op_VLVG, 2, 0
   632  	case AVLVGG:
   633  		return op_VLVG, 3, 0
   634  	case AVLVGP:
   635  		return op_VLVGP, 0, 0
   636  	case AVLL:
   637  		return op_VLL, 0, 0
   638  	case AVMX:
   639  		return op_VMX, 0, 0
   640  	case AVMXB:
   641  		return op_VMX, 0, 0
   642  	case AVMXH:
   643  		return op_VMX, 1, 0
   644  	case AVMXF:
   645  		return op_VMX, 2, 0
   646  	case AVMXG:
   647  		return op_VMX, 3, 0
   648  	case AVMXL:
   649  		return op_VMXL, 0, 0
   650  	case AVMXLB:
   651  		return op_VMXL, 0, 0
   652  	case AVMXLH:
   653  		return op_VMXL, 1, 0
   654  	case AVMXLF:
   655  		return op_VMXL, 2, 0
   656  	case AVMXLG:
   657  		return op_VMXL, 3, 0
   658  	case AVMRH:
   659  		return op_VMRH, 0, 0
   660  	case AVMRHB:
   661  		return op_VMRH, 0, 0
   662  	case AVMRHH:
   663  		return op_VMRH, 1, 0
   664  	case AVMRHF:
   665  		return op_VMRH, 2, 0
   666  	case AVMRHG:
   667  		return op_VMRH, 3, 0
   668  	case AVMRL:
   669  		return op_VMRL, 0, 0
   670  	case AVMRLB:
   671  		return op_VMRL, 0, 0
   672  	case AVMRLH:
   673  		return op_VMRL, 1, 0
   674  	case AVMRLF:
   675  		return op_VMRL, 2, 0
   676  	case AVMRLG:
   677  		return op_VMRL, 3, 0
   678  	case AVMN:
   679  		return op_VMN, 0, 0
   680  	case AVMNB:
   681  		return op_VMN, 0, 0
   682  	case AVMNH:
   683  		return op_VMN, 1, 0
   684  	case AVMNF:
   685  		return op_VMN, 2, 0
   686  	case AVMNG:
   687  		return op_VMN, 3, 0
   688  	case AVMNL:
   689  		return op_VMNL, 0, 0
   690  	case AVMNLB:
   691  		return op_VMNL, 0, 0
   692  	case AVMNLH:
   693  		return op_VMNL, 1, 0
   694  	case AVMNLF:
   695  		return op_VMNL, 2, 0
   696  	case AVMNLG:
   697  		return op_VMNL, 3, 0
   698  	case AVMAE:
   699  		return op_VMAE, 0, 0
   700  	case AVMAEB:
   701  		return op_VMAE, 0, 0
   702  	case AVMAEH:
   703  		return op_VMAE, 1, 0
   704  	case AVMAEF:
   705  		return op_VMAE, 2, 0
   706  	case AVMAH:
   707  		return op_VMAH, 0, 0
   708  	case AVMAHB:
   709  		return op_VMAH, 0, 0
   710  	case AVMAHH:
   711  		return op_VMAH, 1, 0
   712  	case AVMAHF:
   713  		return op_VMAH, 2, 0
   714  	case AVMALE:
   715  		return op_VMALE, 0, 0
   716  	case AVMALEB:
   717  		return op_VMALE, 0, 0
   718  	case AVMALEH:
   719  		return op_VMALE, 1, 0
   720  	case AVMALEF:
   721  		return op_VMALE, 2, 0
   722  	case AVMALH:
   723  		return op_VMALH, 0, 0
   724  	case AVMALHB:
   725  		return op_VMALH, 0, 0
   726  	case AVMALHH:
   727  		return op_VMALH, 1, 0
   728  	case AVMALHF:
   729  		return op_VMALH, 2, 0
   730  	case AVMALO:
   731  		return op_VMALO, 0, 0
   732  	case AVMALOB:
   733  		return op_VMALO, 0, 0
   734  	case AVMALOH:
   735  		return op_VMALO, 1, 0
   736  	case AVMALOF:
   737  		return op_VMALO, 2, 0
   738  	case AVMAL:
   739  		return op_VMAL, 0, 0
   740  	case AVMALB:
   741  		return op_VMAL, 0, 0
   742  	case AVMALHW:
   743  		return op_VMAL, 1, 0
   744  	case AVMALF:
   745  		return op_VMAL, 2, 0
   746  	case AVMAO:
   747  		return op_VMAO, 0, 0
   748  	case AVMAOB:
   749  		return op_VMAO, 0, 0
   750  	case AVMAOH:
   751  		return op_VMAO, 1, 0
   752  	case AVMAOF:
   753  		return op_VMAO, 2, 0
   754  	case AVME:
   755  		return op_VME, 0, 0
   756  	case AVMEB:
   757  		return op_VME, 0, 0
   758  	case AVMEH:
   759  		return op_VME, 1, 0
   760  	case AVMEF:
   761  		return op_VME, 2, 0
   762  	case AVMH:
   763  		return op_VMH, 0, 0
   764  	case AVMHB:
   765  		return op_VMH, 0, 0
   766  	case AVMHH:
   767  		return op_VMH, 1, 0
   768  	case AVMHF:
   769  		return op_VMH, 2, 0
   770  	case AVMLE:
   771  		return op_VMLE, 0, 0
   772  	case AVMLEB:
   773  		return op_VMLE, 0, 0
   774  	case AVMLEH:
   775  		return op_VMLE, 1, 0
   776  	case AVMLEF:
   777  		return op_VMLE, 2, 0
   778  	case AVMLH:
   779  		return op_VMLH, 0, 0
   780  	case AVMLHB:
   781  		return op_VMLH, 0, 0
   782  	case AVMLHH:
   783  		return op_VMLH, 1, 0
   784  	case AVMLHF:
   785  		return op_VMLH, 2, 0
   786  	case AVMLO:
   787  		return op_VMLO, 0, 0
   788  	case AVMLOB:
   789  		return op_VMLO, 0, 0
   790  	case AVMLOH:
   791  		return op_VMLO, 1, 0
   792  	case AVMLOF:
   793  		return op_VMLO, 2, 0
   794  	case AVML:
   795  		return op_VML, 0, 0
   796  	case AVMLB:
   797  		return op_VML, 0, 0
   798  	case AVMLHW:
   799  		return op_VML, 1, 0
   800  	case AVMLF:
   801  		return op_VML, 2, 0
   802  	case AVMO:
   803  		return op_VMO, 0, 0
   804  	case AVMOB:
   805  		return op_VMO, 0, 0
   806  	case AVMOH:
   807  		return op_VMO, 1, 0
   808  	case AVMOF:
   809  		return op_VMO, 2, 0
   810  	case AVNO:
   811  		return op_VNO, 0, 0
   812  	case AVNOT:
   813  		return op_VNO, 0, 0
   814  	case AVO:
   815  		return op_VO, 0, 0
   816  	case AVPK:
   817  		return op_VPK, 0, 0
   818  	case AVPKH:
   819  		return op_VPK, 1, 0
   820  	case AVPKF:
   821  		return op_VPK, 2, 0
   822  	case AVPKG:
   823  		return op_VPK, 3, 0
   824  	case AVPKLS:
   825  		return op_VPKLS, 0, 0
   826  	case AVPKLSH:
   827  		return op_VPKLS, 1, 0
   828  	case AVPKLSF:
   829  		return op_VPKLS, 2, 0
   830  	case AVPKLSG:
   831  		return op_VPKLS, 3, 0
   832  	case AVPKLSHS:
   833  		return op_VPKLS, 1, 1
   834  	case AVPKLSFS:
   835  		return op_VPKLS, 2, 1
   836  	case AVPKLSGS:
   837  		return op_VPKLS, 3, 1
   838  	case AVPKS:
   839  		return op_VPKS, 0, 0
   840  	case AVPKSH:
   841  		return op_VPKS, 1, 0
   842  	case AVPKSF:
   843  		return op_VPKS, 2, 0
   844  	case AVPKSG:
   845  		return op_VPKS, 3, 0
   846  	case AVPKSHS:
   847  		return op_VPKS, 1, 1
   848  	case AVPKSFS:
   849  		return op_VPKS, 2, 1
   850  	case AVPKSGS:
   851  		return op_VPKS, 3, 1
   852  	case AVPERM:
   853  		return op_VPERM, 0, 0
   854  	case AVPDI:
   855  		return op_VPDI, 0, 0
   856  	case AVPOPCT:
   857  		return op_VPOPCT, 0, 0
   858  	case AVREP:
   859  		return op_VREP, 0, 0
   860  	case AVREPB:
   861  		return op_VREP, 0, 0
   862  	case AVREPH:
   863  		return op_VREP, 1, 0
   864  	case AVREPF:
   865  		return op_VREP, 2, 0
   866  	case AVREPG:
   867  		return op_VREP, 3, 0
   868  	case AVREPI:
   869  		return op_VREPI, 0, 0
   870  	case AVREPIB:
   871  		return op_VREPI, 0, 0
   872  	case AVREPIH:
   873  		return op_VREPI, 1, 0
   874  	case AVREPIF:
   875  		return op_VREPI, 2, 0
   876  	case AVREPIG:
   877  		return op_VREPI, 3, 0
   878  	case AVSCEF:
   879  		return op_VSCEF, 0, 0
   880  	case AVSCEG:
   881  		return op_VSCEG, 0, 0
   882  	case AVSEL:
   883  		return op_VSEL, 0, 0
   884  	case AVSL:
   885  		return op_VSL, 0, 0
   886  	case AVSLB:
   887  		return op_VSLB, 0, 0
   888  	case AVSLDB:
   889  		return op_VSLDB, 0, 0
   890  	case AVSRA:
   891  		return op_VSRA, 0, 0
   892  	case AVSRAB:
   893  		return op_VSRAB, 0, 0
   894  	case AVSRL:
   895  		return op_VSRL, 0, 0
   896  	case AVSRLB:
   897  		return op_VSRLB, 0, 0
   898  	case AVSEG:
   899  		return op_VSEG, 0, 0
   900  	case AVSEGB:
   901  		return op_VSEG, 0, 0
   902  	case AVSEGH:
   903  		return op_VSEG, 1, 0
   904  	case AVSEGF:
   905  		return op_VSEG, 2, 0
   906  	case AVST:
   907  		return op_VST, 0, 0
   908  	case AVSTEH:
   909  		return op_VSTEH, 0, 0
   910  	case AVSTEF:
   911  		return op_VSTEF, 0, 0
   912  	case AVSTEG:
   913  		return op_VSTEG, 0, 0
   914  	case AVSTEB:
   915  		return op_VSTEB, 0, 0
   916  	case AVSTM:
   917  		return op_VSTM, 0, 0
   918  	case AVSTL:
   919  		return op_VSTL, 0, 0
   920  	case AVSTRC:
   921  		return op_VSTRC, 0, 0
   922  	case AVSTRCB:
   923  		return op_VSTRC, 0, 0
   924  	case AVSTRCH:
   925  		return op_VSTRC, 1, 0
   926  	case AVSTRCF:
   927  		return op_VSTRC, 2, 0
   928  	case AVSTRCBS:
   929  		return op_VSTRC, 0, 1
   930  	case AVSTRCHS:
   931  		return op_VSTRC, 1, 1
   932  	case AVSTRCFS:
   933  		return op_VSTRC, 2, 1
   934  	case AVSTRCZB:
   935  		return op_VSTRC, 0, 2
   936  	case AVSTRCZH:
   937  		return op_VSTRC, 1, 2
   938  	case AVSTRCZF:
   939  		return op_VSTRC, 2, 2
   940  	case AVSTRCZBS:
   941  		return op_VSTRC, 0, 3
   942  	case AVSTRCZHS:
   943  		return op_VSTRC, 1, 3
   944  	case AVSTRCZFS:
   945  		return op_VSTRC, 2, 3
   946  	case AVS:
   947  		return op_VS, 0, 0
   948  	case AVSB:
   949  		return op_VS, 0, 0
   950  	case AVSH:
   951  		return op_VS, 1, 0
   952  	case AVSF:
   953  		return op_VS, 2, 0
   954  	case AVSG:
   955  		return op_VS, 3, 0
   956  	case AVSQ:
   957  		return op_VS, 4, 0
   958  	case AVSCBI:
   959  		return op_VSCBI, 0, 0
   960  	case AVSCBIB:
   961  		return op_VSCBI, 0, 0
   962  	case AVSCBIH:
   963  		return op_VSCBI, 1, 0
   964  	case AVSCBIF:
   965  		return op_VSCBI, 2, 0
   966  	case AVSCBIG:
   967  		return op_VSCBI, 3, 0
   968  	case AVSCBIQ:
   969  		return op_VSCBI, 4, 0
   970  	case AVSBCBI:
   971  		return op_VSBCBI, 0, 0
   972  	case AVSBCBIQ:
   973  		return op_VSBCBI, 4, 0
   974  	case AVSBI:
   975  		return op_VSBI, 0, 0
   976  	case AVSBIQ:
   977  		return op_VSBI, 4, 0
   978  	case AVSUMG:
   979  		return op_VSUMG, 0, 0
   980  	case AVSUMGH:
   981  		return op_VSUMG, 1, 0
   982  	case AVSUMGF:
   983  		return op_VSUMG, 2, 0
   984  	case AVSUMQ:
   985  		return op_VSUMQ, 0, 0
   986  	case AVSUMQF:
   987  		return op_VSUMQ, 2, 0
   988  	case AVSUMQG:
   989  		return op_VSUMQ, 3, 0
   990  	case AVSUM:
   991  		return op_VSUM, 0, 0
   992  	case AVSUMB:
   993  		return op_VSUM, 0, 0
   994  	case AVSUMH:
   995  		return op_VSUM, 1, 0
   996  	case AVTM:
   997  		return op_VTM, 0, 0
   998  	case AVUPH:
   999  		return op_VUPH, 0, 0
  1000  	case AVUPHB:
  1001  		return op_VUPH, 0, 0
  1002  	case AVUPHH:
  1003  		return op_VUPH, 1, 0
  1004  	case AVUPHF:
  1005  		return op_VUPH, 2, 0
  1006  	case AVUPLH:
  1007  		return op_VUPLH, 0, 0
  1008  	case AVUPLHB:
  1009  		return op_VUPLH, 0, 0
  1010  	case AVUPLHH:
  1011  		return op_VUPLH, 1, 0
  1012  	case AVUPLHF:
  1013  		return op_VUPLH, 2, 0
  1014  	case AVUPLL:
  1015  		return op_VUPLL, 0, 0
  1016  	case AVUPLLB:
  1017  		return op_VUPLL, 0, 0
  1018  	case AVUPLLH:
  1019  		return op_VUPLL, 1, 0
  1020  	case AVUPLLF:
  1021  		return op_VUPLL, 2, 0
  1022  	case AVUPL:
  1023  		return op_VUPL, 0, 0
  1024  	case AVUPLB:
  1025  		return op_VUPL, 0, 0
  1026  	case AVUPLHW:
  1027  		return op_VUPL, 1, 0
  1028  	case AVUPLF:
  1029  		return op_VUPL, 2, 0
  1030  	}
  1031  }
  1032  
  1033  // singleElementMask returns the single element mask bits required for the
  1034  // given instruction.
  1035  func singleElementMask(as obj.As) uint32 {
  1036  	switch as {
  1037  	case AWFADB,
  1038  		AWFK,
  1039  		AWFKDB,
  1040  		AWFCEDB,
  1041  		AWFCEDBS,
  1042  		AWFCHDB,
  1043  		AWFCHDBS,
  1044  		AWFCHEDB,
  1045  		AWFCHEDBS,
  1046  		AWFC,
  1047  		AWFCDB,
  1048  		AWCDGB,
  1049  		AWCDLGB,
  1050  		AWCGDB,
  1051  		AWCLGDB,
  1052  		AWFDDB,
  1053  		AWLDEB,
  1054  		AWLEDB,
  1055  		AWFMDB,
  1056  		AWFMADB,
  1057  		AWFMSDB,
  1058  		AWFPSODB,
  1059  		AWFLCDB,
  1060  		AWFLNDB,
  1061  		AWFLPDB,
  1062  		AWFSQDB,
  1063  		AWFSDB,
  1064  		AWFTCIDB,
  1065  		AWFIDB:
  1066  		return 8
  1067  	}
  1068  	return 0
  1069  }
  1070  

View as plain text