<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/85065>85065</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DAG] SDPatternMatch - add m_Neg and m_Not matchers
</td>
</tr>
<tr>
<th>Labels</th>
<td>
good first issue,
llvm:SelectionDAG
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
RKSimon
</td>
</tr>
</table>
<pre>
I've started using the SDPatternMatch.h matchers to simplify dag combines (especially commutable ones - thank you for that!).
We're currently missing a couple of convenience matchers for
```c
m_Neg(m_Value(X)) == m_Sub(m_Zero(), m_Value(X))
m_Not(m_Value(X)) == m_Xor(m_Value(X), m_AllOnes())
```
You will need some experience with C++ templates to understand the pattern matching system to add these.
CC @mshockwave
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8U92OmzwQfZrhZpTImBDggotsUD59qvqjRmq3vVkZmIC7_kG2yTZvX2HaXXVbVUJYwxwfH585CO_lYIhqyO8gbxIxh9G6-uObs9TWJK3tb_X_wIsroQ_CBepx9tIMGEbCc_NBhEDOvBWhG7cj6mUl5zFY9FJPSl5u2IsBO6tbacgj8JL8RJ0USt2Wz3oOolWEduluMIzCPOLNznixbqkC8BR4tQXWADus788EvHCE3ewcmaBuqKWPqgR2dp4Wugt21lzJSDIdvQi7WPeTac_Wp1tr_fCOBuClfvgk1EzAy3vgFfAKIWsga1A_nOc2Ar6Ss8DL2D7iHxue-Wz4N9-9dX8BLIwHpd4b8r8OqV5JXssvdsYnqRQaoh691YT0fSK33vhJhhGPwO-A32EgPSkRKA5mNj05H4Tp4xCndYSrRYuH_uYD6QUp-gjx9Jv7xyPCjmk_2u7xSVwJk77O-iqrREJ1WqQsy9KyYslY5xntsrIQ-YUR63qeV3tG-4zlbZ5Sm-0SWXPGdyxLs5Snaca2oiz2BWv7okvTkhUEO0ZaSLVV6qq31g2J9H6muszZPk-UaEn5GF3OB2t7vEjnA0YMcA78CJwvWyE7nElRF6Q1zeG_pZc3iauX3qadBw87pqQP_uWgIIOKv8WCz5tXYcdNdCemBhcr47yfc5bMTtVjCJOH7AD8BPw0yDDO7bazGvgpalqXzeTsN-oC8FPU7YGf4vV-BAAA__9rEiJl">