Skip to content

Commit 75f64b3

Browse files
authored
Fix NVVMReflect pass usage. (#595)
1 parent 54d45e0 commit 75f64b3

File tree

5 files changed

+20
-26
lines changed

5 files changed

+20
-26
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
strategy:
1919
fail-fast: false
2020
matrix:
21-
version: ['1.8', '1.9', '1.10', '^1.11.0-rc1'] # 'nightly'
21+
version: ['1.8', '1.9', '1.10', 'pre'] # 'nightly'
2222
os: [ubuntu-latest, macOS-latest, windows-latest]
2323
arch: [x64]
2424
llvm_args: ['']
@@ -36,15 +36,15 @@ jobs:
3636
os: 'windows-latest'
3737
arch: 'x64'
3838
llvm_args: '--opaque-pointers'
39-
- version: '^1.11.0-rc1'
39+
- version: 'pre'
4040
os: 'ubuntu-latest'
4141
arch: 'x64'
4242
llvm_args: '--opaque-pointers'
43-
- version: '^1.11.0-rc1'
43+
- version: 'pre'
4444
os: 'macOS-latest'
4545
arch: 'x64'
4646
llvm_args: '--opaque-pointers'
47-
- version: '^1.11.0-rc1'
47+
- version: 'pre'
4848
os: 'windows-latest'
4949
arch: 'x64'
5050
llvm_args: '--opaque-pointers'

src/irgen.jl

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -718,11 +718,10 @@ function add_kernel_state!(mod::LLVM.Module)
718718

719719
return true
720720
end
721+
add_kernel_state!(pm::PassManager) =
722+
add!(pm, ModulePass("AddKernelStatePass", add_kernel_state!))
721723
if LLVM.has_newpm()
722724
AddKernelStatePass() = NewPMModulePass("AddKernelStatePass", add_kernel_state!)
723-
else
724-
add_kernel_state!(pm::PassManager) =
725-
add!(pm, ModulePass("AddKernelStatePass", add_kernel_state!))
726725
end
727726

728727
# lower calls to the state getter intrinsic. this is a two-step process, so that the state
@@ -775,11 +774,10 @@ function lower_kernel_state!(fun::LLVM.Function)
775774

776775
return changed
777776
end
777+
lower_kernel_state!(pm::PassManager) =
778+
add!(pm, FunctionPass("LowerKernelStatePass", lower_kernel_state!))
778779
if LLVM.has_newpm()
779780
LowerKernelStatePass() = NewPMFunctionPass("LowerKernelStatePass", lower_kernel_state!)
780-
else
781-
lower_kernel_state!(pm::PassManager) =
782-
add!(pm, FunctionPass("LowerKernelStatePass", lower_kernel_state!))
783781
end
784782

785783
function cleanup_kernel_state!(mod::LLVM.Module)
@@ -798,11 +796,10 @@ function cleanup_kernel_state!(mod::LLVM.Module)
798796

799797
return changed
800798
end
799+
cleanup_kernel_state!(pm::PassManager) =
800+
add!(pm, ModulePass("CleanupKernelStatePass", cleanup_kernel_state!))
801801
if LLVM.has_newpm()
802802
CleanupKernelStatePass() = NewPMModulePass("CleanupKernelStatePass", cleanup_kernel_state!)
803-
else
804-
cleanup_kernel_state!(pm::PassManager) =
805-
add!(pm, ModulePass("CleanupKernelStatePass", cleanup_kernel_state!))
806803
end
807804

808805
function kernel_state_intr(mod::LLVM.Module, T_state)

src/mcgen.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,11 @@ function resolve_cpu_references!(mod::LLVM.Module)
7878

7979
return changed
8080
end
81+
resolve_cpu_references!(pm::PassManager) =
82+
add!(pm, ModulePass("ResolveCPUReferences", resolve_cpu_references!))
8183
if LLVM.has_newpm()
8284
ResolveCPUReferencesPass() =
8385
NewPMModulePass("ResolveCPUReferences", resolve_cpu_references!)
84-
else
85-
resolve_cpu_references!(pm::PassManager) =
86-
add!(pm, ModulePass("ResolveCPUReferences", resolve_cpu_references!))
8786
end
8887

8988

src/optim.jl

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -648,10 +648,9 @@ function cpu_features!(mod::LLVM.Module)
648648

649649
return changed
650650
end
651+
cpu_features!(pm::PassManager) = add!(pm, ModulePass("LowerCPUFeatures", cpu_features!))
651652
if LLVM.has_newpm()
652653
CPUFeaturesPass() = NewPMModulePass("GPULowerCPUFeatures", cpu_features!)
653-
else
654-
cpu_features!(pm::PassManager) = add!(pm, ModulePass("LowerCPUFeatures", cpu_features!))
655654
end
656655

657656
# lower object allocations to to PTX malloc
@@ -711,10 +710,9 @@ function lower_gc_frame!(fun::LLVM.Function)
711710

712711
return changed
713712
end
713+
lower_gc_frame!(pm::PassManager) = add!(pm, FunctionPass("LowerGCFrame", lower_gc_frame!))
714714
if LLVM.has_newpm()
715715
LowerGCFramePass() = NewPMFunctionPass("GPULowerGCFrame", lower_gc_frame!)
716-
else
717-
lower_gc_frame!(pm::PassManager) = add!(pm, FunctionPass("LowerGCFrame", lower_gc_frame!))
718716
end
719717

720718
# lower the `julia.ptls_states` intrinsic by removing it, since it is GPU incompatible.
@@ -746,8 +744,7 @@ function lower_ptls!(mod::LLVM.Module)
746744

747745
return changed
748746
end
747+
lower_ptls!(pm::PassManager) = add!(pm, ModulePass("LowerPTLS", lower_ptls!))
749748
if LLVM.has_newpm()
750749
LowerPTLSPass() = NewPMModulePass("GPULowerPTLS", lower_ptls!)
751-
else
752-
lower_ptls!(pm::PassManager) = add!(pm, ModulePass("LowerPTLS", lower_ptls!))
753750
end

src/ptx.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ function optimize_module!(@nospecialize(job::CompilerJob{PTXCompilerTarget}),
156156
# TODO: Use the registered target passes (JuliaGPU/GPUCompiler.jl#450)
157157
if use_newpm
158158
@dispose pb=NewPMPassBuilder() begin
159+
register!(pb, NVVMReflectPass())
160+
159161
add!(pb, NewPMFunctionPassManager()) do fpm
160162
# TODO: need to run this earlier; optimize_module! is called after addOptimizationPasses!
161163
add!(fpm, NVVMReflectPass())
@@ -523,9 +525,8 @@ function nvvm_reflect!(fun::LLVM.Function)
523525
end
524526
return changed
525527
end
528+
nvvm_reflect!(pm::PassManager) =
529+
add!(pm, FunctionPass("NVVMReflect", nvvm_reflect!))
526530
if LLVM.has_newpm()
527-
NVVMReflectPass() = NewPMFunctionPass("nvvm-reflect", nvvm_reflect!)
528-
else
529-
nvvm_reflect!(pm::PassManager) =
530-
add!(pm, FunctionPass("NVVMReflect", nvvm_reflect!))
531+
NVVMReflectPass() = NewPMFunctionPass("custom-nvvm-reflect", nvvm_reflect!)
531532
end

0 commit comments

Comments
 (0)