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

    <tr>
        <th>Summary</th>
        <td>
            Cannot select SystemZISD::GET_CCMASK
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:SystemZ
      </td>
    </tr>

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

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

<pre>
    (Bisected and seems to be present at least one year back)

[testcase.tar.gz](https://github.com/llvm/llvm-project/files/10035985/testcase.tar.gz)
llc   ./tc_GET_CCMASK.ll
LLVM ERROR: Cannot select: t50: i32 = SystemZISD::GET_CCMASK t72, Constant:i32<15>, Constant:i32<3>

```
Legalized selection DAG: %bb.0 'k:bb'
SelectionDAG has 35 nodes:
    t61: i64,i32 = SystemZISD::UADDO undef:i64, undef:i64
  t62: i32 = SystemZISD::SELECT_CCMASK Constant:i32<1>, Constant:i32<0>, TargetConstant:i32<15>, TargetConstant:i32<3>, t61:1
                  t50: i32 = SystemZISD::GET_CCMASK t62, Constant:i32<15>, Constant:i32<3>
```
=>

```
Optimized legalized selection DAG: %bb.0 'k:bb'
SelectionDAG has 30 nodes:
  t61: i64,i32 = SystemZISD::UADDO undef:i64, undef:i64
  t71: i64 = SystemZISD::SELECT_CCMASK Constant:i64<1>, Constant:i64<0>, TargetConstant:i32<15>, TargetConstant:i32<3>, t61:1
  t72: i32 = truncate t71
                 t50: i32 = SystemZISD::GET_CCMASK t72, Constant:i32<15>, Constant:i32<3>
```

```
SystemZTargetLowering::combineGET_CCMASK():
  if (Select->getOpcode() != SystemZISD::SELECT_CCMASK)
=>  return SDValue();
```

It seems to me that the inserted truncate node is not handled - maybe it should either never be emitted or it should be recognized in combineGET_CCMASK().


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9VVFv2zgM_jX2C1FDlmMnefBDmmTDtg49NLs93Msg24ytTZECSd7Q_fqjbGdpt6aH4nZnGJYl0uRH8jNZmea-jPjiWjqsPTYgdAMO8eDAG6gQjhYdag_Cg0LhPBiNcI_CQiXqLxFfRmwTsdX0zK89Ol8Lh4kXNmm_R_mGrHfeH12UrSL-iu5W-q6vktocaKPU19NydbTmM6Gg7V4qdLSmjGX5cpHT68-GT56VqgEgCRr1p9fbD5_W6_er3btEqVF-c_PxPWzv7m7vCACshdbGU4QqOKIDn7OwyIxDlG1gd-88Hv56s9sEuNnqbBD8nEd8DWujnRc6fEwfRdk6zaNs-6QkC4KH6SnYdI_IsBVKfsdmgiONhs3qdYAT8byqEkbr_Avtq4pexo92J1XShE44yHLQpsEhvYMGZQN8kQ5RFTMCdim2P1ebzS30usF9gDzoPtpO5nzBn0vRbnuzXf_I0q_puZQdNgk-CNuiv5zWC_JsEo-hpufYH18vqG_xL-r7uLLk6fnS3x69PAylV7-HBOwXEvxeCsxPxl5IATLxNAUGwX9DgfCjPii5t72uhcchiKdZ8j81gZ9I8tTh5HoM-MZ8Qyt1O6KgfllJjWcw1FhDFzyXXO6JK4uRHFfklkzcHmvixahJwvQfq3fu6AOHASz63mrYbT4K1ePJ5_UzIb3x5wlyoLR3NDt8hyC1QxtmzI-KBM6CdBBackeTR5HwCg7ingaPJCud6VUDSPMCLWj8Sk-S4EH6YMbYB0p0brE2rR7-JanhQrqSh0hjLNOiWMw5z3IWN2XWLLOliL30CstHo-IZTsS9VeWLJ5x0rh9GXL5k-SzuyobWjBVNw_d5tS-yoknndYEsE7N5zRaLWIkKlStpxkach-GLugnVG4HRGc3aWJaccZ6m6ZynZHmZ1PkS2Wy_F8uiyOuGRTOGByFVEvAkxraxLQdoVd86EirpvDsLhXOy1YiT2_4bypYKNXkTve-MLd8a_YdzRsdDUOUQ0d92VGO0">