AMDGPU: Fix high 16-bit optimization on gfx9
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 15 Jun 2021 21:56:54 +0000 (17:56 -0400)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 22 Jun 2021 17:16:45 +0000 (13:16 -0400)
commit9ad8a1f6fb2aea775736cd59129b7299be443c5c
tree5cdf6725a992e7c2c2dea2eda4047f1bbd774c31
parent805e1a58965b52e9473c6c2a2db2a4d089511200
AMDGPU: Fix high 16-bit optimization on gfx9

We can do this optimization in the majority of cases, but we currently
don't have a way to do it. We do not track/model which instructions
have which behavior, the control bit to change the high bit behavior,
or making use of preserved bits at all. This is a bit fuzzy since we
don't know precisely how the source instruction will be lowered, but
that only really matters in one case (for fma_mixlo).

We do need to fixup some of these cases after selection, but the
pattern helps eliminate many of these zexts.
llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
llvm/lib/Target/AMDGPU/SIInstructions.td
llvm/test/CodeGen/AMDGPU/fptrunc.f16.ll
llvm/test/CodeGen/AMDGPU/preserve-hi16.ll