And the actual assembler produced:
@code_warntype csi_MonthlyInterpolatedZCBAdj(pa, 125)
Body::Nothing
238 1 ββ %1 = (Base.getfield)(s, :MonthlyInterpolatedZCBAdj)::Array{Float64,1} ββ» getproperty
β (Base.arrayset)(true, %1, 1.0, 1) ββ» setindex!
239 β %3 = (Base.sle_int)(2, N)::Bool ββ»β·β·β·β·β· macro expansion
β (Base.sub_int)(N, 2) βββ» Colon
β %5 = (Base.ifelse)(%3, N, 1)::Int64 βββββ Type
β %6 = %new(UnitRange{Int64}, 2, %5)::UnitRange{Int64} ββββ
β (Base.ifelse)(true, 0, -1) βββ»β·β·β· simd_outer_range
β %8 = (Base.slt_int)(0, 0)::Bool ββββ»β·β· isempty
ββββ goto #3 if not %8 βββ
2 ββ goto #4 βββ
3 ββ goto #4 βββ
4 ββ %12 = Ο (#2 => true, #3 => false)::Bool ββ
β %13 = Ο (#3 => 0)::Int64 ββ
β %14 = (Base.not_int)(%12)::Bool ββ
ββββ goto #34 if not %14 ββ
5 ββ %16 = Ο (#4 => %13, #33 => %79)::Int64 ββ
β %17 = (Base.Checked.checked_ssub_int)(%5, 2)::Tuple{Int64,Bool} βββ»β·β·β· simd_inner_length
β %18 = (Base.getfield)(%17, 1, true)::Int64 ββββ»β· length
β %19 = (Base.getfield)(%17, 2, true)::Bool βββββ» checked_sub
ββββ goto #7 if not %19 βββββ» checked_sub
6 ββ invoke Base.Checked.throw_overflowerr_binaryop(:-::Symbol, %5::Int64, 2::Int64) βββββ
ββββ $(Expr(:unreachable)) βββββ
7 ββ goto #8 βββββ
8 ββ %24 = (Base.Checked.checked_sadd_int)(%18, 1)::Tuple{Int64,Bool} ββββββ» add_with_overflow
β %25 = (Base.getfield)(%24, 1, true)::Int64 βββββββ»β· indexed_iterate
β %26 = (Base.getfield)(%24, 2, true)::Bool βββββββ» getindex
ββββ goto #10 if not %26 βββββ» checked_add
9 ββ invoke Base.Checked.throw_overflowerr_binaryop(:+::Symbol, %18::Int64, 1::Int64) βββββ
ββββ $(Expr(:unreachable)) βββββ
10 β goto #11 βββββ
11 β goto #12 ββββ
12 β goto #13 βββ
13 β %33 = (Base.slt_int)(0, %25)::Bool βββ» <
ββββ goto #29 if not %33 ββ
14 β nothing β
15 β %36 = Ο (#14 => 0, #27 => %70)::Int64 ββ
β %37 = (Base.slt_int)(%36, %25)::Bool βββ» <
ββββ goto #28 if not %37 ββ
16 β %39 = (Base.add_int)(%36, 1)::Int64 βββ»β· simd_index
β %40 = (Base.add_int)(2, %39)::Int64 ββββ» getindex
β %41 = (Base.sub_int)(%40, 1)::Int64 βββββ» -
ββββ goto #25 if not false ββββ» getindex
17 β %43 = (Base.slt_int)(0, %39)::Bool βββββ»β· _in_unit_range
ββββ goto #21 if not %43 βββββ
18 β %45 = (Base.sle_int)(%41, %5)::Bool ββββββ» <=
ββββ goto #20 if not %45 βββββ
19 β %47 = (Base.sle_int)(2, %41)::Bool βββββββ» <=
ββββ goto #22 βββββ
20 β goto #22 βββββ
21 β goto #22 βββββ
22 β %51 = Ο (#19 => %47, #20 => false, #21 => false)::Bool ββββ
ββββ goto #24 if not %51 ββββ
23 β goto #25 ββββ
24 β invoke Base.throw_boundserror(%6::UnitRange{Int64}, %39::Int64) ββββ
ββββ $(Expr(:unreachable)) ββββ
25 β goto #26 ββββ
26 β goto #27 βββ» simd_index
27 β %58 = (Base.getfield)(s, :MonthlyInterpolatedZCBAdj)::Array{Float64,1} βββ»β· macro expansion
β %59 = (Base.sub_int)(%41, 1)::Int64 ββββ» -
β %60 = (Base.arrayref)(false, %58, %59)::Float64 ββββ» getindex
β %61 = (Base.getfield)(s, :MonthlyRateEachYear2)::Array{Float64,1} ββββ» getproperty
β %62 = (Base.getfield)(s, :Yr)::Array{Int64,1} ββββ
β %63 = (Base.arrayref)(false, %62, %41)::Int64 ββββ» getindex
β %64 = (Base.add_int)(%63, 1)::Int64 ββββ» +
β %65 = (Base.arrayref)(false, %61, %64)::Float64 ββββ» getindex
β %66 = (Base.add_float)(%65, 1.0)::Float64 βββββ» +
β %67 = (Base.div_float)(%60, %66)::Float64 ββββ» /
β %68 = (Base.getfield)(s, :MonthlyInterpolatedZCBAdj)::Array{Float64,1} ββββ» getproperty
β (Base.arrayset)(false, %68, %67, %41) ββββ» setindex!
β %70 = (Base.add_int)(%36, 1)::Int64 ββββ» +
β $(Expr(:simdloop, false)) ββ» macro expansion
ββββ goto #15 ββ
28 β nothing β
29 β %74 = (%16 === 0)::Bool βββ»β· iterate
ββββ goto #31 if not %74 βββ
30 β goto #32 βββ
31 β %77 = (Base.add_int)(%16, 1)::Int64 ββββ» +
ββββ goto #32 βββ» iterate
32 β %79 = Ο (#31 => %77)::Int64 ββ
β %80 = Ο (#30 => true, #31 => false)::Bool ββ
β %81 = (Base.not_int)(%80)::Bool ββ
ββββ goto #34 if not %81 ββ
33 β goto #5 ββ
34 β return Main.nothing
@code_native csi_MonthlyInterpolatedZCBAdj(pa, 125)
.section __TEXT,__text,regular,pure_instructions
; Function csi_MonthlyInterpolatedZCBAdj {
; Location: try07.jl:238
pushl %ebp
decl %eax
movl %esp, %ebp
incl %ecx
pushl %esi
pushl %ebx
decl %eax
subl $32, %esp
decl %ecx
movl %esi, %esi
decl %eax
movl %edi, %ebx
vxorpd %xmm0, %xmm0, %xmm0
vmovapd %xmm0, -48(%ebp)
decl %eax
movl $0, -32(%ebp)
decl %eax
movl $69078816, %eax ## imm = 0x41E0F20
addl %eax, (%eax)
addb %al, (%eax)
calll *%eax
; Function getproperty; {
; Location: sysimg.jl:18
decl %eax
movl $2, -48(%ebp)
decl %eax
movl (%eax), %ecx
decl %eax
movl %ecx, -40(%ebp)
decl %eax
leal -48(%ebp), %ecx
decl %eax
movl %ecx, (%eax)
decl %eax
movl 88(%ebx), %edi
;}
; Function setindex!; {
; Location: array.jl:769
decl %eax
cmpl $0, 8(%edi)
je L221
decl %eax
movl (%edi), %ecx
decl %eax
movl $0, %edx
addb %al, (%eax)
lock
aas
decl %eax
movl %edx, (%ecx)
;}
; Location: try07.jl:239
; Function macro expansion; {
; Location: simdloop.jl:65
; Function Colon; {
; Location: range.jl:5
; Function Type; {
; Location: range.jl:255
; Function unitrange_last; {
; Location: range.jl:260
; Function >=; {
; Location: operators.jl:333
; Function <=; {
; Location: int.jl:428
decl %ebp
testl %esi, %esi
movl $1, %esi
;}}
decl %ecx
cmovgl %esi, %esi
;}}}}
; Function macro expansion; {
; Location: checked.jl:198
decl %eax
addl $-2, %esi
;}
; Function macro expansion; {
; Location: simdloop.jl:67
; Function simd_inner_length; {
; Location: simdloop.jl:47
; Function length; {
; Location: checked.jl:136
decl %ecx
movl %esi, %eax
decl %ecx
incl %eax
;}
; Function length; {
; Location: range.jl:521
; Function checked_add; {
; Location: checked.jl:170
jo L260
decl %ebp
testl %eax, %eax
; Location: checked.jl:170
jle L205
;}}}}
; Function macro expansion; {
; Location: checked.jl
decl %eax
movl 88(%ebx), %edx
decl %eax
movl 8(%ebx), %esi
decl %eax
movl 64(%ebx), %edi
decl %eax
movl (%edx), %edx
decl %eax
movl (%esi), %esi
decl %eax
movl (%edi), %edi
;}
; Function macro expansion; {
; Location: simdloop.jl:73
; Function macro expansion; {
; Location: try07.jl:240
; Function getindex; {
; Location: array.jl:731
vmovsd (%edx), %xmm0 ## xmm0 = mem[0],zero
xorl %ebx, %ebx
decl %eax
movl $677370832, %ecx ## imm = 0x285FDBD0
addl %eax, (%eax)
addb %al, (%eax)
vmovsd (%ecx), %xmm1 ## xmm1 = mem[0],zero
nopl (%eax)
L176:
decl %eax
movl 8(%esi,%ebx,8), %ecx
;}}
; Function macro expansion; {
; Location: float.jl:395
vaddsd (%edi,%ecx,8), %xmm1, %xmm2
;}
; Function macro expansion; {
; Location: try07.jl:240
; Function /; {
; Location: float.jl:401
vdivsd %xmm2, %xmm0, %xmm0
;}
; Function setindex!; {
; Location: array.jl:769
vmovsd %xmm0, 8(%edx,%ebx,8)
;}}
; Function macro expansion; {
; Location: array.jl:731
decl %eax
leal 1(%ebx), %ebx
;}}
; Function macro expansion; {
; Location: int.jl:49
decl %esp
cmpl %eax, %ebx
;}}
; Function csi_MonthlyInterpolatedZCBAdj {
; Location: simdloop.jl:71
jb L176
; Location: simdloop.jl:65
L205:
decl %eax
movl -40(%ebp), %ecx
decl %eax
movl %ecx, (%eax)
decl %eax
leal -16(%ebp), %esp
popl %ebx
incl %ecx
popl %esi
popl %ebp
retl
;}
; Function csi_MonthlyInterpolatedZCBAdj {
; Location: try07.jl:238
; Function setindex!; {
; Location: array.jl:769
L221:
decl %eax
movl %esp, %eax
decl %eax
leal -16(%eax), %esi
decl %eax
movl %esi, %esp
decl %eax
movl $1, -16(%eax)
decl %eax
movl %edi, -32(%ebp)
decl %eax
movl $69208848, %eax ## imm = 0x4200B10
addl %eax, (%eax)
addb %al, (%eax)
movl $1, %edx
calll *%eax
;}
; Location: try07.jl:239
; Function macro expansion; {
; Location: simdloop.jl:67
; Function simd_inner_length; {
; Location: simdloop.jl:47
; Function length; {
; Location: range.jl:521
; Function checked_add; {
; Location: checked.jl:170
L260:
decl %eax
movl $209932240, %eax ## imm = 0xC834FD0
addl %eax, (%eax)
addb %al, (%eax)
decl %eax
movl $194437792, %edi ## imm = 0xB96E2A0
addl %eax, (%eax)
addb %al, (%eax)
movl $1, %edx
calll *%eax
ud2
nopw %cs:(%eax,%eax)
;}}}}}