Try to handle arbitrary scalar BFEs by packing the operands. The DAG
gives up on non-constant arguments. We're still missing any constant
folding, so we end up with pretty ugly code most of the time. Also
handle the 64-bit scalar case, which the DAG doesn't try to do.
Details
Details
Diff Detail
Diff Detail
Event Timeline
Comment Actions
Looks OK to me, but it should probably be reviewed by someone more familiar with RegisterBankInfo.
llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp | ||
---|---|---|
1484 | Is the behaviour of the intrinsic well-defined when the "offset" argument is huge enough for this to make a difference? |
llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp | ||
---|---|---|
1484 | I'm assuming the intrinsic is supposed to match the behavior of the V_BFE_* instructions, which ignore the high bits |
llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp | ||
---|---|---|
1484 | Fair enough. ANDing with 31 or 63 would fit better into a single-word instruction encoding, wouldn't it? |
Is the behaviour of the intrinsic well-defined when the "offset" argument is huge enough for this to make a difference?