github.com/epfl-dcsl/gotee@v0.0.0-20200909122901-014b35f5e5e9/src/cmd/compile/internal/gc/testdata/arithBoundary.go (about)

     1  // run
     2  // Code generated by gen/arithBoundaryGen.go. DO NOT EDIT.
     3  
     4  package main
     5  
     6  import "fmt"
     7  
     8  type utd64 struct {
     9  	a, b                    uint64
    10  	add, sub, mul, div, mod uint64
    11  }
    12  type itd64 struct {
    13  	a, b                    int64
    14  	add, sub, mul, div, mod int64
    15  }
    16  type utd32 struct {
    17  	a, b                    uint32
    18  	add, sub, mul, div, mod uint32
    19  }
    20  type itd32 struct {
    21  	a, b                    int32
    22  	add, sub, mul, div, mod int32
    23  }
    24  type utd16 struct {
    25  	a, b                    uint16
    26  	add, sub, mul, div, mod uint16
    27  }
    28  type itd16 struct {
    29  	a, b                    int16
    30  	add, sub, mul, div, mod int16
    31  }
    32  type utd8 struct {
    33  	a, b                    uint8
    34  	add, sub, mul, div, mod uint8
    35  }
    36  type itd8 struct {
    37  	a, b                    int8
    38  	add, sub, mul, div, mod int8
    39  }
    40  
    41  //go:noinline
    42  func add_uint64_ssa(a, b uint64) uint64 {
    43  	return a + b
    44  }
    45  
    46  //go:noinline
    47  func sub_uint64_ssa(a, b uint64) uint64 {
    48  	return a - b
    49  }
    50  
    51  //go:noinline
    52  func div_uint64_ssa(a, b uint64) uint64 {
    53  	return a / b
    54  }
    55  
    56  //go:noinline
    57  func mod_uint64_ssa(a, b uint64) uint64 {
    58  	return a % b
    59  }
    60  
    61  //go:noinline
    62  func mul_uint64_ssa(a, b uint64) uint64 {
    63  	return a * b
    64  }
    65  
    66  //go:noinline
    67  func add_int64_ssa(a, b int64) int64 {
    68  	return a + b
    69  }
    70  
    71  //go:noinline
    72  func sub_int64_ssa(a, b int64) int64 {
    73  	return a - b
    74  }
    75  
    76  //go:noinline
    77  func div_int64_ssa(a, b int64) int64 {
    78  	return a / b
    79  }
    80  
    81  //go:noinline
    82  func mod_int64_ssa(a, b int64) int64 {
    83  	return a % b
    84  }
    85  
    86  //go:noinline
    87  func mul_int64_ssa(a, b int64) int64 {
    88  	return a * b
    89  }
    90  
    91  //go:noinline
    92  func add_uint32_ssa(a, b uint32) uint32 {
    93  	return a + b
    94  }
    95  
    96  //go:noinline
    97  func sub_uint32_ssa(a, b uint32) uint32 {
    98  	return a - b
    99  }
   100  
   101  //go:noinline
   102  func div_uint32_ssa(a, b uint32) uint32 {
   103  	return a / b
   104  }
   105  
   106  //go:noinline
   107  func mod_uint32_ssa(a, b uint32) uint32 {
   108  	return a % b
   109  }
   110  
   111  //go:noinline
   112  func mul_uint32_ssa(a, b uint32) uint32 {
   113  	return a * b
   114  }
   115  
   116  //go:noinline
   117  func add_int32_ssa(a, b int32) int32 {
   118  	return a + b
   119  }
   120  
   121  //go:noinline
   122  func sub_int32_ssa(a, b int32) int32 {
   123  	return a - b
   124  }
   125  
   126  //go:noinline
   127  func div_int32_ssa(a, b int32) int32 {
   128  	return a / b
   129  }
   130  
   131  //go:noinline
   132  func mod_int32_ssa(a, b int32) int32 {
   133  	return a % b
   134  }
   135  
   136  //go:noinline
   137  func mul_int32_ssa(a, b int32) int32 {
   138  	return a * b
   139  }
   140  
   141  //go:noinline
   142  func add_uint16_ssa(a, b uint16) uint16 {
   143  	return a + b
   144  }
   145  
   146  //go:noinline
   147  func sub_uint16_ssa(a, b uint16) uint16 {
   148  	return a - b
   149  }
   150  
   151  //go:noinline
   152  func div_uint16_ssa(a, b uint16) uint16 {
   153  	return a / b
   154  }
   155  
   156  //go:noinline
   157  func mod_uint16_ssa(a, b uint16) uint16 {
   158  	return a % b
   159  }
   160  
   161  //go:noinline
   162  func mul_uint16_ssa(a, b uint16) uint16 {
   163  	return a * b
   164  }
   165  
   166  //go:noinline
   167  func add_int16_ssa(a, b int16) int16 {
   168  	return a + b
   169  }
   170  
   171  //go:noinline
   172  func sub_int16_ssa(a, b int16) int16 {
   173  	return a - b
   174  }
   175  
   176  //go:noinline
   177  func div_int16_ssa(a, b int16) int16 {
   178  	return a / b
   179  }
   180  
   181  //go:noinline
   182  func mod_int16_ssa(a, b int16) int16 {
   183  	return a % b
   184  }
   185  
   186  //go:noinline
   187  func mul_int16_ssa(a, b int16) int16 {
   188  	return a * b
   189  }
   190  
   191  //go:noinline
   192  func add_uint8_ssa(a, b uint8) uint8 {
   193  	return a + b
   194  }
   195  
   196  //go:noinline
   197  func sub_uint8_ssa(a, b uint8) uint8 {
   198  	return a - b
   199  }
   200  
   201  //go:noinline
   202  func div_uint8_ssa(a, b uint8) uint8 {
   203  	return a / b
   204  }
   205  
   206  //go:noinline
   207  func mod_uint8_ssa(a, b uint8) uint8 {
   208  	return a % b
   209  }
   210  
   211  //go:noinline
   212  func mul_uint8_ssa(a, b uint8) uint8 {
   213  	return a * b
   214  }
   215  
   216  //go:noinline
   217  func add_int8_ssa(a, b int8) int8 {
   218  	return a + b
   219  }
   220  
   221  //go:noinline
   222  func sub_int8_ssa(a, b int8) int8 {
   223  	return a - b
   224  }
   225  
   226  //go:noinline
   227  func div_int8_ssa(a, b int8) int8 {
   228  	return a / b
   229  }
   230  
   231  //go:noinline
   232  func mod_int8_ssa(a, b int8) int8 {
   233  	return a % b
   234  }
   235  
   236  //go:noinline
   237  func mul_int8_ssa(a, b int8) int8 {
   238  	return a * b
   239  }
   240  
   241  var uint64_data []utd64 = []utd64{utd64{a: 0, b: 0, add: 0, sub: 0, mul: 0},
   242  	utd64{a: 0, b: 1, add: 1, sub: 18446744073709551615, mul: 0, div: 0, mod: 0},
   243  	utd64{a: 0, b: 4294967296, add: 4294967296, sub: 18446744069414584320, mul: 0, div: 0, mod: 0},
   244  	utd64{a: 0, b: 18446744073709551615, add: 18446744073709551615, sub: 1, mul: 0, div: 0, mod: 0},
   245  	utd64{a: 1, b: 0, add: 1, sub: 1, mul: 0},
   246  	utd64{a: 1, b: 1, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   247  	utd64{a: 1, b: 4294967296, add: 4294967297, sub: 18446744069414584321, mul: 4294967296, div: 0, mod: 1},
   248  	utd64{a: 1, b: 18446744073709551615, add: 0, sub: 2, mul: 18446744073709551615, div: 0, mod: 1},
   249  	utd64{a: 4294967296, b: 0, add: 4294967296, sub: 4294967296, mul: 0},
   250  	utd64{a: 4294967296, b: 1, add: 4294967297, sub: 4294967295, mul: 4294967296, div: 4294967296, mod: 0},
   251  	utd64{a: 4294967296, b: 4294967296, add: 8589934592, sub: 0, mul: 0, div: 1, mod: 0},
   252  	utd64{a: 4294967296, b: 18446744073709551615, add: 4294967295, sub: 4294967297, mul: 18446744069414584320, div: 0, mod: 4294967296},
   253  	utd64{a: 18446744073709551615, b: 0, add: 18446744073709551615, sub: 18446744073709551615, mul: 0},
   254  	utd64{a: 18446744073709551615, b: 1, add: 0, sub: 18446744073709551614, mul: 18446744073709551615, div: 18446744073709551615, mod: 0},
   255  	utd64{a: 18446744073709551615, b: 4294967296, add: 4294967295, sub: 18446744069414584319, mul: 18446744069414584320, div: 4294967295, mod: 4294967295},
   256  	utd64{a: 18446744073709551615, b: 18446744073709551615, add: 18446744073709551614, sub: 0, mul: 1, div: 1, mod: 0},
   257  }
   258  var int64_data []itd64 = []itd64{itd64{a: -9223372036854775808, b: -9223372036854775808, add: 0, sub: 0, mul: 0, div: 1, mod: 0},
   259  	itd64{a: -9223372036854775808, b: -9223372036854775807, add: 1, sub: -1, mul: -9223372036854775808, div: 1, mod: -1},
   260  	itd64{a: -9223372036854775808, b: -4294967296, add: 9223372032559808512, sub: -9223372032559808512, mul: 0, div: 2147483648, mod: 0},
   261  	itd64{a: -9223372036854775808, b: -1, add: 9223372036854775807, sub: -9223372036854775807, mul: -9223372036854775808, div: -9223372036854775808, mod: 0},
   262  	itd64{a: -9223372036854775808, b: 0, add: -9223372036854775808, sub: -9223372036854775808, mul: 0},
   263  	itd64{a: -9223372036854775808, b: 1, add: -9223372036854775807, sub: 9223372036854775807, mul: -9223372036854775808, div: -9223372036854775808, mod: 0},
   264  	itd64{a: -9223372036854775808, b: 4294967296, add: -9223372032559808512, sub: 9223372032559808512, mul: 0, div: -2147483648, mod: 0},
   265  	itd64{a: -9223372036854775808, b: 9223372036854775806, add: -2, sub: 2, mul: 0, div: -1, mod: -2},
   266  	itd64{a: -9223372036854775808, b: 9223372036854775807, add: -1, sub: 1, mul: -9223372036854775808, div: -1, mod: -1},
   267  	itd64{a: -9223372036854775807, b: -9223372036854775808, add: 1, sub: 1, mul: -9223372036854775808, div: 0, mod: -9223372036854775807},
   268  	itd64{a: -9223372036854775807, b: -9223372036854775807, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   269  	itd64{a: -9223372036854775807, b: -4294967296, add: 9223372032559808513, sub: -9223372032559808511, mul: -4294967296, div: 2147483647, mod: -4294967295},
   270  	itd64{a: -9223372036854775807, b: -1, add: -9223372036854775808, sub: -9223372036854775806, mul: 9223372036854775807, div: 9223372036854775807, mod: 0},
   271  	itd64{a: -9223372036854775807, b: 0, add: -9223372036854775807, sub: -9223372036854775807, mul: 0},
   272  	itd64{a: -9223372036854775807, b: 1, add: -9223372036854775806, sub: -9223372036854775808, mul: -9223372036854775807, div: -9223372036854775807, mod: 0},
   273  	itd64{a: -9223372036854775807, b: 4294967296, add: -9223372032559808511, sub: 9223372032559808513, mul: 4294967296, div: -2147483647, mod: -4294967295},
   274  	itd64{a: -9223372036854775807, b: 9223372036854775806, add: -1, sub: 3, mul: 9223372036854775806, div: -1, mod: -1},
   275  	itd64{a: -9223372036854775807, b: 9223372036854775807, add: 0, sub: 2, mul: -1, div: -1, mod: 0},
   276  	itd64{a: -4294967296, b: -9223372036854775808, add: 9223372032559808512, sub: 9223372032559808512, mul: 0, div: 0, mod: -4294967296},
   277  	itd64{a: -4294967296, b: -9223372036854775807, add: 9223372032559808513, sub: 9223372032559808511, mul: -4294967296, div: 0, mod: -4294967296},
   278  	itd64{a: -4294967296, b: -4294967296, add: -8589934592, sub: 0, mul: 0, div: 1, mod: 0},
   279  	itd64{a: -4294967296, b: -1, add: -4294967297, sub: -4294967295, mul: 4294967296, div: 4294967296, mod: 0},
   280  	itd64{a: -4294967296, b: 0, add: -4294967296, sub: -4294967296, mul: 0},
   281  	itd64{a: -4294967296, b: 1, add: -4294967295, sub: -4294967297, mul: -4294967296, div: -4294967296, mod: 0},
   282  	itd64{a: -4294967296, b: 4294967296, add: 0, sub: -8589934592, mul: 0, div: -1, mod: 0},
   283  	itd64{a: -4294967296, b: 9223372036854775806, add: 9223372032559808510, sub: 9223372032559808514, mul: 8589934592, div: 0, mod: -4294967296},
   284  	itd64{a: -4294967296, b: 9223372036854775807, add: 9223372032559808511, sub: 9223372032559808513, mul: 4294967296, div: 0, mod: -4294967296},
   285  	itd64{a: -1, b: -9223372036854775808, add: 9223372036854775807, sub: 9223372036854775807, mul: -9223372036854775808, div: 0, mod: -1},
   286  	itd64{a: -1, b: -9223372036854775807, add: -9223372036854775808, sub: 9223372036854775806, mul: 9223372036854775807, div: 0, mod: -1},
   287  	itd64{a: -1, b: -4294967296, add: -4294967297, sub: 4294967295, mul: 4294967296, div: 0, mod: -1},
   288  	itd64{a: -1, b: -1, add: -2, sub: 0, mul: 1, div: 1, mod: 0},
   289  	itd64{a: -1, b: 0, add: -1, sub: -1, mul: 0},
   290  	itd64{a: -1, b: 1, add: 0, sub: -2, mul: -1, div: -1, mod: 0},
   291  	itd64{a: -1, b: 4294967296, add: 4294967295, sub: -4294967297, mul: -4294967296, div: 0, mod: -1},
   292  	itd64{a: -1, b: 9223372036854775806, add: 9223372036854775805, sub: -9223372036854775807, mul: -9223372036854775806, div: 0, mod: -1},
   293  	itd64{a: -1, b: 9223372036854775807, add: 9223372036854775806, sub: -9223372036854775808, mul: -9223372036854775807, div: 0, mod: -1},
   294  	itd64{a: 0, b: -9223372036854775808, add: -9223372036854775808, sub: -9223372036854775808, mul: 0, div: 0, mod: 0},
   295  	itd64{a: 0, b: -9223372036854775807, add: -9223372036854775807, sub: 9223372036854775807, mul: 0, div: 0, mod: 0},
   296  	itd64{a: 0, b: -4294967296, add: -4294967296, sub: 4294967296, mul: 0, div: 0, mod: 0},
   297  	itd64{a: 0, b: -1, add: -1, sub: 1, mul: 0, div: 0, mod: 0},
   298  	itd64{a: 0, b: 0, add: 0, sub: 0, mul: 0},
   299  	itd64{a: 0, b: 1, add: 1, sub: -1, mul: 0, div: 0, mod: 0},
   300  	itd64{a: 0, b: 4294967296, add: 4294967296, sub: -4294967296, mul: 0, div: 0, mod: 0},
   301  	itd64{a: 0, b: 9223372036854775806, add: 9223372036854775806, sub: -9223372036854775806, mul: 0, div: 0, mod: 0},
   302  	itd64{a: 0, b: 9223372036854775807, add: 9223372036854775807, sub: -9223372036854775807, mul: 0, div: 0, mod: 0},
   303  	itd64{a: 1, b: -9223372036854775808, add: -9223372036854775807, sub: -9223372036854775807, mul: -9223372036854775808, div: 0, mod: 1},
   304  	itd64{a: 1, b: -9223372036854775807, add: -9223372036854775806, sub: -9223372036854775808, mul: -9223372036854775807, div: 0, mod: 1},
   305  	itd64{a: 1, b: -4294967296, add: -4294967295, sub: 4294967297, mul: -4294967296, div: 0, mod: 1},
   306  	itd64{a: 1, b: -1, add: 0, sub: 2, mul: -1, div: -1, mod: 0},
   307  	itd64{a: 1, b: 0, add: 1, sub: 1, mul: 0},
   308  	itd64{a: 1, b: 1, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   309  	itd64{a: 1, b: 4294967296, add: 4294967297, sub: -4294967295, mul: 4294967296, div: 0, mod: 1},
   310  	itd64{a: 1, b: 9223372036854775806, add: 9223372036854775807, sub: -9223372036854775805, mul: 9223372036854775806, div: 0, mod: 1},
   311  	itd64{a: 1, b: 9223372036854775807, add: -9223372036854775808, sub: -9223372036854775806, mul: 9223372036854775807, div: 0, mod: 1},
   312  	itd64{a: 4294967296, b: -9223372036854775808, add: -9223372032559808512, sub: -9223372032559808512, mul: 0, div: 0, mod: 4294967296},
   313  	itd64{a: 4294967296, b: -9223372036854775807, add: -9223372032559808511, sub: -9223372032559808513, mul: 4294967296, div: 0, mod: 4294967296},
   314  	itd64{a: 4294967296, b: -4294967296, add: 0, sub: 8589934592, mul: 0, div: -1, mod: 0},
   315  	itd64{a: 4294967296, b: -1, add: 4294967295, sub: 4294967297, mul: -4294967296, div: -4294967296, mod: 0},
   316  	itd64{a: 4294967296, b: 0, add: 4294967296, sub: 4294967296, mul: 0},
   317  	itd64{a: 4294967296, b: 1, add: 4294967297, sub: 4294967295, mul: 4294967296, div: 4294967296, mod: 0},
   318  	itd64{a: 4294967296, b: 4294967296, add: 8589934592, sub: 0, mul: 0, div: 1, mod: 0},
   319  	itd64{a: 4294967296, b: 9223372036854775806, add: -9223372032559808514, sub: -9223372032559808510, mul: -8589934592, div: 0, mod: 4294967296},
   320  	itd64{a: 4294967296, b: 9223372036854775807, add: -9223372032559808513, sub: -9223372032559808511, mul: -4294967296, div: 0, mod: 4294967296},
   321  	itd64{a: 9223372036854775806, b: -9223372036854775808, add: -2, sub: -2, mul: 0, div: 0, mod: 9223372036854775806},
   322  	itd64{a: 9223372036854775806, b: -9223372036854775807, add: -1, sub: -3, mul: 9223372036854775806, div: 0, mod: 9223372036854775806},
   323  	itd64{a: 9223372036854775806, b: -4294967296, add: 9223372032559808510, sub: -9223372032559808514, mul: 8589934592, div: -2147483647, mod: 4294967294},
   324  	itd64{a: 9223372036854775806, b: -1, add: 9223372036854775805, sub: 9223372036854775807, mul: -9223372036854775806, div: -9223372036854775806, mod: 0},
   325  	itd64{a: 9223372036854775806, b: 0, add: 9223372036854775806, sub: 9223372036854775806, mul: 0},
   326  	itd64{a: 9223372036854775806, b: 1, add: 9223372036854775807, sub: 9223372036854775805, mul: 9223372036854775806, div: 9223372036854775806, mod: 0},
   327  	itd64{a: 9223372036854775806, b: 4294967296, add: -9223372032559808514, sub: 9223372032559808510, mul: -8589934592, div: 2147483647, mod: 4294967294},
   328  	itd64{a: 9223372036854775806, b: 9223372036854775806, add: -4, sub: 0, mul: 4, div: 1, mod: 0},
   329  	itd64{a: 9223372036854775806, b: 9223372036854775807, add: -3, sub: -1, mul: -9223372036854775806, div: 0, mod: 9223372036854775806},
   330  	itd64{a: 9223372036854775807, b: -9223372036854775808, add: -1, sub: -1, mul: -9223372036854775808, div: 0, mod: 9223372036854775807},
   331  	itd64{a: 9223372036854775807, b: -9223372036854775807, add: 0, sub: -2, mul: -1, div: -1, mod: 0},
   332  	itd64{a: 9223372036854775807, b: -4294967296, add: 9223372032559808511, sub: -9223372032559808513, mul: 4294967296, div: -2147483647, mod: 4294967295},
   333  	itd64{a: 9223372036854775807, b: -1, add: 9223372036854775806, sub: -9223372036854775808, mul: -9223372036854775807, div: -9223372036854775807, mod: 0},
   334  	itd64{a: 9223372036854775807, b: 0, add: 9223372036854775807, sub: 9223372036854775807, mul: 0},
   335  	itd64{a: 9223372036854775807, b: 1, add: -9223372036854775808, sub: 9223372036854775806, mul: 9223372036854775807, div: 9223372036854775807, mod: 0},
   336  	itd64{a: 9223372036854775807, b: 4294967296, add: -9223372032559808513, sub: 9223372032559808511, mul: -4294967296, div: 2147483647, mod: 4294967295},
   337  	itd64{a: 9223372036854775807, b: 9223372036854775806, add: -3, sub: 1, mul: -9223372036854775806, div: 1, mod: 1},
   338  	itd64{a: 9223372036854775807, b: 9223372036854775807, add: -2, sub: 0, mul: 1, div: 1, mod: 0},
   339  }
   340  var uint32_data []utd32 = []utd32{utd32{a: 0, b: 0, add: 0, sub: 0, mul: 0},
   341  	utd32{a: 0, b: 1, add: 1, sub: 4294967295, mul: 0, div: 0, mod: 0},
   342  	utd32{a: 0, b: 4294967295, add: 4294967295, sub: 1, mul: 0, div: 0, mod: 0},
   343  	utd32{a: 1, b: 0, add: 1, sub: 1, mul: 0},
   344  	utd32{a: 1, b: 1, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   345  	utd32{a: 1, b: 4294967295, add: 0, sub: 2, mul: 4294967295, div: 0, mod: 1},
   346  	utd32{a: 4294967295, b: 0, add: 4294967295, sub: 4294967295, mul: 0},
   347  	utd32{a: 4294967295, b: 1, add: 0, sub: 4294967294, mul: 4294967295, div: 4294967295, mod: 0},
   348  	utd32{a: 4294967295, b: 4294967295, add: 4294967294, sub: 0, mul: 1, div: 1, mod: 0},
   349  }
   350  var int32_data []itd32 = []itd32{itd32{a: -2147483648, b: -2147483648, add: 0, sub: 0, mul: 0, div: 1, mod: 0},
   351  	itd32{a: -2147483648, b: -2147483647, add: 1, sub: -1, mul: -2147483648, div: 1, mod: -1},
   352  	itd32{a: -2147483648, b: -1, add: 2147483647, sub: -2147483647, mul: -2147483648, div: -2147483648, mod: 0},
   353  	itd32{a: -2147483648, b: 0, add: -2147483648, sub: -2147483648, mul: 0},
   354  	itd32{a: -2147483648, b: 1, add: -2147483647, sub: 2147483647, mul: -2147483648, div: -2147483648, mod: 0},
   355  	itd32{a: -2147483648, b: 2147483647, add: -1, sub: 1, mul: -2147483648, div: -1, mod: -1},
   356  	itd32{a: -2147483647, b: -2147483648, add: 1, sub: 1, mul: -2147483648, div: 0, mod: -2147483647},
   357  	itd32{a: -2147483647, b: -2147483647, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   358  	itd32{a: -2147483647, b: -1, add: -2147483648, sub: -2147483646, mul: 2147483647, div: 2147483647, mod: 0},
   359  	itd32{a: -2147483647, b: 0, add: -2147483647, sub: -2147483647, mul: 0},
   360  	itd32{a: -2147483647, b: 1, add: -2147483646, sub: -2147483648, mul: -2147483647, div: -2147483647, mod: 0},
   361  	itd32{a: -2147483647, b: 2147483647, add: 0, sub: 2, mul: -1, div: -1, mod: 0},
   362  	itd32{a: -1, b: -2147483648, add: 2147483647, sub: 2147483647, mul: -2147483648, div: 0, mod: -1},
   363  	itd32{a: -1, b: -2147483647, add: -2147483648, sub: 2147483646, mul: 2147483647, div: 0, mod: -1},
   364  	itd32{a: -1, b: -1, add: -2, sub: 0, mul: 1, div: 1, mod: 0},
   365  	itd32{a: -1, b: 0, add: -1, sub: -1, mul: 0},
   366  	itd32{a: -1, b: 1, add: 0, sub: -2, mul: -1, div: -1, mod: 0},
   367  	itd32{a: -1, b: 2147483647, add: 2147483646, sub: -2147483648, mul: -2147483647, div: 0, mod: -1},
   368  	itd32{a: 0, b: -2147483648, add: -2147483648, sub: -2147483648, mul: 0, div: 0, mod: 0},
   369  	itd32{a: 0, b: -2147483647, add: -2147483647, sub: 2147483647, mul: 0, div: 0, mod: 0},
   370  	itd32{a: 0, b: -1, add: -1, sub: 1, mul: 0, div: 0, mod: 0},
   371  	itd32{a: 0, b: 0, add: 0, sub: 0, mul: 0},
   372  	itd32{a: 0, b: 1, add: 1, sub: -1, mul: 0, div: 0, mod: 0},
   373  	itd32{a: 0, b: 2147483647, add: 2147483647, sub: -2147483647, mul: 0, div: 0, mod: 0},
   374  	itd32{a: 1, b: -2147483648, add: -2147483647, sub: -2147483647, mul: -2147483648, div: 0, mod: 1},
   375  	itd32{a: 1, b: -2147483647, add: -2147483646, sub: -2147483648, mul: -2147483647, div: 0, mod: 1},
   376  	itd32{a: 1, b: -1, add: 0, sub: 2, mul: -1, div: -1, mod: 0},
   377  	itd32{a: 1, b: 0, add: 1, sub: 1, mul: 0},
   378  	itd32{a: 1, b: 1, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   379  	itd32{a: 1, b: 2147483647, add: -2147483648, sub: -2147483646, mul: 2147483647, div: 0, mod: 1},
   380  	itd32{a: 2147483647, b: -2147483648, add: -1, sub: -1, mul: -2147483648, div: 0, mod: 2147483647},
   381  	itd32{a: 2147483647, b: -2147483647, add: 0, sub: -2, mul: -1, div: -1, mod: 0},
   382  	itd32{a: 2147483647, b: -1, add: 2147483646, sub: -2147483648, mul: -2147483647, div: -2147483647, mod: 0},
   383  	itd32{a: 2147483647, b: 0, add: 2147483647, sub: 2147483647, mul: 0},
   384  	itd32{a: 2147483647, b: 1, add: -2147483648, sub: 2147483646, mul: 2147483647, div: 2147483647, mod: 0},
   385  	itd32{a: 2147483647, b: 2147483647, add: -2, sub: 0, mul: 1, div: 1, mod: 0},
   386  }
   387  var uint16_data []utd16 = []utd16{utd16{a: 0, b: 0, add: 0, sub: 0, mul: 0},
   388  	utd16{a: 0, b: 1, add: 1, sub: 65535, mul: 0, div: 0, mod: 0},
   389  	utd16{a: 0, b: 65535, add: 65535, sub: 1, mul: 0, div: 0, mod: 0},
   390  	utd16{a: 1, b: 0, add: 1, sub: 1, mul: 0},
   391  	utd16{a: 1, b: 1, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   392  	utd16{a: 1, b: 65535, add: 0, sub: 2, mul: 65535, div: 0, mod: 1},
   393  	utd16{a: 65535, b: 0, add: 65535, sub: 65535, mul: 0},
   394  	utd16{a: 65535, b: 1, add: 0, sub: 65534, mul: 65535, div: 65535, mod: 0},
   395  	utd16{a: 65535, b: 65535, add: 65534, sub: 0, mul: 1, div: 1, mod: 0},
   396  }
   397  var int16_data []itd16 = []itd16{itd16{a: -32768, b: -32768, add: 0, sub: 0, mul: 0, div: 1, mod: 0},
   398  	itd16{a: -32768, b: -32767, add: 1, sub: -1, mul: -32768, div: 1, mod: -1},
   399  	itd16{a: -32768, b: -1, add: 32767, sub: -32767, mul: -32768, div: -32768, mod: 0},
   400  	itd16{a: -32768, b: 0, add: -32768, sub: -32768, mul: 0},
   401  	itd16{a: -32768, b: 1, add: -32767, sub: 32767, mul: -32768, div: -32768, mod: 0},
   402  	itd16{a: -32768, b: 32766, add: -2, sub: 2, mul: 0, div: -1, mod: -2},
   403  	itd16{a: -32768, b: 32767, add: -1, sub: 1, mul: -32768, div: -1, mod: -1},
   404  	itd16{a: -32767, b: -32768, add: 1, sub: 1, mul: -32768, div: 0, mod: -32767},
   405  	itd16{a: -32767, b: -32767, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   406  	itd16{a: -32767, b: -1, add: -32768, sub: -32766, mul: 32767, div: 32767, mod: 0},
   407  	itd16{a: -32767, b: 0, add: -32767, sub: -32767, mul: 0},
   408  	itd16{a: -32767, b: 1, add: -32766, sub: -32768, mul: -32767, div: -32767, mod: 0},
   409  	itd16{a: -32767, b: 32766, add: -1, sub: 3, mul: 32766, div: -1, mod: -1},
   410  	itd16{a: -32767, b: 32767, add: 0, sub: 2, mul: -1, div: -1, mod: 0},
   411  	itd16{a: -1, b: -32768, add: 32767, sub: 32767, mul: -32768, div: 0, mod: -1},
   412  	itd16{a: -1, b: -32767, add: -32768, sub: 32766, mul: 32767, div: 0, mod: -1},
   413  	itd16{a: -1, b: -1, add: -2, sub: 0, mul: 1, div: 1, mod: 0},
   414  	itd16{a: -1, b: 0, add: -1, sub: -1, mul: 0},
   415  	itd16{a: -1, b: 1, add: 0, sub: -2, mul: -1, div: -1, mod: 0},
   416  	itd16{a: -1, b: 32766, add: 32765, sub: -32767, mul: -32766, div: 0, mod: -1},
   417  	itd16{a: -1, b: 32767, add: 32766, sub: -32768, mul: -32767, div: 0, mod: -1},
   418  	itd16{a: 0, b: -32768, add: -32768, sub: -32768, mul: 0, div: 0, mod: 0},
   419  	itd16{a: 0, b: -32767, add: -32767, sub: 32767, mul: 0, div: 0, mod: 0},
   420  	itd16{a: 0, b: -1, add: -1, sub: 1, mul: 0, div: 0, mod: 0},
   421  	itd16{a: 0, b: 0, add: 0, sub: 0, mul: 0},
   422  	itd16{a: 0, b: 1, add: 1, sub: -1, mul: 0, div: 0, mod: 0},
   423  	itd16{a: 0, b: 32766, add: 32766, sub: -32766, mul: 0, div: 0, mod: 0},
   424  	itd16{a: 0, b: 32767, add: 32767, sub: -32767, mul: 0, div: 0, mod: 0},
   425  	itd16{a: 1, b: -32768, add: -32767, sub: -32767, mul: -32768, div: 0, mod: 1},
   426  	itd16{a: 1, b: -32767, add: -32766, sub: -32768, mul: -32767, div: 0, mod: 1},
   427  	itd16{a: 1, b: -1, add: 0, sub: 2, mul: -1, div: -1, mod: 0},
   428  	itd16{a: 1, b: 0, add: 1, sub: 1, mul: 0},
   429  	itd16{a: 1, b: 1, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   430  	itd16{a: 1, b: 32766, add: 32767, sub: -32765, mul: 32766, div: 0, mod: 1},
   431  	itd16{a: 1, b: 32767, add: -32768, sub: -32766, mul: 32767, div: 0, mod: 1},
   432  	itd16{a: 32766, b: -32768, add: -2, sub: -2, mul: 0, div: 0, mod: 32766},
   433  	itd16{a: 32766, b: -32767, add: -1, sub: -3, mul: 32766, div: 0, mod: 32766},
   434  	itd16{a: 32766, b: -1, add: 32765, sub: 32767, mul: -32766, div: -32766, mod: 0},
   435  	itd16{a: 32766, b: 0, add: 32766, sub: 32766, mul: 0},
   436  	itd16{a: 32766, b: 1, add: 32767, sub: 32765, mul: 32766, div: 32766, mod: 0},
   437  	itd16{a: 32766, b: 32766, add: -4, sub: 0, mul: 4, div: 1, mod: 0},
   438  	itd16{a: 32766, b: 32767, add: -3, sub: -1, mul: -32766, div: 0, mod: 32766},
   439  	itd16{a: 32767, b: -32768, add: -1, sub: -1, mul: -32768, div: 0, mod: 32767},
   440  	itd16{a: 32767, b: -32767, add: 0, sub: -2, mul: -1, div: -1, mod: 0},
   441  	itd16{a: 32767, b: -1, add: 32766, sub: -32768, mul: -32767, div: -32767, mod: 0},
   442  	itd16{a: 32767, b: 0, add: 32767, sub: 32767, mul: 0},
   443  	itd16{a: 32767, b: 1, add: -32768, sub: 32766, mul: 32767, div: 32767, mod: 0},
   444  	itd16{a: 32767, b: 32766, add: -3, sub: 1, mul: -32766, div: 1, mod: 1},
   445  	itd16{a: 32767, b: 32767, add: -2, sub: 0, mul: 1, div: 1, mod: 0},
   446  }
   447  var uint8_data []utd8 = []utd8{utd8{a: 0, b: 0, add: 0, sub: 0, mul: 0},
   448  	utd8{a: 0, b: 1, add: 1, sub: 255, mul: 0, div: 0, mod: 0},
   449  	utd8{a: 0, b: 255, add: 255, sub: 1, mul: 0, div: 0, mod: 0},
   450  	utd8{a: 1, b: 0, add: 1, sub: 1, mul: 0},
   451  	utd8{a: 1, b: 1, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   452  	utd8{a: 1, b: 255, add: 0, sub: 2, mul: 255, div: 0, mod: 1},
   453  	utd8{a: 255, b: 0, add: 255, sub: 255, mul: 0},
   454  	utd8{a: 255, b: 1, add: 0, sub: 254, mul: 255, div: 255, mod: 0},
   455  	utd8{a: 255, b: 255, add: 254, sub: 0, mul: 1, div: 1, mod: 0},
   456  }
   457  var int8_data []itd8 = []itd8{itd8{a: -128, b: -128, add: 0, sub: 0, mul: 0, div: 1, mod: 0},
   458  	itd8{a: -128, b: -127, add: 1, sub: -1, mul: -128, div: 1, mod: -1},
   459  	itd8{a: -128, b: -1, add: 127, sub: -127, mul: -128, div: -128, mod: 0},
   460  	itd8{a: -128, b: 0, add: -128, sub: -128, mul: 0},
   461  	itd8{a: -128, b: 1, add: -127, sub: 127, mul: -128, div: -128, mod: 0},
   462  	itd8{a: -128, b: 126, add: -2, sub: 2, mul: 0, div: -1, mod: -2},
   463  	itd8{a: -128, b: 127, add: -1, sub: 1, mul: -128, div: -1, mod: -1},
   464  	itd8{a: -127, b: -128, add: 1, sub: 1, mul: -128, div: 0, mod: -127},
   465  	itd8{a: -127, b: -127, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   466  	itd8{a: -127, b: -1, add: -128, sub: -126, mul: 127, div: 127, mod: 0},
   467  	itd8{a: -127, b: 0, add: -127, sub: -127, mul: 0},
   468  	itd8{a: -127, b: 1, add: -126, sub: -128, mul: -127, div: -127, mod: 0},
   469  	itd8{a: -127, b: 126, add: -1, sub: 3, mul: 126, div: -1, mod: -1},
   470  	itd8{a: -127, b: 127, add: 0, sub: 2, mul: -1, div: -1, mod: 0},
   471  	itd8{a: -1, b: -128, add: 127, sub: 127, mul: -128, div: 0, mod: -1},
   472  	itd8{a: -1, b: -127, add: -128, sub: 126, mul: 127, div: 0, mod: -1},
   473  	itd8{a: -1, b: -1, add: -2, sub: 0, mul: 1, div: 1, mod: 0},
   474  	itd8{a: -1, b: 0, add: -1, sub: -1, mul: 0},
   475  	itd8{a: -1, b: 1, add: 0, sub: -2, mul: -1, div: -1, mod: 0},
   476  	itd8{a: -1, b: 126, add: 125, sub: -127, mul: -126, div: 0, mod: -1},
   477  	itd8{a: -1, b: 127, add: 126, sub: -128, mul: -127, div: 0, mod: -1},
   478  	itd8{a: 0, b: -128, add: -128, sub: -128, mul: 0, div: 0, mod: 0},
   479  	itd8{a: 0, b: -127, add: -127, sub: 127, mul: 0, div: 0, mod: 0},
   480  	itd8{a: 0, b: -1, add: -1, sub: 1, mul: 0, div: 0, mod: 0},
   481  	itd8{a: 0, b: 0, add: 0, sub: 0, mul: 0},
   482  	itd8{a: 0, b: 1, add: 1, sub: -1, mul: 0, div: 0, mod: 0},
   483  	itd8{a: 0, b: 126, add: 126, sub: -126, mul: 0, div: 0, mod: 0},
   484  	itd8{a: 0, b: 127, add: 127, sub: -127, mul: 0, div: 0, mod: 0},
   485  	itd8{a: 1, b: -128, add: -127, sub: -127, mul: -128, div: 0, mod: 1},
   486  	itd8{a: 1, b: -127, add: -126, sub: -128, mul: -127, div: 0, mod: 1},
   487  	itd8{a: 1, b: -1, add: 0, sub: 2, mul: -1, div: -1, mod: 0},
   488  	itd8{a: 1, b: 0, add: 1, sub: 1, mul: 0},
   489  	itd8{a: 1, b: 1, add: 2, sub: 0, mul: 1, div: 1, mod: 0},
   490  	itd8{a: 1, b: 126, add: 127, sub: -125, mul: 126, div: 0, mod: 1},
   491  	itd8{a: 1, b: 127, add: -128, sub: -126, mul: 127, div: 0, mod: 1},
   492  	itd8{a: 126, b: -128, add: -2, sub: -2, mul: 0, div: 0, mod: 126},
   493  	itd8{a: 126, b: -127, add: -1, sub: -3, mul: 126, div: 0, mod: 126},
   494  	itd8{a: 126, b: -1, add: 125, sub: 127, mul: -126, div: -126, mod: 0},
   495  	itd8{a: 126, b: 0, add: 126, sub: 126, mul: 0},
   496  	itd8{a: 126, b: 1, add: 127, sub: 125, mul: 126, div: 126, mod: 0},
   497  	itd8{a: 126, b: 126, add: -4, sub: 0, mul: 4, div: 1, mod: 0},
   498  	itd8{a: 126, b: 127, add: -3, sub: -1, mul: -126, div: 0, mod: 126},
   499  	itd8{a: 127, b: -128, add: -1, sub: -1, mul: -128, div: 0, mod: 127},
   500  	itd8{a: 127, b: -127, add: 0, sub: -2, mul: -1, div: -1, mod: 0},
   501  	itd8{a: 127, b: -1, add: 126, sub: -128, mul: -127, div: -127, mod: 0},
   502  	itd8{a: 127, b: 0, add: 127, sub: 127, mul: 0},
   503  	itd8{a: 127, b: 1, add: -128, sub: 126, mul: 127, div: 127, mod: 0},
   504  	itd8{a: 127, b: 126, add: -3, sub: 1, mul: -126, div: 1, mod: 1},
   505  	itd8{a: 127, b: 127, add: -2, sub: 0, mul: 1, div: 1, mod: 0},
   506  }
   507  var failed bool
   508  
   509  func main() {
   510  
   511  	for _, v := range uint64_data {
   512  		if got := add_uint64_ssa(v.a, v.b); got != v.add {
   513  			fmt.Printf("add_uint64 %d+%d = %d, wanted %d\n", v.a, v.b, got, v.add)
   514  			failed = true
   515  		}
   516  		if got := sub_uint64_ssa(v.a, v.b); got != v.sub {
   517  			fmt.Printf("sub_uint64 %d-%d = %d, wanted %d\n", v.a, v.b, got, v.sub)
   518  			failed = true
   519  		}
   520  		if v.b != 0 {
   521  			if got := div_uint64_ssa(v.a, v.b); got != v.div {
   522  				fmt.Printf("div_uint64 %d/%d = %d, wanted %d\n", v.a, v.b, got, v.div)
   523  				failed = true
   524  			}
   525  
   526  		}
   527  		if v.b != 0 {
   528  			if got := mod_uint64_ssa(v.a, v.b); got != v.mod {
   529  				fmt.Printf("mod_uint64 %d%%%d = %d, wanted %d\n", v.a, v.b, got, v.mod)
   530  				failed = true
   531  			}
   532  
   533  		}
   534  		if got := mul_uint64_ssa(v.a, v.b); got != v.mul {
   535  			fmt.Printf("mul_uint64 %d*%d = %d, wanted %d\n", v.a, v.b, got, v.mul)
   536  			failed = true
   537  		}
   538  	}
   539  	for _, v := range int64_data {
   540  		if got := add_int64_ssa(v.a, v.b); got != v.add {
   541  			fmt.Printf("add_int64 %d+%d = %d, wanted %d\n", v.a, v.b, got, v.add)
   542  			failed = true
   543  		}
   544  		if got := sub_int64_ssa(v.a, v.b); got != v.sub {
   545  			fmt.Printf("sub_int64 %d-%d = %d, wanted %d\n", v.a, v.b, got, v.sub)
   546  			failed = true
   547  		}
   548  		if v.b != 0 {
   549  			if got := div_int64_ssa(v.a, v.b); got != v.div {
   550  				fmt.Printf("div_int64 %d/%d = %d, wanted %d\n", v.a, v.b, got, v.div)
   551  				failed = true
   552  			}
   553  
   554  		}
   555  		if v.b != 0 {
   556  			if got := mod_int64_ssa(v.a, v.b); got != v.mod {
   557  				fmt.Printf("mod_int64 %d%%%d = %d, wanted %d\n", v.a, v.b, got, v.mod)
   558  				failed = true
   559  			}
   560  
   561  		}
   562  		if got := mul_int64_ssa(v.a, v.b); got != v.mul {
   563  			fmt.Printf("mul_int64 %d*%d = %d, wanted %d\n", v.a, v.b, got, v.mul)
   564  			failed = true
   565  		}
   566  	}
   567  	for _, v := range uint32_data {
   568  		if got := add_uint32_ssa(v.a, v.b); got != v.add {
   569  			fmt.Printf("add_uint32 %d+%d = %d, wanted %d\n", v.a, v.b, got, v.add)
   570  			failed = true
   571  		}
   572  		if got := sub_uint32_ssa(v.a, v.b); got != v.sub {
   573  			fmt.Printf("sub_uint32 %d-%d = %d, wanted %d\n", v.a, v.b, got, v.sub)
   574  			failed = true
   575  		}
   576  		if v.b != 0 {
   577  			if got := div_uint32_ssa(v.a, v.b); got != v.div {
   578  				fmt.Printf("div_uint32 %d/%d = %d, wanted %d\n", v.a, v.b, got, v.div)
   579  				failed = true
   580  			}
   581  
   582  		}
   583  		if v.b != 0 {
   584  			if got := mod_uint32_ssa(v.a, v.b); got != v.mod {
   585  				fmt.Printf("mod_uint32 %d%%%d = %d, wanted %d\n", v.a, v.b, got, v.mod)
   586  				failed = true
   587  			}
   588  
   589  		}
   590  		if got := mul_uint32_ssa(v.a, v.b); got != v.mul {
   591  			fmt.Printf("mul_uint32 %d*%d = %d, wanted %d\n", v.a, v.b, got, v.mul)
   592  			failed = true
   593  		}
   594  	}
   595  	for _, v := range int32_data {
   596  		if got := add_int32_ssa(v.a, v.b); got != v.add {
   597  			fmt.Printf("add_int32 %d+%d = %d, wanted %d\n", v.a, v.b, got, v.add)
   598  			failed = true
   599  		}
   600  		if got := sub_int32_ssa(v.a, v.b); got != v.sub {
   601  			fmt.Printf("sub_int32 %d-%d = %d, wanted %d\n", v.a, v.b, got, v.sub)
   602  			failed = true
   603  		}
   604  		if v.b != 0 {
   605  			if got := div_int32_ssa(v.a, v.b); got != v.div {
   606  				fmt.Printf("div_int32 %d/%d = %d, wanted %d\n", v.a, v.b, got, v.div)
   607  				failed = true
   608  			}
   609  
   610  		}
   611  		if v.b != 0 {
   612  			if got := mod_int32_ssa(v.a, v.b); got != v.mod {
   613  				fmt.Printf("mod_int32 %d%%%d = %d, wanted %d\n", v.a, v.b, got, v.mod)
   614  				failed = true
   615  			}
   616  
   617  		}
   618  		if got := mul_int32_ssa(v.a, v.b); got != v.mul {
   619  			fmt.Printf("mul_int32 %d*%d = %d, wanted %d\n", v.a, v.b, got, v.mul)
   620  			failed = true
   621  		}
   622  	}
   623  	for _, v := range uint16_data {
   624  		if got := add_uint16_ssa(v.a, v.b); got != v.add {
   625  			fmt.Printf("add_uint16 %d+%d = %d, wanted %d\n", v.a, v.b, got, v.add)
   626  			failed = true
   627  		}
   628  		if got := sub_uint16_ssa(v.a, v.b); got != v.sub {
   629  			fmt.Printf("sub_uint16 %d-%d = %d, wanted %d\n", v.a, v.b, got, v.sub)
   630  			failed = true
   631  		}
   632  		if v.b != 0 {
   633  			if got := div_uint16_ssa(v.a, v.b); got != v.div {
   634  				fmt.Printf("div_uint16 %d/%d = %d, wanted %d\n", v.a, v.b, got, v.div)
   635  				failed = true
   636  			}
   637  
   638  		}
   639  		if v.b != 0 {
   640  			if got := mod_uint16_ssa(v.a, v.b); got != v.mod {
   641  				fmt.Printf("mod_uint16 %d%%%d = %d, wanted %d\n", v.a, v.b, got, v.mod)
   642  				failed = true
   643  			}
   644  
   645  		}
   646  		if got := mul_uint16_ssa(v.a, v.b); got != v.mul {
   647  			fmt.Printf("mul_uint16 %d*%d = %d, wanted %d\n", v.a, v.b, got, v.mul)
   648  			failed = true
   649  		}
   650  	}
   651  	for _, v := range int16_data {
   652  		if got := add_int16_ssa(v.a, v.b); got != v.add {
   653  			fmt.Printf("add_int16 %d+%d = %d, wanted %d\n", v.a, v.b, got, v.add)
   654  			failed = true
   655  		}
   656  		if got := sub_int16_ssa(v.a, v.b); got != v.sub {
   657  			fmt.Printf("sub_int16 %d-%d = %d, wanted %d\n", v.a, v.b, got, v.sub)
   658  			failed = true
   659  		}
   660  		if v.b != 0 {
   661  			if got := div_int16_ssa(v.a, v.b); got != v.div {
   662  				fmt.Printf("div_int16 %d/%d = %d, wanted %d\n", v.a, v.b, got, v.div)
   663  				failed = true
   664  			}
   665  
   666  		}
   667  		if v.b != 0 {
   668  			if got := mod_int16_ssa(v.a, v.b); got != v.mod {
   669  				fmt.Printf("mod_int16 %d%%%d = %d, wanted %d\n", v.a, v.b, got, v.mod)
   670  				failed = true
   671  			}
   672  
   673  		}
   674  		if got := mul_int16_ssa(v.a, v.b); got != v.mul {
   675  			fmt.Printf("mul_int16 %d*%d = %d, wanted %d\n", v.a, v.b, got, v.mul)
   676  			failed = true
   677  		}
   678  	}
   679  	for _, v := range uint8_data {
   680  		if got := add_uint8_ssa(v.a, v.b); got != v.add {
   681  			fmt.Printf("add_uint8 %d+%d = %d, wanted %d\n", v.a, v.b, got, v.add)
   682  			failed = true
   683  		}
   684  		if got := sub_uint8_ssa(v.a, v.b); got != v.sub {
   685  			fmt.Printf("sub_uint8 %d-%d = %d, wanted %d\n", v.a, v.b, got, v.sub)
   686  			failed = true
   687  		}
   688  		if v.b != 0 {
   689  			if got := div_uint8_ssa(v.a, v.b); got != v.div {
   690  				fmt.Printf("div_uint8 %d/%d = %d, wanted %d\n", v.a, v.b, got, v.div)
   691  				failed = true
   692  			}
   693  
   694  		}
   695  		if v.b != 0 {
   696  			if got := mod_uint8_ssa(v.a, v.b); got != v.mod {
   697  				fmt.Printf("mod_uint8 %d%%%d = %d, wanted %d\n", v.a, v.b, got, v.mod)
   698  				failed = true
   699  			}
   700  
   701  		}
   702  		if got := mul_uint8_ssa(v.a, v.b); got != v.mul {
   703  			fmt.Printf("mul_uint8 %d*%d = %d, wanted %d\n", v.a, v.b, got, v.mul)
   704  			failed = true
   705  		}
   706  	}
   707  	for _, v := range int8_data {
   708  		if got := add_int8_ssa(v.a, v.b); got != v.add {
   709  			fmt.Printf("add_int8 %d+%d = %d, wanted %d\n", v.a, v.b, got, v.add)
   710  			failed = true
   711  		}
   712  		if got := sub_int8_ssa(v.a, v.b); got != v.sub {
   713  			fmt.Printf("sub_int8 %d-%d = %d, wanted %d\n", v.a, v.b, got, v.sub)
   714  			failed = true
   715  		}
   716  		if v.b != 0 {
   717  			if got := div_int8_ssa(v.a, v.b); got != v.div {
   718  				fmt.Printf("div_int8 %d/%d = %d, wanted %d\n", v.a, v.b, got, v.div)
   719  				failed = true
   720  			}
   721  
   722  		}
   723  		if v.b != 0 {
   724  			if got := mod_int8_ssa(v.a, v.b); got != v.mod {
   725  				fmt.Printf("mod_int8 %d%%%d = %d, wanted %d\n", v.a, v.b, got, v.mod)
   726  				failed = true
   727  			}
   728  
   729  		}
   730  		if got := mul_int8_ssa(v.a, v.b); got != v.mul {
   731  			fmt.Printf("mul_int8 %d*%d = %d, wanted %d\n", v.a, v.b, got, v.mul)
   732  			failed = true
   733  		}
   734  	}
   735  	if failed {
   736  		panic("tests failed")
   737  	}
   738  }