@@ -4183,18 +4183,29 @@ defm UDOT_ZZZ_HtoS : sve2p1_two_way_dot_vv<"udot", 0b1, int_aarch64_sve_udot_x2
4183
4183
defm SDOT_ZZZI_HtoS : sve2p1_two_way_dot_vvi<"sdot", 0b0, int_aarch64_sve_sdot_lane_x2>;
4184
4184
defm UDOT_ZZZI_HtoS : sve2p1_two_way_dot_vvi<"udot", 0b1, int_aarch64_sve_udot_lane_x2>;
4185
4185
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
-
4191
4186
defm SQCVTN_Z2Z_StoH : sve2p1_multi_vec_extract_narrow<"sqcvtn", 0b00, int_aarch64_sve_sqcvtn_x2>;
4192
4187
defm UQCVTN_Z2Z_StoH : sve2p1_multi_vec_extract_narrow<"uqcvtn", 0b01, int_aarch64_sve_uqcvtn_x2>;
4193
4188
defm SQCVTUN_Z2Z_StoH : sve2p1_multi_vec_extract_narrow<"sqcvtun", 0b10, int_aarch64_sve_sqcvtun_x2>;
4194
4189
defm SQRSHRN_Z2ZI_StoH : sve2p1_multi_vec_shift_narrow<"sqrshrn", 0b101, int_aarch64_sve_sqrshrn_x2>;
4195
4190
defm UQRSHRN_Z2ZI_StoH : sve2p1_multi_vec_shift_narrow<"uqrshrn", 0b111, int_aarch64_sve_uqrshrn_x2>;
4196
4191
defm SQRSHRUN_Z2ZI_StoH : sve2p1_multi_vec_shift_narrow<"sqrshrun", 0b001, int_aarch64_sve_sqrshrun_x2>;
4197
4192
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
+
4198
4209
// Load to two registers
4199
4210
defm LD1B_2Z : sve2p1_mem_cld_ss_2z<"ld1b", 0b00, 0b0, ZZ_b_mul_r, GPR64shifted8, ZZ_b_strided_and_contiguous>;
4200
4211
defm 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>;
4318
4329
defm : store_pn_x4<nxv4f32, int_aarch64_sve_stnt1_pn_x4, STNT1W_4Z_IMM>;
4319
4330
defm : store_pn_x4<nxv2f64, int_aarch64_sve_stnt1_pn_x4, STNT1D_4Z_IMM>;
4320
4331
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>;
4329
4332
defm WHILEGE_CXX : sve2p1_int_while_rr_pn<"whilege", 0b000>;
4330
4333
defm WHILEGT_CXX : sve2p1_int_while_rr_pn<"whilegt", 0b001>;
4331
4334
defm WHILELT_CXX : sve2p1_int_while_rr_pn<"whilelt", 0b010>;
@@ -4334,7 +4337,7 @@ defm WHILEHS_CXX : sve2p1_int_while_rr_pn<"whilehs", 0b100>;
4334
4337
defm WHILEHI_CXX : sve2p1_int_while_rr_pn<"whilehi", 0b101>;
4335
4338
defm WHILELO_CXX : sve2p1_int_while_rr_pn<"whilelo", 0b110>;
4336
4339
defm WHILELS_CXX : sve2p1_int_while_rr_pn<"whilels", 0b111>;
4337
- } // End HasSVE2p1_or_SME2
4340
+ } // End HasSVE2p1_or_StreamingSME2
4338
4341
4339
4342
let Predicates = [HasSVE_or_SME] in {
4340
4343
@@ -4539,7 +4542,7 @@ let Predicates = [HasNonStreamingSVE2p2_or_SME2p2] in {
4539
4542
//===----------------------------------------------------------------------===//
4540
4543
// SVE2 FP8 instructions
4541
4544
//===----------------------------------------------------------------------===//
4542
- let Predicates = [HasSVE2_or_SME2 , HasFP8] in {
4545
+ let Predicates = [HasNonStreamingSVE2_or_SME2 , HasFP8] in {
4543
4546
// FP8 upconvert
4544
4547
defm F1CVT_ZZ : sve2_fp8_cvt_single<0b0, 0b00, "f1cvt", nxv8f16, int_aarch64_sve_fp8_cvt1>;
4545
4548
defm 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
4556
4559
defm BFCVTN_Z2Z_HtoB : sve2_fp8_down_cvt_single<0b10, "bfcvtn", ZZ_h_mul_r, nxv8bf16, int_aarch64_sve_fp8_cvtn>;
4557
4560
4558
4561
defm 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
4560
4563
4561
- let Predicates = [HasSVE2_or_SME2 , HasFAMINMAX] in {
4564
+ let Predicates = [HasNonStreamingSVE2_or_SME2 , HasFAMINMAX] in {
4562
4565
defm FAMIN_ZPmZ : sve_fp_2op_p_zds<0b1111, "famin", "FAMIN_ZPZZ", int_aarch64_sve_famin, DestructiveBinaryComm>;
4563
4566
defm FAMAX_ZPmZ : sve_fp_2op_p_zds<0b1110, "famax", "FAMAX_ZPZZ", int_aarch64_sve_famax, DestructiveBinaryComm>;
4564
4567
4565
4568
defm FAMAX_ZPZZ : sve_fp_bin_pred_hfd<AArch64famax_p>;
4566
4569
defm FAMIN_ZPZZ : sve_fp_bin_pred_hfd<AArch64famin_p>;
4567
- } // End HasSVE2_or_SME2 , HasFAMINMAX
4570
+ } // End HasNonStreamingSVE2_or_SME2 , HasFAMINMAX
4568
4571
4569
4572
let Predicates = [HasSSVE_FP8FMA] in {
4570
4573
// 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
4608
4611
defm FDOT_ZZZ_BtoS : sve_fp8_dot<0b1, ZPR32, "fdot", nxv4f32, int_aarch64_sve_fp8_fdot>;
4609
4612
}
4610
4613
4611
- let Predicates = [HasSVE2_or_SME2 , HasLUT] in {
4614
+ let Predicates = [HasNonStreamingSVE2_or_SME2 , HasLUT] in {
4612
4615
// LUTI2
4613
4616
defm LUTI2_ZZZI : sve2_luti2_vector_index<"luti2">;
4614
4617
// LUTI4
4615
4618
defm LUTI4_ZZZI : sve2_luti4_vector_index<"luti4">;
4616
4619
// LUTI4 (two contiguous registers)
4617
4620
defm LUTI4_Z2ZZI : sve2_luti4_vector_vg2_index<"luti4">;
4618
- } // End HasSVE2_or_SME2 , HasLUT
4621
+ } // End HasNonStreamingSVE2_or_SME2 , HasLUT
4619
4622
4620
4623
//===----------------------------------------------------------------------===//
4621
4624
// Checked Pointer Arithmetic (FEAT_CPA)
0 commit comments