Skip to content

Commit bd9e2b3

Browse files
authored
Add ijl allocations (rust-lang#560)
1 parent f951148 commit bd9e2b3

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

enzyme/Enzyme/AdjointGenerator.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9574,7 +9574,11 @@ class AdjointGenerator
95749574
}
95759575

95769576
// No need to free GC.
9577-
if (funcName == "jl_alloc_array_1d" ||
9577+
if (funcName == "ijl_alloc_array_1d" ||
9578+
funcName == "ijl_alloc_array_2d" ||
9579+
funcName == "ijl_alloc_array_3d" ||
9580+
funcName == "ijl_array_copy" ||
9581+
funcName == "jl_alloc_array_1d" ||
95789582
funcName == "jl_alloc_array_2d" ||
95799583
funcName == "jl_alloc_array_3d" ||
95809584
funcName == "jl_array_copy" || funcName == "julia.gc_alloc_obj")
@@ -9669,6 +9673,9 @@ class AdjointGenerator
96699673
// Thus it only needs caching if there is a need for it in the reverse.
96709674
if (funcName == "jl_alloc_array_1d" || funcName == "jl_alloc_array_2d" ||
96719675
funcName == "jl_alloc_array_3d" || funcName == "jl_array_copy" ||
9676+
funcName == "ijl_alloc_array_1d" ||
9677+
funcName == "ijl_alloc_array_2d" ||
9678+
funcName == "ijl_alloc_array_3d" || funcName == "ijl_array_copy" ||
96729679
funcName == "julia.gc_alloc_obj") {
96739680
if (!primalNeededInReverse) {
96749681
if (Mode == DerivativeMode::ReverseModeGradient ||

enzyme/Enzyme/GradientUtils.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,10 @@ class GradientUtils : public CacheUtility {
627627
funcName == "jl_alloc_array_1d" ||
628628
funcName == "jl_alloc_array_2d" ||
629629
funcName == "jl_alloc_array_3d" || funcName == "jl_array_copy" ||
630+
funcName == "ijl_alloc_array_1d" ||
631+
funcName == "ijl_alloc_array_2d" ||
632+
funcName == "ijl_alloc_array_3d" ||
633+
funcName == "ijl_array_copy" ||
630634
funcName == "julia.gc_alloc_obj") {
631635
primalInitializationOfShadow = true;
632636
} else {
@@ -758,6 +762,10 @@ class GradientUtils : public CacheUtility {
758762
funcName == "jl_alloc_array_2d" ||
759763
funcName == "jl_alloc_array_3d" ||
760764
funcName == "jl_array_copy" ||
765+
funcName == "ijl_alloc_array_1d" ||
766+
funcName == "ijl_alloc_array_2d" ||
767+
funcName == "ijl_alloc_array_3d" ||
768+
funcName == "ijl_array_copy" ||
761769
funcName == "julia.gc_alloc_obj") {
762770
primalInitializationOfShadow = true;
763771
} else {
@@ -876,6 +884,10 @@ class GradientUtils : public CacheUtility {
876884
if (funcName == "jl_alloc_array_1d" ||
877885
funcName == "jl_alloc_array_2d" ||
878886
funcName == "jl_alloc_array_3d" || funcName == "jl_array_copy" ||
887+
funcName == "ijl_alloc_array_1d" ||
888+
funcName == "ijl_alloc_array_2d" ||
889+
funcName == "ijl_alloc_array_3d" ||
890+
funcName == "ijl_array_copy" ||
879891
funcName == "julia.gc_alloc_obj") {
880892
}
881893
}

enzyme/Enzyme/TypeAnalysis/TypeAnalysis.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -804,10 +804,9 @@ void TypeAnalyzer::considerTBAA() {
804804
}
805805
if (F) {
806806
std::set<std::string> JuliaKnownTypes = {
807-
"julia.gc_alloc_obj",
808-
"jl_alloc_array_1d",
809-
"jl_alloc_array_2d",
810-
"jl_alloc_array_3d",
807+
"julia.gc_alloc_obj", "jl_alloc_array_1d", "jl_alloc_array_2d",
808+
"jl_alloc_array_3d", "ijl_alloc_array_1d", "ijl_alloc_array_2d",
809+
"ijl_alloc_array_3d",
811810
};
812811
if (JuliaKnownTypes.count(F->getName().str())) {
813812
visitCallInst(*call);

0 commit comments

Comments
 (0)