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

    <tr>
        <th>Summary</th>
        <td>
            [IrTranslator] Sign extends index value for G_EXTRACT_VECTOR_ELT, translating `i1 true` into `i32 -1`. 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    This is an issue related to #57408 
Given the following seed and command. Or you can see the result here: https://llvm.godbolt.org/z/dd5edjrG3

```llc PoC.ll -stop-after=irtranslator  -global-isel -o PoC.mir```

```
define void @f() {
BB:
  br label %BB2

BB2:                                              ; preds = %BB
  br label %BB1

BB1:                                              ; preds = %BB2
  %B1 = sub <2 x i8> <i8 16, i8 16>, <i8 16, i8 16>
  %A = alloca i8, align 4
  %L1 = load i8, i8* %A, align 1
  %I = insertelement <2 x i8> %B1, i8 -128, i8 %L1
  %E1 = extractelement <2 x i8> %I, i1 true
  store i8 %E1, i8* %A, align 1
  ret void
}
```

Regardless the architecture, IrTranslator will translate the index `i1 true` into `%9:_(s64) = G_CONSTANT i64 -1` (or `s32 -1` on 32bit architecture). 

This has caused AMDGPU backend to crash since negative index is unexpected. (See #57408 )

Further study shows that we are sign extending the index at [IRTranslator.cpp:2811](https://github.com/llvm/llvm-project/blob/main/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp#L2811), thus given values like `i1 true`, `i8 255`, the index will be translated as -1.

We propose change `APInt NewIdx = CI->getValue().sextOrTrunc(PreferredVecIdxWidth);` to `APInt NewIdx = CI->getValue().zextOrTrunc(PreferredVecIdxWidth);` as mentioned by @petar-avramovic in the latest review: https://reviews.llvm.org/D132938
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVltv4jgU_jXh5YgocQgNDzxwG4TUbauW7exb5SSHxDMmRrYD7fz6PXbCQGe62q20VerYJ_a5fuczuSrfpttaGKCHNzSaFkGj5BZLsAoClqQ3oyiDIFoG0WwtjtiArRF2Skp1Ek0FBmkrb0oo1H5P7xDuNbypFgpSSB_9do2mlRZq1BgkM6itPRiaBOwLPVIe92GlylxJGypdkegH_ZdliuU3vU462_04jrpHygIe1CKUEobGqsOQ7yzqIFkKbTVvDIWgNMCwkirncigM0kblj-yF_qnmQ93dssSdaBCOSpQQjKJdwLKATSC4mXff53MXgZ8C5Bokz8lGwNL5nF2rdUuK-VN_QTKHg8bS0GzZ6fzYUvzeUvx_WGJnU24Ve7lpc3ovGLyCyIJk5RYig3gcsAV0k2Tl5h_KL-pmXhsn7BTcaaJdXIqqgdHVptvOplS87Pe4cebPX07EVyc2_oBoDGqLEvfY2F_cdZH0Pg1j1ivtjF3pWXWW8ZUgVPyjpo0_HYPVLZ4PEwQ19ipX8b_6rNF6YPXVu1l-iMBufMSK61KiMb6VuC5qYbGwLfUSad7o7QXvJ0H9cMZ_13qiKfEVSOfZ43FEMtfbZIalE0LMC0HbjEce3RT--mVxf_e0nd1tQYxHlC93hLaQfpqZhPUi1UDCcmF_cWkSwrX7nl5qbogPWkNUMftjuX74E3JefMfGk0yhuanBiKZAaChYSyzTu01H2wZfD6QbiVnIiSdilAsrscm1qS-tpog1FaMt38DU6uRSxi2cXNqQTFANqLhk1zHXJTu0JUjnm8dLJsPicKDMsCyOg3RJdt9TViVs3eYhUV7PX_1reNDqGzlLy5yIh157LpqrPcLJFqrENTrx2rPT5gklLX6zz5Jb7wBFSYUmiwYqz8BHLls0IMV3fF9Z34IkyIClab--hOnRkeMFIETchooZXifxKxIfqIMyCEXNm8pbmD1sqBHu8LQpXz1GFpshdUOF9tm50lFjaCi39wTHtilI8qBxh5qo5RkLOvZVlLZ2oSRzB54OgP9N749P6KWAXNMK1VB0-Ztj7gNarof8qPleHUVByfA5cQkwllrxKPD0-63UyU3ob6fuVlrGCZsk2QCn8XgcZxkbR5NBOU3KSTLhAyusxKnD0VVHEnjg6QI701fCF5AuUU3Ntvpr-zhbbF-eV4vt_ePL6nbrq9arcED9uHnFuRFDGLRaTj-NUH_bG5pQM6VsUE-jYsLTNI_GSBdMmnGWZMm4yJJstJtQuNHAXzzGxRgw1uCp-8FAcwpzIKYsYizKkijOIkpUOC4Zo1WeYzEpKFdUCqR2kD9TOtBT71LeVoY-SmHsJd8Dbly_ok-p089bWys9XXLLF0rr9kD4HXgHpj6AvwFoEpG2">