-
Notifications
You must be signed in to change notification settings - Fork 157
cast<AutoDiffTypeInterface>(!llvm.struct<(i64, i64)>) fails #2771
Copy link
Copy link
Open
Labels
Description
The minimal reproducible example is:
// Run: enzymexlamlir-opt --outline-enzyme-regions --enzyme %s
llvm.func @compute(%arg0: !llvm.ptr, %arg1: f64) -> f64 {
%0 = llvm.load %arg0 : !llvm.ptr -> !llvm.struct<(i64, i64)>
%1 = llvm.extractvalue %0[0] : !llvm.struct<(i64, i64)>
%2 = llvm.inttoptr %1 : i64 to !llvm.ptr
%3 = llvm.load %2 : !llvm.ptr -> f64
%4 = llvm.fmul %3, %arg1 : f64
llvm.return %4 : f64
}
llvm.func @kernel(%arg0: !llvm.ptr, %arg1: !llvm.ptr, %arg2: f64, %arg3: f64) {
enzyme.autodiff_region(%arg0, %arg1, %arg2, %arg3) {
^bb0(%a0: !llvm.ptr, %a1: f64):
%0 = llvm.load %a0 : !llvm.ptr -> !llvm.struct<(i64, i64)>
%1 = llvm.extractvalue %0[0] : !llvm.struct<(i64, i64)>
%2 = llvm.inttoptr %1 : i64 to !llvm.ptr
%3 = llvm.load %2 : !llvm.ptr -> f64
%4 = llvm.fmul %3, %a1 : f64
enzyme.yield %4 : f64
} attributes {
activity = [#enzyme<activity enzyme_dup>, #enzyme<activity enzyme_const>],
ret_activity = [#enzyme<activity enzyme_activenoneed>],
fn = "compute"
} : (!llvm.ptr, !llvm.ptr, f64, f64) -> f64
llvm.return
}
Reactions are currently unavailable