[PATCH] D129989: [AArch64] Add f16 fpimm patterns

Paul Walker via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 21 03:18:22 PDT 2022


paulwalker-arm added inline comments.


================
Comment at: llvm/lib/Target/AArch64/AArch64InstrInfo.td:1629
+def : Pat<(f16 fpimm:$in),
+  (COPY_TO_REGCLASS (MOVi32imm (bitcast_fpimm_to_i32 f16:$in)), FPR16)>;
 def : Pat<(f32 fpimm:$in),
----------------
dmgreen wrote:
> COPY's are quite loose in their definition, but it is probably best to keep them copying between values of the same size. I think this can use FMOVWHr directly, so long as the instruction has already been defined.
> It should probably have a: `let Predicates = [HasFullFP16]` too.
Is `HasFullFP16` relevant? The lowering requires no special instructions so I'd even argue the `setOperationAction` call requires no protection.  What's important is whether the `f16` type is legal.  Once we get to operation lowering and isel we only need to protect instructions not types.

We made this mistake for `bf16` for SVE and it just lead to unnecessary complexity which was eventually removed.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D129989/new/

https://reviews.llvm.org/D129989



More information about the llvm-commits mailing list