AMDGPU/GlobalISel: Use ptrtoint to legalize constant 32-bit addrspacecast
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Sun, 18 Dec 2022 18:00:24 +0000 (13:00 -0500)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Sun, 18 Dec 2022 18:15:58 +0000 (13:15 -0500)
commit012a85296b2fc2fe46b0fd90f4c4f7e5d68e5354
tree214c2524f760fc60101513ac0b1bd9581e2d3baf
parent09e79659bf2aeb0a5bd8ad6a9a40734b42caaf8a
AMDGPU/GlobalISel: Use ptrtoint to legalize constant 32-bit addrspacecast

This was trying to merge 2 32-bit pointers into a 64-bit pointer. The
artifact combiner was assuming merges to pointers use scalar sources,
and ended up inserting invalid bitcast from a pointer to a scalar. It
should probably be a verifier error to have pointer merge sources with
a pointer result.

Fixes verifier errors with EXPENSIVE_CHECKS.
llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-addrspacecast.mir
llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-constant-32bit.mir
llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-sextload-constant-32bit.mir
llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-zextload-constant-32bit.mir
llvm/test/CodeGen/AMDGPU/addrspacecast.gfx6.ll