Lines Matching refs:vec

71     SIMD_I<(outs), (ins P2Align:$align, offset32_op:$off, I32:$addr, V128:$vec),
73 "v128.store\t${off}(${addr})$align, $vec",
218 multiclass Splat<ValueType vec_t, string vec, WebAssemblyRegClass reg_t,
224 vec#".splat\t$dst, $x", vec#".splat", simdop>;
239 multiclass ExtractLane<ValueType vec_t, string vec, ImmLeaf imm_t,
243 SIMD_I<(outs reg_t:$dst), (ins V128:$vec, vec_i8imm_op:$idx),
245 [(set reg_t:$dst, (extract (vec_t V128:$vec), (i32 imm_t:$idx)))],
246 vec#".extract_lane"#suffix#"\t$dst, $vec, $idx",
247 vec#".extract_lane"#suffix#"\t$idx", simdop>;
251 def _s : PatFrag<(ops node:$vec, node:$idx),
254 node:$vec,
259 def _u : PatFrag<(ops node:$vec, node:$idx),
262 node:$vec,
289 def : Pat<(i32 (vector_extract (v16i8 V128:$vec), (i32 LaneIdx16:$idx))),
290 (EXTRACT_LANE_v16i8_s V128:$vec, (i32 LaneIdx16:$idx))>;
291 def : Pat<(i32 (vector_extract (v8i16 V128:$vec), (i32 LaneIdx8:$idx))),
292 (EXTRACT_LANE_v8i16_s V128:$vec, (i32 LaneIdx8:$idx))>;
295 def : Pat<(and (i32 (vector_extract (v16i8 V128:$vec), undef)), (i32 0xff)),
296 (EXTRACT_LANE_v16i8_u V128:$vec, 0)>;
297 def : Pat<(and (i32 (vector_extract (v8i16 V128:$vec), undef)), (i32 0xffff)),
298 (EXTRACT_LANE_v8i16_u V128:$vec, 0)>;
299 def : Pat<(i32 (vector_extract (v16i8 V128:$vec), undef)),
300 (EXTRACT_LANE_v16i8_u V128:$vec, 0)>;
301 def : Pat<(i32 (vector_extract (v8i16 V128:$vec), undef)),
302 (EXTRACT_LANE_v8i16_u V128:$vec, 0)>;
303 def : Pat<(sext_inreg (i32 (vector_extract (v16i8 V128:$vec), undef)), i8),
304 (EXTRACT_LANE_v16i8_s V128:$vec, 0)>;
305 def : Pat<(sext_inreg (i32 (vector_extract (v8i16 V128:$vec), undef)), i16),
306 (EXTRACT_LANE_v8i16_s V128:$vec, 0)>;
307 def : Pat<(vector_extract (v4i32 V128:$vec), undef),
308 (EXTRACT_LANE_v4i32 V128:$vec, 0)>;
309 def : Pat<(vector_extract (v2i64 V128:$vec), undef),
310 (EXTRACT_LANE_v2i64 V128:$vec, 0)>;
311 def : Pat<(vector_extract (v4f32 V128:$vec), undef),
312 (EXTRACT_LANE_v4f32 V128:$vec, 0)>;
313 def : Pat<(vector_extract (v2f64 V128:$vec), undef),
314 (EXTRACT_LANE_v2f64 V128:$vec, 0)>;
317 multiclass ReplaceLane<ValueType vec_t, string vec, ImmLeaf imm_t,
321 SIMD_I<(outs V128:$dst), (ins V128:$vec, vec_i8imm_op:$idx, reg_t:$x),
324 (vec_t V128:$vec), (lane_t reg_t:$x), (i32 imm_t:$idx)))],
325 vec#".replace_lane\t$dst, $vec, $idx, $x",
326 vec#".replace_lane\t$idx", simdop>;
337 def : Pat<(vector_insert (v16i8 V128:$vec), I32:$x, undef),
338 (REPLACE_LANE_v16i8 V128:$vec, 0, I32:$x)>;
339 def : Pat<(vector_insert (v8i16 V128:$vec), I32:$x, undef),
340 (REPLACE_LANE_v8i16 V128:$vec, 0, I32:$x)>;
341 def : Pat<(vector_insert (v4i32 V128:$vec), I32:$x, undef),
342 (REPLACE_LANE_v4i32 V128:$vec, 0, I32:$x)>;
343 def : Pat<(vector_insert (v2i64 V128:$vec), I64:$x, undef),
344 (REPLACE_LANE_v2i64 V128:$vec, 0, I64:$x)>;
345 def : Pat<(vector_insert (v4f32 V128:$vec), F32:$x, undef),
346 (REPLACE_LANE_v4f32 V128:$vec, 0, F32:$x)>;
347 def : Pat<(vector_insert (v2f64 V128:$vec), F64:$x, undef),
348 (REPLACE_LANE_v2f64 V128:$vec, 0, F64:$x)>;
466 multiclass SIMDCondition<ValueType vec_t, ValueType out_t, string vec,
473 vec#"."#name#"\t$dst, $lhs, $rhs", vec#"."#name, simdop>;
538 multiclass SIMDBinary<ValueType vec_t, string vec, SDNode node, string name,
545 vec#"."#name#"\t$dst, $lhs, $rhs", vec#"."#name,
556 multiclass SIMDUnary<ValueType vec_t, string vec, SDNode node, string name,
558 defm _#vec_t : SIMD_I<(outs V128:$dst), (ins V128:$vec), (outs), (ins),
560 (vec_t (node (vec_t V128:$vec)))
562 vec#"."#name#"\t$dst, $vec", vec#"."#name, simdop>;
605 multiclass SIMDReduceVec<ValueType vec_t, string vec, SDNode op, string name,
607 defm _#vec_t : SIMD_I<(outs I32:$dst), (ins V128:$vec), (outs), (ins),
608 [(set I32:$dst, (i32 (op (vec_t V128:$vec))))],
609 vec#"."#name#"\t$dst, $vec", vec#"."#name, simdop>;
635 multiclass SIMDShift<ValueType vec_t, string vec, SDNode node, dag shift_vec,
637 defm _#vec_t : SIMD_I<(outs V128:$dst), (ins V128:$vec, I32:$x),
640 (node V128:$vec, (vec_t shift_vec)))],
641 vec#"."#name#"\t$dst, $vec, $x", vec#"."#name, simdop>;
663 def : Pat<(v2i64 (shifts[0] (v2i64 V128:$vec), (v2i64 (splat2 I64:$x)))),
664 (v2i64 (shifts[1] (v2i64 V128:$vec), (I32_WRAP_I64 I64:$x)))>;
676 def : Pat<(v2i64 (shifts[0] (v2i64 V128:$vec), I32:$x)),
677 (v2i64 (shifts[1] (v2i64 V128:$vec), I32:$x))>;
771 SIMD_I<(outs V128:$dst), (ins V128:$vec), (outs), (ins),
772 [(set (vec_t V128:$dst), (vec_t (op (arg_t V128:$vec))))],
773 name#"\t$dst, $vec", name, simdop>;