Skip to content

Commit bb39c64

Browse files
committed
Move patterns into sve_int_dup_imm_pred_*
1 parent 659ea54 commit bb39c64

File tree

2 files changed

+22
-24
lines changed

2 files changed

+22
-24
lines changed

llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -839,8 +839,8 @@ let Predicates = [HasSVEorSME] in {
839839
defm DUPM_ZI : sve_int_dup_mask_imm<"dupm">;
840840

841841
// Splat immediate (predicated)
842-
defm CPY_ZPmI : sve_int_dup_imm_pred_merge<"cpy">;
843-
defm CPY_ZPzI : sve_int_dup_imm_pred_zero<"cpy">;
842+
defm CPY_ZPmI : sve_int_dup_imm_pred_merge<"cpy", AArch64dup_mt>;
843+
defm CPY_ZPzI : sve_int_dup_imm_pred_zero<"cpy", AArch64dup_mt>;
844844
defm FCPY_ZPmI : sve_int_dup_fpimm_pred<"fcpy">;
845845

846846
// Splat scalar register (unpredicated, GPR or vector + element index)
@@ -892,26 +892,6 @@ let Predicates = [HasSVEorSME] in {
892892
def : Pat<(nxv2i64 (splat_vector (i64 (SVECpyDupImm64Pat i32:$a, i32:$b)))),
893893
(DUP_ZI_D $a, $b)>;
894894

895-
// Duplicate Int immediate to active vector elements (zeroing).
896-
def : Pat<(nxv16i8 (AArch64dup_mt PPR:$pg, (i32 (SVECpyDupImm8Pat i32:$a, i32:$b)), (SVEDup0Undef))),
897-
(CPY_ZPzI_B $pg, $a, $b)>;
898-
def : Pat<(nxv8i16 (AArch64dup_mt PPR:$pg, (i32 (SVECpyDupImm16Pat i32:$a, i32:$b)), (SVEDup0Undef))),
899-
(CPY_ZPzI_H $pg, $a, $b)>;
900-
def : Pat<(nxv4i32 (AArch64dup_mt PPR:$pg, (i32 (SVECpyDupImm32Pat i32:$a, i32:$b)), (SVEDup0Undef))),
901-
(CPY_ZPzI_S $pg, $a, $b)>;
902-
def : Pat<(nxv2i64 (AArch64dup_mt PPR:$pg, (i64 (SVECpyDupImm64Pat i32:$a, i32:$b)), (SVEDup0Undef))),
903-
(CPY_ZPzI_D $pg, $a, $b)>;
904-
905-
// Duplicate Int immediate to active vector elements (merging).
906-
def : Pat<(nxv16i8 (AArch64dup_mt PPR:$pg, (i32 (SVECpyDupImm8Pat i32:$a, i32:$b)), (nxv16i8 ZPR:$z))),
907-
(CPY_ZPmI_B $z, $pg, $a, $b)>;
908-
def : Pat<(nxv8i16 (AArch64dup_mt PPR:$pg, (i32 (SVECpyDupImm16Pat i32:$a, i32:$b)), (nxv8i16 ZPR:$z))),
909-
(CPY_ZPmI_H $z, $pg, $a, $b)>;
910-
def : Pat<(nxv4i32 (AArch64dup_mt PPR:$pg, (i32 (SVECpyDupImm32Pat i32:$a, i32:$b)), (nxv4i32 ZPR:$z))),
911-
(CPY_ZPmI_S $z, $pg, $a, $b)>;
912-
def : Pat<(nxv2i64 (AArch64dup_mt PPR:$pg, (i64 (SVECpyDupImm64Pat i32:$a, i32:$b)), (nxv2i64 ZPR:$z))),
913-
(CPY_ZPmI_D $z, $pg, $a, $b)>;
914-
915895
// Duplicate immediate FP into all vector elements.
916896
def : Pat<(nxv2f16 (splat_vector (f16 fpimm:$val))),
917897
(DUP_ZR_H (MOVi32imm (bitcast_fpimm_to_i32 f16:$val)))>;

llvm/lib/Target/AArch64/SVEInstrFormats.td

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5357,7 +5357,7 @@ multiclass sve_int_dup_imm_pred_merge_inst<
53575357
(!cast<Instruction>(NAME) $Zd, $Pg, $imm, $shift)>;
53585358
}
53595359

5360-
multiclass sve_int_dup_imm_pred_merge<string asm> {
5360+
multiclass sve_int_dup_imm_pred_merge<string asm, SDPatternOperator op> {
53615361
defm _B : sve_int_dup_imm_pred_merge_inst<0b00, asm, ZPR8, cpy_imm8_opt_lsl_i8,
53625362
nxv16i8, nxv16i1, i32, SVECpyDupImm8Pat>;
53635363
defm _H : sve_int_dup_imm_pred_merge_inst<0b01, asm, ZPR16, cpy_imm8_opt_lsl_i16,
@@ -5386,6 +5386,15 @@ multiclass sve_int_dup_imm_pred_merge<string asm> {
53865386
(!cast<Instruction>(NAME # _D) $Zd, $Pg, 0, 0)>;
53875387
def : Pat<(vselect PPRAny:$Pg, (SVEDup0), (nxv2f64 ZPR:$Zd)),
53885388
(!cast<Instruction>(NAME # _D) $Zd, $Pg, 0, 0)>;
5389+
5390+
def : Pat<(nxv16i8 (op nxv16i1:$pg, (i32 (SVECpyDupImm8Pat i32:$a, i32:$b)), nxv16i8:$zd)),
5391+
(!cast<Instruction>(NAME # _B) $zd, $pg, $a, $b)>;
5392+
def : Pat<(nxv8i16 (op nxv8i1:$pg, (i32 (SVECpyDupImm16Pat i32:$a, i32:$b)), nxv8i16:$zd)),
5393+
(!cast<Instruction>(NAME # _H) $zd, $pg, $a, $b)>;
5394+
def : Pat<(nxv4i32 (op nxv4i1:$pg, (i32 (SVECpyDupImm32Pat i32:$a, i32:$b)), nxv4i32:$zd)),
5395+
(!cast<Instruction>(NAME # _S) $zd, $pg, $a, $b)>;
5396+
def : Pat<(nxv2i64 (op nxv2i1:$pg, (i64 (SVECpyDupImm64Pat i32:$a, i32:$b)), nxv2i64:$zd)),
5397+
(!cast<Instruction>(NAME # _D) $zd, $pg, $a, $b)>;
53895398
}
53905399

53915400
multiclass sve_int_dup_imm_pred_zero_inst<
@@ -5407,7 +5416,7 @@ multiclass sve_int_dup_imm_pred_zero_inst<
54075416
(!cast<Instruction>(NAME) $Pg, $imm, $shift)>;
54085417
}
54095418

5410-
multiclass sve_int_dup_imm_pred_zero<string asm> {
5419+
multiclass sve_int_dup_imm_pred_zero<string asm, SDPatternOperator op> {
54115420
defm _B : sve_int_dup_imm_pred_zero_inst<0b00, asm, ZPR8, cpy_imm8_opt_lsl_i8,
54125421
nxv16i8, nxv16i1, i32, SVECpyDupImm8Pat>;
54135422
defm _H : sve_int_dup_imm_pred_zero_inst<0b01, asm, ZPR16, cpy_imm8_opt_lsl_i16,
@@ -5416,6 +5425,15 @@ multiclass sve_int_dup_imm_pred_zero<string asm> {
54165425
nxv4i32, nxv4i1, i32, SVECpyDupImm32Pat>;
54175426
defm _D : sve_int_dup_imm_pred_zero_inst<0b11, asm, ZPR64, cpy_imm8_opt_lsl_i64,
54185427
nxv2i64, nxv2i1, i64, SVECpyDupImm64Pat>;
5428+
5429+
def : Pat<(nxv16i8 (op nxv16i1:$pg, (i32 (SVECpyDupImm8Pat i32:$a, i32:$b)), (SVEDup0))),
5430+
(!cast<Instruction>(NAME # _B) $pg, $a, $b)>;
5431+
def : Pat<(nxv8i16 (op nxv8i1:$pg, (i32 (SVECpyDupImm16Pat i32:$a, i32:$b)), (SVEDup0))),
5432+
(!cast<Instruction>(NAME # _H) $pg, $a, $b)>;
5433+
def : Pat<(nxv4i32 (op nxv4i1:$pg, (i32 (SVECpyDupImm32Pat i32:$a, i32:$b)), (SVEDup0))),
5434+
(!cast<Instruction>(NAME # _S) $pg, $a, $b)>;
5435+
def : Pat<(nxv2i64 (op nxv2i1:$pg, (i64 (SVECpyDupImm64Pat i32:$a, i32:$b)), (SVEDup0))),
5436+
(!cast<Instruction>(NAME # _D) $pg, $a, $b)>;
54195437
}
54205438

54215439
//===----------------------------------------------------------------------===//

0 commit comments

Comments
 (0)