diff options
author | Kai Nacke <kai@redstar.de> | 2022-08-22 20:10:57 -0400 |
---|---|---|
committer | Kai Nacke <kai@redstar.de> | 2022-11-13 11:07:50 -0500 |
commit | 667bbc2319cbb064666a4bc79343f42504d0b618 (patch) | |
tree | 7eaaa9e75c40e84448c016d37c44884fc7b26862 | |
parent | af4e9542f20b4e66203b5d9d588b951c23b59b2d (diff) | |
download | llvm-667bbc2319cbb064666a4bc79343f42504d0b618.zip llvm-667bbc2319cbb064666a4bc79343f42504d0b618.tar.gz llvm-667bbc2319cbb064666a4bc79343f42504d0b618.tar.bz2 |
[m88k] Improve isReMaterializable setting.
-rw-r--r-- | llvm/lib/Target/M88k/M88kInstrInfo.td | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/llvm/lib/Target/M88k/M88kInstrInfo.td b/llvm/lib/Target/M88k/M88kInstrInfo.td index cada7e1..b85a68c 100644 --- a/llvm/lib/Target/M88k/M88kInstrInfo.td +++ b/llvm/lib/Target/M88k/M88kInstrInfo.td @@ -365,19 +365,15 @@ def : Pat<(ctlz_zero_undef GPR:$rs), (XORri (FF1r GPR:$rs), 31)>; // ---------------------------------------------------------------------------// // Multiclass for arithmetic instructions with triadic registers or immediates. -multiclass ArithTri<bits<6> Func, string OpcStr> { +multiclass ArithTri<bits<6> Func, string OpcStr, bit IsReMat = 0> { def rr : F_IRC<Func, 0b0, 0b0, OpcStr>; - def ri : F_II<Func, (ins GPR:$rs1, uimm16:$imm16),OpcStr> { - let isReMaterializable = !if(!or(!eq(OpcStr,"addu"), - !eq(OpcStr,"add"), - !eq(OpcStr,"subu"), - !eq(OpcStr,"sub")), 1, 0); - } + let isReMaterializable = IsReMat in + def ri : F_II<Func, (ins GPR:$rs1, uimm16:$imm16),OpcStr>; } // Multiclass for arithmetic instructions with triadic registers or immediates. -multiclass ArithTriCarry<bits<6> Func, string OpcStr> - : ArithTri<Func, OpcStr> { +multiclass ArithTriCarry<bits<6> Func, string OpcStr, bit IsReMat = 0> + : ArithTri<Func, OpcStr, IsReMat> { def rrci : F_IRC<Func, 0b1, 0b0, !strconcat(OpcStr, ".ci")>; def rrco : F_IRC<Func, 0b0, 0b1, !strconcat(OpcStr, ".co")>; def rrcio : F_IRC<Func, 0b1, 0b1, !strconcat(OpcStr, ".cio")>; @@ -385,13 +381,13 @@ multiclass ArithTriCarry<bits<6> Func, string OpcStr> let isCommutable = 1 in { let isAdd = 1 in { - defm ADDU : ArithTriCarry<0b011000, "addu">; - defm ADD : ArithTriCarry<0b011100, "add">; + defm ADDU : ArithTriCarry<0b011000, "addu", 1>; + defm ADD : ArithTriCarry<0b011100, "add", 1>; } defm MULU : ArithTri<0b011011, "mulu">; } -defm SUBU : ArithTriCarry<0b011001, "subu">; -defm SUB : ArithTriCarry<0b011101, "sub">; +defm SUBU : ArithTriCarry<0b011001, "subu", 1>; +defm SUB : ArithTriCarry<0b011101, "sub", 1>; defm DIVU : ArithTri<0b011010, "divu">; defm DIVS : ArithTri<0b011110, "divs">; let isCompare = 1 in |