blob: 7daf1e333bf209ca2a72f2773005cc4dc960eb53 [file] [log] [blame] [edit]
// RUN: %eopt --print-activity-analysis=funcs=loadstore %s --split-input-file 2>&1 | FileCheck %s
// A function that contains active dataflow via side effects, then operands to results,
// then side effects again.
// CHECK-LABEL: @loadstore:
// CHECK: "x": Active
// CHECK: "squared": Active
// CHECK: "cos": Active
// CHECK: "ret": Active
func.func @loadstore(%x: f64 {enzyme.tag = "x"}) -> f64 {
%c1 = llvm.mlir.constant (1) : i64
%m1 = llvm.alloca %c1 x f64 : (i64) -> !llvm.ptr
%m2 = llvm.alloca %c1 x f64 : (i64) -> !llvm.ptr
llvm.store %x, %m1 : f64, !llvm.ptr
%load1 = llvm.load %m1 : !llvm.ptr -> f64
%squared = arith.mulf %load1, %load1 {tag = "squared"}: f64
%cos = math.cos %squared {tag = "cos"} : f64
llvm.store %cos, %m2 : f64, !llvm.ptr
%load2 = llvm.load %m2 {tag = "ret"} : !llvm.ptr -> f64
return %load2 : f64
}