Я использую сборку руки и инструкции NEON SIMD. Я хочу получить максимум 16-битных значений без знака, которые находятся в двух регистрах Q, и сравнить их с порогом. Если все 16-битные значения меньше порогового значения, я вызываю функцию. Если одно или несколько значений больше порога, я вызываю другую функцию.
Следующие инструкции SIMD получают максимум.
// порог - это регистр r
vdup.16 q15, threshold
vmax.u16 q12, q14, q13
vcgt.u16 q11, q12, q15
Влияет ли vcgt на флаги FPSCR? Думаю, нет. Затем я должен проверить, равно ли q11 нулю или нет. Если это zeor, вызовите функцию1, иначе вызовите функцию2. Это было бы похоже
if (q11 == 0)
//call function1
else
//call function2
Как я могу это сделать, не перемещая q11 в 4 регистра r?
Спасибо