| 942 | self.npyv.cleanup() |
| 943 | |
| 944 | def test_reorder(self): |
| 945 | data_a, data_b = self._data(), self._data(reverse=True) |
| 946 | vdata_a, vdata_b = self.load(data_a), self.load(data_b) |
| 947 | # lower half part |
| 948 | data_a_lo = data_a[:self.nlanes//2] |
| 949 | data_b_lo = data_b[:self.nlanes//2] |
| 950 | # higher half part |
| 951 | data_a_hi = data_a[self.nlanes//2:] |
| 952 | data_b_hi = data_b[self.nlanes//2:] |
| 953 | # combine two lower parts |
| 954 | combinel = self.combinel(vdata_a, vdata_b) |
| 955 | assert combinel == data_a_lo + data_b_lo |
| 956 | # combine two higher parts |
| 957 | combineh = self.combineh(vdata_a, vdata_b) |
| 958 | assert combineh == data_a_hi + data_b_hi |
| 959 | # combine x2 |
| 960 | combine = self.combine(vdata_a, vdata_b) |
| 961 | assert combine == (data_a_lo + data_b_lo, data_a_hi + data_b_hi) |
| 962 | |
| 963 | # zip(interleave) |
| 964 | data_zipl = self.load([ |
| 965 | v for p in zip(data_a_lo, data_b_lo) for v in p |
| 966 | ]) |
| 967 | data_ziph = self.load([ |
| 968 | v for p in zip(data_a_hi, data_b_hi) for v in p |
| 969 | ]) |
| 970 | vzip = self.zip(vdata_a, vdata_b) |
| 971 | assert vzip == (data_zipl, data_ziph) |
| 972 | vzip = [0]*self.nlanes*2 |
| 973 | self._x2("store")(vzip, (vdata_a, vdata_b)) |
| 974 | assert vzip == list(data_zipl) + list(data_ziph) |
| 975 | |
| 976 | # unzip(deinterleave) |
| 977 | unzip = self.unzip(data_zipl, data_ziph) |
| 978 | assert unzip == (data_a, data_b) |
| 979 | unzip = self._x2("load")(list(data_zipl) + list(data_ziph)) |
| 980 | assert unzip == (data_a, data_b) |
| 981 | |
| 982 | def test_reorder_rev64(self): |
| 983 | # Reverse elements of each 64-bit lane |