Я пытаюсь понять присущие _mm256_testc_pd
, _mm256_testz_pd
и _mm256_testnzc_pd
, и мне трудно их понять.
Для анализа _mm256_testc_pd
я выявил следующие случаи(a
является первым, b
вторым __mm256d
аргументом):
- Если все упакованные числа в
b
имеют> 0, то ZF=1
, CF=1
, за исключением: - Если один упакован по два в каждом
a
и b
, то взаимно <0 </em>, тогда ZF=0
. - Если один упакован вдвое в каждом
!a
и b
равны взаимно <0 </em>, то CF=0
.
InДругими словами, значение ZF=1
говорит мне, что либо а) b
является полностью положительным, либо б) что для тех двойных чисел в b
, которые не являются положительными, есть соответствующий двойник в a
, который является отрицательным,Значение CF=1
говорит мне, что либо c) b
является полностью положительным, либо d) что для тех двойных чисел в b
, которые не являются положительными, есть совпадающее двойное число в !a
, которое является отрицательным.
Правильно ли я понял?Я немного смущен этим.Какой смысл этой проверки?Для чего мне использовать эти встроенные функции?