[PATCH] D50597: [WebAssembly] SIMD extract_lane
Heejin Ahn via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 13 17:41:56 PDT 2018
aheejin added a comment.
Looks good
================
Comment at: lib/Target/WebAssembly/WebAssemblyInstrSIMD.td:18
+foreach SIZE = [2, 4, 8, 16, 32] in
+def LaneIdx#SIZE : ImmLeaf<i32, "return 0 <= Imm && Imm < "#SIZE#";">;
+
----------------
Question: How does `"#SIZE#"` turn it into a number?
================
Comment at: lib/Target/WebAssembly/WebAssemblyInstrSIMD.td:22
+multiclass ExtractLane<ValueType vec_t, ImmLeaf imm_t,
+ WebAssemblyRegClass reg_t = I32,
+ string name, bits<32> simdop,
----------------
Is a default value on an argument meaningful when some of subsequent parameters don't have defaults?
================
Comment at: lib/Target/WebAssembly/WebAssemblyInstrSIMD.td:34
+ (i32 (sext_inreg
+ (i32 (vector_extract
+ node:$vec,
----------------
[[ https://github.com/llvm-mirror/llvm/blob/a297d9641672dda1e268ec23d83387a4d42042ff/include/llvm/Target/TargetSelectionDAG.td#L532-L533 | Looks like ]] `vector_extract` is deprecated and [[ https://github.com/llvm-mirror/llvm/blob/a297d9641672dda1e268ec23d83387a4d42042ff/include/llvm/Target/TargetSelectionDAG.td#L404 | `extractelt` ]] is preferred. For other uses as well.
================
Comment at: lib/Target/WebAssembly/WebAssemblyInstrSIMD.td:76
+def : Pat<(i32 (vector_extract (v8i16 V128:$vec), (i32 LaneIdx8:$idx))),
+ (EXTRACT_LANE_U_I16x8 V128:$vec, (i32 LaneIdx8:$idx))>;
----------------
If we don't have these, do they not get selected?
Repository:
rL LLVM
https://reviews.llvm.org/D50597
More information about the llvm-commits
mailing list