{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "616a9554-c7fc-457c-af91-86b49f744f78", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3.0, 5.0)" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using BenchmarkTools\n", "\n", "a = (1.0, 2.0)\n", "b = (3.0, 5.0)" ] }, { "cell_type": "code", "execution_count": 2, "id": "557537e3-826c-482d-8639-ce6fc7eef479", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 1.400 ns (0 allocations: 0 bytes)\n" ] }, { "data": { "text/plain": [ "(0.0, 0.0)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F(a, b) = b .- a\n", "\n", "@btime F($(Ref(a))[], $(Ref(a))[])" ] }, { "cell_type": "code", "execution_count": 3, "id": "a1844130-18c3-4165-9726-6397453e79fe", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 31.080 ns (1 allocation: 96 bytes)\n" ] }, { "data": { "text/plain": [ "(2.0, 3.0)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(a::NTuple{N}, b::NTuple{N}) where N =\n", " NTuple{N}(map(((i, j),) -> j - i, zip(a, b)))\n", "\n", "@btime f($a, $b)" ] }, { "cell_type": "code", "execution_count": 4, "id": "b60f5083-6e63-47a9-8485-287db445ac0a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 1.600 ns (0 allocations: 0 bytes)\n" ] }, { "data": { "text/plain": [ "(2.0, 3.0)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "g(a::NTuple{N}, b::NTuple{N}) where N =\n", " NTuple{N}(j - i for (i, j) in zip(a, b))\n", "\n", "@btime g($(Ref(a))[], $(Ref(b))[])" ] }, { "cell_type": "code", "execution_count": 5, "id": "7933ae46-90ce-4e5e-b3da-ca415b65acdc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 1.600 ns (0 allocations: 0 bytes)\n" ] }, { "data": { "text/plain": [ "(2.0, 3.0)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h(a::NTuple{N}, b::NTuple{N}) where N =\n", " ntuple(i -> b[i] - a[i], N)\n", "\n", "@btime h($(Ref(a))[], $(Ref(b))[])" ] }, { "cell_type": "code", "execution_count": 6, "id": "cc711553-b1f8-40e9-a31d-7cc02ad130bd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Variables\n", " #self#\u001b[36m::Core.Const(F)\u001b[39m\n", " a\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", " b\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", "\n", "Body\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", "\u001b[90m1 ─\u001b[39m %1 = Base.broadcasted(Main.:-, b, a)\u001b[36m::Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple}, Nothing, typeof(-), Tuple{Tuple{Float64, Float64}, Tuple{Float64, Float64}}}\u001b[39m\n", "\u001b[90m│ \u001b[39m %2 = Base.materialize(%1)\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", "\u001b[90m└──\u001b[39m return %2\n" ] } ], "source": [ "@code_warntype F(a, b)" ] }, { "cell_type": "code", "execution_count": 7, "id": "7dfc7050-b6ef-4d02-b465-fba7e52baaae", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Variables\n", " #self#\u001b[36m::Core.Const(g)\u001b[39m\n", " a\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", " b\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", " #3\u001b[36m::var\"#3#4\"\u001b[39m\n", "\n", "Body\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", "\u001b[90m1 ─\u001b[39m %1 = Core.apply_type(Main.NTuple, $(Expr(:static_parameter, 1)))\u001b[36m::Core.Const(Tuple{T, T} where T)\u001b[39m\n", "\u001b[90m│ \u001b[39m (#3 = %new(Main.:(var\"#3#4\")))\n", "\u001b[90m│ \u001b[39m %3 = #3\u001b[36m::Core.Const(var\"#3#4\"())\u001b[39m\n", "\u001b[90m│ \u001b[39m %4 = Main.zip(a, b)\u001b[36m::Base.Iterators.Zip{Tuple{Tuple{Float64, Float64}, Tuple{Float64, Float64}}}\u001b[39m\n", "\u001b[90m│ \u001b[39m %5 = Base.Generator(%3, %4)\u001b[36m::Base.Generator{Base.Iterators.Zip{Tuple{Tuple{Float64, Float64}, Tuple{Float64, Float64}}}, var\"#3#4\"}\u001b[39m\n", "\u001b[90m│ \u001b[39m %6 = (%1)(%5)\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", "\u001b[90m└──\u001b[39m return %6\n" ] } ], "source": [ "@code_warntype g(a, b)" ] }, { "cell_type": "code", "execution_count": 8, "id": "75aacbe7-c4d6-4d01-b601-20fd887f72d2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Variables\n", " #self#\u001b[36m::Core.Const(h)\u001b[39m\n", " a\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", " b\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", " #5\u001b[36m::var\"#5#6\"{Tuple{Float64, Float64}, Tuple{Float64, Float64}}\u001b[39m\n", "\n", "Body\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", "\u001b[90m1 ─\u001b[39m %1 = Main.:(var\"#5#6\")\u001b[36m::Core.Const(var\"#5#6\")\u001b[39m\n", "\u001b[90m│ \u001b[39m %2 = Core.typeof(a)\u001b[36m::Core.Const(Tuple{Float64, Float64})\u001b[39m\n", "\u001b[90m│ \u001b[39m %3 = Core.typeof(b)\u001b[36m::Core.Const(Tuple{Float64, Float64})\u001b[39m\n", "\u001b[90m│ \u001b[39m %4 = Core.apply_type(%1, %2, %3)\u001b[36m::Core.Const(var\"#5#6\"{Tuple{Float64, Float64}, Tuple{Float64, Float64}})\u001b[39m\n", "\u001b[90m│ \u001b[39m (#5 = %new(%4, a, b))\n", "\u001b[90m│ \u001b[39m %6 = #5\u001b[36m::var\"#5#6\"{Tuple{Float64, Float64}, Tuple{Float64, Float64}}\u001b[39m\n", "\u001b[90m│ \u001b[39m %7 = Main.ntuple(%6, $(Expr(:static_parameter, 1)))\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", "\u001b[90m└──\u001b[39m return %7\n" ] } ], "source": [ "@code_warntype h(a, b)" ] }, { "cell_type": "code", "execution_count": 9, "id": "7e593467-9473-4fb7-b409-64f65ba31408", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Variables\n", " #self#\u001b[36m::Core.Const(f)\u001b[39m\n", " a\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", " b\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", " #1\u001b[36m::var\"#1#2\"\u001b[39m\n", "\n", "Body\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", "\u001b[90m1 ─\u001b[39m %1 = Core.apply_type(Main.NTuple, $(Expr(:static_parameter, 1)))\u001b[36m::Core.Const(Tuple{T, T} where T)\u001b[39m\n", "\u001b[90m│ \u001b[39m (#1 = %new(Main.:(var\"#1#2\")))\n", "\u001b[90m│ \u001b[39m %3 = #1\u001b[36m::Core.Const(var\"#1#2\"())\u001b[39m\n", "\u001b[90m│ \u001b[39m %4 = Main.zip(a, b)\u001b[36m::Base.Iterators.Zip{Tuple{Tuple{Float64, Float64}, Tuple{Float64, Float64}}}\u001b[39m\n", "\u001b[90m│ \u001b[39m %5 = Main.map(%3, %4)\u001b[36m::Vector{Float64}\u001b[39m\n", "\u001b[90m│ \u001b[39m %6 = (%1)(%5)\u001b[36m::Tuple{Float64, Float64}\u001b[39m\n", "\u001b[90m└──\u001b[39m return %6\n" ] } ], "source": [ "@code_warntype f(a, b)" ] }, { "cell_type": "code", "execution_count": 10, "id": "94df8650-c46d-403e-8e8c-f7b5f701497c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[90m; Function Attrs: uwtable\u001b[39m\n", "\u001b[95mdefine\u001b[39m \u001b[36mvoid\u001b[39m \u001b[93m@julia_F_1718\u001b[39m\u001b[33m(\u001b[39m\u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnoalias\u001b[39m \u001b[95mnocapture\u001b[39m \u001b[95msret\u001b[39m \u001b[0m%0\u001b[0m, \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnocapture\u001b[39m \u001b[95mnonnull\u001b[39m \u001b[95mreadonly\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%1\u001b[0m, \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnocapture\u001b[39m \u001b[95mnonnull\u001b[39m \u001b[95mreadonly\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%2\u001b[33m)\u001b[39m \u001b[0m#0 \u001b[33m{\u001b[39m\n", "\u001b[91mtop:\u001b[39m\n", " \u001b[0m%3 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%2 \u001b[95mto\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m*\n", " \u001b[0m%4 \u001b[0m= \u001b[96m\u001b[1mload\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m* \u001b[0m%3\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%5 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%1 \u001b[95mto\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m*\n", " \u001b[0m%6 \u001b[0m= \u001b[96m\u001b[1mload\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m* \u001b[0m%5\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%7 \u001b[0m= \u001b[96m\u001b[1mfsub\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m \u001b[0m%4\u001b[0m, \u001b[0m%6\n", " \u001b[0m%8 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%0 \u001b[95mto\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m*\n", " \u001b[96m\u001b[1mstore\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m \u001b[0m%7\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m* \u001b[0m%8\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[96m\u001b[1mret\u001b[22m\u001b[39m \u001b[36mvoid\u001b[39m\n", "\u001b[33m}\u001b[39m\n" ] } ], "source": [ "@code_llvm debuginfo=:none F(a, b)" ] }, { "cell_type": "code", "execution_count": 11, "id": "4314da6c-b537-47f3-b000-94d655b3693a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[90m; Function Attrs: uwtable\u001b[39m\n", "\u001b[95mdefine\u001b[39m \u001b[36mvoid\u001b[39m \u001b[93m@julia_g_1743\u001b[39m\u001b[33m(\u001b[39m\u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnoalias\u001b[39m \u001b[95mnocapture\u001b[39m \u001b[95msret\u001b[39m \u001b[0m%0\u001b[0m, \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnocapture\u001b[39m \u001b[95mnonnull\u001b[39m \u001b[95mreadonly\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%1\u001b[0m, \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnocapture\u001b[39m \u001b[95mnonnull\u001b[39m \u001b[95mreadonly\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%2\u001b[33m)\u001b[39m \u001b[0m#0 \u001b[33m{\u001b[39m\n", "\u001b[91mtop:\u001b[39m\n", " \u001b[0m%3 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%2 \u001b[95mto\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m*\n", " \u001b[0m%4 \u001b[0m= \u001b[96m\u001b[1mload\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m* \u001b[0m%3\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%5 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%1 \u001b[95mto\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m*\n", " \u001b[0m%6 \u001b[0m= \u001b[96m\u001b[1mload\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m* \u001b[0m%5\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%7 \u001b[0m= \u001b[96m\u001b[1mfsub\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m \u001b[0m%4\u001b[0m, \u001b[0m%6\n", " \u001b[0m%8 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%0 \u001b[95mto\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m*\n", " \u001b[96m\u001b[1mstore\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m \u001b[0m%7\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m* \u001b[0m%8\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[96m\u001b[1mret\u001b[22m\u001b[39m \u001b[36mvoid\u001b[39m\n", "\u001b[33m}\u001b[39m\n" ] } ], "source": [ "@code_llvm debuginfo=:none g(a, b)" ] }, { "cell_type": "code", "execution_count": 12, "id": "620bd000-0a03-4e3b-8def-b76e802de859", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[90m; Function Attrs: uwtable\u001b[39m\n", "\u001b[95mdefine\u001b[39m \u001b[36mvoid\u001b[39m \u001b[93m@julia_h_1745\u001b[39m\u001b[33m(\u001b[39m\u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnoalias\u001b[39m \u001b[95mnocapture\u001b[39m \u001b[95msret\u001b[39m \u001b[0m%0\u001b[0m, \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnocapture\u001b[39m \u001b[95mnonnull\u001b[39m \u001b[95mreadonly\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%1\u001b[0m, \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnocapture\u001b[39m \u001b[95mnonnull\u001b[39m \u001b[95mreadonly\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%2\u001b[33m)\u001b[39m \u001b[0m#0 \u001b[33m{\u001b[39m\n", "\u001b[91mtop:\u001b[39m\n", " \u001b[0m%3 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%2 \u001b[95mto\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m*\n", " \u001b[0m%4 \u001b[0m= \u001b[96m\u001b[1mload\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m* \u001b[0m%3\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%5 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%1 \u001b[95mto\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m*\n", " \u001b[0m%6 \u001b[0m= \u001b[96m\u001b[1mload\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m* \u001b[0m%5\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%7 \u001b[0m= \u001b[96m\u001b[1mfsub\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m \u001b[0m%4\u001b[0m, \u001b[0m%6\n", " \u001b[0m%8 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%0 \u001b[95mto\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m*\n", " \u001b[96m\u001b[1mstore\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m \u001b[0m%7\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m>\u001b[39m\u001b[0m* \u001b[0m%8\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[96m\u001b[1mret\u001b[22m\u001b[39m \u001b[36mvoid\u001b[39m\n", "\u001b[33m}\u001b[39m\n" ] } ], "source": [ "@code_llvm debuginfo=:none h(a, b)" ] }, { "cell_type": "code", "execution_count": 13, "id": "b567e183-97ac-4d45-8ef3-4381dafa1f96", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[90m; Function Attrs: uwtable\u001b[39m\n", "\u001b[95mdefine\u001b[39m \u001b[36mvoid\u001b[39m \u001b[93m@julia_f_1747\u001b[39m\u001b[33m(\u001b[39m\u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnoalias\u001b[39m \u001b[95mnocapture\u001b[39m \u001b[95msret\u001b[39m \u001b[0m%0\u001b[0m, \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnocapture\u001b[39m \u001b[95mnonnull\u001b[39m \u001b[95mreadonly\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%1\u001b[0m, \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[95mnocapture\u001b[39m \u001b[95mnonnull\u001b[39m \u001b[95mreadonly\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%2\u001b[33m)\u001b[39m \u001b[0m#0 \u001b[33m{\u001b[39m\n", "\u001b[91mtop:\u001b[39m\n", " \u001b[0m%3 \u001b[0m= \u001b[96m\u001b[1malloca\u001b[22m\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m*\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%4 \u001b[0m= \u001b[96m\u001b[1malloca\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[33m]\u001b[39m\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%5 \u001b[0m= \u001b[96m\u001b[1malloca\u001b[22m\u001b[39m \u001b[33m{\u001b[39m \u001b[33m[\u001b[39m\u001b[33m1\u001b[39m \u001b[0mx \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[33m]\u001b[39m\u001b[33m]\u001b[39m \u001b[33m}\u001b[39m\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%6 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%4 \u001b[95mto\u001b[39m \u001b[36mi8\u001b[39m\u001b[0m*\n", " \u001b[0m%7 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%1 \u001b[95mto\u001b[39m \u001b[36mi8\u001b[39m\u001b[0m*\n", " \u001b[96m\u001b[1mcall\u001b[22m\u001b[39m \u001b[36mvoid\u001b[39m \u001b[93m@llvm.memcpy.p0i8.p0i8.i64\u001b[39m\u001b[33m(\u001b[39m\u001b[36mi8\u001b[39m\u001b[0m* \u001b[95mnonnull\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%6\u001b[0m, \u001b[36mi8\u001b[39m\u001b[0m* \u001b[95mnonnull\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%7\u001b[0m, \u001b[36mi64\u001b[39m \u001b[33m16\u001b[39m\u001b[0m, \u001b[36mi1\u001b[39m \u001b[95mfalse\u001b[39m\u001b[33m)\u001b[39m\n", " \u001b[0m%8 \u001b[0m= \u001b[96m\u001b[1mgetelementptr\u001b[22m\u001b[39m \u001b[95minbounds\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[33m]\u001b[39m\u001b[0m, \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%4\u001b[0m, \u001b[36mi64\u001b[39m \u001b[33m0\u001b[39m\u001b[0m, \u001b[36mi64\u001b[39m \u001b[33m1\u001b[39m\n", " \u001b[0m%9 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%8 \u001b[95mto\u001b[39m \u001b[36mi8\u001b[39m\u001b[0m*\n", " \u001b[0m%10 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%2 \u001b[95mto\u001b[39m \u001b[36mi8\u001b[39m\u001b[0m*\n", " \u001b[96m\u001b[1mcall\u001b[22m\u001b[39m \u001b[36mvoid\u001b[39m \u001b[93m@llvm.memcpy.p0i8.p0i8.i64\u001b[39m\u001b[33m(\u001b[39m\u001b[36mi8\u001b[39m\u001b[0m* \u001b[95mnonnull\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%9\u001b[0m, \u001b[36mi8\u001b[39m\u001b[0m* \u001b[95mnonnull\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m16\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%10\u001b[0m, \u001b[36mi64\u001b[39m \u001b[33m16\u001b[39m\u001b[0m, \u001b[36mi1\u001b[39m \u001b[95mfalse\u001b[39m\u001b[33m)\u001b[39m\n", " \u001b[0m%11 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m{\u001b[39m \u001b[33m[\u001b[39m\u001b[33m1\u001b[39m \u001b[0mx \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[33m]\u001b[39m\u001b[33m]\u001b[39m \u001b[33m}\u001b[39m\u001b[0m* \u001b[0m%5 \u001b[95mto\u001b[39m \u001b[36mi8\u001b[39m\u001b[0m*\n", " \u001b[96m\u001b[1mcall\u001b[22m\u001b[39m \u001b[36mvoid\u001b[39m \u001b[93m@llvm.memcpy.p0i8.p0i8.i64\u001b[39m\u001b[33m(\u001b[39m\u001b[36mi8\u001b[39m\u001b[0m* \u001b[95mnonnull\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m32\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%11\u001b[0m, \u001b[36mi8\u001b[39m\u001b[0m* \u001b[95mnonnull\u001b[39m \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m \u001b[95mdereferenceable\u001b[39m\u001b[33m(\u001b[39m\u001b[33m32\u001b[39m\u001b[33m)\u001b[39m \u001b[0m%6\u001b[0m, \u001b[36mi64\u001b[39m \u001b[33m32\u001b[39m\u001b[0m, \u001b[36mi1\u001b[39m \u001b[95mfalse\u001b[39m\u001b[33m)\u001b[39m\n", " \u001b[0m%12 \u001b[0m= \u001b[96m\u001b[1mcall\u001b[22m\u001b[39m \u001b[95mnonnull\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m* \u001b[93m@j_collect_1749\u001b[39m\u001b[33m(\u001b[39m\u001b[33m{\u001b[39m \u001b[33m[\u001b[39m\u001b[33m1\u001b[39m \u001b[0mx \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[33m]\u001b[39m\u001b[33m]\u001b[39m \u001b[33m}\u001b[39m\u001b[0m* \u001b[95mnocapture\u001b[39m \u001b[95mreadonly\u001b[39m \u001b[0m%5\u001b[33m)\u001b[39m \u001b[0m#0\n", " \u001b[0m%13 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m* \u001b[0m%12 \u001b[95mto\u001b[39m \u001b[33m{\u001b[39m \u001b[36mi8\u001b[39m\u001b[0m*\u001b[0m, \u001b[36mi64\u001b[39m\u001b[0m, \u001b[36mi16\u001b[39m\u001b[0m, \u001b[36mi16\u001b[39m\u001b[0m, \u001b[36mi32\u001b[39m \u001b[33m}\u001b[39m\u001b[0m*\n", " \u001b[0m%14 \u001b[0m= \u001b[96m\u001b[1mgetelementptr\u001b[22m\u001b[39m \u001b[95minbounds\u001b[39m \u001b[33m{\u001b[39m \u001b[36mi8\u001b[39m\u001b[0m*\u001b[0m, \u001b[36mi64\u001b[39m\u001b[0m, \u001b[36mi16\u001b[39m\u001b[0m, \u001b[36mi16\u001b[39m\u001b[0m, \u001b[36mi32\u001b[39m \u001b[33m}\u001b[39m\u001b[0m, \u001b[33m{\u001b[39m \u001b[36mi8\u001b[39m\u001b[0m*\u001b[0m, \u001b[36mi64\u001b[39m\u001b[0m, \u001b[36mi16\u001b[39m\u001b[0m, \u001b[36mi16\u001b[39m\u001b[0m, \u001b[36mi32\u001b[39m \u001b[33m}\u001b[39m\u001b[0m* \u001b[0m%13\u001b[0m, \u001b[36mi64\u001b[39m \u001b[33m0\u001b[39m\u001b[0m, \u001b[36mi32\u001b[39m \u001b[33m1\u001b[39m\n", " \u001b[0m%15 \u001b[0m= \u001b[96m\u001b[1mload\u001b[22m\u001b[39m \u001b[36mi64\u001b[39m\u001b[0m, \u001b[36mi64\u001b[39m\u001b[0m* \u001b[0m%14\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[96m\u001b[1mswitch\u001b[22m\u001b[39m \u001b[36mi64\u001b[39m \u001b[0m%15\u001b[0m, \u001b[36mlabel\u001b[39m \u001b[91m%L43\u001b[39m \u001b[33m[\u001b[39m\n", " \u001b[96m\u001b[1mi64\u001b[22m\u001b[39m \u001b[33m0\u001b[39m\u001b[0m, \u001b[36mlabel\u001b[39m \u001b[91m%L23\u001b[39m\n", " \u001b[96m\u001b[1mi64\u001b[22m\u001b[39m \u001b[33m1\u001b[39m\u001b[0m, \u001b[36mlabel\u001b[39m \u001b[91m%L40\u001b[39m\n", " \u001b[33m]\u001b[39m\n", "\n", "\u001b[91mL23:\u001b[39m \u001b[90m; preds = %top\u001b[39m\n", " \u001b[96m\u001b[1mstore\u001b[22m\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m* \u001b[95minttoptr\u001b[39m \u001b[33m(\u001b[39m\u001b[36mi64\u001b[39m \u001b[33m449532336\u001b[39m \u001b[95mto\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m*\u001b[33m)\u001b[39m\u001b[0m, \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m** \u001b[0m%3\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%16 \u001b[0m= \u001b[96m\u001b[1mcall\u001b[22m\u001b[39m \u001b[95mnonnull\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m* \u001b[93m@jl_invoke\u001b[39m\u001b[33m(\u001b[39m\u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m* \u001b[95minttoptr\u001b[39m \u001b[33m(\u001b[39m\u001b[36mi64\u001b[39m \u001b[33m338795648\u001b[39m \u001b[95mto\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m*\u001b[33m)\u001b[39m\u001b[0m, \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m** \u001b[95mnonnull\u001b[39m \u001b[0m%3\u001b[0m, \u001b[36mi32\u001b[39m \u001b[33m1\u001b[39m\u001b[0m, \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m* \u001b[95minttoptr\u001b[39m \u001b[33m(\u001b[39m\u001b[36mi64\u001b[39m \u001b[33m2150936944\u001b[39m \u001b[95mto\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m*\u001b[33m)\u001b[39m\u001b[33m)\u001b[39m\n", " \u001b[96m\u001b[1mcall\u001b[22m\u001b[39m \u001b[36mvoid\u001b[39m \u001b[93m@llvm.trap\u001b[39m\u001b[33m(\u001b[39m\u001b[33m)\u001b[39m\n", " \u001b[96m\u001b[1munreachable\u001b[22m\u001b[39m\n", "\n", "\u001b[91mL40:\u001b[39m \u001b[90m; preds = %top\u001b[39m\n", " \u001b[96m\u001b[1mstore\u001b[22m\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m* \u001b[95minttoptr\u001b[39m \u001b[33m(\u001b[39m\u001b[36mi64\u001b[39m \u001b[33m477628656\u001b[39m \u001b[95mto\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m*\u001b[33m)\u001b[39m\u001b[0m, \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m** \u001b[0m%3\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%17 \u001b[0m= \u001b[96m\u001b[1mcall\u001b[22m\u001b[39m \u001b[95mnonnull\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m* \u001b[93m@jl_invoke\u001b[39m\u001b[33m(\u001b[39m\u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m* \u001b[95minttoptr\u001b[39m \u001b[33m(\u001b[39m\u001b[36mi64\u001b[39m \u001b[33m338795648\u001b[39m \u001b[95mto\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m*\u001b[33m)\u001b[39m\u001b[0m, \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m** \u001b[95mnonnull\u001b[39m \u001b[0m%3\u001b[0m, \u001b[36mi32\u001b[39m \u001b[33m1\u001b[39m\u001b[0m, \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m* \u001b[95minttoptr\u001b[39m \u001b[33m(\u001b[39m\u001b[36mi64\u001b[39m \u001b[33m2150936944\u001b[39m \u001b[95mto\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m*\u001b[33m)\u001b[39m\u001b[33m)\u001b[39m\n", " \u001b[96m\u001b[1mcall\u001b[22m\u001b[39m \u001b[36mvoid\u001b[39m \u001b[93m@llvm.trap\u001b[39m\u001b[33m(\u001b[39m\u001b[33m)\u001b[39m\n", " \u001b[96m\u001b[1munreachable\u001b[22m\u001b[39m\n", "\n", "\u001b[91mL43:\u001b[39m \u001b[90m; preds = %top\u001b[39m\n", " \u001b[0m%18 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[0m* \u001b[0m%12 \u001b[95mto\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mi64\u001b[39m\u001b[33m>\u001b[39m\u001b[0m**\n", " \u001b[0m%19 \u001b[0m= \u001b[96m\u001b[1mload\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mi64\u001b[39m\u001b[33m>\u001b[39m\u001b[0m*\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mi64\u001b[39m\u001b[33m>\u001b[39m\u001b[0m** \u001b[0m%18\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%20 \u001b[0m= \u001b[96m\u001b[1mload\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mi64\u001b[39m\u001b[33m>\u001b[39m\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mi64\u001b[39m\u001b[33m>\u001b[39m\u001b[0m* \u001b[0m%19\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[0m%21 \u001b[0m= \u001b[96m\u001b[1mbitcast\u001b[22m\u001b[39m \u001b[33m[\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mdouble\u001b[39m\u001b[33m]\u001b[39m\u001b[0m* \u001b[0m%0 \u001b[95mto\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mi64\u001b[39m\u001b[33m>\u001b[39m\u001b[0m*\n", " \u001b[96m\u001b[1mstore\u001b[22m\u001b[39m \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mi64\u001b[39m\u001b[33m>\u001b[39m \u001b[0m%20\u001b[0m, \u001b[33m<\u001b[39m\u001b[33m2\u001b[39m \u001b[0mx \u001b[36mi64\u001b[39m\u001b[33m>\u001b[39m\u001b[0m* \u001b[0m%21\u001b[0m, \u001b[95malign\u001b[39m \u001b[33m8\u001b[39m\n", " \u001b[96m\u001b[1mret\u001b[22m\u001b[39m \u001b[36mvoid\u001b[39m\n", "\u001b[33m}\u001b[39m\n" ] } ], "source": [ "@code_llvm debuginfo=:none f(a, b)" ] }, { "cell_type": "code", "execution_count": 15, "id": "4217e80e-02db-4a39-90ea-12e488afdce5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\t\u001b[0m.text\n", "\t\u001b[96m\u001b[1mpushq\u001b[22m\u001b[39m\t\u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[0m%rsp\u001b[0m, \u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[0m%rcx\u001b[0m, \u001b[0m%rax\n", "\t\u001b[96m\u001b[1mvmovupd\u001b[22m\u001b[39m\t\u001b[33m(\u001b[39m\u001b[0m%r8\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%xmm0\n", "\t\u001b[96m\u001b[1mvsubpd\u001b[22m\u001b[39m\t\u001b[33m(\u001b[39m\u001b[0m%rdx\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%xmm0\u001b[0m, \u001b[0m%xmm0\n", "\t\u001b[96m\u001b[1mvmovupd\u001b[22m\u001b[39m\t\u001b[0m%xmm0\u001b[0m, \u001b[33m(\u001b[39m\u001b[0m%rax\u001b[33m)\u001b[39m\n", "\t\u001b[96m\u001b[1mpopq\u001b[22m\u001b[39m\t\u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mretq\u001b[22m\u001b[39m\n", "\t\u001b[96m\u001b[1mnopw\u001b[22m\u001b[39m\t\u001b[0m%cs\u001b[0m:\u001b[33m(\u001b[39m\u001b[0m%rax\u001b[0m,\u001b[0m%rax\u001b[33m)\u001b[39m\n" ] } ], "source": [ "@code_native debuginfo=:none F(a, b)" ] }, { "cell_type": "code", "execution_count": 16, "id": "793a5a9c-91fa-4bb9-be7e-ea8df4613bd1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\t\u001b[0m.text\n", "\t\u001b[96m\u001b[1mpushq\u001b[22m\u001b[39m\t\u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[0m%rsp\u001b[0m, \u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[0m%rcx\u001b[0m, \u001b[0m%rax\n", "\t\u001b[96m\u001b[1mvmovupd\u001b[22m\u001b[39m\t\u001b[33m(\u001b[39m\u001b[0m%r8\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%xmm0\n", "\t\u001b[96m\u001b[1mvsubpd\u001b[22m\u001b[39m\t\u001b[33m(\u001b[39m\u001b[0m%rdx\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%xmm0\u001b[0m, \u001b[0m%xmm0\n", "\t\u001b[96m\u001b[1mvmovupd\u001b[22m\u001b[39m\t\u001b[0m%xmm0\u001b[0m, \u001b[33m(\u001b[39m\u001b[0m%rax\u001b[33m)\u001b[39m\n", "\t\u001b[96m\u001b[1mpopq\u001b[22m\u001b[39m\t\u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mretq\u001b[22m\u001b[39m\n", "\t\u001b[96m\u001b[1mnopw\u001b[22m\u001b[39m\t\u001b[0m%cs\u001b[0m:\u001b[33m(\u001b[39m\u001b[0m%rax\u001b[0m,\u001b[0m%rax\u001b[33m)\u001b[39m\n" ] } ], "source": [ "@code_native debuginfo=:none g(a, b)" ] }, { "cell_type": "code", "execution_count": 17, "id": "dc42a509-e120-466b-ad9d-6d8dc5bf738c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\t\u001b[0m.text\n", "\t\u001b[96m\u001b[1mpushq\u001b[22m\u001b[39m\t\u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[0m%rsp\u001b[0m, \u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[0m%rcx\u001b[0m, \u001b[0m%rax\n", "\t\u001b[96m\u001b[1mvmovupd\u001b[22m\u001b[39m\t\u001b[33m(\u001b[39m\u001b[0m%r8\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%xmm0\n", "\t\u001b[96m\u001b[1mvsubpd\u001b[22m\u001b[39m\t\u001b[33m(\u001b[39m\u001b[0m%rdx\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%xmm0\u001b[0m, \u001b[0m%xmm0\n", "\t\u001b[96m\u001b[1mvmovupd\u001b[22m\u001b[39m\t\u001b[0m%xmm0\u001b[0m, \u001b[33m(\u001b[39m\u001b[0m%rax\u001b[33m)\u001b[39m\n", "\t\u001b[96m\u001b[1mpopq\u001b[22m\u001b[39m\t\u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mretq\u001b[22m\u001b[39m\n", "\t\u001b[96m\u001b[1mnopw\u001b[22m\u001b[39m\t\u001b[0m%cs\u001b[0m:\u001b[33m(\u001b[39m\u001b[0m%rax\u001b[0m,\u001b[0m%rax\u001b[33m)\u001b[39m\n" ] } ], "source": [ "@code_native debuginfo=:none h(a, b)" ] }, { "cell_type": "code", "execution_count": 18, "id": "6e642608-9fab-4f69-beb3-9e1011e90f1a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\t\u001b[0m.text\n", "\t\u001b[96m\u001b[1mpushq\u001b[22m\u001b[39m\t\u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[0m%rsp\u001b[0m, \u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mpushq\u001b[22m\u001b[39m\t\u001b[0m%rsi\n", "\t\u001b[96m\u001b[1msubq\u001b[22m\u001b[39m\t\u001b[33m$104\u001b[39m\u001b[0m, \u001b[0m%rsp\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[0m%rcx\u001b[0m, \u001b[0m%rsi\n", "\t\u001b[96m\u001b[1mvmovups\u001b[22m\u001b[39m\t\u001b[33m(\u001b[39m\u001b[0m%rdx\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%xmm0\n", "\t\u001b[96m\u001b[1mvmovaps\u001b[22m\u001b[39m\t\u001b[0m%xmm0\u001b[0m, \u001b[33m-48\u001b[39m\u001b[33m(\u001b[39m\u001b[0m%rbp\u001b[33m)\u001b[39m\n", "\t\u001b[96m\u001b[1mvmovups\u001b[22m\u001b[39m\t\u001b[33m(\u001b[39m\u001b[0m%r8\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%xmm0\n", "\t\u001b[96m\u001b[1mvmovaps\u001b[22m\u001b[39m\t\u001b[0m%xmm0\u001b[0m, \u001b[33m-32\u001b[39m\u001b[33m(\u001b[39m\u001b[0m%rbp\u001b[33m)\u001b[39m\n", "\t\u001b[96m\u001b[1mvmovups\u001b[22m\u001b[39m\t\u001b[33m-48\u001b[39m\u001b[33m(\u001b[39m\u001b[0m%rbp\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%ymm0\n", "\t\u001b[96m\u001b[1mvmovups\u001b[22m\u001b[39m\t\u001b[0m%ymm0\u001b[0m, \u001b[33m-80\u001b[39m\u001b[33m(\u001b[39m\u001b[0m%rbp\u001b[33m)\u001b[39m\n", "\t\u001b[96m\u001b[1mmovabsq\u001b[22m\u001b[39m\t\u001b[93m$collect\u001b[39m\u001b[0m, \u001b[0m%rax\n", "\t\u001b[96m\u001b[1mleaq\u001b[22m\u001b[39m\t\u001b[33m-80\u001b[39m\u001b[33m(\u001b[39m\u001b[0m%rbp\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%rcx\n", "\t\u001b[96m\u001b[1mvzeroupper\u001b[22m\u001b[39m\n", "\t\u001b[96m\u001b[1mcallq\u001b[22m\u001b[39m\t\u001b[0m*\u001b[0m%rax\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[33m8\u001b[39m\u001b[33m(\u001b[39m\u001b[0m%rax\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%rcx\n", "\t\u001b[96m\u001b[1mcmpq\u001b[22m\u001b[39m\t\u001b[33m$1\u001b[39m\u001b[0m, \u001b[0m%rcx\n", "\t\u001b[96m\u001b[1mje\u001b[22m\u001b[39m\t\u001b[91mL96\u001b[39m\n", "\t\u001b[96m\u001b[1mtestq\u001b[22m\u001b[39m\t\u001b[0m%rcx\u001b[0m, \u001b[0m%rcx\n", "\t\u001b[96m\u001b[1mje\u001b[22m\u001b[39m\t\u001b[91mL139\u001b[39m\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[33m(\u001b[39m\u001b[0m%rax\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%rax\n", "\t\u001b[96m\u001b[1mvmovups\u001b[22m\u001b[39m\t\u001b[33m(\u001b[39m\u001b[0m%rax\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%xmm0\n", "\t\u001b[96m\u001b[1mvmovups\u001b[22m\u001b[39m\t\u001b[0m%xmm0\u001b[0m, \u001b[33m(\u001b[39m\u001b[0m%rsi\u001b[33m)\u001b[39m\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[0m%rsi\u001b[0m, \u001b[0m%rax\n", "\t\u001b[96m\u001b[1maddq\u001b[22m\u001b[39m\t\u001b[33m$104\u001b[39m\u001b[0m, \u001b[0m%rsp\n", "\t\u001b[96m\u001b[1mpopq\u001b[22m\u001b[39m\t\u001b[0m%rsi\n", "\t\u001b[96m\u001b[1mpopq\u001b[22m\u001b[39m\t\u001b[0m%rbp\n", "\t\u001b[96m\u001b[1mretq\u001b[22m\u001b[39m\n", "\u001b[91mL96:\u001b[39m\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[33m$477628656\u001b[39m\u001b[0m, \u001b[33m-16\u001b[39m\u001b[33m(\u001b[39m\u001b[0m%rbp\u001b[33m)\u001b[39m \u001b[90m# imm = 0x1C7808F0\u001b[39m\n", "\t\u001b[96m\u001b[1mmovabsq\u001b[22m\u001b[39m\t\u001b[93m$jl_invoke\u001b[39m\u001b[0m, \u001b[0m%rax\n", "\t\u001b[96m\u001b[1mleaq\u001b[22m\u001b[39m\t\u001b[33m-16\u001b[39m\u001b[33m(\u001b[39m\u001b[0m%rbp\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%rdx\n", "\t\u001b[96m\u001b[1mmovl\u001b[22m\u001b[39m\t\u001b[33m$338795648\u001b[39m\u001b[0m, \u001b[0m%ecx \u001b[90m# imm = 0x14319C80\u001b[39m\n", "\t\u001b[96m\u001b[1mmovl\u001b[22m\u001b[39m\t\u001b[33m$2150936944\u001b[39m\u001b[0m, \u001b[0m%r9d \u001b[90m# imm = 0x8034B170\u001b[39m\n", "\t\u001b[96m\u001b[1mmovl\u001b[22m\u001b[39m\t\u001b[33m$1\u001b[39m\u001b[0m, \u001b[0m%r8d\n", "\t\u001b[96m\u001b[1mcallq\u001b[22m\u001b[39m\t\u001b[0m*\u001b[0m%rax\n", "\t\u001b[96m\u001b[1mud2\u001b[22m\u001b[39m\n", "\u001b[91mL139:\u001b[39m\n", "\t\u001b[96m\u001b[1mmovq\u001b[22m\u001b[39m\t\u001b[33m$449532336\u001b[39m\u001b[0m, \u001b[33m-16\u001b[39m\u001b[33m(\u001b[39m\u001b[0m%rbp\u001b[33m)\u001b[39m \u001b[90m# imm = 0x1ACB51B0\u001b[39m\n", "\t\u001b[96m\u001b[1mmovabsq\u001b[22m\u001b[39m\t\u001b[93m$jl_invoke\u001b[39m\u001b[0m, \u001b[0m%rax\n", "\t\u001b[96m\u001b[1mleaq\u001b[22m\u001b[39m\t\u001b[33m-16\u001b[39m\u001b[33m(\u001b[39m\u001b[0m%rbp\u001b[33m)\u001b[39m\u001b[0m, \u001b[0m%rdx\n", "\t\u001b[96m\u001b[1mmovl\u001b[22m\u001b[39m\t\u001b[33m$338795648\u001b[39m\u001b[0m, \u001b[0m%ecx \u001b[90m# imm = 0x14319C80\u001b[39m\n", "\t\u001b[96m\u001b[1mmovl\u001b[22m\u001b[39m\t\u001b[33m$2150936944\u001b[39m\u001b[0m, \u001b[0m%r9d \u001b[90m# imm = 0x8034B170\u001b[39m\n", "\t\u001b[96m\u001b[1mmovl\u001b[22m\u001b[39m\t\u001b[33m$1\u001b[39m\u001b[0m, \u001b[0m%r8d\n", "\t\u001b[96m\u001b[1mcallq\u001b[22m\u001b[39m\t\u001b[0m*\u001b[0m%rax\n", "\t\u001b[96m\u001b[1mud2\u001b[22m\u001b[39m\n", "\t\u001b[96m\u001b[1mnopw\u001b[22m\u001b[39m\t\u001b[0m%cs\u001b[0m:\u001b[33m(\u001b[39m\u001b[0m%rax\u001b[0m,\u001b[0m%rax\u001b[33m)\u001b[39m\n" ] } ], "source": [ "@code_native debuginfo=:none f(a, b)" ] }, { "cell_type": "code", "execution_count": null, "id": "99bcf2dc-338d-492f-b2ca-52be5183d53c", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.6.2", "language": "julia", "name": "julia-1.6" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.6.2" } }, "nbformat": 4, "nbformat_minor": 5 }