[PATCH] D55059: [ARM] FP16: constant initialised v4f16 and v8f16 vectors

Oliver Stannard via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 30 01:05:50 PST 2018


olista01 added inline comments.


================
Comment at: lib/Target/ARM/ARMInstrNEON.td:7145
 let Predicates = [IsLE] in {
+  def : Pat<(v4f16 (bitconvert (v4i16 DPR:$src))), (v4f16 DPR:$src)>;
   def : Pat<(v4i16 (bitconvert (v1i64 DPR:$src))), (v4i16 DPR:$src)>;
----------------
There are still a lot of combinations of types missing here, I think it would be better to add all of them at once. It might also be better to re-write all of these patterns as a pair of tablegen foreach loops, so that we don't miss any combinations.


================
Comment at: lib/Target/ARM/ARMInstrNEON.td:7228
   def : Pat<(v2i32 (bitconvert (f64   DPR:$src))), (VREV64d32 DPR:$src)>;
+  def : Pat<(v4f16 (bitconvert (v4i16 DPR:$src))), (VREV64d16 DPR:$src)>;
   def : Pat<(v4i16 (bitconvert (v1i64 DPR:$src))), (VREV64d16 DPR:$src)>;
----------------
Why does this need a VREV? All of the other cases where the lane widths are the same are no-ops for BE and LE.


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

https://reviews.llvm.org/D55059





More information about the llvm-commits mailing list