github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/cmd/compile/test/testdata/arithBoundary_test.go (about)

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