Skip to content

Instantly share code, notes, and snippets.

@certik
Last active August 20, 2021 21:28
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save certik/06f7336f6c0a2ef2971a058f09f25638 to your computer and use it in GitHub Desktop.
; ModuleID = 'LFortran'
source_filename = "LFortran"
%array = type { i32*, i32, [1 x %dimension_descriptor] }
%dimension_descriptor = type { i32, i32, i32, i32 }
%array.0 = type { float*, i32, [1 x %dimension_descriptor] }
%size_arg = type { %dimension_descriptor*, i32 }
%complex_8 = type { double, double }
%complex_4 = type { float, float }
@0 = private unnamed_addr constant [12 x i8] c"ERROR STOP\0A\00", align 1
@1 = private unnamed_addr constant [12 x i8] c"ERROR STOP\0A\00", align 1
@2 = private unnamed_addr constant [12 x i8] c"ERROR STOP\0A\00", align 1
@3 = private unnamed_addr constant [12 x i8] c"ERROR STOP\0A\00", align 1
@4 = private unnamed_addr constant [12 x i8] c"ERROR STOP\0A\00", align 1
@5 = private unnamed_addr constant [12 x i8] c"ERROR STOP\0A\00", align 1
@6 = private unnamed_addr constant [4 x i8] c"%f\0A\00", align 1
declare i32 @__module_lfortran_intrinsic_array_abs(%array*)
declare i1 @__module_lfortran_intrinsic_array_allocated(%array*)
declare i32 @__module_lfortran_intrinsic_array_floor(%array.0*, i32*)
declare i32 @__module_lfortran_intrinsic_array_int(%array.0*, i32*)
define i32 @__module_lfortran_intrinsic_array_lbound(%dimension_descriptor** %x, i32* %dim) {
.entry:
%lbound = alloca i32, align 4
%0 = load %dimension_descriptor*, %dimension_descriptor** %x, align 8
%1 = load i32, i32* %dim, align 4
%2 = sub i32 %1, 1
%3 = getelementptr inbounds %dimension_descriptor, %dimension_descriptor* %0, i32 %2
%4 = getelementptr %dimension_descriptor, %dimension_descriptor* %3, i32 0, i32 1
%5 = load i32, i32* %4, align 4
store i32 %5, i32* %lbound, align 4
%6 = load i32, i32* %lbound, align 4
ret i32 %6
}
declare i32 @__module_lfortran_intrinsic_array_max(i32*, i32*)
declare i32 @__module_lfortran_intrinsic_array_maxval(%array*)
declare i32 @__module_lfortran_intrinsic_array_min(i32*, i32*)
declare i32 @__module_lfortran_intrinsic_array_minval(%array*)
declare float @__module_lfortran_intrinsic_array_real(%array*, i32*)
define i32 @__module_lfortran_intrinsic_array_size(%size_arg* %x) {
.entry:
%size = alloca i32, align 4
%0 = getelementptr %size_arg, %size_arg* %x, i32 0, i32 0
%1 = load %dimension_descriptor*, %dimension_descriptor** %0, align 8
%2 = getelementptr %size_arg, %size_arg* %x, i32 0, i32 1
%3 = load i32, i32* %2, align 4
store i32 1, i32* %size, align 4
%4 = alloca i32, align 4
store i32 0, i32* %4, align 4
br label %loop.head
loop.head: ; preds = %loop.body, %.entry
%5 = load i32, i32* %4, align 4
%6 = icmp slt i32 %5, %3
br i1 %6, label %loop.body, label %loop.end
loop.body: ; preds = %loop.head
%7 = load i32, i32* %4, align 4
%8 = load i32, i32* %size, align 4
%9 = getelementptr inbounds %dimension_descriptor, %dimension_descriptor* %1, i32 %7
%10 = getelementptr %dimension_descriptor, %dimension_descriptor* %9, i32 0, i32 3
%11 = load i32, i32* %10, align 4
%12 = mul i32 %8, %11
store i32 %12, i32* %size, align 4
%13 = add i32 %7, 1
store i32 %13, i32* %4, align 4
br label %loop.head
loop.end: ; preds = %loop.head
%14 = load i32, i32* %size, align 4
ret i32 %14
}
declare i32 @__module_lfortran_intrinsic_array_sum(%array*)
declare float @__module_lfortran_intrinsic_array_tiny(%array*)
define i32 @__module_lfortran_intrinsic_array_ubound(%dimension_descriptor** %x, i32* %dim) {
.entry:
%ubound = alloca i32, align 4
%0 = load %dimension_descriptor*, %dimension_descriptor** %x, align 8
%1 = load i32, i32* %dim, align 4
%2 = sub i32 %1, 1
%3 = getelementptr inbounds %dimension_descriptor, %dimension_descriptor* %0, i32 %2
%4 = getelementptr %dimension_descriptor, %dimension_descriptor* %3, i32 0, i32 2
%5 = load i32, i32* %4, align 4
store i32 %5, i32* %ubound, align 4
%6 = load i32, i32* %ubound, align 4
ret i32 %6
}
define double @__module_lfortran_intrinsic_math2_dabs(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = fcmp uge double %0, 0.000000e+00
br i1 %1, label %then, label %else
then: ; preds = %.entry
%2 = load double, double* %x, align 8
store double %2, double* %r, align 8
br label %ifcont
else: ; preds = %.entry
%3 = load double, double* %x, align 8
%4 = fsub double 0.000000e+00, %3
store double %4, double* %r, align 8
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi i32 [ 1, %then ], [ 2, %else ]
%5 = load double, double* %r, align 8
ret double %5
}
define double @__module_lfortran_intrinsic_math2_daimag(%complex_8* %x) {
.entry:
%r = alloca double, align 8
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @0, i32 0, i32 0))
call void @exit(i32 1)
%0 = load double, double* %r, align 8
ret double %0
}
define i32 @__module_lfortran_intrinsic_math2_dfloor(double* %x) {
.entry:
%r = alloca i32, align 4
%0 = load double, double* %x, align 8
%1 = fcmp uge double %0, 0.000000e+00
br i1 %1, label %then, label %else
then: ; preds = %.entry
%2 = load double, double* %x, align 8
%3 = fptosi double %2 to i32
store i32 %3, i32* %r, align 4
br label %ifcont
else: ; preds = %.entry
%4 = load double, double* %x, align 8
%5 = fsub double %4, 1.000000e+00
%6 = fptosi double %5 to i32
store i32 %6, i32* %r, align 4
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi i32 [ 1, %then ], [ 2, %else ]
%7 = load i32, i32* %r, align 4
ret i32 %7
}
define double @__module_lfortran_intrinsic_math2_dmodulo(double* %x, double* %y) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = load double, double* %x, align 8
%2 = load double, double* %y, align 8
%3 = fdiv double %1, %2
%4 = alloca double, align 8
store double %3, double* %4, align 8
%5 = call i32 @__module_lfortran_intrinsic_math2_dfloor(double* %4)
%6 = sitofp i32 %5 to double
%7 = load double, double* %y, align 8
%8 = fmul double %6, %7
%9 = fsub double %0, %8
store double %9, double* %r, align 8
%10 = load double, double* %r, align 8
ret double %10
}
define double @__module_lfortran_intrinsic_math2_dsqrt(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = fcmp uge double %0, 0.000000e+00
br i1 %1, label %then, label %else
then: ; preds = %.entry
%2 = load double, double* %x, align 8
%3 = call double @llvm.pow.f64(double %2, double 5.000000e-01)
store double %3, double* %r, align 8
br label %ifcont
else: ; preds = %.entry
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @1, i32 0, i32 0))
call void @exit(i32 1)
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi i32 [ 1, %then ], [ 2, %else ]
%4 = load double, double* %r, align 8
ret double %4
}
define i32 @__module_lfortran_intrinsic_math2_iabs(i32* %x) {
.entry:
%r = alloca i32, align 4
%0 = load i32, i32* %x, align 4
%1 = icmp sge i32 %0, 0
br i1 %1, label %then, label %else
then: ; preds = %.entry
%2 = load i32, i32* %x, align 4
store i32 %2, i32* %r, align 4
br label %ifcont
else: ; preds = %.entry
%3 = load i32, i32* %x, align 4
%4 = sub i32 0, %3
store i32 %4, i32* %r, align 4
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi i32 [ 1, %then ], [ 2, %else ]
%5 = load i32, i32* %r, align 4
ret i32 %5
}
define i32 @__module_lfortran_intrinsic_math2_imodulo(i32* %x, i32* %y) {
.entry:
%r = alloca i32, align 4
%0 = load i32, i32* %x, align 4
%1 = load i32, i32* %x, align 4
%2 = sitofp i32 %1 to float
%3 = load i32, i32* %y, align 4
%4 = sitofp i32 %3 to float
%5 = fdiv float %2, %4
%6 = alloca float, align 4
store float %5, float* %6, align 4
%7 = call i32 @__module_lfortran_intrinsic_math2_sfloor(float* %6)
%8 = load i32, i32* %y, align 4
%9 = mul i32 %7, %8
%10 = sub i32 %0, %9
store i32 %10, i32* %r, align 4
%11 = load i32, i32* %r, align 4
ret i32 %11
}
define float @__module_lfortran_intrinsic_math2_sabs(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = fcmp uge float %0, 0.000000e+00
br i1 %1, label %then, label %else
then: ; preds = %.entry
%2 = load float, float* %x, align 4
store float %2, float* %r, align 4
br label %ifcont
else: ; preds = %.entry
%3 = load float, float* %x, align 4
%4 = fsub float 0.000000e+00, %3
store float %4, float* %r, align 4
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi i32 [ 1, %then ], [ 2, %else ]
%5 = load float, float* %r, align 4
ret float %5
}
define float @__module_lfortran_intrinsic_math2_saimag(%complex_4* %x) {
.entry:
%r = alloca float, align 4
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @2, i32 0, i32 0))
call void @exit(i32 1)
%0 = load float, float* %r, align 4
ret float %0
}
define i32 @__module_lfortran_intrinsic_math2_sfloor(float* %x) {
.entry:
%r = alloca i32, align 4
%0 = load float, float* %x, align 4
%1 = fcmp uge float %0, 0.000000e+00
br i1 %1, label %then, label %else
then: ; preds = %.entry
%2 = load float, float* %x, align 4
%3 = fptosi float %2 to i32
store i32 %3, i32* %r, align 4
br label %ifcont
else: ; preds = %.entry
%4 = load float, float* %x, align 4
%5 = fsub float %4, 1.000000e+00
%6 = fptosi float %5 to i32
store i32 %6, i32* %r, align 4
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi i32 [ 1, %then ], [ 2, %else ]
%7 = load i32, i32* %r, align 4
ret i32 %7
}
define float @__module_lfortran_intrinsic_math2_smodulo(float* %x, float* %y) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = load float, float* %x, align 4
%2 = load float, float* %y, align 4
%3 = fdiv float %1, %2
%4 = alloca float, align 4
store float %3, float* %4, align 4
%5 = call i32 @__module_lfortran_intrinsic_math2_sfloor(float* %4)
%6 = sitofp i32 %5 to float
%7 = load float, float* %y, align 4
%8 = fmul float %6, %7
%9 = fsub float %0, %8
store float %9, float* %r, align 4
%10 = load float, float* %r, align 4
ret float %10
}
define float @__module_lfortran_intrinsic_math2_ssqrt(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = fcmp uge float %0, 0.000000e+00
br i1 %1, label %then, label %else
then: ; preds = %.entry
%2 = load float, float* %x, align 4
%3 = call float @llvm.pow.f32(float %2, float 5.000000e-01)
store float %3, float* %r, align 4
br label %ifcont
else: ; preds = %.entry
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @3, i32 0, i32 0))
call void @exit(i32 1)
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi i32 [ 1, %then ], [ 2, %else ]
%4 = load float, float* %r, align 4
ret float %4
}
declare void @_lfortran_printf(i8*, ...)
declare void @exit(i32)
declare void @_lfortran_sin(float, float*)
declare void @_lfortran_cos(float, float*)
declare void @_lfortran_tan(float, float*)
declare void @_lfortran_sinh(float, float*)
declare void @_lfortran_cosh(float, float*)
declare void @_lfortran_tanh(float, float*)
declare void @_lfortran_asin(float, float*)
declare void @_lfortran_acos(float, float*)
declare void @_lfortran_atan(float, float*)
declare void @_lfortran_asinh(float, float*)
declare void @_lfortran_acosh(float, float*)
declare void @_lfortran_atanh(float, float*)
; Function Attrs: nounwind readnone speculatable willreturn
declare double @llvm.pow.f64(double, double) #0
; Function Attrs: nounwind readnone speculatable willreturn
declare float @llvm.pow.f32(float, float) #0
define float @__module_lfortran_intrinsic_math_cabs(%complex_4* %x) {
.entry:
%r = alloca float, align 4
%0 = load %complex_4, %complex_4* %x, align 4
%1 = alloca %complex_4, align 8
store %complex_4 %0, %complex_4* %1, align 4
%2 = getelementptr %complex_4, %complex_4* %1, i32 0, i32 0
%3 = load float, float* %2, align 4
%4 = call float @llvm.pow.f32(float %3, float 2.000000e+00)
%5 = call float @__module_lfortran_intrinsic_math2_saimag(%complex_4* %x)
%6 = call float @llvm.pow.f32(float %5, float 2.000000e+00)
%7 = fadd float %4, %6
%8 = alloca float, align 4
store float %7, float* %8, align 4
%9 = call float @__module_lfortran_intrinsic_math_ssqrt(float* %8)
store float %9, float* %r, align 4
%10 = load float, float* %r, align 4
ret float %10
}
define %complex_4 @__module_lfortran_intrinsic_math_cacos(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_cacos(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_cacos(%complex_4)
define %complex_4 @__module_lfortran_intrinsic_math_cacosh(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_cacosh(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_cacosh(%complex_4)
define %complex_4 @__module_lfortran_intrinsic_math_casin(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_casin(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_casin(%complex_4)
define %complex_4 @__module_lfortran_intrinsic_math_casinh(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_casinh(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_casinh(%complex_4)
define %complex_4 @__module_lfortran_intrinsic_math_catan(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_catan(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_catan(%complex_4)
define %complex_4 @__module_lfortran_intrinsic_math_catanh(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_catanh(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_catanh(%complex_4)
define %complex_4 @__module_lfortran_intrinsic_math_ccos(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_ccos(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_ccos(%complex_4)
define %complex_4 @__module_lfortran_intrinsic_math_ccosh(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_ccosh(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_ccosh(%complex_4)
define %complex_4 @__module_lfortran_intrinsic_math_csin(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_csin(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_csin(%complex_4)
define %complex_4 @__module_lfortran_intrinsic_math_csinh(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_csinh(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_csinh(%complex_4)
define %complex_4 @__module_lfortran_intrinsic_math_ctan(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_ctan(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_ctan(%complex_4)
define %complex_4 @__module_lfortran_intrinsic_math_ctanh(%complex_4* %x) {
.entry:
%r = alloca %complex_4, align 8
%0 = load %complex_4, %complex_4* %x, align 4
%1 = call %complex_4 @_lfortran_ctanh(%complex_4 %0)
store %complex_4 %1, %complex_4* %r, align 4
%2 = load %complex_4, %complex_4* %r, align 4
ret %complex_4 %2
}
declare %complex_4 @_lfortran_ctanh(%complex_4)
define double @__module_lfortran_intrinsic_math_dabs(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = fcmp uge double %0, 0.000000e+00
br i1 %1, label %then, label %else
then: ; preds = %.entry
%2 = load double, double* %x, align 8
store double %2, double* %r, align 8
br label %ifcont
else: ; preds = %.entry
%3 = load double, double* %x, align 8
%4 = fsub double 0.000000e+00, %3
store double %4, double* %r, align 8
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi i32 [ 1, %then ], [ 2, %else ]
%5 = load double, double* %r, align 8
ret double %5
}
define double @__module_lfortran_intrinsic_math_dacos(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_dacos(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_dacos(double)
define double @__module_lfortran_intrinsic_math_dacosh(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_dacosh(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_dacosh(double)
define double @__module_lfortran_intrinsic_math_dasin(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_dasin(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_dasin(double)
define double @__module_lfortran_intrinsic_math_dasinh(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_dasinh(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_dasinh(double)
define double @__module_lfortran_intrinsic_math_datan(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_datan(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_datan(double)
define double @__module_lfortran_intrinsic_math_datanh(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_datanh(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_datanh(double)
define double @__module_lfortran_intrinsic_math_dcos(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_dcos(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_dcos(double)
define double @__module_lfortran_intrinsic_math_dcosh(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_dcosh(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_dcosh(double)
define double @__module_lfortran_intrinsic_math_dsin(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_dsin(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_dsin(double)
define double @__module_lfortran_intrinsic_math_dsinh(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_dsinh(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_dsinh(double)
define double @__module_lfortran_intrinsic_math_dsqrt(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = fcmp uge double %0, 0.000000e+00
br i1 %1, label %then, label %else
then: ; preds = %.entry
%2 = load double, double* %x, align 8
%3 = call double @llvm.pow.f64(double %2, double 5.000000e-01)
store double %3, double* %r, align 8
br label %ifcont
else: ; preds = %.entry
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @4, i32 0, i32 0))
call void @exit(i32 1)
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi i32 [ 1, %then ], [ 2, %else ]
%4 = load double, double* %r, align 8
ret double %4
}
define double @__module_lfortran_intrinsic_math_dtan(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_dtan(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_dtan(double)
define double @__module_lfortran_intrinsic_math_dtanh(double* %x) {
.entry:
%r = alloca double, align 8
%0 = load double, double* %x, align 8
%1 = call double @_lfortran_dtanh(double %0)
store double %1, double* %r, align 8
%2 = load double, double* %r, align 8
ret double %2
}
declare double @_lfortran_dtanh(double)
define float @__module_lfortran_intrinsic_math_sabs(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = fcmp uge float %0, 0.000000e+00
br i1 %1, label %then, label %else
then: ; preds = %.entry
%2 = load float, float* %x, align 4
store float %2, float* %r, align 4
br label %ifcont
else: ; preds = %.entry
%3 = load float, float* %x, align 4
%4 = fsub float 0.000000e+00, %3
store float %4, float* %r, align 4
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi i32 [ 1, %then ], [ 2, %else ]
%5 = load float, float* %r, align 4
ret float %5
}
define float @__module_lfortran_intrinsic_math_sacos(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_sacos(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_sacos(float)
define float @__module_lfortran_intrinsic_math_sacosh(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_sacosh(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_sacosh(float)
define float @__module_lfortran_intrinsic_math_sasin(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_sasin(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_sasin(float)
define float @__module_lfortran_intrinsic_math_sasinh(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_sasinh(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_sasinh(float)
define float @__module_lfortran_intrinsic_math_satan(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_satan(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_satan(float)
define float @__module_lfortran_intrinsic_math_satanh(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_satanh(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_satanh(float)
define float @__module_lfortran_intrinsic_math_scos(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_scos(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_scos(float)
define float @__module_lfortran_intrinsic_math_scosh(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_scosh(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_scosh(float)
define float @__module_lfortran_intrinsic_math_ssin(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_ssin(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_ssin(float)
define float @__module_lfortran_intrinsic_math_ssinh(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_ssinh(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_ssinh(float)
define float @__module_lfortran_intrinsic_math_ssqrt(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = fcmp uge float %0, 0.000000e+00
br i1 %1, label %then, label %else
then: ; preds = %.entry
%2 = load float, float* %x, align 4
%3 = call float @llvm.pow.f32(float %2, float 5.000000e-01)
store float %3, float* %r, align 4
br label %ifcont
else: ; preds = %.entry
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @5, i32 0, i32 0))
call void @exit(i32 1)
br label %ifcont
ifcont: ; preds = %else, %then
%iftmp = phi i32 [ 1, %then ], [ 2, %else ]
%4 = load float, float* %r, align 4
ret float %4
}
define float @__module_lfortran_intrinsic_math_stan(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_stan(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_stan(float)
define float @__module_lfortran_intrinsic_math_stanh(float* %x) {
.entry:
%r = alloca float, align 4
%0 = load float, float* %x, align 4
%1 = call float @_lfortran_stanh(float %0)
store float %1, float* %r, align 4
%2 = load float, float* %r, align 4
ret float %2
}
declare float @_lfortran_stanh(float)
define double @__module_lfortran_intrinsic_math_zabs(%complex_8* %x) {
.entry:
%r = alloca double, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = alloca %complex_8, align 8
store %complex_8 %0, %complex_8* %1, align 8
%2 = getelementptr %complex_8, %complex_8* %1, i32 0, i32 0
%3 = load double, double* %2, align 8
%4 = call double @llvm.pow.f64(double %3, double 2.000000e+00)
%5 = call double @__module_lfortran_intrinsic_math2_daimag(%complex_8* %x)
%6 = call double @llvm.pow.f64(double %5, double 2.000000e+00)
%7 = fadd double %4, %6
%8 = alloca double, align 8
store double %7, double* %8, align 8
%9 = call double @__module_lfortran_intrinsic_math_dsqrt(double* %8)
store double %9, double* %r, align 8
%10 = load double, double* %r, align 8
ret double %10
}
define %complex_8 @__module_lfortran_intrinsic_math_zacos(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_zacos(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_zacos(%complex_8)
define %complex_8 @__module_lfortran_intrinsic_math_zacosh(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_zacosh(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_zacosh(%complex_8)
define %complex_8 @__module_lfortran_intrinsic_math_zasin(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_zasin(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_zasin(%complex_8)
define %complex_8 @__module_lfortran_intrinsic_math_zasinh(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_zasinh(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_zasinh(%complex_8)
define %complex_8 @__module_lfortran_intrinsic_math_zatan(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_zatan(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_zatan(%complex_8)
define %complex_8 @__module_lfortran_intrinsic_math_zatanh(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_zatanh(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_zatanh(%complex_8)
define %complex_8 @__module_lfortran_intrinsic_math_zcos(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_zcos(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_zcos(%complex_8)
define %complex_8 @__module_lfortran_intrinsic_math_zcosh(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_zcosh(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_zcosh(%complex_8)
define %complex_8 @__module_lfortran_intrinsic_math_zsin(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_zsin(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_zsin(%complex_8)
define %complex_8 @__module_lfortran_intrinsic_math_zsinh(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_zsinh(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_zsinh(%complex_8)
define %complex_8 @__module_lfortran_intrinsic_math_ztan(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_ztan(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_ztan(%complex_8)
define %complex_8 @__module_lfortran_intrinsic_math_ztanh(%complex_8* %x) {
.entry:
%r = alloca %complex_8, align 8
%0 = load %complex_8, %complex_8* %x, align 8
%1 = call %complex_8 @_lfortran_ztanh(%complex_8 %0)
store %complex_8 %1, %complex_8* %r, align 8
%2 = load %complex_8, %complex_8* %r, align 8
ret %complex_8 %2
}
declare %complex_8 @_lfortran_ztanh(%complex_8)
define i32 @main() {
.entry:
%x = alloca float, align 4
%0 = alloca float, align 4
store float 1.500000e+00, float* %0, align 4
%1 = call float @__module_lfortran_intrinsic_math_stan(float* %0)
store float %1, float* %x, align 4
%2 = load float, float* %x, align 4
%3 = fpext float %2 to double
call void (i8*, ...) @_lfortran_printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @6, i32 0, i32 0), double %3)
ret i32 0
}
attributes #0 = { nounwind readnone speculatable willreturn }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment