我使用 gdb 调试通过immintrin.h
标头使用 AVX2 内部函数的程序。
有了gdb,我可以打印出__m256
值而没有任何问题,就像这样:
>>> print scl8
$4 = {[0] = 0.0078125, [1] = 0.0078125, [2] = 0.0078125, [3] = 0.0078125, [4] = 0.0078125, [5] = 0.0078125, [6] = 0.0078125, [7] = 0.0078125}
在此特定示例中,所有8条通道均包含值1/128。 并注意gdb 打印所有8条通道!
如果我要打印出__m256i
值的epi32值,则出现问题:
>>> print msk8
$6 = {[0] = 4294967297, [1] = 4294967297, [2] = 4294967297, [3] = 4294967297}
为什么gdb会为__m256i
打印4通道(我认为是64位整数),却为__m256
打印8通道的32bit浮点数?这里的一致性在哪里?
如何使用gdb从__m256i
打印8个epi32值?
$ gdb --version
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git