(self)
| 247 | To test all integer vector types at once |
| 248 | """ |
| 249 | def test_operators_shift(self): |
| 250 | if self.sfx in ("u8", "s8"): |
| 251 | return |
| 252 | |
| 253 | data_a = self._data(self._int_max() - self.nlanes) |
| 254 | data_b = self._data(self._int_min(), reverse=True) |
| 255 | vdata_a, vdata_b = self.load(data_a), self.load(data_b) |
| 256 | |
| 257 | for count in range(self._scalar_size()): |
| 258 | # load to cast |
| 259 | data_shl_a = self.load([a << count for a in data_a]) |
| 260 | # left shift |
| 261 | shl = self.shl(vdata_a, count) |
| 262 | assert shl == data_shl_a |
| 263 | # load to cast |
| 264 | data_shr_a = self.load([a >> count for a in data_a]) |
| 265 | # right shift |
| 266 | shr = self.shr(vdata_a, count) |
| 267 | assert shr == data_shr_a |
| 268 | |
| 269 | # shift by zero or max or out-range immediate constant is not applicable and illogical |
| 270 | for count in range(1, self._scalar_size()): |
| 271 | # load to cast |
| 272 | data_shl_a = self.load([a << count for a in data_a]) |
| 273 | # left shift by an immediate constant |
| 274 | shli = self.shli(vdata_a, count) |
| 275 | assert shli == data_shl_a |
| 276 | # load to cast |
| 277 | data_shr_a = self.load([a >> count for a in data_a]) |
| 278 | # right shift by an immediate constant |
| 279 | shri = self.shri(vdata_a, count) |
| 280 | assert shri == data_shr_a |
| 281 | |
| 282 | def test_arithmetic_subadd_saturated(self): |
| 283 | if self.sfx in ("u32", "s32", "u64", "s64"): |
nothing calls this directly
no test coverage detected