0

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

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

掩码 = 0 clz(掩码) 31

我有两个问题:

  1. 有谁知道,为什么 clz 是 31 而不是 32?
  2. 有没有更好的方法来确定写入值的数量?

真挚地

4

0 回答 0