diff options
Diffstat (limited to 'llvm/lib/Target/RISCV/RISCVInstrInfoZb.td')
-rw-r--r-- | llvm/lib/Target/RISCV/RISCVInstrInfoZb.td | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td index 72122d6e8830..1a7539f40d47 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td @@ -237,17 +237,17 @@ def CSImm12MulBy4 : PatLeaf<(imm), [{ if (!N->hasOneUse()) return false; int64_t C = N->getSExtValue(); - // Skip if C is simm12 or can be optimized by the PatLeaf AddiPair. - return !isInt<13>(C) && isShiftedInt<12, 2>(C); + // Skip if C is simm12, an lui, or can be optimized by the PatLeaf AddiPair. + return !isInt<13>(C) && !isShiftedInt<20, 12>(C) && isShiftedInt<12, 2>(C); }]>; def CSImm12MulBy8 : PatLeaf<(imm), [{ if (!N->hasOneUse()) return false; int64_t C = N->getSExtValue(); - // Skip if C is simm12 or can be optimized by the PatLeaf AddiPair or + // Skip if C is simm12, an lui or can be optimized by the PatLeaf AddiPair or // CSImm12MulBy4. - return !isInt<14>(C) && isShiftedInt<12, 3>(C); + return !isInt<14>(C) && !isShiftedInt<20, 12>(C) && isShiftedInt<12, 3>(C); }]>; def SimmShiftRightBy2XForm : SDNodeXForm<imm, [{ |