github.com/rakyll/go@v0.0.0-20170216000551-64c02460d703/src/cmd/compile/internal/gc/testdata/arithBoundary.go (about)

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