github.com/goplus/gossa@v0.3.25/binop_shift.go (about)

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