julia> foo(t,y) = value(scaledloss(L2DistLoss(),0.5),t,y)
foo (generic function with 1 method)
julia> @code_llvm foo(-1.,3.)
define %jl_value_t* @julia_foo_70908(double, double) #0 {
top:
%ptls_i8 = call i8* asm "movq %fs:0, $0;\0Aaddq $$-2672, $0", "=r,~{dirflag},~{fpsr},~{flags}"() #2
%ptls = bitcast i8* %ptls_i8 to %jl_value_t***
%2 = alloca [9 x %jl_value_t*], align 8
%.sub = getelementptr inbounds [9 x %jl_value_t*], [9 x %jl_value_t*]* %2, i64 0, i64 0
%3 = getelementptr [9 x %jl_value_t*], [9 x %jl_value_t*]* %2, i64 0, i64 2
%4 = bitcast %jl_value_t** %3 to i8*
call void @llvm.memset.p0i8.i32(i8* %4, i8 0, i32 56, i32 8, i1 false)
%5 = bitcast [9 x %jl_value_t*]* %2 to i64*
store i64 14, i64* %5, align 8
%6 = getelementptr [9 x %jl_value_t*], [9 x %jl_value_t*]* %2, i64 0, i64 1
%7 = bitcast i8* %ptls_i8 to i64*
%8 = load i64, i64* %7, align 8
%9 = bitcast %jl_value_t** %6 to i64*
store i64 %8, i64* %9, align 8
store %jl_value_t** %.sub, %jl_value_t*** %ptls, align 8
%10 = getelementptr [9 x %jl_value_t*], [9 x %jl_value_t*]* %2, i64 0, i64 6
%11 = getelementptr [9 x %jl_value_t*], [9 x %jl_value_t*]* %2, i64 0, i64 5
%12 = getelementptr [9 x %jl_value_t*], [9 x %jl_value_t*]* %2, i64 0, i64 4
%13 = getelementptr [9 x %jl_value_t*], [9 x %jl_value_t*]* %2, i64 0, i64 3
%14 = getelementptr [9 x %jl_value_t*], [9 x %jl_value_t*]* %2, i64 0, i64 8
%15 = getelementptr [9 x %jl_value_t*], [9 x %jl_value_t*]* %2, i64 0, i64 7
store %jl_value_t* inttoptr (i64 140341062011144 to %jl_value_t*), %jl_value_t** %10, align 8
store %jl_value_t* inttoptr (i64 140341062009088 to %jl_value_t*), %jl_value_t** %15, align 8
store %jl_value_t* inttoptr (i64 140341148509776 to %jl_value_t*), %jl_value_t** %14, align 8
%16 = call %jl_value_t* @jl_apply_generic(%jl_value_t** %10, i32 3)
store %jl_value_t* %16, %jl_value_t** %13, align 8
store %jl_value_t* inttoptr (i64 140341065654200 to %jl_value_t*), %jl_value_t** %3, align 8
%17 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16)
%18 = getelementptr inbounds %jl_value_t, %jl_value_t* %17, i64 -1, i32 0
store %jl_value_t* inttoptr (i64 140341062352080 to %jl_value_t*), %jl_value_t** %18, align 8
%19 = bitcast %jl_value_t* %17 to double*
store double %0, double* %19, align 8
store %jl_value_t* %17, %jl_value_t** %12, align 8
%20 = call %jl_value_t* @jl_gc_pool_alloc(i8* %ptls_i8, i32 1432, i32 16)
%21 = getelementptr inbounds %jl_value_t, %jl_value_t* %20, i64 -1, i32 0
store %jl_value_t* inttoptr (i64 140341062352080 to %jl_value_t*), %jl_value_t** %21, align 8
%22 = bitcast %jl_value_t* %20 to double*
store double %1, double* %22, align 8
store %jl_value_t* %20, %jl_value_t** %11, align 8
%23 = call %jl_value_t* @jl_apply_generic(%jl_value_t** %3, i32 4)
%24 = load i64, i64* %9, align 8
store i64 %24, i64* %7, align 8
ret %jl_value_t* %23
}
(isn't that code a thing of beauty. could not handcraft it any better)