Skip to content

Commit 36267e1

Browse files
committed
[AMDGPU][SplitModule] Fix unintentional integer division
A static analysis tool warned that a division was always being performed in integer division, so was either 0.0 or 1.0. This doesn't seem intentional, so has been fixed to return a true ratio using floating-point division. This has a knock-on effect on how a test was splitting modules.
1 parent 99fd1c5 commit 36267e1

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

llvm/lib/Target/AMDGPU/AMDGPUSplitModule.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1101,7 +1101,7 @@ void RecursiveSearchSplitting::pickPartition(unsigned Depth, unsigned Idx,
11011101
// Check if the amount of code in common makes it worth it.
11021102
assert(SimilarDepsCost && Entry.CostExcludingGraphEntryPoints);
11031103
const double Ratio =
1104-
SimilarDepsCost / Entry.CostExcludingGraphEntryPoints;
1104+
(double)SimilarDepsCost / Entry.CostExcludingGraphEntryPoints;
11051105
assert(Ratio >= 0.0 && Ratio <= 1.0);
11061106
if (LargeFnOverlapForMerge > Ratio) {
11071107
// For debug, just print "L", so we'll see "L3=P3" for instance, which

llvm/test/tools/llvm-split/AMDGPU/large-kernels-merging.ll

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,20 @@
1515
; Also check w/o large kernels processing to verify they are indeed handled
1616
; differently.
1717

18-
; P0 is empty
19-
; CHECK0: declare
18+
; CHECK0: define internal void @HelperC()
19+
; CHECK0: define amdgpu_kernel void @C
2020

21-
; CHECK1: define internal void @HelperC()
22-
; CHECK1: define amdgpu_kernel void @C
21+
; CHECK1: define internal void @large2()
22+
; CHECK1: define internal void @large1()
23+
; CHECK1: define internal void @large0()
24+
; CHECK1: define internal void @HelperB()
25+
; CHECK1: define amdgpu_kernel void @B
2326

2427
; CHECK2: define internal void @large2()
2528
; CHECK2: define internal void @large1()
2629
; CHECK2: define internal void @large0()
2730
; CHECK2: define internal void @HelperA()
28-
; CHECK2: define internal void @HelperB()
2931
; CHECK2: define amdgpu_kernel void @A
30-
; CHECK2: define amdgpu_kernel void @B
3132

3233
; NOLARGEKERNELS-CHECK0: define internal void @HelperC()
3334
; NOLARGEKERNELS-CHECK0: define amdgpu_kernel void @C

0 commit comments

Comments
 (0)