@@ -475,12 +475,6 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
475475 }
476476 }
477477
478- setOperationPromotedToType(ISD::LOAD, MVT::aarch64svcount, MVT::nxv16i1);
479- setOperationPromotedToType(ISD::STORE, MVT::aarch64svcount, MVT::nxv16i1);
480-
481- setOperationAction(ISD::SELECT, MVT::aarch64svcount, Custom);
482- setOperationAction(ISD::SELECT_CC, MVT::aarch64svcount, Expand);
483-
484478 // Compute derived properties from the register classes
485479 computeRegisterProperties(Subtarget->getRegisterInfo());
486480
@@ -1608,6 +1602,14 @@ AArch64TargetLowering::AArch64TargetLowering(const TargetMachine &TM,
16081602 MVT::nxv4i16, MVT::nxv4i32, MVT::nxv8i8, MVT::nxv8i16 })
16091603 setOperationAction(ISD::SIGN_EXTEND_INREG, VT, Legal);
16101604
1605+ // Promote predicate as counter load/stores to standard predicates.
1606+ setOperationPromotedToType(ISD::LOAD, MVT::aarch64svcount, MVT::nxv16i1);
1607+ setOperationPromotedToType(ISD::STORE, MVT::aarch64svcount, MVT::nxv16i1);
1608+
1609+ // Predicate as counter legalization actions.
1610+ setOperationAction(ISD::SELECT, MVT::aarch64svcount, Custom);
1611+ setOperationAction(ISD::SELECT_CC, MVT::aarch64svcount, Expand);
1612+
16111613 for (auto VT :
16121614 {MVT::nxv16i1, MVT::nxv8i1, MVT::nxv4i1, MVT::nxv2i1, MVT::nxv1i1}) {
16131615 setOperationAction(ISD::CONCAT_VECTORS, VT, Custom);
0 commit comments