В соответствии с документацией Неон:Неон Сравнение
- Если сравнение верно для полосы движения, в результате в этой полосе есть все биты установлены в единицу. Если для лэлеевого значения неверно, все биты равны , установленным на ноль. Тип возврата - это целочисленный тип без знака.
Я написал небольшой фрагмент кода, чтобы проверить это, и я наблюдал результат как 0 и -1 вместо 0 и 1. Может ли кто-нибудь сказать мне причину этого?
Код:
float c1[4] = {12.0f,12.0f,12.0f,12.0f};
float c2[4] = {13.0f,12.0f,9.0f,12.0f};
float32x4_t t1,t2;
uint32x4_t rq;
t1 = vld1q_f32(c1);
t2 = vld1q_f32(c2);
rq = vceqq_f32(t1,t2);
printf("start\n");
for(int i = 0;i < 4; i++){
printf("%d\n",rq[i]);
}
printf("end\n");
Результат:
start
0
-1
0
-1
end