Check if operand of mul is constant value of one for certain atomic
instructions in order to avoid making unnecessary instructions when
-amdgpu-atomic-optimizer is present.
Details
Diff Detail
Event Timeline
llvm/test/CodeGen/AMDGPU/atomic_optimizations_mul_one.mir | ||
---|---|---|
1 ↗ | (On Diff #294336) | It's weird to use MIR and -run-pass for an IR pass. Should have regular ll test, with an end to end llc line and an opt line for just the pass |
llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp | ||
---|---|---|
407 | It would be neater to have a BuildMul helper function that checks for and optimizes the mul-by-1 case. |
- Changed test to opt + llc global-isel (SDag was already removing these mul instructions, just later on). Should I split the file into two tests?
llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp | ||
---|---|---|
407 | A new BuildMul or update the current one (looks like some unittests need to be updated in this case)? |
llvm/lib/Target/AMDGPU/AMDGPUAtomicOptimizer.cpp | ||
---|---|---|
407 | I was suggesting a new BuildMul helper function in this source file, not changing IRBuilder at all. |
llvm/test/CodeGen/AMDGPU/GlobalISel/atomic_optimizations_mul_one.ll | ||
---|---|---|
7–10 | These negative checks are extremely fragile. These should use positive checks |
- Updated llc test check lines.
llvm/test/CodeGen/AMDGPU/GlobalISel/atomic_optimizations_mul_one.ll | ||
---|---|---|
7–10 | Just llc or opt check lines as well? |
llvm/test/CodeGen/AMDGPU/GlobalISel/atomic_optimizations_mul_one.ll | ||
---|---|---|
7–10 | Both. Negative checks are just too easy to get wrong |
It would be neater to have a BuildMul helper function that checks for and optimizes the mul-by-1 case.