blob: 8526ed6be7125d722643474bbf2558e23394455c [file] [log] [blame] [edit]
; RUN: if [ %llvmver -lt 16 ]; then %opt < %s %loadEnzyme -print-activity-analysis -activity-analysis-func=matvec -activity-analysis-inactive-args -o /dev/null | FileCheck %s; fi
; RUN: %opt < %s %newLoadEnzyme -passes="print-activity-analysis" -activity-analysis-func=matvec -activity-analysis-inactive-args -S | FileCheck %s
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { i8* }
%union.anon = type { i64, [8 x i8] }
@.str = private unnamed_addr constant [3 x i8] c"g1\00", align 1
declare double* @makedouble()
define void @matvec(%"class.std::__cxx11::basic_string"* %a1) {
entry:
%a0 = call double* @makedouble()
%a3 = tail call i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(%"class.std::__cxx11::basic_string"* nonnull %a1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
%a4 = icmp eq i32 %a3, 0
br i1 %a4, label %add, label %exit
add: ; preds = %2
%a6 = load double, double* %a0, align 8
%a7 = fadd double %a6, 1.000000e+00
store double %a7, double* %a0, align 8
br label %exit
exit: ; preds = %5, %2
ret void
}
declare dso_local i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(%"class.std::__cxx11::basic_string"* nonnull, i8*)
; CHECK: %"class.std::__cxx11::basic_string"* %a1: icv:1
; CHECK-NEXT: entry
; CHECK-NEXT: %a0 = call double* @makedouble(): icv:0 ici:1
; CHECK-NEXT: %a3 = tail call i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(%"class.std::__cxx11::basic_string"* nonnull %a1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0)): icv:1 ici:1
; CHECK-NEXT: %a4 = icmp eq i32 %a3, 0: icv:1 ici:1
; CHECK-NEXT: br i1 %a4, label %add, label %exit: icv:1 ici:1
; CHECK-NEXT: add
; CHECK-NEXT: %a6 = load double, double* %a0, align 8: icv:0 ici:0
; CHECK-NEXT: %a7 = fadd double %a6, 1.000000e+00: icv:0 ici:0
; CHECK-NEXT: store double %a7, double* %a0, align 8: icv:1 ici:0
; CHECK-NEXT: br label %exit: icv:1 ici:1
; CHECK-NEXT: exit
; CHECK-NEXT: ret void: icv:1 ici:1