@@ -4183,18 +4183,29 @@ defm UDOT_ZZZ_HtoS : sve2p1_two_way_dot_vv<"udot", 0b1, int_aarch64_sve_udot_x2
41834183defm SDOT_ZZZI_HtoS : sve2p1_two_way_dot_vvi<"sdot", 0b0, int_aarch64_sve_sdot_lane_x2>;
41844184defm UDOT_ZZZI_HtoS : sve2p1_two_way_dot_vvi<"udot", 0b1, int_aarch64_sve_udot_lane_x2>;
41854185
4186- defm CNTP_XCI : sve2p1_pcount_pn<"cntp", 0b000>;
4187- defm PEXT_PCI : sve2p1_pred_as_ctr_to_mask<"pext", int_aarch64_sve_pext>;
4188- defm PEXT_2PCI : sve2p1_pred_as_ctr_to_mask_pair<"pext">;
4189- defm PTRUE_C : sve2p1_ptrue_pn<"ptrue">;
4190-
41914186defm SQCVTN_Z2Z_StoH : sve2p1_multi_vec_extract_narrow<"sqcvtn", 0b00, int_aarch64_sve_sqcvtn_x2>;
41924187defm UQCVTN_Z2Z_StoH : sve2p1_multi_vec_extract_narrow<"uqcvtn", 0b01, int_aarch64_sve_uqcvtn_x2>;
41934188defm SQCVTUN_Z2Z_StoH : sve2p1_multi_vec_extract_narrow<"sqcvtun", 0b10, int_aarch64_sve_sqcvtun_x2>;
41944189defm SQRSHRN_Z2ZI_StoH : sve2p1_multi_vec_shift_narrow<"sqrshrn", 0b101, int_aarch64_sve_sqrshrn_x2>;
41954190defm UQRSHRN_Z2ZI_StoH : sve2p1_multi_vec_shift_narrow<"uqrshrn", 0b111, int_aarch64_sve_uqrshrn_x2>;
41964191defm SQRSHRUN_Z2ZI_StoH : sve2p1_multi_vec_shift_narrow<"sqrshrun", 0b001, int_aarch64_sve_sqrshrun_x2>;
41974192
4193+ defm WHILEGE_2PXX : sve2p1_int_while_rr_pair<"whilege", 0b000>;
4194+ defm WHILEGT_2PXX : sve2p1_int_while_rr_pair<"whilegt", 0b001>;
4195+ defm WHILELT_2PXX : sve2p1_int_while_rr_pair<"whilelt", 0b010>;
4196+ defm WHILELE_2PXX : sve2p1_int_while_rr_pair<"whilele", 0b011>;
4197+ defm WHILEHS_2PXX : sve2p1_int_while_rr_pair<"whilehs", 0b100>;
4198+ defm WHILEHI_2PXX : sve2p1_int_while_rr_pair<"whilehi", 0b101>;
4199+ defm WHILELO_2PXX : sve2p1_int_while_rr_pair<"whilelo", 0b110>;
4200+ defm WHILELS_2PXX : sve2p1_int_while_rr_pair<"whilels", 0b111>;
4201+ } // End HasSVE2p1_or_SME2
4202+
4203+ let Predicates = [HasSVE2p1_or_StreamingSME2] in {
4204+ defm CNTP_XCI : sve2p1_pcount_pn<"cntp", 0b000>;
4205+ defm PEXT_PCI : sve2p1_pred_as_ctr_to_mask<"pext", int_aarch64_sve_pext>;
4206+ defm PEXT_2PCI : sve2p1_pred_as_ctr_to_mask_pair<"pext">;
4207+ defm PTRUE_C : sve2p1_ptrue_pn<"ptrue">;
4208+
41984209// Load to two registers
41994210defm LD1B_2Z : sve2p1_mem_cld_ss_2z<"ld1b", 0b00, 0b0, ZZ_b_mul_r, GPR64shifted8, ZZ_b_strided_and_contiguous>;
42004211defm LD1H_2Z : sve2p1_mem_cld_ss_2z<"ld1h", 0b01, 0b0, ZZ_h_mul_r, GPR64shifted16, ZZ_h_strided_and_contiguous>;
@@ -4318,14 +4329,6 @@ defm : store_pn_x4<nxv8bf16, int_aarch64_sve_stnt1_pn_x4, STNT1H_4Z_IMM>;
43184329defm : store_pn_x4<nxv4f32, int_aarch64_sve_stnt1_pn_x4, STNT1W_4Z_IMM>;
43194330defm : store_pn_x4<nxv2f64, int_aarch64_sve_stnt1_pn_x4, STNT1D_4Z_IMM>;
43204331
4321- defm WHILEGE_2PXX : sve2p1_int_while_rr_pair<"whilege", 0b000>;
4322- defm WHILEGT_2PXX : sve2p1_int_while_rr_pair<"whilegt", 0b001>;
4323- defm WHILELT_2PXX : sve2p1_int_while_rr_pair<"whilelt", 0b010>;
4324- defm WHILELE_2PXX : sve2p1_int_while_rr_pair<"whilele", 0b011>;
4325- defm WHILEHS_2PXX : sve2p1_int_while_rr_pair<"whilehs", 0b100>;
4326- defm WHILEHI_2PXX : sve2p1_int_while_rr_pair<"whilehi", 0b101>;
4327- defm WHILELO_2PXX : sve2p1_int_while_rr_pair<"whilelo", 0b110>;
4328- defm WHILELS_2PXX : sve2p1_int_while_rr_pair<"whilels", 0b111>;
43294332defm WHILEGE_CXX : sve2p1_int_while_rr_pn<"whilege", 0b000>;
43304333defm WHILEGT_CXX : sve2p1_int_while_rr_pn<"whilegt", 0b001>;
43314334defm WHILELT_CXX : sve2p1_int_while_rr_pn<"whilelt", 0b010>;
@@ -4334,7 +4337,7 @@ defm WHILEHS_CXX : sve2p1_int_while_rr_pn<"whilehs", 0b100>;
43344337defm WHILEHI_CXX : sve2p1_int_while_rr_pn<"whilehi", 0b101>;
43354338defm WHILELO_CXX : sve2p1_int_while_rr_pn<"whilelo", 0b110>;
43364339defm WHILELS_CXX : sve2p1_int_while_rr_pn<"whilels", 0b111>;
4337- } // End HasSVE2p1_or_SME2
4340+ } // End HasSVE2p1_or_StreamingSME2
43384341
43394342let Predicates = [HasSVE_or_SME] in {
43404343
@@ -4539,7 +4542,7 @@ let Predicates = [HasNonStreamingSVE2p2_or_SME2p2] in {
45394542//===----------------------------------------------------------------------===//
45404543// SVE2 FP8 instructions
45414544//===----------------------------------------------------------------------===//
4542- let Predicates = [HasSVE2_or_SME2 , HasFP8] in {
4545+ let Predicates = [HasNonStreamingSVE2_or_SME2 , HasFP8] in {
45434546// FP8 upconvert
45444547defm F1CVT_ZZ : sve2_fp8_cvt_single<0b0, 0b00, "f1cvt", nxv8f16, int_aarch64_sve_fp8_cvt1>;
45454548defm F2CVT_ZZ : sve2_fp8_cvt_single<0b0, 0b01, "f2cvt", nxv8f16, int_aarch64_sve_fp8_cvt2>;
@@ -4556,15 +4559,15 @@ defm FCVTNB_Z2Z_StoB : sve2_fp8_down_cvt_single<0b01, "fcvtnb", ZZ_s_mul_r, nxv4
45564559defm BFCVTN_Z2Z_HtoB : sve2_fp8_down_cvt_single<0b10, "bfcvtn", ZZ_h_mul_r, nxv8bf16, int_aarch64_sve_fp8_cvtn>;
45574560
45584561defm FCVTNT_Z2Z_StoB : sve2_fp8_down_cvt_single_top<0b11, "fcvtnt", ZZ_s_mul_r, nxv4f32, int_aarch64_sve_fp8_cvtnt>;
4559- } // End HasSVE2_or_SME2 , HasFP8
4562+ } // End HasNonStreamingSVE2_or_SME2 , HasFP8
45604563
4561- let Predicates = [HasSVE2_or_SME2 , HasFAMINMAX] in {
4564+ let Predicates = [HasNonStreamingSVE2_or_SME2 , HasFAMINMAX] in {
45624565defm FAMIN_ZPmZ : sve_fp_2op_p_zds<0b1111, "famin", "FAMIN_ZPZZ", int_aarch64_sve_famin, DestructiveBinaryComm>;
45634566defm FAMAX_ZPmZ : sve_fp_2op_p_zds<0b1110, "famax", "FAMAX_ZPZZ", int_aarch64_sve_famax, DestructiveBinaryComm>;
45644567
45654568defm FAMAX_ZPZZ : sve_fp_bin_pred_hfd<AArch64famax_p>;
45664569defm FAMIN_ZPZZ : sve_fp_bin_pred_hfd<AArch64famin_p>;
4567- } // End HasSVE2_or_SME2 , HasFAMINMAX
4570+ } // End HasNonStreamingSVE2_or_SME2 , HasFAMINMAX
45684571
45694572let Predicates = [HasSSVE_FP8FMA] in {
45704573// FP8 Widening Multiply-Add Long - Indexed Group
@@ -4608,14 +4611,14 @@ defm FDOT_ZZZI_BtoS : sve2_fp8_dot_indexed_s<"fdot", int_aarch64_sve_fp8_fdot_la
46084611defm FDOT_ZZZ_BtoS : sve_fp8_dot<0b1, ZPR32, "fdot", nxv4f32, int_aarch64_sve_fp8_fdot>;
46094612}
46104613
4611- let Predicates = [HasSVE2_or_SME2 , HasLUT] in {
4614+ let Predicates = [HasNonStreamingSVE2_or_SME2 , HasLUT] in {
46124615// LUTI2
46134616 defm LUTI2_ZZZI : sve2_luti2_vector_index<"luti2">;
46144617// LUTI4
46154618 defm LUTI4_ZZZI : sve2_luti4_vector_index<"luti4">;
46164619// LUTI4 (two contiguous registers)
46174620 defm LUTI4_Z2ZZI : sve2_luti4_vector_vg2_index<"luti4">;
4618- } // End HasSVE2_or_SME2 , HasLUT
4621+ } // End HasNonStreamingSVE2_or_SME2 , HasLUT
46194622
46204623//===----------------------------------------------------------------------===//
46214624// Checked Pointer Arithmetic (FEAT_CPA)
0 commit comments