Skip to content

Instantly share code, notes, and snippets.

@borman
Created May 29, 2014 07:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save borman/682bfb6caec2e8bc2974 to your computer and use it in GitHub Desktop.
Save borman/682bfb6caec2e8bc2974 to your computer and use it in GitHub Desktop.
julia> function dot_product(a, b)
result = 0
for i in 1:length(a)
result += a[i] * b[i]
end
return result
end
dot_product (generic function with 1 method)
julia> a = [1, 2, 3]
3-element Array{Int64,1}:
b 1
2
3
julia> b = [5, 6, 6]
3-element Array{Int64,1}:
5
6
6
julia> @code_native dot_product(a, b)
.text
Filename: none
Source line: 3
push RBP
mov RBP, RSP
Source line: 3
push RBX
push RAX
mov R9, QWORD PTR [RDI + 16]
xor EAX, EAX
test R9, R9
cmovle R9, RAX
test R9, R9
je 77
Source line: 4
mov R8, QWORD PTR [RDI + 16]
xor R10D, R10D
xor ECX, ECX
xor EAX, EAX
cmp RCX, R8
jae 64
cmp RCX, QWORD PTR [RSI + 16]
jae 54
lea R11, QWORD PTR [8*R10]
mov RBX, QWORD PTR [RDI + 8]
sub RBX, R11
mov RDX, QWORD PTR [RSI + 8]
sub RDX, R11
mov RDX, QWORD PTR [RDX]
imul RDX, QWORD PTR [RBX]
add RAX, RDX
dec R10
inc RCX
cmp R9, RCX
jne -66
Source line: 6
add RSP, 8
pop RBX
pop RBP
ret
Source line: 4
movabs RAX, 139982669767488
mov RDI, QWORD PTR [RAX]
movabs RAX, 139982655574672
mov ESI, 4
call RAX
julia> a = [1.0, 2, 3]
3-element Array{Float64,1}:
1.0
2.0
3.0
julia> b = [5.0, 6, 6]
3-element Array{Float64,1}:
5.0
6.0
6.0
julia> @code_native dot_product(a, b)
.text
Filename: none
Source line: 2
push RBP
mov RBP, RSP
push R15
push R14
push R13
push R12
push RBX
sub RSP, 56
mov QWORD PTR [RBP - 80], 6
Source line: 2
movabs RCX, 139982670469712
mov RAX, QWORD PTR [RCX]
mov QWORD PTR [RBP - 72], RAX
lea RAX, QWORD PTR [RBP - 80]
mov QWORD PTR [RCX], RAX
xorps XMM0, XMM0
movups XMMWORD PTR [RBP - 64], XMM0
mov QWORD PTR [RBP - 48], 0
mov R13, QWORD PTR [RSI]
mov R12, QWORD PTR [RSI + 8]
mov EAX, 38880992
xor EBX, EBX
Source line: 2
mov QWORD PTR [RBP - 64], 38880992
Source line: 3
mov R14, QWORD PTR [R13 + 16]
test R14, R14
cmovle R14, RBX
test R14, R14
je 147
mov EAX, 38880992
xor R15D, R15D
Source line: 4
mov QWORD PTR [RBP - 56], RAX
cmp R15, QWORD PTR [R13 + 16]
jae 157
cmp R15, QWORD PTR [R12 + 16]
jae 146
lea RCX, QWORD PTR [8*RBX]
mov RAX, QWORD PTR [R12 + 8]
sub RAX, RCX
mov RDX, QWORD PTR [R13 + 8]
sub RDX, RCX
movsd XMM0, QWORD PTR [RDX]
mulsd XMM0, QWORD PTR [RAX]
movsd QWORD PTR [RBP - 88], XMM0
movabs RAX, 139982655646256
call RAX
mov QWORD PTR [RAX], 38814336
movsd XMM0, QWORD PTR [RBP - 88]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 48], RAX
mov EDI, 58770016
lea RSI, QWORD PTR [RBP - 56]
mov EDX, 2
movabs RAX, 139982655279504
call RAX
dec RBX
inc R15
cmp R14, R15
mov QWORD PTR [RBP - 64], RAX
jne -139
Source line: 6
mov RCX, QWORD PTR [RBP - 72]
Source line: 2
movabs RDX, 139982670469712
Source line: 6
mov QWORD PTR [RDX], RCX
add RSP, 56
pop RBX
pop R12
pop R13
pop R14
pop R15
pop RBP
ret
Source line: 4
movabs RAX, 139982669767488
mov RDI, QWORD PTR [RAX]
movabs RAX, 139982655574672
mov ESI, 4
call RAX
julia>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment