Lines Matching refs:Rn
55 (outs VPR64:$Rd), (ins VPR64:$Rn, VPR64:$Rm),
56 asmop # "\t$Rd.8b, $Rn.8b, $Rm.8b",
58 (v8i8 (opnode8B (v8i8 VPR64:$Rn), (v8i8 VPR64:$Rm))))],
62 (outs VPR128:$Rd), (ins VPR128:$Rn, VPR128:$Rm),
63 asmop # "\t$Rd.16b, $Rn.16b, $Rm.16b",
65 (v16i8 (opnode16B (v16i8 VPR128:$Rn), (v16i8 VPR128:$Rm))))],
77 (outs VPR64:$Rd), (ins VPR64:$Rn, VPR64:$Rm),
78 asmop # "\t$Rd.4h, $Rn.4h, $Rm.4h",
80 (v4i16 (opnode (v4i16 VPR64:$Rn), (v4i16 VPR64:$Rm))))],
84 (outs VPR128:$Rd), (ins VPR128:$Rn, VPR128:$Rm),
85 asmop # "\t$Rd.8h, $Rn.8h, $Rm.8h",
87 (v8i16 (opnode (v8i16 VPR128:$Rn), (v8i16 VPR128:$Rm))))],
91 (outs VPR64:$Rd), (ins VPR64:$Rn, VPR64:$Rm),
92 asmop # "\t$Rd.2s, $Rn.2s, $Rm.2s",
94 (v2i32 (opnode (v2i32 VPR64:$Rn), (v2i32 VPR64:$Rm))))],
98 (outs VPR128:$Rd), (ins VPR128:$Rn, VPR128:$Rm),
99 asmop # "\t$Rd.4s, $Rn.4s, $Rm.4s",
101 (v4i32 (opnode (v4i32 VPR128:$Rn), (v4i32 VPR128:$Rm))))],
112 (outs VPR64:$Rd), (ins VPR64:$Rn, VPR64:$Rm),
113 asmop # "\t$Rd.8b, $Rn.8b, $Rm.8b",
115 (v8i8 (opnode (v8i8 VPR64:$Rn), (v8i8 VPR64:$Rm))))],
119 (outs VPR128:$Rd), (ins VPR128:$Rn, VPR128:$Rm),
120 asmop # "\t$Rd.16b, $Rn.16b, $Rm.16b",
122 (v16i8 (opnode (v16i8 VPR128:$Rn), (v16i8 VPR128:$Rm))))],
134 (outs VPR128:$Rd), (ins VPR128:$Rn, VPR128:$Rm),
135 asmop # "\t$Rd.2d, $Rn.2d, $Rm.2d",
137 (v2i64 (opnode (v2i64 VPR128:$Rn), (v2i64 VPR128:$Rm))))],
153 (outs VPR64:$Rd), (ins VPR64:$Rn, VPR64:$Rm),
154 asmop # "\t$Rd.2s, $Rn.2s, $Rm.2s",
156 (ResTy2S (opnode2S (v2f32 VPR64:$Rn), (v2f32 VPR64:$Rm))))],
160 (outs VPR128:$Rd), (ins VPR128:$Rn, VPR128:$Rm),
161 asmop # "\t$Rd.4s, $Rn.4s, $Rm.4s",
163 (ResTy4S (opnode4S (v4f32 VPR128:$Rn), (v4f32 VPR128:$Rm))))],
167 (outs VPR128:$Rd), (ins VPR128:$Rn, VPR128:$Rm),
168 asmop # "\t$Rd.2d, $Rn.2d, $Rm.2d",
170 (ResTy2D (opnode2D (v2f64 VPR128:$Rn), (v2f64 VPR128:$Rm))))],
212 (outs VPRC:$Rd), (ins VPRC:$src, VPRC:$Rn, VPRC:$Rm),
213 asmop # "\t$Rd" # asmlane # ", $Rn" # asmlane # ", $Rm" # asmlane,
215 (OpTy (opnode (OpTy VPRC:$src), (OpTy VPRC:$Rn), (OpTy VPRC:$Rm))))],
220 def Neon_mla : PatFrag<(ops node:$Ra, node:$Rn, node:$Rm),
221 (add node:$Ra, (mul node:$Rn, node:$Rm))>;
223 def Neon_mls : PatFrag<(ops node:$Ra, node:$Rn, node:$Rm),
224 (sub node:$Ra, (mul node:$Rn, node:$Rm))>;
255 def Neon_fmla : PatFrag<(ops node:$Ra, node:$Rn, node:$Rm),
256 (fadd node:$Ra, (fmul node:$Rn, node:$Rm))>;
258 def Neon_fmls : PatFrag<(ops node:$Ra, node:$Rn, node:$Rm),
259 (fsub node:$Ra, (fmul node:$Rn, node:$Rm))>;
279 def : Pat<(v2f32 (fma VPR64:$Rn, VPR64:$Rm, VPR64:$Ra)),
280 (FMLAvvv_2S VPR64:$Ra, VPR64:$Rn, VPR64:$Rm)>;
281 def : Pat<(v4f32 (fma VPR128:$Rn, VPR128:$Rm, VPR128:$Ra)),
282 (FMLAvvv_4S VPR128:$Ra, VPR128:$Rn, VPR128:$Rm)>;
283 def : Pat<(v2f64 (fma VPR128:$Rn, VPR128:$Rm, VPR128:$Ra)),
284 (FMLAvvv_2D VPR128:$Ra, VPR128:$Rn, VPR128:$Rm)>;
286 def : Pat<(v2f32 (fma (fneg VPR64:$Rn), VPR64:$Rm, VPR64:$Ra)),
287 (FMLSvvv_2S VPR64:$Ra, VPR64:$Rn, VPR64:$Rm)>;
288 def : Pat<(v4f32 (fma (fneg VPR128:$Rn), VPR128:$Rm, VPR128:$Ra)),
289 (FMLSvvv_4S VPR128:$Ra, VPR128:$Rn, VPR128:$Rm)>;
290 def : Pat<(v2f64 (fma (fneg VPR128:$Rn), VPR128:$Rm, VPR128:$Ra)),
291 (FMLSvvv_2D VPR128:$Ra, VPR128:$Rn, VPR128:$Rm)>;
316 def : NeonInstAlias<"mov $Rd.8b, $Rn.8b",
317 (ORRvvv_8B VPR64:$Rd, VPR64:$Rn, VPR64:$Rn)>;
318 def : NeonInstAlias<"mov $Rd.16b, $Rn.16b",
319 (ORRvvv_16B VPR128:$Rd, VPR128:$Rn, VPR128:$Rn)>;
336 def Neon_orn8B : PatFrag<(ops node:$Rn, node:$Rm),
337 (or node:$Rn, (Neon_not8B node:$Rm))>;
339 def Neon_orn16B : PatFrag<(ops node:$Rn, node:$Rm),
340 (or node:$Rn, (Neon_not16B node:$Rm))>;
342 def Neon_bic8B : PatFrag<(ops node:$Rn, node:$Rm),
343 (and node:$Rn, (Neon_not8B node:$Rm))>;
345 def Neon_bic16B : PatFrag<(ops node:$Rn, node:$Rm),
346 (and node:$Rn, (Neon_not16B node:$Rm))>;
363 def : Pat<(v2i32 (opnode8B VPR64:$Rn, VPR64:$Rm)),
364 (INST8B VPR64:$Rn, VPR64:$Rm)>;
365 def : Pat<(v4i16 (opnode8B VPR64:$Rn, VPR64:$Rm)),
366 (INST8B VPR64:$Rn, VPR64:$Rm)>;
367 def : Pat<(v1i64 (opnode8B VPR64:$Rn, VPR64:$Rm)),
368 (INST8B VPR64:$Rn, VPR64:$Rm)>;
369 def : Pat<(v4i32 (opnode16B VPR128:$Rn, VPR128:$Rm)),
370 (INST16B VPR128:$Rn, VPR128:$Rm)>;
371 def : Pat<(v8i16 (opnode16B VPR128:$Rn, VPR128:$Rm)),
372 (INST16B VPR128:$Rn, VPR128:$Rm)>;
373 def : Pat<(v2i64 (opnode16B VPR128:$Rn, VPR128:$Rm)),
374 (INST16B VPR128:$Rn, VPR128:$Rm)>;
395 def : Pat<(v2i32 (opnode VPR64:$src,VPR64:$Rn, VPR64:$Rm)),
396 (INST8B VPR64:$src, VPR64:$Rn, VPR64:$Rm)>;
397 def : Pat<(v4i16 (opnode VPR64:$src, VPR64:$Rn, VPR64:$Rm)),
398 (INST8B VPR64:$src, VPR64:$Rn, VPR64:$Rm)>;
399 def : Pat<(v1i64 (opnode VPR64:$src, VPR64:$Rn, VPR64:$Rm)),
400 (INST8B VPR64:$src, VPR64:$Rn, VPR64:$Rm)>;
401 def : Pat<(v4i32 (opnode VPR128:$src, VPR128:$Rn, VPR128:$Rm)),
402 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
403 def : Pat<(v8i16 (opnode VPR128:$src, VPR128:$Rn, VPR128:$Rm)),
404 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
405 def : Pat<(v2i64 (opnode VPR128:$src, VPR128:$Rn, VPR128:$Rm)),
406 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
409 def : Pat<(v8i8 (or (and VPR64:$Rn, VPR64:$Rd),
411 (INST8B VPR64:$Rd, VPR64:$Rn, VPR64:$Rm)>;
412 def : Pat<(v4i16 (or (and VPR64:$Rn, VPR64:$Rd),
414 (INST8B VPR64:$Rd, VPR64:$Rn, VPR64:$Rm)>;
415 def : Pat<(v2i32 (or (and VPR64:$Rn, VPR64:$Rd),
417 (INST8B VPR64:$Rd, VPR64:$Rn, VPR64:$Rm)>;
418 def : Pat<(v1i64 (or (and VPR64:$Rn, VPR64:$Rd),
420 (INST8B VPR64:$Rd, VPR64:$Rn, VPR64:$Rm)>;
421 def : Pat<(v16i8 (or (and VPR128:$Rn, VPR128:$Rd),
423 (INST16B VPR128:$Rd, VPR128:$Rn, VPR128:$Rm)>;
424 def : Pat<(v8i16 (or (and VPR128:$Rn, VPR128:$Rd),
426 (INST16B VPR128:$Rd, VPR128:$Rn, VPR128:$Rm)>;
427 def : Pat<(v4i32 (or (and VPR128:$Rn, VPR128:$Rd),
429 (INST16B VPR128:$Rd, VPR128:$Rn, VPR128:$Rm)>;
430 def : Pat<(v2i64 (or (and VPR128:$Rn, VPR128:$Rd),
432 (INST16B VPR128:$Rd, VPR128:$Rn, VPR128:$Rm)>;
436 (v8i8 VPR64:$Rn), (v8i8 VPR64:$Rm))),
437 (INST8B VPR64:$src, VPR64:$Rn, VPR64:$Rm)>;
439 (v4i16 VPR64:$Rn), (v4i16 VPR64:$Rm))),
440 (INST8B VPR64:$src, VPR64:$Rn, VPR64:$Rm)>;
442 (v2i32 VPR64:$Rn), (v2i32 VPR64:$Rm))),
443 (INST8B VPR64:$src, VPR64:$Rn, VPR64:$Rm)>;
445 (v1i64 VPR64:$Rn), (v1i64 VPR64:$Rm))),
446 (INST8B VPR64:$src, VPR64:$Rn, VPR64:$Rm)>;
448 (v2f32 VPR64:$Rn), (v2f32 VPR64:$Rm))),
449 (INST8B VPR64:$src, VPR64:$Rn, VPR64:$Rm)>;
451 (v16i8 VPR128:$Rn), (v16i8 VPR128:$Rm))),
452 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
454 (v8i16 VPR128:$Rn), (v8i16 VPR128:$Rm))),
455 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
457 (v4i32 VPR128:$Rn), (v4i32 VPR128:$Rm))),
458 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
460 (v2i64 VPR128:$Rn), (v2i64 VPR128:$Rm))),
461 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
463 (v4f32 VPR128:$Rn), (v4f32 VPR128:$Rm))),
464 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
466 (v2f64 VPR128:$Rn), (v2f64 VPR128:$Rm))),
467 (INST16B VPR128:$src, VPR128:$Rn, VPR128:$Rm)>;
473 def Neon_NoBSLop : PatFrag<(ops node:$src, node:$Rn, node:$Rm),
474 (Neon_bsl node:$src, node:$Rn, node:$Rm),
493 def Neon_uaba : PatFrag<(ops node:$Ra, node:$Rn, node:$Rm),
494 (add node:$Ra, (int_arm_neon_vabdu node:$Rn, node:$Rm))>;
495 def Neon_saba : PatFrag<(ops node:$Ra, node:$Rn, node:$Rm),
496 (add node:$Ra, (int_arm_neon_vabds node:$Rn, node:$Rm))>;
566 : NeonInstAlias<asmop # "\t$Rd" # asmlane #", $Rn" # asmlane #
568 (inst VPRC:$Rd, VPRC:$Rm, VPRC:$Rn), 0b0>;
649 (outs VPR64:$Rd), (ins VPR64:$Rn, neon_uimm0:$Imm),
650 asmop # "\t$Rd.8b, $Rn.8b, $Imm",
652 (v8i8 (Neon_cmpz (v8i8 VPR64:$Rn), (i32 imm:$Imm), CC)))],
656 (outs VPR128:$Rd), (ins VPR128:$Rn, neon_uimm0:$Imm),
657 asmop # "\t$Rd.16b, $Rn.16b, $Imm",
659 (v16i8 (Neon_cmpz (v16i8 VPR128:$Rn), (i32 imm:$Imm), CC)))],
663 (outs VPR64:$Rd), (ins VPR64:$Rn, neon_uimm0:$Imm),
664 asmop # "\t$Rd.4h, $Rn.4h, $Imm",
666 (v4i16 (Neon_cmpz (v4i16 VPR64:$Rn), (i32 imm:$Imm), CC)))],
670 (outs VPR128:$Rd), (ins VPR128:$Rn, neon_uimm0:$Imm),
671 asmop # "\t$Rd.8h, $Rn.8h, $Imm",
673 (v8i16 (Neon_cmpz (v8i16 VPR128:$Rn), (i32 imm:$Imm), CC)))],
677 (outs VPR64:$Rd), (ins VPR64:$Rn, neon_uimm0:$Imm),
678 asmop # "\t$Rd.2s, $Rn.2s, $Imm",
680 (v2i32 (Neon_cmpz (v2i32 VPR64:$Rn), (i32 imm:$Imm), CC)))],
684 (outs VPR128:$Rd), (ins VPR128:$Rn, neon_uimm0:$Imm),
685 asmop # "\t$Rd.4s, $Rn.4s, $Imm",
687 (v4i32 (Neon_cmpz (v4i32 VPR128:$Rn), (i32 imm:$Imm), CC)))],
691 (outs VPR128:$Rd), (ins VPR128:$Rn, neon_uimm0:$Imm),
692 asmop # "\t$Rd.2d, $Rn.2d, $Imm",
694 (v2i64 (Neon_cmpz (v2i64 VPR128:$Rn), (i32 imm:$Imm), CC)))],
749 (outs VPR64:$Rd), (ins VPR64:$Rn, fpz32:$FPImm),
750 asmop # "\t$Rd.2s, $Rn.2s, $FPImm",
752 (v2i32 (Neon_cmpz (v2f32 VPR64:$Rn), (f32 fpimm:$FPImm), CC)))],
756 (outs VPR128:$Rd), (ins VPR128:$Rn, fpz32:$FPImm),
757 asmop # "\t$Rd.4s, $Rn.4s, $FPImm",
759 (v4i32 (Neon_cmpz (v4f32 VPR128:$Rn), (f32 fpimm:$FPImm), CC)))],
763 (outs VPR128:$Rd), (ins VPR128:$Rn, fpz32:$FPImm),
764 asmop # "\t$Rd.2d, $Rn.2d, $FPImm",
766 (v2i64 (Neon_cmpz (v2f64 VPR128:$Rn), (f32 fpimm:$FPImm), CC)))],
1416 (outs FPR64:$Rd), (ins FPR64:$Rn, FPR64:$Rm),
1417 !strconcat(asmop, " $Rd, $Rn, $Rm"),
1426 (outs FPR8:$Rd), (ins FPR8:$Rn, FPR8:$Rm),
1427 !strconcat(asmop, " $Rd, $Rn, $Rm"),
1431 (outs FPR16:$Rd), (ins FPR16:$Rn, FPR16:$Rm),
1432 !strconcat(asmop, " $Rd, $Rn, $Rm"),
1436 (outs FPR32:$Rd), (ins FPR32:$Rn, FPR32:$Rm),
1437 !strconcat(asmop, " $Rd, $Rn, $Rm"),
1441 (outs FPR64:$Rd), (ins FPR64:$Rn, FPR64:$Rm),
1442 !strconcat(asmop, " $Rd, $Rn, $Rm"),
1449 : Pat<(v1i64 (opnode (v1i64 VPR64:$Rn), (v1i64 VPR64:$Rm))),
1451 (INSTD (EXTRACT_SUBREG VPR64:$Rn, sub_64),