diffsl 0.11.6

A compiler for a domain-specific language for ordinary differential equations (ODE).
Documentation
; RUN: if [ %llvmver -lt 16 ]; then %opt < %s %loadEnzyme -print-activity-analysis -activity-analysis-func=f -o /dev/null | FileCheck %s; fi
; RUN: %opt < %s %newLoadEnzyme -passes="print-activity-analysis" -activity-analysis-func=f -S | FileCheck %s

define internal double @f(double %wide.load.i.i) {
entry:
  %call.i.i4.i.i.i.i.i.i = alloca i8, i64 10, align 8
  %t2 = ptrtoint i8* %call.i.i4.i.i.i.i.i.i to i64
  %srcEvaluator.i.sroa.0.0.vec.insert = insertelement <2 x i64> zeroinitializer, i64 %t2, i32 0
  %srcEvaluator.i.sroa.0.8.vec.insert = insertelement <2 x i64> %srcEvaluator.i.sroa.0.0.vec.insert, i64 5, i32 1
  %tmp23 = bitcast i8* %call.i.i4.i.i.i.i.i.i to double*
  store double %wide.load.i.i, double* %tmp23, align 8
  %a5 = bitcast <2 x i64> %srcEvaluator.i.sroa.0.8.vec.insert to i128
  %a6 = trunc i128 %a5 to i64
  %a7 = inttoptr i64 %a6 to double*
  %atmp = load double, double* %a7, align 8
  ret double %atmp
}

; CHECK: double %wide.load.i.i: icv:0
; CHECK-NEXT: entry
; CHECK-NEXT:   %call.i.i4.i.i.i.i.i.i = alloca i8, i64 10, align 8: icv:0 ici:1
; CHECK-NEXT:   %t2 = ptrtoint i8* %call.i.i4.i.i.i.i.i.i to i64: icv:0 ici:1
; CHECK-NEXT:   %srcEvaluator.i.sroa.0.0.vec.insert = insertelement <2 x i64> zeroinitializer, i64 %t2, i32 0: icv:0 ici:1
; CHECK-NEXT:   %srcEvaluator.i.sroa.0.8.vec.insert = insertelement <2 x i64> %srcEvaluator.i.sroa.0.0.vec.insert, i64 5, i32 1: icv:0 ici:1
; CHECK-NEXT:   %tmp23 = bitcast i8* %call.i.i4.i.i.i.i.i.i to double*: icv:0 ici:1
; CHECK-NEXT:   store double %wide.load.i.i, double* %tmp23, align 8: icv:1 ici:0
; CHECK-NEXT:   %a5 = bitcast <2 x i64> %srcEvaluator.i.sroa.0.8.vec.insert to i128: icv:0 ici:1
; CHECK-NEXT:   %a6 = trunc i128 %a5 to i64: icv:0 ici:1
; CHECK-NEXT:   %a7 = inttoptr i64 %a6 to double*: icv:0 ici:1
; CHECK-NEXT:   %atmp = load double, double* %a7, align 8: icv:0 ici:0
; CHECK-NEXT:   ret double %atmp: icv:1 ici:1