12 Commits

Author SHA1 Message Date
Vitaly Buka
455990d18f
Reland "SelectionDAG: Avoid using MachineFunction::getMMI" (#99779)
Reverts llvm/llvm-project#99777

Co-authored-by: Matt Arsenault <Matthew.Arsenault@amd.com>
2024-07-24 10:38:53 +04:00
Vitaly Buka
98c0e55d9d
Revert "SelectionDAG: Avoid using MachineFunction::getMMI" (#99777)
Reverts llvm/llvm-project#99696

https://lab.llvm.org/buildbot/#/builders/164/builds/1262
2024-07-20 12:20:50 -07:00
Matt Arsenault
c2019a37bd
SelectionDAG: Avoid using MachineFunction::getMMI (#99696) 2024-07-20 10:53:41 +04:00
Simon Pilgrim
61a4e1e70f
[DAG] Add SDPatternMatch::m_SetCC and update some combines to use it (#98646)
The plan is to add more TernaryOp in the future (SELECT/VSELECT and FMA in particular)
2024-07-14 17:18:43 +01:00
Nikita Popov
4169338e75
[IR] Don't include Module.h in Analysis.h (NFC) (#97023)
Replace it with a forward declaration instead. Analysis.h is pulled in
by all passes, but not all passes need to access the module.
2024-06-28 14:30:47 +02:00
c8ef
4f54b91842
[SDPatternMatch] Only match ISD::SIGN_EXTEND in m_SExt (#95415)
Context: https://github.com/llvm/llvm-project/pull/95365#discussion_r1638236603

The current implementation of `m_SExt` matches both `ISD::SIGN_EXTEND` and `ISD::SIGN_EXTEND_INREG`. However, in cases where we specifically need to match _only_ `ISD::SIGN_EXTEND`, such as in the SelectionDAG graph below, this can lead to issues and unintended combinations.

```
SelectionDAG has 13 nodes:
  t0: ch,glue = EntryToken
          t2: v2i32,ch = CopyFromReg t0, Register:v2i32 %0
        t21: v2i32 = sign_extend_inreg t2, ValueType:ch:v2i8
          t4: v2i32,ch = CopyFromReg t0, Register:v2i32 %1
        t22: v2i32 = sign_extend_inreg t4, ValueType:ch:v2i8
      t23: v2i32 = avgfloors t21, t22
    t24: v2i32 = sign_extend_inreg t23, ValueType:ch:v2i8
  t15: ch,glue = CopyToReg t0, Register:v2i32 $d0, t24
  t16: ch = AArch64ISD::RET_GLUE t15, Register:v2i32 $d0, t15:1
```
2024-06-14 10:44:29 +01:00
Min-Yih Hsu
0638e222f3
[SDPatternMatch] Add m_CondCode, m_NoneOf, and some SExt improvements (#90762)
- Add m_CondCode to match the ISD::CondCode value from CondCodeSDNode
  - Add m_NoneOf combinator
  - m_SExt now recognizes sext_inreg
2024-05-02 08:56:42 -07:00
Marc Auberer
17af9addbb
[DAG] Add SDPatternMatch m_ZExtOrSelf/m_SExtOrSelf/m_AExtOrSelf/m_TruncOrSelf matchers (#85480)
Fixes #85395
2024-03-20 13:18:58 -07:00
zicwangupa
bc70f60418
[SelectionDAG] Add m_Neg and m_Not pattern matcher and update DAGCombiner (#85365)
Resolves #85065

---------

Co-authored-by: Matt Arsenault <arsenm2@gmail.com>
2024-03-18 18:34:31 +05:30
Simon Pilgrim
c9c23261ab [DAG] Add SDPatternMatch m_SMin/m_SMax/m_UMin/m_UMax matchers 2024-03-14 12:28:19 +00:00
Simon Pilgrim
560d7c51fd [DAG] Add SDPatternMatch m_And/m_Or/m_Xor matchers for logic ops 2024-03-13 11:13:37 +00:00
Min-Yih Hsu
5874874c24
[SelectionDAG] Introducing the SelectionDAG pattern matching framework (#78654)
Akin to `llvm::PatternMatch` and `llvm::MIPatternMatch`, the
`llvm::SDPatternMatch` introduced in this patch provides a DSL-alike
framework to match SDValue / SDNode with a more succinct syntax.
2024-02-23 11:03:36 -08:00