Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanradanov committed Feb 22, 2024
1 parent 34181f7 commit f336481
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 60 deletions.
4 changes: 2 additions & 2 deletions enzyme/test/Enzyme/Truncate/cmp.ll
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ entry:
ret i1 %res
}

; CHECK: define internal i1 @__enzyme_done_truncate_mem_func_64_52_32_23_f(double %x, double %y) {
; CHECK: define internal i1 @__enzyme_done_truncate_mem_func_64_52to32_23_f(double %x, double %y) {
; CHECK-DAG: %1 = alloca double, align 8
; CHECK-DAG: store double %x, double* %1, align 8
; CHECK-DAG: %2 = bitcast double* %1 to float*
Expand All @@ -39,7 +39,7 @@ entry:
; CHECK-DAG: %res = fcmp olt float %3, %5
; CHECK-DAG: ret i1 %res

; CHECK: define internal i1 @__enzyme_done_truncate_op_func_64_52_32_23_f(double %x, double %y) {
; CHECK: define internal i1 @__enzyme_done_truncate_op_func_64_52to32_23_f(double %x, double %y) {
; CHECK-DAG: %enzyme_trunc = fptrunc double %x to float
; CHECK-DAG: %enzyme_trunc1 = fptrunc double %y to float
; CHECK-DAG: %res = fcmp olt float %enzyme_trunc, %enzyme_trunc1
Expand Down
118 changes: 67 additions & 51 deletions enzyme/test/Enzyme/Truncate/intrinsic.ll
Original file line number Diff line number Diff line change
Expand Up @@ -37,64 +37,80 @@ entry:
ret double %res
}

; CHECK: define internal double @__enzyme_done_truncate_mem_func_64_52_32_23_f(double %x, double %y) {
; CHECK-NEXT: %1 = alloca double, align 8
; CHECK-NEXT: store double %x, double* %1, align 8
; CHECK-NEXT: %2 = bitcast double* %1 to float*
; CHECK-NEXT: %3 = load float, float* %2, align 4
; CHECK-NEXT: store double %y, double* %1, align 8
; CHECK-NEXT: %4 = bitcast double* %1 to float*
; CHECK-NEXT: %5 = load float, float* %4, align 4
; CHECK-NEXT: %res11 = call float @llvm.pow.f32(float %3, float %5)
; CHECK-NEXT: %6 = bitcast double* %1 to i64*
; CHECK-NEXT: store i64 0, i64* %6, align 4
; CHECK-NEXT: %7 = bitcast double* %1 to float*
; CHECK-NEXT: store float %res11, float* %7, align 4
; CHECK-NEXT: %8 = load double, double* %1, align 8
; CHECK-NEXT: store double %x, double* %1, align 8
; CHECK-NEXT: %9 = bitcast double* %1 to float*
; CHECK-NEXT: %10 = load float, float* %9, align 4
; CHECK-NEXT: %res22 = call float @llvm.powi.f32.i16(float %10, i16 2)
; CHECK-NEXT: %11 = bitcast double* %1 to i64*
; CHECK-NEXT: store i64 0, i64* %11, align 4
; CHECK-NEXT: %12 = bitcast double* %1 to float*
; CHECK-NEXT: store float %res22, float* %12, align 4
; CHECK-NEXT: %13 = load double, double* %1, align 8
; CHECK-NEXT: store double %8, double* %1, align 8
; CHECK-NEXT: %14 = bitcast double* %1 to float*
; CHECK-NEXT: %15 = load float, float* %14, align 4
; CHECK-NEXT: store double %13, double* %1, align 8
; CHECK-NEXT: %16 = bitcast double* %1 to float*
; CHECK-NEXT: %17 = load float, float* %16, align 4
; CHECK-NEXT: %res = fadd float %15, %17
; CHECK-NEXT: %18 = bitcast double* %1 to i64*
; CHECK-NEXT: store i64 0, i64* %18, align 4
; CHECK-NEXT: %19 = bitcast double* %1 to float*
; CHECK-NEXT: store float %res, float* %19, align 4
; CHECK-NEXT: %20 = load double, double* %1, align 8
; CHECK-NEXT: call void @llvm.nvvm.barrier0()
; CHECK-NEXT: ret double %20
; CHECK: define internal double @__enzyme_done_truncate_mem_func_64_52to32_23_f(double %x, double %y) {
; CHECK-DAG: %1 = alloca double, align 8
; CHECK-DAG: store double %x, double* %1, align 8
; CHECK-DAG: %2 = bitcast double* %1 to float*
; CHECK-DAG: %3 = load float, float* %2, align 4
; CHECK-DAG: store double %y, double* %1, align 8
; CHECK-DAG: %4 = bitcast double* %1 to float*
; CHECK-DAG: %5 = load float, float* %4, align 4
; CHECK-DAG: %res01 = call float @llvm.pow.f32(float %3, float %5)
; CHECK-DAG: %6 = bitcast double* %1 to i64*
; CHECK-DAG: store i64 0, i64* %6, align 4
; CHECK-DAG: %7 = bitcast double* %1 to float*
; CHECK-DAG: store float %res01, float* %7, align 4
; CHECK-DAG: %8 = load double, double* %1, align 8
; CHECK-DAG: store double %x, double* %1, align 8
; CHECK-DAG: %9 = bitcast double* %1 to float*
; CHECK-DAG: %10 = load float, float* %9, align 4
; CHECK-DAG: store double %y, double* %1, align 8
; CHECK-DAG: %11 = bitcast double* %1 to float*
; CHECK-DAG: %12 = load float, float* %11, align 4
; CHECK-DAG: %res12 = call float @llvm.pow.f32(float %10, float %12)
; CHECK-DAG: %13 = bitcast double* %1 to i64*
; CHECK-DAG: store i64 0, i64* %13, align 4
; CHECK-DAG: %14 = bitcast double* %1 to float*
; CHECK-DAG: store float %res12, float* %14, align 4
; CHECK-DAG: %15 = load double, double* %1, align 8
; CHECK-DAG: store double %x, double* %1, align 8
; CHECK-DAG: %16 = bitcast double* %1 to float*
; CHECK-DAG: %17 = load float, float* %16, align 4
; CHECK-DAG: %res23 = call float @llvm.powi.f32.i16(float %17, i16 2)
; CHECK-DAG: %18 = bitcast double* %1 to i64*
; CHECK-DAG: store i64 0, i64* %18, align 4
; CHECK-DAG: %19 = bitcast double* %1 to float*
; CHECK-DAG: store float %res23, float* %19, align 4
; CHECK-DAG: %20 = load double, double* %1, align 8
; CHECK-DAG: store double %15, double* %1, align 8
; CHECK-DAG: %21 = bitcast double* %1 to float*
; CHECK-DAG: %22 = load float, float* %21, align 4
; CHECK-DAG: store double %20, double* %1, align 8
; CHECK-DAG: %23 = bitcast double* %1 to float*
; CHECK-DAG: %24 = load float, float* %23, align 4
; CHECK-DAG: %res = fadd float %22, %24
; CHECK-DAG: %25 = bitcast double* %1 to i64*
; CHECK-DAG: store i64 0, i64* %25, align 4
; CHECK-DAG: %26 = bitcast double* %1 to float*
; CHECK-DAG: store float %res, float* %26, align 4
; CHECK-DAG: %27 = load double, double* %1, align 8
; CHECK-DAG: call void @llvm.nvvm.barrier0()
; CHECK-DAG: ret double %27

; CHECK: define internal double @__enzyme_done_truncate_op_func_64_52_32_23_f(double %x, double %y) {
; CHECK: define internal double @__enzyme_done_truncate_op_func_64_52to32_23_f(double %x, double %y) {
; CHECK-DAG: %enzyme_trunc = fptrunc double %x to float
; CHECK-DAG: %enzyme_trunc1 = fptrunc double %y to float
; CHECK-DAG: %res12 = call float @llvm.pow.f32(float %enzyme_trunc, float %enzyme_trunc1)
; CHECK-DAG: %enzyme_exp = fpext float %res12 to double
; CHECK-DAG: %res02 = call float @llvm.pow.f32(float %enzyme_trunc, float %enzyme_trunc1)
; CHECK-DAG: %enzyme_exp = fpext float %res02 to double
; CHECK-DAG: %enzyme_trunc3 = fptrunc double %x to float
; CHECK-DAG: %res24 = call float @llvm.powi.f32.i16(float %enzyme_trunc3, i16 2)
; CHECK-DAG: %enzyme_exp5 = fpext float %res24 to double
; CHECK-DAG: %enzyme_trunc6 = fptrunc double %enzyme_exp to float
; CHECK-DAG: %enzyme_trunc7 = fptrunc double %enzyme_exp5 to float
; CHECK-DAG: %res = fadd float %enzyme_trunc6, %enzyme_trunc7
; CHECK-DAG: %enzyme_exp8 = fpext float %res to double
; CHECK-DAG: %enzyme_trunc4 = fptrunc double %y to float
; CHECK-DAG: %res15 = call float @llvm.pow.f32(float %enzyme_trunc3, float %enzyme_trunc4)
; CHECK-DAG: %enzyme_exp6 = fpext float %res15 to double
; CHECK-DAG: %enzyme_trunc7 = fptrunc double %x to float
; CHECK-DAG: %res28 = call float @llvm.powi.f32.i16(float %enzyme_trunc7, i16 2)
; CHECK-DAG: %enzyme_exp9 = fpext float %res28 to double
; CHECK-DAG: %enzyme_trunc10 = fptrunc double %enzyme_exp6 to float
; CHECK-DAG: %enzyme_trunc11 = fptrunc double %enzyme_exp9 to float
; CHECK-DAG: %res = fadd float %enzyme_trunc10, %enzyme_trunc11
; CHECK-DAG: %enzyme_exp12 = fpext float %res to double
; CHECK-DAG: call void @llvm.nvvm.barrier0()
; CHECK-DAG: ret double %enzyme_exp8
; CHECK-DAG: ret double %enzyme_exp12

; CHECK: define internal double @__enzyme_done_truncate_op_func_64_52to11_7_f(double %x, double %y) {
; CHECK-DAG: %1 = call double @__enzyme_mpfr_64_52to11_7_func_pow(double %x, double %y)
; CHECK-DAG: %2 = call double @__enzyme_mpfr_64_52to11_7_intr_llvm_pow_f64(double %x, double %y)
; CHECK-DAG: %3 = call double @__enzyme_mpfr_64_52to11_7_intr_llvm_powi_f64_i16(double %x, i16 2)
; CHECK-DAG: %res = call double @__enzyme_mpfr_64_52to11_7_binop_fadd(double %2, double %3)
; CHECK-DAG: %1 = call double @__enzyme_mpfr_64_52_func_pow(double %x, double %y, i64 3, i64 7)
; CHECK-DAG: %2 = call double @__enzyme_mpfr_64_52_intr_llvm_pow_f64(double %x, double %y, i64 3, i64 7)
; CHECK-DAG: %3 = call double @__enzyme_mpfr_64_52_intr_llvm_powi_f64_i16(double %x, i16 2, i64 3, i64 7)
; CHECK-DAG: %res = call double @__enzyme_mpfr_64_52_binop_fadd(double %2, double %3, i64 3, i64 7)
; CHECK-DAG: call void @llvm.nvvm.barrier0()
; CHECK-DAG: ret double %res
; CHECK-DAG: }
6 changes: 3 additions & 3 deletions enzyme/test/Enzyme/Truncate/select.ll
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ entry:

; CHECK: define double @tester(double %x, double %y, i1 %cond) {
; CHECK-NEXT: entry:
; CHECK-NEXT: %res = call double @__enzyme_done_truncate_mem_func_64_52_32_23_f(double %x, double %y, i1 %cond)
; CHECK-NEXT: %res = call double @__enzyme_done_truncate_mem_func_64_52to32_23_f(double %x, double %y, i1 %cond)
; CHECK-NEXT: ret double %res

; CHECK: define internal double @__enzyme_done_truncate_mem_func_64_52_32_23_f(double %x, double %y, i1 %cond) {
; CHECK: define internal double @__enzyme_done_truncate_mem_func_64_52to32_23_f(double %x, double %y, i1 %cond) {
; CHECK-DAG: %1 = alloca double, align 8
; CHECK-DAG: store double %x, double* %1, align 8
; CHECK-DAG: %2 = bitcast double* %1 to float*
Expand All @@ -44,6 +44,6 @@ entry:
; CHECK-DAG: %8 = load double, double* %1, align 8
; CHECK-DAG: ret double %8

; CHECK: define internal double @__enzyme_done_truncate_op_func_64_52_32_23_f(double %x, double %y, i1 %cond) {
; CHECK: define internal double @__enzyme_done_truncate_op_func_64_52to32_23_f(double %x, double %y, i1 %cond) {
; CHECK-DAG: %res = select i1 %cond, double %x, double %y
; CHECK-DAG: ret double %res
8 changes: 4 additions & 4 deletions enzyme/test/Enzyme/Truncate/simple.ll
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ entry:
ret void
}

; CHECK: define internal void @__enzyme_done_truncate_mem_func_64_52_32_23_f(double* %x)
; CHECK: define internal void @__enzyme_done_truncate_mem_func_64_52to32_23_f(double* %x)
; CHECK-DAG: %1 = alloca double, align 8
; CHECK-DAG: %y = load double, double* %x, align 8
; CHECK-DAG: store double %y, double* %1, align 8
Expand All @@ -48,17 +48,17 @@ entry:
; CHECK-DAG: store double %8, double* %x, align 8
; CHECK-DAG: ret void

; CHECK: define internal void @__enzyme_done_truncate_op_func_64_52_32_23_f(double* %x) {
; CHECK: define internal void @__enzyme_done_truncate_op_func_64_52to32_23_f(double* %x) {
; CHECK-DAG: %y = load double, double* %x, align 8
; CHECK-DAG: %enzyme_trunc = fptrunc double %y to float
; CHECK-DAG: %enzyme_trunc1 = fptrunc double %y to float
; CHECK-DAG: %m = fmul float %enzyme_trunc, %enzyme_trunc1
; CHECK-DAG: %enzyme_exp = fpext float %m to double
; CHECK-DAG: store double %enzyme_exp, double* %x, align 8
; CHECK-DAG: ret void
_

; CHECK: define internal void @__enzyme_done_truncate_op_func_64_52to11_7_f(double* %x) {
; CHECK-DAG: %y = load double, double* %x, align 8
; CHECK-DAG: %m = call double @__enzyme_mpfr_64_52to11_7_fmul(double %y, double %y)
; CHECK-DAG: %m = call double @__enzyme_mpfr_64_52_binop_fmul(double %y, double %y, i64 3, i64 7)
; CHECK-DAG: store double %m, double* %x, align 8
; CHECK-DAG: ret void

0 comments on commit f336481

Please sign in to comment.