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

    <tr>
        <th>Summary</th>
        <td>
            [AMDGPU] Assertion "Testing equality of non-equal types!" hit in GVN pass
        </td>
    </tr>

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

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

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

<pre>
    The following code is a reduced case from the libc++ lexicographical comparison test, https://godbolt.org/z/MnjWbK3ca. This fails when the GVN pass attempts to compare the two values from the GEP. I reduced it further, but wasn't sure if it was the same issue so I figured  I'd show both https://godbolt.org/z/hE6d6P6s3, this one is shorter.

```llvm
define void @iterator(ptr addrspace(5) %0, i64 %1, i32 %2) {
  %4 = addrspacecast ptr addrspace(5) %0 to ptr
  %5 = getelementptr i8, ptr addrspace(5) %0, i32 16
  %6 = getelementptr i8, ptr %4, i64 %1
  %7 = getelementptr i8, ptr addrspace(5) %5, i32 %2
  %8 = load i32, ptr %6, align 4
  %9 = load i32, ptr addrspace(5) %7, align 4
  %10 = icmp slt i32 %8, %9
  ret void
}
```
```console
$ opt -passes=gvn -mtriple=amdgcn-amd-amdhsa bug.llopt: /root/llvm-project/llvm/lib/Analysis/ValueTracking.cpp:313: bool llvm::isKnownNonEqual(const llvm::Value*, const llvm::Value*, const llvm::DataLayout&, llvm::AssumptionCache*, const llvm::Instruction*, const llvm::DominatorTree*, bool): Assertion `V1->getType() == V2->getType() && "Testing equality of non-equal types!"' failed.
 #0 0x0000000004f49178 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4f49178)
 #1 0x0000000004f468ec SignalHandler(int) Signals.cpp:0:0
 #2 0x000073c6b4c42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x000073c6b4c969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #4 0x000073c6b4c42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #5 0x000073c6b4c287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #6 0x000073c6b4c2871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #7 0x000073c6b4c39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #8 0x00000000046e330c (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x46e330c)
 #9 0x00000000043828c3 llvm::BasicAAResult::aliasGEP(llvm::GEPOperator const*, llvm::LocationSize, llvm::Value const*, llvm::LocationSize, llvm::Value const*, llvm::Value const*, llvm::AAQueryInfo&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x43828c3)
#10 0x0000000004382cd1 llvm::BasicAAResult::aliasCheckRecursive(llvm::Value const*, llvm::LocationSize, llvm::Value const*, llvm::LocationSize, llvm::AAQueryInfo&, llvm::Value const*, llvm::Value const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4382cd1)
#11 0x0000000004385337 llvm::BasicAAResult::aliasCheck(llvm::Value const*, llvm::LocationSize, llvm::Value const*, llvm::LocationSize, llvm::AAQueryInfo&, llvm::Instruction const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4385337)
#12 0x0000000004385917 llvm::BasicAAResult::alias(llvm::MemoryLocation const&, llvm::MemoryLocation const&, llvm::AAQueryInfo&, llvm::Instruction const*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x4385917)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMV91S4zgTfRrlRpWULfn3IhdhQvio-fnYGZa9nJLltq1BlrySTMg8_ZachMRZYMkWW7sUAVnqPn36uNWRmLWiVgBzFF-geDlhvWu0mf9o-gJMMil0uZnfNoArLaVeC1VjrkvAwmKGDZQ9hxJzZgFXRrfYNYClKDgiF4hcYAmPguvasK4RnEnMddsxI6xW2IF1iHzAjXOdRXSByAqRVa3LQks306ZGZPUTkdVn9eO34iPlbIZvG2FxxYS0eN2AGoJd3X3BHbMWM-eg7ZzFTu_CwGDg1ho_MNmDPTC8uryZ4esn-sLhqjeuAeMJFb3Da2YVIqnDtjeAReVN1swOzpa1Pn3bA7YaX-NK1L2BEuNrRNIS20avcaFd85eZNZdJmdwklvqozuem1SCsbbRxYGYoWKJgsfubBNtfKR_a7VQJlVCAH7QoMYoC4cAwpw0iWecMZmVpbMc4IJLFiOQYkTjwkUQS-XE4jCnxYzKspxdbXOynIozo8gDCmXX4RViveefMkXs8uNfgQEILynlXkfmQr3OjBIfJEU7yKo7nOUrp4JieTSAeCXJAygYkqVnpV49CJ37MpKgVjo7s82ftn4uYPg8QBgOC4G2HrXR7TgN5j783NeCGl78rkHR5Uiknj1wrqyXsZkmEdefw1O8dsIgu6weFp60zopOA6JK1Zc3VlLWl_zSW4aKvZ1LqziG6wIisjNYOkZWvx2ln9A_g-0f_TxSIrBaKyY0VFpHVnd-Ct4bxe6HqGe86RBc0pB6r0FriwY8uEF0I-1Hptfqi1eXvPZOIZJ65O7IYsBBZeEHOWVsyxz6xje4dIsPLOywtrO3bzgmtPjDevARwrawzPfdmL4XQrVB-F94a2KP4_BDJfaoLa8F4d4yS4C6cInpZg7vddL4shqqgS__u78gzS55zghEht2Cdb8Tg9RFug3WFlVbT4Rm7TQcWkRARgkg69Esod70EI0IDHDwG-5-oivIwzY4ysBu7HdwYodw3x_i9f22excHIsPV3bZ0B1u6kFMptSWaIrHyRkJXvwkKCmcJjJ7Xx3XXFJVP1lO1lsFNnenWPyKoQau94ETzuaHnVnniHJ7yTDDj-JmrF5P-YKqXHz3Y0ttN2V2fB8HkCIjuglPKkiHhEYhLsiG_L9jFLvifRVArVP05r1W8X-MzqWbKl511G5OgYM0_yiuPONQZY-f1eSHlegMF_FCA6JR2lCa7tkOe55KM0GWHHY2ySpRXFrNDGnYc8OI6Qkz8hh8XZmGExwkzHmDSHPDkPc3AZYWaj2kqA0oC_Wy1v4Ubx8lE8mpGM06M9eMGs4IvFV7C9dNspJgWzV5c3o214dXnz_277rb_tRLuOc7D4pDnz5L6JnzBeGRrlu3q9trZY_NKD2VyrSg8N4_06xVa8J3V9owhO1eVl-AZ1PzTA778C740VD-N-9_5ivex1KtXflf9dJeZlOJI4PJE4pjR9q8T_SWWPvtr_IQ29RCMNyamGefgWDUfyfYZWm80-5T3zk9zeZPQvi5OHR-Lsj6yTck7LnOZsAvMwJTQJSJbTSTOvSqhIEkCQl7SKAgiiMC7LPM0ggiKtoomYk4BEQRZGAaFRTGcBifMcwiyiwMqccBQF0DIhZz5LfymbDFe6eRjQOAgmkhUg7XAnJqRg_B5U6UX6vLy6-dWfrOLlxMyHs2_R1xZFgRTW2QOaE04Od-qdS7w8PvydcYbDjXBYqKeL7qQ3cn5ytRSu6YsZ1-3RAXx8LB-S8-fwXX4Pc_JHAAAA__-AmM36">