github.com/slayercat/go@v0.0.0-20170428012452-c51559813f61/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 }