@@ -4852,29 +4852,29 @@ class sve_int_index_ii<bits<2> sz8_64, string asm, ZPRRegOp zprty,
4852
4852
let Inst{4-0} = Zd;
4853
4853
}
4854
4854
4855
- multiclass sve_int_index_ii<string asm, SDPatternOperator op , SDPatternOperator oneuseop > {
4855
+ multiclass sve_int_index_ii<string asm, SDPatternOperator step_vector , SDPatternOperator step_vector_oneuse > {
4856
4856
def _B : sve_int_index_ii<0b00, asm, ZPR8, simm5_8b>;
4857
4857
def _H : sve_int_index_ii<0b01, asm, ZPR16, simm5_16b>;
4858
4858
def _S : sve_int_index_ii<0b10, asm, ZPR32, simm5_32b>;
4859
4859
def _D : sve_int_index_ii<0b11, asm, ZPR64, simm5_64b>;
4860
4860
4861
- def : Pat<(nxv16i8 (op simm5_8b:$imm5b)),
4861
+ def : Pat<(nxv16i8 (step_vector simm5_8b:$imm5b)),
4862
4862
(!cast<Instruction>(NAME # "_B") (i32 0), simm5_8b:$imm5b)>;
4863
- def : Pat<(nxv8i16 (op simm5_16b:$imm5b)),
4863
+ def : Pat<(nxv8i16 (step_vector simm5_16b:$imm5b)),
4864
4864
(!cast<Instruction>(NAME # "_H") (i32 0), simm5_16b:$imm5b)>;
4865
- def : Pat<(nxv4i32 (op simm5_32b:$imm5b)),
4865
+ def : Pat<(nxv4i32 (step_vector simm5_32b:$imm5b)),
4866
4866
(!cast<Instruction>(NAME # "_S") (i32 0), simm5_32b:$imm5b)>;
4867
- def : Pat<(nxv2i64 (op simm5_64b:$imm5b)),
4867
+ def : Pat<(nxv2i64 (step_vector simm5_64b:$imm5b)),
4868
4868
(!cast<Instruction>(NAME # "_D") (i64 0), simm5_64b:$imm5b)>;
4869
4869
4870
4870
// add(step_vector(step), dup(X)) -> index(X, step).
4871
- def : Pat<(add (nxv16i8 (oneuseop simm5_8b:$imm5b)), (nxv16i8 (AArch64dup(simm5_8b:$imm5)))),
4871
+ def : Pat<(add (nxv16i8 (step_vector_oneuse simm5_8b:$imm5b)), (nxv16i8 (AArch64dup(simm5_8b:$imm5)))),
4872
4872
(!cast<Instruction>(NAME # "_B") simm5_8b:$imm5, simm5_8b:$imm5b)>;
4873
- def : Pat<(add (nxv8i16 (oneuseop simm5_16b:$imm5b)), (nxv8i16 (AArch64dup(simm5_16b:$imm5)))),
4873
+ def : Pat<(add (nxv8i16 (step_vector_oneuse simm5_16b:$imm5b)), (nxv8i16 (AArch64dup(simm5_16b:$imm5)))),
4874
4874
(!cast<Instruction>(NAME # "_H") simm5_16b:$imm5, simm5_16b:$imm5b)>;
4875
- def : Pat<(add (nxv4i32 (oneuseop simm5_32b:$imm5b)), (nxv4i32 (AArch64dup(simm5_32b:$imm5)))),
4875
+ def : Pat<(add (nxv4i32 (step_vector_oneuse simm5_32b:$imm5b)), (nxv4i32 (AArch64dup(simm5_32b:$imm5)))),
4876
4876
(!cast<Instruction>(NAME # "_S") simm5_32b:$imm5, simm5_32b:$imm5b)>;
4877
- def : Pat<(add (nxv2i64 (oneuseop simm5_64b:$imm5b)), (nxv2i64 (AArch64dup(simm5_64b:$imm5)))),
4877
+ def : Pat<(add (nxv2i64 (step_vector_oneuse simm5_64b:$imm5b)), (nxv2i64 (AArch64dup(simm5_64b:$imm5)))),
4878
4878
(!cast<Instruction>(NAME # "_D") simm5_64b:$imm5, simm5_64b:$imm5b)>;
4879
4879
}
4880
4880
@@ -4895,49 +4895,53 @@ class sve_int_index_ir<bits<2> sz8_64, string asm, ZPRRegOp zprty,
4895
4895
let Inst{4-0} = Zd;
4896
4896
}
4897
4897
4898
- multiclass sve_int_index_ir<string asm, SDPatternOperator op , SDPatternOperator oneuseop , SDPatternOperator mulop, SDPatternOperator muloneuseop> {
4898
+ multiclass sve_int_index_ir<string asm, SDPatternOperator step_vector , SDPatternOperator step_vector_oneuse , SDPatternOperator mulop, SDPatternOperator muloneuseop> {
4899
4899
def _B : sve_int_index_ir<0b00, asm, ZPR8, GPR32, simm5_8b>;
4900
4900
def _H : sve_int_index_ir<0b01, asm, ZPR16, GPR32, simm5_16b>;
4901
4901
def _S : sve_int_index_ir<0b10, asm, ZPR32, GPR32, simm5_32b>;
4902
4902
def _D : sve_int_index_ir<0b11, asm, ZPR64, GPR64, simm5_64b>;
4903
4903
4904
- def : Pat<(nxv16i8 (op GPR32:$Rm)),
4905
- (!cast<Instruction>(NAME # "_B") (i32 0), GPR32:$Rm)>;
4906
- def : Pat<(nxv8i16 (op GPR32:$Rm)),
4907
- (!cast<Instruction>(NAME # "_H") (i32 0), GPR32:$Rm)>;
4908
- def : Pat<(nxv4i32 (op GPR32:$Rm)),
4909
- (!cast<Instruction>(NAME # "_S") (i32 0), GPR32:$Rm)>;
4910
- def : Pat<(nxv2i64 (op GPR64:$Rm)),
4911
- (!cast<Instruction>(NAME # "_D") (i64 0), GPR64:$Rm)>;
4904
+ def : Pat<(nxv16i8 (step_vector (i32 imm:$imm))),
4905
+ (!cast<Instruction>(NAME # "_B") (i32 0), (!cast<Instruction>("MOVi32imm") imm:$imm))>;
4906
+ def : Pat<(nxv8i16 (step_vector (i32 imm:$imm))),
4907
+ (!cast<Instruction>(NAME # "_H") (i32 0), (!cast<Instruction>("MOVi32imm") imm:$imm))>;
4908
+ def : Pat<(nxv4i32 (step_vector (i32 imm:$imm))),
4909
+ (!cast<Instruction>(NAME # "_S") (i32 0), (!cast<Instruction>("MOVi32imm") imm:$imm))>;
4910
+ def : Pat<(nxv2i64 (step_vector (i64 imm:$imm))),
4911
+ (!cast<Instruction>(NAME # "_D") (i64 0), (!cast<Instruction>("MOVi64imm") imm:$imm))>;
4912
+ def : Pat<(nxv2i64 (step_vector (i64 !cast<ImmLeaf>("i64imm_32bit"):$imm))),
4913
+ (!cast<Instruction>(NAME # "_D") (i64 0), (SUBREG_TO_REG (i64 0), (!cast<Instruction>("MOVi32imm") (!cast<SDNodeXForm>("trunc_imm") imm:$imm)), sub_32))>;
4912
4914
4913
4915
// add(step_vector(step), dup(X)) -> index(X, step).
4914
- def : Pat<(add (nxv16i8 (oneuseop GPR32:$Rm)), (nxv16i8 (AArch64dup(simm5_8b:$imm5)))),
4915
- (!cast<Instruction>(NAME # "_B") simm5_8b:$imm5, GPR32:$Rm)>;
4916
- def : Pat<(add (nxv8i16 (oneuseop GPR32:$Rm)), (nxv8i16 (AArch64dup(simm5_16b:$imm5)))),
4917
- (!cast<Instruction>(NAME # "_H") simm5_16b:$imm5, GPR32:$Rm)>;
4918
- def : Pat<(add (nxv4i32 (oneuseop GPR32:$Rm)), (nxv4i32 (AArch64dup(simm5_32b:$imm5)))),
4919
- (!cast<Instruction>(NAME # "_S") simm5_32b:$imm5, GPR32:$Rm)>;
4920
- def : Pat<(add (nxv2i64 (oneuseop GPR64:$Rm)), (nxv2i64 (AArch64dup(simm5_64b:$imm5)))),
4921
- (!cast<Instruction>(NAME # "_D") simm5_64b:$imm5, GPR64:$Rm)>;
4916
+ def : Pat<(add (nxv16i8 (step_vector_oneuse (i32 imm:$imm))), (nxv16i8 (AArch64dup(simm5_8b:$imm5)))),
4917
+ (!cast<Instruction>(NAME # "_B") simm5_8b:$imm5, (!cast<Instruction>("MOVi32imm") imm:$imm))>;
4918
+ def : Pat<(add (nxv8i16 (step_vector_oneuse (i32 imm:$imm))), (nxv8i16 (AArch64dup(simm5_16b:$imm5)))),
4919
+ (!cast<Instruction>(NAME # "_H") simm5_16b:$imm5, (!cast<Instruction>("MOVi32imm") imm:$imm))>;
4920
+ def : Pat<(add (nxv4i32 (step_vector_oneuse (i32 imm:$imm))), (nxv4i32 (AArch64dup(simm5_32b:$imm5)))),
4921
+ (!cast<Instruction>(NAME # "_S") simm5_32b:$imm5, (!cast<Instruction>("MOVi32imm") imm:$imm))>;
4922
+ def : Pat<(add (nxv2i64 (step_vector_oneuse (i64 imm:$imm))), (nxv2i64 (AArch64dup(simm5_64b:$imm5)))),
4923
+ (!cast<Instruction>(NAME # "_D") simm5_64b:$imm5, (!cast<Instruction>("MOVi64imm") imm:$imm))>;
4924
+ def : Pat<(add (nxv2i64 (step_vector_oneuse (i64 !cast<ImmLeaf>("i64imm_32bit"):$imm))), (nxv2i64 (AArch64dup(simm5_64b:$imm5)))),
4925
+ (!cast<Instruction>(NAME # "_D") simm5_64b:$imm5, (SUBREG_TO_REG (i64 0), (!cast<Instruction>("MOVi32imm") (!cast<SDNodeXForm>("trunc_imm") imm:$imm)), sub_32))>;
4922
4926
4923
4927
// mul(step_vector(1), dup(Y)) -> index(0, Y).
4924
- def : Pat<(mulop (nxv16i1 (AArch64ptrue 31)), (nxv16i8 (oneuseop (i32 1))), (nxv16i8 (AArch64dup(i32 GPR32:$Rm)))),
4928
+ def : Pat<(mulop (nxv16i1 (AArch64ptrue 31)), (nxv16i8 (step_vector_oneuse (i32 1))), (nxv16i8 (AArch64dup(i32 GPR32:$Rm)))),
4925
4929
(!cast<Instruction>(NAME # "_B") (i32 0), GPR32:$Rm)>;
4926
- def : Pat<(mulop (nxv8i1 (AArch64ptrue 31)), (nxv8i16 (oneuseop (i32 1))), (nxv8i16 (AArch64dup(i32 GPR32:$Rm)))),
4930
+ def : Pat<(mulop (nxv8i1 (AArch64ptrue 31)), (nxv8i16 (step_vector_oneuse (i32 1))), (nxv8i16 (AArch64dup(i32 GPR32:$Rm)))),
4927
4931
(!cast<Instruction>(NAME # "_H") (i32 0), GPR32:$Rm)>;
4928
- def : Pat<(mulop (nxv4i1 (AArch64ptrue 31)), (nxv4i32 (oneuseop (i32 1))), (nxv4i32 (AArch64dup(i32 GPR32:$Rm)))),
4932
+ def : Pat<(mulop (nxv4i1 (AArch64ptrue 31)), (nxv4i32 (step_vector_oneuse (i32 1))), (nxv4i32 (AArch64dup(i32 GPR32:$Rm)))),
4929
4933
(!cast<Instruction>(NAME # "_S") (i32 0), GPR32:$Rm)>;
4930
- def : Pat<(mulop (nxv2i1 (AArch64ptrue 31)), (nxv2i64 (oneuseop (i64 1))), (nxv2i64 (AArch64dup(i64 GPR64:$Rm)))),
4934
+ def : Pat<(mulop (nxv2i1 (AArch64ptrue 31)), (nxv2i64 (step_vector_oneuse (i64 1))), (nxv2i64 (AArch64dup(i64 GPR64:$Rm)))),
4931
4935
(!cast<Instruction>(NAME # "_D") (i64 0), GPR64:$Rm)>;
4932
4936
4933
- // add(mul(step_vector(1), dup(Y), dup(X)) -> index(X, Y).
4934
- def : Pat<(add (muloneuseop (nxv16i1 (AArch64ptrue 31)), (nxv16i8 (oneuseop (i32 1))), (nxv16i8 (AArch64dup(i32 GPR32:$Rm)))), (nxv16i8 (AArch64dup(simm5_8b:$imm5)))),
4937
+ // add(mul(step_vector(1), dup(Y)) , dup(X)) -> index(X, Y).
4938
+ def : Pat<(add (muloneuseop (nxv16i1 (AArch64ptrue 31)), (nxv16i8 (step_vector_oneuse (i32 1))), (nxv16i8 (AArch64dup(i32 GPR32:$Rm)))), (nxv16i8 (AArch64dup(simm5_8b:$imm5)))),
4935
4939
(!cast<Instruction>(NAME # "_B") simm5_8b:$imm5, GPR32:$Rm)>;
4936
- def : Pat<(add (muloneuseop (nxv8i1 (AArch64ptrue 31)), (nxv8i16 (oneuseop (i32 1))), (nxv8i16 (AArch64dup(i32 GPR32:$Rm)))), (nxv8i16 (AArch64dup(simm5_16b:$imm5)))),
4940
+ def : Pat<(add (muloneuseop (nxv8i1 (AArch64ptrue 31)), (nxv8i16 (step_vector_oneuse (i32 1))), (nxv8i16 (AArch64dup(i32 GPR32:$Rm)))), (nxv8i16 (AArch64dup(simm5_16b:$imm5)))),
4937
4941
(!cast<Instruction>(NAME # "_H") simm5_16b:$imm5, GPR32:$Rm)>;
4938
- def : Pat<(add (muloneuseop (nxv4i1 (AArch64ptrue 31)), (nxv4i32 (oneuseop (i32 1))), (nxv4i32 (AArch64dup(i32 GPR32:$Rm)))), (nxv4i32 (AArch64dup(simm5_32b:$imm5)))),
4942
+ def : Pat<(add (muloneuseop (nxv4i1 (AArch64ptrue 31)), (nxv4i32 (step_vector_oneuse (i32 1))), (nxv4i32 (AArch64dup(i32 GPR32:$Rm)))), (nxv4i32 (AArch64dup(simm5_32b:$imm5)))),
4939
4943
(!cast<Instruction>(NAME # "_S") simm5_32b:$imm5, GPR32:$Rm)>;
4940
- def : Pat<(add (muloneuseop (nxv2i1 (AArch64ptrue 31)), (nxv2i64 (oneuseop (i64 1))), (nxv2i64 (AArch64dup(i64 GPR64:$Rm)))), (nxv2i64 (AArch64dup(simm5_64b:$imm5)))),
4944
+ def : Pat<(add (muloneuseop (nxv2i1 (AArch64ptrue 31)), (nxv2i64 (step_vector_oneuse (i64 1))), (nxv2i64 (AArch64dup(i64 GPR64:$Rm)))), (nxv2i64 (AArch64dup(simm5_64b:$imm5)))),
4941
4945
(!cast<Instruction>(NAME # "_D") simm5_64b:$imm5, GPR64:$Rm)>;
4942
4946
}
4943
4947
@@ -4958,20 +4962,20 @@ class sve_int_index_ri<bits<2> sz8_64, string asm, ZPRRegOp zprty,
4958
4962
let Inst{4-0} = Zd;
4959
4963
}
4960
4964
4961
- multiclass sve_int_index_ri<string asm, SDPatternOperator op , SDPatternOperator oneuseop > {
4965
+ multiclass sve_int_index_ri<string asm, SDPatternOperator step_vector , SDPatternOperator step_vector_oneuse > {
4962
4966
def _B : sve_int_index_ri<0b00, asm, ZPR8, GPR32, simm5_8b>;
4963
4967
def _H : sve_int_index_ri<0b01, asm, ZPR16, GPR32, simm5_16b>;
4964
4968
def _S : sve_int_index_ri<0b10, asm, ZPR32, GPR32, simm5_32b>;
4965
4969
def _D : sve_int_index_ri<0b11, asm, ZPR64, GPR64, simm5_64b>;
4966
4970
4967
4971
// add(step_vector(step), dup(X)) -> index(X, step).
4968
- def : Pat<(add (nxv16i8 (oneuseop simm5_8b:$imm5)), (nxv16i8 (AArch64dup(i32 GPR32:$Rm)))),
4972
+ def : Pat<(add (nxv16i8 (step_vector_oneuse simm5_8b:$imm5)), (nxv16i8 (AArch64dup(i32 GPR32:$Rm)))),
4969
4973
(!cast<Instruction>(NAME # "_B") GPR32:$Rm, simm5_8b:$imm5)>;
4970
- def : Pat<(add (nxv8i16 (oneuseop simm5_16b:$imm5)), (nxv8i16 (AArch64dup(i32 GPR32:$Rm)))),
4974
+ def : Pat<(add (nxv8i16 (step_vector_oneuse simm5_16b:$imm5)), (nxv8i16 (AArch64dup(i32 GPR32:$Rm)))),
4971
4975
(!cast<Instruction>(NAME # "_H") GPR32:$Rm, simm5_16b:$imm5)>;
4972
- def : Pat<(add (nxv4i32 (oneuseop simm5_32b:$imm5)), (nxv4i32 (AArch64dup(i32 GPR32:$Rm)))),
4976
+ def : Pat<(add (nxv4i32 (step_vector_oneuse simm5_32b:$imm5)), (nxv4i32 (AArch64dup(i32 GPR32:$Rm)))),
4973
4977
(!cast<Instruction>(NAME # "_S") GPR32:$Rm, simm5_32b:$imm5)>;
4974
- def : Pat<(add (nxv2i64 (oneuseop simm5_64b:$imm5)), (nxv2i64 (AArch64dup(i64 GPR64:$Rm)))),
4978
+ def : Pat<(add (nxv2i64 (step_vector_oneuse simm5_64b:$imm5)), (nxv2i64 (AArch64dup(i64 GPR64:$Rm)))),
4975
4979
(!cast<Instruction>(NAME # "_D") GPR64:$Rm, simm5_64b:$imm5)>;
4976
4980
}
4977
4981
@@ -4992,30 +4996,32 @@ class sve_int_index_rr<bits<2> sz8_64, string asm, ZPRRegOp zprty,
4992
4996
let Inst{4-0} = Zd;
4993
4997
}
4994
4998
4995
- multiclass sve_int_index_rr<string asm, SDPatternOperator op , SDPatternOperator oneuseop , SDPatternOperator mulop> {
4999
+ multiclass sve_int_index_rr<string asm, SDPatternOperator step_vector , SDPatternOperator step_vector_oneuse , SDPatternOperator mulop> {
4996
5000
def _B : sve_int_index_rr<0b00, asm, ZPR8, GPR32>;
4997
5001
def _H : sve_int_index_rr<0b01, asm, ZPR16, GPR32>;
4998
5002
def _S : sve_int_index_rr<0b10, asm, ZPR32, GPR32>;
4999
5003
def _D : sve_int_index_rr<0b11, asm, ZPR64, GPR64>;
5000
5004
5001
5005
// add(step_vector(step), dup(X)) -> index(X, step).
5002
- def : Pat<(add (nxv16i8 (oneuseop GPR32:$Rm)), (nxv16i8 (AArch64dup(i32 GPR32:$Rn)))),
5003
- (!cast<Instruction>(NAME # "_B") GPR32:$Rn, GPR32:$Rm)>;
5004
- def : Pat<(add (nxv8i16 (oneuseop GPR32:$Rm)), (nxv8i16 (AArch64dup(i32 GPR32:$Rn)))),
5005
- (!cast<Instruction>(NAME # "_H") GPR32:$Rn, GPR32:$Rm)>;
5006
- def : Pat<(add (nxv4i32 (oneuseop GPR32:$Rm)), (nxv4i32 (AArch64dup(i32 GPR32:$Rn)))),
5007
- (!cast<Instruction>(NAME # "_S") GPR32:$Rn, GPR32:$Rm)>;
5008
- def : Pat<(add (nxv2i64 (oneuseop GPR64:$Rm)), (nxv2i64 (AArch64dup(i64 GPR64:$Rn)))),
5009
- (!cast<Instruction>(NAME # "_D") GPR64:$Rn, GPR64:$Rm)>;
5010
-
5011
- // add(mul(step_vector(1), dup(Y), dup(X)) -> index(X, Y).
5012
- def : Pat<(add (mulop (nxv16i1 (AArch64ptrue 31)), (nxv16i8 (oneuseop (i32 1))), (nxv16i8 (AArch64dup(i32 GPR32:$Rm)))), (nxv16i8 (AArch64dup(i32 GPR32:$Rn)))),
5006
+ def : Pat<(add (nxv16i8 (step_vector_oneuse (i32 imm:$imm))), (nxv16i8 (AArch64dup(i32 GPR32:$Rn)))),
5007
+ (!cast<Instruction>(NAME # "_B") GPR32:$Rn, (!cast<Instruction>("MOVi32imm") imm:$imm))>;
5008
+ def : Pat<(add (nxv8i16 (step_vector_oneuse (i32 imm:$imm))), (nxv8i16 (AArch64dup(i32 GPR32:$Rn)))),
5009
+ (!cast<Instruction>(NAME # "_H") GPR32:$Rn, (!cast<Instruction>("MOVi32imm") imm:$imm))>;
5010
+ def : Pat<(add (nxv4i32 (step_vector_oneuse (i32 imm:$imm))), (nxv4i32 (AArch64dup(i32 GPR32:$Rn)))),
5011
+ (!cast<Instruction>(NAME # "_S") GPR32:$Rn, (!cast<Instruction>("MOVi32imm") imm:$imm))>;
5012
+ def : Pat<(add (nxv2i64 (step_vector_oneuse (i64 imm:$imm))), (nxv2i64 (AArch64dup(i64 GPR64:$Rn)))),
5013
+ (!cast<Instruction>(NAME # "_D") GPR64:$Rn, (!cast<Instruction>("MOVi64imm") imm:$imm))>;
5014
+ def : Pat<(add (nxv2i64 (step_vector_oneuse (i64 !cast<ImmLeaf>("i64imm_32bit"):$imm))), (nxv2i64 (AArch64dup(i64 GPR64:$Rn)))),
5015
+ (!cast<Instruction>(NAME # "_D") GPR64:$Rn, (SUBREG_TO_REG (i64 0), (!cast<Instruction>("MOVi32imm") (!cast<SDNodeXForm>("trunc_imm") imm:$imm)), sub_32))>;
5016
+
5017
+ // add(mul(step_vector(1), dup(Y)), dup(X)) -> index(X, Y).
5018
+ def : Pat<(add (mulop (nxv16i1 (AArch64ptrue 31)), (nxv16i8 (step_vector_oneuse (i32 1))), (nxv16i8 (AArch64dup(i32 GPR32:$Rm)))), (nxv16i8 (AArch64dup(i32 GPR32:$Rn)))),
5013
5019
(!cast<Instruction>(NAME # "_B") GPR32:$Rn, GPR32:$Rm)>;
5014
- def : Pat<(add (mulop (nxv8i1 (AArch64ptrue 31)), (nxv8i16 (oneuseop (i32 1))), (nxv8i16 (AArch64dup(i32 GPR32:$Rm)))),(nxv8i16 (AArch64dup(i32 GPR32:$Rn)))),
5020
+ def : Pat<(add (mulop (nxv8i1 (AArch64ptrue 31)), (nxv8i16 (step_vector_oneuse (i32 1))), (nxv8i16 (AArch64dup(i32 GPR32:$Rm)))),(nxv8i16 (AArch64dup(i32 GPR32:$Rn)))),
5015
5021
(!cast<Instruction>(NAME # "_H") GPR32:$Rn, GPR32:$Rm)>;
5016
- def : Pat<(add (mulop (nxv4i1 (AArch64ptrue 31)), (nxv4i32 (oneuseop (i32 1))), (nxv4i32 (AArch64dup(i32 GPR32:$Rm)))),(nxv4i32 (AArch64dup(i32 GPR32:$Rn)))),
5022
+ def : Pat<(add (mulop (nxv4i1 (AArch64ptrue 31)), (nxv4i32 (step_vector_oneuse (i32 1))), (nxv4i32 (AArch64dup(i32 GPR32:$Rm)))),(nxv4i32 (AArch64dup(i32 GPR32:$Rn)))),
5017
5023
(!cast<Instruction>(NAME # "_S") GPR32:$Rn, GPR32:$Rm)>;
5018
- def : Pat<(add (mulop (nxv2i1 (AArch64ptrue 31)), (nxv2i64 (oneuseop (i64 1))), (nxv2i64 (AArch64dup(i64 GPR64:$Rm)))),(nxv2i64 (AArch64dup(i64 GPR64:$Rn)))),
5024
+ def : Pat<(add (mulop (nxv2i1 (AArch64ptrue 31)), (nxv2i64 (step_vector_oneuse (i64 1))), (nxv2i64 (AArch64dup(i64 GPR64:$Rm)))),(nxv2i64 (AArch64dup(i64 GPR64:$Rn)))),
5019
5025
(!cast<Instruction>(NAME # "_D") GPR64:$Rn, GPR64:$Rm)>;
5020
5026
}
5021
5027
0 commit comments