Lines Matching refs:Vm
2511 (ins DPR:$Vm), IIC_VUNAD, OpcodeStr, Dt,"$Vd, $Vm", "",
2512 [(set DPR:$Vd, (ResTy (OpNode (OpTy DPR:$Vm))))]>;
2517 (ins QPR:$Vm), IIC_VUNAQ, OpcodeStr, Dt,"$Vd, $Vm", "",
2518 [(set QPR:$Vd, (ResTy (OpNode (OpTy QPR:$Vm))))]>;
2526 (ins DPR:$Vm), itin, OpcodeStr, Dt, "$Vd, $Vm", "",
2527 [(set DPR:$Vd, (ResTy (IntOp (OpTy DPR:$Vm))))]>;
2533 (ins QPR:$Vm), itin, OpcodeStr, Dt, "$Vd, $Vm", "",
2534 [(set QPR:$Vd, (ResTy (IntOp (OpTy QPR:$Vm))))]>;
2540 : N2Vnp<op19_18, op17_16, op10_8, op7, 0, (outs DPR:$Vd), (ins DPR:$Vm),
2542 [(set DPR:$Vd, (ResTy (IntOp (OpTy DPR:$Vm))))]>;
2547 : N2Vnp<op19_18, op17_16, op10_8, op7, 1, (outs QPR:$Vd), (ins QPR:$Vm),
2549 [(set QPR:$Vd, (ResTy (IntOp (OpTy QPR:$Vm))))]>;
2555 : N2Vnp<op19_18, op17_16, op10_8, op7, op6, (outs QPR:$Vd), (ins QPR:$Vm),
2557 [(set QPR:$Vd, (ResTy (IntOp (OpTy QPR:$Vm))))]>;
2564 (outs QPR:$Vd), (ins QPR:$src, QPR:$Vm),
2566 [(set QPR:$Vd, (ResTy (IntOp (OpTy QPR:$src), (OpTy QPR:$Vm))))]> {
2576 (ins QPR:$Vm), itin, OpcodeStr, Dt, "$Vd, $Vm", "",
2577 [(set DPR:$Vd, (TyD (OpNode (TyQ QPR:$Vm))))]>;
2585 (ins QPR:$Vm), itin, OpcodeStr, Dt, "$Vd, $Vm", "",
2586 [(set DPR:$Vd, (TyD (IntOp (TyQ QPR:$Vm))))]>;
2594 (ins DPR:$Vm), itin, OpcodeStr, Dt, "$Vd, $Vm", "",
2595 [(set QPR:$Vd, (TyQ (OpNode (TyD DPR:$Vm))))]>;
2603 (ins DPR:$Vm), itin, OpcodeStr, Dt, "$Vd, $Vm", "",
2604 [(set QPR:$Vd, (TyQ (IntOp (TyD DPR:$Vm))))]>;
2608 : N2V<0b11, 0b11, op19_18, 0b10, op11_7, 0, 0, (outs DPR:$Vd, DPR:$Vm),
2610 OpcodeStr, Dt, "$Vd, $Vm",
2611 "$src1 = $Vd, $src2 = $Vm", []>;
2614 : N2V<0b11, 0b11, op19_18, 0b10, op11_7, 1, 0, (outs QPR:$Vd, QPR:$Vm),
2615 (ins QPR:$src1, QPR:$src2), itin, OpcodeStr, Dt, "$Vd, $Vm",
2616 "$src1 = $Vd, $src2 = $Vm", []>;
2623 (outs DPR:$Vd), (ins DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
2624 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
2625 [(set DPR:$Vd, (ResTy (OpNode (OpTy DPR:$Vn), (OpTy DPR:$Vm))))]> {
2636 (outs DPR:$Vd), (ins DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
2637 OpcodeStr, "$Vd, $Vn, $Vm", "",
2638 [(set DPR:$Vd, (ResTy (OpNode (OpTy DPR:$Vn), (OpTy DPR:$Vm))))]>{
2648 (outs DPR:$Vd), (ins DPR:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane),
2649 NVMulSLFrm, itin, OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "",
2652 (Ty (ARMvduplane (Ty DPR_VFP2:$Vm),imm:$lane)))))]> {
2660 (outs DPR:$Vd), (ins DPR:$Vn, DPR_8:$Vm, VectorIndex16:$lane),
2661 NVMulSLFrm, IIC_VMULi16D, OpcodeStr, Dt,"$Vd, $Vn, $Vm$lane","",
2664 (Ty (ARMvduplane (Ty DPR_8:$Vm), imm:$lane)))))]> {
2674 (outs QPR:$Vd), (ins QPR:$Vn, QPR:$Vm), N3RegFrm, itin,
2675 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
2676 [(set QPR:$Vd, (ResTy (OpNode (OpTy QPR:$Vn), (OpTy QPR:$Vm))))]> {
2685 (outs QPR:$Vd), (ins QPR:$Vn, QPR:$Vm), N3RegFrm, itin,
2686 OpcodeStr, "$Vd, $Vn, $Vm", "",
2687 [(set QPR:$Vd, (ResTy (OpNode (OpTy QPR:$Vn), (OpTy QPR:$Vm))))]>{
2696 (outs QPR:$Vd), (ins QPR:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane),
2697 NVMulSLFrm, itin, OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "",
2700 (ResTy (ARMvduplane (OpTy DPR_VFP2:$Vm),
2709 (outs QPR:$Vd), (ins QPR:$Vn, DPR_8:$Vm, VectorIndex16:$lane),
2710 NVMulSLFrm, IIC_VMULi16Q, OpcodeStr, Dt,"$Vd, $Vn, $Vm$lane", "",
2713 (ResTy (ARMvduplane (OpTy DPR_8:$Vm),
2725 (outs DPR:$Vd), (ins DPR:$Vn, DPR:$Vm), f, itin,
2726 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
2727 [(set DPR:$Vd, (ResTy (IntOp (OpTy DPR:$Vn), (OpTy DPR:$Vm))))]> {
2738 (outs DPR:$Vd), (ins DPR:$Vn, DPR:$Vm), f, itin, OpcodeStr, Dt,
2739 [(set DPR:$Vd, (ResTy (IntOp (OpTy DPR:$Vn), (OpTy DPR:$Vm))))]> {
2747 (outs DPR:$Vd), (ins DPR:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane),
2748 NVMulSLFrm, itin, OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "",
2751 (Ty (ARMvduplane (Ty DPR_VFP2:$Vm),
2759 (outs DPR:$Vd), (ins DPR:$Vn, DPR_8:$Vm, VectorIndex16:$lane),
2760 NVMulSLFrm, itin, OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "",
2763 (Ty (ARMvduplane (Ty DPR_8:$Vm), imm:$lane)))))]> {
2770 (outs DPR:$Vd), (ins DPR:$Vm, DPR:$Vn), f, itin,
2771 OpcodeStr, Dt, "$Vd, $Vm, $Vn", "",
2772 [(set DPR:$Vd, (ResTy (IntOp (OpTy DPR:$Vm), (OpTy DPR:$Vn))))]> {
2773 let TwoOperandAliasConstraint = "$Vm = $Vd";
2781 (outs QPR:$Vd), (ins QPR:$Vn, QPR:$Vm), f, itin,
2782 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
2783 [(set QPR:$Vd, (ResTy (IntOp (OpTy QPR:$Vn), (OpTy QPR:$Vm))))]> {
2794 (outs QPR:$Vd), (ins QPR:$Vn, QPR:$Vm), f, itin, OpcodeStr, Dt,
2795 [(set QPR:$Vd, (ResTy (IntOp (OpTy QPR:$Vn), (OpTy QPR:$Vm))))]> {
2805 (outs QPR:$Vd), (ins QPR:$src, QPR:$Vn, QPR:$Vm),
2808 (OpTy QPR:$Vm))))]> {
2817 (outs QPR:$Vd), (ins QPR:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane),
2818 NVMulSLFrm, itin, OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "",
2821 (ResTy (ARMvduplane (OpTy DPR_VFP2:$Vm),
2829 (outs QPR:$Vd), (ins QPR:$Vn, DPR_8:$Vm, VectorIndex16:$lane),
2830 NVMulSLFrm, itin, OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "",
2833 (ResTy (ARMvduplane (OpTy DPR_8:$Vm),
2841 (outs QPR:$Vd), (ins QPR:$Vm, QPR:$Vn), f, itin,
2842 OpcodeStr, Dt, "$Vd, $Vm, $Vn", "",
2843 [(set QPR:$Vd, (ResTy (IntOp (OpTy QPR:$Vm), (OpTy QPR:$Vn))))]> {
2844 let TwoOperandAliasConstraint = "$Vm = $Vd";
2853 (outs DPR:$Vd), (ins DPR:$src1, DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
2854 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "$src1 = $Vd",
2856 (Ty (MulOp DPR:$Vn, DPR:$Vm)))))]>;
2863 (ins DPR:$src1, DPR:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane),
2865 OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "$src1 = $Vd",
2869 (Ty (ARMvduplane (Ty DPR_VFP2:$Vm),
2876 (ins DPR:$src1, DPR:$Vn, DPR_8:$Vm, VectorIndex16:$lane),
2878 OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "$src1 = $Vd",
2882 (Ty (ARMvduplane (Ty DPR_8:$Vm),
2889 (outs QPR:$Vd), (ins QPR:$src1, QPR:$Vn, QPR:$Vm), N3RegFrm, itin,
2890 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "$src1 = $Vd",
2892 (Ty (MulOp QPR:$Vn, QPR:$Vm)))))]>;
2898 (ins QPR:$src1, QPR:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane),
2900 OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "$src1 = $Vd",
2904 (ResTy (ARMvduplane (OpTy DPR_VFP2:$Vm),
2912 (ins QPR:$src1, QPR:$Vn, DPR_8:$Vm, VectorIndex16:$lane),
2914 OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "$src1 = $Vd",
2918 (ResTy (ARMvduplane (OpTy DPR_8:$Vm),
2926 (outs DPR:$Vd), (ins DPR:$src1, DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
2927 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "$src1 = $Vd",
2929 (Ty (IntOp (Ty DPR:$Vn), (Ty DPR:$Vm))))))]>;
2934 (outs QPR:$Vd), (ins QPR:$src1, QPR:$Vn, QPR:$Vm), N3RegFrm, itin,
2935 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "$src1 = $Vd",
2937 (Ty (IntOp (Ty QPR:$Vn), (Ty QPR:$Vm))))))]>;
2945 (outs DPR:$Vd), (ins DPR:$src1, DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
2946 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "$src1 = $Vd",
2948 (OpTy DPR:$Vn), (OpTy DPR:$Vm))))]>;
2953 (outs QPR:$Vd), (ins QPR:$src1, QPR:$Vn, QPR:$Vm), N3RegFrm, itin,
2954 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "$src1 = $Vd",
2956 (OpTy QPR:$Vn), (OpTy QPR:$Vm))))]>;
2963 (outs QPR:$Vd), (ins QPR:$src1, DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
2964 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "$src1 = $Vd",
2967 (TyD DPR:$Vm)))))]>;
2972 (ins QPR:$src1, DPR:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane),
2974 OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "$src1 = $Vd",
2978 (TyD (ARMvduplane (TyD DPR_VFP2:$Vm),
2984 (ins QPR:$src1, DPR:$Vn, DPR_8:$Vm, VectorIndex16:$lane),
2986 OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "$src1 = $Vd",
2990 (TyD (ARMvduplane (TyD DPR_8:$Vm),
2999 (outs QPR:$Vd), (ins QPR:$src1, DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
3000 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "$src1 = $Vd",
3003 (TyD DPR:$Vm)))))))]>;
3011 (outs QPR:$Vd), (ins QPR:$src1, DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
3012 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "$src1 = $Vd",
3014 (TyQ (IntOp (TyQ QPR:$src1), (TyD DPR:$Vn), (TyD DPR:$Vm))))]>;
3020 (ins QPR:$src1, DPR:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane),
3022 OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "$src1 = $Vd",
3026 (OpTy (ARMvduplane (OpTy DPR_VFP2:$Vm),
3033 (ins QPR:$src1, DPR:$Vn, DPR_8:$Vm, VectorIndex16:$lane),
3035 OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "$src1 = $Vd",
3039 (OpTy (ARMvduplane (OpTy DPR_8:$Vm),
3047 (outs DPR:$Vd), (ins QPR:$Vn, QPR:$Vm), N3RegFrm, IIC_VBINi4D,
3048 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
3049 [(set DPR:$Vd, (TyD (IntOp (TyQ QPR:$Vn), (TyQ QPR:$Vm))))]> {
3058 (outs QPR:$Vd), (ins DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
3059 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
3060 [(set QPR:$Vd, (TyQ (OpNode (TyD DPR:$Vn), (TyD DPR:$Vm))))]> {
3068 (outs QPR:$Vd), (ins DPR:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane),
3069 NVMulSLFrm, itin, OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "",
3072 (TyD (ARMvduplane (TyD DPR_VFP2:$Vm),imm:$lane)))))]>;
3077 (outs QPR:$Vd), (ins DPR:$Vn, DPR_8:$Vm, VectorIndex16:$lane),
3078 NVMulSLFrm, itin, OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "",
3081 (TyD (ARMvduplane (TyD DPR_8:$Vm), imm:$lane)))))]>;
3089 (outs QPR:$Vd), (ins DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
3090 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
3092 (TyQ (ExtOp (TyD DPR:$Vm)))))]> {
3102 (outs QPR:$Vd), (ins DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
3103 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
3105 (TyD DPR:$Vm))))))]> {
3114 (outs QPR:$Vd), (ins DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
3115 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
3116 [(set QPR:$Vd, (TyQ (IntOp (TyD DPR:$Vn), (TyD DPR:$Vm))))]> {
3126 (outs QPR:$Vd), (ins DPR:$Vn, DPR:$Vm), N3RegFrm, itin, OpcodeStr, Dt,
3127 [(set QPR:$Vd, (ResTy (IntOp (OpTy DPR:$Vn), (OpTy DPR:$Vm))))]> {
3136 (outs QPR:$Vd), (ins DPR:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane),
3137 NVMulSLFrm, itin, OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "",
3140 (OpTy (ARMvduplane (OpTy DPR_VFP2:$Vm),
3146 (outs QPR:$Vd), (ins DPR:$Vn, DPR_8:$Vm, VectorIndex16:$lane),
3147 NVMulSLFrm, itin, OpcodeStr, Dt, "$Vd, $Vn, $Vm$lane", "",
3150 (OpTy (ARMvduplane (OpTy DPR_8:$Vm),
3158 (outs QPR:$Vd), (ins QPR:$Vn, DPR:$Vm), N3RegFrm, IIC_VSUBiD,
3159 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
3161 (TyQ (ExtOp (TyD DPR:$Vm)))))]> {
3173 (ins DPR:$Vm), IIC_VSHLiD, OpcodeStr, Dt, "$Vd, $Vm", "",
3174 [(set DPR:$Vd, (ResTy (IntOp (OpTy DPR:$Vm))))]>;
3180 (ins QPR:$Vm), IIC_VSHLiD, OpcodeStr, Dt, "$Vd, $Vm", "",
3181 [(set QPR:$Vd, (ResTy (IntOp (OpTy QPR:$Vm))))]>;
3191 (outs DPR:$Vd), (ins DPR:$src1, DPR:$Vm), IIC_VPALiD,
3192 OpcodeStr, Dt, "$Vd, $Vm", "$src1 = $Vd",
3193 [(set DPR:$Vd, (ResTy (IntOp (ResTy DPR:$src1), (OpTy DPR:$Vm))))]>;
3199 (outs QPR:$Vd), (ins QPR:$src1, QPR:$Vm), IIC_VPALiQ,
3200 OpcodeStr, Dt, "$Vd, $Vm", "$src1 = $Vd",
3201 [(set QPR:$Vd, (ResTy (IntOp (ResTy QPR:$src1), (OpTy QPR:$Vm))))]>;
3205 let TwoOperandAliasConstraint = "$Vm = $Vd" in {
3210 (outs DPR:$Vd), (ins DPR:$Vm, ImmTy:$SIMM), f, itin,
3211 OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "",
3212 [(set DPR:$Vd, (Ty (OpNode (Ty DPR:$Vm), (i32 imm:$SIMM))))]>;
3217 (outs QPR:$Vd), (ins QPR:$Vm, ImmTy:$SIMM), f, itin,
3218 OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "",
3219 [(set QPR:$Vd, (Ty (OpNode (Ty QPR:$Vm), (i32 imm:$SIMM))))]>;
3228 (outs QPR:$Vd), (ins DPR:$Vm, ImmTy:$SIMM), N2RegVShLFrm,
3229 IIC_VSHLiD, OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "",
3230 [(set QPR:$Vd, (ResTy (OpNode (OpTy DPR:$Vm), ImmTy:$SIMM)))]>;
3238 (outs DPR:$Vd), (ins QPR:$Vm, ImmTy:$SIMM), N2RegVShRFrm, itin,
3239 OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "",
3240 [(set DPR:$Vd, (ResTy (OpNode (OpTy QPR:$Vm),
3245 let TwoOperandAliasConstraint = "$Vm = $Vd" in {
3250 (ins DPR:$src1, DPR:$Vm, ImmTy:$SIMM), N2RegVShRFrm, IIC_VPALiD,
3251 OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "$src1 = $Vd",
3253 (Ty (ShOp DPR:$Vm, (i32 imm:$SIMM))))))]>;
3258 (ins QPR:$src1, QPR:$Vm, ImmTy:$SIMM), N2RegVShRFrm, IIC_VPALiD,
3259 OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "$src1 = $Vd",
3261 (Ty (ShOp QPR:$Vm, (i32 imm:$SIMM))))))]>;
3266 let TwoOperandAliasConstraint = "$Vm = $Vd" in {
3271 (ins DPR:$src1, DPR:$Vm, ImmTy:$SIMM), f, IIC_VSHLiD,
3272 OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "$src1 = $Vd",
3273 [(set DPR:$Vd, (Ty (ShOp DPR:$src1, DPR:$Vm, (i32 imm:$SIMM))))]>;
3278 (ins QPR:$src1, QPR:$Vm, ImmTy:$SIMM), f, IIC_VSHLiQ,
3279 OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "$src1 = $Vd",
3280 [(set QPR:$Vd, (Ty (ShOp QPR:$src1, QPR:$Vm, (i32 imm:$SIMM))))]>;
3289 (outs DPR:$Vd), (ins DPR:$Vm, neon_vcvt_imm32:$SIMM), NVCVTFrm,
3290 IIC_VUNAD, OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "",
3291 [(set DPR:$Vd, (ResTy (IntOp (OpTy DPR:$Vm), (i32 imm:$SIMM))))]>;
3296 (outs QPR:$Vd), (ins QPR:$Vm, neon_vcvt_imm32:$SIMM), NVCVTFrm,
3297 IIC_VUNAQ, OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "",
3298 [(set QPR:$Vd, (ResTy (IntOp (OpTy QPR:$Vm), (i32 imm:$SIMM))))]>;
3319 (outs DPR:$Vd), (ins DPR:$Vm), NoItinerary,
3321 [(set DPR:$Vd, (v8i8 (ARMvcmpz (v8i8 DPR:$Vm), fc)))]>;
3323 (outs DPR:$Vd), (ins DPR:$Vm), NoItinerary,
3325 [(set DPR:$Vd, (v4i16 (ARMvcmpz (v4i16 DPR:$Vm), fc)))]>;
3327 (outs DPR:$Vd), (ins DPR:$Vm), NoItinerary,
3329 [(set DPR:$Vd, (v2i32 (ARMvcmpz (v2i32 DPR:$Vm), fc)))]>;
3331 (outs DPR:$Vd), (ins DPR:$Vm), NoItinerary,
3333 [(set DPR:$Vd, (v2i32 (ARMvcmpz (v2f32 DPR:$Vm), fc)))]> {
3337 (outs DPR:$Vd), (ins DPR:$Vm), NoItinerary,
3339 [(set DPR:$Vd, (v4i16 (ARMvcmpz (v4f16 DPR:$Vm), fc)))]>,
3346 (outs QPR:$Vd), (ins QPR:$Vm), NoItinerary,
3348 [(set QPR:$Vd, (v16i8 (ARMvcmpz (v16i8 QPR:$Vm), fc)))]>;
3350 (outs QPR:$Vd), (ins QPR:$Vm), NoItinerary,
3352 [(set QPR:$Vd, (v8i16 (ARMvcmpz (v8i16 QPR:$Vm), fc)))]>;
3354 (outs QPR:$Vd), (ins QPR:$Vm), NoItinerary,
3356 [(set QPR:$Vd, (v4i32 (ARMvcmpz (v4i32 QPR:$Vm), fc)))]>;
3358 (outs QPR:$Vd), (ins QPR:$Vm), NoItinerary,
3360 [(set QPR:$Vd, (v4i32 (ARMvcmpz (v4f32 QPR:$Vm), fc)))]> {
3364 (outs QPR:$Vd), (ins QPR:$Vm), NoItinerary,
3366 [(set QPR:$Vd, (v8i16 (ARMvcmpz (v8f16 QPR:$Vm), fc)))]>,
3377 (outs QPR:$Vd), (ins QPR:$Vn, QPR:$Vm), N3RegFrm, itin,
3378 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
3379 [(set QPR:$Vd, (ResTy (ARMvcmp (OpTy QPR:$Vn), (OpTy QPR:$Vm), fc)))]> {
3389 (outs DPR:$Vd), (ins DPR:$Vn, DPR:$Vm), N3RegFrm, itin,
3390 OpcodeStr, Dt, "$Vd, $Vn, $Vm", "",
3391 [(set DPR:$Vd, (ResTy (ARMvcmp (OpTy DPR:$Vn), (OpTy DPR:$Vm), fc)))]> {
4300 def : Pat<(v8i8 (trunc (ARMvshruImm (add (v8i16 QPR:$Vn), QPR:$Vm), 8))),
4301 (VADDHNv8i8 QPR:$Vn, QPR:$Vm)>;
4302 def : Pat<(v4i16 (trunc (ARMvshruImm (add (v4i32 QPR:$Vn), QPR:$Vm), 16))),
4303 (VADDHNv4i16 QPR:$Vn, QPR:$Vm)>;
4304 def : Pat<(v2i32 (trunc (ARMvshruImm (add (v2i64 QPR:$Vn), QPR:$Vm), 32))),
4305 (VADDHNv2i32 QPR:$Vn, QPR:$Vm)>;
4530 (v4i16 DPR:$Vm))),
4531 (v4i16 (VQRDMLAHv4i16 DPR:$src1, DPR:$Vn, DPR:$Vm))>;
4533 (v2i32 DPR:$Vm))),
4534 (v2i32 (VQRDMLAHv2i32 DPR:$src1, DPR:$Vn, DPR:$Vm))>;
4536 (v8i16 QPR:$Vm))),
4537 (v8i16 (VQRDMLAHv8i16 QPR:$src1, QPR:$Vn, QPR:$Vm))>;
4539 (v4i32 QPR:$Vm))),
4540 (v4i32 (VQRDMLAHv4i32 QPR:$src1, QPR:$Vn, QPR:$Vm))>;
4547 (v4i16 (ARMvduplane (v4i16 DPR_8:$Vm),
4549 (v4i16 (VQRDMLAHslv4i16 DPR:$src1, DPR:$Vn, DPR_8:$Vm,
4553 (v2i32 (ARMvduplane (v2i32 DPR_VFP2:$Vm),
4555 (v2i32 (VQRDMLAHslv2i32 DPR:$src1, DPR:$Vn, DPR_VFP2:$Vm,
4584 (v4i16 DPR:$Vm))),
4585 (v4i16 (VQRDMLSHv4i16 DPR:$src1, DPR:$Vn, DPR:$Vm))>;
4587 (v2i32 DPR:$Vm))),
4588 (v2i32 (VQRDMLSHv2i32 DPR:$src1, DPR:$Vn, DPR:$Vm))>;
4590 (v8i16 QPR:$Vm))),
4591 (v8i16 (VQRDMLSHv8i16 QPR:$src1, QPR:$Vn, QPR:$Vm))>;
4593 (v4i32 QPR:$Vm))),
4594 (v4i32 (VQRDMLSHv4i32 QPR:$src1, QPR:$Vn, QPR:$Vm))>;
4601 (v4i16 (ARMvduplane (v4i16 DPR_8:$Vm),
4603 (v4i16 (VQRDMLSHslv4i16 DPR:$src1, DPR:$Vn, DPR_8:$Vm, imm:$lane))>;
4606 (v2i32 (ARMvduplane (v2i32 DPR_VFP2:$Vm),
4608 (v2i32 (VQRDMLSHslv2i32 DPR:$src1, DPR:$Vn, DPR_VFP2:$Vm,
4639 (v4i16 DPR:$Vm))))),
4640 (VQDMLALv4i32 QPR:$src1, DPR:$Vn, DPR:$Vm)>;
4643 (v2i32 DPR:$Vm))))),
4644 (VQDMLALv2i64 QPR:$src1, DPR:$Vn, DPR:$Vm)>;
4647 (v4i16 (ARMvduplane (v4i16 DPR_8:$Vm),
4649 (VQDMLALslv4i16 QPR:$src1, DPR:$Vn, DPR_8:$Vm, imm:$lane)>;
4652 (v2i32 (ARMvduplane (v2i32 DPR_VFP2:$Vm),
4654 (VQDMLALslv2i32 QPR:$src1, DPR:$Vn, DPR_VFP2:$Vm, imm:$lane)>;
4731 (v4i16 DPR:$Vm))))),
4732 (VQDMLSLv4i32 QPR:$src1, DPR:$Vn, DPR:$Vm)>;
4735 (v2i32 DPR:$Vm))))),
4736 (VQDMLSLv2i64 QPR:$src1, DPR:$Vn, DPR:$Vm)>;
4739 (v4i16 (ARMvduplane (v4i16 DPR_8:$Vm),
4741 (VQDMLSLslv4i16 QPR:$src1, DPR:$Vn, DPR_8:$Vm, imm:$lane)>;
4744 (v2i32 (ARMvduplane (v2i32 DPR_VFP2:$Vm),
4746 (VQDMLSLslv2i32 QPR:$src1, DPR:$Vn, DPR_VFP2:$Vm, imm:$lane)>;
4780 def : Pat<(v4f16 (fma DPR:$Vn, DPR:$Vm, DPR:$src1)),
4781 (VFMAhd DPR:$src1, DPR:$Vn, DPR:$Vm)>,
4783 def : Pat<(v8f16 (fma QPR:$Vn, QPR:$Vm, QPR:$src1)),
4784 (VFMAhq QPR:$src1, QPR:$Vn, QPR:$Vm)>,
4786 def : Pat<(v2f32 (fma DPR:$Vn, DPR:$Vm, DPR:$src1)),
4787 (VFMAfd DPR:$src1, DPR:$Vn, DPR:$Vm)>,
4789 def : Pat<(v4f32 (fma QPR:$Vn, QPR:$Vm, QPR:$src1)),
4790 (VFMAfq QPR:$src1, QPR:$Vn, QPR:$Vm)>,
4792 def : Pat<(v2f32 (fma (fneg DPR:$Vn), DPR:$Vm, DPR:$src1)),
4793 (VFMSfd DPR:$src1, DPR:$Vn, DPR:$Vm)>,
4795 def : Pat<(v4f32 (fma (fneg QPR:$Vn), QPR:$Vm, QPR:$src1)),
4796 (VFMSfq QPR:$src1, QPR:$Vn, QPR:$Vm)>,
4807 (ins RegTy:$Vd, RegTy:$Vn, RegTy:$Vm), N3RegFrm, IIC_VDOTPROD,
4812 (InputTy RegTy:$Vm)))]> {
4828 (ins Ty:$Vd, Ty:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane),
4832 let AsmString = !strconcat(opc, ".", dt, "\t$Vd, $Vn, $Vm$lane");
4842 (ARMvduplane (AccumType Ty:$Vm),
4848 int_arm_neon_udot, (v2i32 DPR_VFP2:$Vm)>;
4850 int_arm_neon_sdot, (v2i32 DPR_VFP2:$Vm)>;
4852 int_arm_neon_udot, (EXTRACT_SUBREG QPR:$Vm, dsub_0)>;
4854 int_arm_neon_sdot, (EXTRACT_SUBREG QPR:$Vm, dsub_0)>;
4861 (ins QPR:$Vd, QPR:$Vn, QPR:$Vm), N3RegFrm, NoItinerary,
4865 (v16i8 QPR:$Vm)))]> {
4875 (ins RegTy:$Vd, RegTy:$Vn, DPR_VFP2:$Vm, VectorIndex32:$lane), N3RegFrm,
4879 let AsmString = !strconcat(Asm, ".", AsmTy, "\t$Vd, $Vn, $Vm$lane");
4888 (ARMvduplane (AccumTy RegTy:$Vm),
4899 (ARMvduplane (AccumTy RegTy:$Vm),
4912 int_arm_neon_usdot, (v2i32 DPR_VFP2:$Vm)>;
4914 int_arm_neon_usdot, (EXTRACT_SUBREG QPR:$Vm, dsub_0)>;
4915 defm VSUDOTDI : SUDOTLane<0, DPR, v2i32, v8i8, (v2i32 DPR_VFP2:$Vm)>;
4916 defm VSUDOTQI : SUDOTLane<1, QPR, v4i32, v16i8, (EXTRACT_SUBREG QPR:$Vm, dsub_0)>;
4924 iops, itin, opc, dt, "$Vd, $Vn, $Vm, $rot", "$src1 = $Vd", pattern>{
4933 iops, itin, opc, dt, "$Vd, $Vn, $Vm, $rot", "", pattern> {
4942 "$Vd, $Vn, $Vm$lane, $rot", "$src1 = $Vd", pattern> {
4954 "$Vd, $Vn, $Vm$lane, $rot", "$src1 = $Vd", pattern> {
4959 let Inst{5} = Vm{4};
4970 (ins DPR:$src1, DPR:$Vn, DPR:$Vm, complexrotateop:$rot),
4973 (ins QPR:$src1, QPR:$Vn, QPR:$Vm, complexrotateop:$rot),
4978 (ins DPR:$src1, DPR:$Vn, DPR:$Vm, complexrotateop:$rot),
4981 (ins QPR:$src1, QPR:$Vn, QPR:$Vm, complexrotateop:$rot),
4991 (ins DPR:$Vn, DPR:$Vm, complexrotateopodd:$rot),
4995 (ins QPR:$Vn, QPR:$Vm, complexrotateopodd:$rot),
5001 (ins DPR:$Vn, DPR:$Vm, complexrotateopodd:$rot),
5005 (ins QPR:$Vn, QPR:$Vm, complexrotateopodd:$rot),
5016 (ins DPR:$src1, DPR:$Vn, DPR_VFP2:$Vm,
5021 (ins QPR:$src1, QPR:$Vn, DPR_VFP2:$Vm,
5028 (ins DPR:$src1, DPR:$Vn, DPR:$Vm, VectorIndex64:$lane,
5033 (ins QPR:$src1, QPR:$Vn, DPR:$Vm, VectorIndex64:$lane,
5108 def : Pat<(v8i8 (trunc (ARMvshruImm (sub (v8i16 QPR:$Vn), QPR:$Vm), 8))),
5109 (VSUBHNv8i8 QPR:$Vn, QPR:$Vm)>;
5110 def : Pat<(v4i16 (trunc (ARMvshruImm (sub (v4i32 QPR:$Vn), QPR:$Vm), 16))),
5111 (VSUBHNv4i16 QPR:$Vn, QPR:$Vm)>;
5112 def : Pat<(v2i32 (trunc (ARMvshruImm (sub (v2i64 QPR:$Vn), QPR:$Vm), 32))),
5113 (VSUBHNv2i32 QPR:$Vn, QPR:$Vm)>;
5132 let TwoOperandAliasConstraint = "$Vm = $Vd" in
5134 "$Vd, $Vm, #0", ARMCCeq>;
5152 let TwoOperandAliasConstraint = "$Vm = $Vd" in {
5154 "$Vd, $Vm, #0", ARMCCge>;
5156 "$Vd, $Vm, #0", ARMCCle>;
5175 let TwoOperandAliasConstraint = "$Vm = $Vd" in {
5177 "$Vd, $Vm, #0", ARMCCgt>;
5179 "$Vd, $Vm, #0", ARMCClt>;
5208 def: NEONInstAlias<"vaclt${p}.f32 $Vd, $Vn, $Vm",
5209 (VACGTfd DPR:$Vd, DPR:$Vm, DPR:$Vn, pred:$p)>;
5210 def: NEONInstAlias<"vaclt${p}.f32 $Vd, $Vn, $Vm",
5211 (VACGTfq QPR:$Vd, QPR:$Vm, QPR:$Vn, pred:$p)>;
5212 def: NEONInstAlias<"vacle${p}.f32 $Vd, $Vn, $Vm",
5213 (VACGEfd DPR:$Vd, DPR:$Vm, DPR:$Vn, pred:$p)>;
5214 def: NEONInstAlias<"vacle${p}.f32 $Vd, $Vn, $Vm",
5215 (VACGEfq QPR:$Vd, QPR:$Vm, QPR:$Vn, pred:$p)>;
5217 def: NEONInstAlias<"vaclt${p}.f16 $Vd, $Vn, $Vm",
5218 (VACGThd DPR:$Vd, DPR:$Vm, DPR:$Vn, pred:$p)>;
5219 def: NEONInstAlias<"vaclt${p}.f16 $Vd, $Vn, $Vm",
5220 (VACGThq QPR:$Vd, QPR:$Vm, QPR:$Vn, pred:$p)>;
5221 def: NEONInstAlias<"vacle${p}.f16 $Vd, $Vn, $Vm",
5222 (VACGEhd DPR:$Vd, DPR:$Vm, DPR:$Vn, pred:$p)>;
5223 def: NEONInstAlias<"vacle${p}.f16 $Vd, $Vn, $Vm",
5224 (VACGEhq QPR:$Vd, QPR:$Vm, QPR:$Vn, pred:$p)>;
5232 : N3VCP8<op1, op2, 1, op3, (outs Td:$Vd), (ins Tn:$Vn, Tm:$Vm), NoItinerary,
5233 asm, "f16", "$Vd, $Vn, $Vm", "", []>;
5237 : N3VCP8Q0<op1, op2, 0, op3, (outs Td:$Vd), (ins Tn:$Vn, Tm:$Vm), NoItinerary,
5238 asm, "f16", "$Vd, $Vn, $Vm", "", []>;
5243 (ins SPR:$Vn, SPR_8:$Vm, VectorIndex32:$idx),
5244 IIC_VMACD, opc, type, "$Vd, $Vn, $Vm$idx", "", []> {
5249 let Inst{5} = Vm{0};
5250 let Inst{2-0} = Vm{3-1};
5256 (ins DPR:$Vn, DPR_8:$Vm, VectorIndex16:$idx),
5257 IIC_VMACD, opc, type, "$Vd, $Vn, $Vm$idx", "", []> {
5275 def: NEONInstAlias<"vaclt${p}.f32 $Vd, $Vm",
5276 (VACGTfd DPR:$Vd, DPR:$Vm, DPR:$Vd, pred:$p)>;
5277 def: NEONInstAlias<"vaclt${p}.f32 $Vd, $Vm",
5278 (VACGTfq QPR:$Vd, QPR:$Vm, QPR:$Vd, pred:$p)>;
5279 def: NEONInstAlias<"vacle${p}.f32 $Vd, $Vm",
5280 (VACGEfd DPR:$Vd, DPR:$Vm, DPR:$Vd, pred:$p)>;
5281 def: NEONInstAlias<"vacle${p}.f32 $Vd, $Vm",
5282 (VACGEfq QPR:$Vd, QPR:$Vm, QPR:$Vd, pred:$p)>;
5284 def: NEONInstAlias<"vaclt${p}.f16 $Vd, $Vm",
5285 (VACGThd DPR:$Vd, DPR:$Vm, DPR:$Vd, pred:$p)>;
5286 def: NEONInstAlias<"vaclt${p}.f16 $Vd, $Vm",
5287 (VACGThq QPR:$Vd, QPR:$Vm, QPR:$Vd, pred:$p)>;
5288 def: NEONInstAlias<"vacle${p}.f16 $Vd, $Vm",
5289 (VACGEhd DPR:$Vd, DPR:$Vm, DPR:$Vd, pred:$p)>;
5290 def: NEONInstAlias<"vacle${p}.f16 $Vd, $Vm",
5291 (VACGEhq QPR:$Vd, QPR:$Vm, QPR:$Vd, pred:$p)>;
5383 (ins DPR:$Vn, DPR:$Vm), N3RegFrm, IIC_VBINiD,
5384 "vbic", "$Vd, $Vn, $Vm", "",
5386 (vnotd DPR:$Vm))))]>;
5388 (ins QPR:$Vn, QPR:$Vm), N3RegFrm, IIC_VBINiQ,
5389 "vbic", "$Vd, $Vn, $Vm", "",
5391 (vnotq QPR:$Vm))))]>;
5437 (ins DPR:$Vn, DPR:$Vm), N3RegFrm, IIC_VBINiD,
5438 "vorn", "$Vd, $Vn, $Vm", "",
5440 (vnotd DPR:$Vm))))]>;
5442 (ins QPR:$Vn, QPR:$Vm), N3RegFrm, IIC_VBINiQ,
5443 "vorn", "$Vd, $Vn, $Vm", "",
5445 (vnotq QPR:$Vm))))]>;
5487 (outs DPR:$Vd), (ins DPR:$Vm), IIC_VSUBiD,
5488 "vmvn", "$Vd, $Vm", "",
5489 [(set DPR:$Vd, (v2i32 (vnotd DPR:$Vm)))]>;
5491 (outs QPR:$Vd), (ins QPR:$Vm), IIC_VSUBiD,
5492 "vmvn", "$Vd, $Vm", "",
5493 [(set QPR:$Vd, (v4i32 (vnotq QPR:$Vm)))]>;
5514 : PseudoNeonI<(outs DPR:$Vd), (ins DPR:$src1, DPR:$Vn, DPR:$Vm),
5517 (v2i32 (NEONvbsp DPR:$src1, DPR:$Vn, DPR:$Vm)))]>;
5520 (v8i8 DPR:$Vn), (v8i8 DPR:$Vm))),
5521 (VBSPd DPR:$src1, DPR:$Vn, DPR:$Vm)>;
5523 (v4i16 DPR:$Vn), (v4i16 DPR:$Vm))),
5524 (VBSPd DPR:$src1, DPR:$Vn, DPR:$Vm)>;
5526 (v2i32 DPR:$Vn), (v2i32 DPR:$Vm))),
5527 (VBSPd DPR:$src1, DPR:$Vn, DPR:$Vm)>;
5529 (v2f32 DPR:$Vn), (v2f32 DPR:$Vm))),
5530 (VBSPd DPR:$src1, DPR:$Vn, DPR:$Vm)>;
5532 (v1i64 DPR:$Vn), (v1i64 DPR:$Vm))),
5533 (VBSPd DPR:$src1, DPR:$Vn, DPR:$Vm)>;
5536 (and DPR:$Vm, (vnotd DPR:$Vd)))),
5537 (VBSPd DPR:$Vd, DPR:$Vn, DPR:$Vm)>;
5539 (and DPR:$Vm, (vnotd DPR:$Vd)))),
5540 (VBSPd DPR:$Vd, DPR:$Vn, DPR:$Vm)>;
5542 (and DPR:$Vm, (vnotd DPR:$Vd)))),
5543 (VBSPd DPR:$Vd, DPR:$Vn, DPR:$Vm)>;
5545 (and DPR:$Vm, (vnotd DPR:$Vd)))),
5546 (VBSPd DPR:$Vd, DPR:$Vn, DPR:$Vm)>;
5550 : PseudoNeonI<(outs QPR:$Vd), (ins QPR:$src1, QPR:$Vn, QPR:$Vm),
5553 (v4i32 (NEONvbsp QPR:$src1, QPR:$Vn, QPR:$Vm)))]>;
5556 (v16i8 QPR:$Vn), (v16i8 QPR:$Vm))),
5557 (VBSPq QPR:$src1, QPR:$Vn, QPR:$Vm)>;
5559 (v8i16 QPR:$Vn), (v8i16 QPR:$Vm))),
5560 (VBSPq QPR:$src1, QPR:$Vn, QPR:$Vm)>;
5562 (v4i32 QPR:$Vn), (v4i32 QPR:$Vm))),
5563 (VBSPq QPR:$src1, QPR:$Vn, QPR:$Vm)>;
5565 (v4f32 QPR:$Vn), (v4f32 QPR:$Vm))),
5566 (VBSPq QPR:$src1, QPR:$Vn, QPR:$Vm)>;
5568 (v2i64 QPR:$Vn), (v2i64 QPR:$Vm))),
5569 (VBSPq QPR:$src1, QPR:$Vn, QPR:$Vm)>;
5572 (and QPR:$Vm, (vnotq QPR:$Vd)))),
5573 (VBSPq QPR:$Vd, QPR:$Vn, QPR:$Vm)>;
5575 (and QPR:$Vm, (vnotq QPR:$Vd)))),
5576 (VBSPq QPR:$Vd, QPR:$Vn, QPR:$Vm)>;
5578 (and QPR:$Vm, (vnotq QPR:$Vd)))),
5579 (VBSPq QPR:$Vd, QPR:$Vn, QPR:$Vm)>;
5581 (and QPR:$Vm, (vnotq QPR:$Vd)))),
5582 (VBSPq QPR:$Vd, QPR:$Vn, QPR:$Vm)>;
5587 (ins DPR:$src1, DPR:$Vn, DPR:$Vm),
5589 "vbsl", "$Vd, $Vn, $Vm", "$src1 = $Vd",
5593 (ins QPR:$src1, QPR:$Vn, QPR:$Vm),
5595 "vbsl", "$Vd, $Vn, $Vm", "$src1 = $Vd",
5601 (outs DPR:$Vd), (ins DPR:$src1, DPR:$Vn, DPR:$Vm),
5603 "vbif", "$Vd, $Vn, $Vm", "$src1 = $Vd",
5606 (outs QPR:$Vd), (ins QPR:$src1, QPR:$Vn, QPR:$Vm),
5608 "vbif", "$Vd, $Vn, $Vm", "$src1 = $Vd",
5614 (outs DPR:$Vd), (ins DPR:$src1, DPR:$Vn, DPR:$Vm),
5616 "vbit", "$Vd, $Vn, $Vm", "$src1 = $Vd",
5619 (outs QPR:$Vd), (ins QPR:$src1, QPR:$Vn, QPR:$Vm),
5621 "vbit", "$Vd, $Vn, $Vm", "$src1 = $Vd",
6137 : N2V<0b11, 0b11, size, 0b01, 0b00111, 0, 0, (outs DPR:$Vd), (ins DPR:$Vm),
6138 IIC_VSHLiD, OpcodeStr, Dt, "$Vd, $Vm", "",
6139 [(set DPR:$Vd, (Ty (vnegd DPR:$Vm)))]>;
6141 : N2V<0b11, 0b11, size, 0b01, 0b00111, 1, 0, (outs QPR:$Vd), (ins QPR:$Vm),
6142 IIC_VSHLiQ, OpcodeStr, Dt, "$Vd, $Vm", "",
6143 [(set QPR:$Vd, (Ty (vnegq QPR:$Vm)))]>;
6155 (outs DPR:$Vd), (ins DPR:$Vm), IIC_VUNAD,
6156 "vneg", "f32", "$Vd, $Vm", "",
6157 [(set DPR:$Vd, (v2f32 (fneg DPR:$Vm)))]>;
6159 (outs QPR:$Vd), (ins QPR:$Vm), IIC_VUNAQ,
6160 "vneg", "f32", "$Vd, $Vm", "",
6161 [(set QPR:$Vd, (v4f32 (fneg QPR:$Vm)))]>;
6163 (outs DPR:$Vd), (ins DPR:$Vm), IIC_VUNAD,
6164 "vneg", "f16", "$Vd, $Vm", "",
6165 [(set DPR:$Vd, (v4f16 (fneg DPR:$Vm)))]>,
6168 (outs QPR:$Vd), (ins QPR:$Vm), IIC_VUNAQ,
6169 "vneg", "f16", "$Vd, $Vm", "",
6170 [(set QPR:$Vd, (v8f16 (fneg QPR:$Vm)))]>,
6207 (outs DPR:$Vd, DPR:$Vm), (ins DPR:$in1, DPR:$in2),
6208 NoItinerary, "vswp", "$Vd, $Vm", "$in1 = $Vd, $in2 = $Vm",
6211 (outs QPR:$Vd, QPR:$Vm), (ins QPR:$in1, QPR:$in2),
6212 NoItinerary, "vswp", "$Vd, $Vm", "$in1 = $Vd, $in2 = $Vm",
6218 def : NEONInstAlias<"vmov${p} $Vd, $Vm",
6219 (VORRd DPR:$Vd, DPR:$Vm, DPR:$Vm, pred:$p)>;
6220 def : NEONInstAlias<"vmov${p} $Vd, $Vm",
6221 (VORRq QPR:$Vd, QPR:$Vm, QPR:$Vm, pred:$p)>;
6294 def : NEONInstAlias<"vmov${p}.i" # To.Size # " $Vd, $Vm",
6295 (VMOVv8i8 DPR:$Vd, nImmVMOVIReplicate<i8, To>:$Vm, pred:$p)>;
6296 def : NEONInstAlias<"vmov${p}.i" # To.Size # " $Vd, $Vm",
6297 (VMOVv16i8 QPR:$Vd, nImmVMOVIReplicate<i8, To>:$Vm, pred:$p)>;
6302 def : NEONInstAlias<"vmvn${p}.i" # To.Size # " $Vd, $Vm",
6303 (VMOVv8i8 DPR:$Vd, nImmVINVIReplicate<i8, To>:$Vm, pred:$p)>;
6304 def : NEONInstAlias<"vmvn${p}.i" # To.Size # " $Vd, $Vm",
6305 (VMOVv16i8 QPR:$Vd, nImmVINVIReplicate<i8, To>:$Vm, pred:$p)>;
6318 def : NEONInstAlias<"vmov${p}.i" # To.Size # " $Vd, $Vm",
6319 (V8 DPR:$Vd, nImmVMOVIReplicate<From, To>:$Vm, pred:$p)>;
6320 def : NEONInstAlias<"vmov${p}.i" # To.Size # " $Vd, $Vm",
6321 (V16 QPR:$Vd, nImmVMOVIReplicate<From, To>:$Vm, pred:$p)>;
6322 def : NEONInstAlias<"vmvn${p}.i" # To.Size # " $Vd, $Vm",
6323 (NV8 DPR:$Vd, nImmVMOVIReplicate<From, To>:$Vm, pred:$p)>;
6324 def : NEONInstAlias<"vmvn${p}.i" # To.Size # " $Vd, $Vm",
6325 (NV16 QPR:$Vd, nImmVMOVIReplicate<From, To>:$Vm, pred:$p)>;
6660 : NVDupLane<op19_16, 0, (outs DPR:$Vd), (ins DPR:$Vm, IdxTy:$lane),
6661 IIC_VMOVD, OpcodeStr, Dt, "$Vd, $Vm$lane",
6662 [(set DPR:$Vd, (Ty (ARMvduplane (Ty DPR:$Vm), imm:$lane)))]>;
6666 : NVDupLane<op19_16, 1, (outs QPR:$Vd), (ins DPR:$Vm, IdxTy:$lane),
6667 IIC_VMOVQ, OpcodeStr, Dt, "$Vd, $Vm$lane",
6668 [(set QPR:$Vd, (ResTy (ARMvduplane (OpTy DPR:$Vm),
6699 def : Pat<(v4f16 (ARMvduplane (v4f16 DPR:$Vm), imm:$lane)),
6700 (VDUPLN32d DPR:$Vm, imm:$lane)>;
6702 def : Pat<(v2f32 (ARMvduplane (v2f32 DPR:$Vm), imm:$lane)),
6703 (VDUPLN32d DPR:$Vm, imm:$lane)>;
6705 def : Pat<(v4f32 (ARMvduplane (v2f32 DPR:$Vm), imm:$lane)),
6706 (VDUPLN32q DPR:$Vm, imm:$lane)>;
6744 def : Pat<(v4bf16 (ARMvduplane (v4bf16 DPR:$Vm), imm:$lane)),
6745 (VDUPLN16d DPR:$Vm, imm:$lane)>;
6775 def : Pat<(v8i16 (anyext (v8i8 DPR:$Vm))), (VMOVLuv8i16 DPR:$Vm)>;
6776 def : Pat<(v4i32 (anyext (v4i16 DPR:$Vm))), (VMOVLuv4i32 DPR:$Vm)>;
6777 def : Pat<(v2i64 (anyext (v2i32 DPR:$Vm))), (VMOVLuv2i64 DPR:$Vm)>;
6958 (ins DPR:$Vm), IIC_VMOVD,
6959 OpcodeStr, Dt, "$Vd, $Vm", "",
6960 [(set DPR:$Vd, (Ty (ARMvrev64 (Ty DPR:$Vm))))]>;
6963 (ins QPR:$Vm), IIC_VMOVQ,
6964 OpcodeStr, Dt, "$Vd, $Vm", "",
6965 [(set QPR:$Vd, (Ty (ARMvrev64 (Ty QPR:$Vm))))]>;
6971 def : Pat<(v2f32 (ARMvrev64 (v2f32 DPR:$Vm))), (VREV64d32 DPR:$Vm)>;
6979 def : Pat<(v4f32 (ARMvrev64 (v4f32 QPR:$Vm))),
6980 (VREV64q32 QPR:$Vm)>;
6981 def : Pat<(v8f16 (ARMvrev64 (v8f16 QPR:$Vm))),
6982 (VREV64q16 QPR:$Vm)>;
6983 def : Pat<(v4f16 (ARMvrev64 (v4f16 DPR:$Vm))),
6984 (VREV64d16 DPR:$Vm)>;
6991 (ins DPR:$Vm), IIC_VMOVD,
6992 OpcodeStr, Dt, "$Vd, $Vm", "",
6993 [(set DPR:$Vd, (Ty (ARMvrev32 (Ty DPR:$Vm))))]>;
6996 (ins QPR:$Vm), IIC_VMOVQ,
6997 OpcodeStr, Dt, "$Vd, $Vm", "",
6998 [(set QPR:$Vd, (Ty (ARMvrev32 (Ty QPR:$Vm))))]>;
7007 def : Pat<(v8f16 (ARMvrev32 (v8f16 QPR:$Vm))),
7008 (VREV32q16 QPR:$Vm)>;
7009 def : Pat<(v4f16 (ARMvrev32 (v4f16 DPR:$Vm))),
7010 (VREV32d16 DPR:$Vm)>;
7017 (ins DPR:$Vm), IIC_VMOVD,
7018 OpcodeStr, Dt, "$Vd, $Vm", "",
7019 [(set DPR:$Vd, (Ty (ARMvrev16 (Ty DPR:$Vm))))]>;
7022 (ins QPR:$Vm), IIC_VMOVQ,
7023 OpcodeStr, Dt, "$Vd, $Vm", "",
7024 [(set QPR:$Vd, (Ty (ARMvrev16 (Ty QPR:$Vm))))]>;
7057 (ins DPR:$Vn, DPR:$Vm, immTy:$index), NVExtFrm,
7058 IIC_VEXTD, OpcodeStr, Dt, "$Vd, $Vn, $Vm, $index", "",
7060 (Ty DPR:$Vm), imm:$index)))]> {
7068 (ins QPR:$Vn, QPR:$Vm, immTy:$index), NVExtFrm,
7069 IIC_VEXTQ, OpcodeStr, Dt, "$Vd, $Vn, $Vm, $index", "",
7071 (Ty QPR:$Vm), imm:$index)))]> {
7085 def : Pat<(v4f16 (NEONvext (v4f16 DPR:$Vn), (v4f16 DPR:$Vm), (i32 imm:$index))),
7086 (VEXTd16 DPR:$Vn, DPR:$Vm, imm:$index)>;
7094 def : Pat<(v2f32 (NEONvext (v2f32 DPR:$Vn), (v2f32 DPR:$Vm), (i32 imm:$index))),
7095 (VEXTd32 DPR:$Vn, DPR:$Vm, imm:$index)>;
7106 def : Pat<(v8f16 (NEONvext (v8f16 QPR:$Vn), (v8f16 QPR:$Vm), (i32 imm:$index))),
7107 (VEXTq16 QPR:$Vn, QPR:$Vm, imm:$index)>;
7119 def : Pat<(v4f32 (NEONvext (v4f32 QPR:$Vn), (v4f32 QPR:$Vm), (i32 imm:$index))),
7120 (VEXTq32 QPR:$Vn, QPR:$Vm, imm:$index)>;
7163 (ins VecListOneD:$Vn, DPR:$Vm), NVTBLFrm, IIC_VTB1,
7164 "vtbl", "8", "$Vd, $Vn, $Vm", "",
7165 [(set DPR:$Vd, (v8i8 (NEONvtbl1 VecListOneD:$Vn, DPR:$Vm)))]>;
7170 (ins VecListDPair:$Vn, DPR:$Vm), NVTBLFrm, IIC_VTB2,
7171 "vtbl", "8", "$Vd, $Vn, $Vm", "", []>;
7174 (ins VecListThreeD:$Vn, DPR:$Vm), NVTBLFrm, IIC_VTB3,
7175 "vtbl", "8", "$Vd, $Vn, $Vm", "", []>;
7178 (ins VecListFourD:$Vn, DPR:$Vm),
7180 "vtbl", "8", "$Vd, $Vn, $Vm", "", []>;
7191 (ins DPR:$orig, VecListOneD:$Vn, DPR:$Vm), NVTBLFrm, IIC_VTBX1,
7192 "vtbx", "8", "$Vd, $Vn, $Vm", "$orig = $Vd",
7194 DPR:$orig, VecListOneD:$Vn, DPR:$Vm)))]>;
7198 (ins DPR:$orig, VecListDPair:$Vn, DPR:$Vm), NVTBLFrm, IIC_VTBX2,
7199 "vtbx", "8", "$Vd, $Vn, $Vm", "$orig = $Vd", []>;
7202 (ins DPR:$orig, VecListThreeD:$Vn, DPR:$Vm),
7204 "vtbx", "8", "$Vd, $Vn, $Vm",
7208 (ins DPR:$orig, VecListFourD:$Vn, DPR:$Vm), NVTBLFrm, IIC_VTBX4,
7209 "vtbx", "8", "$Vd, $Vn, $Vm",
7222 def : Pat<(v8i8 (NEONvtbl2 v8i8:$Vn0, v8i8:$Vn1, v8i8:$Vm)),
7225 v8i8:$Vm))>;
7227 v8i8:$Vm)),
7231 v8i8:$Vm))>;
7234 v8i8:$Vn2, v8i8:$Vm)),
7239 v8i8:$Vm))>;
7241 v8i8:$Vn2, v8i8:$Vm)),
7247 v8i8:$Vm))>;
7250 v8i8:$Vn2, v8i8:$Vn3, v8i8:$Vm)),
7255 v8i8:$Vm))>;
7257 v8i8:$Vn2, v8i8:$Vn3, v8i8:$Vm)),
7263 v8i8:$Vm))>;
8103 defm : NEONDTAnyInstAlias<"vand${p}", "$Vd, $Vn, $Vm",
8104 (VANDd DPR:$Vd, DPR:$Vn, DPR:$Vm, pred:$p)>;
8105 defm : NEONDTAnyInstAlias<"vand${p}", "$Vd, $Vn, $Vm",
8106 (VANDq QPR:$Vd, QPR:$Vn, QPR:$Vm, pred:$p)>;
8107 defm : NEONDTAnyInstAlias<"vbic${p}", "$Vd, $Vn, $Vm",
8108 (VBICd DPR:$Vd, DPR:$Vn, DPR:$Vm, pred:$p)>;
8109 defm : NEONDTAnyInstAlias<"vbic${p}", "$Vd, $Vn, $Vm",
8110 (VBICq QPR:$Vd, QPR:$Vn, QPR:$Vm, pred:$p)>;
8111 defm : NEONDTAnyInstAlias<"veor${p}", "$Vd, $Vn, $Vm",
8112 (VEORd DPR:$Vd, DPR:$Vn, DPR:$Vm, pred:$p)>;
8113 defm : NEONDTAnyInstAlias<"veor${p}", "$Vd, $Vn, $Vm",
8114 (VEORq QPR:$Vd, QPR:$Vn, QPR:$Vm, pred:$p)>;
8115 defm : NEONDTAnyInstAlias<"vorr${p}", "$Vd, $Vn, $Vm",
8116 (VORRd DPR:$Vd, DPR:$Vn, DPR:$Vm, pred:$p)>;
8117 defm : NEONDTAnyInstAlias<"vorr${p}", "$Vd, $Vn, $Vm",
8118 (VORRq QPR:$Vd, QPR:$Vn, QPR:$Vm, pred:$p)>;
8120 defm : NEONDTAnyInstAlias<"vand${p}", "$Vdn, $Vm",
8121 (VANDd DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
8122 defm : NEONDTAnyInstAlias<"vand${p}", "$Vdn, $Vm",
8123 (VANDq QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
8124 defm : NEONDTAnyInstAlias<"veor${p}", "$Vdn, $Vm",
8125 (VEORd DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
8126 defm : NEONDTAnyInstAlias<"veor${p}", "$Vdn, $Vm",
8127 (VEORq QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
8128 defm : NEONDTAnyInstAlias<"vorr${p}", "$Vdn, $Vm",
8129 (VORRd DPR:$Vdn, DPR:$Vdn, DPR:$Vm, pred:$p)>;
8130 defm : NEONDTAnyInstAlias<"vorr${p}", "$Vdn, $Vm",
8131 (VORRq QPR:$Vdn, QPR:$Vdn, QPR:$Vm, pred:$p)>;
8979 defm : NEONDTAnyInstAlias<"vmov${p}", "$Vd, $Vm",
8980 (VORRd DPR:$Vd, DPR:$Vm, DPR:$Vm, pred:$p)>;
8981 defm : NEONDTAnyInstAlias<"vmov${p}", "$Vd, $Vm",
8982 (VORRq QPR:$Vd, QPR:$Vm, QPR:$Vm, pred:$p)>;
8984 defm : NEONDTAnyInstAlias<"vmvn${p}", "$Vd, $Vm",
8985 (VMVNd DPR:$Vd, DPR:$Vm, pred:$p)>;
8986 defm : NEONDTAnyInstAlias<"vmvn${p}", "$Vd, $Vm",
8987 (VMVNq QPR:$Vd, QPR:$Vm, pred:$p)>;
9066 defm : NEONDTAnyInstAlias<"vswp${p}", "$Vd, $Vm",
9067 (VSWPd DPR:$Vd, DPR:$Vm, pred:$p)>;
9068 defm : NEONDTAnyInstAlias<"vswp${p}", "$Vd, $Vm",
9069 (VSWPq QPR:$Vd, QPR:$Vm, pred:$p)>;
9072 defm : NEONDTAnyInstAlias<"vbif${p}", "$Vd, $Vn, $Vm",
9073 (VBIFd DPR:$Vd, DPR:$Vn, DPR:$Vm, pred:$p)>;
9074 defm : NEONDTAnyInstAlias<"vbit${p}", "$Vd, $Vn, $Vm",
9075 (VBITd DPR:$Vd, DPR:$Vn, DPR:$Vm, pred:$p)>;
9076 defm : NEONDTAnyInstAlias<"vbsl${p}", "$Vd, $Vn, $Vm",
9077 (VBSLd DPR:$Vd, DPR:$Vn, DPR:$Vm, pred:$p)>;
9078 defm : NEONDTAnyInstAlias<"vbif${p}", "$Vd, $Vn, $Vm",
9079 (VBIFq QPR:$Vd, QPR:$Vn, QPR:$Vm, pred:$p)>;
9080 defm : NEONDTAnyInstAlias<"vbit${p}", "$Vd, $Vn, $Vm",
9081 (VBITq QPR:$Vd, QPR:$Vn, QPR:$Vm, pred:$p)>;
9082 defm : NEONDTAnyInstAlias<"vbsl${p}", "$Vd, $Vn, $Vm",
9083 (VBSLq QPR:$Vd, QPR:$Vn, QPR:$Vm, pred:$p)>;
9156 (ins RegTy:$Vd, RegTy:$Vn, RegTy:$Vm),
9160 (InputTy RegTy:$Vm)))]> {
9162 let AsmString = !strconcat(opc, ".bf16", "\t$Vd, $Vn, $Vm");
9171 DPR_VFP2:$Vm, VectorIndex32:$lane), []> {
9175 let AsmString = !strconcat(opc, ".bf16", "\t$Vd, $Vn, $Vm$lane");
9183 (ARMvduplane (AccumTy RegTy:$Vm),
9191 defm BF16VDOTI_VDOTD : BF16VDOTI<0, DPR, "vdot", v2f32, v4bf16, (v2f32 DPR_VFP2:$Vm)>;
9192 defm BF16VDOTI_VDOTQ : BF16VDOTI<1, QPR, "vdot", v4f32, v8bf16, (EXTRACT_SUBREG QPR:$Vm, dsub_0)>;
9197 (outs RegTy:$dst), (ins RegTy:$Vd, RegTy:$Vn, RegTy:$Vm),
9201 (v8bf16 QPR:$Vm)))]> {
9203 let AsmString = !strconcat(opc, ".bf16", "\t$Vd, $Vn, $Vm");
9211 (outs QPR:$dst), (ins QPR:$Vd, QPR:$Vn, QPR:$Vm),
9212 NoItinerary, "vfma" # suffix, "bf16", "$Vd, $Vn, $Vm", "",
9216 (v8bf16 QPR:$Vm)))]> {
9226 (ins QPR:$Vd, QPR:$Vn, DPR_8:$Vm, VectorIndex16:$idx),
9227 IIC_VMACD, "vfma" # suffix, "bf16", "$Vd, $Vn, $Vm$idx", "", []> {
9238 (v8bf16 (ARMvduplane (v8bf16 QPR:$Vm),
9242 (EXTRACT_SUBREG QPR:$Vm,
9251 (outs DPR:$Vd), (ins QPR:$Vm),
9252 NoItinerary, "vcvt", "bf16.f32", "$Vd, $Vm", "", []>;