AVX确定写入值的数量

时间:2017-08-27 12:40:40

标签: gcc avx512

我有一个512位宽的向量寄存器(16个值)和一个掩码,使用_mm512_mask_i32scatter_epi32()将它们存储到内存中。要确定将多少值写入内存,请使用__builtin_clz()计算掩码的前导零。如果面具不是(!)为空,一切正常。但是当面具是空的时候会发生一些奇怪的事情:

std::cout << "mask = " << mask << " clz(mask) " << __builtin_clz(mask) << "\n";
  

mask = 0 clz(mask)31

我有两个问题:

  1. 有谁知道,为什么clz是31而不是32?
  2. 有更好的方法来确定书面值的数量吗?
  3. 此致

0 个答案:

没有答案