Skip to content

Commit 8554270

Browse files
[AArch64] Generate zeroing forms of certain SVE2.2 instructions (9/11)
1 parent cd28d99 commit 8554270

File tree

3 files changed

+494
-5
lines changed

3 files changed

+494
-5
lines changed

llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4280,10 +4280,10 @@ let Predicates = [HasSVE2p2orSME2p2] in {
42804280
defm FLOGB_ZPzZ : sve_fp_z2op_p_zd_d_flogb<"flogb", int_aarch64_sve_flogb>;
42814281

42824282
// SVE2 integer unary operations, zeroing predicate
4283-
def URECPE_ZPzZ : sve2_int_un_pred_arit_z<0b10, 0b00, "urecpe", ZPR32>;
4284-
def URSQRTE_ZPzZ : sve2_int_un_pred_arit_z<0b10, 0b01, "ursqrte", ZPR32>;
4285-
defm SQABS_ZPzZ : sve2_int_un_pred_arit_z<0b10, "sqabs">;
4286-
defm SQNEG_ZPzZ : sve2_int_un_pred_arit_z<0b11, "sqneg">;
4283+
defm URECPE_ZPzZ : sve2_int_un_pred_arit_z_S<0b00, "urecpe", int_aarch64_sve_urecpe>;
4284+
defm URSQRTE_ZPzZ : sve2_int_un_pred_arit_z_S<0b01, "ursqrte", int_aarch64_sve_ursqrte>;
4285+
defm SQABS_ZPzZ : sve2_int_un_pred_arit_z< 0b10, "sqabs", int_aarch64_sve_sqabs>;
4286+
defm SQNEG_ZPzZ : sve2_int_un_pred_arit_z< 0b11, "sqneg", int_aarch64_sve_sqneg>;
42874287

42884288
// Floating point round to integral fp value in integer size range
42894289
// Merging

llvm/lib/Target/AArch64/SVEInstrFormats.td

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4206,11 +4206,22 @@ multiclass sve2_int_un_pred_arit<bits<2> opc, string asm, SDPatternOperator op>
42064206
defm : SVE_3_Op_Undef_Pat<nxv2i64, op, nxv2i64, nxv2i1, nxv2i64, !cast<Pseudo>(NAME # _D_UNDEF)>;
42074207
}
42084208

4209-
multiclass sve2_int_un_pred_arit_z<bits<2> opc, string asm> {
4209+
multiclass sve2_int_un_pred_arit_z_S<bits<2> opc, string asm, SDPatternOperator op> {
4210+
def _S : sve2_int_un_pred_arit_z<0b10, opc, asm, ZPR32>;
4211+
4212+
def : SVE_3_Op_UndefZero_Pat<nxv4i32, op, nxv4i32, nxv4i1, nxv4i32, !cast<Instruction>(NAME # _S)>;
4213+
}
4214+
4215+
multiclass sve2_int_un_pred_arit_z<bits<2> opc, string asm, SDPatternOperator op> {
42104216
def _B : sve2_int_un_pred_arit_z<0b00, opc, asm, ZPR8>;
42114217
def _H : sve2_int_un_pred_arit_z<0b01, opc, asm, ZPR16>;
42124218
def _S : sve2_int_un_pred_arit_z<0b10, opc, asm, ZPR32>;
42134219
def _D : sve2_int_un_pred_arit_z<0b11, opc, asm, ZPR64>;
4220+
4221+
def : SVE_3_Op_UndefZero_Pat<nxv16i8, op, nxv16i8, nxv16i1, nxv16i8, !cast<Instruction>(NAME # _B)>;
4222+
def : SVE_3_Op_UndefZero_Pat<nxv8i16, op, nxv8i16, nxv8i1, nxv8i16, !cast<Instruction>(NAME # _H)>;
4223+
def : SVE_3_Op_UndefZero_Pat<nxv4i32, op, nxv4i32, nxv4i1, nxv4i32, !cast<Instruction>(NAME # _S)>;
4224+
def : SVE_3_Op_UndefZero_Pat<nxv2i64, op, nxv2i64, nxv2i1, nxv2i64, !cast<Instruction>(NAME # _D)>;
42144225
}
42154226

42164227
//===----------------------------------------------------------------------===//

0 commit comments

Comments
 (0)