<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/56666>56666</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            SimplifySetCC with immediate integer problem
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Nafeng
      </td>
    </tr>
</table>

<pre>
    
SimplifySetCC should not combine the setGE into setGT when isLegalICmpImmediate return falseļ¼›
this combine would cause generating a imm copy to reg instruction;
```
// IR
%cmp = icmp sge i32 %a, -128

// Debug log print
Combining: t11: i1 = setcc t2, Constant:i32<-128>, setge:ch
Creating constant: t15: i32 = Constant<-129>
Creating new node: t17: i1 = setcc t2, Constant:i32<-129>, setgt:ch
 ... into: t17: i1 = setcc t2, Constant:i32<-129>, setgt:ch
```
```
// in my TargetLoweringImpl
  bool isLegalICmpImmediate(int64_t val) const override {
    return val <= 127 && val >= -128;
  }
// In SimplifySetCC
if ((DCI.isBeforeLegalizeOps() ||
             isCondCodeLegal(NewCC, VT.getSimpleVT())) &&
            (!N1C->isOpaque() || (C.getBitWidth() <= 64 &&
                                  isLegalICmpImmediate(C.getSExtValue())))) {
          return DAG.getSetCC(dl, VT, N0,
                              DAG.getConstant(C, dl, N1.getValueType()),
                              NewCC);
        }
```
The root cause is !N1C->isOpaque() is always true;
What's a Opaque Constant? I can not find any Constant was set opaque;
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVV2P2joQ_TXmZbQRxCEhD3lYAlshVVTqou1jZZIh8ZUTc2NnKf31HTuBhXt3pVaqNeRrZs4cz4yHvS7PGZuu2PTxWTZHJQ_nZ7R5DqbWvSqh1RYK3exli2BrBIP20xpka7V_3MGpxhak-YyVUJu8OW6aBkspLEKHtu9aOAhlkK2f2DJn6XIIZWtprrAnH6gQvUGosMVOWNlWIEA2DRkdz0DBOqwoqrFdX1ipW8ZHJBZPRxlewycS2Hy9vM6L5giMr0C6B1MhSB4CfRcszOFhFi5Gy1v3Fe77CpSu4NjRVgdd7ukSM8Yfwc5m7iZnHpsyURRgQweZa2IpyIk_UiTGcx-Dr52O7CokRVGPkB0Oey3enAh67qEdTcJ-w3NIqUO6923xRFUqcfBN_oBWekPL3tCCIAh8if8e5H_L9G7VZAvNGXaiq9B-1iek3Fcb6smRFey1Vu-2GgsXRDeOvlt4FYqF6ZBQ0K_YdbJEYMnyAgKXviRL2lLudjULE2qJmGT8unZfh8JdHVmyuu-xFu5OzKCUB0JakKzyTSDNEg-6Q89Y_sQvR-OVKYHlTq6crksaSmuZUz29E5lv8UTglNOXXUCJ8THxZTcADTKS_z-cN5ptZ_kD7UmaL0fxb493FJxJ7nCX0n6Tpa0v2iEzcfQh9vvrg_L4EM_rH_ZFqAuDW7mv0LDGOq0eP3lnn-NwUaohF-66ndL1d5iNGNeOJULOf8DazpzOE9udj7fkfgt7rE960ypj8q8Nc9_tOxqjnXZz1Y88moQf1oh0Qp3E2QANPrxG-FYL2kNCShjMb84iNSYBt35wH2RbgmjPVzWchHFnE_QQhS8nZcbLlKdiYqVVmN3_CZykrd0YHic6HTKssKOpqPcKm0nfqay2lrqaj6eiIod-H9BopxelXi-3B3L5Bwti_SSN6ZHOwdM8pjWpMx6nvIxDzsW8nEVRWYgkFYsoKcLoINI0miixR2UyNl-y-Wois3AahtOEfjxKozCIRcLT9BCjKLgQqWDRFBshVeACB7qrJl3mOdBQN6RU0ljzphTGyKpFvOCL3ta6y7bigG018WwzT_UXW90Ldw">