Hi Kyrill, > aarch64_cm<optab>di has a general register alternative, but its second > operand only accepts a register there, while the predicate also allows a > constant zero. A comparison against zero therefore has no general > register alternative and the value is moved through a vector register. > > Accept the zero in that alternative. The split already builds the > comparison with aarch64_gen_compare_reg, which handles a zero operand.
OK Note the cm(hs|hi) pattern below incorrectly uses "aarch64_simd_reg_or_zero". Since it does not allow zero in any alternative this should be changed to "register_operand" (can be a separate patch). Cheers, Wilco
