github.com/goplus/igop@v0.25.0/binop_shift.go (about)

     1  /*
     2   * Copyright (c) 2022 The GoPlus Authors (goplus.org). All rights reserved.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  package igop
    18  
    19  import (
    20  	"reflect"
    21  
    22  	"github.com/visualfc/xtype"
    23  	"golang.org/x/tools/go/ssa"
    24  )
    25  
    26  func makeBinOpSHL(pfn *function, instr *ssa.BinOp) func(fr *frame) {
    27  	ir := pfn.regIndex(instr)
    28  	ix, kx, vx := pfn.regIndex3(instr.X)
    29  	iy, ky, vy := pfn.regIndex3(instr.Y)
    30  	xtyp := pfn.Interp.preToType(instr.X.Type())
    31  	ytyp := pfn.Interp.preToType(instr.Y.Type())
    32  	xkind := xtyp.Kind()
    33  	ykind := ytyp.Kind()
    34  	if kx == kindConst && ky == kindConst {
    35  		t := xtype.TypeOfType(xtyp)
    36  		switch xkind {
    37  		case reflect.Int:
    38  			x := xtype.Int(vx)
    39  			switch ykind {
    40  			case reflect.Int:
    41  				v := xtype.Make(t, x<<xtype.Int(vy))
    42  				return func(fr *frame) { fr.setReg(ir, v) }
    43  			case reflect.Int8:
    44  				v := xtype.Make(t, x<<xtype.Int8(vy))
    45  				return func(fr *frame) { fr.setReg(ir, v) }
    46  			case reflect.Int16:
    47  				v := xtype.Make(t, x<<xtype.Int16(vy))
    48  				return func(fr *frame) { fr.setReg(ir, v) }
    49  			case reflect.Int32:
    50  				v := xtype.Make(t, x<<xtype.Int32(vy))
    51  				return func(fr *frame) { fr.setReg(ir, v) }
    52  			case reflect.Int64:
    53  				v := xtype.Make(t, x<<xtype.Int64(vy))
    54  				return func(fr *frame) { fr.setReg(ir, v) }
    55  			case reflect.Uint:
    56  				v := xtype.Make(t, x<<xtype.Uint(vy))
    57  				return func(fr *frame) { fr.setReg(ir, v) }
    58  			case reflect.Uint8:
    59  				v := xtype.Make(t, x<<xtype.Uint8(vy))
    60  				return func(fr *frame) { fr.setReg(ir, v) }
    61  			case reflect.Uint16:
    62  				v := xtype.Make(t, x<<xtype.Uint16(vy))
    63  				return func(fr *frame) { fr.setReg(ir, v) }
    64  			case reflect.Uint32:
    65  				v := xtype.Make(t, x<<xtype.Uint32(vy))
    66  				return func(fr *frame) { fr.setReg(ir, v) }
    67  			case reflect.Uint64:
    68  				v := xtype.Make(t, x<<xtype.Uint64(vy))
    69  				return func(fr *frame) { fr.setReg(ir, v) }
    70  			case reflect.Uintptr:
    71  				v := xtype.Make(t, x<<xtype.Uintptr(vy))
    72  				return func(fr *frame) { fr.setReg(ir, v) }
    73  			}
    74  		case reflect.Int8:
    75  			x := xtype.Int8(vx)
    76  			switch ykind {
    77  			case reflect.Int:
    78  				v := xtype.Make(t, x<<xtype.Int(vy))
    79  				return func(fr *frame) { fr.setReg(ir, v) }
    80  			case reflect.Int8:
    81  				v := xtype.Make(t, x<<xtype.Int8(vy))
    82  				return func(fr *frame) { fr.setReg(ir, v) }
    83  			case reflect.Int16:
    84  				v := xtype.Make(t, x<<xtype.Int16(vy))
    85  				return func(fr *frame) { fr.setReg(ir, v) }
    86  			case reflect.Int32:
    87  				v := xtype.Make(t, x<<xtype.Int32(vy))
    88  				return func(fr *frame) { fr.setReg(ir, v) }
    89  			case reflect.Int64:
    90  				v := xtype.Make(t, x<<xtype.Int64(vy))
    91  				return func(fr *frame) { fr.setReg(ir, v) }
    92  			case reflect.Uint:
    93  				v := xtype.Make(t, x<<xtype.Uint(vy))
    94  				return func(fr *frame) { fr.setReg(ir, v) }
    95  			case reflect.Uint8:
    96  				v := xtype.Make(t, x<<xtype.Uint8(vy))
    97  				return func(fr *frame) { fr.setReg(ir, v) }
    98  			case reflect.Uint16:
    99  				v := xtype.Make(t, x<<xtype.Uint16(vy))
   100  				return func(fr *frame) { fr.setReg(ir, v) }
   101  			case reflect.Uint32:
   102  				v := xtype.Make(t, x<<xtype.Uint32(vy))
   103  				return func(fr *frame) { fr.setReg(ir, v) }
   104  			case reflect.Uint64:
   105  				v := xtype.Make(t, x<<xtype.Uint64(vy))
   106  				return func(fr *frame) { fr.setReg(ir, v) }
   107  			case reflect.Uintptr:
   108  				v := xtype.Make(t, x<<xtype.Uintptr(vy))
   109  				return func(fr *frame) { fr.setReg(ir, v) }
   110  			}
   111  		case reflect.Int16:
   112  			x := xtype.Int16(vx)
   113  			switch ykind {
   114  			case reflect.Int:
   115  				v := xtype.Make(t, x<<xtype.Int(vy))
   116  				return func(fr *frame) { fr.setReg(ir, v) }
   117  			case reflect.Int8:
   118  				v := xtype.Make(t, x<<xtype.Int8(vy))
   119  				return func(fr *frame) { fr.setReg(ir, v) }
   120  			case reflect.Int16:
   121  				v := xtype.Make(t, x<<xtype.Int16(vy))
   122  				return func(fr *frame) { fr.setReg(ir, v) }
   123  			case reflect.Int32:
   124  				v := xtype.Make(t, x<<xtype.Int32(vy))
   125  				return func(fr *frame) { fr.setReg(ir, v) }
   126  			case reflect.Int64:
   127  				v := xtype.Make(t, x<<xtype.Int64(vy))
   128  				return func(fr *frame) { fr.setReg(ir, v) }
   129  			case reflect.Uint:
   130  				v := xtype.Make(t, x<<xtype.Uint(vy))
   131  				return func(fr *frame) { fr.setReg(ir, v) }
   132  			case reflect.Uint8:
   133  				v := xtype.Make(t, x<<xtype.Uint8(vy))
   134  				return func(fr *frame) { fr.setReg(ir, v) }
   135  			case reflect.Uint16:
   136  				v := xtype.Make(t, x<<xtype.Uint16(vy))
   137  				return func(fr *frame) { fr.setReg(ir, v) }
   138  			case reflect.Uint32:
   139  				v := xtype.Make(t, x<<xtype.Uint32(vy))
   140  				return func(fr *frame) { fr.setReg(ir, v) }
   141  			case reflect.Uint64:
   142  				v := xtype.Make(t, x<<xtype.Uint64(vy))
   143  				return func(fr *frame) { fr.setReg(ir, v) }
   144  			case reflect.Uintptr:
   145  				v := xtype.Make(t, x<<xtype.Uintptr(vy))
   146  				return func(fr *frame) { fr.setReg(ir, v) }
   147  			}
   148  		case reflect.Int32:
   149  			x := xtype.Int32(vx)
   150  			switch ykind {
   151  			case reflect.Int:
   152  				v := xtype.Make(t, x<<xtype.Int(vy))
   153  				return func(fr *frame) { fr.setReg(ir, v) }
   154  			case reflect.Int8:
   155  				v := xtype.Make(t, x<<xtype.Int8(vy))
   156  				return func(fr *frame) { fr.setReg(ir, v) }
   157  			case reflect.Int16:
   158  				v := xtype.Make(t, x<<xtype.Int16(vy))
   159  				return func(fr *frame) { fr.setReg(ir, v) }
   160  			case reflect.Int32:
   161  				v := xtype.Make(t, x<<xtype.Int32(vy))
   162  				return func(fr *frame) { fr.setReg(ir, v) }
   163  			case reflect.Int64:
   164  				v := xtype.Make(t, x<<xtype.Int64(vy))
   165  				return func(fr *frame) { fr.setReg(ir, v) }
   166  			case reflect.Uint:
   167  				v := xtype.Make(t, x<<xtype.Uint(vy))
   168  				return func(fr *frame) { fr.setReg(ir, v) }
   169  			case reflect.Uint8:
   170  				v := xtype.Make(t, x<<xtype.Uint8(vy))
   171  				return func(fr *frame) { fr.setReg(ir, v) }
   172  			case reflect.Uint16:
   173  				v := xtype.Make(t, x<<xtype.Uint16(vy))
   174  				return func(fr *frame) { fr.setReg(ir, v) }
   175  			case reflect.Uint32:
   176  				v := xtype.Make(t, x<<xtype.Uint32(vy))
   177  				return func(fr *frame) { fr.setReg(ir, v) }
   178  			case reflect.Uint64:
   179  				v := xtype.Make(t, x<<xtype.Uint64(vy))
   180  				return func(fr *frame) { fr.setReg(ir, v) }
   181  			case reflect.Uintptr:
   182  				v := xtype.Make(t, x<<xtype.Uintptr(vy))
   183  				return func(fr *frame) { fr.setReg(ir, v) }
   184  			}
   185  		case reflect.Int64:
   186  			x := xtype.Int64(vx)
   187  			switch ykind {
   188  			case reflect.Int:
   189  				v := xtype.Make(t, x<<xtype.Int(vy))
   190  				return func(fr *frame) { fr.setReg(ir, v) }
   191  			case reflect.Int8:
   192  				v := xtype.Make(t, x<<xtype.Int8(vy))
   193  				return func(fr *frame) { fr.setReg(ir, v) }
   194  			case reflect.Int16:
   195  				v := xtype.Make(t, x<<xtype.Int16(vy))
   196  				return func(fr *frame) { fr.setReg(ir, v) }
   197  			case reflect.Int32:
   198  				v := xtype.Make(t, x<<xtype.Int32(vy))
   199  				return func(fr *frame) { fr.setReg(ir, v) }
   200  			case reflect.Int64:
   201  				v := xtype.Make(t, x<<xtype.Int64(vy))
   202  				return func(fr *frame) { fr.setReg(ir, v) }
   203  			case reflect.Uint:
   204  				v := xtype.Make(t, x<<xtype.Uint(vy))
   205  				return func(fr *frame) { fr.setReg(ir, v) }
   206  			case reflect.Uint8:
   207  				v := xtype.Make(t, x<<xtype.Uint8(vy))
   208  				return func(fr *frame) { fr.setReg(ir, v) }
   209  			case reflect.Uint16:
   210  				v := xtype.Make(t, x<<xtype.Uint16(vy))
   211  				return func(fr *frame) { fr.setReg(ir, v) }
   212  			case reflect.Uint32:
   213  				v := xtype.Make(t, x<<xtype.Uint32(vy))
   214  				return func(fr *frame) { fr.setReg(ir, v) }
   215  			case reflect.Uint64:
   216  				v := xtype.Make(t, x<<xtype.Uint64(vy))
   217  				return func(fr *frame) { fr.setReg(ir, v) }
   218  			case reflect.Uintptr:
   219  				v := xtype.Make(t, x<<xtype.Uintptr(vy))
   220  				return func(fr *frame) { fr.setReg(ir, v) }
   221  			}
   222  		case reflect.Uint:
   223  			x := xtype.Uint(vx)
   224  			switch ykind {
   225  			case reflect.Int:
   226  				v := xtype.Make(t, x<<xtype.Int(vy))
   227  				return func(fr *frame) { fr.setReg(ir, v) }
   228  			case reflect.Int8:
   229  				v := xtype.Make(t, x<<xtype.Int8(vy))
   230  				return func(fr *frame) { fr.setReg(ir, v) }
   231  			case reflect.Int16:
   232  				v := xtype.Make(t, x<<xtype.Int16(vy))
   233  				return func(fr *frame) { fr.setReg(ir, v) }
   234  			case reflect.Int32:
   235  				v := xtype.Make(t, x<<xtype.Int32(vy))
   236  				return func(fr *frame) { fr.setReg(ir, v) }
   237  			case reflect.Int64:
   238  				v := xtype.Make(t, x<<xtype.Int64(vy))
   239  				return func(fr *frame) { fr.setReg(ir, v) }
   240  			case reflect.Uint:
   241  				v := xtype.Make(t, x<<xtype.Uint(vy))
   242  				return func(fr *frame) { fr.setReg(ir, v) }
   243  			case reflect.Uint8:
   244  				v := xtype.Make(t, x<<xtype.Uint8(vy))
   245  				return func(fr *frame) { fr.setReg(ir, v) }
   246  			case reflect.Uint16:
   247  				v := xtype.Make(t, x<<xtype.Uint16(vy))
   248  				return func(fr *frame) { fr.setReg(ir, v) }
   249  			case reflect.Uint32:
   250  				v := xtype.Make(t, x<<xtype.Uint32(vy))
   251  				return func(fr *frame) { fr.setReg(ir, v) }
   252  			case reflect.Uint64:
   253  				v := xtype.Make(t, x<<xtype.Uint64(vy))
   254  				return func(fr *frame) { fr.setReg(ir, v) }
   255  			case reflect.Uintptr:
   256  				v := xtype.Make(t, x<<xtype.Uintptr(vy))
   257  				return func(fr *frame) { fr.setReg(ir, v) }
   258  			}
   259  		case reflect.Uint8:
   260  			x := xtype.Uint8(vx)
   261  			switch ykind {
   262  			case reflect.Int:
   263  				v := xtype.Make(t, x<<xtype.Int(vy))
   264  				return func(fr *frame) { fr.setReg(ir, v) }
   265  			case reflect.Int8:
   266  				v := xtype.Make(t, x<<xtype.Int8(vy))
   267  				return func(fr *frame) { fr.setReg(ir, v) }
   268  			case reflect.Int16:
   269  				v := xtype.Make(t, x<<xtype.Int16(vy))
   270  				return func(fr *frame) { fr.setReg(ir, v) }
   271  			case reflect.Int32:
   272  				v := xtype.Make(t, x<<xtype.Int32(vy))
   273  				return func(fr *frame) { fr.setReg(ir, v) }
   274  			case reflect.Int64:
   275  				v := xtype.Make(t, x<<xtype.Int64(vy))
   276  				return func(fr *frame) { fr.setReg(ir, v) }
   277  			case reflect.Uint:
   278  				v := xtype.Make(t, x<<xtype.Uint(vy))
   279  				return func(fr *frame) { fr.setReg(ir, v) }
   280  			case reflect.Uint8:
   281  				v := xtype.Make(t, x<<xtype.Uint8(vy))
   282  				return func(fr *frame) { fr.setReg(ir, v) }
   283  			case reflect.Uint16:
   284  				v := xtype.Make(t, x<<xtype.Uint16(vy))
   285  				return func(fr *frame) { fr.setReg(ir, v) }
   286  			case reflect.Uint32:
   287  				v := xtype.Make(t, x<<xtype.Uint32(vy))
   288  				return func(fr *frame) { fr.setReg(ir, v) }
   289  			case reflect.Uint64:
   290  				v := xtype.Make(t, x<<xtype.Uint64(vy))
   291  				return func(fr *frame) { fr.setReg(ir, v) }
   292  			case reflect.Uintptr:
   293  				v := xtype.Make(t, x<<xtype.Uintptr(vy))
   294  				return func(fr *frame) { fr.setReg(ir, v) }
   295  			}
   296  		case reflect.Uint16:
   297  			x := xtype.Uint16(vx)
   298  			switch ykind {
   299  			case reflect.Int:
   300  				v := xtype.Make(t, x<<xtype.Int(vy))
   301  				return func(fr *frame) { fr.setReg(ir, v) }
   302  			case reflect.Int8:
   303  				v := xtype.Make(t, x<<xtype.Int8(vy))
   304  				return func(fr *frame) { fr.setReg(ir, v) }
   305  			case reflect.Int16:
   306  				v := xtype.Make(t, x<<xtype.Int16(vy))
   307  				return func(fr *frame) { fr.setReg(ir, v) }
   308  			case reflect.Int32:
   309  				v := xtype.Make(t, x<<xtype.Int32(vy))
   310  				return func(fr *frame) { fr.setReg(ir, v) }
   311  			case reflect.Int64:
   312  				v := xtype.Make(t, x<<xtype.Int64(vy))
   313  				return func(fr *frame) { fr.setReg(ir, v) }
   314  			case reflect.Uint:
   315  				v := xtype.Make(t, x<<xtype.Uint(vy))
   316  				return func(fr *frame) { fr.setReg(ir, v) }
   317  			case reflect.Uint8:
   318  				v := xtype.Make(t, x<<xtype.Uint8(vy))
   319  				return func(fr *frame) { fr.setReg(ir, v) }
   320  			case reflect.Uint16:
   321  				v := xtype.Make(t, x<<xtype.Uint16(vy))
   322  				return func(fr *frame) { fr.setReg(ir, v) }
   323  			case reflect.Uint32:
   324  				v := xtype.Make(t, x<<xtype.Uint32(vy))
   325  				return func(fr *frame) { fr.setReg(ir, v) }
   326  			case reflect.Uint64:
   327  				v := xtype.Make(t, x<<xtype.Uint64(vy))
   328  				return func(fr *frame) { fr.setReg(ir, v) }
   329  			case reflect.Uintptr:
   330  				v := xtype.Make(t, x<<xtype.Uintptr(vy))
   331  				return func(fr *frame) { fr.setReg(ir, v) }
   332  			}
   333  		case reflect.Uint32:
   334  			x := xtype.Uint32(vx)
   335  			switch ykind {
   336  			case reflect.Int:
   337  				v := xtype.Make(t, x<<xtype.Int(vy))
   338  				return func(fr *frame) { fr.setReg(ir, v) }
   339  			case reflect.Int8:
   340  				v := xtype.Make(t, x<<xtype.Int8(vy))
   341  				return func(fr *frame) { fr.setReg(ir, v) }
   342  			case reflect.Int16:
   343  				v := xtype.Make(t, x<<xtype.Int16(vy))
   344  				return func(fr *frame) { fr.setReg(ir, v) }
   345  			case reflect.Int32:
   346  				v := xtype.Make(t, x<<xtype.Int32(vy))
   347  				return func(fr *frame) { fr.setReg(ir, v) }
   348  			case reflect.Int64:
   349  				v := xtype.Make(t, x<<xtype.Int64(vy))
   350  				return func(fr *frame) { fr.setReg(ir, v) }
   351  			case reflect.Uint:
   352  				v := xtype.Make(t, x<<xtype.Uint(vy))
   353  				return func(fr *frame) { fr.setReg(ir, v) }
   354  			case reflect.Uint8:
   355  				v := xtype.Make(t, x<<xtype.Uint8(vy))
   356  				return func(fr *frame) { fr.setReg(ir, v) }
   357  			case reflect.Uint16:
   358  				v := xtype.Make(t, x<<xtype.Uint16(vy))
   359  				return func(fr *frame) { fr.setReg(ir, v) }
   360  			case reflect.Uint32:
   361  				v := xtype.Make(t, x<<xtype.Uint32(vy))
   362  				return func(fr *frame) { fr.setReg(ir, v) }
   363  			case reflect.Uint64:
   364  				v := xtype.Make(t, x<<xtype.Uint64(vy))
   365  				return func(fr *frame) { fr.setReg(ir, v) }
   366  			case reflect.Uintptr:
   367  				v := xtype.Make(t, x<<xtype.Uintptr(vy))
   368  				return func(fr *frame) { fr.setReg(ir, v) }
   369  			}
   370  		case reflect.Uint64:
   371  			x := xtype.Uint64(vx)
   372  			switch ykind {
   373  			case reflect.Int:
   374  				v := xtype.Make(t, x<<xtype.Int(vy))
   375  				return func(fr *frame) { fr.setReg(ir, v) }
   376  			case reflect.Int8:
   377  				v := xtype.Make(t, x<<xtype.Int8(vy))
   378  				return func(fr *frame) { fr.setReg(ir, v) }
   379  			case reflect.Int16:
   380  				v := xtype.Make(t, x<<xtype.Int16(vy))
   381  				return func(fr *frame) { fr.setReg(ir, v) }
   382  			case reflect.Int32:
   383  				v := xtype.Make(t, x<<xtype.Int32(vy))
   384  				return func(fr *frame) { fr.setReg(ir, v) }
   385  			case reflect.Int64:
   386  				v := xtype.Make(t, x<<xtype.Int64(vy))
   387  				return func(fr *frame) { fr.setReg(ir, v) }
   388  			case reflect.Uint:
   389  				v := xtype.Make(t, x<<xtype.Uint(vy))
   390  				return func(fr *frame) { fr.setReg(ir, v) }
   391  			case reflect.Uint8:
   392  				v := xtype.Make(t, x<<xtype.Uint8(vy))
   393  				return func(fr *frame) { fr.setReg(ir, v) }
   394  			case reflect.Uint16:
   395  				v := xtype.Make(t, x<<xtype.Uint16(vy))
   396  				return func(fr *frame) { fr.setReg(ir, v) }
   397  			case reflect.Uint32:
   398  				v := xtype.Make(t, x<<xtype.Uint32(vy))
   399  				return func(fr *frame) { fr.setReg(ir, v) }
   400  			case reflect.Uint64:
   401  				v := xtype.Make(t, x<<xtype.Uint64(vy))
   402  				return func(fr *frame) { fr.setReg(ir, v) }
   403  			case reflect.Uintptr:
   404  				v := xtype.Make(t, x<<xtype.Uintptr(vy))
   405  				return func(fr *frame) { fr.setReg(ir, v) }
   406  			}
   407  		case reflect.Uintptr:
   408  			x := xtype.Uintptr(vx)
   409  			switch ykind {
   410  			case reflect.Int:
   411  				v := xtype.Make(t, x<<xtype.Int(vy))
   412  				return func(fr *frame) { fr.setReg(ir, v) }
   413  			case reflect.Int8:
   414  				v := xtype.Make(t, x<<xtype.Int8(vy))
   415  				return func(fr *frame) { fr.setReg(ir, v) }
   416  			case reflect.Int16:
   417  				v := xtype.Make(t, x<<xtype.Int16(vy))
   418  				return func(fr *frame) { fr.setReg(ir, v) }
   419  			case reflect.Int32:
   420  				v := xtype.Make(t, x<<xtype.Int32(vy))
   421  				return func(fr *frame) { fr.setReg(ir, v) }
   422  			case reflect.Int64:
   423  				v := xtype.Make(t, x<<xtype.Int64(vy))
   424  				return func(fr *frame) { fr.setReg(ir, v) }
   425  			case reflect.Uint:
   426  				v := xtype.Make(t, x<<xtype.Uint(vy))
   427  				return func(fr *frame) { fr.setReg(ir, v) }
   428  			case reflect.Uint8:
   429  				v := xtype.Make(t, x<<xtype.Uint8(vy))
   430  				return func(fr *frame) { fr.setReg(ir, v) }
   431  			case reflect.Uint16:
   432  				v := xtype.Make(t, x<<xtype.Uint16(vy))
   433  				return func(fr *frame) { fr.setReg(ir, v) }
   434  			case reflect.Uint32:
   435  				v := xtype.Make(t, x<<xtype.Uint32(vy))
   436  				return func(fr *frame) { fr.setReg(ir, v) }
   437  			case reflect.Uint64:
   438  				v := xtype.Make(t, x<<xtype.Uint64(vy))
   439  				return func(fr *frame) { fr.setReg(ir, v) }
   440  			case reflect.Uintptr:
   441  				v := xtype.Make(t, x<<xtype.Uintptr(vy))
   442  				return func(fr *frame) { fr.setReg(ir, v) }
   443  			}
   444  		}
   445  	}
   446  	if xtyp.PkgPath() == "" {
   447  		switch xkind {
   448  		case reflect.Int:
   449  			if kx == kindConst {
   450  				x := vx.(int)
   451  				switch ykind {
   452  				case reflect.Int:
   453  					return func(fr *frame) { fr.setReg(ir, x<<fr.int(iy)) }
   454  				case reflect.Int8:
   455  					return func(fr *frame) { fr.setReg(ir, x<<fr.int8(iy)) }
   456  				case reflect.Int16:
   457  					return func(fr *frame) { fr.setReg(ir, x<<fr.int16(iy)) }
   458  				case reflect.Int32:
   459  					return func(fr *frame) { fr.setReg(ir, x<<fr.int32(iy)) }
   460  				case reflect.Int64:
   461  					return func(fr *frame) { fr.setReg(ir, x<<fr.int64(iy)) }
   462  				case reflect.Uint:
   463  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint(iy)) }
   464  				case reflect.Uint8:
   465  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint8(iy)) }
   466  				case reflect.Uint16:
   467  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint16(iy)) }
   468  				case reflect.Uint32:
   469  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint32(iy)) }
   470  				case reflect.Uint64:
   471  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint64(iy)) }
   472  				case reflect.Uintptr:
   473  					return func(fr *frame) { fr.setReg(ir, x<<fr.uintptr(iy)) }
   474  				}
   475  			} else if ky == kindConst {
   476  				switch ykind {
   477  				case reflect.Int:
   478  					y := xtype.Int(vy)
   479  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<y) }
   480  				case reflect.Int8:
   481  					y := xtype.Int8(vy)
   482  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<y) }
   483  				case reflect.Int16:
   484  					y := xtype.Int16(vy)
   485  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<y) }
   486  				case reflect.Int32:
   487  					y := xtype.Int32(vy)
   488  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<y) }
   489  				case reflect.Int64:
   490  					y := xtype.Int64(vy)
   491  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<y) }
   492  				case reflect.Uint:
   493  					y := xtype.Uint(vy)
   494  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<y) }
   495  				case reflect.Uint8:
   496  					y := xtype.Uint8(vy)
   497  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<y) }
   498  				case reflect.Uint16:
   499  					y := xtype.Uint16(vy)
   500  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<y) }
   501  				case reflect.Uint32:
   502  					y := xtype.Uint32(vy)
   503  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<y) }
   504  				case reflect.Uint64:
   505  					y := xtype.Uint64(vy)
   506  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<y) }
   507  				case reflect.Uintptr:
   508  					y := xtype.Uintptr(vy)
   509  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<y) }
   510  				}
   511  			} else {
   512  				switch ykind {
   513  				case reflect.Int:
   514  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<fr.int(iy)) }
   515  				case reflect.Int8:
   516  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<fr.int8(iy)) }
   517  				case reflect.Int16:
   518  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<fr.int16(iy)) }
   519  				case reflect.Int32:
   520  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<fr.int32(iy)) }
   521  				case reflect.Int64:
   522  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<fr.int64(iy)) }
   523  				case reflect.Uint:
   524  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<fr.uint(iy)) }
   525  				case reflect.Uint8:
   526  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<fr.uint8(iy)) }
   527  				case reflect.Uint16:
   528  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<fr.uint16(iy)) }
   529  				case reflect.Uint32:
   530  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<fr.uint32(iy)) }
   531  				case reflect.Uint64:
   532  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<fr.uint64(iy)) }
   533  				case reflect.Uintptr:
   534  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)<<fr.uintptr(iy)) }
   535  				}
   536  			}
   537  		case reflect.Int8:
   538  			if kx == kindConst {
   539  				x := vx.(int8)
   540  				switch ykind {
   541  				case reflect.Int:
   542  					return func(fr *frame) { fr.setReg(ir, x<<fr.int(iy)) }
   543  				case reflect.Int8:
   544  					return func(fr *frame) { fr.setReg(ir, x<<fr.int8(iy)) }
   545  				case reflect.Int16:
   546  					return func(fr *frame) { fr.setReg(ir, x<<fr.int16(iy)) }
   547  				case reflect.Int32:
   548  					return func(fr *frame) { fr.setReg(ir, x<<fr.int32(iy)) }
   549  				case reflect.Int64:
   550  					return func(fr *frame) { fr.setReg(ir, x<<fr.int64(iy)) }
   551  				case reflect.Uint:
   552  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint(iy)) }
   553  				case reflect.Uint8:
   554  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint8(iy)) }
   555  				case reflect.Uint16:
   556  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint16(iy)) }
   557  				case reflect.Uint32:
   558  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint32(iy)) }
   559  				case reflect.Uint64:
   560  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint64(iy)) }
   561  				case reflect.Uintptr:
   562  					return func(fr *frame) { fr.setReg(ir, x<<fr.uintptr(iy)) }
   563  				}
   564  			} else if ky == kindConst {
   565  				switch ykind {
   566  				case reflect.Int:
   567  					y := xtype.Int(vy)
   568  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<y) }
   569  				case reflect.Int8:
   570  					y := xtype.Int8(vy)
   571  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<y) }
   572  				case reflect.Int16:
   573  					y := xtype.Int16(vy)
   574  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<y) }
   575  				case reflect.Int32:
   576  					y := xtype.Int32(vy)
   577  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<y) }
   578  				case reflect.Int64:
   579  					y := xtype.Int64(vy)
   580  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<y) }
   581  				case reflect.Uint:
   582  					y := xtype.Uint(vy)
   583  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<y) }
   584  				case reflect.Uint8:
   585  					y := xtype.Uint8(vy)
   586  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<y) }
   587  				case reflect.Uint16:
   588  					y := xtype.Uint16(vy)
   589  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<y) }
   590  				case reflect.Uint32:
   591  					y := xtype.Uint32(vy)
   592  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<y) }
   593  				case reflect.Uint64:
   594  					y := xtype.Uint64(vy)
   595  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<y) }
   596  				case reflect.Uintptr:
   597  					y := xtype.Uintptr(vy)
   598  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<y) }
   599  				}
   600  			} else {
   601  				switch ykind {
   602  				case reflect.Int:
   603  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<fr.int(iy)) }
   604  				case reflect.Int8:
   605  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<fr.int8(iy)) }
   606  				case reflect.Int16:
   607  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<fr.int16(iy)) }
   608  				case reflect.Int32:
   609  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<fr.int32(iy)) }
   610  				case reflect.Int64:
   611  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<fr.int64(iy)) }
   612  				case reflect.Uint:
   613  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<fr.uint(iy)) }
   614  				case reflect.Uint8:
   615  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<fr.uint8(iy)) }
   616  				case reflect.Uint16:
   617  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<fr.uint16(iy)) }
   618  				case reflect.Uint32:
   619  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<fr.uint32(iy)) }
   620  				case reflect.Uint64:
   621  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<fr.uint64(iy)) }
   622  				case reflect.Uintptr:
   623  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)<<fr.uintptr(iy)) }
   624  				}
   625  			}
   626  		case reflect.Int16:
   627  			if kx == kindConst {
   628  				x := vx.(int16)
   629  				switch ykind {
   630  				case reflect.Int:
   631  					return func(fr *frame) { fr.setReg(ir, x<<fr.int(iy)) }
   632  				case reflect.Int8:
   633  					return func(fr *frame) { fr.setReg(ir, x<<fr.int8(iy)) }
   634  				case reflect.Int16:
   635  					return func(fr *frame) { fr.setReg(ir, x<<fr.int16(iy)) }
   636  				case reflect.Int32:
   637  					return func(fr *frame) { fr.setReg(ir, x<<fr.int32(iy)) }
   638  				case reflect.Int64:
   639  					return func(fr *frame) { fr.setReg(ir, x<<fr.int64(iy)) }
   640  				case reflect.Uint:
   641  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint(iy)) }
   642  				case reflect.Uint8:
   643  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint8(iy)) }
   644  				case reflect.Uint16:
   645  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint16(iy)) }
   646  				case reflect.Uint32:
   647  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint32(iy)) }
   648  				case reflect.Uint64:
   649  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint64(iy)) }
   650  				case reflect.Uintptr:
   651  					return func(fr *frame) { fr.setReg(ir, x<<fr.uintptr(iy)) }
   652  				}
   653  			} else if ky == kindConst {
   654  				switch ykind {
   655  				case reflect.Int:
   656  					y := xtype.Int(vy)
   657  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<y) }
   658  				case reflect.Int8:
   659  					y := xtype.Int8(vy)
   660  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<y) }
   661  				case reflect.Int16:
   662  					y := xtype.Int16(vy)
   663  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<y) }
   664  				case reflect.Int32:
   665  					y := xtype.Int32(vy)
   666  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<y) }
   667  				case reflect.Int64:
   668  					y := xtype.Int64(vy)
   669  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<y) }
   670  				case reflect.Uint:
   671  					y := xtype.Uint(vy)
   672  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<y) }
   673  				case reflect.Uint8:
   674  					y := xtype.Uint8(vy)
   675  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<y) }
   676  				case reflect.Uint16:
   677  					y := xtype.Uint16(vy)
   678  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<y) }
   679  				case reflect.Uint32:
   680  					y := xtype.Uint32(vy)
   681  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<y) }
   682  				case reflect.Uint64:
   683  					y := xtype.Uint64(vy)
   684  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<y) }
   685  				case reflect.Uintptr:
   686  					y := xtype.Uintptr(vy)
   687  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<y) }
   688  				}
   689  			} else {
   690  				switch ykind {
   691  				case reflect.Int:
   692  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<fr.int(iy)) }
   693  				case reflect.Int8:
   694  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<fr.int8(iy)) }
   695  				case reflect.Int16:
   696  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<fr.int16(iy)) }
   697  				case reflect.Int32:
   698  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<fr.int32(iy)) }
   699  				case reflect.Int64:
   700  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<fr.int64(iy)) }
   701  				case reflect.Uint:
   702  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<fr.uint(iy)) }
   703  				case reflect.Uint8:
   704  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<fr.uint8(iy)) }
   705  				case reflect.Uint16:
   706  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<fr.uint16(iy)) }
   707  				case reflect.Uint32:
   708  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<fr.uint32(iy)) }
   709  				case reflect.Uint64:
   710  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<fr.uint64(iy)) }
   711  				case reflect.Uintptr:
   712  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)<<fr.uintptr(iy)) }
   713  				}
   714  			}
   715  		case reflect.Int32:
   716  			if kx == kindConst {
   717  				x := vx.(int32)
   718  				switch ykind {
   719  				case reflect.Int:
   720  					return func(fr *frame) { fr.setReg(ir, x<<fr.int(iy)) }
   721  				case reflect.Int8:
   722  					return func(fr *frame) { fr.setReg(ir, x<<fr.int8(iy)) }
   723  				case reflect.Int16:
   724  					return func(fr *frame) { fr.setReg(ir, x<<fr.int16(iy)) }
   725  				case reflect.Int32:
   726  					return func(fr *frame) { fr.setReg(ir, x<<fr.int32(iy)) }
   727  				case reflect.Int64:
   728  					return func(fr *frame) { fr.setReg(ir, x<<fr.int64(iy)) }
   729  				case reflect.Uint:
   730  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint(iy)) }
   731  				case reflect.Uint8:
   732  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint8(iy)) }
   733  				case reflect.Uint16:
   734  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint16(iy)) }
   735  				case reflect.Uint32:
   736  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint32(iy)) }
   737  				case reflect.Uint64:
   738  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint64(iy)) }
   739  				case reflect.Uintptr:
   740  					return func(fr *frame) { fr.setReg(ir, x<<fr.uintptr(iy)) }
   741  				}
   742  			} else if ky == kindConst {
   743  				switch ykind {
   744  				case reflect.Int:
   745  					y := xtype.Int(vy)
   746  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<y) }
   747  				case reflect.Int8:
   748  					y := xtype.Int8(vy)
   749  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<y) }
   750  				case reflect.Int16:
   751  					y := xtype.Int16(vy)
   752  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<y) }
   753  				case reflect.Int32:
   754  					y := xtype.Int32(vy)
   755  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<y) }
   756  				case reflect.Int64:
   757  					y := xtype.Int64(vy)
   758  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<y) }
   759  				case reflect.Uint:
   760  					y := xtype.Uint(vy)
   761  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<y) }
   762  				case reflect.Uint8:
   763  					y := xtype.Uint8(vy)
   764  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<y) }
   765  				case reflect.Uint16:
   766  					y := xtype.Uint16(vy)
   767  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<y) }
   768  				case reflect.Uint32:
   769  					y := xtype.Uint32(vy)
   770  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<y) }
   771  				case reflect.Uint64:
   772  					y := xtype.Uint64(vy)
   773  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<y) }
   774  				case reflect.Uintptr:
   775  					y := xtype.Uintptr(vy)
   776  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<y) }
   777  				}
   778  			} else {
   779  				switch ykind {
   780  				case reflect.Int:
   781  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<fr.int(iy)) }
   782  				case reflect.Int8:
   783  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<fr.int8(iy)) }
   784  				case reflect.Int16:
   785  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<fr.int16(iy)) }
   786  				case reflect.Int32:
   787  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<fr.int32(iy)) }
   788  				case reflect.Int64:
   789  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<fr.int64(iy)) }
   790  				case reflect.Uint:
   791  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<fr.uint(iy)) }
   792  				case reflect.Uint8:
   793  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<fr.uint8(iy)) }
   794  				case reflect.Uint16:
   795  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<fr.uint16(iy)) }
   796  				case reflect.Uint32:
   797  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<fr.uint32(iy)) }
   798  				case reflect.Uint64:
   799  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<fr.uint64(iy)) }
   800  				case reflect.Uintptr:
   801  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)<<fr.uintptr(iy)) }
   802  				}
   803  			}
   804  		case reflect.Int64:
   805  			if kx == kindConst {
   806  				x := vx.(int64)
   807  				switch ykind {
   808  				case reflect.Int:
   809  					return func(fr *frame) { fr.setReg(ir, x<<fr.int(iy)) }
   810  				case reflect.Int8:
   811  					return func(fr *frame) { fr.setReg(ir, x<<fr.int8(iy)) }
   812  				case reflect.Int16:
   813  					return func(fr *frame) { fr.setReg(ir, x<<fr.int16(iy)) }
   814  				case reflect.Int32:
   815  					return func(fr *frame) { fr.setReg(ir, x<<fr.int32(iy)) }
   816  				case reflect.Int64:
   817  					return func(fr *frame) { fr.setReg(ir, x<<fr.int64(iy)) }
   818  				case reflect.Uint:
   819  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint(iy)) }
   820  				case reflect.Uint8:
   821  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint8(iy)) }
   822  				case reflect.Uint16:
   823  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint16(iy)) }
   824  				case reflect.Uint32:
   825  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint32(iy)) }
   826  				case reflect.Uint64:
   827  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint64(iy)) }
   828  				case reflect.Uintptr:
   829  					return func(fr *frame) { fr.setReg(ir, x<<fr.uintptr(iy)) }
   830  				}
   831  			} else if ky == kindConst {
   832  				switch ykind {
   833  				case reflect.Int:
   834  					y := xtype.Int(vy)
   835  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<y) }
   836  				case reflect.Int8:
   837  					y := xtype.Int8(vy)
   838  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<y) }
   839  				case reflect.Int16:
   840  					y := xtype.Int16(vy)
   841  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<y) }
   842  				case reflect.Int32:
   843  					y := xtype.Int32(vy)
   844  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<y) }
   845  				case reflect.Int64:
   846  					y := xtype.Int64(vy)
   847  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<y) }
   848  				case reflect.Uint:
   849  					y := xtype.Uint(vy)
   850  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<y) }
   851  				case reflect.Uint8:
   852  					y := xtype.Uint8(vy)
   853  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<y) }
   854  				case reflect.Uint16:
   855  					y := xtype.Uint16(vy)
   856  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<y) }
   857  				case reflect.Uint32:
   858  					y := xtype.Uint32(vy)
   859  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<y) }
   860  				case reflect.Uint64:
   861  					y := xtype.Uint64(vy)
   862  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<y) }
   863  				case reflect.Uintptr:
   864  					y := xtype.Uintptr(vy)
   865  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<y) }
   866  				}
   867  			} else {
   868  				switch ykind {
   869  				case reflect.Int:
   870  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<fr.int(iy)) }
   871  				case reflect.Int8:
   872  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<fr.int8(iy)) }
   873  				case reflect.Int16:
   874  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<fr.int16(iy)) }
   875  				case reflect.Int32:
   876  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<fr.int32(iy)) }
   877  				case reflect.Int64:
   878  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<fr.int64(iy)) }
   879  				case reflect.Uint:
   880  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<fr.uint(iy)) }
   881  				case reflect.Uint8:
   882  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<fr.uint8(iy)) }
   883  				case reflect.Uint16:
   884  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<fr.uint16(iy)) }
   885  				case reflect.Uint32:
   886  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<fr.uint32(iy)) }
   887  				case reflect.Uint64:
   888  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<fr.uint64(iy)) }
   889  				case reflect.Uintptr:
   890  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)<<fr.uintptr(iy)) }
   891  				}
   892  			}
   893  		case reflect.Uint:
   894  			if kx == kindConst {
   895  				x := vx.(uint)
   896  				switch ykind {
   897  				case reflect.Int:
   898  					return func(fr *frame) { fr.setReg(ir, x<<fr.int(iy)) }
   899  				case reflect.Int8:
   900  					return func(fr *frame) { fr.setReg(ir, x<<fr.int8(iy)) }
   901  				case reflect.Int16:
   902  					return func(fr *frame) { fr.setReg(ir, x<<fr.int16(iy)) }
   903  				case reflect.Int32:
   904  					return func(fr *frame) { fr.setReg(ir, x<<fr.int32(iy)) }
   905  				case reflect.Int64:
   906  					return func(fr *frame) { fr.setReg(ir, x<<fr.int64(iy)) }
   907  				case reflect.Uint:
   908  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint(iy)) }
   909  				case reflect.Uint8:
   910  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint8(iy)) }
   911  				case reflect.Uint16:
   912  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint16(iy)) }
   913  				case reflect.Uint32:
   914  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint32(iy)) }
   915  				case reflect.Uint64:
   916  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint64(iy)) }
   917  				case reflect.Uintptr:
   918  					return func(fr *frame) { fr.setReg(ir, x<<fr.uintptr(iy)) }
   919  				}
   920  			} else if ky == kindConst {
   921  				switch ykind {
   922  				case reflect.Int:
   923  					y := xtype.Int(vy)
   924  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<y) }
   925  				case reflect.Int8:
   926  					y := xtype.Int8(vy)
   927  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<y) }
   928  				case reflect.Int16:
   929  					y := xtype.Int16(vy)
   930  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<y) }
   931  				case reflect.Int32:
   932  					y := xtype.Int32(vy)
   933  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<y) }
   934  				case reflect.Int64:
   935  					y := xtype.Int64(vy)
   936  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<y) }
   937  				case reflect.Uint:
   938  					y := xtype.Uint(vy)
   939  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<y) }
   940  				case reflect.Uint8:
   941  					y := xtype.Uint8(vy)
   942  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<y) }
   943  				case reflect.Uint16:
   944  					y := xtype.Uint16(vy)
   945  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<y) }
   946  				case reflect.Uint32:
   947  					y := xtype.Uint32(vy)
   948  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<y) }
   949  				case reflect.Uint64:
   950  					y := xtype.Uint64(vy)
   951  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<y) }
   952  				case reflect.Uintptr:
   953  					y := xtype.Uintptr(vy)
   954  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<y) }
   955  				}
   956  			} else {
   957  				switch ykind {
   958  				case reflect.Int:
   959  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<fr.int(iy)) }
   960  				case reflect.Int8:
   961  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<fr.int8(iy)) }
   962  				case reflect.Int16:
   963  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<fr.int16(iy)) }
   964  				case reflect.Int32:
   965  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<fr.int32(iy)) }
   966  				case reflect.Int64:
   967  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<fr.int64(iy)) }
   968  				case reflect.Uint:
   969  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<fr.uint(iy)) }
   970  				case reflect.Uint8:
   971  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<fr.uint8(iy)) }
   972  				case reflect.Uint16:
   973  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<fr.uint16(iy)) }
   974  				case reflect.Uint32:
   975  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<fr.uint32(iy)) }
   976  				case reflect.Uint64:
   977  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<fr.uint64(iy)) }
   978  				case reflect.Uintptr:
   979  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)<<fr.uintptr(iy)) }
   980  				}
   981  			}
   982  		case reflect.Uint8:
   983  			if kx == kindConst {
   984  				x := vx.(uint8)
   985  				switch ykind {
   986  				case reflect.Int:
   987  					return func(fr *frame) { fr.setReg(ir, x<<fr.int(iy)) }
   988  				case reflect.Int8:
   989  					return func(fr *frame) { fr.setReg(ir, x<<fr.int8(iy)) }
   990  				case reflect.Int16:
   991  					return func(fr *frame) { fr.setReg(ir, x<<fr.int16(iy)) }
   992  				case reflect.Int32:
   993  					return func(fr *frame) { fr.setReg(ir, x<<fr.int32(iy)) }
   994  				case reflect.Int64:
   995  					return func(fr *frame) { fr.setReg(ir, x<<fr.int64(iy)) }
   996  				case reflect.Uint:
   997  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint(iy)) }
   998  				case reflect.Uint8:
   999  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint8(iy)) }
  1000  				case reflect.Uint16:
  1001  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint16(iy)) }
  1002  				case reflect.Uint32:
  1003  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint32(iy)) }
  1004  				case reflect.Uint64:
  1005  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint64(iy)) }
  1006  				case reflect.Uintptr:
  1007  					return func(fr *frame) { fr.setReg(ir, x<<fr.uintptr(iy)) }
  1008  				}
  1009  			} else if ky == kindConst {
  1010  				switch ykind {
  1011  				case reflect.Int:
  1012  					y := xtype.Int(vy)
  1013  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<y) }
  1014  				case reflect.Int8:
  1015  					y := xtype.Int8(vy)
  1016  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<y) }
  1017  				case reflect.Int16:
  1018  					y := xtype.Int16(vy)
  1019  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<y) }
  1020  				case reflect.Int32:
  1021  					y := xtype.Int32(vy)
  1022  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<y) }
  1023  				case reflect.Int64:
  1024  					y := xtype.Int64(vy)
  1025  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<y) }
  1026  				case reflect.Uint:
  1027  					y := xtype.Uint(vy)
  1028  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<y) }
  1029  				case reflect.Uint8:
  1030  					y := xtype.Uint8(vy)
  1031  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<y) }
  1032  				case reflect.Uint16:
  1033  					y := xtype.Uint16(vy)
  1034  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<y) }
  1035  				case reflect.Uint32:
  1036  					y := xtype.Uint32(vy)
  1037  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<y) }
  1038  				case reflect.Uint64:
  1039  					y := xtype.Uint64(vy)
  1040  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<y) }
  1041  				case reflect.Uintptr:
  1042  					y := xtype.Uintptr(vy)
  1043  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<y) }
  1044  				}
  1045  			} else {
  1046  				switch ykind {
  1047  				case reflect.Int:
  1048  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<fr.int(iy)) }
  1049  				case reflect.Int8:
  1050  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<fr.int8(iy)) }
  1051  				case reflect.Int16:
  1052  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<fr.int16(iy)) }
  1053  				case reflect.Int32:
  1054  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<fr.int32(iy)) }
  1055  				case reflect.Int64:
  1056  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<fr.int64(iy)) }
  1057  				case reflect.Uint:
  1058  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<fr.uint(iy)) }
  1059  				case reflect.Uint8:
  1060  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<fr.uint8(iy)) }
  1061  				case reflect.Uint16:
  1062  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<fr.uint16(iy)) }
  1063  				case reflect.Uint32:
  1064  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<fr.uint32(iy)) }
  1065  				case reflect.Uint64:
  1066  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<fr.uint64(iy)) }
  1067  				case reflect.Uintptr:
  1068  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)<<fr.uintptr(iy)) }
  1069  				}
  1070  			}
  1071  		case reflect.Uint16:
  1072  			if kx == kindConst {
  1073  				x := vx.(uint16)
  1074  				switch ykind {
  1075  				case reflect.Int:
  1076  					return func(fr *frame) { fr.setReg(ir, x<<fr.int(iy)) }
  1077  				case reflect.Int8:
  1078  					return func(fr *frame) { fr.setReg(ir, x<<fr.int8(iy)) }
  1079  				case reflect.Int16:
  1080  					return func(fr *frame) { fr.setReg(ir, x<<fr.int16(iy)) }
  1081  				case reflect.Int32:
  1082  					return func(fr *frame) { fr.setReg(ir, x<<fr.int32(iy)) }
  1083  				case reflect.Int64:
  1084  					return func(fr *frame) { fr.setReg(ir, x<<fr.int64(iy)) }
  1085  				case reflect.Uint:
  1086  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint(iy)) }
  1087  				case reflect.Uint8:
  1088  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint8(iy)) }
  1089  				case reflect.Uint16:
  1090  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint16(iy)) }
  1091  				case reflect.Uint32:
  1092  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint32(iy)) }
  1093  				case reflect.Uint64:
  1094  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint64(iy)) }
  1095  				case reflect.Uintptr:
  1096  					return func(fr *frame) { fr.setReg(ir, x<<fr.uintptr(iy)) }
  1097  				}
  1098  			} else if ky == kindConst {
  1099  				switch ykind {
  1100  				case reflect.Int:
  1101  					y := xtype.Int(vy)
  1102  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<y) }
  1103  				case reflect.Int8:
  1104  					y := xtype.Int8(vy)
  1105  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<y) }
  1106  				case reflect.Int16:
  1107  					y := xtype.Int16(vy)
  1108  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<y) }
  1109  				case reflect.Int32:
  1110  					y := xtype.Int32(vy)
  1111  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<y) }
  1112  				case reflect.Int64:
  1113  					y := xtype.Int64(vy)
  1114  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<y) }
  1115  				case reflect.Uint:
  1116  					y := xtype.Uint(vy)
  1117  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<y) }
  1118  				case reflect.Uint8:
  1119  					y := xtype.Uint8(vy)
  1120  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<y) }
  1121  				case reflect.Uint16:
  1122  					y := xtype.Uint16(vy)
  1123  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<y) }
  1124  				case reflect.Uint32:
  1125  					y := xtype.Uint32(vy)
  1126  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<y) }
  1127  				case reflect.Uint64:
  1128  					y := xtype.Uint64(vy)
  1129  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<y) }
  1130  				case reflect.Uintptr:
  1131  					y := xtype.Uintptr(vy)
  1132  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<y) }
  1133  				}
  1134  			} else {
  1135  				switch ykind {
  1136  				case reflect.Int:
  1137  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<fr.int(iy)) }
  1138  				case reflect.Int8:
  1139  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<fr.int8(iy)) }
  1140  				case reflect.Int16:
  1141  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<fr.int16(iy)) }
  1142  				case reflect.Int32:
  1143  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<fr.int32(iy)) }
  1144  				case reflect.Int64:
  1145  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<fr.int64(iy)) }
  1146  				case reflect.Uint:
  1147  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<fr.uint(iy)) }
  1148  				case reflect.Uint8:
  1149  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<fr.uint8(iy)) }
  1150  				case reflect.Uint16:
  1151  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<fr.uint16(iy)) }
  1152  				case reflect.Uint32:
  1153  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<fr.uint32(iy)) }
  1154  				case reflect.Uint64:
  1155  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<fr.uint64(iy)) }
  1156  				case reflect.Uintptr:
  1157  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)<<fr.uintptr(iy)) }
  1158  				}
  1159  			}
  1160  		case reflect.Uint32:
  1161  			if kx == kindConst {
  1162  				x := vx.(uint32)
  1163  				switch ykind {
  1164  				case reflect.Int:
  1165  					return func(fr *frame) { fr.setReg(ir, x<<fr.int(iy)) }
  1166  				case reflect.Int8:
  1167  					return func(fr *frame) { fr.setReg(ir, x<<fr.int8(iy)) }
  1168  				case reflect.Int16:
  1169  					return func(fr *frame) { fr.setReg(ir, x<<fr.int16(iy)) }
  1170  				case reflect.Int32:
  1171  					return func(fr *frame) { fr.setReg(ir, x<<fr.int32(iy)) }
  1172  				case reflect.Int64:
  1173  					return func(fr *frame) { fr.setReg(ir, x<<fr.int64(iy)) }
  1174  				case reflect.Uint:
  1175  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint(iy)) }
  1176  				case reflect.Uint8:
  1177  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint8(iy)) }
  1178  				case reflect.Uint16:
  1179  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint16(iy)) }
  1180  				case reflect.Uint32:
  1181  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint32(iy)) }
  1182  				case reflect.Uint64:
  1183  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint64(iy)) }
  1184  				case reflect.Uintptr:
  1185  					return func(fr *frame) { fr.setReg(ir, x<<fr.uintptr(iy)) }
  1186  				}
  1187  			} else if ky == kindConst {
  1188  				switch ykind {
  1189  				case reflect.Int:
  1190  					y := xtype.Int(vy)
  1191  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<y) }
  1192  				case reflect.Int8:
  1193  					y := xtype.Int8(vy)
  1194  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<y) }
  1195  				case reflect.Int16:
  1196  					y := xtype.Int16(vy)
  1197  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<y) }
  1198  				case reflect.Int32:
  1199  					y := xtype.Int32(vy)
  1200  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<y) }
  1201  				case reflect.Int64:
  1202  					y := xtype.Int64(vy)
  1203  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<y) }
  1204  				case reflect.Uint:
  1205  					y := xtype.Uint(vy)
  1206  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<y) }
  1207  				case reflect.Uint8:
  1208  					y := xtype.Uint8(vy)
  1209  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<y) }
  1210  				case reflect.Uint16:
  1211  					y := xtype.Uint16(vy)
  1212  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<y) }
  1213  				case reflect.Uint32:
  1214  					y := xtype.Uint32(vy)
  1215  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<y) }
  1216  				case reflect.Uint64:
  1217  					y := xtype.Uint64(vy)
  1218  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<y) }
  1219  				case reflect.Uintptr:
  1220  					y := xtype.Uintptr(vy)
  1221  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<y) }
  1222  				}
  1223  			} else {
  1224  				switch ykind {
  1225  				case reflect.Int:
  1226  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<fr.int(iy)) }
  1227  				case reflect.Int8:
  1228  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<fr.int8(iy)) }
  1229  				case reflect.Int16:
  1230  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<fr.int16(iy)) }
  1231  				case reflect.Int32:
  1232  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<fr.int32(iy)) }
  1233  				case reflect.Int64:
  1234  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<fr.int64(iy)) }
  1235  				case reflect.Uint:
  1236  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<fr.uint(iy)) }
  1237  				case reflect.Uint8:
  1238  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<fr.uint8(iy)) }
  1239  				case reflect.Uint16:
  1240  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<fr.uint16(iy)) }
  1241  				case reflect.Uint32:
  1242  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<fr.uint32(iy)) }
  1243  				case reflect.Uint64:
  1244  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<fr.uint64(iy)) }
  1245  				case reflect.Uintptr:
  1246  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)<<fr.uintptr(iy)) }
  1247  				}
  1248  			}
  1249  		case reflect.Uint64:
  1250  			if kx == kindConst {
  1251  				x := vx.(uint64)
  1252  				switch ykind {
  1253  				case reflect.Int:
  1254  					return func(fr *frame) { fr.setReg(ir, x<<fr.int(iy)) }
  1255  				case reflect.Int8:
  1256  					return func(fr *frame) { fr.setReg(ir, x<<fr.int8(iy)) }
  1257  				case reflect.Int16:
  1258  					return func(fr *frame) { fr.setReg(ir, x<<fr.int16(iy)) }
  1259  				case reflect.Int32:
  1260  					return func(fr *frame) { fr.setReg(ir, x<<fr.int32(iy)) }
  1261  				case reflect.Int64:
  1262  					return func(fr *frame) { fr.setReg(ir, x<<fr.int64(iy)) }
  1263  				case reflect.Uint:
  1264  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint(iy)) }
  1265  				case reflect.Uint8:
  1266  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint8(iy)) }
  1267  				case reflect.Uint16:
  1268  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint16(iy)) }
  1269  				case reflect.Uint32:
  1270  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint32(iy)) }
  1271  				case reflect.Uint64:
  1272  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint64(iy)) }
  1273  				case reflect.Uintptr:
  1274  					return func(fr *frame) { fr.setReg(ir, x<<fr.uintptr(iy)) }
  1275  				}
  1276  			} else if ky == kindConst {
  1277  				switch ykind {
  1278  				case reflect.Int:
  1279  					y := xtype.Int(vy)
  1280  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<y) }
  1281  				case reflect.Int8:
  1282  					y := xtype.Int8(vy)
  1283  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<y) }
  1284  				case reflect.Int16:
  1285  					y := xtype.Int16(vy)
  1286  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<y) }
  1287  				case reflect.Int32:
  1288  					y := xtype.Int32(vy)
  1289  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<y) }
  1290  				case reflect.Int64:
  1291  					y := xtype.Int64(vy)
  1292  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<y) }
  1293  				case reflect.Uint:
  1294  					y := xtype.Uint(vy)
  1295  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<y) }
  1296  				case reflect.Uint8:
  1297  					y := xtype.Uint8(vy)
  1298  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<y) }
  1299  				case reflect.Uint16:
  1300  					y := xtype.Uint16(vy)
  1301  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<y) }
  1302  				case reflect.Uint32:
  1303  					y := xtype.Uint32(vy)
  1304  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<y) }
  1305  				case reflect.Uint64:
  1306  					y := xtype.Uint64(vy)
  1307  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<y) }
  1308  				case reflect.Uintptr:
  1309  					y := xtype.Uintptr(vy)
  1310  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<y) }
  1311  				}
  1312  			} else {
  1313  				switch ykind {
  1314  				case reflect.Int:
  1315  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<fr.int(iy)) }
  1316  				case reflect.Int8:
  1317  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<fr.int8(iy)) }
  1318  				case reflect.Int16:
  1319  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<fr.int16(iy)) }
  1320  				case reflect.Int32:
  1321  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<fr.int32(iy)) }
  1322  				case reflect.Int64:
  1323  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<fr.int64(iy)) }
  1324  				case reflect.Uint:
  1325  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<fr.uint(iy)) }
  1326  				case reflect.Uint8:
  1327  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<fr.uint8(iy)) }
  1328  				case reflect.Uint16:
  1329  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<fr.uint16(iy)) }
  1330  				case reflect.Uint32:
  1331  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<fr.uint32(iy)) }
  1332  				case reflect.Uint64:
  1333  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<fr.uint64(iy)) }
  1334  				case reflect.Uintptr:
  1335  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)<<fr.uintptr(iy)) }
  1336  				}
  1337  			}
  1338  		case reflect.Uintptr:
  1339  			if kx == kindConst {
  1340  				x := vx.(uintptr)
  1341  				switch ykind {
  1342  				case reflect.Int:
  1343  					return func(fr *frame) { fr.setReg(ir, x<<fr.int(iy)) }
  1344  				case reflect.Int8:
  1345  					return func(fr *frame) { fr.setReg(ir, x<<fr.int8(iy)) }
  1346  				case reflect.Int16:
  1347  					return func(fr *frame) { fr.setReg(ir, x<<fr.int16(iy)) }
  1348  				case reflect.Int32:
  1349  					return func(fr *frame) { fr.setReg(ir, x<<fr.int32(iy)) }
  1350  				case reflect.Int64:
  1351  					return func(fr *frame) { fr.setReg(ir, x<<fr.int64(iy)) }
  1352  				case reflect.Uint:
  1353  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint(iy)) }
  1354  				case reflect.Uint8:
  1355  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint8(iy)) }
  1356  				case reflect.Uint16:
  1357  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint16(iy)) }
  1358  				case reflect.Uint32:
  1359  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint32(iy)) }
  1360  				case reflect.Uint64:
  1361  					return func(fr *frame) { fr.setReg(ir, x<<fr.uint64(iy)) }
  1362  				case reflect.Uintptr:
  1363  					return func(fr *frame) { fr.setReg(ir, x<<fr.uintptr(iy)) }
  1364  				}
  1365  			} else if ky == kindConst {
  1366  				switch ykind {
  1367  				case reflect.Int:
  1368  					y := xtype.Int(vy)
  1369  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<y) }
  1370  				case reflect.Int8:
  1371  					y := xtype.Int8(vy)
  1372  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<y) }
  1373  				case reflect.Int16:
  1374  					y := xtype.Int16(vy)
  1375  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<y) }
  1376  				case reflect.Int32:
  1377  					y := xtype.Int32(vy)
  1378  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<y) }
  1379  				case reflect.Int64:
  1380  					y := xtype.Int64(vy)
  1381  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<y) }
  1382  				case reflect.Uint:
  1383  					y := xtype.Uint(vy)
  1384  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<y) }
  1385  				case reflect.Uint8:
  1386  					y := xtype.Uint8(vy)
  1387  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<y) }
  1388  				case reflect.Uint16:
  1389  					y := xtype.Uint16(vy)
  1390  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<y) }
  1391  				case reflect.Uint32:
  1392  					y := xtype.Uint32(vy)
  1393  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<y) }
  1394  				case reflect.Uint64:
  1395  					y := xtype.Uint64(vy)
  1396  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<y) }
  1397  				case reflect.Uintptr:
  1398  					y := xtype.Uintptr(vy)
  1399  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<y) }
  1400  				}
  1401  			} else {
  1402  				switch ykind {
  1403  				case reflect.Int:
  1404  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<fr.int(iy)) }
  1405  				case reflect.Int8:
  1406  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<fr.int8(iy)) }
  1407  				case reflect.Int16:
  1408  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<fr.int16(iy)) }
  1409  				case reflect.Int32:
  1410  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<fr.int32(iy)) }
  1411  				case reflect.Int64:
  1412  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<fr.int64(iy)) }
  1413  				case reflect.Uint:
  1414  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<fr.uint(iy)) }
  1415  				case reflect.Uint8:
  1416  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<fr.uint8(iy)) }
  1417  				case reflect.Uint16:
  1418  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<fr.uint16(iy)) }
  1419  				case reflect.Uint32:
  1420  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<fr.uint32(iy)) }
  1421  				case reflect.Uint64:
  1422  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<fr.uint64(iy)) }
  1423  				case reflect.Uintptr:
  1424  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)<<fr.uintptr(iy)) }
  1425  				}
  1426  			}
  1427  		}
  1428  	} else {
  1429  		t := xtype.TypeOfType(xtyp)
  1430  		switch xkind {
  1431  		case reflect.Int:
  1432  			if kx == kindConst {
  1433  				x := xtype.Int(vx)
  1434  				switch ykind {
  1435  				case reflect.Int:
  1436  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int(iy))) }
  1437  				case reflect.Int8:
  1438  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int8(iy))) }
  1439  				case reflect.Int16:
  1440  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int16(iy))) }
  1441  				case reflect.Int32:
  1442  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int32(iy))) }
  1443  				case reflect.Int64:
  1444  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int64(iy))) }
  1445  				case reflect.Uint:
  1446  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint(iy))) }
  1447  				case reflect.Uint8:
  1448  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint8(iy))) }
  1449  				case reflect.Uint16:
  1450  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint16(iy))) }
  1451  				case reflect.Uint32:
  1452  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint32(iy))) }
  1453  				case reflect.Uint64:
  1454  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint64(iy))) }
  1455  				case reflect.Uintptr:
  1456  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uintptr(iy))) }
  1457  				}
  1458  			} else if ky == kindConst {
  1459  				switch ykind {
  1460  				case reflect.Int:
  1461  					y := xtype.Int(vy)
  1462  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<y)) }
  1463  				case reflect.Int8:
  1464  					y := xtype.Int8(vy)
  1465  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<y)) }
  1466  				case reflect.Int16:
  1467  					y := xtype.Int16(vy)
  1468  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<y)) }
  1469  				case reflect.Int32:
  1470  					y := xtype.Int32(vy)
  1471  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<y)) }
  1472  				case reflect.Int64:
  1473  					y := xtype.Int64(vy)
  1474  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<y)) }
  1475  				case reflect.Uint:
  1476  					y := xtype.Uint(vy)
  1477  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<y)) }
  1478  				case reflect.Uint8:
  1479  					y := xtype.Uint8(vy)
  1480  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<y)) }
  1481  				case reflect.Uint16:
  1482  					y := xtype.Uint16(vy)
  1483  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<y)) }
  1484  				case reflect.Uint32:
  1485  					y := xtype.Uint32(vy)
  1486  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<y)) }
  1487  				case reflect.Uint64:
  1488  					y := xtype.Uint64(vy)
  1489  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<y)) }
  1490  				case reflect.Uintptr:
  1491  					y := xtype.Uintptr(vy)
  1492  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<y)) }
  1493  				}
  1494  			} else {
  1495  				switch ykind {
  1496  				case reflect.Int:
  1497  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<fr.int(iy))) }
  1498  				case reflect.Int8:
  1499  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<fr.int8(iy))) }
  1500  				case reflect.Int16:
  1501  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<fr.int16(iy))) }
  1502  				case reflect.Int32:
  1503  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<fr.int32(iy))) }
  1504  				case reflect.Int64:
  1505  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<fr.int64(iy))) }
  1506  				case reflect.Uint:
  1507  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<fr.uint(iy))) }
  1508  				case reflect.Uint8:
  1509  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<fr.uint8(iy))) }
  1510  				case reflect.Uint16:
  1511  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<fr.uint16(iy))) }
  1512  				case reflect.Uint32:
  1513  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<fr.uint32(iy))) }
  1514  				case reflect.Uint64:
  1515  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<fr.uint64(iy))) }
  1516  				case reflect.Uintptr:
  1517  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)<<fr.uintptr(iy))) }
  1518  				}
  1519  			}
  1520  		case reflect.Int8:
  1521  			if kx == kindConst {
  1522  				x := xtype.Int8(vx)
  1523  				switch ykind {
  1524  				case reflect.Int:
  1525  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int(iy))) }
  1526  				case reflect.Int8:
  1527  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int8(iy))) }
  1528  				case reflect.Int16:
  1529  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int16(iy))) }
  1530  				case reflect.Int32:
  1531  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int32(iy))) }
  1532  				case reflect.Int64:
  1533  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int64(iy))) }
  1534  				case reflect.Uint:
  1535  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint(iy))) }
  1536  				case reflect.Uint8:
  1537  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint8(iy))) }
  1538  				case reflect.Uint16:
  1539  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint16(iy))) }
  1540  				case reflect.Uint32:
  1541  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint32(iy))) }
  1542  				case reflect.Uint64:
  1543  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint64(iy))) }
  1544  				case reflect.Uintptr:
  1545  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uintptr(iy))) }
  1546  				}
  1547  			} else if ky == kindConst {
  1548  				switch ykind {
  1549  				case reflect.Int:
  1550  					y := xtype.Int(vy)
  1551  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<y)) }
  1552  				case reflect.Int8:
  1553  					y := xtype.Int8(vy)
  1554  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<y)) }
  1555  				case reflect.Int16:
  1556  					y := xtype.Int16(vy)
  1557  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<y)) }
  1558  				case reflect.Int32:
  1559  					y := xtype.Int32(vy)
  1560  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<y)) }
  1561  				case reflect.Int64:
  1562  					y := xtype.Int64(vy)
  1563  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<y)) }
  1564  				case reflect.Uint:
  1565  					y := xtype.Uint(vy)
  1566  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<y)) }
  1567  				case reflect.Uint8:
  1568  					y := xtype.Uint8(vy)
  1569  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<y)) }
  1570  				case reflect.Uint16:
  1571  					y := xtype.Uint16(vy)
  1572  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<y)) }
  1573  				case reflect.Uint32:
  1574  					y := xtype.Uint32(vy)
  1575  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<y)) }
  1576  				case reflect.Uint64:
  1577  					y := xtype.Uint64(vy)
  1578  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<y)) }
  1579  				case reflect.Uintptr:
  1580  					y := xtype.Uintptr(vy)
  1581  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<y)) }
  1582  				}
  1583  			} else {
  1584  				switch ykind {
  1585  				case reflect.Int:
  1586  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<fr.int(iy))) }
  1587  				case reflect.Int8:
  1588  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<fr.int8(iy))) }
  1589  				case reflect.Int16:
  1590  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<fr.int16(iy))) }
  1591  				case reflect.Int32:
  1592  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<fr.int32(iy))) }
  1593  				case reflect.Int64:
  1594  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<fr.int64(iy))) }
  1595  				case reflect.Uint:
  1596  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<fr.uint(iy))) }
  1597  				case reflect.Uint8:
  1598  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<fr.uint8(iy))) }
  1599  				case reflect.Uint16:
  1600  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<fr.uint16(iy))) }
  1601  				case reflect.Uint32:
  1602  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<fr.uint32(iy))) }
  1603  				case reflect.Uint64:
  1604  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<fr.uint64(iy))) }
  1605  				case reflect.Uintptr:
  1606  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)<<fr.uintptr(iy))) }
  1607  				}
  1608  			}
  1609  		case reflect.Int16:
  1610  			if kx == kindConst {
  1611  				x := xtype.Int16(vx)
  1612  				switch ykind {
  1613  				case reflect.Int:
  1614  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int(iy))) }
  1615  				case reflect.Int8:
  1616  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int8(iy))) }
  1617  				case reflect.Int16:
  1618  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int16(iy))) }
  1619  				case reflect.Int32:
  1620  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int32(iy))) }
  1621  				case reflect.Int64:
  1622  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int64(iy))) }
  1623  				case reflect.Uint:
  1624  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint(iy))) }
  1625  				case reflect.Uint8:
  1626  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint8(iy))) }
  1627  				case reflect.Uint16:
  1628  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint16(iy))) }
  1629  				case reflect.Uint32:
  1630  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint32(iy))) }
  1631  				case reflect.Uint64:
  1632  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint64(iy))) }
  1633  				case reflect.Uintptr:
  1634  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uintptr(iy))) }
  1635  				}
  1636  			} else if ky == kindConst {
  1637  				switch ykind {
  1638  				case reflect.Int:
  1639  					y := xtype.Int(vy)
  1640  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<y)) }
  1641  				case reflect.Int8:
  1642  					y := xtype.Int8(vy)
  1643  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<y)) }
  1644  				case reflect.Int16:
  1645  					y := xtype.Int16(vy)
  1646  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<y)) }
  1647  				case reflect.Int32:
  1648  					y := xtype.Int32(vy)
  1649  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<y)) }
  1650  				case reflect.Int64:
  1651  					y := xtype.Int64(vy)
  1652  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<y)) }
  1653  				case reflect.Uint:
  1654  					y := xtype.Uint(vy)
  1655  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<y)) }
  1656  				case reflect.Uint8:
  1657  					y := xtype.Uint8(vy)
  1658  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<y)) }
  1659  				case reflect.Uint16:
  1660  					y := xtype.Uint16(vy)
  1661  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<y)) }
  1662  				case reflect.Uint32:
  1663  					y := xtype.Uint32(vy)
  1664  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<y)) }
  1665  				case reflect.Uint64:
  1666  					y := xtype.Uint64(vy)
  1667  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<y)) }
  1668  				case reflect.Uintptr:
  1669  					y := xtype.Uintptr(vy)
  1670  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<y)) }
  1671  				}
  1672  			} else {
  1673  				switch ykind {
  1674  				case reflect.Int:
  1675  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<fr.int(iy))) }
  1676  				case reflect.Int8:
  1677  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<fr.int8(iy))) }
  1678  				case reflect.Int16:
  1679  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<fr.int16(iy))) }
  1680  				case reflect.Int32:
  1681  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<fr.int32(iy))) }
  1682  				case reflect.Int64:
  1683  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<fr.int64(iy))) }
  1684  				case reflect.Uint:
  1685  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<fr.uint(iy))) }
  1686  				case reflect.Uint8:
  1687  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<fr.uint8(iy))) }
  1688  				case reflect.Uint16:
  1689  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<fr.uint16(iy))) }
  1690  				case reflect.Uint32:
  1691  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<fr.uint32(iy))) }
  1692  				case reflect.Uint64:
  1693  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<fr.uint64(iy))) }
  1694  				case reflect.Uintptr:
  1695  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)<<fr.uintptr(iy))) }
  1696  				}
  1697  			}
  1698  		case reflect.Int32:
  1699  			if kx == kindConst {
  1700  				x := xtype.Int32(vx)
  1701  				switch ykind {
  1702  				case reflect.Int:
  1703  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int(iy))) }
  1704  				case reflect.Int8:
  1705  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int8(iy))) }
  1706  				case reflect.Int16:
  1707  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int16(iy))) }
  1708  				case reflect.Int32:
  1709  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int32(iy))) }
  1710  				case reflect.Int64:
  1711  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int64(iy))) }
  1712  				case reflect.Uint:
  1713  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint(iy))) }
  1714  				case reflect.Uint8:
  1715  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint8(iy))) }
  1716  				case reflect.Uint16:
  1717  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint16(iy))) }
  1718  				case reflect.Uint32:
  1719  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint32(iy))) }
  1720  				case reflect.Uint64:
  1721  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint64(iy))) }
  1722  				case reflect.Uintptr:
  1723  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uintptr(iy))) }
  1724  				}
  1725  			} else if ky == kindConst {
  1726  				switch ykind {
  1727  				case reflect.Int:
  1728  					y := xtype.Int(vy)
  1729  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<y)) }
  1730  				case reflect.Int8:
  1731  					y := xtype.Int8(vy)
  1732  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<y)) }
  1733  				case reflect.Int16:
  1734  					y := xtype.Int16(vy)
  1735  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<y)) }
  1736  				case reflect.Int32:
  1737  					y := xtype.Int32(vy)
  1738  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<y)) }
  1739  				case reflect.Int64:
  1740  					y := xtype.Int64(vy)
  1741  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<y)) }
  1742  				case reflect.Uint:
  1743  					y := xtype.Uint(vy)
  1744  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<y)) }
  1745  				case reflect.Uint8:
  1746  					y := xtype.Uint8(vy)
  1747  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<y)) }
  1748  				case reflect.Uint16:
  1749  					y := xtype.Uint16(vy)
  1750  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<y)) }
  1751  				case reflect.Uint32:
  1752  					y := xtype.Uint32(vy)
  1753  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<y)) }
  1754  				case reflect.Uint64:
  1755  					y := xtype.Uint64(vy)
  1756  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<y)) }
  1757  				case reflect.Uintptr:
  1758  					y := xtype.Uintptr(vy)
  1759  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<y)) }
  1760  				}
  1761  			} else {
  1762  				switch ykind {
  1763  				case reflect.Int:
  1764  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<fr.int(iy))) }
  1765  				case reflect.Int8:
  1766  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<fr.int8(iy))) }
  1767  				case reflect.Int16:
  1768  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<fr.int16(iy))) }
  1769  				case reflect.Int32:
  1770  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<fr.int32(iy))) }
  1771  				case reflect.Int64:
  1772  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<fr.int64(iy))) }
  1773  				case reflect.Uint:
  1774  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<fr.uint(iy))) }
  1775  				case reflect.Uint8:
  1776  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<fr.uint8(iy))) }
  1777  				case reflect.Uint16:
  1778  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<fr.uint16(iy))) }
  1779  				case reflect.Uint32:
  1780  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<fr.uint32(iy))) }
  1781  				case reflect.Uint64:
  1782  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<fr.uint64(iy))) }
  1783  				case reflect.Uintptr:
  1784  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)<<fr.uintptr(iy))) }
  1785  				}
  1786  			}
  1787  		case reflect.Int64:
  1788  			if kx == kindConst {
  1789  				x := xtype.Int64(vx)
  1790  				switch ykind {
  1791  				case reflect.Int:
  1792  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int(iy))) }
  1793  				case reflect.Int8:
  1794  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int8(iy))) }
  1795  				case reflect.Int16:
  1796  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int16(iy))) }
  1797  				case reflect.Int32:
  1798  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int32(iy))) }
  1799  				case reflect.Int64:
  1800  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int64(iy))) }
  1801  				case reflect.Uint:
  1802  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint(iy))) }
  1803  				case reflect.Uint8:
  1804  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint8(iy))) }
  1805  				case reflect.Uint16:
  1806  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint16(iy))) }
  1807  				case reflect.Uint32:
  1808  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint32(iy))) }
  1809  				case reflect.Uint64:
  1810  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint64(iy))) }
  1811  				case reflect.Uintptr:
  1812  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uintptr(iy))) }
  1813  				}
  1814  			} else if ky == kindConst {
  1815  				switch ykind {
  1816  				case reflect.Int:
  1817  					y := xtype.Int(vy)
  1818  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<y)) }
  1819  				case reflect.Int8:
  1820  					y := xtype.Int8(vy)
  1821  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<y)) }
  1822  				case reflect.Int16:
  1823  					y := xtype.Int16(vy)
  1824  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<y)) }
  1825  				case reflect.Int32:
  1826  					y := xtype.Int32(vy)
  1827  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<y)) }
  1828  				case reflect.Int64:
  1829  					y := xtype.Int64(vy)
  1830  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<y)) }
  1831  				case reflect.Uint:
  1832  					y := xtype.Uint(vy)
  1833  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<y)) }
  1834  				case reflect.Uint8:
  1835  					y := xtype.Uint8(vy)
  1836  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<y)) }
  1837  				case reflect.Uint16:
  1838  					y := xtype.Uint16(vy)
  1839  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<y)) }
  1840  				case reflect.Uint32:
  1841  					y := xtype.Uint32(vy)
  1842  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<y)) }
  1843  				case reflect.Uint64:
  1844  					y := xtype.Uint64(vy)
  1845  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<y)) }
  1846  				case reflect.Uintptr:
  1847  					y := xtype.Uintptr(vy)
  1848  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<y)) }
  1849  				}
  1850  			} else {
  1851  				switch ykind {
  1852  				case reflect.Int:
  1853  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<fr.int(iy))) }
  1854  				case reflect.Int8:
  1855  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<fr.int8(iy))) }
  1856  				case reflect.Int16:
  1857  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<fr.int16(iy))) }
  1858  				case reflect.Int32:
  1859  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<fr.int32(iy))) }
  1860  				case reflect.Int64:
  1861  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<fr.int64(iy))) }
  1862  				case reflect.Uint:
  1863  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<fr.uint(iy))) }
  1864  				case reflect.Uint8:
  1865  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<fr.uint8(iy))) }
  1866  				case reflect.Uint16:
  1867  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<fr.uint16(iy))) }
  1868  				case reflect.Uint32:
  1869  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<fr.uint32(iy))) }
  1870  				case reflect.Uint64:
  1871  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<fr.uint64(iy))) }
  1872  				case reflect.Uintptr:
  1873  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)<<fr.uintptr(iy))) }
  1874  				}
  1875  			}
  1876  		case reflect.Uint:
  1877  			if kx == kindConst {
  1878  				x := xtype.Uint(vx)
  1879  				switch ykind {
  1880  				case reflect.Int:
  1881  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int(iy))) }
  1882  				case reflect.Int8:
  1883  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int8(iy))) }
  1884  				case reflect.Int16:
  1885  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int16(iy))) }
  1886  				case reflect.Int32:
  1887  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int32(iy))) }
  1888  				case reflect.Int64:
  1889  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int64(iy))) }
  1890  				case reflect.Uint:
  1891  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint(iy))) }
  1892  				case reflect.Uint8:
  1893  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint8(iy))) }
  1894  				case reflect.Uint16:
  1895  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint16(iy))) }
  1896  				case reflect.Uint32:
  1897  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint32(iy))) }
  1898  				case reflect.Uint64:
  1899  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint64(iy))) }
  1900  				case reflect.Uintptr:
  1901  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uintptr(iy))) }
  1902  				}
  1903  			} else if ky == kindConst {
  1904  				switch ykind {
  1905  				case reflect.Int:
  1906  					y := xtype.Int(vy)
  1907  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<y)) }
  1908  				case reflect.Int8:
  1909  					y := xtype.Int8(vy)
  1910  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<y)) }
  1911  				case reflect.Int16:
  1912  					y := xtype.Int16(vy)
  1913  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<y)) }
  1914  				case reflect.Int32:
  1915  					y := xtype.Int32(vy)
  1916  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<y)) }
  1917  				case reflect.Int64:
  1918  					y := xtype.Int64(vy)
  1919  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<y)) }
  1920  				case reflect.Uint:
  1921  					y := xtype.Uint(vy)
  1922  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<y)) }
  1923  				case reflect.Uint8:
  1924  					y := xtype.Uint8(vy)
  1925  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<y)) }
  1926  				case reflect.Uint16:
  1927  					y := xtype.Uint16(vy)
  1928  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<y)) }
  1929  				case reflect.Uint32:
  1930  					y := xtype.Uint32(vy)
  1931  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<y)) }
  1932  				case reflect.Uint64:
  1933  					y := xtype.Uint64(vy)
  1934  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<y)) }
  1935  				case reflect.Uintptr:
  1936  					y := xtype.Uintptr(vy)
  1937  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<y)) }
  1938  				}
  1939  			} else {
  1940  				switch ykind {
  1941  				case reflect.Int:
  1942  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<fr.int(iy))) }
  1943  				case reflect.Int8:
  1944  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<fr.int8(iy))) }
  1945  				case reflect.Int16:
  1946  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<fr.int16(iy))) }
  1947  				case reflect.Int32:
  1948  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<fr.int32(iy))) }
  1949  				case reflect.Int64:
  1950  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<fr.int64(iy))) }
  1951  				case reflect.Uint:
  1952  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<fr.uint(iy))) }
  1953  				case reflect.Uint8:
  1954  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<fr.uint8(iy))) }
  1955  				case reflect.Uint16:
  1956  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<fr.uint16(iy))) }
  1957  				case reflect.Uint32:
  1958  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<fr.uint32(iy))) }
  1959  				case reflect.Uint64:
  1960  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<fr.uint64(iy))) }
  1961  				case reflect.Uintptr:
  1962  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)<<fr.uintptr(iy))) }
  1963  				}
  1964  			}
  1965  		case reflect.Uint8:
  1966  			if kx == kindConst {
  1967  				x := xtype.Uint8(vx)
  1968  				switch ykind {
  1969  				case reflect.Int:
  1970  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int(iy))) }
  1971  				case reflect.Int8:
  1972  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int8(iy))) }
  1973  				case reflect.Int16:
  1974  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int16(iy))) }
  1975  				case reflect.Int32:
  1976  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int32(iy))) }
  1977  				case reflect.Int64:
  1978  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int64(iy))) }
  1979  				case reflect.Uint:
  1980  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint(iy))) }
  1981  				case reflect.Uint8:
  1982  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint8(iy))) }
  1983  				case reflect.Uint16:
  1984  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint16(iy))) }
  1985  				case reflect.Uint32:
  1986  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint32(iy))) }
  1987  				case reflect.Uint64:
  1988  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint64(iy))) }
  1989  				case reflect.Uintptr:
  1990  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uintptr(iy))) }
  1991  				}
  1992  			} else if ky == kindConst {
  1993  				switch ykind {
  1994  				case reflect.Int:
  1995  					y := xtype.Int(vy)
  1996  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<y)) }
  1997  				case reflect.Int8:
  1998  					y := xtype.Int8(vy)
  1999  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<y)) }
  2000  				case reflect.Int16:
  2001  					y := xtype.Int16(vy)
  2002  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<y)) }
  2003  				case reflect.Int32:
  2004  					y := xtype.Int32(vy)
  2005  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<y)) }
  2006  				case reflect.Int64:
  2007  					y := xtype.Int64(vy)
  2008  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<y)) }
  2009  				case reflect.Uint:
  2010  					y := xtype.Uint(vy)
  2011  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<y)) }
  2012  				case reflect.Uint8:
  2013  					y := xtype.Uint8(vy)
  2014  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<y)) }
  2015  				case reflect.Uint16:
  2016  					y := xtype.Uint16(vy)
  2017  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<y)) }
  2018  				case reflect.Uint32:
  2019  					y := xtype.Uint32(vy)
  2020  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<y)) }
  2021  				case reflect.Uint64:
  2022  					y := xtype.Uint64(vy)
  2023  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<y)) }
  2024  				case reflect.Uintptr:
  2025  					y := xtype.Uintptr(vy)
  2026  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<y)) }
  2027  				}
  2028  			} else {
  2029  				switch ykind {
  2030  				case reflect.Int:
  2031  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<fr.int(iy))) }
  2032  				case reflect.Int8:
  2033  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<fr.int8(iy))) }
  2034  				case reflect.Int16:
  2035  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<fr.int16(iy))) }
  2036  				case reflect.Int32:
  2037  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<fr.int32(iy))) }
  2038  				case reflect.Int64:
  2039  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<fr.int64(iy))) }
  2040  				case reflect.Uint:
  2041  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<fr.uint(iy))) }
  2042  				case reflect.Uint8:
  2043  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<fr.uint8(iy))) }
  2044  				case reflect.Uint16:
  2045  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<fr.uint16(iy))) }
  2046  				case reflect.Uint32:
  2047  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<fr.uint32(iy))) }
  2048  				case reflect.Uint64:
  2049  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<fr.uint64(iy))) }
  2050  				case reflect.Uintptr:
  2051  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)<<fr.uintptr(iy))) }
  2052  				}
  2053  			}
  2054  		case reflect.Uint16:
  2055  			if kx == kindConst {
  2056  				x := xtype.Uint16(vx)
  2057  				switch ykind {
  2058  				case reflect.Int:
  2059  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int(iy))) }
  2060  				case reflect.Int8:
  2061  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int8(iy))) }
  2062  				case reflect.Int16:
  2063  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int16(iy))) }
  2064  				case reflect.Int32:
  2065  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int32(iy))) }
  2066  				case reflect.Int64:
  2067  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int64(iy))) }
  2068  				case reflect.Uint:
  2069  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint(iy))) }
  2070  				case reflect.Uint8:
  2071  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint8(iy))) }
  2072  				case reflect.Uint16:
  2073  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint16(iy))) }
  2074  				case reflect.Uint32:
  2075  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint32(iy))) }
  2076  				case reflect.Uint64:
  2077  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint64(iy))) }
  2078  				case reflect.Uintptr:
  2079  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uintptr(iy))) }
  2080  				}
  2081  			} else if ky == kindConst {
  2082  				switch ykind {
  2083  				case reflect.Int:
  2084  					y := xtype.Int(vy)
  2085  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<y)) }
  2086  				case reflect.Int8:
  2087  					y := xtype.Int8(vy)
  2088  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<y)) }
  2089  				case reflect.Int16:
  2090  					y := xtype.Int16(vy)
  2091  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<y)) }
  2092  				case reflect.Int32:
  2093  					y := xtype.Int32(vy)
  2094  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<y)) }
  2095  				case reflect.Int64:
  2096  					y := xtype.Int64(vy)
  2097  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<y)) }
  2098  				case reflect.Uint:
  2099  					y := xtype.Uint(vy)
  2100  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<y)) }
  2101  				case reflect.Uint8:
  2102  					y := xtype.Uint8(vy)
  2103  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<y)) }
  2104  				case reflect.Uint16:
  2105  					y := xtype.Uint16(vy)
  2106  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<y)) }
  2107  				case reflect.Uint32:
  2108  					y := xtype.Uint32(vy)
  2109  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<y)) }
  2110  				case reflect.Uint64:
  2111  					y := xtype.Uint64(vy)
  2112  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<y)) }
  2113  				case reflect.Uintptr:
  2114  					y := xtype.Uintptr(vy)
  2115  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<y)) }
  2116  				}
  2117  			} else {
  2118  				switch ykind {
  2119  				case reflect.Int:
  2120  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<fr.int(iy))) }
  2121  				case reflect.Int8:
  2122  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<fr.int8(iy))) }
  2123  				case reflect.Int16:
  2124  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<fr.int16(iy))) }
  2125  				case reflect.Int32:
  2126  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<fr.int32(iy))) }
  2127  				case reflect.Int64:
  2128  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<fr.int64(iy))) }
  2129  				case reflect.Uint:
  2130  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<fr.uint(iy))) }
  2131  				case reflect.Uint8:
  2132  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<fr.uint8(iy))) }
  2133  				case reflect.Uint16:
  2134  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<fr.uint16(iy))) }
  2135  				case reflect.Uint32:
  2136  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<fr.uint32(iy))) }
  2137  				case reflect.Uint64:
  2138  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<fr.uint64(iy))) }
  2139  				case reflect.Uintptr:
  2140  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)<<fr.uintptr(iy))) }
  2141  				}
  2142  			}
  2143  		case reflect.Uint32:
  2144  			if kx == kindConst {
  2145  				x := xtype.Uint32(vx)
  2146  				switch ykind {
  2147  				case reflect.Int:
  2148  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int(iy))) }
  2149  				case reflect.Int8:
  2150  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int8(iy))) }
  2151  				case reflect.Int16:
  2152  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int16(iy))) }
  2153  				case reflect.Int32:
  2154  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int32(iy))) }
  2155  				case reflect.Int64:
  2156  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int64(iy))) }
  2157  				case reflect.Uint:
  2158  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint(iy))) }
  2159  				case reflect.Uint8:
  2160  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint8(iy))) }
  2161  				case reflect.Uint16:
  2162  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint16(iy))) }
  2163  				case reflect.Uint32:
  2164  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint32(iy))) }
  2165  				case reflect.Uint64:
  2166  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint64(iy))) }
  2167  				case reflect.Uintptr:
  2168  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uintptr(iy))) }
  2169  				}
  2170  			} else if ky == kindConst {
  2171  				switch ykind {
  2172  				case reflect.Int:
  2173  					y := xtype.Int(vy)
  2174  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<y)) }
  2175  				case reflect.Int8:
  2176  					y := xtype.Int8(vy)
  2177  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<y)) }
  2178  				case reflect.Int16:
  2179  					y := xtype.Int16(vy)
  2180  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<y)) }
  2181  				case reflect.Int32:
  2182  					y := xtype.Int32(vy)
  2183  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<y)) }
  2184  				case reflect.Int64:
  2185  					y := xtype.Int64(vy)
  2186  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<y)) }
  2187  				case reflect.Uint:
  2188  					y := xtype.Uint(vy)
  2189  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<y)) }
  2190  				case reflect.Uint8:
  2191  					y := xtype.Uint8(vy)
  2192  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<y)) }
  2193  				case reflect.Uint16:
  2194  					y := xtype.Uint16(vy)
  2195  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<y)) }
  2196  				case reflect.Uint32:
  2197  					y := xtype.Uint32(vy)
  2198  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<y)) }
  2199  				case reflect.Uint64:
  2200  					y := xtype.Uint64(vy)
  2201  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<y)) }
  2202  				case reflect.Uintptr:
  2203  					y := xtype.Uintptr(vy)
  2204  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<y)) }
  2205  				}
  2206  			} else {
  2207  				switch ykind {
  2208  				case reflect.Int:
  2209  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<fr.int(iy))) }
  2210  				case reflect.Int8:
  2211  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<fr.int8(iy))) }
  2212  				case reflect.Int16:
  2213  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<fr.int16(iy))) }
  2214  				case reflect.Int32:
  2215  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<fr.int32(iy))) }
  2216  				case reflect.Int64:
  2217  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<fr.int64(iy))) }
  2218  				case reflect.Uint:
  2219  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<fr.uint(iy))) }
  2220  				case reflect.Uint8:
  2221  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<fr.uint8(iy))) }
  2222  				case reflect.Uint16:
  2223  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<fr.uint16(iy))) }
  2224  				case reflect.Uint32:
  2225  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<fr.uint32(iy))) }
  2226  				case reflect.Uint64:
  2227  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<fr.uint64(iy))) }
  2228  				case reflect.Uintptr:
  2229  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)<<fr.uintptr(iy))) }
  2230  				}
  2231  			}
  2232  		case reflect.Uint64:
  2233  			if kx == kindConst {
  2234  				x := xtype.Uint64(vx)
  2235  				switch ykind {
  2236  				case reflect.Int:
  2237  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int(iy))) }
  2238  				case reflect.Int8:
  2239  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int8(iy))) }
  2240  				case reflect.Int16:
  2241  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int16(iy))) }
  2242  				case reflect.Int32:
  2243  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int32(iy))) }
  2244  				case reflect.Int64:
  2245  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int64(iy))) }
  2246  				case reflect.Uint:
  2247  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint(iy))) }
  2248  				case reflect.Uint8:
  2249  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint8(iy))) }
  2250  				case reflect.Uint16:
  2251  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint16(iy))) }
  2252  				case reflect.Uint32:
  2253  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint32(iy))) }
  2254  				case reflect.Uint64:
  2255  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint64(iy))) }
  2256  				case reflect.Uintptr:
  2257  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uintptr(iy))) }
  2258  				}
  2259  			} else if ky == kindConst {
  2260  				switch ykind {
  2261  				case reflect.Int:
  2262  					y := xtype.Int(vy)
  2263  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<y)) }
  2264  				case reflect.Int8:
  2265  					y := xtype.Int8(vy)
  2266  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<y)) }
  2267  				case reflect.Int16:
  2268  					y := xtype.Int16(vy)
  2269  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<y)) }
  2270  				case reflect.Int32:
  2271  					y := xtype.Int32(vy)
  2272  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<y)) }
  2273  				case reflect.Int64:
  2274  					y := xtype.Int64(vy)
  2275  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<y)) }
  2276  				case reflect.Uint:
  2277  					y := xtype.Uint(vy)
  2278  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<y)) }
  2279  				case reflect.Uint8:
  2280  					y := xtype.Uint8(vy)
  2281  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<y)) }
  2282  				case reflect.Uint16:
  2283  					y := xtype.Uint16(vy)
  2284  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<y)) }
  2285  				case reflect.Uint32:
  2286  					y := xtype.Uint32(vy)
  2287  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<y)) }
  2288  				case reflect.Uint64:
  2289  					y := xtype.Uint64(vy)
  2290  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<y)) }
  2291  				case reflect.Uintptr:
  2292  					y := xtype.Uintptr(vy)
  2293  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<y)) }
  2294  				}
  2295  			} else {
  2296  				switch ykind {
  2297  				case reflect.Int:
  2298  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<fr.int(iy))) }
  2299  				case reflect.Int8:
  2300  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<fr.int8(iy))) }
  2301  				case reflect.Int16:
  2302  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<fr.int16(iy))) }
  2303  				case reflect.Int32:
  2304  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<fr.int32(iy))) }
  2305  				case reflect.Int64:
  2306  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<fr.int64(iy))) }
  2307  				case reflect.Uint:
  2308  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<fr.uint(iy))) }
  2309  				case reflect.Uint8:
  2310  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<fr.uint8(iy))) }
  2311  				case reflect.Uint16:
  2312  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<fr.uint16(iy))) }
  2313  				case reflect.Uint32:
  2314  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<fr.uint32(iy))) }
  2315  				case reflect.Uint64:
  2316  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<fr.uint64(iy))) }
  2317  				case reflect.Uintptr:
  2318  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)<<fr.uintptr(iy))) }
  2319  				}
  2320  			}
  2321  		case reflect.Uintptr:
  2322  			if kx == kindConst {
  2323  				x := xtype.Uintptr(vx)
  2324  				switch ykind {
  2325  				case reflect.Int:
  2326  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int(iy))) }
  2327  				case reflect.Int8:
  2328  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int8(iy))) }
  2329  				case reflect.Int16:
  2330  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int16(iy))) }
  2331  				case reflect.Int32:
  2332  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int32(iy))) }
  2333  				case reflect.Int64:
  2334  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.int64(iy))) }
  2335  				case reflect.Uint:
  2336  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint(iy))) }
  2337  				case reflect.Uint8:
  2338  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint8(iy))) }
  2339  				case reflect.Uint16:
  2340  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint16(iy))) }
  2341  				case reflect.Uint32:
  2342  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint32(iy))) }
  2343  				case reflect.Uint64:
  2344  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uint64(iy))) }
  2345  				case reflect.Uintptr:
  2346  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x<<fr.uintptr(iy))) }
  2347  				}
  2348  			} else if ky == kindConst {
  2349  				switch ykind {
  2350  				case reflect.Int:
  2351  					y := xtype.Int(vy)
  2352  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<y)) }
  2353  				case reflect.Int8:
  2354  					y := xtype.Int8(vy)
  2355  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<y)) }
  2356  				case reflect.Int16:
  2357  					y := xtype.Int16(vy)
  2358  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<y)) }
  2359  				case reflect.Int32:
  2360  					y := xtype.Int32(vy)
  2361  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<y)) }
  2362  				case reflect.Int64:
  2363  					y := xtype.Int64(vy)
  2364  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<y)) }
  2365  				case reflect.Uint:
  2366  					y := xtype.Uint(vy)
  2367  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<y)) }
  2368  				case reflect.Uint8:
  2369  					y := xtype.Uint8(vy)
  2370  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<y)) }
  2371  				case reflect.Uint16:
  2372  					y := xtype.Uint16(vy)
  2373  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<y)) }
  2374  				case reflect.Uint32:
  2375  					y := xtype.Uint32(vy)
  2376  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<y)) }
  2377  				case reflect.Uint64:
  2378  					y := xtype.Uint64(vy)
  2379  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<y)) }
  2380  				case reflect.Uintptr:
  2381  					y := xtype.Uintptr(vy)
  2382  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<y)) }
  2383  				}
  2384  			} else {
  2385  				switch ykind {
  2386  				case reflect.Int:
  2387  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<fr.int(iy))) }
  2388  				case reflect.Int8:
  2389  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<fr.int8(iy))) }
  2390  				case reflect.Int16:
  2391  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<fr.int16(iy))) }
  2392  				case reflect.Int32:
  2393  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<fr.int32(iy))) }
  2394  				case reflect.Int64:
  2395  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<fr.int64(iy))) }
  2396  				case reflect.Uint:
  2397  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<fr.uint(iy))) }
  2398  				case reflect.Uint8:
  2399  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<fr.uint8(iy))) }
  2400  				case reflect.Uint16:
  2401  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<fr.uint16(iy))) }
  2402  				case reflect.Uint32:
  2403  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<fr.uint32(iy))) }
  2404  				case reflect.Uint64:
  2405  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<fr.uint64(iy))) }
  2406  				case reflect.Uintptr:
  2407  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)<<fr.uintptr(iy))) }
  2408  				}
  2409  			}
  2410  		}
  2411  	}
  2412  	panic("unreachable")
  2413  }
  2414  
  2415  func makeBinOpSHR(pfn *function, instr *ssa.BinOp) func(fr *frame) {
  2416  	ir := pfn.regIndex(instr)
  2417  	ix, kx, vx := pfn.regIndex3(instr.X)
  2418  	iy, ky, vy := pfn.regIndex3(instr.Y)
  2419  	xtyp := pfn.Interp.preToType(instr.X.Type())
  2420  	ytyp := pfn.Interp.preToType(instr.Y.Type())
  2421  	xkind := xtyp.Kind()
  2422  	ykind := ytyp.Kind()
  2423  	if kx == kindConst && ky == kindConst {
  2424  		t := xtype.TypeOfType(xtyp)
  2425  		switch xkind {
  2426  		case reflect.Int:
  2427  			x := xtype.Int(vx)
  2428  			switch ykind {
  2429  			case reflect.Int:
  2430  				v := xtype.Make(t, x>>xtype.Int(vy))
  2431  				return func(fr *frame) { fr.setReg(ir, v) }
  2432  			case reflect.Int8:
  2433  				v := xtype.Make(t, x>>xtype.Int8(vy))
  2434  				return func(fr *frame) { fr.setReg(ir, v) }
  2435  			case reflect.Int16:
  2436  				v := xtype.Make(t, x>>xtype.Int16(vy))
  2437  				return func(fr *frame) { fr.setReg(ir, v) }
  2438  			case reflect.Int32:
  2439  				v := xtype.Make(t, x>>xtype.Int32(vy))
  2440  				return func(fr *frame) { fr.setReg(ir, v) }
  2441  			case reflect.Int64:
  2442  				v := xtype.Make(t, x>>xtype.Int64(vy))
  2443  				return func(fr *frame) { fr.setReg(ir, v) }
  2444  			case reflect.Uint:
  2445  				v := xtype.Make(t, x>>xtype.Uint(vy))
  2446  				return func(fr *frame) { fr.setReg(ir, v) }
  2447  			case reflect.Uint8:
  2448  				v := xtype.Make(t, x>>xtype.Uint8(vy))
  2449  				return func(fr *frame) { fr.setReg(ir, v) }
  2450  			case reflect.Uint16:
  2451  				v := xtype.Make(t, x>>xtype.Uint16(vy))
  2452  				return func(fr *frame) { fr.setReg(ir, v) }
  2453  			case reflect.Uint32:
  2454  				v := xtype.Make(t, x>>xtype.Uint32(vy))
  2455  				return func(fr *frame) { fr.setReg(ir, v) }
  2456  			case reflect.Uint64:
  2457  				v := xtype.Make(t, x>>xtype.Uint64(vy))
  2458  				return func(fr *frame) { fr.setReg(ir, v) }
  2459  			case reflect.Uintptr:
  2460  				v := xtype.Make(t, x>>xtype.Uintptr(vy))
  2461  				return func(fr *frame) { fr.setReg(ir, v) }
  2462  			}
  2463  		case reflect.Int8:
  2464  			x := xtype.Int8(vx)
  2465  			switch ykind {
  2466  			case reflect.Int:
  2467  				v := xtype.Make(t, x>>xtype.Int(vy))
  2468  				return func(fr *frame) { fr.setReg(ir, v) }
  2469  			case reflect.Int8:
  2470  				v := xtype.Make(t, x>>xtype.Int8(vy))
  2471  				return func(fr *frame) { fr.setReg(ir, v) }
  2472  			case reflect.Int16:
  2473  				v := xtype.Make(t, x>>xtype.Int16(vy))
  2474  				return func(fr *frame) { fr.setReg(ir, v) }
  2475  			case reflect.Int32:
  2476  				v := xtype.Make(t, x>>xtype.Int32(vy))
  2477  				return func(fr *frame) { fr.setReg(ir, v) }
  2478  			case reflect.Int64:
  2479  				v := xtype.Make(t, x>>xtype.Int64(vy))
  2480  				return func(fr *frame) { fr.setReg(ir, v) }
  2481  			case reflect.Uint:
  2482  				v := xtype.Make(t, x>>xtype.Uint(vy))
  2483  				return func(fr *frame) { fr.setReg(ir, v) }
  2484  			case reflect.Uint8:
  2485  				v := xtype.Make(t, x>>xtype.Uint8(vy))
  2486  				return func(fr *frame) { fr.setReg(ir, v) }
  2487  			case reflect.Uint16:
  2488  				v := xtype.Make(t, x>>xtype.Uint16(vy))
  2489  				return func(fr *frame) { fr.setReg(ir, v) }
  2490  			case reflect.Uint32:
  2491  				v := xtype.Make(t, x>>xtype.Uint32(vy))
  2492  				return func(fr *frame) { fr.setReg(ir, v) }
  2493  			case reflect.Uint64:
  2494  				v := xtype.Make(t, x>>xtype.Uint64(vy))
  2495  				return func(fr *frame) { fr.setReg(ir, v) }
  2496  			case reflect.Uintptr:
  2497  				v := xtype.Make(t, x>>xtype.Uintptr(vy))
  2498  				return func(fr *frame) { fr.setReg(ir, v) }
  2499  			}
  2500  		case reflect.Int16:
  2501  			x := xtype.Int16(vx)
  2502  			switch ykind {
  2503  			case reflect.Int:
  2504  				v := xtype.Make(t, x>>xtype.Int(vy))
  2505  				return func(fr *frame) { fr.setReg(ir, v) }
  2506  			case reflect.Int8:
  2507  				v := xtype.Make(t, x>>xtype.Int8(vy))
  2508  				return func(fr *frame) { fr.setReg(ir, v) }
  2509  			case reflect.Int16:
  2510  				v := xtype.Make(t, x>>xtype.Int16(vy))
  2511  				return func(fr *frame) { fr.setReg(ir, v) }
  2512  			case reflect.Int32:
  2513  				v := xtype.Make(t, x>>xtype.Int32(vy))
  2514  				return func(fr *frame) { fr.setReg(ir, v) }
  2515  			case reflect.Int64:
  2516  				v := xtype.Make(t, x>>xtype.Int64(vy))
  2517  				return func(fr *frame) { fr.setReg(ir, v) }
  2518  			case reflect.Uint:
  2519  				v := xtype.Make(t, x>>xtype.Uint(vy))
  2520  				return func(fr *frame) { fr.setReg(ir, v) }
  2521  			case reflect.Uint8:
  2522  				v := xtype.Make(t, x>>xtype.Uint8(vy))
  2523  				return func(fr *frame) { fr.setReg(ir, v) }
  2524  			case reflect.Uint16:
  2525  				v := xtype.Make(t, x>>xtype.Uint16(vy))
  2526  				return func(fr *frame) { fr.setReg(ir, v) }
  2527  			case reflect.Uint32:
  2528  				v := xtype.Make(t, x>>xtype.Uint32(vy))
  2529  				return func(fr *frame) { fr.setReg(ir, v) }
  2530  			case reflect.Uint64:
  2531  				v := xtype.Make(t, x>>xtype.Uint64(vy))
  2532  				return func(fr *frame) { fr.setReg(ir, v) }
  2533  			case reflect.Uintptr:
  2534  				v := xtype.Make(t, x>>xtype.Uintptr(vy))
  2535  				return func(fr *frame) { fr.setReg(ir, v) }
  2536  			}
  2537  		case reflect.Int32:
  2538  			x := xtype.Int32(vx)
  2539  			switch ykind {
  2540  			case reflect.Int:
  2541  				v := xtype.Make(t, x>>xtype.Int(vy))
  2542  				return func(fr *frame) { fr.setReg(ir, v) }
  2543  			case reflect.Int8:
  2544  				v := xtype.Make(t, x>>xtype.Int8(vy))
  2545  				return func(fr *frame) { fr.setReg(ir, v) }
  2546  			case reflect.Int16:
  2547  				v := xtype.Make(t, x>>xtype.Int16(vy))
  2548  				return func(fr *frame) { fr.setReg(ir, v) }
  2549  			case reflect.Int32:
  2550  				v := xtype.Make(t, x>>xtype.Int32(vy))
  2551  				return func(fr *frame) { fr.setReg(ir, v) }
  2552  			case reflect.Int64:
  2553  				v := xtype.Make(t, x>>xtype.Int64(vy))
  2554  				return func(fr *frame) { fr.setReg(ir, v) }
  2555  			case reflect.Uint:
  2556  				v := xtype.Make(t, x>>xtype.Uint(vy))
  2557  				return func(fr *frame) { fr.setReg(ir, v) }
  2558  			case reflect.Uint8:
  2559  				v := xtype.Make(t, x>>xtype.Uint8(vy))
  2560  				return func(fr *frame) { fr.setReg(ir, v) }
  2561  			case reflect.Uint16:
  2562  				v := xtype.Make(t, x>>xtype.Uint16(vy))
  2563  				return func(fr *frame) { fr.setReg(ir, v) }
  2564  			case reflect.Uint32:
  2565  				v := xtype.Make(t, x>>xtype.Uint32(vy))
  2566  				return func(fr *frame) { fr.setReg(ir, v) }
  2567  			case reflect.Uint64:
  2568  				v := xtype.Make(t, x>>xtype.Uint64(vy))
  2569  				return func(fr *frame) { fr.setReg(ir, v) }
  2570  			case reflect.Uintptr:
  2571  				v := xtype.Make(t, x>>xtype.Uintptr(vy))
  2572  				return func(fr *frame) { fr.setReg(ir, v) }
  2573  			}
  2574  		case reflect.Int64:
  2575  			x := xtype.Int64(vx)
  2576  			switch ykind {
  2577  			case reflect.Int:
  2578  				v := xtype.Make(t, x>>xtype.Int(vy))
  2579  				return func(fr *frame) { fr.setReg(ir, v) }
  2580  			case reflect.Int8:
  2581  				v := xtype.Make(t, x>>xtype.Int8(vy))
  2582  				return func(fr *frame) { fr.setReg(ir, v) }
  2583  			case reflect.Int16:
  2584  				v := xtype.Make(t, x>>xtype.Int16(vy))
  2585  				return func(fr *frame) { fr.setReg(ir, v) }
  2586  			case reflect.Int32:
  2587  				v := xtype.Make(t, x>>xtype.Int32(vy))
  2588  				return func(fr *frame) { fr.setReg(ir, v) }
  2589  			case reflect.Int64:
  2590  				v := xtype.Make(t, x>>xtype.Int64(vy))
  2591  				return func(fr *frame) { fr.setReg(ir, v) }
  2592  			case reflect.Uint:
  2593  				v := xtype.Make(t, x>>xtype.Uint(vy))
  2594  				return func(fr *frame) { fr.setReg(ir, v) }
  2595  			case reflect.Uint8:
  2596  				v := xtype.Make(t, x>>xtype.Uint8(vy))
  2597  				return func(fr *frame) { fr.setReg(ir, v) }
  2598  			case reflect.Uint16:
  2599  				v := xtype.Make(t, x>>xtype.Uint16(vy))
  2600  				return func(fr *frame) { fr.setReg(ir, v) }
  2601  			case reflect.Uint32:
  2602  				v := xtype.Make(t, x>>xtype.Uint32(vy))
  2603  				return func(fr *frame) { fr.setReg(ir, v) }
  2604  			case reflect.Uint64:
  2605  				v := xtype.Make(t, x>>xtype.Uint64(vy))
  2606  				return func(fr *frame) { fr.setReg(ir, v) }
  2607  			case reflect.Uintptr:
  2608  				v := xtype.Make(t, x>>xtype.Uintptr(vy))
  2609  				return func(fr *frame) { fr.setReg(ir, v) }
  2610  			}
  2611  		case reflect.Uint:
  2612  			x := xtype.Uint(vx)
  2613  			switch ykind {
  2614  			case reflect.Int:
  2615  				v := xtype.Make(t, x>>xtype.Int(vy))
  2616  				return func(fr *frame) { fr.setReg(ir, v) }
  2617  			case reflect.Int8:
  2618  				v := xtype.Make(t, x>>xtype.Int8(vy))
  2619  				return func(fr *frame) { fr.setReg(ir, v) }
  2620  			case reflect.Int16:
  2621  				v := xtype.Make(t, x>>xtype.Int16(vy))
  2622  				return func(fr *frame) { fr.setReg(ir, v) }
  2623  			case reflect.Int32:
  2624  				v := xtype.Make(t, x>>xtype.Int32(vy))
  2625  				return func(fr *frame) { fr.setReg(ir, v) }
  2626  			case reflect.Int64:
  2627  				v := xtype.Make(t, x>>xtype.Int64(vy))
  2628  				return func(fr *frame) { fr.setReg(ir, v) }
  2629  			case reflect.Uint:
  2630  				v := xtype.Make(t, x>>xtype.Uint(vy))
  2631  				return func(fr *frame) { fr.setReg(ir, v) }
  2632  			case reflect.Uint8:
  2633  				v := xtype.Make(t, x>>xtype.Uint8(vy))
  2634  				return func(fr *frame) { fr.setReg(ir, v) }
  2635  			case reflect.Uint16:
  2636  				v := xtype.Make(t, x>>xtype.Uint16(vy))
  2637  				return func(fr *frame) { fr.setReg(ir, v) }
  2638  			case reflect.Uint32:
  2639  				v := xtype.Make(t, x>>xtype.Uint32(vy))
  2640  				return func(fr *frame) { fr.setReg(ir, v) }
  2641  			case reflect.Uint64:
  2642  				v := xtype.Make(t, x>>xtype.Uint64(vy))
  2643  				return func(fr *frame) { fr.setReg(ir, v) }
  2644  			case reflect.Uintptr:
  2645  				v := xtype.Make(t, x>>xtype.Uintptr(vy))
  2646  				return func(fr *frame) { fr.setReg(ir, v) }
  2647  			}
  2648  		case reflect.Uint8:
  2649  			x := xtype.Uint8(vx)
  2650  			switch ykind {
  2651  			case reflect.Int:
  2652  				v := xtype.Make(t, x>>xtype.Int(vy))
  2653  				return func(fr *frame) { fr.setReg(ir, v) }
  2654  			case reflect.Int8:
  2655  				v := xtype.Make(t, x>>xtype.Int8(vy))
  2656  				return func(fr *frame) { fr.setReg(ir, v) }
  2657  			case reflect.Int16:
  2658  				v := xtype.Make(t, x>>xtype.Int16(vy))
  2659  				return func(fr *frame) { fr.setReg(ir, v) }
  2660  			case reflect.Int32:
  2661  				v := xtype.Make(t, x>>xtype.Int32(vy))
  2662  				return func(fr *frame) { fr.setReg(ir, v) }
  2663  			case reflect.Int64:
  2664  				v := xtype.Make(t, x>>xtype.Int64(vy))
  2665  				return func(fr *frame) { fr.setReg(ir, v) }
  2666  			case reflect.Uint:
  2667  				v := xtype.Make(t, x>>xtype.Uint(vy))
  2668  				return func(fr *frame) { fr.setReg(ir, v) }
  2669  			case reflect.Uint8:
  2670  				v := xtype.Make(t, x>>xtype.Uint8(vy))
  2671  				return func(fr *frame) { fr.setReg(ir, v) }
  2672  			case reflect.Uint16:
  2673  				v := xtype.Make(t, x>>xtype.Uint16(vy))
  2674  				return func(fr *frame) { fr.setReg(ir, v) }
  2675  			case reflect.Uint32:
  2676  				v := xtype.Make(t, x>>xtype.Uint32(vy))
  2677  				return func(fr *frame) { fr.setReg(ir, v) }
  2678  			case reflect.Uint64:
  2679  				v := xtype.Make(t, x>>xtype.Uint64(vy))
  2680  				return func(fr *frame) { fr.setReg(ir, v) }
  2681  			case reflect.Uintptr:
  2682  				v := xtype.Make(t, x>>xtype.Uintptr(vy))
  2683  				return func(fr *frame) { fr.setReg(ir, v) }
  2684  			}
  2685  		case reflect.Uint16:
  2686  			x := xtype.Uint16(vx)
  2687  			switch ykind {
  2688  			case reflect.Int:
  2689  				v := xtype.Make(t, x>>xtype.Int(vy))
  2690  				return func(fr *frame) { fr.setReg(ir, v) }
  2691  			case reflect.Int8:
  2692  				v := xtype.Make(t, x>>xtype.Int8(vy))
  2693  				return func(fr *frame) { fr.setReg(ir, v) }
  2694  			case reflect.Int16:
  2695  				v := xtype.Make(t, x>>xtype.Int16(vy))
  2696  				return func(fr *frame) { fr.setReg(ir, v) }
  2697  			case reflect.Int32:
  2698  				v := xtype.Make(t, x>>xtype.Int32(vy))
  2699  				return func(fr *frame) { fr.setReg(ir, v) }
  2700  			case reflect.Int64:
  2701  				v := xtype.Make(t, x>>xtype.Int64(vy))
  2702  				return func(fr *frame) { fr.setReg(ir, v) }
  2703  			case reflect.Uint:
  2704  				v := xtype.Make(t, x>>xtype.Uint(vy))
  2705  				return func(fr *frame) { fr.setReg(ir, v) }
  2706  			case reflect.Uint8:
  2707  				v := xtype.Make(t, x>>xtype.Uint8(vy))
  2708  				return func(fr *frame) { fr.setReg(ir, v) }
  2709  			case reflect.Uint16:
  2710  				v := xtype.Make(t, x>>xtype.Uint16(vy))
  2711  				return func(fr *frame) { fr.setReg(ir, v) }
  2712  			case reflect.Uint32:
  2713  				v := xtype.Make(t, x>>xtype.Uint32(vy))
  2714  				return func(fr *frame) { fr.setReg(ir, v) }
  2715  			case reflect.Uint64:
  2716  				v := xtype.Make(t, x>>xtype.Uint64(vy))
  2717  				return func(fr *frame) { fr.setReg(ir, v) }
  2718  			case reflect.Uintptr:
  2719  				v := xtype.Make(t, x>>xtype.Uintptr(vy))
  2720  				return func(fr *frame) { fr.setReg(ir, v) }
  2721  			}
  2722  		case reflect.Uint32:
  2723  			x := xtype.Uint32(vx)
  2724  			switch ykind {
  2725  			case reflect.Int:
  2726  				v := xtype.Make(t, x>>xtype.Int(vy))
  2727  				return func(fr *frame) { fr.setReg(ir, v) }
  2728  			case reflect.Int8:
  2729  				v := xtype.Make(t, x>>xtype.Int8(vy))
  2730  				return func(fr *frame) { fr.setReg(ir, v) }
  2731  			case reflect.Int16:
  2732  				v := xtype.Make(t, x>>xtype.Int16(vy))
  2733  				return func(fr *frame) { fr.setReg(ir, v) }
  2734  			case reflect.Int32:
  2735  				v := xtype.Make(t, x>>xtype.Int32(vy))
  2736  				return func(fr *frame) { fr.setReg(ir, v) }
  2737  			case reflect.Int64:
  2738  				v := xtype.Make(t, x>>xtype.Int64(vy))
  2739  				return func(fr *frame) { fr.setReg(ir, v) }
  2740  			case reflect.Uint:
  2741  				v := xtype.Make(t, x>>xtype.Uint(vy))
  2742  				return func(fr *frame) { fr.setReg(ir, v) }
  2743  			case reflect.Uint8:
  2744  				v := xtype.Make(t, x>>xtype.Uint8(vy))
  2745  				return func(fr *frame) { fr.setReg(ir, v) }
  2746  			case reflect.Uint16:
  2747  				v := xtype.Make(t, x>>xtype.Uint16(vy))
  2748  				return func(fr *frame) { fr.setReg(ir, v) }
  2749  			case reflect.Uint32:
  2750  				v := xtype.Make(t, x>>xtype.Uint32(vy))
  2751  				return func(fr *frame) { fr.setReg(ir, v) }
  2752  			case reflect.Uint64:
  2753  				v := xtype.Make(t, x>>xtype.Uint64(vy))
  2754  				return func(fr *frame) { fr.setReg(ir, v) }
  2755  			case reflect.Uintptr:
  2756  				v := xtype.Make(t, x>>xtype.Uintptr(vy))
  2757  				return func(fr *frame) { fr.setReg(ir, v) }
  2758  			}
  2759  		case reflect.Uint64:
  2760  			x := xtype.Uint64(vx)
  2761  			switch ykind {
  2762  			case reflect.Int:
  2763  				v := xtype.Make(t, x>>xtype.Int(vy))
  2764  				return func(fr *frame) { fr.setReg(ir, v) }
  2765  			case reflect.Int8:
  2766  				v := xtype.Make(t, x>>xtype.Int8(vy))
  2767  				return func(fr *frame) { fr.setReg(ir, v) }
  2768  			case reflect.Int16:
  2769  				v := xtype.Make(t, x>>xtype.Int16(vy))
  2770  				return func(fr *frame) { fr.setReg(ir, v) }
  2771  			case reflect.Int32:
  2772  				v := xtype.Make(t, x>>xtype.Int32(vy))
  2773  				return func(fr *frame) { fr.setReg(ir, v) }
  2774  			case reflect.Int64:
  2775  				v := xtype.Make(t, x>>xtype.Int64(vy))
  2776  				return func(fr *frame) { fr.setReg(ir, v) }
  2777  			case reflect.Uint:
  2778  				v := xtype.Make(t, x>>xtype.Uint(vy))
  2779  				return func(fr *frame) { fr.setReg(ir, v) }
  2780  			case reflect.Uint8:
  2781  				v := xtype.Make(t, x>>xtype.Uint8(vy))
  2782  				return func(fr *frame) { fr.setReg(ir, v) }
  2783  			case reflect.Uint16:
  2784  				v := xtype.Make(t, x>>xtype.Uint16(vy))
  2785  				return func(fr *frame) { fr.setReg(ir, v) }
  2786  			case reflect.Uint32:
  2787  				v := xtype.Make(t, x>>xtype.Uint32(vy))
  2788  				return func(fr *frame) { fr.setReg(ir, v) }
  2789  			case reflect.Uint64:
  2790  				v := xtype.Make(t, x>>xtype.Uint64(vy))
  2791  				return func(fr *frame) { fr.setReg(ir, v) }
  2792  			case reflect.Uintptr:
  2793  				v := xtype.Make(t, x>>xtype.Uintptr(vy))
  2794  				return func(fr *frame) { fr.setReg(ir, v) }
  2795  			}
  2796  		case reflect.Uintptr:
  2797  			x := xtype.Uintptr(vx)
  2798  			switch ykind {
  2799  			case reflect.Int:
  2800  				v := xtype.Make(t, x>>xtype.Int(vy))
  2801  				return func(fr *frame) { fr.setReg(ir, v) }
  2802  			case reflect.Int8:
  2803  				v := xtype.Make(t, x>>xtype.Int8(vy))
  2804  				return func(fr *frame) { fr.setReg(ir, v) }
  2805  			case reflect.Int16:
  2806  				v := xtype.Make(t, x>>xtype.Int16(vy))
  2807  				return func(fr *frame) { fr.setReg(ir, v) }
  2808  			case reflect.Int32:
  2809  				v := xtype.Make(t, x>>xtype.Int32(vy))
  2810  				return func(fr *frame) { fr.setReg(ir, v) }
  2811  			case reflect.Int64:
  2812  				v := xtype.Make(t, x>>xtype.Int64(vy))
  2813  				return func(fr *frame) { fr.setReg(ir, v) }
  2814  			case reflect.Uint:
  2815  				v := xtype.Make(t, x>>xtype.Uint(vy))
  2816  				return func(fr *frame) { fr.setReg(ir, v) }
  2817  			case reflect.Uint8:
  2818  				v := xtype.Make(t, x>>xtype.Uint8(vy))
  2819  				return func(fr *frame) { fr.setReg(ir, v) }
  2820  			case reflect.Uint16:
  2821  				v := xtype.Make(t, x>>xtype.Uint16(vy))
  2822  				return func(fr *frame) { fr.setReg(ir, v) }
  2823  			case reflect.Uint32:
  2824  				v := xtype.Make(t, x>>xtype.Uint32(vy))
  2825  				return func(fr *frame) { fr.setReg(ir, v) }
  2826  			case reflect.Uint64:
  2827  				v := xtype.Make(t, x>>xtype.Uint64(vy))
  2828  				return func(fr *frame) { fr.setReg(ir, v) }
  2829  			case reflect.Uintptr:
  2830  				v := xtype.Make(t, x>>xtype.Uintptr(vy))
  2831  				return func(fr *frame) { fr.setReg(ir, v) }
  2832  			}
  2833  		}
  2834  	}
  2835  	if xtyp.PkgPath() == "" {
  2836  		switch xkind {
  2837  		case reflect.Int:
  2838  			if kx == kindConst {
  2839  				x := vx.(int)
  2840  				switch ykind {
  2841  				case reflect.Int:
  2842  					return func(fr *frame) { fr.setReg(ir, x>>fr.int(iy)) }
  2843  				case reflect.Int8:
  2844  					return func(fr *frame) { fr.setReg(ir, x>>fr.int8(iy)) }
  2845  				case reflect.Int16:
  2846  					return func(fr *frame) { fr.setReg(ir, x>>fr.int16(iy)) }
  2847  				case reflect.Int32:
  2848  					return func(fr *frame) { fr.setReg(ir, x>>fr.int32(iy)) }
  2849  				case reflect.Int64:
  2850  					return func(fr *frame) { fr.setReg(ir, x>>fr.int64(iy)) }
  2851  				case reflect.Uint:
  2852  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint(iy)) }
  2853  				case reflect.Uint8:
  2854  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint8(iy)) }
  2855  				case reflect.Uint16:
  2856  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint16(iy)) }
  2857  				case reflect.Uint32:
  2858  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint32(iy)) }
  2859  				case reflect.Uint64:
  2860  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint64(iy)) }
  2861  				case reflect.Uintptr:
  2862  					return func(fr *frame) { fr.setReg(ir, x>>fr.uintptr(iy)) }
  2863  				}
  2864  			} else if ky == kindConst {
  2865  				switch ykind {
  2866  				case reflect.Int:
  2867  					y := xtype.Int(vy)
  2868  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>y) }
  2869  				case reflect.Int8:
  2870  					y := xtype.Int8(vy)
  2871  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>y) }
  2872  				case reflect.Int16:
  2873  					y := xtype.Int16(vy)
  2874  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>y) }
  2875  				case reflect.Int32:
  2876  					y := xtype.Int32(vy)
  2877  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>y) }
  2878  				case reflect.Int64:
  2879  					y := xtype.Int64(vy)
  2880  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>y) }
  2881  				case reflect.Uint:
  2882  					y := xtype.Uint(vy)
  2883  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>y) }
  2884  				case reflect.Uint8:
  2885  					y := xtype.Uint8(vy)
  2886  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>y) }
  2887  				case reflect.Uint16:
  2888  					y := xtype.Uint16(vy)
  2889  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>y) }
  2890  				case reflect.Uint32:
  2891  					y := xtype.Uint32(vy)
  2892  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>y) }
  2893  				case reflect.Uint64:
  2894  					y := xtype.Uint64(vy)
  2895  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>y) }
  2896  				case reflect.Uintptr:
  2897  					y := xtype.Uintptr(vy)
  2898  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>y) }
  2899  				}
  2900  			} else {
  2901  				switch ykind {
  2902  				case reflect.Int:
  2903  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>fr.int(iy)) }
  2904  				case reflect.Int8:
  2905  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>fr.int8(iy)) }
  2906  				case reflect.Int16:
  2907  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>fr.int16(iy)) }
  2908  				case reflect.Int32:
  2909  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>fr.int32(iy)) }
  2910  				case reflect.Int64:
  2911  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>fr.int64(iy)) }
  2912  				case reflect.Uint:
  2913  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>fr.uint(iy)) }
  2914  				case reflect.Uint8:
  2915  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>fr.uint8(iy)) }
  2916  				case reflect.Uint16:
  2917  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>fr.uint16(iy)) }
  2918  				case reflect.Uint32:
  2919  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>fr.uint32(iy)) }
  2920  				case reflect.Uint64:
  2921  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>fr.uint64(iy)) }
  2922  				case reflect.Uintptr:
  2923  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int)>>fr.uintptr(iy)) }
  2924  				}
  2925  			}
  2926  		case reflect.Int8:
  2927  			if kx == kindConst {
  2928  				x := vx.(int8)
  2929  				switch ykind {
  2930  				case reflect.Int:
  2931  					return func(fr *frame) { fr.setReg(ir, x>>fr.int(iy)) }
  2932  				case reflect.Int8:
  2933  					return func(fr *frame) { fr.setReg(ir, x>>fr.int8(iy)) }
  2934  				case reflect.Int16:
  2935  					return func(fr *frame) { fr.setReg(ir, x>>fr.int16(iy)) }
  2936  				case reflect.Int32:
  2937  					return func(fr *frame) { fr.setReg(ir, x>>fr.int32(iy)) }
  2938  				case reflect.Int64:
  2939  					return func(fr *frame) { fr.setReg(ir, x>>fr.int64(iy)) }
  2940  				case reflect.Uint:
  2941  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint(iy)) }
  2942  				case reflect.Uint8:
  2943  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint8(iy)) }
  2944  				case reflect.Uint16:
  2945  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint16(iy)) }
  2946  				case reflect.Uint32:
  2947  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint32(iy)) }
  2948  				case reflect.Uint64:
  2949  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint64(iy)) }
  2950  				case reflect.Uintptr:
  2951  					return func(fr *frame) { fr.setReg(ir, x>>fr.uintptr(iy)) }
  2952  				}
  2953  			} else if ky == kindConst {
  2954  				switch ykind {
  2955  				case reflect.Int:
  2956  					y := xtype.Int(vy)
  2957  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>y) }
  2958  				case reflect.Int8:
  2959  					y := xtype.Int8(vy)
  2960  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>y) }
  2961  				case reflect.Int16:
  2962  					y := xtype.Int16(vy)
  2963  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>y) }
  2964  				case reflect.Int32:
  2965  					y := xtype.Int32(vy)
  2966  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>y) }
  2967  				case reflect.Int64:
  2968  					y := xtype.Int64(vy)
  2969  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>y) }
  2970  				case reflect.Uint:
  2971  					y := xtype.Uint(vy)
  2972  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>y) }
  2973  				case reflect.Uint8:
  2974  					y := xtype.Uint8(vy)
  2975  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>y) }
  2976  				case reflect.Uint16:
  2977  					y := xtype.Uint16(vy)
  2978  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>y) }
  2979  				case reflect.Uint32:
  2980  					y := xtype.Uint32(vy)
  2981  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>y) }
  2982  				case reflect.Uint64:
  2983  					y := xtype.Uint64(vy)
  2984  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>y) }
  2985  				case reflect.Uintptr:
  2986  					y := xtype.Uintptr(vy)
  2987  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>y) }
  2988  				}
  2989  			} else {
  2990  				switch ykind {
  2991  				case reflect.Int:
  2992  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>fr.int(iy)) }
  2993  				case reflect.Int8:
  2994  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>fr.int8(iy)) }
  2995  				case reflect.Int16:
  2996  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>fr.int16(iy)) }
  2997  				case reflect.Int32:
  2998  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>fr.int32(iy)) }
  2999  				case reflect.Int64:
  3000  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>fr.int64(iy)) }
  3001  				case reflect.Uint:
  3002  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>fr.uint(iy)) }
  3003  				case reflect.Uint8:
  3004  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>fr.uint8(iy)) }
  3005  				case reflect.Uint16:
  3006  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>fr.uint16(iy)) }
  3007  				case reflect.Uint32:
  3008  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>fr.uint32(iy)) }
  3009  				case reflect.Uint64:
  3010  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>fr.uint64(iy)) }
  3011  				case reflect.Uintptr:
  3012  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int8)>>fr.uintptr(iy)) }
  3013  				}
  3014  			}
  3015  		case reflect.Int16:
  3016  			if kx == kindConst {
  3017  				x := vx.(int16)
  3018  				switch ykind {
  3019  				case reflect.Int:
  3020  					return func(fr *frame) { fr.setReg(ir, x>>fr.int(iy)) }
  3021  				case reflect.Int8:
  3022  					return func(fr *frame) { fr.setReg(ir, x>>fr.int8(iy)) }
  3023  				case reflect.Int16:
  3024  					return func(fr *frame) { fr.setReg(ir, x>>fr.int16(iy)) }
  3025  				case reflect.Int32:
  3026  					return func(fr *frame) { fr.setReg(ir, x>>fr.int32(iy)) }
  3027  				case reflect.Int64:
  3028  					return func(fr *frame) { fr.setReg(ir, x>>fr.int64(iy)) }
  3029  				case reflect.Uint:
  3030  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint(iy)) }
  3031  				case reflect.Uint8:
  3032  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint8(iy)) }
  3033  				case reflect.Uint16:
  3034  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint16(iy)) }
  3035  				case reflect.Uint32:
  3036  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint32(iy)) }
  3037  				case reflect.Uint64:
  3038  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint64(iy)) }
  3039  				case reflect.Uintptr:
  3040  					return func(fr *frame) { fr.setReg(ir, x>>fr.uintptr(iy)) }
  3041  				}
  3042  			} else if ky == kindConst {
  3043  				switch ykind {
  3044  				case reflect.Int:
  3045  					y := xtype.Int(vy)
  3046  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>y) }
  3047  				case reflect.Int8:
  3048  					y := xtype.Int8(vy)
  3049  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>y) }
  3050  				case reflect.Int16:
  3051  					y := xtype.Int16(vy)
  3052  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>y) }
  3053  				case reflect.Int32:
  3054  					y := xtype.Int32(vy)
  3055  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>y) }
  3056  				case reflect.Int64:
  3057  					y := xtype.Int64(vy)
  3058  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>y) }
  3059  				case reflect.Uint:
  3060  					y := xtype.Uint(vy)
  3061  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>y) }
  3062  				case reflect.Uint8:
  3063  					y := xtype.Uint8(vy)
  3064  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>y) }
  3065  				case reflect.Uint16:
  3066  					y := xtype.Uint16(vy)
  3067  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>y) }
  3068  				case reflect.Uint32:
  3069  					y := xtype.Uint32(vy)
  3070  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>y) }
  3071  				case reflect.Uint64:
  3072  					y := xtype.Uint64(vy)
  3073  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>y) }
  3074  				case reflect.Uintptr:
  3075  					y := xtype.Uintptr(vy)
  3076  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>y) }
  3077  				}
  3078  			} else {
  3079  				switch ykind {
  3080  				case reflect.Int:
  3081  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>fr.int(iy)) }
  3082  				case reflect.Int8:
  3083  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>fr.int8(iy)) }
  3084  				case reflect.Int16:
  3085  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>fr.int16(iy)) }
  3086  				case reflect.Int32:
  3087  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>fr.int32(iy)) }
  3088  				case reflect.Int64:
  3089  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>fr.int64(iy)) }
  3090  				case reflect.Uint:
  3091  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>fr.uint(iy)) }
  3092  				case reflect.Uint8:
  3093  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>fr.uint8(iy)) }
  3094  				case reflect.Uint16:
  3095  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>fr.uint16(iy)) }
  3096  				case reflect.Uint32:
  3097  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>fr.uint32(iy)) }
  3098  				case reflect.Uint64:
  3099  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>fr.uint64(iy)) }
  3100  				case reflect.Uintptr:
  3101  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int16)>>fr.uintptr(iy)) }
  3102  				}
  3103  			}
  3104  		case reflect.Int32:
  3105  			if kx == kindConst {
  3106  				x := vx.(int32)
  3107  				switch ykind {
  3108  				case reflect.Int:
  3109  					return func(fr *frame) { fr.setReg(ir, x>>fr.int(iy)) }
  3110  				case reflect.Int8:
  3111  					return func(fr *frame) { fr.setReg(ir, x>>fr.int8(iy)) }
  3112  				case reflect.Int16:
  3113  					return func(fr *frame) { fr.setReg(ir, x>>fr.int16(iy)) }
  3114  				case reflect.Int32:
  3115  					return func(fr *frame) { fr.setReg(ir, x>>fr.int32(iy)) }
  3116  				case reflect.Int64:
  3117  					return func(fr *frame) { fr.setReg(ir, x>>fr.int64(iy)) }
  3118  				case reflect.Uint:
  3119  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint(iy)) }
  3120  				case reflect.Uint8:
  3121  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint8(iy)) }
  3122  				case reflect.Uint16:
  3123  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint16(iy)) }
  3124  				case reflect.Uint32:
  3125  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint32(iy)) }
  3126  				case reflect.Uint64:
  3127  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint64(iy)) }
  3128  				case reflect.Uintptr:
  3129  					return func(fr *frame) { fr.setReg(ir, x>>fr.uintptr(iy)) }
  3130  				}
  3131  			} else if ky == kindConst {
  3132  				switch ykind {
  3133  				case reflect.Int:
  3134  					y := xtype.Int(vy)
  3135  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>y) }
  3136  				case reflect.Int8:
  3137  					y := xtype.Int8(vy)
  3138  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>y) }
  3139  				case reflect.Int16:
  3140  					y := xtype.Int16(vy)
  3141  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>y) }
  3142  				case reflect.Int32:
  3143  					y := xtype.Int32(vy)
  3144  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>y) }
  3145  				case reflect.Int64:
  3146  					y := xtype.Int64(vy)
  3147  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>y) }
  3148  				case reflect.Uint:
  3149  					y := xtype.Uint(vy)
  3150  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>y) }
  3151  				case reflect.Uint8:
  3152  					y := xtype.Uint8(vy)
  3153  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>y) }
  3154  				case reflect.Uint16:
  3155  					y := xtype.Uint16(vy)
  3156  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>y) }
  3157  				case reflect.Uint32:
  3158  					y := xtype.Uint32(vy)
  3159  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>y) }
  3160  				case reflect.Uint64:
  3161  					y := xtype.Uint64(vy)
  3162  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>y) }
  3163  				case reflect.Uintptr:
  3164  					y := xtype.Uintptr(vy)
  3165  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>y) }
  3166  				}
  3167  			} else {
  3168  				switch ykind {
  3169  				case reflect.Int:
  3170  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>fr.int(iy)) }
  3171  				case reflect.Int8:
  3172  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>fr.int8(iy)) }
  3173  				case reflect.Int16:
  3174  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>fr.int16(iy)) }
  3175  				case reflect.Int32:
  3176  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>fr.int32(iy)) }
  3177  				case reflect.Int64:
  3178  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>fr.int64(iy)) }
  3179  				case reflect.Uint:
  3180  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>fr.uint(iy)) }
  3181  				case reflect.Uint8:
  3182  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>fr.uint8(iy)) }
  3183  				case reflect.Uint16:
  3184  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>fr.uint16(iy)) }
  3185  				case reflect.Uint32:
  3186  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>fr.uint32(iy)) }
  3187  				case reflect.Uint64:
  3188  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>fr.uint64(iy)) }
  3189  				case reflect.Uintptr:
  3190  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int32)>>fr.uintptr(iy)) }
  3191  				}
  3192  			}
  3193  		case reflect.Int64:
  3194  			if kx == kindConst {
  3195  				x := vx.(int64)
  3196  				switch ykind {
  3197  				case reflect.Int:
  3198  					return func(fr *frame) { fr.setReg(ir, x>>fr.int(iy)) }
  3199  				case reflect.Int8:
  3200  					return func(fr *frame) { fr.setReg(ir, x>>fr.int8(iy)) }
  3201  				case reflect.Int16:
  3202  					return func(fr *frame) { fr.setReg(ir, x>>fr.int16(iy)) }
  3203  				case reflect.Int32:
  3204  					return func(fr *frame) { fr.setReg(ir, x>>fr.int32(iy)) }
  3205  				case reflect.Int64:
  3206  					return func(fr *frame) { fr.setReg(ir, x>>fr.int64(iy)) }
  3207  				case reflect.Uint:
  3208  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint(iy)) }
  3209  				case reflect.Uint8:
  3210  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint8(iy)) }
  3211  				case reflect.Uint16:
  3212  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint16(iy)) }
  3213  				case reflect.Uint32:
  3214  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint32(iy)) }
  3215  				case reflect.Uint64:
  3216  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint64(iy)) }
  3217  				case reflect.Uintptr:
  3218  					return func(fr *frame) { fr.setReg(ir, x>>fr.uintptr(iy)) }
  3219  				}
  3220  			} else if ky == kindConst {
  3221  				switch ykind {
  3222  				case reflect.Int:
  3223  					y := xtype.Int(vy)
  3224  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>y) }
  3225  				case reflect.Int8:
  3226  					y := xtype.Int8(vy)
  3227  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>y) }
  3228  				case reflect.Int16:
  3229  					y := xtype.Int16(vy)
  3230  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>y) }
  3231  				case reflect.Int32:
  3232  					y := xtype.Int32(vy)
  3233  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>y) }
  3234  				case reflect.Int64:
  3235  					y := xtype.Int64(vy)
  3236  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>y) }
  3237  				case reflect.Uint:
  3238  					y := xtype.Uint(vy)
  3239  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>y) }
  3240  				case reflect.Uint8:
  3241  					y := xtype.Uint8(vy)
  3242  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>y) }
  3243  				case reflect.Uint16:
  3244  					y := xtype.Uint16(vy)
  3245  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>y) }
  3246  				case reflect.Uint32:
  3247  					y := xtype.Uint32(vy)
  3248  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>y) }
  3249  				case reflect.Uint64:
  3250  					y := xtype.Uint64(vy)
  3251  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>y) }
  3252  				case reflect.Uintptr:
  3253  					y := xtype.Uintptr(vy)
  3254  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>y) }
  3255  				}
  3256  			} else {
  3257  				switch ykind {
  3258  				case reflect.Int:
  3259  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>fr.int(iy)) }
  3260  				case reflect.Int8:
  3261  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>fr.int8(iy)) }
  3262  				case reflect.Int16:
  3263  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>fr.int16(iy)) }
  3264  				case reflect.Int32:
  3265  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>fr.int32(iy)) }
  3266  				case reflect.Int64:
  3267  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>fr.int64(iy)) }
  3268  				case reflect.Uint:
  3269  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>fr.uint(iy)) }
  3270  				case reflect.Uint8:
  3271  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>fr.uint8(iy)) }
  3272  				case reflect.Uint16:
  3273  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>fr.uint16(iy)) }
  3274  				case reflect.Uint32:
  3275  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>fr.uint32(iy)) }
  3276  				case reflect.Uint64:
  3277  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>fr.uint64(iy)) }
  3278  				case reflect.Uintptr:
  3279  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(int64)>>fr.uintptr(iy)) }
  3280  				}
  3281  			}
  3282  		case reflect.Uint:
  3283  			if kx == kindConst {
  3284  				x := vx.(uint)
  3285  				switch ykind {
  3286  				case reflect.Int:
  3287  					return func(fr *frame) { fr.setReg(ir, x>>fr.int(iy)) }
  3288  				case reflect.Int8:
  3289  					return func(fr *frame) { fr.setReg(ir, x>>fr.int8(iy)) }
  3290  				case reflect.Int16:
  3291  					return func(fr *frame) { fr.setReg(ir, x>>fr.int16(iy)) }
  3292  				case reflect.Int32:
  3293  					return func(fr *frame) { fr.setReg(ir, x>>fr.int32(iy)) }
  3294  				case reflect.Int64:
  3295  					return func(fr *frame) { fr.setReg(ir, x>>fr.int64(iy)) }
  3296  				case reflect.Uint:
  3297  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint(iy)) }
  3298  				case reflect.Uint8:
  3299  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint8(iy)) }
  3300  				case reflect.Uint16:
  3301  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint16(iy)) }
  3302  				case reflect.Uint32:
  3303  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint32(iy)) }
  3304  				case reflect.Uint64:
  3305  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint64(iy)) }
  3306  				case reflect.Uintptr:
  3307  					return func(fr *frame) { fr.setReg(ir, x>>fr.uintptr(iy)) }
  3308  				}
  3309  			} else if ky == kindConst {
  3310  				switch ykind {
  3311  				case reflect.Int:
  3312  					y := xtype.Int(vy)
  3313  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>y) }
  3314  				case reflect.Int8:
  3315  					y := xtype.Int8(vy)
  3316  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>y) }
  3317  				case reflect.Int16:
  3318  					y := xtype.Int16(vy)
  3319  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>y) }
  3320  				case reflect.Int32:
  3321  					y := xtype.Int32(vy)
  3322  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>y) }
  3323  				case reflect.Int64:
  3324  					y := xtype.Int64(vy)
  3325  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>y) }
  3326  				case reflect.Uint:
  3327  					y := xtype.Uint(vy)
  3328  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>y) }
  3329  				case reflect.Uint8:
  3330  					y := xtype.Uint8(vy)
  3331  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>y) }
  3332  				case reflect.Uint16:
  3333  					y := xtype.Uint16(vy)
  3334  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>y) }
  3335  				case reflect.Uint32:
  3336  					y := xtype.Uint32(vy)
  3337  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>y) }
  3338  				case reflect.Uint64:
  3339  					y := xtype.Uint64(vy)
  3340  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>y) }
  3341  				case reflect.Uintptr:
  3342  					y := xtype.Uintptr(vy)
  3343  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>y) }
  3344  				}
  3345  			} else {
  3346  				switch ykind {
  3347  				case reflect.Int:
  3348  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>fr.int(iy)) }
  3349  				case reflect.Int8:
  3350  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>fr.int8(iy)) }
  3351  				case reflect.Int16:
  3352  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>fr.int16(iy)) }
  3353  				case reflect.Int32:
  3354  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>fr.int32(iy)) }
  3355  				case reflect.Int64:
  3356  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>fr.int64(iy)) }
  3357  				case reflect.Uint:
  3358  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>fr.uint(iy)) }
  3359  				case reflect.Uint8:
  3360  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>fr.uint8(iy)) }
  3361  				case reflect.Uint16:
  3362  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>fr.uint16(iy)) }
  3363  				case reflect.Uint32:
  3364  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>fr.uint32(iy)) }
  3365  				case reflect.Uint64:
  3366  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>fr.uint64(iy)) }
  3367  				case reflect.Uintptr:
  3368  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint)>>fr.uintptr(iy)) }
  3369  				}
  3370  			}
  3371  		case reflect.Uint8:
  3372  			if kx == kindConst {
  3373  				x := vx.(uint8)
  3374  				switch ykind {
  3375  				case reflect.Int:
  3376  					return func(fr *frame) { fr.setReg(ir, x>>fr.int(iy)) }
  3377  				case reflect.Int8:
  3378  					return func(fr *frame) { fr.setReg(ir, x>>fr.int8(iy)) }
  3379  				case reflect.Int16:
  3380  					return func(fr *frame) { fr.setReg(ir, x>>fr.int16(iy)) }
  3381  				case reflect.Int32:
  3382  					return func(fr *frame) { fr.setReg(ir, x>>fr.int32(iy)) }
  3383  				case reflect.Int64:
  3384  					return func(fr *frame) { fr.setReg(ir, x>>fr.int64(iy)) }
  3385  				case reflect.Uint:
  3386  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint(iy)) }
  3387  				case reflect.Uint8:
  3388  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint8(iy)) }
  3389  				case reflect.Uint16:
  3390  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint16(iy)) }
  3391  				case reflect.Uint32:
  3392  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint32(iy)) }
  3393  				case reflect.Uint64:
  3394  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint64(iy)) }
  3395  				case reflect.Uintptr:
  3396  					return func(fr *frame) { fr.setReg(ir, x>>fr.uintptr(iy)) }
  3397  				}
  3398  			} else if ky == kindConst {
  3399  				switch ykind {
  3400  				case reflect.Int:
  3401  					y := xtype.Int(vy)
  3402  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>y) }
  3403  				case reflect.Int8:
  3404  					y := xtype.Int8(vy)
  3405  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>y) }
  3406  				case reflect.Int16:
  3407  					y := xtype.Int16(vy)
  3408  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>y) }
  3409  				case reflect.Int32:
  3410  					y := xtype.Int32(vy)
  3411  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>y) }
  3412  				case reflect.Int64:
  3413  					y := xtype.Int64(vy)
  3414  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>y) }
  3415  				case reflect.Uint:
  3416  					y := xtype.Uint(vy)
  3417  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>y) }
  3418  				case reflect.Uint8:
  3419  					y := xtype.Uint8(vy)
  3420  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>y) }
  3421  				case reflect.Uint16:
  3422  					y := xtype.Uint16(vy)
  3423  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>y) }
  3424  				case reflect.Uint32:
  3425  					y := xtype.Uint32(vy)
  3426  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>y) }
  3427  				case reflect.Uint64:
  3428  					y := xtype.Uint64(vy)
  3429  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>y) }
  3430  				case reflect.Uintptr:
  3431  					y := xtype.Uintptr(vy)
  3432  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>y) }
  3433  				}
  3434  			} else {
  3435  				switch ykind {
  3436  				case reflect.Int:
  3437  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>fr.int(iy)) }
  3438  				case reflect.Int8:
  3439  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>fr.int8(iy)) }
  3440  				case reflect.Int16:
  3441  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>fr.int16(iy)) }
  3442  				case reflect.Int32:
  3443  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>fr.int32(iy)) }
  3444  				case reflect.Int64:
  3445  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>fr.int64(iy)) }
  3446  				case reflect.Uint:
  3447  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>fr.uint(iy)) }
  3448  				case reflect.Uint8:
  3449  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>fr.uint8(iy)) }
  3450  				case reflect.Uint16:
  3451  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>fr.uint16(iy)) }
  3452  				case reflect.Uint32:
  3453  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>fr.uint32(iy)) }
  3454  				case reflect.Uint64:
  3455  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>fr.uint64(iy)) }
  3456  				case reflect.Uintptr:
  3457  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint8)>>fr.uintptr(iy)) }
  3458  				}
  3459  			}
  3460  		case reflect.Uint16:
  3461  			if kx == kindConst {
  3462  				x := vx.(uint16)
  3463  				switch ykind {
  3464  				case reflect.Int:
  3465  					return func(fr *frame) { fr.setReg(ir, x>>fr.int(iy)) }
  3466  				case reflect.Int8:
  3467  					return func(fr *frame) { fr.setReg(ir, x>>fr.int8(iy)) }
  3468  				case reflect.Int16:
  3469  					return func(fr *frame) { fr.setReg(ir, x>>fr.int16(iy)) }
  3470  				case reflect.Int32:
  3471  					return func(fr *frame) { fr.setReg(ir, x>>fr.int32(iy)) }
  3472  				case reflect.Int64:
  3473  					return func(fr *frame) { fr.setReg(ir, x>>fr.int64(iy)) }
  3474  				case reflect.Uint:
  3475  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint(iy)) }
  3476  				case reflect.Uint8:
  3477  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint8(iy)) }
  3478  				case reflect.Uint16:
  3479  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint16(iy)) }
  3480  				case reflect.Uint32:
  3481  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint32(iy)) }
  3482  				case reflect.Uint64:
  3483  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint64(iy)) }
  3484  				case reflect.Uintptr:
  3485  					return func(fr *frame) { fr.setReg(ir, x>>fr.uintptr(iy)) }
  3486  				}
  3487  			} else if ky == kindConst {
  3488  				switch ykind {
  3489  				case reflect.Int:
  3490  					y := xtype.Int(vy)
  3491  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>y) }
  3492  				case reflect.Int8:
  3493  					y := xtype.Int8(vy)
  3494  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>y) }
  3495  				case reflect.Int16:
  3496  					y := xtype.Int16(vy)
  3497  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>y) }
  3498  				case reflect.Int32:
  3499  					y := xtype.Int32(vy)
  3500  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>y) }
  3501  				case reflect.Int64:
  3502  					y := xtype.Int64(vy)
  3503  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>y) }
  3504  				case reflect.Uint:
  3505  					y := xtype.Uint(vy)
  3506  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>y) }
  3507  				case reflect.Uint8:
  3508  					y := xtype.Uint8(vy)
  3509  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>y) }
  3510  				case reflect.Uint16:
  3511  					y := xtype.Uint16(vy)
  3512  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>y) }
  3513  				case reflect.Uint32:
  3514  					y := xtype.Uint32(vy)
  3515  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>y) }
  3516  				case reflect.Uint64:
  3517  					y := xtype.Uint64(vy)
  3518  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>y) }
  3519  				case reflect.Uintptr:
  3520  					y := xtype.Uintptr(vy)
  3521  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>y) }
  3522  				}
  3523  			} else {
  3524  				switch ykind {
  3525  				case reflect.Int:
  3526  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>fr.int(iy)) }
  3527  				case reflect.Int8:
  3528  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>fr.int8(iy)) }
  3529  				case reflect.Int16:
  3530  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>fr.int16(iy)) }
  3531  				case reflect.Int32:
  3532  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>fr.int32(iy)) }
  3533  				case reflect.Int64:
  3534  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>fr.int64(iy)) }
  3535  				case reflect.Uint:
  3536  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>fr.uint(iy)) }
  3537  				case reflect.Uint8:
  3538  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>fr.uint8(iy)) }
  3539  				case reflect.Uint16:
  3540  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>fr.uint16(iy)) }
  3541  				case reflect.Uint32:
  3542  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>fr.uint32(iy)) }
  3543  				case reflect.Uint64:
  3544  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>fr.uint64(iy)) }
  3545  				case reflect.Uintptr:
  3546  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint16)>>fr.uintptr(iy)) }
  3547  				}
  3548  			}
  3549  		case reflect.Uint32:
  3550  			if kx == kindConst {
  3551  				x := vx.(uint32)
  3552  				switch ykind {
  3553  				case reflect.Int:
  3554  					return func(fr *frame) { fr.setReg(ir, x>>fr.int(iy)) }
  3555  				case reflect.Int8:
  3556  					return func(fr *frame) { fr.setReg(ir, x>>fr.int8(iy)) }
  3557  				case reflect.Int16:
  3558  					return func(fr *frame) { fr.setReg(ir, x>>fr.int16(iy)) }
  3559  				case reflect.Int32:
  3560  					return func(fr *frame) { fr.setReg(ir, x>>fr.int32(iy)) }
  3561  				case reflect.Int64:
  3562  					return func(fr *frame) { fr.setReg(ir, x>>fr.int64(iy)) }
  3563  				case reflect.Uint:
  3564  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint(iy)) }
  3565  				case reflect.Uint8:
  3566  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint8(iy)) }
  3567  				case reflect.Uint16:
  3568  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint16(iy)) }
  3569  				case reflect.Uint32:
  3570  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint32(iy)) }
  3571  				case reflect.Uint64:
  3572  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint64(iy)) }
  3573  				case reflect.Uintptr:
  3574  					return func(fr *frame) { fr.setReg(ir, x>>fr.uintptr(iy)) }
  3575  				}
  3576  			} else if ky == kindConst {
  3577  				switch ykind {
  3578  				case reflect.Int:
  3579  					y := xtype.Int(vy)
  3580  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>y) }
  3581  				case reflect.Int8:
  3582  					y := xtype.Int8(vy)
  3583  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>y) }
  3584  				case reflect.Int16:
  3585  					y := xtype.Int16(vy)
  3586  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>y) }
  3587  				case reflect.Int32:
  3588  					y := xtype.Int32(vy)
  3589  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>y) }
  3590  				case reflect.Int64:
  3591  					y := xtype.Int64(vy)
  3592  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>y) }
  3593  				case reflect.Uint:
  3594  					y := xtype.Uint(vy)
  3595  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>y) }
  3596  				case reflect.Uint8:
  3597  					y := xtype.Uint8(vy)
  3598  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>y) }
  3599  				case reflect.Uint16:
  3600  					y := xtype.Uint16(vy)
  3601  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>y) }
  3602  				case reflect.Uint32:
  3603  					y := xtype.Uint32(vy)
  3604  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>y) }
  3605  				case reflect.Uint64:
  3606  					y := xtype.Uint64(vy)
  3607  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>y) }
  3608  				case reflect.Uintptr:
  3609  					y := xtype.Uintptr(vy)
  3610  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>y) }
  3611  				}
  3612  			} else {
  3613  				switch ykind {
  3614  				case reflect.Int:
  3615  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>fr.int(iy)) }
  3616  				case reflect.Int8:
  3617  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>fr.int8(iy)) }
  3618  				case reflect.Int16:
  3619  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>fr.int16(iy)) }
  3620  				case reflect.Int32:
  3621  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>fr.int32(iy)) }
  3622  				case reflect.Int64:
  3623  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>fr.int64(iy)) }
  3624  				case reflect.Uint:
  3625  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>fr.uint(iy)) }
  3626  				case reflect.Uint8:
  3627  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>fr.uint8(iy)) }
  3628  				case reflect.Uint16:
  3629  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>fr.uint16(iy)) }
  3630  				case reflect.Uint32:
  3631  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>fr.uint32(iy)) }
  3632  				case reflect.Uint64:
  3633  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>fr.uint64(iy)) }
  3634  				case reflect.Uintptr:
  3635  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint32)>>fr.uintptr(iy)) }
  3636  				}
  3637  			}
  3638  		case reflect.Uint64:
  3639  			if kx == kindConst {
  3640  				x := vx.(uint64)
  3641  				switch ykind {
  3642  				case reflect.Int:
  3643  					return func(fr *frame) { fr.setReg(ir, x>>fr.int(iy)) }
  3644  				case reflect.Int8:
  3645  					return func(fr *frame) { fr.setReg(ir, x>>fr.int8(iy)) }
  3646  				case reflect.Int16:
  3647  					return func(fr *frame) { fr.setReg(ir, x>>fr.int16(iy)) }
  3648  				case reflect.Int32:
  3649  					return func(fr *frame) { fr.setReg(ir, x>>fr.int32(iy)) }
  3650  				case reflect.Int64:
  3651  					return func(fr *frame) { fr.setReg(ir, x>>fr.int64(iy)) }
  3652  				case reflect.Uint:
  3653  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint(iy)) }
  3654  				case reflect.Uint8:
  3655  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint8(iy)) }
  3656  				case reflect.Uint16:
  3657  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint16(iy)) }
  3658  				case reflect.Uint32:
  3659  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint32(iy)) }
  3660  				case reflect.Uint64:
  3661  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint64(iy)) }
  3662  				case reflect.Uintptr:
  3663  					return func(fr *frame) { fr.setReg(ir, x>>fr.uintptr(iy)) }
  3664  				}
  3665  			} else if ky == kindConst {
  3666  				switch ykind {
  3667  				case reflect.Int:
  3668  					y := xtype.Int(vy)
  3669  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>y) }
  3670  				case reflect.Int8:
  3671  					y := xtype.Int8(vy)
  3672  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>y) }
  3673  				case reflect.Int16:
  3674  					y := xtype.Int16(vy)
  3675  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>y) }
  3676  				case reflect.Int32:
  3677  					y := xtype.Int32(vy)
  3678  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>y) }
  3679  				case reflect.Int64:
  3680  					y := xtype.Int64(vy)
  3681  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>y) }
  3682  				case reflect.Uint:
  3683  					y := xtype.Uint(vy)
  3684  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>y) }
  3685  				case reflect.Uint8:
  3686  					y := xtype.Uint8(vy)
  3687  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>y) }
  3688  				case reflect.Uint16:
  3689  					y := xtype.Uint16(vy)
  3690  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>y) }
  3691  				case reflect.Uint32:
  3692  					y := xtype.Uint32(vy)
  3693  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>y) }
  3694  				case reflect.Uint64:
  3695  					y := xtype.Uint64(vy)
  3696  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>y) }
  3697  				case reflect.Uintptr:
  3698  					y := xtype.Uintptr(vy)
  3699  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>y) }
  3700  				}
  3701  			} else {
  3702  				switch ykind {
  3703  				case reflect.Int:
  3704  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>fr.int(iy)) }
  3705  				case reflect.Int8:
  3706  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>fr.int8(iy)) }
  3707  				case reflect.Int16:
  3708  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>fr.int16(iy)) }
  3709  				case reflect.Int32:
  3710  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>fr.int32(iy)) }
  3711  				case reflect.Int64:
  3712  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>fr.int64(iy)) }
  3713  				case reflect.Uint:
  3714  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>fr.uint(iy)) }
  3715  				case reflect.Uint8:
  3716  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>fr.uint8(iy)) }
  3717  				case reflect.Uint16:
  3718  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>fr.uint16(iy)) }
  3719  				case reflect.Uint32:
  3720  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>fr.uint32(iy)) }
  3721  				case reflect.Uint64:
  3722  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>fr.uint64(iy)) }
  3723  				case reflect.Uintptr:
  3724  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uint64)>>fr.uintptr(iy)) }
  3725  				}
  3726  			}
  3727  		case reflect.Uintptr:
  3728  			if kx == kindConst {
  3729  				x := vx.(uintptr)
  3730  				switch ykind {
  3731  				case reflect.Int:
  3732  					return func(fr *frame) { fr.setReg(ir, x>>fr.int(iy)) }
  3733  				case reflect.Int8:
  3734  					return func(fr *frame) { fr.setReg(ir, x>>fr.int8(iy)) }
  3735  				case reflect.Int16:
  3736  					return func(fr *frame) { fr.setReg(ir, x>>fr.int16(iy)) }
  3737  				case reflect.Int32:
  3738  					return func(fr *frame) { fr.setReg(ir, x>>fr.int32(iy)) }
  3739  				case reflect.Int64:
  3740  					return func(fr *frame) { fr.setReg(ir, x>>fr.int64(iy)) }
  3741  				case reflect.Uint:
  3742  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint(iy)) }
  3743  				case reflect.Uint8:
  3744  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint8(iy)) }
  3745  				case reflect.Uint16:
  3746  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint16(iy)) }
  3747  				case reflect.Uint32:
  3748  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint32(iy)) }
  3749  				case reflect.Uint64:
  3750  					return func(fr *frame) { fr.setReg(ir, x>>fr.uint64(iy)) }
  3751  				case reflect.Uintptr:
  3752  					return func(fr *frame) { fr.setReg(ir, x>>fr.uintptr(iy)) }
  3753  				}
  3754  			} else if ky == kindConst {
  3755  				switch ykind {
  3756  				case reflect.Int:
  3757  					y := xtype.Int(vy)
  3758  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>y) }
  3759  				case reflect.Int8:
  3760  					y := xtype.Int8(vy)
  3761  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>y) }
  3762  				case reflect.Int16:
  3763  					y := xtype.Int16(vy)
  3764  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>y) }
  3765  				case reflect.Int32:
  3766  					y := xtype.Int32(vy)
  3767  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>y) }
  3768  				case reflect.Int64:
  3769  					y := xtype.Int64(vy)
  3770  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>y) }
  3771  				case reflect.Uint:
  3772  					y := xtype.Uint(vy)
  3773  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>y) }
  3774  				case reflect.Uint8:
  3775  					y := xtype.Uint8(vy)
  3776  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>y) }
  3777  				case reflect.Uint16:
  3778  					y := xtype.Uint16(vy)
  3779  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>y) }
  3780  				case reflect.Uint32:
  3781  					y := xtype.Uint32(vy)
  3782  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>y) }
  3783  				case reflect.Uint64:
  3784  					y := xtype.Uint64(vy)
  3785  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>y) }
  3786  				case reflect.Uintptr:
  3787  					y := xtype.Uintptr(vy)
  3788  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>y) }
  3789  				}
  3790  			} else {
  3791  				switch ykind {
  3792  				case reflect.Int:
  3793  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>fr.int(iy)) }
  3794  				case reflect.Int8:
  3795  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>fr.int8(iy)) }
  3796  				case reflect.Int16:
  3797  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>fr.int16(iy)) }
  3798  				case reflect.Int32:
  3799  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>fr.int32(iy)) }
  3800  				case reflect.Int64:
  3801  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>fr.int64(iy)) }
  3802  				case reflect.Uint:
  3803  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>fr.uint(iy)) }
  3804  				case reflect.Uint8:
  3805  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>fr.uint8(iy)) }
  3806  				case reflect.Uint16:
  3807  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>fr.uint16(iy)) }
  3808  				case reflect.Uint32:
  3809  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>fr.uint32(iy)) }
  3810  				case reflect.Uint64:
  3811  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>fr.uint64(iy)) }
  3812  				case reflect.Uintptr:
  3813  					return func(fr *frame) { fr.setReg(ir, fr.reg(ix).(uintptr)>>fr.uintptr(iy)) }
  3814  				}
  3815  			}
  3816  		}
  3817  	} else {
  3818  		t := xtype.TypeOfType(xtyp)
  3819  		switch xkind {
  3820  		case reflect.Int:
  3821  			if kx == kindConst {
  3822  				x := xtype.Int(vx)
  3823  				switch ykind {
  3824  				case reflect.Int:
  3825  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int(iy))) }
  3826  				case reflect.Int8:
  3827  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int8(iy))) }
  3828  				case reflect.Int16:
  3829  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int16(iy))) }
  3830  				case reflect.Int32:
  3831  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int32(iy))) }
  3832  				case reflect.Int64:
  3833  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int64(iy))) }
  3834  				case reflect.Uint:
  3835  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint(iy))) }
  3836  				case reflect.Uint8:
  3837  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint8(iy))) }
  3838  				case reflect.Uint16:
  3839  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint16(iy))) }
  3840  				case reflect.Uint32:
  3841  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint32(iy))) }
  3842  				case reflect.Uint64:
  3843  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint64(iy))) }
  3844  				case reflect.Uintptr:
  3845  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uintptr(iy))) }
  3846  				}
  3847  			} else if ky == kindConst {
  3848  				switch ykind {
  3849  				case reflect.Int:
  3850  					y := xtype.Int(vy)
  3851  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>y)) }
  3852  				case reflect.Int8:
  3853  					y := xtype.Int8(vy)
  3854  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>y)) }
  3855  				case reflect.Int16:
  3856  					y := xtype.Int16(vy)
  3857  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>y)) }
  3858  				case reflect.Int32:
  3859  					y := xtype.Int32(vy)
  3860  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>y)) }
  3861  				case reflect.Int64:
  3862  					y := xtype.Int64(vy)
  3863  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>y)) }
  3864  				case reflect.Uint:
  3865  					y := xtype.Uint(vy)
  3866  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>y)) }
  3867  				case reflect.Uint8:
  3868  					y := xtype.Uint8(vy)
  3869  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>y)) }
  3870  				case reflect.Uint16:
  3871  					y := xtype.Uint16(vy)
  3872  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>y)) }
  3873  				case reflect.Uint32:
  3874  					y := xtype.Uint32(vy)
  3875  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>y)) }
  3876  				case reflect.Uint64:
  3877  					y := xtype.Uint64(vy)
  3878  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>y)) }
  3879  				case reflect.Uintptr:
  3880  					y := xtype.Uintptr(vy)
  3881  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>y)) }
  3882  				}
  3883  			} else {
  3884  				switch ykind {
  3885  				case reflect.Int:
  3886  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>fr.int(iy))) }
  3887  				case reflect.Int8:
  3888  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>fr.int8(iy))) }
  3889  				case reflect.Int16:
  3890  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>fr.int16(iy))) }
  3891  				case reflect.Int32:
  3892  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>fr.int32(iy))) }
  3893  				case reflect.Int64:
  3894  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>fr.int64(iy))) }
  3895  				case reflect.Uint:
  3896  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>fr.uint(iy))) }
  3897  				case reflect.Uint8:
  3898  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>fr.uint8(iy))) }
  3899  				case reflect.Uint16:
  3900  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>fr.uint16(iy))) }
  3901  				case reflect.Uint32:
  3902  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>fr.uint32(iy))) }
  3903  				case reflect.Uint64:
  3904  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>fr.uint64(iy))) }
  3905  				case reflect.Uintptr:
  3906  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int(ix)>>fr.uintptr(iy))) }
  3907  				}
  3908  			}
  3909  		case reflect.Int8:
  3910  			if kx == kindConst {
  3911  				x := xtype.Int8(vx)
  3912  				switch ykind {
  3913  				case reflect.Int:
  3914  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int(iy))) }
  3915  				case reflect.Int8:
  3916  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int8(iy))) }
  3917  				case reflect.Int16:
  3918  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int16(iy))) }
  3919  				case reflect.Int32:
  3920  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int32(iy))) }
  3921  				case reflect.Int64:
  3922  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int64(iy))) }
  3923  				case reflect.Uint:
  3924  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint(iy))) }
  3925  				case reflect.Uint8:
  3926  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint8(iy))) }
  3927  				case reflect.Uint16:
  3928  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint16(iy))) }
  3929  				case reflect.Uint32:
  3930  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint32(iy))) }
  3931  				case reflect.Uint64:
  3932  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint64(iy))) }
  3933  				case reflect.Uintptr:
  3934  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uintptr(iy))) }
  3935  				}
  3936  			} else if ky == kindConst {
  3937  				switch ykind {
  3938  				case reflect.Int:
  3939  					y := xtype.Int(vy)
  3940  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>y)) }
  3941  				case reflect.Int8:
  3942  					y := xtype.Int8(vy)
  3943  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>y)) }
  3944  				case reflect.Int16:
  3945  					y := xtype.Int16(vy)
  3946  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>y)) }
  3947  				case reflect.Int32:
  3948  					y := xtype.Int32(vy)
  3949  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>y)) }
  3950  				case reflect.Int64:
  3951  					y := xtype.Int64(vy)
  3952  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>y)) }
  3953  				case reflect.Uint:
  3954  					y := xtype.Uint(vy)
  3955  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>y)) }
  3956  				case reflect.Uint8:
  3957  					y := xtype.Uint8(vy)
  3958  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>y)) }
  3959  				case reflect.Uint16:
  3960  					y := xtype.Uint16(vy)
  3961  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>y)) }
  3962  				case reflect.Uint32:
  3963  					y := xtype.Uint32(vy)
  3964  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>y)) }
  3965  				case reflect.Uint64:
  3966  					y := xtype.Uint64(vy)
  3967  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>y)) }
  3968  				case reflect.Uintptr:
  3969  					y := xtype.Uintptr(vy)
  3970  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>y)) }
  3971  				}
  3972  			} else {
  3973  				switch ykind {
  3974  				case reflect.Int:
  3975  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>fr.int(iy))) }
  3976  				case reflect.Int8:
  3977  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>fr.int8(iy))) }
  3978  				case reflect.Int16:
  3979  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>fr.int16(iy))) }
  3980  				case reflect.Int32:
  3981  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>fr.int32(iy))) }
  3982  				case reflect.Int64:
  3983  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>fr.int64(iy))) }
  3984  				case reflect.Uint:
  3985  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>fr.uint(iy))) }
  3986  				case reflect.Uint8:
  3987  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>fr.uint8(iy))) }
  3988  				case reflect.Uint16:
  3989  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>fr.uint16(iy))) }
  3990  				case reflect.Uint32:
  3991  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>fr.uint32(iy))) }
  3992  				case reflect.Uint64:
  3993  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>fr.uint64(iy))) }
  3994  				case reflect.Uintptr:
  3995  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int8(ix)>>fr.uintptr(iy))) }
  3996  				}
  3997  			}
  3998  		case reflect.Int16:
  3999  			if kx == kindConst {
  4000  				x := xtype.Int16(vx)
  4001  				switch ykind {
  4002  				case reflect.Int:
  4003  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int(iy))) }
  4004  				case reflect.Int8:
  4005  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int8(iy))) }
  4006  				case reflect.Int16:
  4007  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int16(iy))) }
  4008  				case reflect.Int32:
  4009  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int32(iy))) }
  4010  				case reflect.Int64:
  4011  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int64(iy))) }
  4012  				case reflect.Uint:
  4013  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint(iy))) }
  4014  				case reflect.Uint8:
  4015  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint8(iy))) }
  4016  				case reflect.Uint16:
  4017  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint16(iy))) }
  4018  				case reflect.Uint32:
  4019  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint32(iy))) }
  4020  				case reflect.Uint64:
  4021  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint64(iy))) }
  4022  				case reflect.Uintptr:
  4023  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uintptr(iy))) }
  4024  				}
  4025  			} else if ky == kindConst {
  4026  				switch ykind {
  4027  				case reflect.Int:
  4028  					y := xtype.Int(vy)
  4029  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>y)) }
  4030  				case reflect.Int8:
  4031  					y := xtype.Int8(vy)
  4032  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>y)) }
  4033  				case reflect.Int16:
  4034  					y := xtype.Int16(vy)
  4035  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>y)) }
  4036  				case reflect.Int32:
  4037  					y := xtype.Int32(vy)
  4038  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>y)) }
  4039  				case reflect.Int64:
  4040  					y := xtype.Int64(vy)
  4041  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>y)) }
  4042  				case reflect.Uint:
  4043  					y := xtype.Uint(vy)
  4044  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>y)) }
  4045  				case reflect.Uint8:
  4046  					y := xtype.Uint8(vy)
  4047  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>y)) }
  4048  				case reflect.Uint16:
  4049  					y := xtype.Uint16(vy)
  4050  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>y)) }
  4051  				case reflect.Uint32:
  4052  					y := xtype.Uint32(vy)
  4053  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>y)) }
  4054  				case reflect.Uint64:
  4055  					y := xtype.Uint64(vy)
  4056  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>y)) }
  4057  				case reflect.Uintptr:
  4058  					y := xtype.Uintptr(vy)
  4059  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>y)) }
  4060  				}
  4061  			} else {
  4062  				switch ykind {
  4063  				case reflect.Int:
  4064  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>fr.int(iy))) }
  4065  				case reflect.Int8:
  4066  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>fr.int8(iy))) }
  4067  				case reflect.Int16:
  4068  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>fr.int16(iy))) }
  4069  				case reflect.Int32:
  4070  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>fr.int32(iy))) }
  4071  				case reflect.Int64:
  4072  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>fr.int64(iy))) }
  4073  				case reflect.Uint:
  4074  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>fr.uint(iy))) }
  4075  				case reflect.Uint8:
  4076  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>fr.uint8(iy))) }
  4077  				case reflect.Uint16:
  4078  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>fr.uint16(iy))) }
  4079  				case reflect.Uint32:
  4080  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>fr.uint32(iy))) }
  4081  				case reflect.Uint64:
  4082  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>fr.uint64(iy))) }
  4083  				case reflect.Uintptr:
  4084  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int16(ix)>>fr.uintptr(iy))) }
  4085  				}
  4086  			}
  4087  		case reflect.Int32:
  4088  			if kx == kindConst {
  4089  				x := xtype.Int32(vx)
  4090  				switch ykind {
  4091  				case reflect.Int:
  4092  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int(iy))) }
  4093  				case reflect.Int8:
  4094  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int8(iy))) }
  4095  				case reflect.Int16:
  4096  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int16(iy))) }
  4097  				case reflect.Int32:
  4098  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int32(iy))) }
  4099  				case reflect.Int64:
  4100  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int64(iy))) }
  4101  				case reflect.Uint:
  4102  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint(iy))) }
  4103  				case reflect.Uint8:
  4104  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint8(iy))) }
  4105  				case reflect.Uint16:
  4106  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint16(iy))) }
  4107  				case reflect.Uint32:
  4108  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint32(iy))) }
  4109  				case reflect.Uint64:
  4110  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint64(iy))) }
  4111  				case reflect.Uintptr:
  4112  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uintptr(iy))) }
  4113  				}
  4114  			} else if ky == kindConst {
  4115  				switch ykind {
  4116  				case reflect.Int:
  4117  					y := xtype.Int(vy)
  4118  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>y)) }
  4119  				case reflect.Int8:
  4120  					y := xtype.Int8(vy)
  4121  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>y)) }
  4122  				case reflect.Int16:
  4123  					y := xtype.Int16(vy)
  4124  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>y)) }
  4125  				case reflect.Int32:
  4126  					y := xtype.Int32(vy)
  4127  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>y)) }
  4128  				case reflect.Int64:
  4129  					y := xtype.Int64(vy)
  4130  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>y)) }
  4131  				case reflect.Uint:
  4132  					y := xtype.Uint(vy)
  4133  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>y)) }
  4134  				case reflect.Uint8:
  4135  					y := xtype.Uint8(vy)
  4136  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>y)) }
  4137  				case reflect.Uint16:
  4138  					y := xtype.Uint16(vy)
  4139  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>y)) }
  4140  				case reflect.Uint32:
  4141  					y := xtype.Uint32(vy)
  4142  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>y)) }
  4143  				case reflect.Uint64:
  4144  					y := xtype.Uint64(vy)
  4145  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>y)) }
  4146  				case reflect.Uintptr:
  4147  					y := xtype.Uintptr(vy)
  4148  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>y)) }
  4149  				}
  4150  			} else {
  4151  				switch ykind {
  4152  				case reflect.Int:
  4153  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>fr.int(iy))) }
  4154  				case reflect.Int8:
  4155  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>fr.int8(iy))) }
  4156  				case reflect.Int16:
  4157  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>fr.int16(iy))) }
  4158  				case reflect.Int32:
  4159  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>fr.int32(iy))) }
  4160  				case reflect.Int64:
  4161  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>fr.int64(iy))) }
  4162  				case reflect.Uint:
  4163  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>fr.uint(iy))) }
  4164  				case reflect.Uint8:
  4165  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>fr.uint8(iy))) }
  4166  				case reflect.Uint16:
  4167  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>fr.uint16(iy))) }
  4168  				case reflect.Uint32:
  4169  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>fr.uint32(iy))) }
  4170  				case reflect.Uint64:
  4171  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>fr.uint64(iy))) }
  4172  				case reflect.Uintptr:
  4173  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int32(ix)>>fr.uintptr(iy))) }
  4174  				}
  4175  			}
  4176  		case reflect.Int64:
  4177  			if kx == kindConst {
  4178  				x := xtype.Int64(vx)
  4179  				switch ykind {
  4180  				case reflect.Int:
  4181  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int(iy))) }
  4182  				case reflect.Int8:
  4183  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int8(iy))) }
  4184  				case reflect.Int16:
  4185  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int16(iy))) }
  4186  				case reflect.Int32:
  4187  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int32(iy))) }
  4188  				case reflect.Int64:
  4189  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int64(iy))) }
  4190  				case reflect.Uint:
  4191  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint(iy))) }
  4192  				case reflect.Uint8:
  4193  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint8(iy))) }
  4194  				case reflect.Uint16:
  4195  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint16(iy))) }
  4196  				case reflect.Uint32:
  4197  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint32(iy))) }
  4198  				case reflect.Uint64:
  4199  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint64(iy))) }
  4200  				case reflect.Uintptr:
  4201  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uintptr(iy))) }
  4202  				}
  4203  			} else if ky == kindConst {
  4204  				switch ykind {
  4205  				case reflect.Int:
  4206  					y := xtype.Int(vy)
  4207  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>y)) }
  4208  				case reflect.Int8:
  4209  					y := xtype.Int8(vy)
  4210  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>y)) }
  4211  				case reflect.Int16:
  4212  					y := xtype.Int16(vy)
  4213  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>y)) }
  4214  				case reflect.Int32:
  4215  					y := xtype.Int32(vy)
  4216  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>y)) }
  4217  				case reflect.Int64:
  4218  					y := xtype.Int64(vy)
  4219  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>y)) }
  4220  				case reflect.Uint:
  4221  					y := xtype.Uint(vy)
  4222  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>y)) }
  4223  				case reflect.Uint8:
  4224  					y := xtype.Uint8(vy)
  4225  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>y)) }
  4226  				case reflect.Uint16:
  4227  					y := xtype.Uint16(vy)
  4228  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>y)) }
  4229  				case reflect.Uint32:
  4230  					y := xtype.Uint32(vy)
  4231  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>y)) }
  4232  				case reflect.Uint64:
  4233  					y := xtype.Uint64(vy)
  4234  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>y)) }
  4235  				case reflect.Uintptr:
  4236  					y := xtype.Uintptr(vy)
  4237  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>y)) }
  4238  				}
  4239  			} else {
  4240  				switch ykind {
  4241  				case reflect.Int:
  4242  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>fr.int(iy))) }
  4243  				case reflect.Int8:
  4244  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>fr.int8(iy))) }
  4245  				case reflect.Int16:
  4246  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>fr.int16(iy))) }
  4247  				case reflect.Int32:
  4248  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>fr.int32(iy))) }
  4249  				case reflect.Int64:
  4250  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>fr.int64(iy))) }
  4251  				case reflect.Uint:
  4252  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>fr.uint(iy))) }
  4253  				case reflect.Uint8:
  4254  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>fr.uint8(iy))) }
  4255  				case reflect.Uint16:
  4256  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>fr.uint16(iy))) }
  4257  				case reflect.Uint32:
  4258  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>fr.uint32(iy))) }
  4259  				case reflect.Uint64:
  4260  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>fr.uint64(iy))) }
  4261  				case reflect.Uintptr:
  4262  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.int64(ix)>>fr.uintptr(iy))) }
  4263  				}
  4264  			}
  4265  		case reflect.Uint:
  4266  			if kx == kindConst {
  4267  				x := xtype.Uint(vx)
  4268  				switch ykind {
  4269  				case reflect.Int:
  4270  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int(iy))) }
  4271  				case reflect.Int8:
  4272  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int8(iy))) }
  4273  				case reflect.Int16:
  4274  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int16(iy))) }
  4275  				case reflect.Int32:
  4276  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int32(iy))) }
  4277  				case reflect.Int64:
  4278  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int64(iy))) }
  4279  				case reflect.Uint:
  4280  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint(iy))) }
  4281  				case reflect.Uint8:
  4282  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint8(iy))) }
  4283  				case reflect.Uint16:
  4284  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint16(iy))) }
  4285  				case reflect.Uint32:
  4286  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint32(iy))) }
  4287  				case reflect.Uint64:
  4288  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint64(iy))) }
  4289  				case reflect.Uintptr:
  4290  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uintptr(iy))) }
  4291  				}
  4292  			} else if ky == kindConst {
  4293  				switch ykind {
  4294  				case reflect.Int:
  4295  					y := xtype.Int(vy)
  4296  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>y)) }
  4297  				case reflect.Int8:
  4298  					y := xtype.Int8(vy)
  4299  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>y)) }
  4300  				case reflect.Int16:
  4301  					y := xtype.Int16(vy)
  4302  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>y)) }
  4303  				case reflect.Int32:
  4304  					y := xtype.Int32(vy)
  4305  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>y)) }
  4306  				case reflect.Int64:
  4307  					y := xtype.Int64(vy)
  4308  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>y)) }
  4309  				case reflect.Uint:
  4310  					y := xtype.Uint(vy)
  4311  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>y)) }
  4312  				case reflect.Uint8:
  4313  					y := xtype.Uint8(vy)
  4314  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>y)) }
  4315  				case reflect.Uint16:
  4316  					y := xtype.Uint16(vy)
  4317  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>y)) }
  4318  				case reflect.Uint32:
  4319  					y := xtype.Uint32(vy)
  4320  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>y)) }
  4321  				case reflect.Uint64:
  4322  					y := xtype.Uint64(vy)
  4323  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>y)) }
  4324  				case reflect.Uintptr:
  4325  					y := xtype.Uintptr(vy)
  4326  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>y)) }
  4327  				}
  4328  			} else {
  4329  				switch ykind {
  4330  				case reflect.Int:
  4331  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>fr.int(iy))) }
  4332  				case reflect.Int8:
  4333  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>fr.int8(iy))) }
  4334  				case reflect.Int16:
  4335  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>fr.int16(iy))) }
  4336  				case reflect.Int32:
  4337  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>fr.int32(iy))) }
  4338  				case reflect.Int64:
  4339  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>fr.int64(iy))) }
  4340  				case reflect.Uint:
  4341  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>fr.uint(iy))) }
  4342  				case reflect.Uint8:
  4343  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>fr.uint8(iy))) }
  4344  				case reflect.Uint16:
  4345  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>fr.uint16(iy))) }
  4346  				case reflect.Uint32:
  4347  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>fr.uint32(iy))) }
  4348  				case reflect.Uint64:
  4349  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>fr.uint64(iy))) }
  4350  				case reflect.Uintptr:
  4351  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint(ix)>>fr.uintptr(iy))) }
  4352  				}
  4353  			}
  4354  		case reflect.Uint8:
  4355  			if kx == kindConst {
  4356  				x := xtype.Uint8(vx)
  4357  				switch ykind {
  4358  				case reflect.Int:
  4359  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int(iy))) }
  4360  				case reflect.Int8:
  4361  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int8(iy))) }
  4362  				case reflect.Int16:
  4363  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int16(iy))) }
  4364  				case reflect.Int32:
  4365  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int32(iy))) }
  4366  				case reflect.Int64:
  4367  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int64(iy))) }
  4368  				case reflect.Uint:
  4369  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint(iy))) }
  4370  				case reflect.Uint8:
  4371  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint8(iy))) }
  4372  				case reflect.Uint16:
  4373  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint16(iy))) }
  4374  				case reflect.Uint32:
  4375  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint32(iy))) }
  4376  				case reflect.Uint64:
  4377  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint64(iy))) }
  4378  				case reflect.Uintptr:
  4379  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uintptr(iy))) }
  4380  				}
  4381  			} else if ky == kindConst {
  4382  				switch ykind {
  4383  				case reflect.Int:
  4384  					y := xtype.Int(vy)
  4385  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>y)) }
  4386  				case reflect.Int8:
  4387  					y := xtype.Int8(vy)
  4388  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>y)) }
  4389  				case reflect.Int16:
  4390  					y := xtype.Int16(vy)
  4391  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>y)) }
  4392  				case reflect.Int32:
  4393  					y := xtype.Int32(vy)
  4394  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>y)) }
  4395  				case reflect.Int64:
  4396  					y := xtype.Int64(vy)
  4397  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>y)) }
  4398  				case reflect.Uint:
  4399  					y := xtype.Uint(vy)
  4400  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>y)) }
  4401  				case reflect.Uint8:
  4402  					y := xtype.Uint8(vy)
  4403  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>y)) }
  4404  				case reflect.Uint16:
  4405  					y := xtype.Uint16(vy)
  4406  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>y)) }
  4407  				case reflect.Uint32:
  4408  					y := xtype.Uint32(vy)
  4409  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>y)) }
  4410  				case reflect.Uint64:
  4411  					y := xtype.Uint64(vy)
  4412  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>y)) }
  4413  				case reflect.Uintptr:
  4414  					y := xtype.Uintptr(vy)
  4415  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>y)) }
  4416  				}
  4417  			} else {
  4418  				switch ykind {
  4419  				case reflect.Int:
  4420  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>fr.int(iy))) }
  4421  				case reflect.Int8:
  4422  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>fr.int8(iy))) }
  4423  				case reflect.Int16:
  4424  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>fr.int16(iy))) }
  4425  				case reflect.Int32:
  4426  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>fr.int32(iy))) }
  4427  				case reflect.Int64:
  4428  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>fr.int64(iy))) }
  4429  				case reflect.Uint:
  4430  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>fr.uint(iy))) }
  4431  				case reflect.Uint8:
  4432  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>fr.uint8(iy))) }
  4433  				case reflect.Uint16:
  4434  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>fr.uint16(iy))) }
  4435  				case reflect.Uint32:
  4436  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>fr.uint32(iy))) }
  4437  				case reflect.Uint64:
  4438  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>fr.uint64(iy))) }
  4439  				case reflect.Uintptr:
  4440  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint8(ix)>>fr.uintptr(iy))) }
  4441  				}
  4442  			}
  4443  		case reflect.Uint16:
  4444  			if kx == kindConst {
  4445  				x := xtype.Uint16(vx)
  4446  				switch ykind {
  4447  				case reflect.Int:
  4448  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int(iy))) }
  4449  				case reflect.Int8:
  4450  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int8(iy))) }
  4451  				case reflect.Int16:
  4452  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int16(iy))) }
  4453  				case reflect.Int32:
  4454  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int32(iy))) }
  4455  				case reflect.Int64:
  4456  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int64(iy))) }
  4457  				case reflect.Uint:
  4458  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint(iy))) }
  4459  				case reflect.Uint8:
  4460  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint8(iy))) }
  4461  				case reflect.Uint16:
  4462  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint16(iy))) }
  4463  				case reflect.Uint32:
  4464  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint32(iy))) }
  4465  				case reflect.Uint64:
  4466  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint64(iy))) }
  4467  				case reflect.Uintptr:
  4468  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uintptr(iy))) }
  4469  				}
  4470  			} else if ky == kindConst {
  4471  				switch ykind {
  4472  				case reflect.Int:
  4473  					y := xtype.Int(vy)
  4474  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>y)) }
  4475  				case reflect.Int8:
  4476  					y := xtype.Int8(vy)
  4477  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>y)) }
  4478  				case reflect.Int16:
  4479  					y := xtype.Int16(vy)
  4480  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>y)) }
  4481  				case reflect.Int32:
  4482  					y := xtype.Int32(vy)
  4483  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>y)) }
  4484  				case reflect.Int64:
  4485  					y := xtype.Int64(vy)
  4486  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>y)) }
  4487  				case reflect.Uint:
  4488  					y := xtype.Uint(vy)
  4489  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>y)) }
  4490  				case reflect.Uint8:
  4491  					y := xtype.Uint8(vy)
  4492  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>y)) }
  4493  				case reflect.Uint16:
  4494  					y := xtype.Uint16(vy)
  4495  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>y)) }
  4496  				case reflect.Uint32:
  4497  					y := xtype.Uint32(vy)
  4498  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>y)) }
  4499  				case reflect.Uint64:
  4500  					y := xtype.Uint64(vy)
  4501  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>y)) }
  4502  				case reflect.Uintptr:
  4503  					y := xtype.Uintptr(vy)
  4504  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>y)) }
  4505  				}
  4506  			} else {
  4507  				switch ykind {
  4508  				case reflect.Int:
  4509  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>fr.int(iy))) }
  4510  				case reflect.Int8:
  4511  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>fr.int8(iy))) }
  4512  				case reflect.Int16:
  4513  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>fr.int16(iy))) }
  4514  				case reflect.Int32:
  4515  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>fr.int32(iy))) }
  4516  				case reflect.Int64:
  4517  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>fr.int64(iy))) }
  4518  				case reflect.Uint:
  4519  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>fr.uint(iy))) }
  4520  				case reflect.Uint8:
  4521  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>fr.uint8(iy))) }
  4522  				case reflect.Uint16:
  4523  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>fr.uint16(iy))) }
  4524  				case reflect.Uint32:
  4525  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>fr.uint32(iy))) }
  4526  				case reflect.Uint64:
  4527  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>fr.uint64(iy))) }
  4528  				case reflect.Uintptr:
  4529  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint16(ix)>>fr.uintptr(iy))) }
  4530  				}
  4531  			}
  4532  		case reflect.Uint32:
  4533  			if kx == kindConst {
  4534  				x := xtype.Uint32(vx)
  4535  				switch ykind {
  4536  				case reflect.Int:
  4537  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int(iy))) }
  4538  				case reflect.Int8:
  4539  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int8(iy))) }
  4540  				case reflect.Int16:
  4541  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int16(iy))) }
  4542  				case reflect.Int32:
  4543  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int32(iy))) }
  4544  				case reflect.Int64:
  4545  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int64(iy))) }
  4546  				case reflect.Uint:
  4547  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint(iy))) }
  4548  				case reflect.Uint8:
  4549  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint8(iy))) }
  4550  				case reflect.Uint16:
  4551  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint16(iy))) }
  4552  				case reflect.Uint32:
  4553  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint32(iy))) }
  4554  				case reflect.Uint64:
  4555  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint64(iy))) }
  4556  				case reflect.Uintptr:
  4557  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uintptr(iy))) }
  4558  				}
  4559  			} else if ky == kindConst {
  4560  				switch ykind {
  4561  				case reflect.Int:
  4562  					y := xtype.Int(vy)
  4563  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>y)) }
  4564  				case reflect.Int8:
  4565  					y := xtype.Int8(vy)
  4566  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>y)) }
  4567  				case reflect.Int16:
  4568  					y := xtype.Int16(vy)
  4569  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>y)) }
  4570  				case reflect.Int32:
  4571  					y := xtype.Int32(vy)
  4572  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>y)) }
  4573  				case reflect.Int64:
  4574  					y := xtype.Int64(vy)
  4575  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>y)) }
  4576  				case reflect.Uint:
  4577  					y := xtype.Uint(vy)
  4578  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>y)) }
  4579  				case reflect.Uint8:
  4580  					y := xtype.Uint8(vy)
  4581  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>y)) }
  4582  				case reflect.Uint16:
  4583  					y := xtype.Uint16(vy)
  4584  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>y)) }
  4585  				case reflect.Uint32:
  4586  					y := xtype.Uint32(vy)
  4587  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>y)) }
  4588  				case reflect.Uint64:
  4589  					y := xtype.Uint64(vy)
  4590  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>y)) }
  4591  				case reflect.Uintptr:
  4592  					y := xtype.Uintptr(vy)
  4593  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>y)) }
  4594  				}
  4595  			} else {
  4596  				switch ykind {
  4597  				case reflect.Int:
  4598  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>fr.int(iy))) }
  4599  				case reflect.Int8:
  4600  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>fr.int8(iy))) }
  4601  				case reflect.Int16:
  4602  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>fr.int16(iy))) }
  4603  				case reflect.Int32:
  4604  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>fr.int32(iy))) }
  4605  				case reflect.Int64:
  4606  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>fr.int64(iy))) }
  4607  				case reflect.Uint:
  4608  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>fr.uint(iy))) }
  4609  				case reflect.Uint8:
  4610  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>fr.uint8(iy))) }
  4611  				case reflect.Uint16:
  4612  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>fr.uint16(iy))) }
  4613  				case reflect.Uint32:
  4614  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>fr.uint32(iy))) }
  4615  				case reflect.Uint64:
  4616  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>fr.uint64(iy))) }
  4617  				case reflect.Uintptr:
  4618  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint32(ix)>>fr.uintptr(iy))) }
  4619  				}
  4620  			}
  4621  		case reflect.Uint64:
  4622  			if kx == kindConst {
  4623  				x := xtype.Uint64(vx)
  4624  				switch ykind {
  4625  				case reflect.Int:
  4626  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int(iy))) }
  4627  				case reflect.Int8:
  4628  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int8(iy))) }
  4629  				case reflect.Int16:
  4630  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int16(iy))) }
  4631  				case reflect.Int32:
  4632  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int32(iy))) }
  4633  				case reflect.Int64:
  4634  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int64(iy))) }
  4635  				case reflect.Uint:
  4636  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint(iy))) }
  4637  				case reflect.Uint8:
  4638  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint8(iy))) }
  4639  				case reflect.Uint16:
  4640  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint16(iy))) }
  4641  				case reflect.Uint32:
  4642  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint32(iy))) }
  4643  				case reflect.Uint64:
  4644  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint64(iy))) }
  4645  				case reflect.Uintptr:
  4646  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uintptr(iy))) }
  4647  				}
  4648  			} else if ky == kindConst {
  4649  				switch ykind {
  4650  				case reflect.Int:
  4651  					y := xtype.Int(vy)
  4652  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>y)) }
  4653  				case reflect.Int8:
  4654  					y := xtype.Int8(vy)
  4655  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>y)) }
  4656  				case reflect.Int16:
  4657  					y := xtype.Int16(vy)
  4658  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>y)) }
  4659  				case reflect.Int32:
  4660  					y := xtype.Int32(vy)
  4661  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>y)) }
  4662  				case reflect.Int64:
  4663  					y := xtype.Int64(vy)
  4664  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>y)) }
  4665  				case reflect.Uint:
  4666  					y := xtype.Uint(vy)
  4667  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>y)) }
  4668  				case reflect.Uint8:
  4669  					y := xtype.Uint8(vy)
  4670  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>y)) }
  4671  				case reflect.Uint16:
  4672  					y := xtype.Uint16(vy)
  4673  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>y)) }
  4674  				case reflect.Uint32:
  4675  					y := xtype.Uint32(vy)
  4676  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>y)) }
  4677  				case reflect.Uint64:
  4678  					y := xtype.Uint64(vy)
  4679  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>y)) }
  4680  				case reflect.Uintptr:
  4681  					y := xtype.Uintptr(vy)
  4682  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>y)) }
  4683  				}
  4684  			} else {
  4685  				switch ykind {
  4686  				case reflect.Int:
  4687  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>fr.int(iy))) }
  4688  				case reflect.Int8:
  4689  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>fr.int8(iy))) }
  4690  				case reflect.Int16:
  4691  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>fr.int16(iy))) }
  4692  				case reflect.Int32:
  4693  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>fr.int32(iy))) }
  4694  				case reflect.Int64:
  4695  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>fr.int64(iy))) }
  4696  				case reflect.Uint:
  4697  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>fr.uint(iy))) }
  4698  				case reflect.Uint8:
  4699  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>fr.uint8(iy))) }
  4700  				case reflect.Uint16:
  4701  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>fr.uint16(iy))) }
  4702  				case reflect.Uint32:
  4703  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>fr.uint32(iy))) }
  4704  				case reflect.Uint64:
  4705  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>fr.uint64(iy))) }
  4706  				case reflect.Uintptr:
  4707  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uint64(ix)>>fr.uintptr(iy))) }
  4708  				}
  4709  			}
  4710  		case reflect.Uintptr:
  4711  			if kx == kindConst {
  4712  				x := xtype.Uintptr(vx)
  4713  				switch ykind {
  4714  				case reflect.Int:
  4715  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int(iy))) }
  4716  				case reflect.Int8:
  4717  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int8(iy))) }
  4718  				case reflect.Int16:
  4719  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int16(iy))) }
  4720  				case reflect.Int32:
  4721  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int32(iy))) }
  4722  				case reflect.Int64:
  4723  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.int64(iy))) }
  4724  				case reflect.Uint:
  4725  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint(iy))) }
  4726  				case reflect.Uint8:
  4727  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint8(iy))) }
  4728  				case reflect.Uint16:
  4729  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint16(iy))) }
  4730  				case reflect.Uint32:
  4731  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint32(iy))) }
  4732  				case reflect.Uint64:
  4733  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uint64(iy))) }
  4734  				case reflect.Uintptr:
  4735  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, x>>fr.uintptr(iy))) }
  4736  				}
  4737  			} else if ky == kindConst {
  4738  				switch ykind {
  4739  				case reflect.Int:
  4740  					y := xtype.Int(vy)
  4741  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>y)) }
  4742  				case reflect.Int8:
  4743  					y := xtype.Int8(vy)
  4744  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>y)) }
  4745  				case reflect.Int16:
  4746  					y := xtype.Int16(vy)
  4747  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>y)) }
  4748  				case reflect.Int32:
  4749  					y := xtype.Int32(vy)
  4750  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>y)) }
  4751  				case reflect.Int64:
  4752  					y := xtype.Int64(vy)
  4753  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>y)) }
  4754  				case reflect.Uint:
  4755  					y := xtype.Uint(vy)
  4756  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>y)) }
  4757  				case reflect.Uint8:
  4758  					y := xtype.Uint8(vy)
  4759  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>y)) }
  4760  				case reflect.Uint16:
  4761  					y := xtype.Uint16(vy)
  4762  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>y)) }
  4763  				case reflect.Uint32:
  4764  					y := xtype.Uint32(vy)
  4765  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>y)) }
  4766  				case reflect.Uint64:
  4767  					y := xtype.Uint64(vy)
  4768  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>y)) }
  4769  				case reflect.Uintptr:
  4770  					y := xtype.Uintptr(vy)
  4771  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>y)) }
  4772  				}
  4773  			} else {
  4774  				switch ykind {
  4775  				case reflect.Int:
  4776  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>fr.int(iy))) }
  4777  				case reflect.Int8:
  4778  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>fr.int8(iy))) }
  4779  				case reflect.Int16:
  4780  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>fr.int16(iy))) }
  4781  				case reflect.Int32:
  4782  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>fr.int32(iy))) }
  4783  				case reflect.Int64:
  4784  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>fr.int64(iy))) }
  4785  				case reflect.Uint:
  4786  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>fr.uint(iy))) }
  4787  				case reflect.Uint8:
  4788  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>fr.uint8(iy))) }
  4789  				case reflect.Uint16:
  4790  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>fr.uint16(iy))) }
  4791  				case reflect.Uint32:
  4792  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>fr.uint32(iy))) }
  4793  				case reflect.Uint64:
  4794  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>fr.uint64(iy))) }
  4795  				case reflect.Uintptr:
  4796  					return func(fr *frame) { fr.setReg(ir, xtype.Make(t, fr.uintptr(ix)>>fr.uintptr(iy))) }
  4797  				}
  4798  			}
  4799  		}
  4800  	}
  4801  	panic("unreachable")
  4802  }