AVX-512Day 24

# vpcompressd

More than 3 years have passed since last update.

expandの逆をします。

これだけマスクの扱いが特殊ですね。マスクと対応する入力を拾ってきて、出力には下から詰めます。

```#include <immintrin.h>
#include <stdio.h>

unsigned int in[16] = {100,101,102,103,
104,105,106,107,
108,109,110,111,
112,113,114,115
};

unsigned int out[16];

{
for (int i=0; i<16; i++) {
out[i] = -1;
}

for (int i=0; i<16; i++) {
printf("%3d, ", out[15-i]);
}
puts("");
}

int
main()
{
printf("      | ");
for (int i=0; i<16; i++) {
printf("%3d, ", 15-i);
}
puts("\n---------------------------------------------------------------------------------------");

test(1);
test(0xaaaa);
test(0x8888);
test(0x0303);
test(0x0462);
test(0xffff);
}
```
```      |  15,  14,  13,  12,  11,  10,   9,   8,   7,   6,   5,   4,   3,   2,   1,   0,
---------------------------------------------------------------------------------------
0x0001:  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 100,
0xaaaa:  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 115, 113, 111, 109, 107, 105, 103, 101,
0x8888:  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 115, 111, 107, 103,
0x0303:  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 109, 108, 101, 100,
0x0462:  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 110, 106, 105, 101,
0xffff: 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100,
```