On 2022/10/10 18:25, Richard Sandiford wrote: > "dongbo (E)" writes: >> Hi, Richard. >> >> On 2022/9/30 22:54, Richard Sandiford wrote: >>> "dongbo (E)" writes: >>>> We tried to put `S_H` in front of `NIL`: >>>> >>>> ``` >>>> >>>>     #define OP_SVE_Vv_HSD                        \ >>>> {                                                               \ >>>>       QLF2(S_H,S_H),                                      \ >>>>       QLF2(S_S,S_S),                                       \ >>>>       QLF2(S_D,S_D),                                      \ >>>>       QLF2(S_H,NIL),                                       \ >>>>       QLF2(S_S,NIL),                                       \ >>>>       QLF2(S_D,NIL),                                       \ >>>>     } >>>> >>>> ``` >>> Yeah, good point. It should be in this order, like you say. >>> >>> The fixes you mention look correct to me. >>> >>>> But assembler will fail in `match_operands_qualifier` :(. >>>> >>>> ``` >>>> >>>>     match_operands_qualifier (aarch64_inst *inst, bool update_p) >>>>     { >>>>         ... >>>>         if (!aarch64_find_best_match (...)) >>>>         ... >>>>         if (inst->opcode->flags & F_STRICT) >>>>         { >>>>             /* Require an exact qualifier match, even for NIL >>>> qualifiers.  */ >>>>             nops = aarch64_num_of_operands (inst->opcode); >>>>             for (i = 0; i < nops; ++i) >>>>                 if (inst->operands[i].qualifier != qualifiers[i]) >>>>                     return false; >>>>         } >>>>     } >>>> >>>> ``` >>> I think that's a misfeature of the F_STRICT handling. Does it work >>> with the patch below? >> We also found a way to fix the F_STRICT matching failure. See patch >> below. :) >> >> The main point is to give another `find_best_match` try when we get a >> qualifier mismatch for HSD operands. > I think it's simpler than that. Here's the patch I meant to send > (which is more -s than +s). Looks better than ours. All GAS tests passed with this patch. Thanks. I think we can make this done via two separate patches: `0001-aarch64-Tweak-handling-of-F_STRICT.patch` and `Allow explicit size specifier for predicate operand of {sq, uq, }{incp, decp}.patch` (patch below, rewritten already). Best Regards, Dong Bo