Skip to content

Instantly share code, notes, and snippets.

@ToucheSir
Created August 9, 2022 16:40
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 ToucheSir/7f9623364d953db102540466a58dba9e to your computer and use it in GitHub Desktop.
Save ToucheSir/7f9623364d953db102540466a58dba9e to your computer and use it in GitHub Desktop.
JAX mixture log-likelihood IR dump
#loc0 = loc(unknown)
module @jit_mixture_loglikelihood.0 {
func public @main(%arg0: tensor<12xf64> loc(unknown), %arg1: tensor<500x1xf64> loc(unknown)) -> tensor<f64> {
%0 = mhlo.constant dense<0> : tensor<i32> loc(#loc0)
%1 = "mhlo.broadcast_in_dim"(%0) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<i32>) -> tensor<1xi32> loc(#loc1)
%2 = "mhlo.gather"(%arg0, %1) {dimension_numbers = #mhlo.gather<offset_dims = [0], start_index_map = [0]>, indices_are_sorted = true, slice_sizes = dense<4> : tensor<1xi64>} : (tensor<12xf64>, tensor<1xi32>) -> tensor<4xf64> loc(#loc2)
%3 = mhlo.constant dense<4> : tensor<i32> loc(#loc0)
%4 = "mhlo.broadcast_in_dim"(%3) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<i32>) -> tensor<1xi32> loc(#loc3)
%5 = "mhlo.gather"(%arg0, %4) {dimension_numbers = #mhlo.gather<offset_dims = [0], start_index_map = [0]>, indices_are_sorted = true, slice_sizes = dense<4> : tensor<1xi64>} : (tensor<12xf64>, tensor<1xi32>) -> tensor<4xf64> loc(#loc4)
%6 = mhlo.constant dense<8> : tensor<i32> loc(#loc0)
%7 = "mhlo.broadcast_in_dim"(%6) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<i32>) -> tensor<1xi32> loc(#loc3)
%8 = "mhlo.gather"(%arg0, %7) {dimension_numbers = #mhlo.gather<offset_dims = [0], start_index_map = [0]>, indices_are_sorted = true, slice_sizes = dense<4> : tensor<1xi64>} : (tensor<12xf64>, tensor<1xi32>) -> tensor<4xf64> loc(#loc4)
%9 = mhlo.multiply %8, %8 : tensor<4xf64> loc(#loc5)
%10 = call @normal_pdf(%arg1, %5, %9) : (tensor<500x1xf64>, tensor<4xf64>, tensor<4xf64>) -> tensor<500x4xf64> loc(#loc6)
%11 = "mhlo.broadcast_in_dim"(%2) {broadcast_dimensions = dense<1> : tensor<1xi64>} : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc7)
%12 = "mhlo.broadcast_in_dim"(%11) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc5)
%13 = mhlo.multiply %10, %12 : tensor<500x4xf64> loc(#loc5)
%14 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc8)
%15 = mhlo.reduce(%13 init: %14) across dimensions = [1] : (tensor<500x4xf64>, tensor<f64>) -> tensor<500xf64>
reducer(%arg2: tensor<f64> loc(unknown), %arg3: tensor<f64> loc(unknown)) {
%19 = mhlo.add %arg2, %arg3 : tensor<f64> loc(#loc8)
"mhlo.return"(%19) : (tensor<f64>) -> () loc(#loc8)
} loc(#loc8)
%16 = mhlo.log %15 : tensor<500xf64> loc(#loc9)
%17 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc10)
%18 = mhlo.reduce(%16 init: %17) across dimensions = [0] : (tensor<500xf64>, tensor<f64>) -> tensor<f64>
reducer(%arg2: tensor<f64> loc(unknown), %arg3: tensor<f64> loc(unknown)) {
%19 = mhlo.add %arg2, %arg3 : tensor<f64> loc(#loc10)
"mhlo.return"(%19) : (tensor<f64>) -> () loc(#loc10)
} loc(#loc10)
return %18 : tensor<f64> loc(#loc0)
} loc(#loc0)
func private @normal_pdf(%arg0: tensor<500x1xf64> loc(unknown), %arg1: tensor<4xf64> loc(unknown), %arg2: tensor<4xf64> loc(unknown)) -> tensor<500x4xf64> {
%0 = "mhlo.broadcast_in_dim"(%arg1) {broadcast_dimensions = dense<1> : tensor<1xi64>} : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc11)
%1 = "mhlo.broadcast_in_dim"(%arg0) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<500x1xf64>) -> tensor<500x4xf64> loc(#loc12)
%2 = "mhlo.broadcast_in_dim"(%0) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc12)
%3 = mhlo.subtract %1, %2 : tensor<500x4xf64> loc(#loc12)
%4 = mhlo.multiply %3, %3 : tensor<500x4xf64> loc(#loc13)
%5 = mhlo.negate %4 : tensor<500x4xf64> loc(#loc14)
%6 = mhlo.constant dense<2.000000e+00> : tensor<f64> loc(#loc6)
%7 = "mhlo.broadcast_in_dim"(%6) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<4xf64> loc(#loc13)
%8 = mhlo.multiply %arg2, %7 : tensor<4xf64> loc(#loc13)
%9 = "mhlo.broadcast_in_dim"(%8) {broadcast_dimensions = dense<1> : tensor<1xi64>} : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc11)
%10 = "mhlo.broadcast_in_dim"(%9) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc15)
%11 = mhlo.divide %5, %10 : tensor<500x4xf64> loc(#loc15)
%12 = mhlo.exponential %11 : tensor<500x4xf64> loc(#loc16)
%13 = mhlo.constant dense<6.2831853071795862> : tensor<f64> loc(#loc6)
%14 = "mhlo.broadcast_in_dim"(%13) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<4xf64> loc(#loc13)
%15 = mhlo.multiply %arg2, %14 : tensor<4xf64> loc(#loc13)
%16 = mhlo.sqrt %15 : tensor<4xf64> loc(#loc17)
%17 = "mhlo.broadcast_in_dim"(%16) {broadcast_dimensions = dense<1> : tensor<1xi64>} : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc11)
%18 = "mhlo.broadcast_in_dim"(%17) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc15)
%19 = mhlo.divide %12, %18 : tensor<500x4xf64> loc(#loc15)
return %19 : tensor<500x4xf64> loc(#loc6)
} loc(#loc6)
} loc(#loc0)
#loc1 = loc("jit(mixture_loglikelihood)/jit(main)/broadcast_in_dim[shape=(1,) broadcast_dimensions=()]"("jax_code.py":24:1))
#loc2 = loc("jit(mixture_loglikelihood)/jit(main)/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]"("jax_code.py":24:1))
#loc3 = loc("jit(mixture_loglikelihood)/jit(main)/broadcast_in_dim[shape=(1,) broadcast_dimensions=()]"("jax_code.py":25:1))
#loc4 = loc("jit(mixture_loglikelihood)/jit(main)/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]"("jax_code.py":25:1))
#loc5 = loc("jit(mixture_loglikelihood)/jit(main)/mul"("jax_code.py":25:1))
#loc6 = loc("jit(mixture_loglikelihood)/jit(main)/xla_call[device=None backend=None name=normal_pdf donated_invars=(False, False, False) inline=False keep_unused=False]"("jax_code.py":25:1))
#loc7 = loc("jit(mixture_loglikelihood)/jit(main)/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]"("jax_code.py":25:1))
#loc8 = loc("jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(1,)]"("jax_code.py":25:1))
#loc9 = loc("jit(mixture_loglikelihood)/jit(main)/log"("jax_code.py":25:1))
#loc10 = loc("jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(0,)]"("jax_code.py":25:1))
#loc11 = loc("jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]"("jax_code.py":20:1))
#loc12 = loc("jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub"("jax_code.py":20:1))
#loc13 = loc("jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/mul"("jax_code.py":20:1))
#loc14 = loc("jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/neg"("jax_code.py":20:1))
#loc15 = loc("jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div"("jax_code.py":20:1))
#loc16 = loc("jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/exp"("jax_code.py":20:1))
#loc17 = loc("jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sqrt"("jax_code.py":20:1))
#loc0 = loc(unknown)
module @jit__lambda_.1 {
func public @main(%arg0: tensor<12xf64> loc(unknown)) -> tensor<12xf64> {
%0 = mhlo.constant dense<"0x5BDD17E0F8CAE1BFB40F6BE4C670DCBF512FA5E29BCE9B3F96E27051BF2AD3BF2CCA8F7A1E72FC3F40A6BE448451F2BFA7E5A786A3FDDDBFC759C34C82FCC33F9620802ECC2205C0EF57E8AE8E0DF03FC64A7EF46E51F13F7E8639CC87F0C73F7F9E4CC4AC94E03FEF015A59B0DCF73F951F83E52586D73F27338235CB5BECBFA5490C3DF4E7E53F2070DFFC0373F9BFF0C6DA1F2548DA3F7F0885C23767EBBF7CFE477DD8D0F0BF8E914FF00811E03F6642A7C303AECBBFA0954613079BE6BF886CC930E54D0DC0B1C9DEE3348CC53F5C841BF14C31D23F34946C4A093CE23FF2A8D9D7C0C0F6BF15809E7B6AD5D7BFEE6A0250DD9DD73FA2B773C7C92E7FBF5BC46C066201E23F6BEAEB25C65BBB3F74DB84050139E23F4164259E72CBE53FE41499760E6DF5BF02B06AB41480CEBF704C48294B4FF03F98D41925E974E63FAF404AF94196C2BF7672819E9B92E43F48FD842B0D1CFD3F3BE823A22F81D7BFADE3C421D035E83FF03EF3DFBB46B63F1FAD4E6BFA3CEBBFAD4A7A495B93ED3F62358BCE1FCBF93F321C10532DA0EDBF92734616CE7CDF3F7D47D1AB3CF0CCBF3252D2B751A0F5BF1E4306D6F459D33FA662B7C7A69AF33FA48C16A8814FDDBF47160ED05A99D7BFD1D1A88727D0E2BF7D2F67DBEE7BEC3F4714873F66A5CE3F729812F6E9F9C8BF659086E39AEEE43F73FED5D8872DEABF3C1E8803B968FABF0B074135746EDABF957FE3B755F29B3F3518BD79CC0BD33F558540D12145B23FE4823733E59FECBF806744FE82EAFFBFC40C84F0F2F8C7BF2D566753F3BBE2BFF240E7518326F8BF28D59F6066C1BBBF8FFC52C7A6C6D7BF84E07E64D059F33F6E764D05001DCABF075DFFE76891893F6C54F23D89FEC13FCC841659ADC1EFBF836DE7871660F2BF9176EA9EF9F1F53F5C1C57E8233EAEBF81556442D798D6BF7B327BD99D2EF7BF308D9556731A034049440B0B791AC03F3AC623F4BB8FFFBFBA9219B0DE6DE63FB4E5B0A3D249D43FD64044D2C6AED13FE0DC218C8902FABF44EBFEC47CFEEDBFA46B360199C6EDBF5A62411F4FD9FFBFC71F977BE79AC13F6A2CB3DC54320940F10BEE08CF15E7BFD6348A1A8B77E2BFDDCDCF348B66DD3F6BAE698A80A4CF3F0A307DCE44479ABF982EC3DD013AE4BF4DE3D53EA353F0BF8D38659AEFFBF4BF5C837AC672FCE53FD90A1393C037B8BF07AD4A844E39D2BF312059D149AED5BFB55183ED006AB8BF934510466A9BE83F75B137BE3F14F73F7CB03E65209AD1BF4B60730DFB4BD8BF30DB96085420E7BF9A62726F6AE0C13FEBFDFD4EA78CF6BF8F5F4B7F26E3F03F070A8E570FE701C0732B5909E58BF23F8701B90F6C15E6BF27033C7E351DF6BF41917899D200E33F3AC8C335E126E53F2673DBCB421206400AAEE9B3BDEDDD3F33F1C1978FA2B4BFC81F3AE1C85EB43FEF08B73B6633D7BF78FC2F53CE06E6BF0068A605B943E6BF24D137CA6283DBBF9B0B65499FBEE3BFE9D685268333E9BFA3A76AE7FB56EF3F3D8EC2E1A65CC5BF6291546AEC39DCBFBE306FDB22D485BFD99C07402515DA3FF1836BF7A67AD8BFB7918C2E898FDBBFD3A2C0E5F818ABBF9ECAB5845E6BE83F238D1AA13D53FBBFC085130D1B48E5BFC1B01F953485F93F5DECEF67E55BE13F3E86BCC9714CD13F4E3D011FAE9EF23F100684D62835EFBF08F66FC9D9EBE23F17CB98FEE198E2BF185A5ED306A9F0BF39A79F2A4CA2C8BF2B8EE32AEED3DBBF0A53A564ED8FB53FD96F3AC574B3F03F89E05DA3AE88DFBF1BE5B6C507EFF33F76507812B2EDF13FF7AF81AA2791BFBF13153E144A10F1BF2B683A7C3A80D33F99CFC3FD00D1FCBFBB75485EE0FBC0BF9284DD20612BE43FE8F6639BEDBB02C0389FC6DB1C72C4BF2AAC2A6AB9BEE53F64D0766E1CD5E7BF3C48D169EFB0F33F41BBAF821673F13F5D1F638B7555FE3F898D96A6BA24D1BFE6F13B30BF5000409F43092BFF89AC3F0BD241DDF204E7BF0ECBD56E9DD9C4BF93499AD22973D2BF865A05BF766D00C0BE217068D6DD01C09C9710BE5C74F2BFFA7EF3506BF2F8BF0B5D4AEC32A3F5BFF336B90375BBD6BFBB1D7BBF1807EEBF709559533F9BE13FFCC0D805D472FABF470E066AE548F0BF4780416E78ACF53F28724835BC5EE7BFD3A23F66B559F73F79A856C710CFF23F46480C847283F73F083618A6833D01404FD2D07C0952C9BF082BB5B9AAD0F3BFED85469AC47ADE3F4E7DE63DFA1FE23FBFB946289B870140F63F51514C5FC5BF49273D0C5B71FDBF5E85D9F6ABFEE2BF4DDE1CB94476DCBFB90963491F19FE3F4E85E917926CEBBF7C45C7051CFDE03F40DF77A92252EE3FCEE8BE8EB135E03F668A86437CD4F6BFEE9D2F571175D13FA564260BC3EEFA3F8F3013707224EC3F9356FB1F9FD3D7BFDA42C0C5B65DF33F0EF920418210EABF59933C461E3DE5BF270A76A90E4FD7BFE8C07E043B68C03FB14ACCE69460EBBF27A0ED9918E2E73F1D0BFA77E253CBBF1FF4D88D836CE33F6D88114C7F41C3BF475F5F1DBC56D23FA5BD5FC8A901EF3F9E4EB750EABBDD3F567D0F264ECBB9BFADD46B61EA19EF3FE1E7B55594BFF53F02F372ED516FED3F977C5635842B70BFFBC89B80E748E53F3043F4A300B7DDBFAAA583DFADA8B8BFE1264F80AC6CF7BFA6380581D477A13FEAE0206887A7C83FF4343EC68E5BF43FD47EB6834FC0E5BF06B0FB79E3C9E63FDF65D8F1D75BFA3FE052D454DEC7F5BF84B3E4C9343DFA3F7F012EA7ECB1F4BFEDAD93C2AB7FE3BF5E61F863BB8BDFBFAD04FB615597B33FAA59C4D48661C43F30CEDD6BF874DC3F4E5888460A66F3BF77F09A88E1A0F5BF558E71B69C82F0BF7E53553D0A30F13F22393B24E013F13F12289CA3DAC4C5BF71298C97C9CDC83FEF73F8D460DA03C022580F7F7764DDBFF76CA9816309F3BF4267BEE31DADD03F75688673B730E4BFEE267824A5A3F83FDAEDE537C280BABF737ACF8426CCF03F1E41602C58EAB5BF5611585E0A7EFFBFE91B3FF2353DED3FA0BB024AF443F83F50672DC1A1D4EEBF0C0633FDC903F33F374439BE56D1CDBF8C6847294192EE3F466C488260D5D3BF91AFD60E4A9CA5BF6274B2DBABE3FFBFA42642EFFEEFE33F7F4ED0A6831506C0BFB472C26864F33F0C21B3FC1830F93FEDF635C27316EBBFD288854DB66DE73F009B8EA868B4F03FB7027DE826F1F93F2B1DEB923C000640DE45462369C1FB3F5F00FC764BAEF3BF3F8050AD5F29D7BFC54C79F2D104C53F70F8486F0D38D2BF8EAA43B2E90CFD3F67E945E0EFA0E8BF2E2276D9790ED8BFD4347006592FD4BFA564DBA359B3CD3F871242C2D3EFECBFB96CC4A6B9B7C23F66B6E85C6193CC3F08CC16EE5A05B3BF552D2B57CA83EB3FDF9045E638E7E93FB6245720F2E5E83F8A61F5ED619EEFBFB8AD5963ED6FC6BF11466AD3D1E9F6BF7D6233486FE2DF3FEA2CA35EB848F73F517397A6FFAAEBBF9D8E581BBC13E43FB1568E008616E73F280B61FE2666F03F13E21E29C5AEF93FDAA97381CDB8DABF512BA50DD800F3BF6463FB17DA77FF3FFF181E2D9579EABFB6104A840BF4FCBF577990194B17CC3F41045DEA8922FB3F9FAFB2EFEF78B33FD7FA4BD7405543BFC520FF8A6E29E4BFE040152991F0E63F11D15E70ED21FBBF42DBC3D2160803C09EAD97E16BAAC43FF5207B56EE46D6BF099192640AF8C8BFCE52C394A397E1BF413C63E3164BF13F6B4FE35E36B301C0B7E7066297E6EB3FB815A0C069847DBF34DBBD79DA36F9BFF686AE29AFAB01C010B675C922B9E3BF68345FF6C890E2BFDC7299F50AFBF8BF7665B61ADDCDF4BFD82E0EE12E18F0BF0484DD5EAEBFE53F7E9CA1C3461FA6BF54B06307DC65A4BFD40FBC30FA10DCBF0190BCFBB17BB7BFFA5142671B9CF33F5A8D7EA47DB6CDBF51D059064C6CF3BF96064BD5E352CEBFA87DF7DF477ED8BFCDE284069B80FFBF5FD1D6D1A546F9BF63500D2E8E18E2BF23E7EC9EE278FBBF511EF0C1F19103C012C9F714BF18D1BF601BCFD11AB1E53FEC84234C8B9EC5BF647DF76563ADF93FE3E3D88021F8FB3FE29DD5957455ED3F238048C78F25F23FACC441ACAC6B01C0710EF5809825D5BFEC436A38511AD1BF5C0C892E2637F33F024A482BA212F53F413A216ECC46E33F029015E2DD72EFBFA3D30781D354F2BF230650F73786D03FD4A87C83A84202C06A453233BC6408C0AFE4FAC93682F4BFD8D04D0783690640213863D2F80BE23F59F39E842C48DDBFA1DCC8047692E9BF99FDBB1A9E34F13F8EBFC87D9CD2E1BF8C30E17FB05EA93FDDD781D69285ECBF4CF4650DF091E6BF6A6C51954A5AF63FAA248DDEA89AFEBF26ED4C92A681E4BF6B9E93BD2DC6D9BFC698E1487017CB3F48B7D543A0EB0140C3755F435E36ECBFCBEA839FA8C3E3BF2BC0B76D6110D9BF9A204B168C71EE3FB07E7B8FE513C23F8D2E3F34ED48F33FBFB66F0E3681983FC84D8F8D4406EABF04268AFD6D29F03FF1257F231A1DC33F0BFA85976D70FC3FE227092F16F8EA3F5B24CBC5145DEFBF77C17093C495F43FD15A1E525418DC3FA2A932D2B42EE0BFB247E934DF7AFABF3210FDE950D9E43F31A89E8348F2E0BF3F19BE29EDFAEC3F55D3C28312F8B63FBB2381753CC7CD3F1ACFCFB3E804054073C0CD8F2169D13F9F00CA4C9297ED3F680B5A78CC4ED93F4FCB1331570F08C0DB024DABE4E4F13F20800394905FC63F5FA16D7B066DF3BFDAD8AA9655B8C83F2197B3FB3F7FD33FA81C86746A1401C00B2E19100B1DE23F7A086954ADAA993F5C49923B7A0FD9BFC84DEE449B36EC3FB1685E3EE773EA3FE60F2E6FEC60EE3F4FDEF4879C446ABFBCDE992731BDFCBFA34E0C6D5C6FDA3F331116677598F4BF85417C1F36E9F1BF9DB5D21F34BEE83F76AFD96C808FD8BFB507B968C3E8B33F8E1F35AEEF22E8BFB1CBDF8168D4B43FD14C3CEE2794D13F44593B3BA5CBF13F2BFC8FBB870BE13FA99770956909E93FF87CB22F7C09D4BF393152994174A7BFE325E3341BA8C53FE7EF5FFEF8BED73F1FAAE7E0D92EEEBF79001B225F59E8BF9CF75833C4F2D13FF06871D25DC4A8BFFA2DD7D09F65EFBF2305DBD504D9F43F5ECEC8AF4085AE3F39DBA0A24ADFBF3F1ED807A61614BD3F392D7601674AF5BFB77529F35A45D6BF03D2A759DF58D2BF5F6D8671A493E53FA14CBCACFA21DBBF24E4E87EFB88EDBF9270D0DF53EDD33FB451A668F604DFBFFC039045CCD78BBFE0ECF65395D8F33F2CBD8D39C687F03F1078496CF495BEBF4C78240FF061E3BFE3A8AB4AA6D0E8BF8E9B056BEF95F23FB19C5ED9DEE6F33F4FB4D06837739C3FAE93BAC4D564F3BF23B0A3A48262E43F554C78ECACDEE53F18A1F61B2AF9E33F81A83482D2A6F5BF26C0EBE8939AEC3F9341F1B400CCEA3F9DAF8A27F2E2D7BF4ED68E9566DDF23FAA0687F76551E93F1CA20A1B2B07CC3FBA7E43F6EF8FE3BFAF862AFE0E79C93F32AE7EC3CA23D43F3785949805EFF33FCD437E72082CE03F88C53C1F3DC9DCBFED5A53EC2D36E33FD2C0087C9436E93FEE62B0ED7B84DE3F5744A25A38B5E6BFE428E4880D30B83F9372FCA82033FABF40DCE76DE981F23F9EF90376ED8BE93F4EE3F2480C35F5BF74553ABF812ACCBFA2AA79E10924E43F"> : tensor<500xf64> loc(#loc0)
%1 = "mhlo.broadcast_in_dim"(%0) {broadcast_dimensions = dense<0> : tensor<1xi64>} : (tensor<500xf64>) -> tensor<500x1xf64> loc(#loc0)
%2:18 = call @mixture_loglikelihood(%arg0, %1) : (tensor<12xf64>, tensor<500x1xf64>) -> (tensor<f64>, tensor<500xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<f64>, tensor<4xf64>, tensor<f64>, tensor<1xi32>, tensor<1xi32>, tensor<4xf64>, tensor<1xi32>) loc(#loc1)
%3 = mhlo.constant dense<1.000000e+00> : tensor<f64> loc(#loc0)
%4 = call @mixture_loglikelihood_0(%2#1, %2#2, %2#3, %2#4, %2#5, %2#6, %2#7, %2#8, %2#9, %2#10, %2#11, %2#12, %2#13, %2#14, %2#15, %2#16, %2#17, %3) : (tensor<500xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<f64>, tensor<4xf64>, tensor<f64>, tensor<1xi32>, tensor<1xi32>, tensor<4xf64>, tensor<1xi32>, tensor<f64>) -> tensor<12xf64> loc(#loc2)
return %4 : tensor<12xf64> loc(#loc0)
} loc(#loc0)
func private @mixture_loglikelihood(%arg0: tensor<12xf64> loc(unknown), %arg1: tensor<500x1xf64> loc(unknown)) -> (tensor<f64>, tensor<500xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<f64>, tensor<4xf64>, tensor<f64>, tensor<1xi32>, tensor<1xi32>, tensor<4xf64>, tensor<1xi32>) {
%0 = mhlo.constant dense<0> : tensor<i32> loc(#loc1)
%1 = "mhlo.broadcast_in_dim"(%0) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<i32>) -> tensor<1xi32> loc(#loc3)
%2 = "mhlo.gather"(%arg0, %1) {dimension_numbers = #mhlo.gather<offset_dims = [0], start_index_map = [0]>, indices_are_sorted = true, slice_sizes = dense<4> : tensor<1xi64>} : (tensor<12xf64>, tensor<1xi32>) -> tensor<4xf64> loc(#loc4)
%3 = mhlo.constant dense<4> : tensor<i32> loc(#loc1)
%4 = "mhlo.broadcast_in_dim"(%3) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<i32>) -> tensor<1xi32> loc(#loc5)
%5 = "mhlo.gather"(%arg0, %4) {dimension_numbers = #mhlo.gather<offset_dims = [0], start_index_map = [0]>, indices_are_sorted = true, slice_sizes = dense<4> : tensor<1xi64>} : (tensor<12xf64>, tensor<1xi32>) -> tensor<4xf64> loc(#loc6)
%6 = mhlo.constant dense<8> : tensor<i32> loc(#loc1)
%7 = "mhlo.broadcast_in_dim"(%6) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<i32>) -> tensor<1xi32> loc(#loc5)
%8 = "mhlo.gather"(%arg0, %7) {dimension_numbers = #mhlo.gather<offset_dims = [0], start_index_map = [0]>, indices_are_sorted = true, slice_sizes = dense<4> : tensor<1xi64>} : (tensor<12xf64>, tensor<1xi32>) -> tensor<4xf64> loc(#loc6)
%9 = mhlo.multiply %8, %8 : tensor<4xf64> loc(#loc7)
%10 = mhlo.constant dense<2.000000e+00> : tensor<f64> loc(#loc1)
%11 = "mhlo.broadcast_in_dim"(%10) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<4xf64> loc(#loc7)
%12 = mhlo.multiply %11, %8 : tensor<4xf64> loc(#loc7)
%13:11 = call @normal_pdf(%arg1, %5, %9) : (tensor<500x1xf64>, tensor<4xf64>, tensor<4xf64>) -> (tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<f64>, tensor<4xf64>, tensor<f64>) loc(#loc8)
%14 = "mhlo.broadcast_in_dim"(%2) {broadcast_dimensions = dense<1> : tensor<1xi64>} : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc9)
%15 = "mhlo.broadcast_in_dim"(%14) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc7)
%16 = mhlo.multiply %13#0, %15 : tensor<500x4xf64> loc(#loc7)
%17 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc10)
%18 = mhlo.reduce(%16 init: %17) across dimensions = [1] : (tensor<500x4xf64>, tensor<f64>) -> tensor<500xf64>
reducer(%arg2: tensor<f64> loc(unknown), %arg3: tensor<f64> loc(unknown)) {
%22 = mhlo.add %arg2, %arg3 : tensor<f64> loc(#loc10)
"mhlo.return"(%22) : (tensor<f64>) -> () loc(#loc10)
} loc(#loc10)
%19 = mhlo.log %18 : tensor<500xf64> loc(#loc11)
%20 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc12)
%21 = mhlo.reduce(%19 init: %20) across dimensions = [0] : (tensor<500xf64>, tensor<f64>) -> tensor<f64>
reducer(%arg2: tensor<f64> loc(unknown), %arg3: tensor<f64> loc(unknown)) {
%22 = mhlo.add %arg2, %arg3 : tensor<f64> loc(#loc12)
"mhlo.return"(%22) : (tensor<f64>) -> () loc(#loc12)
} loc(#loc12)
return %21, %18, %14, %13#0, %13#1, %13#2, %13#3, %13#4, %13#5, %13#6, %13#7, %13#8, %13#9, %13#10, %4, %7, %12, %1 : tensor<f64>, tensor<500xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<f64>, tensor<4xf64>, tensor<f64>, tensor<1xi32>, tensor<1xi32>, tensor<4xf64>, tensor<1xi32> loc(#loc1)
} loc(#loc1)
func private @normal_pdf(%arg0: tensor<500x1xf64> loc(unknown), %arg1: tensor<4xf64> loc(unknown), %arg2: tensor<4xf64> loc(unknown)) -> (tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<f64>, tensor<4xf64>, tensor<f64>) {
%0 = "mhlo.broadcast_in_dim"(%arg1) {broadcast_dimensions = dense<1> : tensor<1xi64>} : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc13)
%1 = "mhlo.broadcast_in_dim"(%arg0) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<500x1xf64>) -> tensor<500x4xf64> loc(#loc14)
%2 = "mhlo.broadcast_in_dim"(%0) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc14)
%3 = mhlo.subtract %1, %2 : tensor<500x4xf64> loc(#loc14)
%4 = mhlo.multiply %3, %3 : tensor<500x4xf64> loc(#loc15)
%5 = mhlo.constant dense<2.000000e+00> : tensor<f64> loc(#loc8)
%6 = "mhlo.broadcast_in_dim"(%5) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<500x4xf64> loc(#loc15)
%7 = mhlo.multiply %6, %3 : tensor<500x4xf64> loc(#loc15)
%8 = mhlo.negate %4 : tensor<500x4xf64> loc(#loc16)
%9 = mhlo.constant dense<2.000000e+00> : tensor<f64> loc(#loc8)
%10 = "mhlo.broadcast_in_dim"(%9) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<4xf64> loc(#loc15)
%11 = mhlo.multiply %arg2, %10 : tensor<4xf64> loc(#loc15)
%12 = "mhlo.broadcast_in_dim"(%11) {broadcast_dimensions = dense<1> : tensor<1xi64>} : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc13)
%13 = "mhlo.broadcast_in_dim"(%12) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc17)
%14 = mhlo.divide %8, %13 : tensor<500x4xf64> loc(#loc17)
%15 = mhlo.multiply %12, %12 : tensor<1x4xf64> loc(#loc15)
%16 = mhlo.constant dense<1.000000e+00> : tensor<f64> loc(#loc18)
%17 = "mhlo.broadcast_in_dim"(%16) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<1x4xf64> loc(#loc19)
%18 = mhlo.divide %17, %15 : tensor<1x4xf64> loc(#loc17)
%19 = mhlo.exponential %14 : tensor<500x4xf64> loc(#loc20)
%20 = mhlo.constant dense<6.2831853071795862> : tensor<f64> loc(#loc8)
%21 = "mhlo.broadcast_in_dim"(%20) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<4xf64> loc(#loc15)
%22 = mhlo.multiply %arg2, %21 : tensor<4xf64> loc(#loc15)
%23 = mhlo.sqrt %22 : tensor<4xf64> loc(#loc21)
%24 = mhlo.constant dense<5.000000e-01> : tensor<f64> loc(#loc8)
%25 = "mhlo.broadcast_in_dim"(%24) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<4xf64> loc(#loc17)
%26 = mhlo.divide %25, %23 : tensor<4xf64> loc(#loc17)
%27 = "mhlo.broadcast_in_dim"(%23) {broadcast_dimensions = dense<1> : tensor<1xi64>} : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc13)
%28 = "mhlo.broadcast_in_dim"(%27) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc17)
%29 = mhlo.divide %19, %28 : tensor<500x4xf64> loc(#loc17)
%30 = mhlo.multiply %27, %27 : tensor<1x4xf64> loc(#loc15)
%31 = mhlo.constant dense<1.000000e+00> : tensor<f64> loc(#loc18)
%32 = "mhlo.broadcast_in_dim"(%31) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<1x4xf64> loc(#loc19)
%33 = mhlo.divide %32, %30 : tensor<1x4xf64> loc(#loc17)
%34 = mhlo.constant dense<2.000000e+00> : tensor<f64> loc(#loc8)
%35 = mhlo.constant dense<6.2831853071795862> : tensor<f64> loc(#loc8)
return %29, %27, %19, %33, %12, %8, %18, %7, %34, %26, %35 : tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<f64>, tensor<4xf64>, tensor<f64> loc(#loc8)
} loc(#loc8)
func private @mixture_loglikelihood_0(%arg0: tensor<500xf64> loc(unknown), %arg1: tensor<1x4xf64> loc(unknown), %arg2: tensor<500x4xf64> loc(unknown), %arg3: tensor<1x4xf64> loc(unknown), %arg4: tensor<500x4xf64> loc(unknown), %arg5: tensor<1x4xf64> loc(unknown), %arg6: tensor<1x4xf64> loc(unknown), %arg7: tensor<500x4xf64> loc(unknown), %arg8: tensor<1x4xf64> loc(unknown), %arg9: tensor<500x4xf64> loc(unknown), %arg10: tensor<f64> loc(unknown), %arg11: tensor<4xf64> loc(unknown), %arg12: tensor<f64> loc(unknown), %arg13: tensor<1xi32> loc(unknown), %arg14: tensor<1xi32> loc(unknown), %arg15: tensor<4xf64> loc(unknown), %arg16: tensor<1xi32> loc(unknown), %arg17: tensor<f64> loc(unknown)) -> tensor<12xf64> {
%0 = "mhlo.broadcast_in_dim"(%arg17) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<500xf64> loc(#loc22)
%1 = mhlo.divide %0, %arg0 : tensor<500xf64> loc(#loc23)
%2 = "mhlo.broadcast_in_dim"(%1) {broadcast_dimensions = dense<0> : tensor<1xi64>} : (tensor<500xf64>) -> tensor<500x4xf64> loc(#loc24)
%3 = mhlo.multiply %arg2, %2 : tensor<500x4xf64> loc(#loc25)
%4 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc26)
%5 = mhlo.reduce(%3 init: %4) across dimensions = [0] : (tensor<500x4xf64>, tensor<f64>) -> tensor<4xf64>
reducer(%arg18: tensor<f64> loc(unknown), %arg19: tensor<f64> loc(unknown)) {
%30 = mhlo.add %arg18, %arg19 : tensor<f64> loc(#loc26)
"mhlo.return"(%30) : (tensor<f64>) -> () loc(#loc26)
} loc(#loc26)
%6 = "mhlo.reshape"(%5) : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc27)
%7 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc26)
%8 = mhlo.reduce(%6 init: %7) across dimensions = [0] : (tensor<1x4xf64>, tensor<f64>) -> tensor<4xf64>
reducer(%arg18: tensor<f64> loc(unknown), %arg19: tensor<f64> loc(unknown)) {
%30 = mhlo.add %arg18, %arg19 : tensor<f64> loc(#loc26)
"mhlo.return"(%30) : (tensor<f64>) -> () loc(#loc26)
} loc(#loc26)
%9 = "mhlo.broadcast_in_dim"(%arg1) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc25)
%10 = mhlo.multiply %2, %9 : tensor<500x4xf64> loc(#loc25)
%11 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc28)
%12 = mhlo.reduce(%8 init: %11) across dimensions = [] : (tensor<4xf64>, tensor<f64>) -> tensor<4xf64>
reducer(%arg18: tensor<f64> loc(unknown), %arg19: tensor<f64> loc(unknown)) {
%30 = mhlo.add %arg18, %arg19 : tensor<f64> loc(#loc28)
"mhlo.return"(%30) : (tensor<f64>) -> () loc(#loc28)
} loc(#loc28)
%13 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc2)
%14 = "mhlo.broadcast_in_dim"(%13) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<12xf64> loc(#loc29)
%15 = "mhlo.scatter"(%14, %arg16, %12) ({
^bb0(%arg18: tensor<f64> loc(unknown), %arg19: tensor<f64> loc(unknown)):
%30 = mhlo.add %arg18, %arg19 : tensor<f64> loc(#loc31)
"mhlo.return"(%30) : (tensor<f64>) -> () loc(#loc30)
}) {indices_are_sorted = true, scatter_dimension_numbers = #mhlo.scatter<update_window_dims = [0], scatter_dims_to_operand_dims = [0]>, unique_indices = true} : (tensor<12xf64>, tensor<1xi32>, tensor<4xf64>) -> tensor<12xf64> loc(#loc30)
%16:2 = call @normal_pdf_1(%arg3, %arg4, %arg5, %arg6, %arg7, %arg8, %arg9, %arg10, %arg11, %arg12, %10) : (tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<1x4xf64>, tensor<500x4xf64>, tensor<f64>, tensor<4xf64>, tensor<f64>, tensor<500x4xf64>) -> (tensor<4xf64>, tensor<4xf64>) loc(#loc32)
%17 = mhlo.multiply %16#1, %arg15 : tensor<4xf64> loc(#loc25)
%18 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc33)
%19 = mhlo.reduce(%17 init: %18) across dimensions = [] : (tensor<4xf64>, tensor<f64>) -> tensor<4xf64>
reducer(%arg18: tensor<f64> loc(unknown), %arg19: tensor<f64> loc(unknown)) {
%30 = mhlo.add %arg18, %arg19 : tensor<f64> loc(#loc33)
"mhlo.return"(%30) : (tensor<f64>) -> () loc(#loc33)
} loc(#loc33)
%20 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc2)
%21 = "mhlo.broadcast_in_dim"(%20) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<12xf64> loc(#loc34)
%22 = "mhlo.scatter"(%21, %arg14, %19) ({
^bb0(%arg18: tensor<f64> loc(unknown), %arg19: tensor<f64> loc(unknown)):
%30 = mhlo.add %arg18, %arg19 : tensor<f64> loc(#loc31)
"mhlo.return"(%30) : (tensor<f64>) -> () loc(#loc35)
}) {indices_are_sorted = true, scatter_dimension_numbers = #mhlo.scatter<update_window_dims = [0], scatter_dims_to_operand_dims = [0]>, unique_indices = true} : (tensor<12xf64>, tensor<1xi32>, tensor<4xf64>) -> tensor<12xf64> loc(#loc35)
%23 = mhlo.add %15, %22 : tensor<12xf64> loc(#loc36)
%24 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc33)
%25 = mhlo.reduce(%16#0 init: %24) across dimensions = [] : (tensor<4xf64>, tensor<f64>) -> tensor<4xf64>
reducer(%arg18: tensor<f64> loc(unknown), %arg19: tensor<f64> loc(unknown)) {
%30 = mhlo.add %arg18, %arg19 : tensor<f64> loc(#loc33)
"mhlo.return"(%30) : (tensor<f64>) -> () loc(#loc33)
} loc(#loc33)
%26 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc2)
%27 = "mhlo.broadcast_in_dim"(%26) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<12xf64> loc(#loc34)
%28 = "mhlo.scatter"(%27, %arg13, %25) ({
^bb0(%arg18: tensor<f64> loc(unknown), %arg19: tensor<f64> loc(unknown)):
%30 = mhlo.add %arg18, %arg19 : tensor<f64> loc(#loc31)
"mhlo.return"(%30) : (tensor<f64>) -> () loc(#loc35)
}) {indices_are_sorted = true, scatter_dimension_numbers = #mhlo.scatter<update_window_dims = [0], scatter_dims_to_operand_dims = [0]>, unique_indices = true} : (tensor<12xf64>, tensor<1xi32>, tensor<4xf64>) -> tensor<12xf64> loc(#loc35)
%29 = mhlo.add %23, %28 : tensor<12xf64> loc(#loc36)
return %29 : tensor<12xf64> loc(#loc2)
} loc(#loc2)
func private @normal_pdf_1(%arg0: tensor<1x4xf64> loc(unknown), %arg1: tensor<500x4xf64> loc(unknown), %arg2: tensor<1x4xf64> loc(unknown), %arg3: tensor<1x4xf64> loc(unknown), %arg4: tensor<500x4xf64> loc(unknown), %arg5: tensor<1x4xf64> loc(unknown), %arg6: tensor<500x4xf64> loc(unknown), %arg7: tensor<f64> loc(unknown), %arg8: tensor<4xf64> loc(unknown), %arg9: tensor<f64> loc(unknown), %arg10: tensor<500x4xf64> loc(unknown)) -> (tensor<4xf64>, tensor<4xf64>) {
%0 = "mhlo.broadcast_in_dim"(%arg2) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc37)
%1 = mhlo.multiply %arg10, %0 : tensor<500x4xf64> loc(#loc37)
%2 = mhlo.multiply %1, %arg1 : tensor<500x4xf64> loc(#loc37)
%3 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc38)
%4 = mhlo.reduce(%2 init: %3) across dimensions = [0] : (tensor<500x4xf64>, tensor<f64>) -> tensor<4xf64>
reducer(%arg11: tensor<f64> loc(unknown), %arg12: tensor<f64> loc(unknown)) {
%37 = mhlo.add %arg11, %arg12 : tensor<f64> loc(#loc38)
"mhlo.return"(%37) : (tensor<f64>) -> () loc(#loc38)
} loc(#loc38)
%5 = "mhlo.reshape"(%4) : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc39)
%6 = mhlo.negate %5 : tensor<1x4xf64> loc(#loc40)
%7 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc38)
%8 = mhlo.reduce(%6 init: %7) across dimensions = [0] : (tensor<1x4xf64>, tensor<f64>) -> tensor<4xf64>
reducer(%arg11: tensor<f64> loc(unknown), %arg12: tensor<f64> loc(unknown)) {
%37 = mhlo.add %arg11, %arg12 : tensor<f64> loc(#loc38)
"mhlo.return"(%37) : (tensor<f64>) -> () loc(#loc38)
} loc(#loc38)
%9 = "mhlo.broadcast_in_dim"(%arg0) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc41)
%10 = mhlo.divide %arg10, %9 : tensor<500x4xf64> loc(#loc41)
%11 = mhlo.multiply %8, %arg8 : tensor<4xf64> loc(#loc37)
%12 = "mhlo.broadcast_in_dim"(%arg9) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<4xf64> loc(#loc37)
%13 = mhlo.multiply %11, %12 : tensor<4xf64> loc(#loc37)
%14 = mhlo.multiply %10, %arg1 : tensor<500x4xf64> loc(#loc37)
%15 = "mhlo.broadcast_in_dim"(%arg5) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc37)
%16 = mhlo.multiply %14, %15 : tensor<500x4xf64> loc(#loc37)
%17 = mhlo.multiply %16, %arg4 : tensor<500x4xf64> loc(#loc37)
%18 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc38)
%19 = mhlo.reduce(%17 init: %18) across dimensions = [0] : (tensor<500x4xf64>, tensor<f64>) -> tensor<4xf64>
reducer(%arg11: tensor<f64> loc(unknown), %arg12: tensor<f64> loc(unknown)) {
%37 = mhlo.add %arg11, %arg12 : tensor<f64> loc(#loc38)
"mhlo.return"(%37) : (tensor<f64>) -> () loc(#loc38)
} loc(#loc38)
%20 = "mhlo.reshape"(%19) : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc39)
%21 = mhlo.negate %20 : tensor<1x4xf64> loc(#loc40)
%22 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc38)
%23 = mhlo.reduce(%21 init: %22) across dimensions = [0] : (tensor<1x4xf64>, tensor<f64>) -> tensor<4xf64>
reducer(%arg11: tensor<f64> loc(unknown), %arg12: tensor<f64> loc(unknown)) {
%37 = mhlo.add %arg11, %arg12 : tensor<f64> loc(#loc38)
"mhlo.return"(%37) : (tensor<f64>) -> () loc(#loc38)
} loc(#loc38)
%24 = "mhlo.broadcast_in_dim"(%arg3) {broadcast_dimensions = dense<[0, 1]> : tensor<2xi64>} : (tensor<1x4xf64>) -> tensor<500x4xf64> loc(#loc41)
%25 = mhlo.divide %14, %24 : tensor<500x4xf64> loc(#loc41)
%26 = "mhlo.broadcast_in_dim"(%arg7) {broadcast_dimensions = dense<> : tensor<0xi64>} : (tensor<f64>) -> tensor<4xf64> loc(#loc37)
%27 = mhlo.multiply %23, %26 : tensor<4xf64> loc(#loc37)
%28 = mhlo.add %13, %27 : tensor<4xf64> loc(#loc42)
%29 = mhlo.negate %25 : tensor<500x4xf64> loc(#loc40)
%30 = mhlo.multiply %29, %arg6 : tensor<500x4xf64> loc(#loc37)
%31 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc38)
%32 = mhlo.reduce(%30 init: %31) across dimensions = [0] : (tensor<500x4xf64>, tensor<f64>) -> tensor<4xf64>
reducer(%arg11: tensor<f64> loc(unknown), %arg12: tensor<f64> loc(unknown)) {
%37 = mhlo.add %arg11, %arg12 : tensor<f64> loc(#loc38)
"mhlo.return"(%37) : (tensor<f64>) -> () loc(#loc38)
} loc(#loc38)
%33 = "mhlo.reshape"(%32) : (tensor<4xf64>) -> tensor<1x4xf64> loc(#loc39)
%34 = mhlo.negate %33 : tensor<1x4xf64> loc(#loc40)
%35 = mhlo.constant dense<0.000000e+00> : tensor<f64> loc(#loc38)
%36 = mhlo.reduce(%34 init: %35) across dimensions = [0] : (tensor<1x4xf64>, tensor<f64>) -> tensor<4xf64>
reducer(%arg11: tensor<f64> loc(unknown), %arg12: tensor<f64> loc(unknown)) {
%37 = mhlo.add %arg11, %arg12 : tensor<f64> loc(#loc38)
"mhlo.return"(%37) : (tensor<f64>) -> () loc(#loc38)
} loc(#loc38)
return %36, %28 : tensor<4xf64>, tensor<4xf64> loc(#loc32)
} loc(#loc32)
} loc(#loc0)
#loc1 = loc("jit(<lambda>)/jit(main)/xla_call[device=None backend=None name=mixture_loglikelihood donated_invars=(False, False) inline=False keep_unused=False]"("jax_code.py":38:1))
#loc2 = loc("jit(<lambda>)/jit(main)/xla_call[device=None backend=None name=mixture_loglikelihood donated_invars=(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False) inline=False keep_unused=False]"("jax_code.py":38:1))
#loc3 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/broadcast_in_dim[shape=(1,) broadcast_dimensions=()]"("jax_code.py":24:1))
#loc4 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]"("jax_code.py":24:1))
#loc5 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/broadcast_in_dim[shape=(1,) broadcast_dimensions=()]"("jax_code.py":25:1))
#loc6 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]"("jax_code.py":25:1))
#loc7 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul"("jax_code.py":25:1))
#loc8 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/xla_call[device=None backend=None name=normal_pdf donated_invars=(False, False, False) inline=False keep_unused=False]"("jax_code.py":25:1))
#loc9 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]"("jax_code.py":25:1))
#loc10 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/reduce_sum[axes=(1,)]"("jax_code.py":25:1))
#loc11 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/log"("jax_code.py":25:1))
#loc12 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/reduce_sum[axes=(0,)]"("jax_code.py":25:1))
#loc13 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]"("jax_code.py":20:1))
#loc14 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub"("jax_code.py":20:1))
#loc15 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul"("jax_code.py":20:1))
#loc16 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/neg"("jax_code.py":20:1))
#loc17 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div"("jax_code.py":20:1))
#loc18 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/integer_pow[y=-2]"("jax_code.py":20:1))
#loc19 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=()]"("jax_code.py":20:1))
#loc20 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/exp"("jax_code.py":20:1))
#loc21 = loc("jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sqrt"("jax_code.py":20:1))
#loc22 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/broadcast_in_dim[shape=(500,) broadcast_dimensions=()]"("jax_code.py":25:1))
#loc23 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/div"("jax_code.py":25:1))
#loc24 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/broadcast_in_dim[shape=(500, 4) broadcast_dimensions=(0,)]"("jax_code.py":25:1))
#loc25 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul"("jax_code.py":25:1))
#loc26 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reduce_sum[axes=(0,)]"("jax_code.py":25:1))
#loc27 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reshape[new_sizes=(1, 4) dimensions=None]"("jax_code.py":25:1))
#loc28 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reduce_sum[axes=()]"("jax_code.py":24:1))
#loc29 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/broadcast_in_dim[shape=(12,) broadcast_dimensions=()]"("jax_code.py":24:1))
#loc30 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/scatter-add[update_consts=() dimension_numbers=ScatterDimensionNumbers(update_window_dims=(0,), inserted_window_dims=(), scatter_dims_to_operand_dims=(0,)) indices_are_sorted=True unique_indices=True mode=GatherScatterMode.PROMISE_IN_BOUNDS]"("jax_code.py":24:1))
#loc31 = loc("/add"("jax_code.py":24:1))
#loc32 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/xla_call[device=None backend=None name=normal_pdf donated_invars=(False, False, False, False, False, False, False, False, False, False, False) inline=False keep_unused=False]"("jax_code.py":25:1))
#loc33 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reduce_sum[axes=()]"("jax_code.py":25:1))
#loc34 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/broadcast_in_dim[shape=(12,) broadcast_dimensions=()]"("jax_code.py":25:1))
#loc35 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/scatter-add[update_consts=() dimension_numbers=ScatterDimensionNumbers(update_window_dims=(0,), inserted_window_dims=(), scatter_dims_to_operand_dims=(0,)) indices_are_sorted=True unique_indices=True mode=GatherScatterMode.PROMISE_IN_BOUNDS]"("jax_code.py":25:1))
#loc36 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/add_any"("jax_code.py":25:1))
#loc37 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul"("jax_code.py":20:1))
#loc38 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]"("jax_code.py":20:1))
#loc39 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reshape[new_sizes=(1, 4) dimensions=None]"("jax_code.py":20:1))
#loc40 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/neg"("jax_code.py":20:1))
#loc41 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div"("jax_code.py":20:1))
#loc42 = loc("jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/add_any"("jax_code.py":20:1))
HloModule jit_mixture_loglikelihood.0
normal_pdf.8 {
Arg_0.9 = f64[500,1]{1,0} parameter(0)
broadcast.17 = f64[500,1]{1,0} broadcast(Arg_0.9), dimensions={0,1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
reshape.18 = f64[500]{0} reshape(broadcast.17), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
broadcast.19 = f64[500,4]{1,0} broadcast(reshape.18), dimensions={0}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
Arg_1.10 = f64[4]{0} parameter(1)
reshape.16 = f64[1,4]{1,0} reshape(Arg_1.10), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]" source_file="jax_code.py" source_line=20}
broadcast.20 = f64[1,4]{1,0} broadcast(reshape.16), dimensions={0,1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
reshape.21 = f64[4]{0} reshape(broadcast.20), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
broadcast.22 = f64[500,4]{1,0} broadcast(reshape.21), dimensions={1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
subtract.23 = f64[500,4]{1,0} subtract(broadcast.19, broadcast.22), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
multiply.24 = f64[500,4]{1,0} multiply(subtract.23, subtract.23), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
negate.25 = f64[500,4]{1,0} negate(multiply.24), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
Arg_2.11 = f64[4]{0} parameter(2)
constant.14 = f64[] constant(2)
broadcast.15 = f64[4]{0} broadcast(constant.14), dimensions={}
multiply.26 = f64[4]{0} multiply(Arg_2.11, broadcast.15), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
reshape.27 = f64[1,4]{1,0} reshape(multiply.26), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]" source_file="jax_code.py" source_line=20}
broadcast.28 = f64[1,4]{1,0} broadcast(reshape.27), dimensions={0,1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
reshape.29 = f64[4]{0} reshape(broadcast.28), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
broadcast.30 = f64[500,4]{1,0} broadcast(reshape.29), dimensions={1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
divide.31 = f64[500,4]{1,0} divide(negate.25, broadcast.30), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
exponential.32 = f64[500,4]{1,0} exponential(divide.31), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/exp" source_file="jax_code.py" source_line=20}
constant.12 = f64[] constant(6.2831853071795862)
broadcast.13 = f64[4]{0} broadcast(constant.12), dimensions={}
multiply.33 = f64[4]{0} multiply(Arg_2.11, broadcast.13), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
sqrt.34 = f64[4]{0} sqrt(multiply.33), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sqrt" source_file="jax_code.py" source_line=20}
reshape.35 = f64[1,4]{1,0} reshape(sqrt.34), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]" source_file="jax_code.py" source_line=20}
broadcast.36 = f64[1,4]{1,0} broadcast(reshape.35), dimensions={0,1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
reshape.37 = f64[4]{0} reshape(broadcast.36), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
broadcast.38 = f64[500,4]{1,0} broadcast(reshape.37), dimensions={1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
ROOT divide.39 = f64[500,4]{1,0} divide(exponential.32, broadcast.38), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
}
region_0.46 {
Arg_0.47 = f64[] parameter(0)
Arg_1.48 = f64[] parameter(1)
ROOT add.49 = f64[] add(Arg_0.47, Arg_1.48), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(1,)]" source_file="jax_code.py" source_line=25}
}
region_1.52 {
Arg_0.53 = f64[] parameter(0)
Arg_1.54 = f64[] parameter(1)
ROOT add.55 = f64[] add(Arg_0.53, Arg_1.54), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
}
ENTRY main.57 {
Arg_1.2 = f64[500,1]{1,0} parameter(1)
Arg_0.1 = f64[12]{0} parameter(0)
slice.5 = f64[4]{0} slice(Arg_0.1), slice={[4:8]}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
slice.6 = f64[4]{0} slice(Arg_0.1), slice={[8:12]}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
multiply.7 = f64[4]{0} multiply(slice.6, slice.6), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/mul" source_file="jax_code.py" source_line=25}
call.40 = f64[500,4]{1,0} call(Arg_1.2, slice.5, multiply.7), to_apply=normal_pdf.8
slice.4 = f64[4]{0} slice(Arg_0.1), slice={[0:4]}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=24}
reshape.41 = f64[1,4]{1,0} reshape(slice.4), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]" source_file="jax_code.py" source_line=25}
broadcast.42 = f64[1,4]{1,0} broadcast(reshape.41), dimensions={0,1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/mul" source_file="jax_code.py" source_line=25}
reshape.43 = f64[4]{0} reshape(broadcast.42), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/mul" source_file="jax_code.py" source_line=25}
broadcast.44 = f64[500,4]{1,0} broadcast(reshape.43), dimensions={1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/mul" source_file="jax_code.py" source_line=25}
multiply.45 = f64[500,4]{1,0} multiply(call.40, broadcast.44), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/mul" source_file="jax_code.py" source_line=25}
constant.3 = f64[] constant(0)
reduce.50 = f64[500]{0} reduce(multiply.45, constant.3), dimensions={1}, to_apply=region_0.46, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(1,)]" source_file="jax_code.py" source_line=25}
log.51 = f64[500]{0} log(reduce.50), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/log" source_file="jax_code.py" source_line=25}
ROOT reduce.56 = f64[] reduce(log.51, constant.3), dimensions={0}, to_apply=region_1.52, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
}
BufferAssignment:
allocation 0: 0x556fb32711a0, size 4000, parameter 1, shape |f64[500,1]| at ShapeIndex {}:
value: <7 Arg_1.2 @0> (size=4000,offset=0): f64[500,1]{1,0}
allocation 1: 0x556fb3271250, size 96, parameter 0, shape |f64[12]| at ShapeIndex {}:
value: <6 Arg_0.1 @0> (size=96,offset=0): f64[12]{0}
allocation 2: 0x556fb3271300, size 8, output shape is |f64[]|, maybe-live-out:
value: <10 reduce.56 @0> (size=8,offset=0): f64[]
allocation 3: 0x556fb32713b0, size 8, constant:
value: <8 constant.3 @0> (size=8,offset=0): f64[]
allocation 4: 0x556fb3271460, size 8, thread-local:
value: <5 add.55 @0> (size=8,offset=0): f64[]
allocation 5: 0x556fb3271510, size 8, thread-local:
value: <0 Arg_0.47 @0> (size=8,offset=0): f64[]
allocation 6: 0x556fb32715c0, size 8, thread-local:
value: <1 Arg_1.48 @0> (size=8,offset=0): f64[]
allocation 7: 0x556fb3271670, size 8, thread-local:
value: <2 add.49 @0> (size=8,offset=0): f64[]
allocation 8: 0x556fb3271720, size 8, thread-local:
value: <3 Arg_0.53 @0> (size=8,offset=0): f64[]
allocation 9: 0x556fb32717d0, size 8, thread-local:
value: <4 Arg_1.54 @0> (size=8,offset=0): f64[]
allocation 10: 0x556fb3271880, size 4128, preallocated-temp:
value: <9 reduce-window @0> (size=128,offset=4000): f64[16]{0}
value: <11 fusion @0> (size=4000,offset=0): f64[500]{0}
value: <12 fusion.1 @0> (size=32,offset=4000): f64[4]{0}
Total bytes used: 8288 (8.1KiB)
Used values:
<0 Arg_0.47 @0>
positions:
Arg_0.47
uses:
add.49, operand 0
from instruction:%Arg_0.47 = f64[] parameter(0)
<1 Arg_1.48 @0>
positions:
Arg_1.48
uses:
add.49, operand 1
from instruction:%Arg_1.48 = f64[] parameter(1)
<2 add.49 @0>
positions:
add.49
uses:
from instruction:%add.49 = f64[] add(f64[] %Arg_0.47, f64[] %Arg_1.48), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(1,)]" source_file="jax_code.py" source_line=25}
<3 Arg_0.53 @0>
positions:
Arg_0.53
uses:
add.55, operand 0
from instruction:%Arg_0.53 = f64[] parameter(0)
<4 Arg_1.54 @0>
positions:
Arg_1.54
uses:
add.55, operand 1
from instruction:%Arg_1.54 = f64[] parameter(1)
<5 add.55 @0>
positions:
add.55
uses:
from instruction:%add.55 = f64[] add(f64[] %Arg_0.53, f64[] %Arg_1.54), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
<6 Arg_0.1 @0>
positions:
Arg_0.1
uses:
fusion.1, operand 0
fusion, operand 0
from instruction:%Arg_0.1 = f64[12]{0} parameter(0)
<7 Arg_1.2 @0>
positions:
Arg_1.2
uses:
fusion, operand 2
from instruction:%Arg_1.2 = f64[500,1]{1,0} parameter(1)
<8 constant.3 @0>
positions:
constant.3
uses:
reduce-window, operand 1
reduce.56, operand 1
from instruction:%constant.3 = f64[] constant(0)
<9 reduce-window @0>
positions:
reduce-window
uses:
reduce.56, operand 0
from instruction:%reduce-window = f64[16]{0} reduce-window(f64[500]{0} %fusion, f64[] %constant.3), window={size=32 stride=32 pad=6_6}, to_apply=%region_1.52
<10 reduce.56 @0>
positions:
reduce.56
uses:
from instruction:%reduce.56 = f64[] reduce(f64[16]{0} %reduce-window, f64[] %constant.3), dimensions={0}, to_apply=%region_1.52, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
<11 fusion @0>
positions:
fusion
uses:
reduce-window, operand 0
from instruction:%fusion = f64[500]{0} fusion(f64[12]{0} %Arg_0.1, f64[4]{0} %fusion.1, f64[500,1]{1,0} %Arg_1.2), kind=kLoop, calls=%fused_computation, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/log" source_file="jax_code.py" source_line=25}
<12 fusion.1 @0>
positions:
fusion.1
uses:
fusion, operand 1
from instruction:%fusion.1 = f64[4]{0} fusion(f64[12]{0} %Arg_0.1), kind=kLoop, calls=%fused_computation.1, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sqrt" source_file="jax_code.py" source_line=20}
HloLiveRange (max 7):
InstructionSequence:
0:Arg_0.1
1:fusion.1
2:Arg_1.2
3:fusion
4:constant.3
5:reduce-window
6:reduce.56
BufferLiveRange:
Arg_0.1{}:0-7
Arg_1.2{}:0-7
constant.3{}:4-6
reduce-window{}:5-6
reduce.56{}:6-7
fusion{}:3-5
fusion.1{}:1-3
Live ranges at 6 (peak):
Arg_0.1: 96 bytes
Arg_1.2: 4000 bytes
constant.3: 8 bytes
reduce-window: 128 bytes
reduce.56: 8 bytes
HloModule jit_mixture_loglikelihood.0
region_1.52 {
Arg_0.53 = f64[] parameter(0)
Arg_1.54 = f64[] parameter(1)
ROOT add.55 = f64[] add(Arg_0.53, Arg_1.54), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
}
region_0.46 {
Arg_0.47 = f64[] parameter(0)
Arg_1.48 = f64[] parameter(1)
ROOT add.49 = f64[] add(Arg_0.47, Arg_1.48), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(1,)]" source_file="jax_code.py" source_line=25}
}
fused_computation {
param_2.8 = f64[500,1]{1,0} parameter(2)
reshape.24 = f64[500]{0} reshape(param_2.8), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
broadcast.25 = f64[500,4]{1,0} broadcast(reshape.24), dimensions={0}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
param_0.3 = f64[12]{0} parameter(0)
slice.2 = f64[4]{0} slice(param_0.3), slice={[4:8]}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
broadcast.24 = f64[500,4]{1,0} broadcast(slice.2), dimensions={1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
subtract.1 = f64[500,4]{1,0} subtract(broadcast.25, broadcast.24), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
multiply.6 = f64[500,4]{1,0} multiply(subtract.1, subtract.1), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
negate.1 = f64[500,4]{1,0} negate(multiply.6), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
slice.1 = f64[4]{0} slice(param_0.3), slice={[8:12]}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
multiply.5 = f64[4]{0} multiply(slice.1, slice.1), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/mul" source_file="jax_code.py" source_line=25}
constant.4 = f64[] constant(2)
broadcast.23 = f64[4]{0} broadcast(constant.4), dimensions={}
multiply.4 = f64[4]{0} multiply(multiply.5, broadcast.23), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
broadcast.21 = f64[500,4]{1,0} broadcast(multiply.4), dimensions={1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
divide.3 = f64[500,4]{1,0} divide(negate.1, broadcast.21), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
exponential.1 = f64[500,4]{1,0} exponential(divide.3), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/exp" source_file="jax_code.py" source_line=20}
param_1.5 = f64[4]{0} parameter(1)
broadcast.18 = f64[500,4]{1,0} broadcast(param_1.5), dimensions={1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
divide.2 = f64[500,4]{1,0} divide(exponential.1, broadcast.18), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
slice.0 = f64[4]{0} slice(param_0.3), slice={[0:4]}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=24}
broadcast.16 = f64[500,4]{1,0} broadcast(slice.0), dimensions={1}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/mul" source_file="jax_code.py" source_line=25}
multiply.3 = f64[500,4]{1,0} multiply(divide.2, broadcast.16), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/mul" source_file="jax_code.py" source_line=25}
constant.2 = f64[] constant(0)
reduce.1 = f64[500]{0} reduce(multiply.3, constant.2), dimensions={1}, to_apply=region_0.46, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(1,)]" source_file="jax_code.py" source_line=25}
ROOT log.0 = f64[500]{0} log(reduce.1), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/log" source_file="jax_code.py" source_line=25}
}
fused_computation.1 {
param_0.7 = f64[12]{0} parameter(0)
slice.3 = f64[4]{0} slice(param_0.7), slice={[8:12]}, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
multiply.9 = f64[4]{0} multiply(slice.3, slice.3), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/mul" source_file="jax_code.py" source_line=25}
constant.5 = f64[] constant(6.2831853071795862)
broadcast.26 = f64[4]{0} broadcast(constant.5), dimensions={}
multiply.8 = f64[4]{0} multiply(multiply.9, broadcast.26), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
ROOT sqrt.1 = f64[4]{0} sqrt(multiply.8), metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sqrt" source_file="jax_code.py" source_line=20}
}
ENTRY main.57 {
Arg_0.1 = f64[12]{0} parameter(0)
fusion.1 = f64[4]{0} fusion(Arg_0.1), kind=kLoop, calls=fused_computation.1, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/jit(normal_pdf)/sqrt" source_file="jax_code.py" source_line=20}
Arg_1.2 = f64[500,1]{1,0} parameter(1)
fusion = f64[500]{0} fusion(Arg_0.1, fusion.1, Arg_1.2), kind=kLoop, calls=fused_computation, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/log" source_file="jax_code.py" source_line=25}
constant.3 = f64[] constant(0)
reduce-window = f64[16]{0} reduce-window(fusion, constant.3), window={size=32 stride=32 pad=6_6}, to_apply=region_1.52
ROOT reduce.56 = f64[] reduce(reduce-window, constant.3), dimensions={0}, to_apply=region_1.52, metadata={op_name="jit(mixture_loglikelihood)/jit(main)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
}
; ModuleID = '__compute_module'
source_filename = "__compute_module"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@0 = external dso_local unnamed_addr constant [8 x i8], align 8
@1 = external dso_local unnamed_addr constant [8 x i8]
@2 = external dso_local unnamed_addr constant [8 x i8]
@3 = external dso_local unnamed_addr constant [8 x i8]
; Function Attrs: uwtable
define internal void @region_0.46(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.49 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.47 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.48 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.47, align 8, !alias.scope !1, !noalias !4
%5 = load double, double* %Arg_1.48, align 8, !alias.scope !6, !noalias !4
%add.491 = fadd reassoc double %4, %5
store double %add.491, double* %add.49, align 8, !alias.scope !4
%load_ret_value = load double, double* %add.49, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define internal void @region_1.52(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.55 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.53 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.54 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.53, align 8, !alias.scope !8, !noalias !10
%5 = load double, double* %Arg_1.54, align 8, !alias.scope !12, !noalias !10
%add.551 = fadd reassoc double %4, %5
store double %add.551, double* %add.55, align 8, !alias.scope !10
%load_ret_value = load double, double* %add.55, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define void @main.57(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%reduce_function_parameter_addresses13 = alloca i8*, i32 2, align 8
%reduce_function_return_value_addr12 = alloca double, align 8
%arg_addr11 = alloca double, align 8
%arg_addr10 = alloca double, align 8
%reduce.56.inner.invar_address.reduction_dim.0 = alloca i64, align 8
%accumulator_08 = alloca double, align 8
%reducer_function_parameter_addresses = alloca i8*, i32 2, align 8
%reducer_function_return_value_addr = alloca double, align 8
%arg_addr7 = alloca double, align 8
%arg_addr6 = alloca double, align 8
%reduce-window.invar_address.window.0 = alloca i64, align 8
%reduce_window_accum_ptr = alloca double, align 8
%reduce-window.invar_address.dim.0 = alloca i64, align 8
%reduce_function_parameter_addresses = alloca i8*, i32 2, align 8
%reduce_function_return_value_addr = alloca double, align 8
%arg_addr3 = alloca double, align 8
%arg_addr = alloca double, align 8
%reduce.1.inner.invar_address.reduction_dim.1 = alloca i64, align 8
%accumulator_0 = alloca double, align 8
%fusion.invar_address.dim.0 = alloca i64, align 8
%fusion.1.invar_address.dim.0 = alloca i64, align 8
%0 = getelementptr inbounds i8*, i8** %buffer_table, i64 1
%1 = load i8*, i8** %0, align 8, !invariant.load !14, !dereferenceable !15, !align !16
%Arg_0.1 = bitcast i8* %1 to [12 x double]*
%2 = getelementptr inbounds i8*, i8** %buffer_table, i64 10
%3 = load i8*, i8** %2, align 8, !invariant.load !14, !dereferenceable !17, !align !16
%4 = getelementptr inbounds i8, i8* %3, i64 4000
%fusion.1 = bitcast i8* %4 to [4 x double]*
store i64 0, i64* %fusion.1.invar_address.dim.0, align 8
br label %fusion.1.loop_header.dim.0
return: ; preds = %reduce.56.inner.loop_exit.reduction_dim.0
ret void
fusion.1.loop_header.dim.0: ; preds = %fusion.1.loop_body.dim.0, %entry
%fusion.1.indvar.dim.0 = load i64, i64* %fusion.1.invar_address.dim.0, align 8
%5 = icmp uge i64 %fusion.1.indvar.dim.0, 4
br i1 %5, label %fusion.1.loop_exit.dim.0, label %fusion.1.loop_body.dim.0
fusion.1.loop_body.dim.0: ; preds = %fusion.1.loop_header.dim.0
%6 = add i64 %fusion.1.indvar.dim.0, 8
%7 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %6
%8 = load double, double* %7, align 8, !invariant.load !14, !noalias !18
%multiply.9 = fmul double %8, %8
%constant.5 = load double, double* bitcast ([8 x i8]* @1 to double*), align 8
%multiply.8 = fmul double %multiply.9, %constant.5
%9 = call double @llvm.sqrt.f64(double %multiply.8)
%10 = getelementptr inbounds [4 x double], [4 x double]* %fusion.1, i64 0, i64 %fusion.1.indvar.dim.0
store double %9, double* %10, align 8, !alias.scope !21, !noalias !22
%invar.inc = add nuw nsw i64 %fusion.1.indvar.dim.0, 1
store i64 %invar.inc, i64* %fusion.1.invar_address.dim.0, align 8
br label %fusion.1.loop_header.dim.0
fusion.1.loop_exit.dim.0: ; preds = %fusion.1.loop_header.dim.0
%11 = getelementptr inbounds i8*, i8** %buffer_table, i64 0
%12 = load i8*, i8** %11, align 8, !invariant.load !14, !dereferenceable !23, !align !16
%Arg_1.2 = bitcast i8* %12 to [500 x [1 x double]]*
%13 = getelementptr inbounds i8*, i8** %buffer_table, i64 10
%14 = load i8*, i8** %13, align 8, !invariant.load !14, !dereferenceable !17, !align !16
%fusion = bitcast i8* %14 to [500 x double]*
store i64 0, i64* %fusion.invar_address.dim.0, align 8
br label %fusion.loop_header.dim.0
fusion.loop_header.dim.0: ; preds = %reduce.1.inner.loop_exit.reduction_dim.1, %fusion.1.loop_exit.dim.0
%fusion.indvar.dim.0 = load i64, i64* %fusion.invar_address.dim.0, align 8
%15 = icmp uge i64 %fusion.indvar.dim.0, 500
br i1 %15, label %fusion.loop_exit.dim.0, label %fusion.loop_body.dim.0
fusion.loop_body.dim.0: ; preds = %fusion.loop_header.dim.0
%constant.2 = load double, double* bitcast ([8 x i8]* @2 to double*), align 8
store double %constant.2, double* %accumulator_0, align 8
store i64 0, i64* %reduce.1.inner.invar_address.reduction_dim.1, align 8
br label %reduce.1.inner.loop_header.reduction_dim.1
reduce.1.inner.loop_header.reduction_dim.1: ; preds = %reduce.1.inner.loop_body.reduction_dim.1, %fusion.loop_body.dim.0
%reduce.1.inner.indvar.reduction_dim.1 = load i64, i64* %reduce.1.inner.invar_address.reduction_dim.1, align 8
%16 = icmp uge i64 %reduce.1.inner.indvar.reduction_dim.1, 4
br i1 %16, label %reduce.1.inner.loop_exit.reduction_dim.1, label %reduce.1.inner.loop_body.reduction_dim.1
reduce.1.inner.loop_body.reduction_dim.1: ; preds = %reduce.1.inner.loop_header.reduction_dim.1
%17 = load double, double* %accumulator_0, align 8
%18 = getelementptr inbounds [500 x [1 x double]], [500 x [1 x double]]* %Arg_1.2, i64 0, i64 %fusion.indvar.dim.0, i64 0
%19 = load double, double* %18, align 8, !invariant.load !14, !noalias !18
%20 = add i64 %reduce.1.inner.indvar.reduction_dim.1, 4
%21 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %20
%22 = load double, double* %21, align 8, !invariant.load !14, !noalias !18
%subtract.1 = fsub double %19, %22
%multiply.6 = fmul double %subtract.1, %subtract.1
%23 = fneg double %multiply.6
%24 = add i64 %reduce.1.inner.indvar.reduction_dim.1, 8
%25 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %24
%26 = load double, double* %25, align 8, !invariant.load !14, !noalias !18
%multiply.5 = fmul double %26, %26
%constant.4 = load double, double* bitcast ([8 x i8]* @3 to double*), align 8
%multiply.4 = fmul double %multiply.5, %constant.4
%divide.3 = fdiv double %23, %multiply.4
%27 = call double @llvm.exp.f64(double %divide.3)
%28 = getelementptr inbounds [4 x double], [4 x double]* %fusion.1, i64 0, i64 %reduce.1.inner.indvar.reduction_dim.1
%29 = load double, double* %28, align 8, !alias.scope !21, !noalias !22
%divide.2 = fdiv double %27, %29
%30 = add i64 %reduce.1.inner.indvar.reduction_dim.1, 0
%31 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %30
%32 = load double, double* %31, align 8, !invariant.load !14, !noalias !18
%multiply.3 = fmul double %divide.2, %32
store double %17, double* %arg_addr, align 8
store double %multiply.3, double* %arg_addr3, align 8
%reduce_function_parameter_0_address_as_i8ptr = bitcast double* %arg_addr to i8*
%33 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses, i64 0
store i8* %reduce_function_parameter_0_address_as_i8ptr, i8** %33, align 8
%reduce_function_parameter_1_address_as_i8ptr = bitcast double* %arg_addr3 to i8*
%34 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses, i64 1
store i8* %reduce_function_parameter_1_address_as_i8ptr, i8** %34, align 8
%35 = bitcast double* %reduce_function_return_value_addr to i8*
call void @region_0.46(i8* %35, i8* %run_options, i8** %reduce_function_parameter_addresses, i8** null, i8* %status, i64* %prof_counters)
%36 = load double, double* %reduce_function_return_value_addr, align 8
store double %36, double* %accumulator_0, align 8
%invar.inc2 = add nuw nsw i64 %reduce.1.inner.indvar.reduction_dim.1, 1
store i64 %invar.inc2, i64* %reduce.1.inner.invar_address.reduction_dim.1, align 8
br label %reduce.1.inner.loop_header.reduction_dim.1
reduce.1.inner.loop_exit.reduction_dim.1: ; preds = %reduce.1.inner.loop_header.reduction_dim.1
%37 = load double, double* %accumulator_0, align 8
%38 = call double @llvm.log.f64(double %37)
%39 = getelementptr inbounds [500 x double], [500 x double]* %fusion, i64 0, i64 %fusion.indvar.dim.0
store double %38, double* %39, align 8, !alias.scope !22, !noalias !24
%invar.inc1 = add nuw nsw i64 %fusion.indvar.dim.0, 1
store i64 %invar.inc1, i64* %fusion.invar_address.dim.0, align 8
br label %fusion.loop_header.dim.0
fusion.loop_exit.dim.0: ; preds = %fusion.loop_header.dim.0
%40 = getelementptr inbounds i8*, i8** %buffer_table, i64 10
%41 = load i8*, i8** %40, align 8, !invariant.load !14, !dereferenceable !17, !align !16
%42 = getelementptr inbounds i8, i8* %41, i64 4000
%reduce-window = bitcast i8* %42 to [16 x double]*
store i64 0, i64* %reduce-window.invar_address.dim.0, align 8
br label %reduce-window.loop_header.dim.0
reduce-window.loop_header.dim.0: ; preds = %reduce-window.loop_exit.window.0, %fusion.loop_exit.dim.0
%reduce-window.indvar.dim.0 = load i64, i64* %reduce-window.invar_address.dim.0, align 8
%43 = icmp uge i64 %reduce-window.indvar.dim.0, 16
br i1 %43, label %reduce-window.loop_exit.dim.0, label %reduce-window.loop_body.dim.0
reduce-window.loop_body.dim.0: ; preds = %reduce-window.loop_header.dim.0
%44 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !27, !noalias !28
store double %44, double* %reduce_window_accum_ptr, align 8
store i64 0, i64* %reduce-window.invar_address.window.0, align 8
br label %reduce-window.loop_header.window.0
reduce-window.loop_header.window.0: ; preds = %in_bounds-after, %reduce-window.loop_body.dim.0
%reduce-window.indvar.window.0 = load i64, i64* %reduce-window.invar_address.window.0, align 8
%45 = icmp uge i64 %reduce-window.indvar.window.0, 32
br i1 %45, label %reduce-window.loop_exit.window.0, label %reduce-window.loop_body.window.0
reduce-window.loop_body.window.0: ; preds = %reduce-window.loop_header.window.0
%46 = mul nsw i64 %reduce-window.indvar.dim.0, 32
%47 = mul nsw i64 %reduce-window.indvar.window.0, 1
%48 = add nsw i64 %46, %47
%49 = sub nsw i64 %48, 6
%50 = srem i64 %49, 1
%51 = icmp eq i64 %50, 0
%52 = and i1 true, %51
%53 = sdiv i64 %49, 1
%54 = icmp ult i64 %53, 500
%55 = and i1 %52, %54
br i1 %55, label %in_bounds-true, label %in_bounds-false
in_bounds-after: ; preds = %in_bounds-false, %in_bounds-true
%invar.inc5 = add nuw nsw i64 %reduce-window.indvar.window.0, 1
store i64 %invar.inc5, i64* %reduce-window.invar_address.window.0, align 8
br label %reduce-window.loop_header.window.0
reduce-window.loop_exit.window.0: ; preds = %reduce-window.loop_header.window.0
%56 = load double, double* %reduce_window_accum_ptr, align 8
%57 = getelementptr inbounds [16 x double], [16 x double]* %reduce-window, i64 0, i64 %reduce-window.indvar.dim.0
store double %56, double* %57, align 8, !alias.scope !30, !noalias !31
%invar.inc4 = add nuw nsw i64 %reduce-window.indvar.dim.0, 1
store i64 %invar.inc4, i64* %reduce-window.invar_address.dim.0, align 8
br label %reduce-window.loop_header.dim.0
reduce-window.loop_exit.dim.0: ; preds = %reduce-window.loop_header.dim.0
%58 = getelementptr inbounds i8*, i8** %buffer_table, i64 2
%59 = load i8*, i8** %58, align 8, !invariant.load !14, !dereferenceable !0, !align !0
%reduce.56 = bitcast i8* %59 to double*
%60 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !27, !noalias !28
store double %60, double* %accumulator_08, align 8
store i64 0, i64* %reduce.56.inner.invar_address.reduction_dim.0, align 8
br label %reduce.56.inner.loop_header.reduction_dim.0
in_bounds-true: ; preds = %reduce-window.loop_body.window.0
%61 = getelementptr inbounds [500 x double], [500 x double]* %fusion, i64 0, i64 %53
%62 = load double, double* %61, align 8, !alias.scope !22, !noalias !24
%63 = load double, double* %reduce_window_accum_ptr, align 8
store double %63, double* %arg_addr6, align 8
store double %62, double* %arg_addr7, align 8
%reducer_function_parameter_0_address_as_i8ptr = bitcast double* %arg_addr6 to i8*
%64 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses, i64 0
store i8* %reducer_function_parameter_0_address_as_i8ptr, i8** %64, align 8
%reducer_function_parameter_1_address_as_i8ptr = bitcast double* %arg_addr7 to i8*
%65 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses, i64 1
store i8* %reducer_function_parameter_1_address_as_i8ptr, i8** %65, align 8
%66 = bitcast double* %reducer_function_return_value_addr to i8*
call void @region_1.52(i8* %66, i8* %run_options, i8** %reducer_function_parameter_addresses, i8** null, i8* %status, i64* %prof_counters)
%67 = load double, double* %reducer_function_return_value_addr, align 8
store double %67, double* %reduce_window_accum_ptr, align 8
br label %in_bounds-after
in_bounds-false: ; preds = %reduce-window.loop_body.window.0
br label %in_bounds-after
reduce.56.inner.loop_header.reduction_dim.0: ; preds = %reduce.56.inner.loop_body.reduction_dim.0, %reduce-window.loop_exit.dim.0
%reduce.56.inner.indvar.reduction_dim.0 = load i64, i64* %reduce.56.inner.invar_address.reduction_dim.0, align 8
%68 = icmp uge i64 %reduce.56.inner.indvar.reduction_dim.0, 16
br i1 %68, label %reduce.56.inner.loop_exit.reduction_dim.0, label %reduce.56.inner.loop_body.reduction_dim.0
reduce.56.inner.loop_body.reduction_dim.0: ; preds = %reduce.56.inner.loop_header.reduction_dim.0
%69 = load double, double* %accumulator_08, align 8
%70 = getelementptr inbounds [16 x double], [16 x double]* %reduce-window, i64 0, i64 %reduce.56.inner.indvar.reduction_dim.0
%71 = load double, double* %70, align 8, !alias.scope !30, !noalias !31
store double %69, double* %arg_addr10, align 8
store double %71, double* %arg_addr11, align 8
%reduce_function_parameter_0_address_as_i8ptr14 = bitcast double* %arg_addr10 to i8*
%72 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses13, i64 0
store i8* %reduce_function_parameter_0_address_as_i8ptr14, i8** %72, align 8
%reduce_function_parameter_1_address_as_i8ptr15 = bitcast double* %arg_addr11 to i8*
%73 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses13, i64 1
store i8* %reduce_function_parameter_1_address_as_i8ptr15, i8** %73, align 8
%74 = bitcast double* %reduce_function_return_value_addr12 to i8*
call void @region_1.52(i8* %74, i8* %run_options, i8** %reduce_function_parameter_addresses13, i8** null, i8* %status, i64* %prof_counters)
%75 = load double, double* %reduce_function_return_value_addr12, align 8
store double %75, double* %accumulator_08, align 8
%invar.inc9 = add nuw nsw i64 %reduce.56.inner.indvar.reduction_dim.0, 1
store i64 %invar.inc9, i64* %reduce.56.inner.invar_address.reduction_dim.0, align 8
br label %reduce.56.inner.loop_header.reduction_dim.0
reduce.56.inner.loop_exit.reduction_dim.0: ; preds = %reduce.56.inner.loop_header.reduction_dim.0
%76 = load double, double* %accumulator_08, align 8
store double %76, double* %reduce.56, align 8, !alias.scope !32, !noalias !33
br label %return
}
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.sqrt.f64(double) #1
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.exp.f64(double) #1
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.log.f64(double) #1
attributes #0 = { uwtable "denormal-fp-math"="preserve-sign" "no-frame-pointer-elim"="false" }
attributes #1 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
!0 = !{i64 8}
!1 = !{!2}
!2 = !{!"buffer: {index:5, offset:0, size:8}", !3}
!3 = !{!"XLA global AA domain"}
!4 = !{!5}
!5 = !{!"buffer: {index:7, offset:0, size:8}", !3}
!6 = !{!7}
!7 = !{!"buffer: {index:6, offset:0, size:8}", !3}
!8 = !{!9}
!9 = !{!"buffer: {index:8, offset:0, size:8}", !3}
!10 = !{!11}
!11 = !{!"buffer: {index:4, offset:0, size:8}", !3}
!12 = !{!13}
!13 = !{!"buffer: {index:9, offset:0, size:8}", !3}
!14 = !{}
!15 = !{i64 96}
!16 = !{i64 16}
!17 = !{i64 4128}
!18 = !{!19, !20}
!19 = !{!"buffer: {index:10, offset:0, size:4000}", !3}
!20 = !{!"buffer: {index:10, offset:4000, size:32}", !3}
!21 = !{!20}
!22 = !{!19}
!23 = !{i64 4000}
!24 = !{!25, !20, !26}
!25 = !{!"buffer: {index:3, offset:0, size:8}", !3}
!26 = !{!"buffer: {index:10, offset:4000, size:128}", !3}
!27 = !{!25}
!28 = !{!29, !19, !26}
!29 = !{!"buffer: {index:2, offset:0, size:8}", !3}
!30 = !{!26}
!31 = !{!29, !25, !19}
!32 = !{!29}
!33 = !{!25, !26}
; ModuleID = '__compute_module'
source_filename = "__compute_module"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@0 = private unnamed_addr constant [8 x i8] zeroinitializer, align 8
@1 = private unnamed_addr constant [8 x i8] c"\18-DT\FB!\19@"
@2 = private unnamed_addr constant [8 x i8] zeroinitializer
@3 = private unnamed_addr constant [8 x i8] c"\00\00\00\00\00\00\00@"
; Function Attrs: uwtable
define internal void @region_0.46(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.49 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.47 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.48 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.47, align 8, !alias.scope !1, !noalias !4
%5 = load double, double* %Arg_1.48, align 8, !alias.scope !6, !noalias !4
%add.491 = fadd reassoc double %4, %5
store double %add.491, double* %add.49, align 8, !alias.scope !4
%load_ret_value = load double, double* %add.49, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define internal void @region_1.52(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.55 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.53 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.54 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.53, align 8, !alias.scope !8, !noalias !10
%5 = load double, double* %Arg_1.54, align 8, !alias.scope !12, !noalias !10
%add.551 = fadd reassoc double %4, %5
store double %add.551, double* %add.55, align 8, !alias.scope !10
%load_ret_value = load double, double* %add.55, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define void @main.57(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%reduce_function_parameter_addresses13 = alloca i8*, i32 2, align 8
%reduce_function_return_value_addr12 = alloca double, align 8
%arg_addr11 = alloca double, align 8
%arg_addr10 = alloca double, align 8
%reduce.56.inner.invar_address.reduction_dim.0 = alloca i64, align 8
%accumulator_08 = alloca double, align 8
%reducer_function_parameter_addresses = alloca i8*, i32 2, align 8
%reducer_function_return_value_addr = alloca double, align 8
%arg_addr7 = alloca double, align 8
%arg_addr6 = alloca double, align 8
%reduce-window.invar_address.window.0 = alloca i64, align 8
%reduce_window_accum_ptr = alloca double, align 8
%reduce-window.invar_address.dim.0 = alloca i64, align 8
%reduce_function_parameter_addresses = alloca i8*, i32 2, align 8
%reduce_function_return_value_addr = alloca double, align 8
%arg_addr3 = alloca double, align 8
%arg_addr = alloca double, align 8
%reduce.1.inner.invar_address.reduction_dim.1 = alloca i64, align 8
%accumulator_0 = alloca double, align 8
%fusion.invar_address.dim.0 = alloca i64, align 8
%fusion.1.invar_address.dim.0 = alloca i64, align 8
%0 = getelementptr inbounds i8*, i8** %buffer_table, i64 1
%1 = load i8*, i8** %0, align 8, !invariant.load !14, !dereferenceable !15, !align !16
%Arg_0.1 = bitcast i8* %1 to [12 x double]*
%2 = getelementptr inbounds i8*, i8** %buffer_table, i64 10
%3 = load i8*, i8** %2, align 8, !invariant.load !14, !dereferenceable !17, !align !16
%4 = getelementptr inbounds i8, i8* %3, i64 4000
%fusion.1 = bitcast i8* %4 to [4 x double]*
store i64 0, i64* %fusion.1.invar_address.dim.0, align 8
br label %fusion.1.loop_header.dim.0
return: ; preds = %reduce.56.inner.loop_exit.reduction_dim.0
ret void
fusion.1.loop_header.dim.0: ; preds = %fusion.1.loop_body.dim.0, %entry
%fusion.1.indvar.dim.0 = load i64, i64* %fusion.1.invar_address.dim.0, align 8
%5 = icmp uge i64 %fusion.1.indvar.dim.0, 4
br i1 %5, label %fusion.1.loop_exit.dim.0, label %fusion.1.loop_body.dim.0
fusion.1.loop_body.dim.0: ; preds = %fusion.1.loop_header.dim.0
%6 = add i64 %fusion.1.indvar.dim.0, 8
%7 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %6
%8 = load double, double* %7, align 8, !invariant.load !14, !noalias !18
%multiply.9 = fmul double %8, %8
%constant.5 = load double, double* bitcast ([8 x i8]* @1 to double*), align 8
%multiply.8 = fmul double %multiply.9, %constant.5
%9 = call double @llvm.sqrt.f64(double %multiply.8)
%10 = getelementptr inbounds [4 x double], [4 x double]* %fusion.1, i64 0, i64 %fusion.1.indvar.dim.0
store double %9, double* %10, align 8, !alias.scope !21, !noalias !22
%invar.inc = add nuw nsw i64 %fusion.1.indvar.dim.0, 1
store i64 %invar.inc, i64* %fusion.1.invar_address.dim.0, align 8
br label %fusion.1.loop_header.dim.0
fusion.1.loop_exit.dim.0: ; preds = %fusion.1.loop_header.dim.0
%11 = getelementptr inbounds i8*, i8** %buffer_table, i64 0
%12 = load i8*, i8** %11, align 8, !invariant.load !14, !dereferenceable !23, !align !16
%Arg_1.2 = bitcast i8* %12 to [500 x [1 x double]]*
%13 = getelementptr inbounds i8*, i8** %buffer_table, i64 10
%14 = load i8*, i8** %13, align 8, !invariant.load !14, !dereferenceable !17, !align !16
%fusion = bitcast i8* %14 to [500 x double]*
store i64 0, i64* %fusion.invar_address.dim.0, align 8
br label %fusion.loop_header.dim.0
fusion.loop_header.dim.0: ; preds = %reduce.1.inner.loop_exit.reduction_dim.1, %fusion.1.loop_exit.dim.0
%fusion.indvar.dim.0 = load i64, i64* %fusion.invar_address.dim.0, align 8
%15 = icmp uge i64 %fusion.indvar.dim.0, 500
br i1 %15, label %fusion.loop_exit.dim.0, label %fusion.loop_body.dim.0
fusion.loop_body.dim.0: ; preds = %fusion.loop_header.dim.0
%constant.2 = load double, double* bitcast ([8 x i8]* @2 to double*), align 8
store double %constant.2, double* %accumulator_0, align 8
store i64 0, i64* %reduce.1.inner.invar_address.reduction_dim.1, align 8
br label %reduce.1.inner.loop_header.reduction_dim.1
reduce.1.inner.loop_header.reduction_dim.1: ; preds = %reduce.1.inner.loop_body.reduction_dim.1, %fusion.loop_body.dim.0
%reduce.1.inner.indvar.reduction_dim.1 = load i64, i64* %reduce.1.inner.invar_address.reduction_dim.1, align 8
%16 = icmp uge i64 %reduce.1.inner.indvar.reduction_dim.1, 4
br i1 %16, label %reduce.1.inner.loop_exit.reduction_dim.1, label %reduce.1.inner.loop_body.reduction_dim.1
reduce.1.inner.loop_body.reduction_dim.1: ; preds = %reduce.1.inner.loop_header.reduction_dim.1
%17 = load double, double* %accumulator_0, align 8
%18 = getelementptr inbounds [500 x [1 x double]], [500 x [1 x double]]* %Arg_1.2, i64 0, i64 %fusion.indvar.dim.0, i64 0
%19 = load double, double* %18, align 8, !invariant.load !14, !noalias !18
%20 = add i64 %reduce.1.inner.indvar.reduction_dim.1, 4
%21 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %20
%22 = load double, double* %21, align 8, !invariant.load !14, !noalias !18
%subtract.1 = fsub double %19, %22
%multiply.6 = fmul double %subtract.1, %subtract.1
%23 = fneg double %multiply.6
%24 = add i64 %reduce.1.inner.indvar.reduction_dim.1, 8
%25 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %24
%26 = load double, double* %25, align 8, !invariant.load !14, !noalias !18
%multiply.5 = fmul double %26, %26
%constant.4 = load double, double* bitcast ([8 x i8]* @3 to double*), align 8
%multiply.4 = fmul double %multiply.5, %constant.4
%divide.3 = fdiv double %23, %multiply.4
%27 = call double @llvm.exp.f64(double %divide.3)
%28 = getelementptr inbounds [4 x double], [4 x double]* %fusion.1, i64 0, i64 %reduce.1.inner.indvar.reduction_dim.1
%29 = load double, double* %28, align 8, !alias.scope !21, !noalias !22
%divide.2 = fdiv double %27, %29
%30 = add i64 %reduce.1.inner.indvar.reduction_dim.1, 0
%31 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %30
%32 = load double, double* %31, align 8, !invariant.load !14, !noalias !18
%multiply.3 = fmul double %divide.2, %32
store double %17, double* %arg_addr, align 8
store double %multiply.3, double* %arg_addr3, align 8
%reduce_function_parameter_0_address_as_i8ptr = bitcast double* %arg_addr to i8*
%33 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses, i64 0
store i8* %reduce_function_parameter_0_address_as_i8ptr, i8** %33, align 8
%reduce_function_parameter_1_address_as_i8ptr = bitcast double* %arg_addr3 to i8*
%34 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses, i64 1
store i8* %reduce_function_parameter_1_address_as_i8ptr, i8** %34, align 8
%35 = bitcast double* %reduce_function_return_value_addr to i8*
call void @region_0.46(i8* %35, i8* %run_options, i8** %reduce_function_parameter_addresses, i8** null, i8* %status, i64* %prof_counters)
%36 = load double, double* %reduce_function_return_value_addr, align 8
store double %36, double* %accumulator_0, align 8
%invar.inc2 = add nuw nsw i64 %reduce.1.inner.indvar.reduction_dim.1, 1
store i64 %invar.inc2, i64* %reduce.1.inner.invar_address.reduction_dim.1, align 8
br label %reduce.1.inner.loop_header.reduction_dim.1
reduce.1.inner.loop_exit.reduction_dim.1: ; preds = %reduce.1.inner.loop_header.reduction_dim.1
%37 = load double, double* %accumulator_0, align 8
%38 = call double @llvm.log.f64(double %37)
%39 = getelementptr inbounds [500 x double], [500 x double]* %fusion, i64 0, i64 %fusion.indvar.dim.0
store double %38, double* %39, align 8, !alias.scope !22, !noalias !24
%invar.inc1 = add nuw nsw i64 %fusion.indvar.dim.0, 1
store i64 %invar.inc1, i64* %fusion.invar_address.dim.0, align 8
br label %fusion.loop_header.dim.0
fusion.loop_exit.dim.0: ; preds = %fusion.loop_header.dim.0
%40 = getelementptr inbounds i8*, i8** %buffer_table, i64 10
%41 = load i8*, i8** %40, align 8, !invariant.load !14, !dereferenceable !17, !align !16
%42 = getelementptr inbounds i8, i8* %41, i64 4000
%reduce-window = bitcast i8* %42 to [16 x double]*
store i64 0, i64* %reduce-window.invar_address.dim.0, align 8
br label %reduce-window.loop_header.dim.0
reduce-window.loop_header.dim.0: ; preds = %reduce-window.loop_exit.window.0, %fusion.loop_exit.dim.0
%reduce-window.indvar.dim.0 = load i64, i64* %reduce-window.invar_address.dim.0, align 8
%43 = icmp uge i64 %reduce-window.indvar.dim.0, 16
br i1 %43, label %reduce-window.loop_exit.dim.0, label %reduce-window.loop_body.dim.0
reduce-window.loop_body.dim.0: ; preds = %reduce-window.loop_header.dim.0
%44 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !27, !noalias !28
store double %44, double* %reduce_window_accum_ptr, align 8
store i64 0, i64* %reduce-window.invar_address.window.0, align 8
br label %reduce-window.loop_header.window.0
reduce-window.loop_header.window.0: ; preds = %in_bounds-after, %reduce-window.loop_body.dim.0
%reduce-window.indvar.window.0 = load i64, i64* %reduce-window.invar_address.window.0, align 8
%45 = icmp uge i64 %reduce-window.indvar.window.0, 32
br i1 %45, label %reduce-window.loop_exit.window.0, label %reduce-window.loop_body.window.0
reduce-window.loop_body.window.0: ; preds = %reduce-window.loop_header.window.0
%46 = mul nsw i64 %reduce-window.indvar.dim.0, 32
%47 = mul nsw i64 %reduce-window.indvar.window.0, 1
%48 = add nsw i64 %46, %47
%49 = sub nsw i64 %48, 6
%50 = srem i64 %49, 1
%51 = icmp eq i64 %50, 0
%52 = and i1 true, %51
%53 = sdiv i64 %49, 1
%54 = icmp ult i64 %53, 500
%55 = and i1 %52, %54
br i1 %55, label %in_bounds-true, label %in_bounds-false
in_bounds-after: ; preds = %in_bounds-false, %in_bounds-true
%invar.inc5 = add nuw nsw i64 %reduce-window.indvar.window.0, 1
store i64 %invar.inc5, i64* %reduce-window.invar_address.window.0, align 8
br label %reduce-window.loop_header.window.0
reduce-window.loop_exit.window.0: ; preds = %reduce-window.loop_header.window.0
%56 = load double, double* %reduce_window_accum_ptr, align 8
%57 = getelementptr inbounds [16 x double], [16 x double]* %reduce-window, i64 0, i64 %reduce-window.indvar.dim.0
store double %56, double* %57, align 8, !alias.scope !30, !noalias !31
%invar.inc4 = add nuw nsw i64 %reduce-window.indvar.dim.0, 1
store i64 %invar.inc4, i64* %reduce-window.invar_address.dim.0, align 8
br label %reduce-window.loop_header.dim.0
reduce-window.loop_exit.dim.0: ; preds = %reduce-window.loop_header.dim.0
%58 = getelementptr inbounds i8*, i8** %buffer_table, i64 2
%59 = load i8*, i8** %58, align 8, !invariant.load !14, !dereferenceable !0, !align !0
%reduce.56 = bitcast i8* %59 to double*
%60 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !27, !noalias !28
store double %60, double* %accumulator_08, align 8
store i64 0, i64* %reduce.56.inner.invar_address.reduction_dim.0, align 8
br label %reduce.56.inner.loop_header.reduction_dim.0
in_bounds-true: ; preds = %reduce-window.loop_body.window.0
%61 = getelementptr inbounds [500 x double], [500 x double]* %fusion, i64 0, i64 %53
%62 = load double, double* %61, align 8, !alias.scope !22, !noalias !24
%63 = load double, double* %reduce_window_accum_ptr, align 8
store double %63, double* %arg_addr6, align 8
store double %62, double* %arg_addr7, align 8
%reducer_function_parameter_0_address_as_i8ptr = bitcast double* %arg_addr6 to i8*
%64 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses, i64 0
store i8* %reducer_function_parameter_0_address_as_i8ptr, i8** %64, align 8
%reducer_function_parameter_1_address_as_i8ptr = bitcast double* %arg_addr7 to i8*
%65 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses, i64 1
store i8* %reducer_function_parameter_1_address_as_i8ptr, i8** %65, align 8
%66 = bitcast double* %reducer_function_return_value_addr to i8*
call void @region_1.52(i8* %66, i8* %run_options, i8** %reducer_function_parameter_addresses, i8** null, i8* %status, i64* %prof_counters)
%67 = load double, double* %reducer_function_return_value_addr, align 8
store double %67, double* %reduce_window_accum_ptr, align 8
br label %in_bounds-after
in_bounds-false: ; preds = %reduce-window.loop_body.window.0
br label %in_bounds-after
reduce.56.inner.loop_header.reduction_dim.0: ; preds = %reduce.56.inner.loop_body.reduction_dim.0, %reduce-window.loop_exit.dim.0
%reduce.56.inner.indvar.reduction_dim.0 = load i64, i64* %reduce.56.inner.invar_address.reduction_dim.0, align 8
%68 = icmp uge i64 %reduce.56.inner.indvar.reduction_dim.0, 16
br i1 %68, label %reduce.56.inner.loop_exit.reduction_dim.0, label %reduce.56.inner.loop_body.reduction_dim.0
reduce.56.inner.loop_body.reduction_dim.0: ; preds = %reduce.56.inner.loop_header.reduction_dim.0
%69 = load double, double* %accumulator_08, align 8
%70 = getelementptr inbounds [16 x double], [16 x double]* %reduce-window, i64 0, i64 %reduce.56.inner.indvar.reduction_dim.0
%71 = load double, double* %70, align 8, !alias.scope !30, !noalias !31
store double %69, double* %arg_addr10, align 8
store double %71, double* %arg_addr11, align 8
%reduce_function_parameter_0_address_as_i8ptr14 = bitcast double* %arg_addr10 to i8*
%72 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses13, i64 0
store i8* %reduce_function_parameter_0_address_as_i8ptr14, i8** %72, align 8
%reduce_function_parameter_1_address_as_i8ptr15 = bitcast double* %arg_addr11 to i8*
%73 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses13, i64 1
store i8* %reduce_function_parameter_1_address_as_i8ptr15, i8** %73, align 8
%74 = bitcast double* %reduce_function_return_value_addr12 to i8*
call void @region_1.52(i8* %74, i8* %run_options, i8** %reduce_function_parameter_addresses13, i8** null, i8* %status, i64* %prof_counters)
%75 = load double, double* %reduce_function_return_value_addr12, align 8
store double %75, double* %accumulator_08, align 8
%invar.inc9 = add nuw nsw i64 %reduce.56.inner.indvar.reduction_dim.0, 1
store i64 %invar.inc9, i64* %reduce.56.inner.invar_address.reduction_dim.0, align 8
br label %reduce.56.inner.loop_header.reduction_dim.0
reduce.56.inner.loop_exit.reduction_dim.0: ; preds = %reduce.56.inner.loop_header.reduction_dim.0
%76 = load double, double* %accumulator_08, align 8
store double %76, double* %reduce.56, align 8, !alias.scope !32, !noalias !33
br label %return
}
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.sqrt.f64(double) #1
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.exp.f64(double) #1
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.log.f64(double) #1
attributes #0 = { uwtable "denormal-fp-math"="preserve-sign" "no-frame-pointer-elim"="false" }
attributes #1 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
!0 = !{i64 8}
!1 = !{!2}
!2 = !{!"buffer: {index:5, offset:0, size:8}", !3}
!3 = !{!"XLA global AA domain"}
!4 = !{!5}
!5 = !{!"buffer: {index:7, offset:0, size:8}", !3}
!6 = !{!7}
!7 = !{!"buffer: {index:6, offset:0, size:8}", !3}
!8 = !{!9}
!9 = !{!"buffer: {index:8, offset:0, size:8}", !3}
!10 = !{!11}
!11 = !{!"buffer: {index:4, offset:0, size:8}", !3}
!12 = !{!13}
!13 = !{!"buffer: {index:9, offset:0, size:8}", !3}
!14 = !{}
!15 = !{i64 96}
!16 = !{i64 16}
!17 = !{i64 4128}
!18 = !{!19, !20}
!19 = !{!"buffer: {index:10, offset:0, size:4000}", !3}
!20 = !{!"buffer: {index:10, offset:4000, size:32}", !3}
!21 = !{!20}
!22 = !{!19}
!23 = !{i64 4000}
!24 = !{!25, !20, !26}
!25 = !{!"buffer: {index:3, offset:0, size:8}", !3}
!26 = !{!"buffer: {index:10, offset:4000, size:128}", !3}
!27 = !{!25}
!28 = !{!29, !19, !26}
!29 = !{!"buffer: {index:2, offset:0, size:8}", !3}
!30 = !{!26}
!31 = !{!29, !25, !19}
!32 = !{!29}
!33 = !{!25, !26}
; ModuleID = '__compute_module'
source_filename = "__compute_module"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
; Function Attrs: nofree nosync nounwind uwtable
define void @main.57(i8* nocapture readnone %retval, i8* noalias nocapture readnone %run_options, i8** noalias nocapture readnone %params, i8** noalias nocapture readonly %buffer_table, i8* noalias nocapture readnone %status, i64* noalias nocapture readnone %prof_counters) local_unnamed_addr #0 {
entry:
%0 = getelementptr inbounds i8*, i8** %buffer_table, i64 1
%1 = bitcast i8** %0 to [12 x double]**
%2 = load [12 x double]*, [12 x double]** %1, align 8, !invariant.load !0, !dereferenceable !1, !align !2
%3 = getelementptr inbounds i8*, i8** %buffer_table, i64 10
%4 = load i8*, i8** %3, align 8, !invariant.load !0, !dereferenceable !3, !align !2
%5 = getelementptr inbounds i8, i8* %4, i64 4000
%6 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%7 = bitcast double* %6 to <4 x double>*
%wide.load = load <4 x double>, <4 x double>* %7, align 16, !invariant.load !0, !noalias !4
%8 = fmul <4 x double> %wide.load, %wide.load
%9 = fmul <4 x double> %8, <double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18>
%10 = call <4 x double> @llvm.sqrt.v4f64(<4 x double> %9)
%11 = bitcast i8* %5 to <4 x double>*
store <4 x double> %10, <4 x double>* %11, align 16, !alias.scope !8, !noalias !9
%12 = bitcast i8** %buffer_table to [500 x [1 x double]]**
%13 = load [500 x [1 x double]]*, [500 x [1 x double]]** %12, align 8, !invariant.load !0, !dereferenceable !10, !align !2
%fusion = bitcast i8* %4 to [500 x double]*
%14 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%15 = bitcast double* %14 to <4 x double>*
%wide.load47 = load <4 x double>, <4 x double>* %15, align 16, !invariant.load !0, !noalias !4
%16 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%17 = bitcast double* %16 to <4 x double>*
%wide.load48 = load <4 x double>, <4 x double>* %17, align 16, !invariant.load !0, !noalias !4
%18 = fmul <4 x double> %wide.load48, %wide.load48
%19 = fmul <4 x double> %18, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%20 = bitcast i8* %5 to <4 x double>*
%wide.load49 = load <4 x double>, <4 x double>* %20, align 16, !alias.scope !8, !noalias !9
%21 = bitcast [12 x double]* %2 to <4 x double>*
%wide.load50 = load <4 x double>, <4 x double>* %21, align 16, !invariant.load !0, !noalias !4
br label %vector.ph42
vector.ph42: ; preds = %vector.ph42, %entry
%fusion.invar_address.dim.0.033 = phi i64 [ 0, %entry ], [ %invar.inc1, %vector.ph42 ]
%22 = getelementptr inbounds [500 x [1 x double]], [500 x [1 x double]]* %13, i64 0, i64 %fusion.invar_address.dim.0.033, i64 0
%23 = load double, double* %22, align 8, !invariant.load !0, !noalias !4
%broadcast.splatinsert = insertelement <4 x double> poison, double %23, i64 0
%broadcast.splat = shufflevector <4 x double> %broadcast.splatinsert, <4 x double> poison, <4 x i32> zeroinitializer
%24 = fsub <4 x double> %broadcast.splat, %wide.load47
%25 = fneg <4 x double> %24
%26 = fmul <4 x double> %24, %25
%27 = fdiv <4 x double> %26, %19
%28 = call <4 x double> @llvm.exp.v4f64(<4 x double> %27)
%29 = fdiv <4 x double> %28, %wide.load49
%30 = fmul <4 x double> %wide.load50, %29
%31 = fadd reassoc <4 x double> %30, <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%32 = call reassoc double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %31)
%33 = tail call double @llvm.log.f64(double %32)
%34 = getelementptr inbounds [500 x double], [500 x double]* %fusion, i64 0, i64 %fusion.invar_address.dim.0.033
store double %33, double* %34, align 8, !alias.scope !9, !noalias !11
%invar.inc1 = add nuw nsw i64 %fusion.invar_address.dim.0.033, 1
%exitcond38 = icmp eq i64 %invar.inc1, 500
br i1 %exitcond38, label %fusion.loop_exit.dim.0, label %vector.ph42
fusion.loop_exit.dim.0: ; preds = %vector.ph42
%reduce-window = bitcast i8* %5 to [16 x double]*
br label %vector.ph54
vector.ph54: ; preds = %vector.ph54, %fusion.loop_exit.dim.0
%reduce-window.invar_address.dim.0.030 = phi i64 [ 0, %fusion.loop_exit.dim.0 ], [ %invar.inc4, %vector.ph54 ]
%35 = shl nsw i64 %reduce-window.invar_address.dim.0.030, 5
%36 = add nsw i64 %35, -6
%broadcast.splatinsert60 = insertelement <4 x i64> poison, i64 %36, i64 0
%broadcast.splat61 = shufflevector <4 x i64> %broadcast.splatinsert60, <4 x i64> poison, <4 x i32> zeroinitializer
%37 = add nuw nsw <4 x i64> %broadcast.splat61, <i64 0, i64 1, i64 2, i64 3>
%38 = icmp ult <4 x i64> %37, <i64 500, i64 500, i64 500, i64 500>
%39 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %36
%40 = bitcast double* %39 to <4 x double>*
%wide.masked.load = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %40, i32 8, <4 x i1> %38, <4 x double> poison), !alias.scope !9, !noalias !11
%wide.masked.load.op = fadd reassoc <4 x double> %wide.masked.load, <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi = select <4 x i1> %38, <4 x double> %wide.masked.load.op, <4 x double> <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%41 = add <4 x i64> %broadcast.splat61, <i64 4, i64 5, i64 6, i64 7>
%42 = icmp ult <4 x i64> %41, <i64 500, i64 500, i64 500, i64 500>
%43 = extractelement <4 x i64> %41, i64 0
%44 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %43
%45 = bitcast double* %44 to <4 x double>*
%wide.masked.load.1 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %45, i32 8, <4 x i1> %42, <4 x double> poison), !alias.scope !9, !noalias !11
%46 = select <4 x i1> %42, <4 x double> %wide.masked.load.1, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.1 = fadd reassoc <4 x double> %predphi, %46
%47 = add <4 x i64> %broadcast.splat61, <i64 8, i64 9, i64 10, i64 11>
%48 = icmp ult <4 x i64> %47, <i64 500, i64 500, i64 500, i64 500>
%49 = extractelement <4 x i64> %47, i64 0
%50 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %49
%51 = bitcast double* %50 to <4 x double>*
%wide.masked.load.2 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %51, i32 8, <4 x i1> %48, <4 x double> poison), !alias.scope !9, !noalias !11
%52 = select <4 x i1> %48, <4 x double> %wide.masked.load.2, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.2 = fadd reassoc <4 x double> %predphi.1, %52
%53 = add <4 x i64> %broadcast.splat61, <i64 12, i64 13, i64 14, i64 15>
%54 = icmp ult <4 x i64> %53, <i64 500, i64 500, i64 500, i64 500>
%55 = extractelement <4 x i64> %53, i64 0
%56 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %55
%57 = bitcast double* %56 to <4 x double>*
%wide.masked.load.3 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %57, i32 8, <4 x i1> %54, <4 x double> poison), !alias.scope !9, !noalias !11
%58 = select <4 x i1> %54, <4 x double> %wide.masked.load.3, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.3 = fadd reassoc <4 x double> %predphi.2, %58
%59 = add <4 x i64> %broadcast.splat61, <i64 16, i64 17, i64 18, i64 19>
%60 = icmp ult <4 x i64> %59, <i64 500, i64 500, i64 500, i64 500>
%61 = extractelement <4 x i64> %59, i64 0
%62 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %61
%63 = bitcast double* %62 to <4 x double>*
%wide.masked.load.4 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %63, i32 8, <4 x i1> %60, <4 x double> poison), !alias.scope !9, !noalias !11
%64 = select <4 x i1> %60, <4 x double> %wide.masked.load.4, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.4 = fadd reassoc <4 x double> %predphi.3, %64
%65 = add <4 x i64> %broadcast.splat61, <i64 20, i64 21, i64 22, i64 23>
%66 = icmp ult <4 x i64> %65, <i64 500, i64 500, i64 500, i64 500>
%67 = extractelement <4 x i64> %65, i64 0
%68 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %67
%69 = bitcast double* %68 to <4 x double>*
%wide.masked.load.5 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %69, i32 8, <4 x i1> %66, <4 x double> poison), !alias.scope !9, !noalias !11
%70 = select <4 x i1> %66, <4 x double> %wide.masked.load.5, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.5 = fadd reassoc <4 x double> %predphi.4, %70
%71 = add <4 x i64> %broadcast.splat61, <i64 24, i64 25, i64 26, i64 27>
%72 = icmp ult <4 x i64> %71, <i64 500, i64 500, i64 500, i64 500>
%73 = extractelement <4 x i64> %71, i64 0
%74 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %73
%75 = bitcast double* %74 to <4 x double>*
%wide.masked.load.6 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %75, i32 8, <4 x i1> %72, <4 x double> poison), !alias.scope !9, !noalias !11
%76 = select <4 x i1> %72, <4 x double> %wide.masked.load.6, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.6 = fadd reassoc <4 x double> %predphi.5, %76
%77 = add <4 x i64> %broadcast.splat61, <i64 28, i64 29, i64 30, i64 31>
%78 = icmp ult <4 x i64> %77, <i64 500, i64 500, i64 500, i64 500>
%79 = extractelement <4 x i64> %77, i64 0
%80 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %79
%81 = bitcast double* %80 to <4 x double>*
%wide.masked.load.7 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %81, i32 8, <4 x i1> %78, <4 x double> poison), !alias.scope !9, !noalias !11
%82 = select <4 x i1> %78, <4 x double> %wide.masked.load.7, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.7 = fadd reassoc <4 x double> %predphi.6, %82
%83 = call reassoc double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %predphi.7)
%84 = getelementptr inbounds [16 x double], [16 x double]* %reduce-window, i64 0, i64 %reduce-window.invar_address.dim.0.030
store double %83, double* %84, align 8, !alias.scope !14, !noalias !15
%invar.inc4 = add nuw nsw i64 %reduce-window.invar_address.dim.0.030, 1
%exitcond36 = icmp eq i64 %invar.inc4, 16
br i1 %exitcond36, label %vector.body69, label %vector.ph54
vector.body69: ; preds = %vector.ph54
%85 = getelementptr inbounds i8*, i8** %buffer_table, i64 2
%86 = bitcast i8** %85 to double**
%87 = load double*, double** %86, align 8, !invariant.load !0, !dereferenceable !17, !align !17
%88 = bitcast i8* %5 to <4 x double>*
%wide.load72 = load <4 x double>, <4 x double>* %88, align 16, !alias.scope !14, !noalias !15
%89 = fadd reassoc <4 x double> %wide.load72, <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%90 = getelementptr inbounds i8, i8* %4, i64 4032
%91 = bitcast i8* %90 to <4 x double>*
%wide.load72.1 = load <4 x double>, <4 x double>* %91, align 16, !alias.scope !14, !noalias !15
%92 = fadd reassoc <4 x double> %89, %wide.load72.1
%93 = getelementptr inbounds i8, i8* %4, i64 4064
%94 = bitcast i8* %93 to <4 x double>*
%wide.load72.2 = load <4 x double>, <4 x double>* %94, align 16, !alias.scope !14, !noalias !15
%95 = fadd reassoc <4 x double> %92, %wide.load72.2
%96 = getelementptr inbounds i8, i8* %4, i64 4096
%97 = bitcast i8* %96 to <4 x double>*
%wide.load72.3 = load <4 x double>, <4 x double>* %97, align 16, !alias.scope !14, !noalias !15
%98 = fadd reassoc <4 x double> %95, %wide.load72.3
%99 = call reassoc double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %98)
store double %99, double* %87, align 8, !alias.scope !18, !noalias !19
ret void
}
; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.log.f64(double) #1
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare <4 x double> @llvm.sqrt.v4f64(<4 x double>) #2
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare <4 x double> @llvm.exp.v4f64(<4 x double>) #2
; Function Attrs: nocallback nofree nosync nounwind readnone willreturn
declare double @llvm.vector.reduce.fadd.v4f64(double, <4 x double>) #3
; Function Attrs: argmemonly nocallback nofree nosync nounwind readonly willreturn
declare <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>*, i32 immarg, <4 x i1>, <4 x double>) #4
attributes #0 = { nofree nosync nounwind uwtable "denormal-fp-math"="preserve-sign" "no-frame-pointer-elim"="false" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn }
attributes #2 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
attributes #3 = { nocallback nofree nosync nounwind readnone willreturn }
attributes #4 = { argmemonly nocallback nofree nosync nounwind readonly willreturn }
!0 = !{}
!1 = !{i64 96}
!2 = !{i64 16}
!3 = !{i64 4128}
!4 = !{!5, !7}
!5 = !{!"buffer: {index:10, offset:0, size:4000}", !6}
!6 = !{!"XLA global AA domain"}
!7 = !{!"buffer: {index:10, offset:4000, size:32}", !6}
!8 = !{!7}
!9 = !{!5}
!10 = !{i64 4000}
!11 = !{!12, !7, !13}
!12 = !{!"buffer: {index:3, offset:0, size:8}", !6}
!13 = !{!"buffer: {index:10, offset:4000, size:128}", !6}
!14 = !{!13}
!15 = !{!16, !12, !5}
!16 = !{!"buffer: {index:2, offset:0, size:8}", !6}
!17 = !{i64 8}
!18 = !{!16}
!19 = !{!12, !13}
; ModuleID = '__compute_module'
source_filename = "__compute_module"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
; Function Attrs: nofree nosync nounwind uwtable
define void @main.57(i8* nocapture readnone %retval, i8* noalias nocapture readnone %run_options, i8** noalias nocapture readnone %params, i8** noalias nocapture readonly %buffer_table, i8* noalias nocapture readnone %status, i64* noalias nocapture readnone %prof_counters) local_unnamed_addr #0 {
entry:
%0 = getelementptr inbounds i8*, i8** %buffer_table, i64 1
%1 = bitcast i8** %0 to [12 x double]**
%2 = load [12 x double]*, [12 x double]** %1, align 8, !invariant.load !0, !dereferenceable !1, !align !2
%3 = getelementptr inbounds i8*, i8** %buffer_table, i64 10
%4 = load i8*, i8** %3, align 8, !invariant.load !0, !dereferenceable !3, !align !2
%5 = getelementptr inbounds i8, i8* %4, i64 4000
%6 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%7 = bitcast double* %6 to <4 x double>*
%wide.load = load <4 x double>, <4 x double>* %7, align 16, !invariant.load !0, !noalias !4
%8 = fmul <4 x double> %wide.load, %wide.load
%9 = fmul <4 x double> %8, <double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18>
%10 = call <4 x double> @llvm.sqrt.v4f64(<4 x double> %9)
%11 = bitcast i8* %5 to <4 x double>*
store <4 x double> %10, <4 x double>* %11, align 16, !alias.scope !8, !noalias !9
%12 = bitcast i8** %buffer_table to [500 x [1 x double]]**
%13 = load [500 x [1 x double]]*, [500 x [1 x double]]** %12, align 8, !invariant.load !0, !dereferenceable !10, !align !2
%fusion = bitcast i8* %4 to [500 x double]*
%14 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%15 = bitcast double* %14 to <4 x double>*
%wide.load47 = load <4 x double>, <4 x double>* %15, align 16, !invariant.load !0, !noalias !4
%16 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%17 = bitcast double* %16 to <4 x double>*
%wide.load48 = load <4 x double>, <4 x double>* %17, align 16, !invariant.load !0, !noalias !4
%18 = fmul <4 x double> %wide.load48, %wide.load48
%19 = fmul <4 x double> %18, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%20 = bitcast i8* %5 to <4 x double>*
%wide.load49 = load <4 x double>, <4 x double>* %20, align 16, !alias.scope !8, !noalias !9
%21 = bitcast [12 x double]* %2 to <4 x double>*
%wide.load50 = load <4 x double>, <4 x double>* %21, align 16, !invariant.load !0, !noalias !4
br label %vector.ph42
vector.ph42: ; preds = %vector.ph42, %entry
%fusion.invar_address.dim.0.033 = phi i64 [ 0, %entry ], [ %invar.inc1, %vector.ph42 ]
%22 = getelementptr inbounds [500 x [1 x double]], [500 x [1 x double]]* %13, i64 0, i64 %fusion.invar_address.dim.0.033, i64 0
%23 = load double, double* %22, align 8, !invariant.load !0, !noalias !4
%broadcast.splatinsert = insertelement <4 x double> poison, double %23, i64 0
%broadcast.splat = shufflevector <4 x double> %broadcast.splatinsert, <4 x double> poison, <4 x i32> zeroinitializer
%24 = fsub <4 x double> %broadcast.splat, %wide.load47
%25 = fneg <4 x double> %24
%26 = fmul <4 x double> %24, %25
%27 = fdiv <4 x double> %26, %19
%28 = call <4 x double> @llvm.exp.v4f64(<4 x double> %27)
%29 = fdiv <4 x double> %28, %wide.load49
%30 = fmul <4 x double> %wide.load50, %29
%31 = fadd reassoc <4 x double> %30, <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%32 = call reassoc double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %31)
%33 = tail call double @llvm.log.f64(double %32)
%34 = getelementptr inbounds [500 x double], [500 x double]* %fusion, i64 0, i64 %fusion.invar_address.dim.0.033
store double %33, double* %34, align 8, !alias.scope !9, !noalias !11
%invar.inc1 = add nuw nsw i64 %fusion.invar_address.dim.0.033, 1
%exitcond38 = icmp eq i64 %invar.inc1, 500
br i1 %exitcond38, label %fusion.loop_exit.dim.0, label %vector.ph42
fusion.loop_exit.dim.0: ; preds = %vector.ph42
%reduce-window = bitcast i8* %5 to [16 x double]*
br label %vector.ph54
vector.ph54: ; preds = %vector.ph54, %fusion.loop_exit.dim.0
%reduce-window.invar_address.dim.0.030 = phi i64 [ 0, %fusion.loop_exit.dim.0 ], [ %invar.inc4, %vector.ph54 ]
%35 = shl nsw i64 %reduce-window.invar_address.dim.0.030, 5
%36 = add nsw i64 %35, -6
%broadcast.splatinsert60 = insertelement <4 x i64> poison, i64 %36, i64 0
%broadcast.splat61 = shufflevector <4 x i64> %broadcast.splatinsert60, <4 x i64> poison, <4 x i32> zeroinitializer
%37 = add nuw nsw <4 x i64> %broadcast.splat61, <i64 0, i64 1, i64 2, i64 3>
%38 = icmp ult <4 x i64> %37, <i64 500, i64 500, i64 500, i64 500>
%39 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %36
%40 = bitcast double* %39 to <4 x double>*
%wide.masked.load = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %40, i32 8, <4 x i1> %38, <4 x double> poison), !alias.scope !9, !noalias !11
%wide.masked.load.op = fadd reassoc <4 x double> %wide.masked.load, <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi = select <4 x i1> %38, <4 x double> %wide.masked.load.op, <4 x double> <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%41 = add <4 x i64> %broadcast.splat61, <i64 4, i64 5, i64 6, i64 7>
%42 = icmp ult <4 x i64> %41, <i64 500, i64 500, i64 500, i64 500>
%43 = extractelement <4 x i64> %41, i64 0
%44 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %43
%45 = bitcast double* %44 to <4 x double>*
%wide.masked.load.1 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %45, i32 8, <4 x i1> %42, <4 x double> poison), !alias.scope !9, !noalias !11
%46 = select <4 x i1> %42, <4 x double> %wide.masked.load.1, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.1 = fadd reassoc <4 x double> %predphi, %46
%47 = add <4 x i64> %broadcast.splat61, <i64 8, i64 9, i64 10, i64 11>
%48 = icmp ult <4 x i64> %47, <i64 500, i64 500, i64 500, i64 500>
%49 = extractelement <4 x i64> %47, i64 0
%50 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %49
%51 = bitcast double* %50 to <4 x double>*
%wide.masked.load.2 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %51, i32 8, <4 x i1> %48, <4 x double> poison), !alias.scope !9, !noalias !11
%52 = select <4 x i1> %48, <4 x double> %wide.masked.load.2, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.2 = fadd reassoc <4 x double> %predphi.1, %52
%53 = add <4 x i64> %broadcast.splat61, <i64 12, i64 13, i64 14, i64 15>
%54 = icmp ult <4 x i64> %53, <i64 500, i64 500, i64 500, i64 500>
%55 = extractelement <4 x i64> %53, i64 0
%56 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %55
%57 = bitcast double* %56 to <4 x double>*
%wide.masked.load.3 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %57, i32 8, <4 x i1> %54, <4 x double> poison), !alias.scope !9, !noalias !11
%58 = select <4 x i1> %54, <4 x double> %wide.masked.load.3, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.3 = fadd reassoc <4 x double> %predphi.2, %58
%59 = add <4 x i64> %broadcast.splat61, <i64 16, i64 17, i64 18, i64 19>
%60 = icmp ult <4 x i64> %59, <i64 500, i64 500, i64 500, i64 500>
%61 = extractelement <4 x i64> %59, i64 0
%62 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %61
%63 = bitcast double* %62 to <4 x double>*
%wide.masked.load.4 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %63, i32 8, <4 x i1> %60, <4 x double> poison), !alias.scope !9, !noalias !11
%64 = select <4 x i1> %60, <4 x double> %wide.masked.load.4, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.4 = fadd reassoc <4 x double> %predphi.3, %64
%65 = add <4 x i64> %broadcast.splat61, <i64 20, i64 21, i64 22, i64 23>
%66 = icmp ult <4 x i64> %65, <i64 500, i64 500, i64 500, i64 500>
%67 = extractelement <4 x i64> %65, i64 0
%68 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %67
%69 = bitcast double* %68 to <4 x double>*
%wide.masked.load.5 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %69, i32 8, <4 x i1> %66, <4 x double> poison), !alias.scope !9, !noalias !11
%70 = select <4 x i1> %66, <4 x double> %wide.masked.load.5, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.5 = fadd reassoc <4 x double> %predphi.4, %70
%71 = add <4 x i64> %broadcast.splat61, <i64 24, i64 25, i64 26, i64 27>
%72 = icmp ult <4 x i64> %71, <i64 500, i64 500, i64 500, i64 500>
%73 = extractelement <4 x i64> %71, i64 0
%74 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %73
%75 = bitcast double* %74 to <4 x double>*
%wide.masked.load.6 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %75, i32 8, <4 x i1> %72, <4 x double> poison), !alias.scope !9, !noalias !11
%76 = select <4 x i1> %72, <4 x double> %wide.masked.load.6, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.6 = fadd reassoc <4 x double> %predphi.5, %76
%77 = add <4 x i64> %broadcast.splat61, <i64 28, i64 29, i64 30, i64 31>
%78 = icmp ult <4 x i64> %77, <i64 500, i64 500, i64 500, i64 500>
%79 = extractelement <4 x i64> %77, i64 0
%80 = getelementptr [500 x double], [500 x double]* %fusion, i64 0, i64 %79
%81 = bitcast double* %80 to <4 x double>*
%wide.masked.load.7 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %81, i32 8, <4 x i1> %78, <4 x double> poison), !alias.scope !9, !noalias !11
%82 = select <4 x i1> %78, <4 x double> %wide.masked.load.7, <4 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%predphi.7 = fadd reassoc <4 x double> %predphi.6, %82
%83 = call reassoc double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %predphi.7)
%84 = getelementptr inbounds [16 x double], [16 x double]* %reduce-window, i64 0, i64 %reduce-window.invar_address.dim.0.030
store double %83, double* %84, align 8, !alias.scope !14, !noalias !15
%invar.inc4 = add nuw nsw i64 %reduce-window.invar_address.dim.0.030, 1
%exitcond36 = icmp eq i64 %invar.inc4, 16
br i1 %exitcond36, label %vector.body69, label %vector.ph54
vector.body69: ; preds = %vector.ph54
%85 = getelementptr inbounds i8*, i8** %buffer_table, i64 2
%86 = bitcast i8** %85 to double**
%87 = load double*, double** %86, align 8, !invariant.load !0, !dereferenceable !17, !align !17
%88 = bitcast i8* %5 to <4 x double>*
%wide.load72 = load <4 x double>, <4 x double>* %88, align 16, !alias.scope !14, !noalias !15
%89 = fadd reassoc <4 x double> %wide.load72, <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%90 = getelementptr inbounds i8, i8* %4, i64 4032
%91 = bitcast i8* %90 to <4 x double>*
%wide.load72.1 = load <4 x double>, <4 x double>* %91, align 16, !alias.scope !14, !noalias !15
%92 = fadd reassoc <4 x double> %89, %wide.load72.1
%93 = getelementptr inbounds i8, i8* %4, i64 4064
%94 = bitcast i8* %93 to <4 x double>*
%wide.load72.2 = load <4 x double>, <4 x double>* %94, align 16, !alias.scope !14, !noalias !15
%95 = fadd reassoc <4 x double> %92, %wide.load72.2
%96 = getelementptr inbounds i8, i8* %4, i64 4096
%97 = bitcast i8* %96 to <4 x double>*
%wide.load72.3 = load <4 x double>, <4 x double>* %97, align 16, !alias.scope !14, !noalias !15
%98 = fadd reassoc <4 x double> %95, %wide.load72.3
%99 = call reassoc double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %98)
store double %99, double* %87, align 8, !alias.scope !18, !noalias !19
ret void
}
; Function Attrs: mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.log.f64(double) #1
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare <4 x double> @llvm.sqrt.v4f64(<4 x double>) #2
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare <4 x double> @llvm.exp.v4f64(<4 x double>) #2
; Function Attrs: nocallback nofree nosync nounwind readnone willreturn
declare double @llvm.vector.reduce.fadd.v4f64(double, <4 x double>) #3
; Function Attrs: argmemonly nocallback nofree nosync nounwind readonly willreturn
declare <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>*, i32 immarg, <4 x i1>, <4 x double>) #4
attributes #0 = { nofree nosync nounwind uwtable "denormal-fp-math"="preserve-sign" "no-frame-pointer-elim"="false" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind readnone speculatable willreturn }
attributes #2 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
attributes #3 = { nocallback nofree nosync nounwind readnone willreturn }
attributes #4 = { argmemonly nocallback nofree nosync nounwind readonly willreturn }
!0 = !{}
!1 = !{i64 96}
!2 = !{i64 16}
!3 = !{i64 4128}
!4 = !{!5, !7}
!5 = !{!"buffer: {index:10, offset:0, size:4000}", !6}
!6 = !{!"XLA global AA domain"}
!7 = !{!"buffer: {index:10, offset:4000, size:32}", !6}
!8 = !{!7}
!9 = !{!5}
!10 = !{i64 4000}
!11 = !{!12, !7, !13}
!12 = !{!"buffer: {index:3, offset:0, size:8}", !6}
!13 = !{!"buffer: {index:10, offset:4000, size:128}", !6}
!14 = !{!13}
!15 = !{!16, !12, !5}
!16 = !{!"buffer: {index:2, offset:0, size:8}", !6}
!17 = !{i64 8}
!18 = !{!16}
!19 = !{!12, !13}
HloModule jit__lambda_.1
normal_pdf.4 {
Arg_0.5 = f64[500,1]{1,0} parameter(0)
broadcast.21 = f64[500,1]{1,0} broadcast(Arg_0.5), dimensions={0,1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
reshape.22 = f64[500]{0} reshape(broadcast.21), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
broadcast.23 = f64[500,4]{1,0} broadcast(reshape.22), dimensions={0}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
Arg_1.6 = f64[4]{0} parameter(1)
reshape.20 = f64[1,4]{1,0} reshape(Arg_1.6), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]" source_file="jax_code.py" source_line=20}
broadcast.24 = f64[1,4]{1,0} broadcast(reshape.20), dimensions={0,1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
reshape.25 = f64[4]{0} reshape(broadcast.24), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
broadcast.26 = f64[500,4]{1,0} broadcast(reshape.25), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
subtract.27 = f64[500,4]{1,0} subtract(broadcast.23, broadcast.26), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
multiply.28 = f64[500,4]{1,0} multiply(subtract.27, subtract.27), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
negate.30 = f64[500,4]{1,0} negate(multiply.28), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
Arg_2.7 = f64[4]{0} parameter(2)
constant.16 = f64[] constant(2)
broadcast.17 = f64[4]{0} broadcast(constant.16), dimensions={}
multiply.31 = f64[4]{0} multiply(Arg_2.7, broadcast.17), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
reshape.32 = f64[1,4]{1,0} reshape(multiply.31), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]" source_file="jax_code.py" source_line=20}
broadcast.33 = f64[1,4]{1,0} broadcast(reshape.32), dimensions={0,1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
reshape.34 = f64[4]{0} reshape(broadcast.33), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
broadcast.35 = f64[500,4]{1,0} broadcast(reshape.34), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
divide.36 = f64[500,4]{1,0} divide(negate.30, broadcast.35), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
exponential.39 = f64[500,4]{1,0} exponential(divide.36), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/exp" source_file="jax_code.py" source_line=20}
constant.14 = f64[] constant(6.2831853071795862)
broadcast.15 = f64[4]{0} broadcast(constant.14), dimensions={}
multiply.40 = f64[4]{0} multiply(Arg_2.7, broadcast.15), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
sqrt.41 = f64[4]{0} sqrt(multiply.40), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sqrt" source_file="jax_code.py" source_line=20}
reshape.43 = f64[1,4]{1,0} reshape(sqrt.41), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]" source_file="jax_code.py" source_line=20}
broadcast.44 = f64[1,4]{1,0} broadcast(reshape.43), dimensions={0,1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
reshape.45 = f64[4]{0} reshape(broadcast.44), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
broadcast.46 = f64[500,4]{1,0} broadcast(reshape.45), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
divide.47 = f64[500,4]{1,0} divide(exponential.39, broadcast.46), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
constant.10 = f64[] constant(1)
broadcast.11 = f64[1,4]{1,0} broadcast(constant.10), dimensions={}
multiply.48 = f64[1,4]{1,0} multiply(reshape.43, reshape.43), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
divide.49 = f64[1,4]{1,0} divide(broadcast.11, multiply.48), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
multiply.37 = f64[1,4]{1,0} multiply(reshape.32, reshape.32), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
divide.38 = f64[1,4]{1,0} divide(broadcast.11, multiply.37), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
constant.18 = f64[] constant(2)
broadcast.19 = f64[500,4]{1,0} broadcast(constant.18), dimensions={}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
multiply.29 = f64[500,4]{1,0} multiply(subtract.27, broadcast.19), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
constant.9 = f64[] constant(2)
constant.12 = f64[] constant(0.5)
broadcast.13 = f64[4]{0} broadcast(constant.12), dimensions={}
divide.42 = f64[4]{0} divide(broadcast.13, sqrt.41), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
constant.8 = f64[] constant(6.2831853071795862)
ROOT tuple.50 = (f64[500,4]{1,0}, f64[1,4]{1,0}, f64[500,4]{1,0}, f64[1,4]{1,0}, f64[1,4]{1,0}, /*index=5*/f64[500,4]{1,0}, f64[1,4]{1,0}, f64[500,4]{1,0}, f64[], f64[4]{0}, /*index=10*/f64[]) tuple(divide.47, reshape.43, exponential.39, divide.49, reshape.32, /*index=5*/negate.30, divide.38, multiply.29, constant.9, divide.42, /*index=10*/constant.8)
}
region_0.51 {
Arg_0.52 = f64[] parameter(0)
Arg_1.53 = f64[] parameter(1)
ROOT add.54 = f64[] add(Arg_0.52, Arg_1.53), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/reduce_sum[axes=(1,)]" source_file="jax_code.py" source_line=25}
}
region_1.55 {
Arg_0.56 = f64[] parameter(0)
Arg_1.57 = f64[] parameter(1)
ROOT add.58 = f64[] add(Arg_0.56, Arg_1.57), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
}
mixture_loglikelihood.59 {
Arg_1.61 = f64[500,1]{1,0} parameter(1)
Arg_0.60 = f64[12]{0} parameter(0)
slice.69 = f64[4]{0} slice(Arg_0.60), slice={[4:8]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
slice.70 = f64[4]{0} slice(Arg_0.60), slice={[8:12]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
multiply.71 = f64[4]{0} multiply(slice.70, slice.70), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
call.73 = (f64[500,4]{1,0}, f64[1,4]{1,0}, f64[500,4]{1,0}, f64[1,4]{1,0}, f64[1,4]{1,0}, /*index=5*/f64[500,4]{1,0}, f64[1,4]{1,0}, f64[500,4]{1,0}, f64[], f64[4]{0}, /*index=10*/f64[]) call(Arg_1.61, slice.69, multiply.71), to_apply=normal_pdf.4
get-tuple-element.74 = f64[500,4]{1,0} get-tuple-element(call.73), index=0
slice.68 = f64[4]{0} slice(Arg_0.60), slice={[0:4]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=24}
reshape.85 = f64[1,4]{1,0} reshape(slice.68), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/broadcast_in_dim[shape=(1, 4) broadcast_dimensions=(1,)]" source_file="jax_code.py" source_line=25}
broadcast.86 = f64[1,4]{1,0} broadcast(reshape.85), dimensions={0,1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
reshape.87 = f64[4]{0} reshape(broadcast.86), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
broadcast.88 = f64[500,4]{1,0} broadcast(reshape.87), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
multiply.89 = f64[500,4]{1,0} multiply(get-tuple-element.74, broadcast.88), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
constant.62 = f64[] constant(0)
reduce.90 = f64[500]{0} reduce(multiply.89, constant.62), dimensions={1}, to_apply=region_0.51, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/reduce_sum[axes=(1,)]" source_file="jax_code.py" source_line=25}
log.91 = f64[500]{0} log(reduce.90), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/log" source_file="jax_code.py" source_line=25}
reduce.92 = f64[] reduce(log.91, constant.62), dimensions={0}, to_apply=region_1.55, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
get-tuple-element.75 = f64[1,4]{1,0} get-tuple-element(call.73), index=1
get-tuple-element.76 = f64[500,4]{1,0} get-tuple-element(call.73), index=2
get-tuple-element.77 = f64[1,4]{1,0} get-tuple-element(call.73), index=3
get-tuple-element.78 = f64[1,4]{1,0} get-tuple-element(call.73), index=4
get-tuple-element.79 = f64[500,4]{1,0} get-tuple-element(call.73), index=5
get-tuple-element.80 = f64[1,4]{1,0} get-tuple-element(call.73), index=6
get-tuple-element.81 = f64[500,4]{1,0} get-tuple-element(call.73), index=7
get-tuple-element.82 = f64[] get-tuple-element(call.73), index=8
get-tuple-element.83 = f64[4]{0} get-tuple-element(call.73), index=9
get-tuple-element.84 = f64[] get-tuple-element(call.73), index=10
constant.66 = s32[1]{0} constant({4})
constant.65 = s32[1]{0} constant({8})
constant.63 = f64[] constant(2)
broadcast.64 = f64[4]{0} broadcast(constant.63), dimensions={}
multiply.72 = f64[4]{0} multiply(slice.70, broadcast.64), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
constant.67 = s32[1]{0} constant({0})
ROOT tuple.93 = (f64[], f64[500]{0}, f64[1,4]{1,0}, f64[500,4]{1,0}, f64[1,4]{1,0}, /*index=5*/f64[500,4]{1,0}, f64[1,4]{1,0}, f64[1,4]{1,0}, f64[500,4]{1,0}, f64[1,4]{1,0}, /*index=10*/f64[500,4]{1,0}, f64[], f64[4]{0}, f64[], s32[1]{0}, /*index=15*/s32[1]{0}, f64[4]{0}, s32[1]{0}) tuple(reduce.92, reduce.90, reshape.85, get-tuple-element.74, get-tuple-element.75, /*index=5*/get-tuple-element.76, get-tuple-element.77, get-tuple-element.78, get-tuple-element.79, get-tuple-element.80, /*index=10*/get-tuple-element.81, get-tuple-element.82, get-tuple-element.83, get-tuple-element.84, constant.66, /*index=15*/constant.65, multiply.72, constant.67)
}
region_2.113 {
Arg_0.114 = f64[] parameter(0)
Arg_1.115 = f64[] parameter(1)
ROOT add.116 = f64[] add(Arg_0.114, Arg_1.115), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
}
region_3.117 {
Arg_0.118 = f64[] parameter(0)
Arg_1.119 = f64[] parameter(1)
ROOT add.120 = f64[] add(Arg_0.118, Arg_1.119), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
}
region_4.121 {
Arg_0.122 = f64[] parameter(0)
Arg_1.123 = f64[] parameter(1)
ROOT add.124 = f64[] add(Arg_0.122, Arg_1.123), metadata={op_name="/add" source_file="jax_code.py" source_line=24}
}
region_5.125 {
Arg_0.126 = f64[] parameter(0)
Arg_1.127 = f64[] parameter(1)
ROOT add.128 = f64[] add(Arg_0.126, Arg_1.127), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
}
region_6.129 {
Arg_0.130 = f64[] parameter(0)
Arg_1.131 = f64[] parameter(1)
ROOT add.132 = f64[] add(Arg_0.130, Arg_1.131), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
}
region_7.133 {
Arg_0.134 = f64[] parameter(0)
Arg_1.135 = f64[] parameter(1)
ROOT add.136 = f64[] add(Arg_0.134, Arg_1.135), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
}
region_8.137 {
Arg_0.138 = f64[] parameter(0)
Arg_1.139 = f64[] parameter(1)
ROOT add.140 = f64[] add(Arg_0.138, Arg_1.139), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
}
region_9.141 {
Arg_0.142 = f64[] parameter(0)
Arg_1.143 = f64[] parameter(1)
ROOT add.144 = f64[] add(Arg_0.142, Arg_1.143), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
}
region_10.145 {
Arg_0.146 = f64[] parameter(0)
Arg_1.147 = f64[] parameter(1)
ROOT add.148 = f64[] add(Arg_0.146, Arg_1.147), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
}
normal_pdf_1.149 {
Arg_10.160 = f64[500,4]{1,0} parameter(10)
Arg_0.150 = f64[1,4]{1,0} parameter(0)
broadcast.171 = f64[1,4]{1,0} broadcast(Arg_0.150), dimensions={0,1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
reshape.172 = f64[4]{0} reshape(broadcast.171), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
broadcast.173 = f64[500,4]{1,0} broadcast(reshape.172), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
divide.174 = f64[500,4]{1,0} divide(Arg_10.160, broadcast.173), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
Arg_1.151 = f64[500,4]{1,0} parameter(1)
multiply.178 = f64[500,4]{1,0} multiply(divide.174, Arg_1.151), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
Arg_3.153 = f64[1,4]{1,0} parameter(3)
broadcast.188 = f64[1,4]{1,0} broadcast(Arg_3.153), dimensions={0,1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
reshape.189 = f64[4]{0} reshape(broadcast.188), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
broadcast.190 = f64[500,4]{1,0} broadcast(reshape.189), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
divide.191 = f64[500,4]{1,0} divide(multiply.178, broadcast.190), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
negate.195 = f64[500,4]{1,0} negate(divide.191), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
Arg_6.156 = f64[500,4]{1,0} parameter(6)
multiply.196 = f64[500,4]{1,0} multiply(negate.195, Arg_6.156), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
constant.161 = f64[] constant(0)
reduce.197 = f64[4]{0} reduce(multiply.196, constant.161), dimensions={0}, to_apply=region_9.141, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
reshape.198 = f64[1,4]{1,0} reshape(reduce.197), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reshape[new_sizes=(1, 4) dimensions=None]" source_file="jax_code.py" source_line=20}
negate.199 = f64[1,4]{1,0} negate(reshape.198), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
reduce.200 = f64[4]{0} reduce(negate.199, constant.161), dimensions={0}, to_apply=region_10.145, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
Arg_2.152 = f64[1,4]{1,0} parameter(2)
broadcast.162 = f64[1,4]{1,0} broadcast(Arg_2.152), dimensions={0,1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
reshape.163 = f64[4]{0} reshape(broadcast.162), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
broadcast.164 = f64[500,4]{1,0} broadcast(reshape.163), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
multiply.165 = f64[500,4]{1,0} multiply(Arg_10.160, broadcast.164), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
multiply.166 = f64[500,4]{1,0} multiply(multiply.165, Arg_1.151), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
reduce.167 = f64[4]{0} reduce(multiply.166, constant.161), dimensions={0}, to_apply=region_5.125, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
reshape.168 = f64[1,4]{1,0} reshape(reduce.167), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reshape[new_sizes=(1, 4) dimensions=None]" source_file="jax_code.py" source_line=20}
negate.169 = f64[1,4]{1,0} negate(reshape.168), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
reduce.170 = f64[4]{0} reduce(negate.169, constant.161), dimensions={0}, to_apply=region_6.129, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
Arg_8.158 = f64[4]{0} parameter(8)
multiply.175 = f64[4]{0} multiply(reduce.170, Arg_8.158), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
Arg_9.159 = f64[] parameter(9)
broadcast.176 = f64[4]{0} broadcast(Arg_9.159), dimensions={}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
multiply.177 = f64[4]{0} multiply(multiply.175, broadcast.176), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
Arg_5.155 = f64[1,4]{1,0} parameter(5)
broadcast.179 = f64[1,4]{1,0} broadcast(Arg_5.155), dimensions={0,1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
reshape.180 = f64[4]{0} reshape(broadcast.179), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
broadcast.181 = f64[500,4]{1,0} broadcast(reshape.180), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
multiply.182 = f64[500,4]{1,0} multiply(multiply.178, broadcast.181), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
Arg_4.154 = f64[500,4]{1,0} parameter(4)
multiply.183 = f64[500,4]{1,0} multiply(multiply.182, Arg_4.154), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
reduce.184 = f64[4]{0} reduce(multiply.183, constant.161), dimensions={0}, to_apply=region_7.133, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
reshape.185 = f64[1,4]{1,0} reshape(reduce.184), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reshape[new_sizes=(1, 4) dimensions=None]" source_file="jax_code.py" source_line=20}
negate.186 = f64[1,4]{1,0} negate(reshape.185), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
reduce.187 = f64[4]{0} reduce(negate.186, constant.161), dimensions={0}, to_apply=region_8.137, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
Arg_7.157 = f64[] parameter(7)
broadcast.192 = f64[4]{0} broadcast(Arg_7.157), dimensions={}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
multiply.193 = f64[4]{0} multiply(reduce.187, broadcast.192), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
add.194 = f64[4]{0} add(multiply.177, multiply.193), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/add_any" source_file="jax_code.py" source_line=20}
ROOT tuple.201 = (f64[4]{0}, f64[4]{0}) tuple(reduce.200, add.194)
}
region_11.202 {
Arg_0.203 = f64[] parameter(0)
Arg_1.204 = f64[] parameter(1)
ROOT add.205 = f64[] add(Arg_0.203, Arg_1.204), metadata={op_name="/add" source_file="jax_code.py" source_line=24}
}
region_12.206 {
Arg_0.207 = f64[] parameter(0)
Arg_1.208 = f64[] parameter(1)
ROOT add.209 = f64[] add(Arg_0.207, Arg_1.208), metadata={op_name="/add" source_file="jax_code.py" source_line=24}
}
mixture_loglikelihood_0.210 {
constant.229 = f64[] constant(0)
broadcast.230 = f64[12]{0} broadcast(constant.229), dimensions={}
Arg_16.227 = s32[1]{0} parameter(16)
Arg_2.213 = f64[500,4]{1,0} parameter(2)
Arg_17.228 = f64[] parameter(17)
broadcast.232 = f64[500]{0} broadcast(Arg_17.228), dimensions={}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/broadcast_in_dim[shape=(500,) broadcast_dimensions=()]" source_file="jax_code.py" source_line=25}
Arg_0.211 = f64[500]{0} parameter(0)
divide.233 = f64[500]{0} divide(broadcast.232, Arg_0.211), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/div" source_file="jax_code.py" source_line=25}
broadcast.234 = f64[500,4]{1,0} broadcast(divide.233), dimensions={0}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/broadcast_in_dim[shape=(500, 4) broadcast_dimensions=(0,)]" source_file="jax_code.py" source_line=25}
multiply.235 = f64[500,4]{1,0} multiply(Arg_2.213, broadcast.234), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
constant.231 = f64[] constant(0)
reduce.236 = f64[4]{0} reduce(multiply.235, constant.231), dimensions={0}, to_apply=region_2.113, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
reshape.237 = f64[1,4]{1,0} reshape(reduce.236), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reshape[new_sizes=(1, 4) dimensions=None]" source_file="jax_code.py" source_line=25}
reduce.238 = f64[4]{0} reduce(reshape.237, constant.231), dimensions={0}, to_apply=region_3.117, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
scatter.243 = f64[12]{0} scatter(broadcast.230, Arg_16.227, reduce.238), update_window_dims={0}, inserted_window_dims={}, scatter_dims_to_operand_dims={0}, index_vector_dim=0, indices_are_sorted=true, unique_indices=true, to_apply=region_4.121, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/scatter-add[update_consts=() dimension_numbers=ScatterDimensionNumbers(update_window_dims=(0,), inserted_window_dims=(), scatter_dims_to_operand_dims=(0,)) indices_are_sorted=True unique_indices=True mode=GatherScatterMode.PROMISE_IN_BOUNDS]" source_file="jax_code.py" source_line=24}
Arg_14.225 = s32[1]{0} parameter(14)
Arg_3.214 = f64[1,4]{1,0} parameter(3)
Arg_4.215 = f64[500,4]{1,0} parameter(4)
Arg_5.216 = f64[1,4]{1,0} parameter(5)
Arg_6.217 = f64[1,4]{1,0} parameter(6)
Arg_7.218 = f64[500,4]{1,0} parameter(7)
Arg_8.219 = f64[1,4]{1,0} parameter(8)
Arg_9.220 = f64[500,4]{1,0} parameter(9)
Arg_10.221 = f64[] parameter(10)
Arg_11.222 = f64[4]{0} parameter(11)
Arg_12.223 = f64[] parameter(12)
Arg_1.212 = f64[1,4]{1,0} parameter(1)
broadcast.239 = f64[1,4]{1,0} broadcast(Arg_1.212), dimensions={0,1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
reshape.240 = f64[4]{0} reshape(broadcast.239), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
broadcast.241 = f64[500,4]{1,0} broadcast(reshape.240), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
multiply.242 = f64[500,4]{1,0} multiply(broadcast.234, broadcast.241), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
call.244 = (f64[4]{0}, f64[4]{0}) call(Arg_3.214, Arg_4.215, Arg_5.216, Arg_6.217, Arg_7.218, /*index=5*/Arg_8.219, Arg_9.220, Arg_10.221, Arg_11.222, Arg_12.223, /*index=10*/multiply.242), to_apply=normal_pdf_1.149
get-tuple-element.246 = f64[4]{0} get-tuple-element(call.244), index=1
Arg_15.226 = f64[4]{0} parameter(15)
multiply.247 = f64[4]{0} multiply(get-tuple-element.246, Arg_15.226), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
scatter.248 = f64[12]{0} scatter(broadcast.230, Arg_14.225, multiply.247), update_window_dims={0}, inserted_window_dims={}, scatter_dims_to_operand_dims={0}, index_vector_dim=0, indices_are_sorted=true, unique_indices=true, to_apply=region_11.202, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/scatter-add[update_consts=() dimension_numbers=ScatterDimensionNumbers(update_window_dims=(0,), inserted_window_dims=(), scatter_dims_to_operand_dims=(0,)) indices_are_sorted=True unique_indices=True mode=GatherScatterMode.PROMISE_IN_BOUNDS]" source_file="jax_code.py" source_line=25}
add.249 = f64[12]{0} add(scatter.243, scatter.248), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/add_any" source_file="jax_code.py" source_line=25}
Arg_13.224 = s32[1]{0} parameter(13)
get-tuple-element.245 = f64[4]{0} get-tuple-element(call.244), index=0
scatter.250 = f64[12]{0} scatter(broadcast.230, Arg_13.224, get-tuple-element.245), update_window_dims={0}, inserted_window_dims={}, scatter_dims_to_operand_dims={0}, index_vector_dim=0, indices_are_sorted=true, unique_indices=true, to_apply=region_12.206, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/scatter-add[update_consts=() dimension_numbers=ScatterDimensionNumbers(update_window_dims=(0,), inserted_window_dims=(), scatter_dims_to_operand_dims=(0,)) indices_are_sorted=True unique_indices=True mode=GatherScatterMode.PROMISE_IN_BOUNDS]" source_file="jax_code.py" source_line=25}
ROOT add.251 = f64[12]{0} add(add.249, scatter.250), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/add_any" source_file="jax_code.py" source_line=25}
}
ENTRY main.253 {
Arg_0.1 = f64[12]{0} parameter(0)
constant.3 = f64[500,1]{1,0} constant({...})
call.94 = (f64[], f64[500]{0}, f64[1,4]{1,0}, f64[500,4]{1,0}, f64[1,4]{1,0}, /*index=5*/f64[500,4]{1,0}, f64[1,4]{1,0}, f64[1,4]{1,0}, f64[500,4]{1,0}, f64[1,4]{1,0}, /*index=10*/f64[500,4]{1,0}, f64[], f64[4]{0}, f64[], s32[1]{0}, /*index=15*/s32[1]{0}, f64[4]{0}, s32[1]{0}) call(Arg_0.1, constant.3), to_apply=mixture_loglikelihood.59
get-tuple-element.95 = f64[] get-tuple-element(call.94), index=0
get-tuple-element.96 = f64[500]{0} get-tuple-element(call.94), index=1
get-tuple-element.97 = f64[1,4]{1,0} get-tuple-element(call.94), index=2
get-tuple-element.98 = f64[500,4]{1,0} get-tuple-element(call.94), index=3
get-tuple-element.99 = f64[1,4]{1,0} get-tuple-element(call.94), index=4
get-tuple-element.100 = f64[500,4]{1,0} get-tuple-element(call.94), index=5
get-tuple-element.101 = f64[1,4]{1,0} get-tuple-element(call.94), index=6
get-tuple-element.102 = f64[1,4]{1,0} get-tuple-element(call.94), index=7
get-tuple-element.103 = f64[500,4]{1,0} get-tuple-element(call.94), index=8
get-tuple-element.104 = f64[1,4]{1,0} get-tuple-element(call.94), index=9
get-tuple-element.105 = f64[500,4]{1,0} get-tuple-element(call.94), index=10
get-tuple-element.106 = f64[] get-tuple-element(call.94), index=11
get-tuple-element.107 = f64[4]{0} get-tuple-element(call.94), index=12
get-tuple-element.108 = f64[] get-tuple-element(call.94), index=13
get-tuple-element.109 = s32[1]{0} get-tuple-element(call.94), index=14
get-tuple-element.110 = s32[1]{0} get-tuple-element(call.94), index=15
get-tuple-element.111 = f64[4]{0} get-tuple-element(call.94), index=16
get-tuple-element.112 = s32[1]{0} get-tuple-element(call.94), index=17
constant.2 = f64[] constant(1)
ROOT call.252 = f64[12]{0} call(get-tuple-element.96, get-tuple-element.97, get-tuple-element.98, get-tuple-element.99, get-tuple-element.100, /*index=5*/get-tuple-element.101, get-tuple-element.102, get-tuple-element.103, get-tuple-element.104, get-tuple-element.105, /*index=10*/get-tuple-element.106, get-tuple-element.107, get-tuple-element.108, get-tuple-element.109, get-tuple-element.110, /*index=15*/get-tuple-element.111, get-tuple-element.112, constant.2), to_apply=mixture_loglikelihood_0.210
}
BufferAssignment:
allocation 0: 0x556fb307a1d0, size 96, output shape is |f64[12]|, maybe-live-out:
value: <25 fusion @0> (size=96,offset=0): f64[12]{0}
value: <31 fusion.6 @0> (size=32,offset=0): f64[4]{0}
value: <35 fusion.10 @0> (size=32,offset=0): f64[4]{0}
allocation 1: 0x556fb307a280, size 96, parameter 0, shape |f64[12]| at ShapeIndex {}:
value: <15 Arg_0.1 @0> (size=96,offset=0): f64[12]{0}
allocation 2: 0x556fb307a330, size 8, constant:
value: <16 constant.24 @0> (size=8,offset=0): f64[]
allocation 3: 0x556fb307a3e0, size 8, thread-local:
value: <5 add.116 @0> (size=8,offset=0): f64[]
allocation 4: 0x556fb307a490, size 8, thread-local:
value: <0 Arg_0.52 @0> (size=8,offset=0): f64[]
allocation 5: 0x556fb307a540, size 8, thread-local:
value: <1 Arg_1.53 @0> (size=8,offset=0): f64[]
allocation 6: 0x556fb307a5f0, size 8, thread-local:
value: <2 add.54 @0> (size=8,offset=0): f64[]
allocation 7: 0x556fb307a6a0, size 8, thread-local:
value: <12 Arg_0.142 @0> (size=8,offset=0): f64[]
allocation 8: 0x556fb307a750, size 8, thread-local:
value: <13 Arg_1.143 @0> (size=8,offset=0): f64[]
allocation 9: 0x556fb307a800, size 8, thread-local:
value: <14 add.144 @0> (size=8,offset=0): f64[]
allocation 10: 0x556fb307a8b0, size 8, thread-local:
value: <9 Arg_0.134 @0> (size=8,offset=0): f64[]
allocation 11: 0x556fb307a960, size 8, thread-local:
value: <10 Arg_1.135 @0> (size=8,offset=0): f64[]
allocation 12: 0x556fb307aa10, size 8, thread-local:
value: <11 add.136 @0> (size=8,offset=0): f64[]
allocation 13: 0x556fb307aac0, size 8, thread-local:
value: <6 Arg_0.126 @0> (size=8,offset=0): f64[]
allocation 14: 0x556fb307ab70, size 8, thread-local:
value: <7 Arg_1.127 @0> (size=8,offset=0): f64[]
allocation 15: 0x556fb307ac20, size 8, thread-local:
value: <8 add.128 @0> (size=8,offset=0): f64[]
allocation 16: 0x556fb307acd0, size 8, thread-local:
value: <3 Arg_0.114 @0> (size=8,offset=0): f64[]
allocation 17: 0x556fb307ad80, size 8, thread-local:
value: <4 Arg_1.115 @0> (size=8,offset=0): f64[]
allocation 18: 0x556fb307ae30, size 68512, preallocated-temp:
value: <17 reduce-window @0> (size=512,offset=48000): f64[16,4]{1,0}
value: <18 reduce.8 @0> (size=32,offset=48544): f64[4]{0}
value: <19 reduce-window.1 @0> (size=512,offset=16000): f64[16,4]{1,0}
value: <20 reduce.12 @0> (size=32,offset=0): f64[4]{0}
value: <21 reduce-window.2 @0> (size=512,offset=68000): f64[16,4]{1,0}
value: <22 reduce.14 @0> (size=32,offset=48512): f64[4]{0}
value: <23 reduce-window.3 @0> (size=512,offset=32000): f64[16,4]{1,0}
value: <24 reduce.10 @0> (size=32,offset=48576): f64[4]{0}
value: <26 fusion.1 @0> (size=16000,offset=16000): f64[500,4]{1,0}
value: <27 fusion.2 @0> (size=16000,offset=48000): f64[500,4]{1,0}
value: <28 fusion.3 @0> (size=32,offset=68000): f64[4]{0}
value: <29 fusion.4 @0> (size=16000,offset=16000): f64[500,4]{1,0}
value: <30 fusion.5 @0> (size=16000,offset=0): f64[500,4]{1,0}
value: <32 fusion.7 @0> (size=16000,offset=32000): f64[500,4]{1,0}
value: <33 fusion.8 @0> (size=4000,offset=64000): f64[500]{0}
value: <34 fusion.9 @0> (size=16000,offset=32000): f64[500,4]{1,0}
value: <36 fusion.11 @0> (size=16000,offset=0): f64[500,4]{1,0}
Total bytes used: 68832 (67.2KiB)
Used values:
<0 Arg_0.52 @0>
positions:
Arg_0.52
uses:
add.54, operand 0
from instruction:%Arg_0.52 = f64[] parameter(0)
<1 Arg_1.53 @0>
positions:
Arg_1.53
uses:
add.54, operand 1
from instruction:%Arg_1.53 = f64[] parameter(1)
<2 add.54 @0>
positions:
add.54
uses:
from instruction:%add.54 = f64[] add(f64[] %Arg_0.52, f64[] %Arg_1.53), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/reduce_sum[axes=(1,)]" source_file="jax_code.py" source_line=25}
<3 Arg_0.114 @0>
positions:
Arg_0.114
uses:
add.116, operand 0
from instruction:%Arg_0.114 = f64[] parameter(0)
<4 Arg_1.115 @0>
positions:
Arg_1.115
uses:
add.116, operand 1
from instruction:%Arg_1.115 = f64[] parameter(1)
<5 add.116 @0>
positions:
add.116
uses:
from instruction:%add.116 = f64[] add(f64[] %Arg_0.114, f64[] %Arg_1.115), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
<6 Arg_0.126 @0>
positions:
Arg_0.126
uses:
add.128, operand 0
from instruction:%Arg_0.126 = f64[] parameter(0)
<7 Arg_1.127 @0>
positions:
Arg_1.127
uses:
add.128, operand 1
from instruction:%Arg_1.127 = f64[] parameter(1)
<8 add.128 @0>
positions:
add.128
uses:
from instruction:%add.128 = f64[] add(f64[] %Arg_0.126, f64[] %Arg_1.127), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
<9 Arg_0.134 @0>
positions:
Arg_0.134
uses:
add.136, operand 0
from instruction:%Arg_0.134 = f64[] parameter(0)
<10 Arg_1.135 @0>
positions:
Arg_1.135
uses:
add.136, operand 1
from instruction:%Arg_1.135 = f64[] parameter(1)
<11 add.136 @0>
positions:
add.136
uses:
from instruction:%add.136 = f64[] add(f64[] %Arg_0.134, f64[] %Arg_1.135), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
<12 Arg_0.142 @0>
positions:
Arg_0.142
uses:
add.144, operand 0
from instruction:%Arg_0.142 = f64[] parameter(0)
<13 Arg_1.143 @0>
positions:
Arg_1.143
uses:
add.144, operand 1
from instruction:%Arg_1.143 = f64[] parameter(1)
<14 add.144 @0>
positions:
add.144
uses:
from instruction:%add.144 = f64[] add(f64[] %Arg_0.142, f64[] %Arg_1.143), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
<15 Arg_0.1 @0>
positions:
Arg_0.1
uses:
fusion.10, operand 0
fusion.8, operand 1
fusion.11, operand 0
fusion, operand 4
fusion.1, operand 2
fusion.2, operand 3
fusion.3, operand 0
fusion.4, operand 1
fusion.5, operand 3
from instruction:%Arg_0.1 = f64[12]{0} parameter(0)
<16 constant.24 @0>
positions:
constant.24
uses:
reduce.12, operand 1
reduce-window.1, operand 1
reduce-window.2, operand 1
reduce-window.3, operand 1
reduce.8, operand 1
reduce-window, operand 1
reduce.10, operand 1
reduce.14, operand 1
from instruction:%constant.24 = f64[] constant(0)
<17 reduce-window @0>
positions:
reduce-window
uses:
reduce.8, operand 0
from instruction:%reduce-window = f64[16,4]{1,0} reduce-window(f64[500,4]{1,0} %fusion.7, f64[] %constant.24), window={size=32x1 stride=32x1 pad=6_6x0_0}, to_apply=%region_2.113
<18 reduce.8 @0>
positions:
reduce.8
uses:
fusion, operand 3
from instruction:%reduce.8 = f64[4]{0} reduce(f64[16,4]{1,0} %reduce-window, f64[] %constant.24), dimensions={0}, to_apply=%region_2.113, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
<19 reduce-window.1 @0>
positions:
reduce-window.1
uses:
reduce.12, operand 0
from instruction:%reduce-window.1 = f64[16,4]{1,0} reduce-window(f64[500,4]{1,0} %fusion.5, f64[] %constant.24), window={size=32x1 stride=32x1 pad=6_6x0_0}, to_apply=%region_5.125
<20 reduce.12 @0>
positions:
reduce.12
uses:
fusion, operand 2
from instruction:%reduce.12 = f64[4]{0} reduce(f64[16,4]{1,0} %reduce-window.1, f64[] %constant.24), dimensions={0}, to_apply=%region_5.125, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
<21 reduce-window.2 @0>
positions:
reduce-window.2
uses:
reduce.14, operand 0
from instruction:%reduce-window.2 = f64[16,4]{1,0} reduce-window(f64[500,4]{1,0} %fusion.2, f64[] %constant.24), window={size=32x1 stride=32x1 pad=6_6x0_0}, to_apply=%region_7.133
<22 reduce.14 @0>
positions:
reduce.14
uses:
fusion, operand 1
from instruction:%reduce.14 = f64[4]{0} reduce(f64[16,4]{1,0} %reduce-window.2, f64[] %constant.24), dimensions={0}, to_apply=%region_7.133, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
<23 reduce-window.3 @0>
positions:
reduce-window.3
uses:
reduce.10, operand 0
from instruction:%reduce-window.3 = f64[16,4]{1,0} reduce-window(f64[500,4]{1,0} %fusion.1, f64[] %constant.24), window={size=32x1 stride=32x1 pad=6_6x0_0}, to_apply=%region_9.141
<24 reduce.10 @0>
positions:
reduce.10
uses:
fusion, operand 0
from instruction:%reduce.10 = f64[4]{0} reduce(f64[16,4]{1,0} %reduce-window.3, f64[] %constant.24), dimensions={0}, to_apply=%region_9.141, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
<25 fusion @0>
positions:
fusion
uses:
from instruction:%fusion = f64[12]{0} fusion(f64[4]{0} %reduce.10, f64[4]{0} %reduce.14, f64[4]{0} %reduce.12, f64[4]{0} %reduce.8, f64[12]{0} %Arg_0.1), kind=kLoop, calls=%fused_computation, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/add_any" source_file="jax_code.py" source_line=25}
<26 fusion.1 @0>
positions:
fusion.1
uses:
reduce-window.3, operand 0
from instruction:%fusion.1 = f64[500,4]{1,0} fusion(f64[500,4]{1,0} %fusion.4, f64[500,4]{1,0} %fusion.11, f64[12]{0} %Arg_0.1), kind=kLoop, calls=%fused_computation.1, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
<27 fusion.2 @0>
positions:
fusion.2
uses:
reduce-window.2, operand 0
from instruction:%fusion.2 = f64[500,4]{1,0} fusion(f64[4]{0} %fusion.3, f64[500,4]{1,0} %fusion.4, f64[500,4]{1,0} %fusion.11, f64[12]{0} %Arg_0.1), kind=kLoop, calls=%fused_computation.2, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
<28 fusion.3 @0>
positions:
fusion.3
uses:
fusion.2, operand 0
from instruction:%fusion.3 = f64[4]{0} fusion(f64[12]{0} %Arg_0.1), kind=kLoop, calls=%fused_computation.3, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
<29 fusion.4 @0>
positions:
fusion.4
uses:
fusion.2, operand 1
fusion.1, operand 0
from instruction:%fusion.4 = f64[500,4]{1,0} fusion(f64[500]{0} %fusion.8, f64[12]{0} %Arg_0.1, f64[4]{0} %fusion.10), kind=kLoop, calls=%fused_computation.4, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
<30 fusion.5 @0>
positions:
fusion.5
uses:
reduce-window.1, operand 0
from instruction:%fusion.5 = f64[500,4]{1,0} fusion(f64[500,4]{1,0} %fusion.11, f64[4]{0} %fusion.6, f64[500]{0} %fusion.8, f64[12]{0} %Arg_0.1), kind=kLoop, calls=%fused_computation.5, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
<31 fusion.6 @0>
positions:
fusion.6
uses:
fusion.5, operand 1
from instruction:%fusion.6 = f64[4]{0} fusion(f64[4]{0} %fusion.10), kind=kLoop, calls=%fused_computation.6, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
<32 fusion.7 @0>
positions:
fusion.7
uses:
reduce-window, operand 0
from instruction:%fusion.7 = f64[500,4]{1,0} fusion(f64[500,4]{1,0} %fusion.9, f64[500]{0} %fusion.8), kind=kLoop, calls=%fused_computation.7, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
<33 fusion.8 @0>
positions:
fusion.8
uses:
fusion.7, operand 1
fusion.4, operand 0
fusion.5, operand 2
from instruction:%fusion.8 = f64[500]{0} fusion(f64[500,4]{1,0} %fusion.9, f64[12]{0} %Arg_0.1), kind=kLoop, calls=%fused_computation.8, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/div" source_file="jax_code.py" source_line=25}
<34 fusion.9 @0>
positions:
fusion.9
uses:
fusion.7, operand 0
fusion.8, operand 0
from instruction:%fusion.9 = f64[500,4]{1,0} fusion(f64[500,4]{1,0} %fusion.11, f64[4]{0} %fusion.10), kind=kLoop, calls=%fused_computation.9, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
<35 fusion.10 @0>
positions:
fusion.10
uses:
fusion.6, operand 0
fusion.9, operand 1
fusion.4, operand 2
from instruction:%fusion.10 = f64[4]{0} fusion(f64[12]{0} %Arg_0.1), kind=kLoop, calls=%fused_computation.10, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sqrt" source_file="jax_code.py" source_line=20}
<36 fusion.11 @0>
positions:
fusion.11
uses:
fusion.9, operand 0
fusion.2, operand 2
fusion.5, operand 0
fusion.1, operand 1
from instruction:%fusion.11 = f64[500,4]{1,0} fusion(f64[12]{0} %Arg_0.1), kind=kLoop, calls=%fused_computation.11, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/exp" source_file="jax_code.py" source_line=20}
HloLiveRange (max 22):
InstructionSequence:
0:Arg_0.1
1:fusion.11
2:fusion.10
3:fusion.9
4:fusion.8
5:fusion.4
6:fusion.3
7:fusion.2
8:constant.24
9:reduce-window.2
10:reduce.14
11:fusion.7
12:reduce-window
13:reduce.8
14:fusion.1
15:reduce-window.3
16:reduce.10
17:fusion.6
18:fusion.5
19:reduce-window.1
20:reduce.12
21:fusion
BufferLiveRange:
Arg_0.1{}:0-22
constant.24{}:8-20
reduce-window{}:12-13
reduce.8{}:13-21
reduce-window.1{}:19-20
reduce.12{}:20-21
reduce-window.2{}:9-10
reduce.14{}:10-21
reduce-window.3{}:15-16
reduce.10{}:16-21
fusion{}:21-22
fusion.1{}:14-15
fusion.2{}:7-9
fusion.3{}:6-7
fusion.4{}:5-14
fusion.5{}:18-19
fusion.6{}:17-18
fusion.7{}:11-12
fusion.8{}:4-18
fusion.9{}:3-11
fusion.10{}:2-17
fusion.11{}:1-18
Live ranges at 10 (peak):
Arg_0.1: 96 bytes
constant.24: 8 bytes
reduce-window.2: 512 bytes
reduce.14: 32 bytes
fusion.4: 16000 bytes
fusion.8: 4000 bytes
fusion.9: 16000 bytes
fusion.10: 32 bytes
fusion.11: 16000 bytes
HloModule jit__lambda_.1
region_2.113 {
Arg_0.114 = f64[] parameter(0)
Arg_1.115 = f64[] parameter(1)
ROOT add.116 = f64[] add(Arg_0.114, Arg_1.115), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
}
region_5.125 {
Arg_0.126 = f64[] parameter(0)
Arg_1.127 = f64[] parameter(1)
ROOT add.128 = f64[] add(Arg_0.126, Arg_1.127), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
}
region_7.133 {
Arg_0.134 = f64[] parameter(0)
Arg_1.135 = f64[] parameter(1)
ROOT add.136 = f64[] add(Arg_0.134, Arg_1.135), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
}
region_9.141 {
Arg_0.142 = f64[] parameter(0)
Arg_1.143 = f64[] parameter(1)
ROOT add.144 = f64[] add(Arg_0.142, Arg_1.143), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
}
fused_computation {
param_3.7 = f64[4]{0} parameter(3)
constant.108 = f64[] constant(0)
pad.8 = f64[12]{0} pad(param_3.7, constant.108), padding=0_8, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/scatter-add[update_consts=() dimension_numbers=ScatterDimensionNumbers(update_window_dims=(0,), inserted_window_dims=(), scatter_dims_to_operand_dims=(0,)) indices_are_sorted=True unique_indices=True mode=GatherScatterMode.PROMISE_IN_BOUNDS]" source_file="jax_code.py" source_line=24}
param_2.6 = f64[4]{0} parameter(2)
negate.15 = f64[4]{0} negate(param_2.6), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
constant.107 = f64[] constant(0.5)
broadcast.119 = f64[4]{0} broadcast(constant.107), dimensions={}
param_4.7 = f64[12]{0} parameter(4)
slice.21 = f64[4]{0} slice(param_4.7), slice={[8:12]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
multiply.54 = f64[4]{0} multiply(slice.21, slice.21), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
constant.109 = f64[] constant(6.2831853071795862)
broadcast.120 = f64[4]{0} broadcast(constant.109), dimensions={}
multiply.53 = f64[4]{0} multiply(multiply.54, broadcast.120), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
rsqrt.1 = f64[4]{0} rsqrt(multiply.53), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sqrt" source_file="jax_code.py" source_line=20}
multiply.52 = f64[4]{0} multiply(broadcast.119, rsqrt.1), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
multiply.51 = f64[4]{0} multiply(negate.15, multiply.52), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
multiply.50 = f64[4]{0} multiply(multiply.51, broadcast.120), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
param_1.5 = f64[4]{0} parameter(1)
negate.14 = f64[4]{0} negate(param_1.5), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
constant.110 = f64[] constant(2)
broadcast.121 = f64[4]{0} broadcast(constant.110), dimensions={}
multiply.49 = f64[4]{0} multiply(negate.14, broadcast.121), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
add.18 = f64[4]{0} add(multiply.50, multiply.49), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/add_any" source_file="jax_code.py" source_line=20}
multiply.47 = f64[4]{0} multiply(slice.21, broadcast.121), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
multiply.46 = f64[4]{0} multiply(add.18, multiply.47), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
pad.7 = f64[12]{0} pad(multiply.46, constant.108), padding=8_0, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/scatter-add[update_consts=() dimension_numbers=ScatterDimensionNumbers(update_window_dims=(0,), inserted_window_dims=(), scatter_dims_to_operand_dims=(0,)) indices_are_sorted=True unique_indices=True mode=GatherScatterMode.PROMISE_IN_BOUNDS]" source_file="jax_code.py" source_line=25}
add.17 = f64[12]{0} add(pad.8, pad.7), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/add_any" source_file="jax_code.py" source_line=25}
param_0.2 = f64[4]{0} parameter(0)
negate.13 = f64[4]{0} negate(param_0.2), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
pad.6 = f64[12]{0} pad(negate.13, constant.108), padding=4_4, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/scatter-add[update_consts=() dimension_numbers=ScatterDimensionNumbers(update_window_dims=(0,), inserted_window_dims=(), scatter_dims_to_operand_dims=(0,)) indices_are_sorted=True unique_indices=True mode=GatherScatterMode.PROMISE_IN_BOUNDS]" source_file="jax_code.py" source_line=25}
ROOT add.16 = f64[12]{0} add(add.17, pad.6), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/add_any" source_file="jax_code.py" source_line=25}
}
fused_computation.1 {
param_0.5 = f64[500,4]{1,0} parameter(0)
param_1.10 = f64[500,4]{1,0} parameter(1)
multiply.57 = f64[500,4]{1,0} multiply(param_0.5, param_1.10), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
param_2.14 = f64[12]{0} parameter(2)
slice.22 = f64[4]{0} slice(param_2.14), slice={[8:12]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
multiply.59 = f64[4]{0} multiply(slice.22, slice.22), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
constant.111 = f64[] constant(2)
broadcast.124 = f64[4]{0} broadcast(constant.111), dimensions={}
multiply.58 = f64[4]{0} multiply(multiply.59, broadcast.124), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
broadcast.123 = f64[500,4]{1,0} broadcast(multiply.58), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
divide.17 = f64[500,4]{1,0} divide(multiply.57, broadcast.123), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
negate.16 = f64[500,4]{1,0} negate(divide.17), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
constant.112 = f64[500]{0} constant({...}), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
broadcast.126 = f64[500,4]{1,0} broadcast(constant.112), dimensions={0}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
slice.23 = f64[4]{0} slice(param_2.14), slice={[4:8]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
broadcast.125 = f64[500,4]{1,0} broadcast(slice.23), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
subtract.2 = f64[500,4]{1,0} subtract(broadcast.126, broadcast.125), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
broadcast.122 = f64[500,4]{1,0} broadcast(constant.111), dimensions={}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
multiply.56 = f64[500,4]{1,0} multiply(subtract.2, broadcast.122), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
ROOT multiply.55 = f64[500,4]{1,0} multiply(negate.16, multiply.56), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
}
fused_computation.2 {
param_1.14 = f64[500,4]{1,0} parameter(1)
param_2.18 = f64[500,4]{1,0} parameter(2)
multiply.62 = f64[500,4]{1,0} multiply(param_1.14, param_2.18), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
param_0.8 = f64[4]{0} parameter(0)
broadcast.127 = f64[500,4]{1,0} broadcast(param_0.8), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
multiply.61 = f64[500,4]{1,0} multiply(multiply.62, broadcast.127), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
constant.113 = f64[500]{0} constant({...}), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
broadcast.129 = f64[500,4]{1,0} broadcast(constant.113), dimensions={0}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
param_3.20 = f64[12]{0} parameter(3)
slice.24 = f64[4]{0} slice(param_3.20), slice={[4:8]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
broadcast.128 = f64[500,4]{1,0} broadcast(slice.24), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
subtract.3 = f64[500,4]{1,0} subtract(broadcast.129, broadcast.128), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
multiply.63 = f64[500,4]{1,0} multiply(subtract.3, subtract.3), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
negate.17 = f64[500,4]{1,0} negate(multiply.63), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
ROOT multiply.60 = f64[500,4]{1,0} multiply(multiply.61, negate.17), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
}
fused_computation.3 {
constant.114 = f64[] constant(1)
broadcast.130 = f64[4]{0} broadcast(constant.114), dimensions={}
param_0.13 = f64[12]{0} parameter(0)
slice.25 = f64[4]{0} slice(param_0.13), slice={[8:12]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
multiply.66 = f64[4]{0} multiply(slice.25, slice.25), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
constant.115 = f64[] constant(2)
broadcast.131 = f64[4]{0} broadcast(constant.115), dimensions={}
multiply.65 = f64[4]{0} multiply(multiply.66, broadcast.131), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
multiply.64 = f64[4]{0} multiply(multiply.65, multiply.65), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
ROOT divide.18 = f64[4]{0} divide(broadcast.130, multiply.64), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
}
fused_computation.4 {
param_0.16 = f64[500]{0} parameter(0)
broadcast.132 = f64[500,4]{1,0} broadcast(param_0.16), dimensions={0}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/broadcast_in_dim[shape=(500, 4) broadcast_dimensions=(0,)]" source_file="jax_code.py" source_line=25}
param_1.24 = f64[12]{0} parameter(1)
slice.26 = f64[4]{0} slice(param_1.24), slice={[0:4]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=24}
broadcast.133 = f64[500,4]{1,0} broadcast(slice.26), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
multiply.67 = f64[500,4]{1,0} multiply(broadcast.132, broadcast.133), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
param_2.23 = f64[4]{0} parameter(2)
broadcast.134 = f64[500,4]{1,0} broadcast(param_2.23), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
ROOT divide.19 = f64[500,4]{1,0} divide(multiply.67, broadcast.134), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
}
fused_computation.5 {
param_2.28 = f64[500]{0} parameter(2)
broadcast.136 = f64[500,4]{1,0} broadcast(param_2.28), dimensions={0}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/broadcast_in_dim[shape=(500, 4) broadcast_dimensions=(0,)]" source_file="jax_code.py" source_line=25}
param_3.24 = f64[12]{0} parameter(3)
slice.27 = f64[4]{0} slice(param_3.24), slice={[0:4]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=24}
broadcast.137 = f64[500,4]{1,0} broadcast(slice.27), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
multiply.70 = f64[500,4]{1,0} multiply(broadcast.136, broadcast.137), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
param_1.27 = f64[4]{0} parameter(1)
broadcast.135 = f64[500,4]{1,0} broadcast(param_1.27), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
multiply.69 = f64[500,4]{1,0} multiply(multiply.70, broadcast.135), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
param_0.18 = f64[500,4]{1,0} parameter(0)
ROOT multiply.68 = f64[500,4]{1,0} multiply(multiply.69, param_0.18), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
}
fused_computation.6 {
constant.116 = f64[] constant(1)
broadcast.138 = f64[4]{0} broadcast(constant.116), dimensions={}
param_0.20 = f64[4]{0} parameter(0)
multiply.73 = f64[4]{0} multiply(param_0.20, param_0.20), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
ROOT divide.20 = f64[4]{0} divide(broadcast.138, multiply.73), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
}
fused_computation.7 {
param_0.21 = f64[500,4]{1,0} parameter(0)
param_1.32 = f64[500]{0} parameter(1)
broadcast.139 = f64[500,4]{1,0} broadcast(param_1.32), dimensions={0}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/broadcast_in_dim[shape=(500, 4) broadcast_dimensions=(0,)]" source_file="jax_code.py" source_line=25}
ROOT multiply.74 = f64[500,4]{1,0} multiply(param_0.21, broadcast.139), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
}
region_0.51 {
Arg_0.52 = f64[] parameter(0)
Arg_1.53 = f64[] parameter(1)
ROOT add.54 = f64[] add(Arg_0.52, Arg_1.53), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/reduce_sum[axes=(1,)]" source_file="jax_code.py" source_line=25}
}
fused_computation.8 {
constant.118 = f64[] constant(1)
broadcast.141 = f64[500]{0} broadcast(constant.118), dimensions={}, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/broadcast_in_dim[shape=(500,) broadcast_dimensions=()]" source_file="jax_code.py" source_line=25}
param_0.23 = f64[500,4]{1,0} parameter(0)
param_1.36 = f64[12]{0} parameter(1)
slice.28 = f64[4]{0} slice(param_1.36), slice={[0:4]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=24}
broadcast.140 = f64[500,4]{1,0} broadcast(slice.28), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
multiply.75 = f64[500,4]{1,0} multiply(param_0.23, broadcast.140), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
constant.117 = f64[] constant(0)
reduce.23 = f64[500]{0} reduce(multiply.75, constant.117), dimensions={1}, to_apply=region_0.51, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/reduce_sum[axes=(1,)]" source_file="jax_code.py" source_line=25}
ROOT divide.21 = f64[500]{0} divide(broadcast.141, reduce.23), metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/div" source_file="jax_code.py" source_line=25}
}
fused_computation.9 {
param_0.24 = f64[500,4]{1,0} parameter(0)
param_1.38 = f64[4]{0} parameter(1)
broadcast.142 = f64[500,4]{1,0} broadcast(param_1.38), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
ROOT divide.22 = f64[500,4]{1,0} divide(param_0.24, broadcast.142), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
}
fused_computation.10 {
param_0.28 = f64[12]{0} parameter(0)
slice.29 = f64[4]{0} slice(param_0.28), slice={[8:12]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
multiply.77 = f64[4]{0} multiply(slice.29, slice.29), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
constant.119 = f64[] constant(6.2831853071795862)
broadcast.143 = f64[4]{0} broadcast(constant.119), dimensions={}
multiply.76 = f64[4]{0} multiply(multiply.77, broadcast.143), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
ROOT sqrt.2 = f64[4]{0} sqrt(multiply.76), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sqrt" source_file="jax_code.py" source_line=20}
}
fused_computation.11 {
constant.121 = f64[500]{0} constant({...}), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
broadcast.147 = f64[500,4]{1,0} broadcast(constant.121), dimensions={0}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
param_0.31 = f64[12]{0} parameter(0)
slice.31 = f64[4]{0} slice(param_0.31), slice={[4:8]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
broadcast.146 = f64[500,4]{1,0} broadcast(slice.31), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
subtract.4 = f64[500,4]{1,0} subtract(broadcast.147, broadcast.146), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sub" source_file="jax_code.py" source_line=20}
multiply.80 = f64[500,4]{1,0} multiply(subtract.4, subtract.4), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
negate.18 = f64[500,4]{1,0} negate(multiply.80), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/neg" source_file="jax_code.py" source_line=20}
slice.30 = f64[4]{0} slice(param_0.31), slice={[8:12]}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/gather[dimension_numbers=GatherDimensionNumbers(offset_dims=(0,), collapsed_slice_dims=(), start_index_map=(0,)) slice_sizes=(4,) unique_indices=True indices_are_sorted=True mode=GatherScatterMode.PROMISE_IN_BOUNDS fill_value=None]" source_file="jax_code.py" source_line=25}
multiply.79 = f64[4]{0} multiply(slice.30, slice.30), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/mul" source_file="jax_code.py" source_line=25}
constant.120 = f64[] constant(2)
broadcast.145 = f64[4]{0} broadcast(constant.120), dimensions={}
multiply.78 = f64[4]{0} multiply(multiply.79, broadcast.145), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
broadcast.144 = f64[500,4]{1,0} broadcast(multiply.78), dimensions={1}, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
divide.23 = f64[500,4]{1,0} divide(negate.18, broadcast.144), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
ROOT exponential.2 = f64[500,4]{1,0} exponential(divide.23), metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/exp" source_file="jax_code.py" source_line=20}
}
ENTRY main.253 {
Arg_0.1 = f64[12]{0} parameter(0)
fusion.11 = f64[500,4]{1,0} fusion(Arg_0.1), kind=kLoop, calls=fused_computation.11, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/exp" source_file="jax_code.py" source_line=20}
fusion.10 = f64[4]{0} fusion(Arg_0.1), kind=kLoop, calls=fused_computation.10, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/sqrt" source_file="jax_code.py" source_line=20}
fusion.9 = f64[500,4]{1,0} fusion(fusion.11, fusion.10), kind=kLoop, calls=fused_computation.9, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
fusion.8 = f64[500]{0} fusion(fusion.9, Arg_0.1), kind=kLoop, calls=fused_computation.8, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/div" source_file="jax_code.py" source_line=25}
fusion.4 = f64[500,4]{1,0} fusion(fusion.8, Arg_0.1, fusion.10), kind=kLoop, calls=fused_computation.4, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
fusion.1 = f64[500,4]{1,0} fusion(fusion.4, fusion.11, Arg_0.1), kind=kLoop, calls=fused_computation.1, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
constant.24 = f64[] constant(0)
reduce-window.3 = f64[16,4]{1,0} reduce-window(fusion.1, constant.24), window={size=32x1 stride=32x1 pad=6_6x0_0}, to_apply=region_9.141
reduce.10 = f64[4]{0} reduce(reduce-window.3, constant.24), dimensions={0}, to_apply=region_9.141, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
fusion.3 = f64[4]{0} fusion(Arg_0.1), kind=kLoop, calls=fused_computation.3, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
fusion.2 = f64[500,4]{1,0} fusion(fusion.3, fusion.4, fusion.11, Arg_0.1), kind=kLoop, calls=fused_computation.2, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
reduce-window.2 = f64[16,4]{1,0} reduce-window(fusion.2, constant.24), window={size=32x1 stride=32x1 pad=6_6x0_0}, to_apply=region_7.133
reduce.14 = f64[4]{0} reduce(reduce-window.2, constant.24), dimensions={0}, to_apply=region_7.133, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
fusion.6 = f64[4]{0} fusion(fusion.10), kind=kLoop, calls=fused_computation.6, metadata={op_name="jit(<lambda>)/jit(main)/jvp(jit(mixture_loglikelihood))/jit(normal_pdf)/div" source_file="jax_code.py" source_line=20}
fusion.5 = f64[500,4]{1,0} fusion(fusion.11, fusion.6, fusion.8, Arg_0.1), kind=kLoop, calls=fused_computation.5, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/mul" source_file="jax_code.py" source_line=20}
reduce-window.1 = f64[16,4]{1,0} reduce-window(fusion.5, constant.24), window={size=32x1 stride=32x1 pad=6_6x0_0}, to_apply=region_5.125
reduce.12 = f64[4]{0} reduce(reduce-window.1, constant.24), dimensions={0}, to_apply=region_5.125, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/jit(normal_pdf)/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=20}
fusion.7 = f64[500,4]{1,0} fusion(fusion.9, fusion.8), kind=kLoop, calls=fused_computation.7, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/mul" source_file="jax_code.py" source_line=25}
reduce-window = f64[16,4]{1,0} reduce-window(fusion.7, constant.24), window={size=32x1 stride=32x1 pad=6_6x0_0}, to_apply=region_2.113
reduce.8 = f64[4]{0} reduce(reduce-window, constant.24), dimensions={0}, to_apply=region_2.113, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/reduce_sum[axes=(0,)]" source_file="jax_code.py" source_line=25}
ROOT fusion = f64[12]{0} fusion(reduce.10, reduce.14, reduce.12, reduce.8, Arg_0.1), kind=kLoop, calls=fused_computation, metadata={op_name="jit(<lambda>)/jit(main)/transpose(jvp(jit(mixture_loglikelihood)))/add_any" source_file="jax_code.py" source_line=25}
}
; ModuleID = '__compute_module'
source_filename = "__compute_module"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@0 = external dso_local unnamed_addr constant [8 x i8], align 8
@1 = external dso_local unnamed_addr constant [8 x i8]
@2 = external dso_local unnamed_addr constant [4000 x i8]
@3 = external dso_local unnamed_addr constant [8 x i8]
@4 = external dso_local unnamed_addr constant [8 x i8]
@5 = external dso_local unnamed_addr constant [8 x i8]
@6 = external dso_local unnamed_addr constant [8 x i8]
@7 = external dso_local unnamed_addr constant [8 x i8]
@8 = external dso_local unnamed_addr constant [4000 x i8]
@9 = external dso_local unnamed_addr constant [8 x i8]
@10 = external dso_local unnamed_addr constant [4000 x i8]
@11 = external dso_local unnamed_addr constant [8 x i8]
@12 = external dso_local unnamed_addr constant [8 x i8]
@13 = external dso_local unnamed_addr constant [8 x i8]
@14 = external dso_local unnamed_addr constant [8 x i8]
@15 = external dso_local unnamed_addr constant [8 x i8]
; Function Attrs: uwtable
define internal void @region_0.51(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.54 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.52 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.53 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.52, align 8, !alias.scope !1, !noalias !4
%5 = load double, double* %Arg_1.53, align 8, !alias.scope !6, !noalias !4
%add.541 = fadd reassoc double %4, %5
store double %add.541, double* %add.54, align 8, !alias.scope !4
%load_ret_value = load double, double* %add.54, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define internal void @region_9.141(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.144 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.142 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.143 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.142, align 8, !alias.scope !8, !noalias !10
%5 = load double, double* %Arg_1.143, align 8, !alias.scope !12, !noalias !10
%add.1441 = fadd reassoc double %4, %5
store double %add.1441, double* %add.144, align 8, !alias.scope !10
%load_ret_value = load double, double* %add.144, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define internal void @region_7.133(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.136 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.134 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.135 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.134, align 8, !alias.scope !14, !noalias !16
%5 = load double, double* %Arg_1.135, align 8, !alias.scope !18, !noalias !16
%add.1361 = fadd reassoc double %4, %5
store double %add.1361, double* %add.136, align 8, !alias.scope !16
%load_ret_value = load double, double* %add.136, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define internal void @region_5.125(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.128 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.126 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.127 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.126, align 8, !alias.scope !20, !noalias !22
%5 = load double, double* %Arg_1.127, align 8, !alias.scope !24, !noalias !22
%add.1281 = fadd reassoc double %4, %5
store double %add.1281, double* %add.128, align 8, !alias.scope !22
%load_ret_value = load double, double* %add.128, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define internal void @region_2.113(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.116 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.114 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.115 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.114, align 8, !alias.scope !26, !noalias !28
%5 = load double, double* %Arg_1.115, align 8, !alias.scope !30, !noalias !28
%add.1161 = fadd reassoc double %4, %5
store double %add.1161, double* %add.116, align 8, !alias.scope !28
%load_ret_value = load double, double* %add.116, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define void @main.253(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%pad_result_addr102 = alloca double, align 8
%pad_result_addr94 = alloca double, align 8
%pad_result_addr = alloca double, align 8
%fusion.invar_address.dim.0 = alloca i64, align 8
%reduce-window.1.vectorized_inner.invar_address.reduction_dim.0 = alloca i64, align 8
%accumulator81 = alloca <4 x double>, align 32
%reducer_function_parameter_addresses78 = alloca i8*, i32 2, align 8
%reducer_function_return_value_addr77 = alloca double, align 8
%arg_addr76 = alloca double, align 8
%arg_addr75 = alloca double, align 8
%reduce-window.1.invar_address.window.1 = alloca i64, align 8
%reduce-window.1.invar_address.window.0 = alloca i64, align 8
%reduce_window_accum_ptr69 = alloca double, align 8
%reduce-window.1.invar_address.dim.1 = alloca i64, align 8
%reduce-window.1.invar_address.dim.0 = alloca i64, align 8
%fusion.5.invar_address.dim.1 = alloca i64, align 8
%fusion.5.invar_address.dim.0 = alloca i64, align 8
%fusion.6.invar_address.dim.0 = alloca i64, align 8
%reduce-window.3.vectorized_inner.invar_address.reduction_dim.0 = alloca i64, align 8
%accumulator60 = alloca <4 x double>, align 32
%reducer_function_parameter_addresses57 = alloca i8*, i32 2, align 8
%reducer_function_return_value_addr56 = alloca double, align 8
%arg_addr55 = alloca double, align 8
%arg_addr54 = alloca double, align 8
%reduce-window.3.invar_address.window.1 = alloca i64, align 8
%reduce-window.3.invar_address.window.0 = alloca i64, align 8
%reduce_window_accum_ptr48 = alloca double, align 8
%reduce-window.3.invar_address.dim.1 = alloca i64, align 8
%reduce-window.3.invar_address.dim.0 = alloca i64, align 8
%fusion.1.invar_address.dim.1 = alloca i64, align 8
%fusion.1.invar_address.dim.0 = alloca i64, align 8
%reduce-window.vectorized_inner.invar_address.reduction_dim.0 = alloca i64, align 8
%accumulator38 = alloca <4 x double>, align 32
%reducer_function_parameter_addresses35 = alloca i8*, i32 2, align 8
%reducer_function_return_value_addr34 = alloca double, align 8
%arg_addr33 = alloca double, align 8
%arg_addr32 = alloca double, align 8
%reduce-window.invar_address.window.1 = alloca i64, align 8
%reduce-window.invar_address.window.0 = alloca i64, align 8
%reduce_window_accum_ptr26 = alloca double, align 8
%reduce-window.invar_address.dim.1 = alloca i64, align 8
%reduce-window.invar_address.dim.0 = alloca i64, align 8
%fusion.7.invar_address.dim.1 = alloca i64, align 8
%fusion.7.invar_address.dim.0 = alloca i64, align 8
%reduce-window.2.vectorized_inner.invar_address.reduction_dim.0 = alloca i64, align 8
%accumulator = alloca <4 x double>, align 32
%reducer_function_parameter_addresses = alloca i8*, i32 2, align 8
%reducer_function_return_value_addr = alloca double, align 8
%arg_addr20 = alloca double, align 8
%arg_addr19 = alloca double, align 8
%reduce-window.2.invar_address.window.1 = alloca i64, align 8
%reduce-window.2.invar_address.window.0 = alloca i64, align 8
%reduce_window_accum_ptr = alloca double, align 8
%reduce-window.2.invar_address.dim.1 = alloca i64, align 8
%reduce-window.2.invar_address.dim.0 = alloca i64, align 8
%fusion.2.invar_address.dim.1 = alloca i64, align 8
%fusion.2.invar_address.dim.0 = alloca i64, align 8
%fusion.3.invar_address.dim.0 = alloca i64, align 8
%fusion.4.invar_address.dim.1 = alloca i64, align 8
%fusion.4.invar_address.dim.0 = alloca i64, align 8
%reduce_function_parameter_addresses = alloca i8*, i32 2, align 8
%reduce_function_return_value_addr = alloca double, align 8
%arg_addr8 = alloca double, align 8
%arg_addr = alloca double, align 8
%reduce.23.inner.invar_address.reduction_dim.1 = alloca i64, align 8
%accumulator_0 = alloca double, align 8
%fusion.8.invar_address.dim.0 = alloca i64, align 8
%fusion.9.invar_address.dim.1 = alloca i64, align 8
%fusion.9.invar_address.dim.0 = alloca i64, align 8
%fusion.10.invar_address.dim.0 = alloca i64, align 8
%fusion.11.invar_address.dim.1 = alloca i64, align 8
%fusion.11.invar_address.dim.0 = alloca i64, align 8
%0 = getelementptr inbounds i8*, i8** %buffer_table, i64 1
%1 = load i8*, i8** %0, align 8, !invariant.load !32, !dereferenceable !33, !align !34
%Arg_0.1 = bitcast i8* %1 to [12 x double]*
%2 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%3 = load i8*, i8** %2, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%fusion.11 = bitcast i8* %3 to [500 x [4 x double]]*
store i64 0, i64* %fusion.11.invar_address.dim.0, align 8
br label %fusion.11.loop_header.dim.0
return: ; preds = %fusion.loop_exit.dim.0
ret void
fusion.11.loop_header.dim.0: ; preds = %fusion.11.loop_exit.dim.1, %entry
%fusion.11.indvar.dim.0 = load i64, i64* %fusion.11.invar_address.dim.0, align 8
%4 = icmp uge i64 %fusion.11.indvar.dim.0, 500
br i1 %4, label %fusion.11.loop_exit.dim.0, label %fusion.11.loop_body.dim.0
fusion.11.loop_body.dim.0: ; preds = %fusion.11.loop_header.dim.0
store i64 0, i64* %fusion.11.invar_address.dim.1, align 8
br label %fusion.11.loop_header.dim.1
fusion.11.loop_header.dim.1: ; preds = %fusion.11.loop_body.dim.1, %fusion.11.loop_body.dim.0
%fusion.11.indvar.dim.1 = load i64, i64* %fusion.11.invar_address.dim.1, align 8
%5 = icmp uge i64 %fusion.11.indvar.dim.1, 4
br i1 %5, label %fusion.11.loop_exit.dim.1, label %fusion.11.loop_body.dim.1
fusion.11.loop_body.dim.1: ; preds = %fusion.11.loop_header.dim.1
%constant.121 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @2 to [500 x double]*), i64 0, i64 %fusion.11.indvar.dim.0
%constant.1212 = load double, double* %constant.121, align 8
%6 = add i64 %fusion.11.indvar.dim.1, 4
%7 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %6
%8 = load double, double* %7, align 8, !invariant.load !32, !noalias !36
%subtract.4 = fsub double %constant.1212, %8
%multiply.80 = fmul double %subtract.4, %subtract.4
%9 = fneg double %multiply.80
%10 = add i64 %fusion.11.indvar.dim.1, 8
%11 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %10
%12 = load double, double* %11, align 8, !invariant.load !32, !noalias !36
%multiply.79 = fmul double %12, %12
%constant.120 = load double, double* bitcast ([8 x i8]* @1 to double*), align 8
%multiply.78 = fmul double %multiply.79, %constant.120
%divide.23 = fdiv double %9, %multiply.78
%13 = call double @llvm.exp.f64(double %divide.23)
%14 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.11.indvar.dim.0, i64 %fusion.11.indvar.dim.1
store double %13, double* %14, align 8, !alias.scope !49, !noalias !50
%invar.inc1 = add nuw nsw i64 %fusion.11.indvar.dim.1, 1
store i64 %invar.inc1, i64* %fusion.11.invar_address.dim.1, align 8
br label %fusion.11.loop_header.dim.1
fusion.11.loop_exit.dim.1: ; preds = %fusion.11.loop_header.dim.1
%invar.inc = add nuw nsw i64 %fusion.11.indvar.dim.0, 1
store i64 %invar.inc, i64* %fusion.11.invar_address.dim.0, align 8
br label %fusion.11.loop_header.dim.0
fusion.11.loop_exit.dim.0: ; preds = %fusion.11.loop_header.dim.0
%15 = getelementptr inbounds i8*, i8** %buffer_table, i64 0
%16 = load i8*, i8** %15, align 8, !invariant.load !32, !dereferenceable !33, !align !34
%fusion.10 = bitcast i8* %16 to [4 x double]*
store i64 0, i64* %fusion.10.invar_address.dim.0, align 8
br label %fusion.10.loop_header.dim.0
fusion.10.loop_header.dim.0: ; preds = %fusion.10.loop_body.dim.0, %fusion.11.loop_exit.dim.0
%fusion.10.indvar.dim.0 = load i64, i64* %fusion.10.invar_address.dim.0, align 8
%17 = icmp uge i64 %fusion.10.indvar.dim.0, 4
br i1 %17, label %fusion.10.loop_exit.dim.0, label %fusion.10.loop_body.dim.0
fusion.10.loop_body.dim.0: ; preds = %fusion.10.loop_header.dim.0
%18 = add i64 %fusion.10.indvar.dim.0, 8
%19 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %18
%20 = load double, double* %19, align 8, !invariant.load !32, !noalias !36
%multiply.77 = fmul double %20, %20
%constant.119 = load double, double* bitcast ([8 x i8]* @3 to double*), align 8
%multiply.76 = fmul double %multiply.77, %constant.119
%21 = call double @llvm.sqrt.f64(double %multiply.76)
%22 = getelementptr inbounds [4 x double], [4 x double]* %fusion.10, i64 0, i64 %fusion.10.indvar.dim.0
store double %21, double* %22, align 8, !alias.scope !51, !noalias !52
%invar.inc3 = add nuw nsw i64 %fusion.10.indvar.dim.0, 1
store i64 %invar.inc3, i64* %fusion.10.invar_address.dim.0, align 8
br label %fusion.10.loop_header.dim.0
fusion.10.loop_exit.dim.0: ; preds = %fusion.10.loop_header.dim.0
%23 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%24 = load i8*, i8** %23, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%25 = getelementptr inbounds i8, i8* %24, i64 32000
%fusion.9 = bitcast i8* %25 to [500 x [4 x double]]*
store i64 0, i64* %fusion.9.invar_address.dim.0, align 8
br label %fusion.9.loop_header.dim.0
fusion.9.loop_header.dim.0: ; preds = %fusion.9.loop_exit.dim.1, %fusion.10.loop_exit.dim.0
%fusion.9.indvar.dim.0 = load i64, i64* %fusion.9.invar_address.dim.0, align 8
%26 = icmp uge i64 %fusion.9.indvar.dim.0, 500
br i1 %26, label %fusion.9.loop_exit.dim.0, label %fusion.9.loop_body.dim.0
fusion.9.loop_body.dim.0: ; preds = %fusion.9.loop_header.dim.0
store i64 0, i64* %fusion.9.invar_address.dim.1, align 8
br label %fusion.9.loop_header.dim.1
fusion.9.loop_header.dim.1: ; preds = %fusion.9.loop_body.dim.1, %fusion.9.loop_body.dim.0
%fusion.9.indvar.dim.1 = load i64, i64* %fusion.9.invar_address.dim.1, align 8
%27 = icmp uge i64 %fusion.9.indvar.dim.1, 4
br i1 %27, label %fusion.9.loop_exit.dim.1, label %fusion.9.loop_body.dim.1
fusion.9.loop_body.dim.1: ; preds = %fusion.9.loop_header.dim.1
%28 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.9.indvar.dim.0, i64 %fusion.9.indvar.dim.1
%29 = load double, double* %28, align 8, !alias.scope !49, !noalias !50
%30 = getelementptr inbounds [4 x double], [4 x double]* %fusion.10, i64 0, i64 %fusion.9.indvar.dim.1
%31 = load double, double* %30, align 8, !alias.scope !51, !noalias !52
%divide.22 = fdiv double %29, %31
%32 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.9.indvar.dim.0, i64 %fusion.9.indvar.dim.1
store double %divide.22, double* %32, align 8, !alias.scope !53, !noalias !54
%invar.inc5 = add nuw nsw i64 %fusion.9.indvar.dim.1, 1
store i64 %invar.inc5, i64* %fusion.9.invar_address.dim.1, align 8
br label %fusion.9.loop_header.dim.1
fusion.9.loop_exit.dim.1: ; preds = %fusion.9.loop_header.dim.1
%invar.inc4 = add nuw nsw i64 %fusion.9.indvar.dim.0, 1
store i64 %invar.inc4, i64* %fusion.9.invar_address.dim.0, align 8
br label %fusion.9.loop_header.dim.0
fusion.9.loop_exit.dim.0: ; preds = %fusion.9.loop_header.dim.0
%33 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%34 = load i8*, i8** %33, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%35 = getelementptr inbounds i8, i8* %34, i64 64000
%fusion.8 = bitcast i8* %35 to [500 x double]*
store i64 0, i64* %fusion.8.invar_address.dim.0, align 8
br label %fusion.8.loop_header.dim.0
fusion.8.loop_header.dim.0: ; preds = %reduce.23.inner.loop_exit.reduction_dim.1, %fusion.9.loop_exit.dim.0
%fusion.8.indvar.dim.0 = load i64, i64* %fusion.8.invar_address.dim.0, align 8
%36 = icmp uge i64 %fusion.8.indvar.dim.0, 500
br i1 %36, label %fusion.8.loop_exit.dim.0, label %fusion.8.loop_body.dim.0
fusion.8.loop_body.dim.0: ; preds = %fusion.8.loop_header.dim.0
%constant.118 = load double, double* bitcast ([8 x i8]* @5 to double*), align 8
%constant.117 = load double, double* bitcast ([8 x i8]* @4 to double*), align 8
store double %constant.117, double* %accumulator_0, align 8
store i64 0, i64* %reduce.23.inner.invar_address.reduction_dim.1, align 8
br label %reduce.23.inner.loop_header.reduction_dim.1
reduce.23.inner.loop_header.reduction_dim.1: ; preds = %reduce.23.inner.loop_body.reduction_dim.1, %fusion.8.loop_body.dim.0
%reduce.23.inner.indvar.reduction_dim.1 = load i64, i64* %reduce.23.inner.invar_address.reduction_dim.1, align 8
%37 = icmp uge i64 %reduce.23.inner.indvar.reduction_dim.1, 4
br i1 %37, label %reduce.23.inner.loop_exit.reduction_dim.1, label %reduce.23.inner.loop_body.reduction_dim.1
reduce.23.inner.loop_body.reduction_dim.1: ; preds = %reduce.23.inner.loop_header.reduction_dim.1
%38 = load double, double* %accumulator_0, align 8
%39 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.8.indvar.dim.0, i64 %reduce.23.inner.indvar.reduction_dim.1
%40 = load double, double* %39, align 8, !alias.scope !53, !noalias !54
%41 = add i64 %reduce.23.inner.indvar.reduction_dim.1, 0
%42 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %41
%43 = load double, double* %42, align 8, !invariant.load !32, !noalias !36
%multiply.75 = fmul double %40, %43
store double %38, double* %arg_addr, align 8
store double %multiply.75, double* %arg_addr8, align 8
%reduce_function_parameter_0_address_as_i8ptr = bitcast double* %arg_addr to i8*
%44 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses, i64 0
store i8* %reduce_function_parameter_0_address_as_i8ptr, i8** %44, align 8
%reduce_function_parameter_1_address_as_i8ptr = bitcast double* %arg_addr8 to i8*
%45 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses, i64 1
store i8* %reduce_function_parameter_1_address_as_i8ptr, i8** %45, align 8
%46 = bitcast double* %reduce_function_return_value_addr to i8*
call void @region_0.51(i8* %46, i8* %run_options, i8** %reduce_function_parameter_addresses, i8** null, i8* %status, i64* %prof_counters)
%47 = load double, double* %reduce_function_return_value_addr, align 8
store double %47, double* %accumulator_0, align 8
%invar.inc7 = add nuw nsw i64 %reduce.23.inner.indvar.reduction_dim.1, 1
store i64 %invar.inc7, i64* %reduce.23.inner.invar_address.reduction_dim.1, align 8
br label %reduce.23.inner.loop_header.reduction_dim.1
reduce.23.inner.loop_exit.reduction_dim.1: ; preds = %reduce.23.inner.loop_header.reduction_dim.1
%48 = load double, double* %accumulator_0, align 8
%divide.21 = fdiv double %constant.118, %48
%49 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.8.indvar.dim.0
store double %divide.21, double* %49, align 8, !alias.scope !55, !noalias !56
%invar.inc6 = add nuw nsw i64 %fusion.8.indvar.dim.0, 1
store i64 %invar.inc6, i64* %fusion.8.invar_address.dim.0, align 8
br label %fusion.8.loop_header.dim.0
fusion.8.loop_exit.dim.0: ; preds = %fusion.8.loop_header.dim.0
%50 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%51 = load i8*, i8** %50, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%52 = getelementptr inbounds i8, i8* %51, i64 16000
%fusion.4 = bitcast i8* %52 to [500 x [4 x double]]*
store i64 0, i64* %fusion.4.invar_address.dim.0, align 8
br label %fusion.4.loop_header.dim.0
fusion.4.loop_header.dim.0: ; preds = %fusion.4.loop_exit.dim.1, %fusion.8.loop_exit.dim.0
%fusion.4.indvar.dim.0 = load i64, i64* %fusion.4.invar_address.dim.0, align 8
%53 = icmp uge i64 %fusion.4.indvar.dim.0, 500
br i1 %53, label %fusion.4.loop_exit.dim.0, label %fusion.4.loop_body.dim.0
fusion.4.loop_body.dim.0: ; preds = %fusion.4.loop_header.dim.0
store i64 0, i64* %fusion.4.invar_address.dim.1, align 8
br label %fusion.4.loop_header.dim.1
fusion.4.loop_header.dim.1: ; preds = %fusion.4.loop_body.dim.1, %fusion.4.loop_body.dim.0
%fusion.4.indvar.dim.1 = load i64, i64* %fusion.4.invar_address.dim.1, align 8
%54 = icmp uge i64 %fusion.4.indvar.dim.1, 4
br i1 %54, label %fusion.4.loop_exit.dim.1, label %fusion.4.loop_body.dim.1
fusion.4.loop_body.dim.1: ; preds = %fusion.4.loop_header.dim.1
%55 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.4.indvar.dim.0
%56 = load double, double* %55, align 8, !alias.scope !55, !noalias !56
%57 = add i64 %fusion.4.indvar.dim.1, 0
%58 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %57
%59 = load double, double* %58, align 8, !invariant.load !32, !noalias !36
%multiply.67 = fmul double %56, %59
%60 = getelementptr inbounds [4 x double], [4 x double]* %fusion.10, i64 0, i64 %fusion.4.indvar.dim.1
%61 = load double, double* %60, align 8, !alias.scope !51, !noalias !52
%divide.19 = fdiv double %multiply.67, %61
%62 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.4.indvar.dim.0, i64 %fusion.4.indvar.dim.1
store double %divide.19, double* %62, align 8, !alias.scope !57, !noalias !58
%invar.inc10 = add nuw nsw i64 %fusion.4.indvar.dim.1, 1
store i64 %invar.inc10, i64* %fusion.4.invar_address.dim.1, align 8
br label %fusion.4.loop_header.dim.1
fusion.4.loop_exit.dim.1: ; preds = %fusion.4.loop_header.dim.1
%invar.inc9 = add nuw nsw i64 %fusion.4.indvar.dim.0, 1
store i64 %invar.inc9, i64* %fusion.4.invar_address.dim.0, align 8
br label %fusion.4.loop_header.dim.0
fusion.4.loop_exit.dim.0: ; preds = %fusion.4.loop_header.dim.0
%63 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%64 = load i8*, i8** %63, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%65 = getelementptr inbounds i8, i8* %64, i64 68000
%fusion.3 = bitcast i8* %65 to [4 x double]*
store i64 0, i64* %fusion.3.invar_address.dim.0, align 8
br label %fusion.3.loop_header.dim.0
fusion.3.loop_header.dim.0: ; preds = %fusion.3.loop_body.dim.0, %fusion.4.loop_exit.dim.0
%fusion.3.indvar.dim.0 = load i64, i64* %fusion.3.invar_address.dim.0, align 8
%66 = icmp uge i64 %fusion.3.indvar.dim.0, 4
br i1 %66, label %fusion.3.loop_exit.dim.0, label %fusion.3.loop_body.dim.0
fusion.3.loop_body.dim.0: ; preds = %fusion.3.loop_header.dim.0
%constant.114 = load double, double* bitcast ([8 x i8]* @7 to double*), align 8
%67 = add i64 %fusion.3.indvar.dim.0, 8
%68 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %67
%69 = load double, double* %68, align 8, !invariant.load !32, !noalias !36
%multiply.66 = fmul double %69, %69
%constant.115 = load double, double* bitcast ([8 x i8]* @6 to double*), align 8
%multiply.65 = fmul double %multiply.66, %constant.115
%multiply.64 = fmul double %multiply.65, %multiply.65
%divide.18 = fdiv double %constant.114, %multiply.64
%70 = getelementptr inbounds [4 x double], [4 x double]* %fusion.3, i64 0, i64 %fusion.3.indvar.dim.0
store double %divide.18, double* %70, align 8, !alias.scope !59, !noalias !60
%invar.inc11 = add nuw nsw i64 %fusion.3.indvar.dim.0, 1
store i64 %invar.inc11, i64* %fusion.3.invar_address.dim.0, align 8
br label %fusion.3.loop_header.dim.0
fusion.3.loop_exit.dim.0: ; preds = %fusion.3.loop_header.dim.0
%71 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%72 = load i8*, i8** %71, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%73 = getelementptr inbounds i8, i8* %72, i64 48000
%fusion.2 = bitcast i8* %73 to [500 x [4 x double]]*
store i64 0, i64* %fusion.2.invar_address.dim.0, align 8
br label %fusion.2.loop_header.dim.0
fusion.2.loop_header.dim.0: ; preds = %fusion.2.loop_exit.dim.1, %fusion.3.loop_exit.dim.0
%fusion.2.indvar.dim.0 = load i64, i64* %fusion.2.invar_address.dim.0, align 8
%74 = icmp uge i64 %fusion.2.indvar.dim.0, 500
br i1 %74, label %fusion.2.loop_exit.dim.0, label %fusion.2.loop_body.dim.0
fusion.2.loop_body.dim.0: ; preds = %fusion.2.loop_header.dim.0
store i64 0, i64* %fusion.2.invar_address.dim.1, align 8
br label %fusion.2.loop_header.dim.1
fusion.2.loop_header.dim.1: ; preds = %fusion.2.loop_body.dim.1, %fusion.2.loop_body.dim.0
%fusion.2.indvar.dim.1 = load i64, i64* %fusion.2.invar_address.dim.1, align 8
%75 = icmp uge i64 %fusion.2.indvar.dim.1, 4
br i1 %75, label %fusion.2.loop_exit.dim.1, label %fusion.2.loop_body.dim.1
fusion.2.loop_body.dim.1: ; preds = %fusion.2.loop_header.dim.1
%76 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.2.indvar.dim.0, i64 %fusion.2.indvar.dim.1
%77 = load double, double* %76, align 8, !alias.scope !57, !noalias !58
%78 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.2.indvar.dim.0, i64 %fusion.2.indvar.dim.1
%79 = load double, double* %78, align 8, !alias.scope !49, !noalias !50
%multiply.62 = fmul double %77, %79
%80 = getelementptr inbounds [4 x double], [4 x double]* %fusion.3, i64 0, i64 %fusion.2.indvar.dim.1
%81 = load double, double* %80, align 8, !alias.scope !59, !noalias !60
%multiply.61 = fmul double %multiply.62, %81
%constant.113 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @8 to [500 x double]*), i64 0, i64 %fusion.2.indvar.dim.0
%constant.11314 = load double, double* %constant.113, align 8
%82 = add i64 %fusion.2.indvar.dim.1, 4
%83 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %82
%84 = load double, double* %83, align 8, !invariant.load !32, !noalias !36
%subtract.3 = fsub double %constant.11314, %84
%multiply.63 = fmul double %subtract.3, %subtract.3
%85 = fneg double %multiply.63
%multiply.60 = fmul double %multiply.61, %85
%86 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %fusion.2.indvar.dim.0, i64 %fusion.2.indvar.dim.1
store double %multiply.60, double* %86, align 8, !alias.scope !61, !noalias !62
%invar.inc13 = add nuw nsw i64 %fusion.2.indvar.dim.1, 1
store i64 %invar.inc13, i64* %fusion.2.invar_address.dim.1, align 8
br label %fusion.2.loop_header.dim.1
fusion.2.loop_exit.dim.1: ; preds = %fusion.2.loop_header.dim.1
%invar.inc12 = add nuw nsw i64 %fusion.2.indvar.dim.0, 1
store i64 %invar.inc12, i64* %fusion.2.invar_address.dim.0, align 8
br label %fusion.2.loop_header.dim.0
fusion.2.loop_exit.dim.0: ; preds = %fusion.2.loop_header.dim.0
%87 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%88 = load i8*, i8** %87, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%89 = getelementptr inbounds i8, i8* %88, i64 68000
%reduce-window.2 = bitcast i8* %89 to [16 x [4 x double]]*
store i64 0, i64* %reduce-window.2.invar_address.dim.0, align 8
br label %reduce-window.2.loop_header.dim.0
reduce-window.2.loop_header.dim.0: ; preds = %reduce-window.2.loop_exit.dim.1, %fusion.2.loop_exit.dim.0
%reduce-window.2.indvar.dim.0 = load i64, i64* %reduce-window.2.invar_address.dim.0, align 8
%90 = icmp uge i64 %reduce-window.2.indvar.dim.0, 16
br i1 %90, label %reduce-window.2.loop_exit.dim.0, label %reduce-window.2.loop_body.dim.0
reduce-window.2.loop_body.dim.0: ; preds = %reduce-window.2.loop_header.dim.0
store i64 0, i64* %reduce-window.2.invar_address.dim.1, align 8
br label %reduce-window.2.loop_header.dim.1
reduce-window.2.loop_header.dim.1: ; preds = %reduce-window.2.loop_exit.window.0, %reduce-window.2.loop_body.dim.0
%reduce-window.2.indvar.dim.1 = load i64, i64* %reduce-window.2.invar_address.dim.1, align 8
%91 = icmp uge i64 %reduce-window.2.indvar.dim.1, 4
br i1 %91, label %reduce-window.2.loop_exit.dim.1, label %reduce-window.2.loop_body.dim.1
reduce-window.2.loop_body.dim.1: ; preds = %reduce-window.2.loop_header.dim.1
%92 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !65, !noalias !66
store double %92, double* %reduce_window_accum_ptr, align 8
store i64 0, i64* %reduce-window.2.invar_address.window.0, align 8
br label %reduce-window.2.loop_header.window.0
reduce-window.2.loop_header.window.0: ; preds = %reduce-window.2.loop_exit.window.1, %reduce-window.2.loop_body.dim.1
%reduce-window.2.indvar.window.0 = load i64, i64* %reduce-window.2.invar_address.window.0, align 8
%93 = icmp uge i64 %reduce-window.2.indvar.window.0, 32
br i1 %93, label %reduce-window.2.loop_exit.window.0, label %reduce-window.2.loop_body.window.0
reduce-window.2.loop_body.window.0: ; preds = %reduce-window.2.loop_header.window.0
store i64 0, i64* %reduce-window.2.invar_address.window.1, align 8
br label %reduce-window.2.loop_header.window.1
reduce-window.2.loop_header.window.1: ; preds = %in_bounds-after, %reduce-window.2.loop_body.window.0
%reduce-window.2.indvar.window.1 = load i64, i64* %reduce-window.2.invar_address.window.1, align 8
%94 = icmp uge i64 %reduce-window.2.indvar.window.1, 1
br i1 %94, label %reduce-window.2.loop_exit.window.1, label %reduce-window.2.loop_body.window.1
reduce-window.2.loop_body.window.1: ; preds = %reduce-window.2.loop_header.window.1
%95 = mul nsw i64 %reduce-window.2.indvar.dim.0, 32
%96 = mul nsw i64 %reduce-window.2.indvar.window.0, 1
%97 = add nsw i64 %95, %96
%98 = sub nsw i64 %97, 6
%99 = srem i64 %98, 1
%100 = icmp eq i64 %99, 0
%101 = and i1 true, %100
%102 = sdiv i64 %98, 1
%103 = icmp ult i64 %102, 500
%104 = and i1 %101, %103
%105 = mul nsw i64 %reduce-window.2.indvar.dim.1, 1
%106 = mul nsw i64 %reduce-window.2.indvar.window.1, 1
%107 = add nsw i64 %105, %106
%108 = sub nsw i64 %107, 0
%109 = srem i64 %108, 1
%110 = icmp eq i64 %109, 0
%111 = and i1 %104, %110
%112 = sdiv i64 %108, 1
%113 = icmp ult i64 %112, 4
%114 = and i1 %111, %113
br i1 %114, label %in_bounds-true, label %in_bounds-false
in_bounds-after: ; preds = %in_bounds-false, %in_bounds-true
%invar.inc18 = add nuw nsw i64 %reduce-window.2.indvar.window.1, 1
store i64 %invar.inc18, i64* %reduce-window.2.invar_address.window.1, align 8
br label %reduce-window.2.loop_header.window.1
reduce-window.2.loop_exit.window.1: ; preds = %reduce-window.2.loop_header.window.1
%invar.inc17 = add nuw nsw i64 %reduce-window.2.indvar.window.0, 1
store i64 %invar.inc17, i64* %reduce-window.2.invar_address.window.0, align 8
br label %reduce-window.2.loop_header.window.0
reduce-window.2.loop_exit.window.0: ; preds = %reduce-window.2.loop_header.window.0
%115 = load double, double* %reduce_window_accum_ptr, align 8
%116 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.2, i64 0, i64 %reduce-window.2.indvar.dim.0, i64 %reduce-window.2.indvar.dim.1
store double %115, double* %116, align 8, !alias.scope !70, !noalias !71
%invar.inc16 = add nuw nsw i64 %reduce-window.2.indvar.dim.1, 1
store i64 %invar.inc16, i64* %reduce-window.2.invar_address.dim.1, align 8
br label %reduce-window.2.loop_header.dim.1
reduce-window.2.loop_exit.dim.1: ; preds = %reduce-window.2.loop_header.dim.1
%invar.inc15 = add nuw nsw i64 %reduce-window.2.indvar.dim.0, 1
store i64 %invar.inc15, i64* %reduce-window.2.invar_address.dim.0, align 8
br label %reduce-window.2.loop_header.dim.0
reduce-window.2.loop_exit.dim.0: ; preds = %reduce-window.2.loop_header.dim.0
%117 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%118 = load i8*, i8** %117, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%119 = getelementptr inbounds i8, i8* %118, i64 48512
%reduce.14 = bitcast i8* %119 to [4 x double]*
%120 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8
%.splatinsert = insertelement <4 x double> poison, double %120, i32 0
%.splat = shufflevector <4 x double> %.splatinsert, <4 x double> poison, <4 x i32> zeroinitializer
store <4 x double> %.splat, <4 x double>* %accumulator, align 8
store i64 0, i64* %reduce-window.2.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.2.vectorized_inner.loop_header.reduction_dim.0
in_bounds-true: ; preds = %reduce-window.2.loop_body.window.1
%121 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %102, i64 %112
%122 = load double, double* %121, align 8, !alias.scope !61, !noalias !62
%123 = load double, double* %reduce_window_accum_ptr, align 8
store double %123, double* %arg_addr19, align 8
store double %122, double* %arg_addr20, align 8
%reducer_function_parameter_0_address_as_i8ptr = bitcast double* %arg_addr19 to i8*
%124 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses, i64 0
store i8* %reducer_function_parameter_0_address_as_i8ptr, i8** %124, align 8
%reducer_function_parameter_1_address_as_i8ptr = bitcast double* %arg_addr20 to i8*
%125 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses, i64 1
store i8* %reducer_function_parameter_1_address_as_i8ptr, i8** %125, align 8
%126 = bitcast double* %reducer_function_return_value_addr to i8*
call void @region_7.133(i8* %126, i8* %run_options, i8** %reducer_function_parameter_addresses, i8** null, i8* %status, i64* %prof_counters)
%127 = load double, double* %reducer_function_return_value_addr, align 8
store double %127, double* %reduce_window_accum_ptr, align 8
br label %in_bounds-after
in_bounds-false: ; preds = %reduce-window.2.loop_body.window.1
br label %in_bounds-after
reduce-window.2.vectorized_inner.loop_header.reduction_dim.0: ; preds = %reduce-window.2.vectorized_inner.loop_body.reduction_dim.0, %reduce-window.2.loop_exit.dim.0
%reduce-window.2.vectorized_inner.indvar.reduction_dim.0 = load i64, i64* %reduce-window.2.vectorized_inner.invar_address.reduction_dim.0, align 8
%128 = icmp uge i64 %reduce-window.2.vectorized_inner.indvar.reduction_dim.0, 16
br i1 %128, label %reduce-window.2.vectorized_inner.loop_exit.reduction_dim.0, label %reduce-window.2.vectorized_inner.loop_body.reduction_dim.0
reduce-window.2.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.2.vectorized_inner.loop_header.reduction_dim.0
%129 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.2, i64 0, i64 %reduce-window.2.vectorized_inner.indvar.reduction_dim.0, i64 0
%130 = bitcast double* %129 to i8*
%131 = bitcast i8* %130 to <4 x double>*
%132 = load <4 x double>, <4 x double>* %accumulator, align 8
%133 = load <4 x double>, <4 x double>* %131, align 8, !alias.scope !70, !noalias !71
%134 = fadd reassoc <4 x double> %132, %133
store <4 x double> %134, <4 x double>* %accumulator, align 8
%invar.inc21 = add nuw nsw i64 %reduce-window.2.vectorized_inner.indvar.reduction_dim.0, 1
store i64 %invar.inc21, i64* %reduce-window.2.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.2.vectorized_inner.loop_header.reduction_dim.0
reduce-window.2.vectorized_inner.loop_exit.reduction_dim.0: ; preds = %reduce-window.2.vectorized_inner.loop_header.reduction_dim.0
%135 = load <4 x double>, <4 x double>* %accumulator, align 8
%136 = getelementptr inbounds [4 x double], [4 x double]* %reduce.14, i64 0, i64 0
%137 = bitcast double* %136 to <4 x double>*
store <4 x double> %135, <4 x double>* %137, align 8, !alias.scope !72, !noalias !73
%138 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%139 = load i8*, i8** %138, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%140 = getelementptr inbounds i8, i8* %139, i64 32000
%fusion.7 = bitcast i8* %140 to [500 x [4 x double]]*
store i64 0, i64* %fusion.7.invar_address.dim.0, align 8
br label %fusion.7.loop_header.dim.0
fusion.7.loop_header.dim.0: ; preds = %fusion.7.loop_exit.dim.1, %reduce-window.2.vectorized_inner.loop_exit.reduction_dim.0
%fusion.7.indvar.dim.0 = load i64, i64* %fusion.7.invar_address.dim.0, align 8
%141 = icmp uge i64 %fusion.7.indvar.dim.0, 500
br i1 %141, label %fusion.7.loop_exit.dim.0, label %fusion.7.loop_body.dim.0
fusion.7.loop_body.dim.0: ; preds = %fusion.7.loop_header.dim.0
store i64 0, i64* %fusion.7.invar_address.dim.1, align 8
br label %fusion.7.loop_header.dim.1
fusion.7.loop_header.dim.1: ; preds = %fusion.7.loop_body.dim.1, %fusion.7.loop_body.dim.0
%fusion.7.indvar.dim.1 = load i64, i64* %fusion.7.invar_address.dim.1, align 8
%142 = icmp uge i64 %fusion.7.indvar.dim.1, 4
br i1 %142, label %fusion.7.loop_exit.dim.1, label %fusion.7.loop_body.dim.1
fusion.7.loop_body.dim.1: ; preds = %fusion.7.loop_header.dim.1
%143 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.7.indvar.dim.0, i64 %fusion.7.indvar.dim.1
%144 = load double, double* %143, align 8, !alias.scope !53, !noalias !54
%145 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.7.indvar.dim.0
%146 = load double, double* %145, align 8, !alias.scope !55, !noalias !56
%multiply.74 = fmul double %144, %146
%147 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.7, i64 0, i64 %fusion.7.indvar.dim.0, i64 %fusion.7.indvar.dim.1
store double %multiply.74, double* %147, align 8, !alias.scope !53, !noalias !74
%invar.inc23 = add nuw nsw i64 %fusion.7.indvar.dim.1, 1
store i64 %invar.inc23, i64* %fusion.7.invar_address.dim.1, align 8
br label %fusion.7.loop_header.dim.1
fusion.7.loop_exit.dim.1: ; preds = %fusion.7.loop_header.dim.1
%invar.inc22 = add nuw nsw i64 %fusion.7.indvar.dim.0, 1
store i64 %invar.inc22, i64* %fusion.7.invar_address.dim.0, align 8
br label %fusion.7.loop_header.dim.0
fusion.7.loop_exit.dim.0: ; preds = %fusion.7.loop_header.dim.0
%148 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%149 = load i8*, i8** %148, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%150 = getelementptr inbounds i8, i8* %149, i64 48000
%reduce-window = bitcast i8* %150 to [16 x [4 x double]]*
store i64 0, i64* %reduce-window.invar_address.dim.0, align 8
br label %reduce-window.loop_header.dim.0
reduce-window.loop_header.dim.0: ; preds = %reduce-window.loop_exit.dim.1, %fusion.7.loop_exit.dim.0
%reduce-window.indvar.dim.0 = load i64, i64* %reduce-window.invar_address.dim.0, align 8
%151 = icmp uge i64 %reduce-window.indvar.dim.0, 16
br i1 %151, label %reduce-window.loop_exit.dim.0, label %reduce-window.loop_body.dim.0
reduce-window.loop_body.dim.0: ; preds = %reduce-window.loop_header.dim.0
store i64 0, i64* %reduce-window.invar_address.dim.1, align 8
br label %reduce-window.loop_header.dim.1
reduce-window.loop_header.dim.1: ; preds = %reduce-window.loop_exit.window.0, %reduce-window.loop_body.dim.0
%reduce-window.indvar.dim.1 = load i64, i64* %reduce-window.invar_address.dim.1, align 8
%152 = icmp uge i64 %reduce-window.indvar.dim.1, 4
br i1 %152, label %reduce-window.loop_exit.dim.1, label %reduce-window.loop_body.dim.1
reduce-window.loop_body.dim.1: ; preds = %reduce-window.loop_header.dim.1
%153 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !65, !noalias !66
store double %153, double* %reduce_window_accum_ptr26, align 8
store i64 0, i64* %reduce-window.invar_address.window.0, align 8
br label %reduce-window.loop_header.window.0
reduce-window.loop_header.window.0: ; preds = %reduce-window.loop_exit.window.1, %reduce-window.loop_body.dim.1
%reduce-window.indvar.window.0 = load i64, i64* %reduce-window.invar_address.window.0, align 8
%154 = icmp uge i64 %reduce-window.indvar.window.0, 32
br i1 %154, label %reduce-window.loop_exit.window.0, label %reduce-window.loop_body.window.0
reduce-window.loop_body.window.0: ; preds = %reduce-window.loop_header.window.0
store i64 0, i64* %reduce-window.invar_address.window.1, align 8
br label %reduce-window.loop_header.window.1
reduce-window.loop_header.window.1: ; preds = %in_bounds-after31, %reduce-window.loop_body.window.0
%reduce-window.indvar.window.1 = load i64, i64* %reduce-window.invar_address.window.1, align 8
%155 = icmp uge i64 %reduce-window.indvar.window.1, 1
br i1 %155, label %reduce-window.loop_exit.window.1, label %reduce-window.loop_body.window.1
reduce-window.loop_body.window.1: ; preds = %reduce-window.loop_header.window.1
%156 = mul nsw i64 %reduce-window.indvar.dim.0, 32
%157 = mul nsw i64 %reduce-window.indvar.window.0, 1
%158 = add nsw i64 %156, %157
%159 = sub nsw i64 %158, 6
%160 = srem i64 %159, 1
%161 = icmp eq i64 %160, 0
%162 = and i1 true, %161
%163 = sdiv i64 %159, 1
%164 = icmp ult i64 %163, 500
%165 = and i1 %162, %164
%166 = mul nsw i64 %reduce-window.indvar.dim.1, 1
%167 = mul nsw i64 %reduce-window.indvar.window.1, 1
%168 = add nsw i64 %166, %167
%169 = sub nsw i64 %168, 0
%170 = srem i64 %169, 1
%171 = icmp eq i64 %170, 0
%172 = and i1 %165, %171
%173 = sdiv i64 %169, 1
%174 = icmp ult i64 %173, 4
%175 = and i1 %172, %174
br i1 %175, label %in_bounds-true29, label %in_bounds-false30
in_bounds-after31: ; preds = %in_bounds-false30, %in_bounds-true29
%invar.inc28 = add nuw nsw i64 %reduce-window.indvar.window.1, 1
store i64 %invar.inc28, i64* %reduce-window.invar_address.window.1, align 8
br label %reduce-window.loop_header.window.1
reduce-window.loop_exit.window.1: ; preds = %reduce-window.loop_header.window.1
%invar.inc27 = add nuw nsw i64 %reduce-window.indvar.window.0, 1
store i64 %invar.inc27, i64* %reduce-window.invar_address.window.0, align 8
br label %reduce-window.loop_header.window.0
reduce-window.loop_exit.window.0: ; preds = %reduce-window.loop_header.window.0
%176 = load double, double* %reduce_window_accum_ptr26, align 8
%177 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window, i64 0, i64 %reduce-window.indvar.dim.0, i64 %reduce-window.indvar.dim.1
store double %176, double* %177, align 8, !alias.scope !75, !noalias !76
%invar.inc25 = add nuw nsw i64 %reduce-window.indvar.dim.1, 1
store i64 %invar.inc25, i64* %reduce-window.invar_address.dim.1, align 8
br label %reduce-window.loop_header.dim.1
reduce-window.loop_exit.dim.1: ; preds = %reduce-window.loop_header.dim.1
%invar.inc24 = add nuw nsw i64 %reduce-window.indvar.dim.0, 1
store i64 %invar.inc24, i64* %reduce-window.invar_address.dim.0, align 8
br label %reduce-window.loop_header.dim.0
reduce-window.loop_exit.dim.0: ; preds = %reduce-window.loop_header.dim.0
%178 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%179 = load i8*, i8** %178, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%180 = getelementptr inbounds i8, i8* %179, i64 48544
%reduce.8 = bitcast i8* %180 to [4 x double]*
%181 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8
%.splatinsert39 = insertelement <4 x double> poison, double %181, i32 0
%.splat40 = shufflevector <4 x double> %.splatinsert39, <4 x double> poison, <4 x i32> zeroinitializer
store <4 x double> %.splat40, <4 x double>* %accumulator38, align 8
store i64 0, i64* %reduce-window.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.vectorized_inner.loop_header.reduction_dim.0
in_bounds-true29: ; preds = %reduce-window.loop_body.window.1
%182 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.7, i64 0, i64 %163, i64 %173
%183 = load double, double* %182, align 8, !alias.scope !53, !noalias !74
%184 = load double, double* %reduce_window_accum_ptr26, align 8
store double %184, double* %arg_addr32, align 8
store double %183, double* %arg_addr33, align 8
%reducer_function_parameter_0_address_as_i8ptr36 = bitcast double* %arg_addr32 to i8*
%185 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses35, i64 0
store i8* %reducer_function_parameter_0_address_as_i8ptr36, i8** %185, align 8
%reducer_function_parameter_1_address_as_i8ptr37 = bitcast double* %arg_addr33 to i8*
%186 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses35, i64 1
store i8* %reducer_function_parameter_1_address_as_i8ptr37, i8** %186, align 8
%187 = bitcast double* %reducer_function_return_value_addr34 to i8*
call void @region_2.113(i8* %187, i8* %run_options, i8** %reducer_function_parameter_addresses35, i8** null, i8* %status, i64* %prof_counters)
%188 = load double, double* %reducer_function_return_value_addr34, align 8
store double %188, double* %reduce_window_accum_ptr26, align 8
br label %in_bounds-after31
in_bounds-false30: ; preds = %reduce-window.loop_body.window.1
br label %in_bounds-after31
reduce-window.vectorized_inner.loop_header.reduction_dim.0: ; preds = %reduce-window.vectorized_inner.loop_body.reduction_dim.0, %reduce-window.loop_exit.dim.0
%reduce-window.vectorized_inner.indvar.reduction_dim.0 = load i64, i64* %reduce-window.vectorized_inner.invar_address.reduction_dim.0, align 8
%189 = icmp uge i64 %reduce-window.vectorized_inner.indvar.reduction_dim.0, 16
br i1 %189, label %reduce-window.vectorized_inner.loop_exit.reduction_dim.0, label %reduce-window.vectorized_inner.loop_body.reduction_dim.0
reduce-window.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.vectorized_inner.loop_header.reduction_dim.0
%190 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window, i64 0, i64 %reduce-window.vectorized_inner.indvar.reduction_dim.0, i64 0
%191 = bitcast double* %190 to i8*
%192 = bitcast i8* %191 to <4 x double>*
%193 = load <4 x double>, <4 x double>* %accumulator38, align 8
%194 = load <4 x double>, <4 x double>* %192, align 8, !alias.scope !75, !noalias !76
%195 = fadd reassoc <4 x double> %193, %194
store <4 x double> %195, <4 x double>* %accumulator38, align 8
%invar.inc41 = add nuw nsw i64 %reduce-window.vectorized_inner.indvar.reduction_dim.0, 1
store i64 %invar.inc41, i64* %reduce-window.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.vectorized_inner.loop_header.reduction_dim.0
reduce-window.vectorized_inner.loop_exit.reduction_dim.0: ; preds = %reduce-window.vectorized_inner.loop_header.reduction_dim.0
%196 = load <4 x double>, <4 x double>* %accumulator38, align 8
%197 = getelementptr inbounds [4 x double], [4 x double]* %reduce.8, i64 0, i64 0
%198 = bitcast double* %197 to <4 x double>*
store <4 x double> %196, <4 x double>* %198, align 8, !alias.scope !77, !noalias !78
%199 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%200 = load i8*, i8** %199, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%201 = getelementptr inbounds i8, i8* %200, i64 16000
%fusion.1 = bitcast i8* %201 to [500 x [4 x double]]*
store i64 0, i64* %fusion.1.invar_address.dim.0, align 8
br label %fusion.1.loop_header.dim.0
fusion.1.loop_header.dim.0: ; preds = %fusion.1.loop_exit.dim.1, %reduce-window.vectorized_inner.loop_exit.reduction_dim.0
%fusion.1.indvar.dim.0 = load i64, i64* %fusion.1.invar_address.dim.0, align 8
%202 = icmp uge i64 %fusion.1.indvar.dim.0, 500
br i1 %202, label %fusion.1.loop_exit.dim.0, label %fusion.1.loop_body.dim.0
fusion.1.loop_body.dim.0: ; preds = %fusion.1.loop_header.dim.0
store i64 0, i64* %fusion.1.invar_address.dim.1, align 8
br label %fusion.1.loop_header.dim.1
fusion.1.loop_header.dim.1: ; preds = %fusion.1.loop_body.dim.1, %fusion.1.loop_body.dim.0
%fusion.1.indvar.dim.1 = load i64, i64* %fusion.1.invar_address.dim.1, align 8
%203 = icmp uge i64 %fusion.1.indvar.dim.1, 4
br i1 %203, label %fusion.1.loop_exit.dim.1, label %fusion.1.loop_body.dim.1
fusion.1.loop_body.dim.1: ; preds = %fusion.1.loop_header.dim.1
%204 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.1.indvar.dim.0, i64 %fusion.1.indvar.dim.1
%205 = load double, double* %204, align 8, !alias.scope !57, !noalias !58
%206 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.1.indvar.dim.0, i64 %fusion.1.indvar.dim.1
%207 = load double, double* %206, align 8, !alias.scope !49, !noalias !50
%multiply.57 = fmul double %205, %207
%208 = add i64 %fusion.1.indvar.dim.1, 8
%209 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %208
%210 = load double, double* %209, align 8, !invariant.load !32, !noalias !36
%multiply.59 = fmul double %210, %210
%constant.111 = load double, double* bitcast ([8 x i8]* @9 to double*), align 8
%multiply.58 = fmul double %multiply.59, %constant.111
%divide.17 = fdiv double %multiply.57, %multiply.58
%211 = fneg double %divide.17
%constant.112 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @10 to [500 x double]*), i64 0, i64 %fusion.1.indvar.dim.0
%constant.11244 = load double, double* %constant.112, align 8
%212 = add i64 %fusion.1.indvar.dim.1, 4
%213 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %212
%214 = load double, double* %213, align 8, !invariant.load !32, !noalias !36
%subtract.2 = fsub double %constant.11244, %214
%constant.11145 = load double, double* bitcast ([8 x i8]* @9 to double*), align 8
%multiply.56 = fmul double %subtract.2, %constant.11145
%multiply.55 = fmul double %211, %multiply.56
%215 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.1, i64 0, i64 %fusion.1.indvar.dim.0, i64 %fusion.1.indvar.dim.1
store double %multiply.55, double* %215, align 8, !alias.scope !57, !noalias !79
%invar.inc43 = add nuw nsw i64 %fusion.1.indvar.dim.1, 1
store i64 %invar.inc43, i64* %fusion.1.invar_address.dim.1, align 8
br label %fusion.1.loop_header.dim.1
fusion.1.loop_exit.dim.1: ; preds = %fusion.1.loop_header.dim.1
%invar.inc42 = add nuw nsw i64 %fusion.1.indvar.dim.0, 1
store i64 %invar.inc42, i64* %fusion.1.invar_address.dim.0, align 8
br label %fusion.1.loop_header.dim.0
fusion.1.loop_exit.dim.0: ; preds = %fusion.1.loop_header.dim.0
%216 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%217 = load i8*, i8** %216, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%218 = getelementptr inbounds i8, i8* %217, i64 32000
%reduce-window.3 = bitcast i8* %218 to [16 x [4 x double]]*
store i64 0, i64* %reduce-window.3.invar_address.dim.0, align 8
br label %reduce-window.3.loop_header.dim.0
reduce-window.3.loop_header.dim.0: ; preds = %reduce-window.3.loop_exit.dim.1, %fusion.1.loop_exit.dim.0
%reduce-window.3.indvar.dim.0 = load i64, i64* %reduce-window.3.invar_address.dim.0, align 8
%219 = icmp uge i64 %reduce-window.3.indvar.dim.0, 16
br i1 %219, label %reduce-window.3.loop_exit.dim.0, label %reduce-window.3.loop_body.dim.0
reduce-window.3.loop_body.dim.0: ; preds = %reduce-window.3.loop_header.dim.0
store i64 0, i64* %reduce-window.3.invar_address.dim.1, align 8
br label %reduce-window.3.loop_header.dim.1
reduce-window.3.loop_header.dim.1: ; preds = %reduce-window.3.loop_exit.window.0, %reduce-window.3.loop_body.dim.0
%reduce-window.3.indvar.dim.1 = load i64, i64* %reduce-window.3.invar_address.dim.1, align 8
%220 = icmp uge i64 %reduce-window.3.indvar.dim.1, 4
br i1 %220, label %reduce-window.3.loop_exit.dim.1, label %reduce-window.3.loop_body.dim.1
reduce-window.3.loop_body.dim.1: ; preds = %reduce-window.3.loop_header.dim.1
%221 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !65, !noalias !66
store double %221, double* %reduce_window_accum_ptr48, align 8
store i64 0, i64* %reduce-window.3.invar_address.window.0, align 8
br label %reduce-window.3.loop_header.window.0
reduce-window.3.loop_header.window.0: ; preds = %reduce-window.3.loop_exit.window.1, %reduce-window.3.loop_body.dim.1
%reduce-window.3.indvar.window.0 = load i64, i64* %reduce-window.3.invar_address.window.0, align 8
%222 = icmp uge i64 %reduce-window.3.indvar.window.0, 32
br i1 %222, label %reduce-window.3.loop_exit.window.0, label %reduce-window.3.loop_body.window.0
reduce-window.3.loop_body.window.0: ; preds = %reduce-window.3.loop_header.window.0
store i64 0, i64* %reduce-window.3.invar_address.window.1, align 8
br label %reduce-window.3.loop_header.window.1
reduce-window.3.loop_header.window.1: ; preds = %in_bounds-after53, %reduce-window.3.loop_body.window.0
%reduce-window.3.indvar.window.1 = load i64, i64* %reduce-window.3.invar_address.window.1, align 8
%223 = icmp uge i64 %reduce-window.3.indvar.window.1, 1
br i1 %223, label %reduce-window.3.loop_exit.window.1, label %reduce-window.3.loop_body.window.1
reduce-window.3.loop_body.window.1: ; preds = %reduce-window.3.loop_header.window.1
%224 = mul nsw i64 %reduce-window.3.indvar.dim.0, 32
%225 = mul nsw i64 %reduce-window.3.indvar.window.0, 1
%226 = add nsw i64 %224, %225
%227 = sub nsw i64 %226, 6
%228 = srem i64 %227, 1
%229 = icmp eq i64 %228, 0
%230 = and i1 true, %229
%231 = sdiv i64 %227, 1
%232 = icmp ult i64 %231, 500
%233 = and i1 %230, %232
%234 = mul nsw i64 %reduce-window.3.indvar.dim.1, 1
%235 = mul nsw i64 %reduce-window.3.indvar.window.1, 1
%236 = add nsw i64 %234, %235
%237 = sub nsw i64 %236, 0
%238 = srem i64 %237, 1
%239 = icmp eq i64 %238, 0
%240 = and i1 %233, %239
%241 = sdiv i64 %237, 1
%242 = icmp ult i64 %241, 4
%243 = and i1 %240, %242
br i1 %243, label %in_bounds-true51, label %in_bounds-false52
in_bounds-after53: ; preds = %in_bounds-false52, %in_bounds-true51
%invar.inc50 = add nuw nsw i64 %reduce-window.3.indvar.window.1, 1
store i64 %invar.inc50, i64* %reduce-window.3.invar_address.window.1, align 8
br label %reduce-window.3.loop_header.window.1
reduce-window.3.loop_exit.window.1: ; preds = %reduce-window.3.loop_header.window.1
%invar.inc49 = add nuw nsw i64 %reduce-window.3.indvar.window.0, 1
store i64 %invar.inc49, i64* %reduce-window.3.invar_address.window.0, align 8
br label %reduce-window.3.loop_header.window.0
reduce-window.3.loop_exit.window.0: ; preds = %reduce-window.3.loop_header.window.0
%244 = load double, double* %reduce_window_accum_ptr48, align 8
%245 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.3, i64 0, i64 %reduce-window.3.indvar.dim.0, i64 %reduce-window.3.indvar.dim.1
store double %244, double* %245, align 8, !alias.scope !80, !noalias !81
%invar.inc47 = add nuw nsw i64 %reduce-window.3.indvar.dim.1, 1
store i64 %invar.inc47, i64* %reduce-window.3.invar_address.dim.1, align 8
br label %reduce-window.3.loop_header.dim.1
reduce-window.3.loop_exit.dim.1: ; preds = %reduce-window.3.loop_header.dim.1
%invar.inc46 = add nuw nsw i64 %reduce-window.3.indvar.dim.0, 1
store i64 %invar.inc46, i64* %reduce-window.3.invar_address.dim.0, align 8
br label %reduce-window.3.loop_header.dim.0
reduce-window.3.loop_exit.dim.0: ; preds = %reduce-window.3.loop_header.dim.0
%246 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%247 = load i8*, i8** %246, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%248 = getelementptr inbounds i8, i8* %247, i64 48576
%reduce.10 = bitcast i8* %248 to [4 x double]*
%249 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8
%.splatinsert61 = insertelement <4 x double> poison, double %249, i32 0
%.splat62 = shufflevector <4 x double> %.splatinsert61, <4 x double> poison, <4 x i32> zeroinitializer
store <4 x double> %.splat62, <4 x double>* %accumulator60, align 8
store i64 0, i64* %reduce-window.3.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.3.vectorized_inner.loop_header.reduction_dim.0
in_bounds-true51: ; preds = %reduce-window.3.loop_body.window.1
%250 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.1, i64 0, i64 %231, i64 %241
%251 = load double, double* %250, align 8, !alias.scope !57, !noalias !79
%252 = load double, double* %reduce_window_accum_ptr48, align 8
store double %252, double* %arg_addr54, align 8
store double %251, double* %arg_addr55, align 8
%reducer_function_parameter_0_address_as_i8ptr58 = bitcast double* %arg_addr54 to i8*
%253 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses57, i64 0
store i8* %reducer_function_parameter_0_address_as_i8ptr58, i8** %253, align 8
%reducer_function_parameter_1_address_as_i8ptr59 = bitcast double* %arg_addr55 to i8*
%254 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses57, i64 1
store i8* %reducer_function_parameter_1_address_as_i8ptr59, i8** %254, align 8
%255 = bitcast double* %reducer_function_return_value_addr56 to i8*
call void @region_9.141(i8* %255, i8* %run_options, i8** %reducer_function_parameter_addresses57, i8** null, i8* %status, i64* %prof_counters)
%256 = load double, double* %reducer_function_return_value_addr56, align 8
store double %256, double* %reduce_window_accum_ptr48, align 8
br label %in_bounds-after53
in_bounds-false52: ; preds = %reduce-window.3.loop_body.window.1
br label %in_bounds-after53
reduce-window.3.vectorized_inner.loop_header.reduction_dim.0: ; preds = %reduce-window.3.vectorized_inner.loop_body.reduction_dim.0, %reduce-window.3.loop_exit.dim.0
%reduce-window.3.vectorized_inner.indvar.reduction_dim.0 = load i64, i64* %reduce-window.3.vectorized_inner.invar_address.reduction_dim.0, align 8
%257 = icmp uge i64 %reduce-window.3.vectorized_inner.indvar.reduction_dim.0, 16
br i1 %257, label %reduce-window.3.vectorized_inner.loop_exit.reduction_dim.0, label %reduce-window.3.vectorized_inner.loop_body.reduction_dim.0
reduce-window.3.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.3.vectorized_inner.loop_header.reduction_dim.0
%258 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.3, i64 0, i64 %reduce-window.3.vectorized_inner.indvar.reduction_dim.0, i64 0
%259 = bitcast double* %258 to i8*
%260 = bitcast i8* %259 to <4 x double>*
%261 = load <4 x double>, <4 x double>* %accumulator60, align 8
%262 = load <4 x double>, <4 x double>* %260, align 8, !alias.scope !80, !noalias !81
%263 = fadd reassoc <4 x double> %261, %262
store <4 x double> %263, <4 x double>* %accumulator60, align 8
%invar.inc63 = add nuw nsw i64 %reduce-window.3.vectorized_inner.indvar.reduction_dim.0, 1
store i64 %invar.inc63, i64* %reduce-window.3.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.3.vectorized_inner.loop_header.reduction_dim.0
reduce-window.3.vectorized_inner.loop_exit.reduction_dim.0: ; preds = %reduce-window.3.vectorized_inner.loop_header.reduction_dim.0
%264 = load <4 x double>, <4 x double>* %accumulator60, align 8
%265 = getelementptr inbounds [4 x double], [4 x double]* %reduce.10, i64 0, i64 0
%266 = bitcast double* %265 to <4 x double>*
store <4 x double> %264, <4 x double>* %266, align 8, !alias.scope !82, !noalias !83
%267 = getelementptr inbounds i8*, i8** %buffer_table, i64 0
%268 = load i8*, i8** %267, align 8, !invariant.load !32, !dereferenceable !33, !align !34
%fusion.6 = bitcast i8* %268 to [4 x double]*
store i64 0, i64* %fusion.6.invar_address.dim.0, align 8
br label %fusion.6.loop_header.dim.0
fusion.6.loop_header.dim.0: ; preds = %fusion.6.loop_body.dim.0, %reduce-window.3.vectorized_inner.loop_exit.reduction_dim.0
%fusion.6.indvar.dim.0 = load i64, i64* %fusion.6.invar_address.dim.0, align 8
%269 = icmp uge i64 %fusion.6.indvar.dim.0, 4
br i1 %269, label %fusion.6.loop_exit.dim.0, label %fusion.6.loop_body.dim.0
fusion.6.loop_body.dim.0: ; preds = %fusion.6.loop_header.dim.0
%constant.116 = load double, double* bitcast ([8 x i8]* @11 to double*), align 8
%270 = getelementptr inbounds [4 x double], [4 x double]* %fusion.10, i64 0, i64 %fusion.6.indvar.dim.0
%271 = load double, double* %270, align 8, !alias.scope !51, !noalias !52
%272 = getelementptr inbounds [4 x double], [4 x double]* %fusion.10, i64 0, i64 %fusion.6.indvar.dim.0
%273 = load double, double* %272, align 8, !alias.scope !51, !noalias !52
%multiply.73 = fmul double %271, %273
%divide.20 = fdiv double %constant.116, %multiply.73
%274 = getelementptr inbounds [4 x double], [4 x double]* %fusion.6, i64 0, i64 %fusion.6.indvar.dim.0
store double %divide.20, double* %274, align 8, !alias.scope !51, !noalias !84
%invar.inc64 = add nuw nsw i64 %fusion.6.indvar.dim.0, 1
store i64 %invar.inc64, i64* %fusion.6.invar_address.dim.0, align 8
br label %fusion.6.loop_header.dim.0
fusion.6.loop_exit.dim.0: ; preds = %fusion.6.loop_header.dim.0
%275 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%276 = load i8*, i8** %275, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%fusion.5 = bitcast i8* %276 to [500 x [4 x double]]*
store i64 0, i64* %fusion.5.invar_address.dim.0, align 8
br label %fusion.5.loop_header.dim.0
fusion.5.loop_header.dim.0: ; preds = %fusion.5.loop_exit.dim.1, %fusion.6.loop_exit.dim.0
%fusion.5.indvar.dim.0 = load i64, i64* %fusion.5.invar_address.dim.0, align 8
%277 = icmp uge i64 %fusion.5.indvar.dim.0, 500
br i1 %277, label %fusion.5.loop_exit.dim.0, label %fusion.5.loop_body.dim.0
fusion.5.loop_body.dim.0: ; preds = %fusion.5.loop_header.dim.0
store i64 0, i64* %fusion.5.invar_address.dim.1, align 8
br label %fusion.5.loop_header.dim.1
fusion.5.loop_header.dim.1: ; preds = %fusion.5.loop_body.dim.1, %fusion.5.loop_body.dim.0
%fusion.5.indvar.dim.1 = load i64, i64* %fusion.5.invar_address.dim.1, align 8
%278 = icmp uge i64 %fusion.5.indvar.dim.1, 4
br i1 %278, label %fusion.5.loop_exit.dim.1, label %fusion.5.loop_body.dim.1
fusion.5.loop_body.dim.1: ; preds = %fusion.5.loop_header.dim.1
%279 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.5.indvar.dim.0
%280 = load double, double* %279, align 8, !alias.scope !55, !noalias !56
%281 = add i64 %fusion.5.indvar.dim.1, 0
%282 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %281
%283 = load double, double* %282, align 8, !invariant.load !32, !noalias !36
%multiply.70 = fmul double %280, %283
%284 = getelementptr inbounds [4 x double], [4 x double]* %fusion.6, i64 0, i64 %fusion.5.indvar.dim.1
%285 = load double, double* %284, align 8, !alias.scope !51, !noalias !84
%multiply.69 = fmul double %multiply.70, %285
%286 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.5.indvar.dim.0, i64 %fusion.5.indvar.dim.1
%287 = load double, double* %286, align 8, !alias.scope !49, !noalias !50
%multiply.68 = fmul double %multiply.69, %287
%288 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.5, i64 0, i64 %fusion.5.indvar.dim.0, i64 %fusion.5.indvar.dim.1
store double %multiply.68, double* %288, align 8, !alias.scope !49, !noalias !85
%invar.inc66 = add nuw nsw i64 %fusion.5.indvar.dim.1, 1
store i64 %invar.inc66, i64* %fusion.5.invar_address.dim.1, align 8
br label %fusion.5.loop_header.dim.1
fusion.5.loop_exit.dim.1: ; preds = %fusion.5.loop_header.dim.1
%invar.inc65 = add nuw nsw i64 %fusion.5.indvar.dim.0, 1
store i64 %invar.inc65, i64* %fusion.5.invar_address.dim.0, align 8
br label %fusion.5.loop_header.dim.0
fusion.5.loop_exit.dim.0: ; preds = %fusion.5.loop_header.dim.0
%289 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%290 = load i8*, i8** %289, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%291 = getelementptr inbounds i8, i8* %290, i64 16000
%reduce-window.1 = bitcast i8* %291 to [16 x [4 x double]]*
store i64 0, i64* %reduce-window.1.invar_address.dim.0, align 8
br label %reduce-window.1.loop_header.dim.0
reduce-window.1.loop_header.dim.0: ; preds = %reduce-window.1.loop_exit.dim.1, %fusion.5.loop_exit.dim.0
%reduce-window.1.indvar.dim.0 = load i64, i64* %reduce-window.1.invar_address.dim.0, align 8
%292 = icmp uge i64 %reduce-window.1.indvar.dim.0, 16
br i1 %292, label %reduce-window.1.loop_exit.dim.0, label %reduce-window.1.loop_body.dim.0
reduce-window.1.loop_body.dim.0: ; preds = %reduce-window.1.loop_header.dim.0
store i64 0, i64* %reduce-window.1.invar_address.dim.1, align 8
br label %reduce-window.1.loop_header.dim.1
reduce-window.1.loop_header.dim.1: ; preds = %reduce-window.1.loop_exit.window.0, %reduce-window.1.loop_body.dim.0
%reduce-window.1.indvar.dim.1 = load i64, i64* %reduce-window.1.invar_address.dim.1, align 8
%293 = icmp uge i64 %reduce-window.1.indvar.dim.1, 4
br i1 %293, label %reduce-window.1.loop_exit.dim.1, label %reduce-window.1.loop_body.dim.1
reduce-window.1.loop_body.dim.1: ; preds = %reduce-window.1.loop_header.dim.1
%294 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !65, !noalias !66
store double %294, double* %reduce_window_accum_ptr69, align 8
store i64 0, i64* %reduce-window.1.invar_address.window.0, align 8
br label %reduce-window.1.loop_header.window.0
reduce-window.1.loop_header.window.0: ; preds = %reduce-window.1.loop_exit.window.1, %reduce-window.1.loop_body.dim.1
%reduce-window.1.indvar.window.0 = load i64, i64* %reduce-window.1.invar_address.window.0, align 8
%295 = icmp uge i64 %reduce-window.1.indvar.window.0, 32
br i1 %295, label %reduce-window.1.loop_exit.window.0, label %reduce-window.1.loop_body.window.0
reduce-window.1.loop_body.window.0: ; preds = %reduce-window.1.loop_header.window.0
store i64 0, i64* %reduce-window.1.invar_address.window.1, align 8
br label %reduce-window.1.loop_header.window.1
reduce-window.1.loop_header.window.1: ; preds = %in_bounds-after74, %reduce-window.1.loop_body.window.0
%reduce-window.1.indvar.window.1 = load i64, i64* %reduce-window.1.invar_address.window.1, align 8
%296 = icmp uge i64 %reduce-window.1.indvar.window.1, 1
br i1 %296, label %reduce-window.1.loop_exit.window.1, label %reduce-window.1.loop_body.window.1
reduce-window.1.loop_body.window.1: ; preds = %reduce-window.1.loop_header.window.1
%297 = mul nsw i64 %reduce-window.1.indvar.dim.0, 32
%298 = mul nsw i64 %reduce-window.1.indvar.window.0, 1
%299 = add nsw i64 %297, %298
%300 = sub nsw i64 %299, 6
%301 = srem i64 %300, 1
%302 = icmp eq i64 %301, 0
%303 = and i1 true, %302
%304 = sdiv i64 %300, 1
%305 = icmp ult i64 %304, 500
%306 = and i1 %303, %305
%307 = mul nsw i64 %reduce-window.1.indvar.dim.1, 1
%308 = mul nsw i64 %reduce-window.1.indvar.window.1, 1
%309 = add nsw i64 %307, %308
%310 = sub nsw i64 %309, 0
%311 = srem i64 %310, 1
%312 = icmp eq i64 %311, 0
%313 = and i1 %306, %312
%314 = sdiv i64 %310, 1
%315 = icmp ult i64 %314, 4
%316 = and i1 %313, %315
br i1 %316, label %in_bounds-true72, label %in_bounds-false73
in_bounds-after74: ; preds = %in_bounds-false73, %in_bounds-true72
%invar.inc71 = add nuw nsw i64 %reduce-window.1.indvar.window.1, 1
store i64 %invar.inc71, i64* %reduce-window.1.invar_address.window.1, align 8
br label %reduce-window.1.loop_header.window.1
reduce-window.1.loop_exit.window.1: ; preds = %reduce-window.1.loop_header.window.1
%invar.inc70 = add nuw nsw i64 %reduce-window.1.indvar.window.0, 1
store i64 %invar.inc70, i64* %reduce-window.1.invar_address.window.0, align 8
br label %reduce-window.1.loop_header.window.0
reduce-window.1.loop_exit.window.0: ; preds = %reduce-window.1.loop_header.window.0
%317 = load double, double* %reduce_window_accum_ptr69, align 8
%318 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.1, i64 0, i64 %reduce-window.1.indvar.dim.0, i64 %reduce-window.1.indvar.dim.1
store double %317, double* %318, align 8, !alias.scope !86, !noalias !87
%invar.inc68 = add nuw nsw i64 %reduce-window.1.indvar.dim.1, 1
store i64 %invar.inc68, i64* %reduce-window.1.invar_address.dim.1, align 8
br label %reduce-window.1.loop_header.dim.1
reduce-window.1.loop_exit.dim.1: ; preds = %reduce-window.1.loop_header.dim.1
%invar.inc67 = add nuw nsw i64 %reduce-window.1.indvar.dim.0, 1
store i64 %invar.inc67, i64* %reduce-window.1.invar_address.dim.0, align 8
br label %reduce-window.1.loop_header.dim.0
reduce-window.1.loop_exit.dim.0: ; preds = %reduce-window.1.loop_header.dim.0
%319 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%320 = load i8*, i8** %319, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%reduce.12 = bitcast i8* %320 to [4 x double]*
%321 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8
%.splatinsert82 = insertelement <4 x double> poison, double %321, i32 0
%.splat83 = shufflevector <4 x double> %.splatinsert82, <4 x double> poison, <4 x i32> zeroinitializer
store <4 x double> %.splat83, <4 x double>* %accumulator81, align 8
store i64 0, i64* %reduce-window.1.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.1.vectorized_inner.loop_header.reduction_dim.0
in_bounds-true72: ; preds = %reduce-window.1.loop_body.window.1
%322 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.5, i64 0, i64 %304, i64 %314
%323 = load double, double* %322, align 8, !alias.scope !49, !noalias !85
%324 = load double, double* %reduce_window_accum_ptr69, align 8
store double %324, double* %arg_addr75, align 8
store double %323, double* %arg_addr76, align 8
%reducer_function_parameter_0_address_as_i8ptr79 = bitcast double* %arg_addr75 to i8*
%325 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses78, i64 0
store i8* %reducer_function_parameter_0_address_as_i8ptr79, i8** %325, align 8
%reducer_function_parameter_1_address_as_i8ptr80 = bitcast double* %arg_addr76 to i8*
%326 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses78, i64 1
store i8* %reducer_function_parameter_1_address_as_i8ptr80, i8** %326, align 8
%327 = bitcast double* %reducer_function_return_value_addr77 to i8*
call void @region_5.125(i8* %327, i8* %run_options, i8** %reducer_function_parameter_addresses78, i8** null, i8* %status, i64* %prof_counters)
%328 = load double, double* %reducer_function_return_value_addr77, align 8
store double %328, double* %reduce_window_accum_ptr69, align 8
br label %in_bounds-after74
in_bounds-false73: ; preds = %reduce-window.1.loop_body.window.1
br label %in_bounds-after74
reduce-window.1.vectorized_inner.loop_header.reduction_dim.0: ; preds = %reduce-window.1.vectorized_inner.loop_body.reduction_dim.0, %reduce-window.1.loop_exit.dim.0
%reduce-window.1.vectorized_inner.indvar.reduction_dim.0 = load i64, i64* %reduce-window.1.vectorized_inner.invar_address.reduction_dim.0, align 8
%329 = icmp uge i64 %reduce-window.1.vectorized_inner.indvar.reduction_dim.0, 16
br i1 %329, label %reduce-window.1.vectorized_inner.loop_exit.reduction_dim.0, label %reduce-window.1.vectorized_inner.loop_body.reduction_dim.0
reduce-window.1.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.1.vectorized_inner.loop_header.reduction_dim.0
%330 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.1, i64 0, i64 %reduce-window.1.vectorized_inner.indvar.reduction_dim.0, i64 0
%331 = bitcast double* %330 to i8*
%332 = bitcast i8* %331 to <4 x double>*
%333 = load <4 x double>, <4 x double>* %accumulator81, align 8
%334 = load <4 x double>, <4 x double>* %332, align 8, !alias.scope !86, !noalias !87
%335 = fadd reassoc <4 x double> %333, %334
store <4 x double> %335, <4 x double>* %accumulator81, align 8
%invar.inc84 = add nuw nsw i64 %reduce-window.1.vectorized_inner.indvar.reduction_dim.0, 1
store i64 %invar.inc84, i64* %reduce-window.1.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.1.vectorized_inner.loop_header.reduction_dim.0
reduce-window.1.vectorized_inner.loop_exit.reduction_dim.0: ; preds = %reduce-window.1.vectorized_inner.loop_header.reduction_dim.0
%336 = load <4 x double>, <4 x double>* %accumulator81, align 8
%337 = getelementptr inbounds [4 x double], [4 x double]* %reduce.12, i64 0, i64 0
%338 = bitcast double* %337 to <4 x double>*
store <4 x double> %336, <4 x double>* %338, align 8, !alias.scope !88, !noalias !89
%339 = getelementptr inbounds i8*, i8** %buffer_table, i64 0
%340 = load i8*, i8** %339, align 8, !invariant.load !32, !dereferenceable !33, !align !34
%fusion = bitcast i8* %340 to [12 x double]*
store i64 0, i64* %fusion.invar_address.dim.0, align 8
br label %fusion.loop_header.dim.0
fusion.loop_header.dim.0: ; preds = %in_bounds-after105, %reduce-window.1.vectorized_inner.loop_exit.reduction_dim.0
%fusion.indvar.dim.0 = load i64, i64* %fusion.invar_address.dim.0, align 8
%341 = icmp uge i64 %fusion.indvar.dim.0, 12
br i1 %341, label %fusion.loop_exit.dim.0, label %fusion.loop_body.dim.0
fusion.loop_body.dim.0: ; preds = %fusion.loop_header.dim.0
%342 = sub i64 %fusion.indvar.dim.0, 0
%343 = icmp sge i64 %342, 0
%in_bounds = and i1 true, %343
%344 = urem i64 %342, 1
%345 = icmp eq i64 0, %344
%in_bounds86 = and i1 %in_bounds, %345
%346 = sdiv i64 %342, 1
%347 = icmp slt i64 %346, 4
%in_bounds87 = and i1 %in_bounds86, %347
br i1 %in_bounds87, label %in_bounds-true88, label %in_bounds-false89
in_bounds-after90: ; preds = %in_bounds-false89, %in_bounds-true88
%348 = load double, double* %pad_result_addr, align 8
%349 = sub i64 %fusion.indvar.dim.0, 8
%350 = icmp sge i64 %349, 0
%in_bounds91 = and i1 true, %350
%351 = urem i64 %349, 1
%352 = icmp eq i64 0, %351
%in_bounds92 = and i1 %in_bounds91, %352
%353 = sdiv i64 %349, 1
%354 = icmp slt i64 %353, 4
%in_bounds93 = and i1 %in_bounds92, %354
br i1 %in_bounds93, label %in_bounds-true95, label %in_bounds-false96
in_bounds-after97: ; preds = %in_bounds-false96, %in_bounds-true95
%355 = load double, double* %pad_result_addr94, align 8
%add.17 = fadd double %348, %355
%356 = sub i64 %fusion.indvar.dim.0, 4
%357 = icmp sge i64 %356, 0
%in_bounds99 = and i1 true, %357
%358 = urem i64 %356, 1
%359 = icmp eq i64 0, %358
%in_bounds100 = and i1 %in_bounds99, %359
%360 = sdiv i64 %356, 1
%361 = icmp slt i64 %360, 4
%in_bounds101 = and i1 %in_bounds100, %361
br i1 %in_bounds101, label %in_bounds-true103, label %in_bounds-false104
in_bounds-after105: ; preds = %in_bounds-false104, %in_bounds-true103
%362 = load double, double* %pad_result_addr102, align 8
%add.16 = fadd double %add.17, %362
%363 = getelementptr inbounds [12 x double], [12 x double]* %fusion, i64 0, i64 %fusion.indvar.dim.0
store double %add.16, double* %363, align 8, !alias.scope !90, !noalias !91
%invar.inc85 = add nuw nsw i64 %fusion.indvar.dim.0, 1
store i64 %invar.inc85, i64* %fusion.invar_address.dim.0, align 8
br label %fusion.loop_header.dim.0
fusion.loop_exit.dim.0: ; preds = %fusion.loop_header.dim.0
br label %return
in_bounds-true88: ; preds = %fusion.loop_body.dim.0
%364 = getelementptr inbounds [4 x double], [4 x double]* %reduce.8, i64 0, i64 %346
%365 = load double, double* %364, align 8, !alias.scope !77, !noalias !78
store double %365, double* %pad_result_addr, align 8
br label %in_bounds-after90
in_bounds-false89: ; preds = %fusion.loop_body.dim.0
%constant.108 = load double, double* bitcast ([8 x i8]* @12 to double*), align 8
store double %constant.108, double* %pad_result_addr, align 8
br label %in_bounds-after90
in_bounds-true95: ; preds = %in_bounds-after90
%366 = getelementptr inbounds [4 x double], [4 x double]* %reduce.12, i64 0, i64 %353
%367 = load double, double* %366, align 8, !alias.scope !88, !noalias !89
%368 = fneg double %367
%constant.107 = load double, double* bitcast ([8 x i8]* @15 to double*), align 8
%369 = add i64 %353, 8
%370 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %369
%371 = load double, double* %370, align 8, !invariant.load !32, !noalias !36
%multiply.54 = fmul double %371, %371
%constant.109 = load double, double* bitcast ([8 x i8]* @14 to double*), align 8
%multiply.53 = fmul double %multiply.54, %constant.109
%372 = call double @llvm.sqrt.f64(double %multiply.53)
%373 = fdiv double 1.000000e+00, %372
%multiply.52 = fmul double %constant.107, %373
%multiply.51 = fmul double %368, %multiply.52
%multiply.50 = fmul double %multiply.51, %constant.109
%374 = getelementptr inbounds [4 x double], [4 x double]* %reduce.14, i64 0, i64 %353
%375 = load double, double* %374, align 8, !alias.scope !72, !noalias !73
%376 = fneg double %375
%constant.110 = load double, double* bitcast ([8 x i8]* @13 to double*), align 8
%multiply.49 = fmul double %376, %constant.110
%add.18 = fadd double %multiply.50, %multiply.49
%multiply.47 = fmul double %371, %constant.110
%multiply.46 = fmul double %add.18, %multiply.47
store double %multiply.46, double* %pad_result_addr94, align 8
br label %in_bounds-after97
in_bounds-false96: ; preds = %in_bounds-after90
%constant.10898 = load double, double* bitcast ([8 x i8]* @12 to double*), align 8
store double %constant.10898, double* %pad_result_addr94, align 8
br label %in_bounds-after97
in_bounds-true103: ; preds = %in_bounds-after97
%377 = getelementptr inbounds [4 x double], [4 x double]* %reduce.10, i64 0, i64 %360
%378 = load double, double* %377, align 8, !alias.scope !82, !noalias !83
%379 = fneg double %378
store double %379, double* %pad_result_addr102, align 8
br label %in_bounds-after105
in_bounds-false104: ; preds = %in_bounds-after97
%constant.108106 = load double, double* bitcast ([8 x i8]* @12 to double*), align 8
store double %constant.108106, double* %pad_result_addr102, align 8
br label %in_bounds-after105
}
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.exp.f64(double) #1
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.sqrt.f64(double) #1
attributes #0 = { uwtable "denormal-fp-math"="preserve-sign" "no-frame-pointer-elim"="false" }
attributes #1 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
!0 = !{i64 8}
!1 = !{!2}
!2 = !{!"buffer: {index:4, offset:0, size:8}", !3}
!3 = !{!"XLA global AA domain"}
!4 = !{!5}
!5 = !{!"buffer: {index:6, offset:0, size:8}", !3}
!6 = !{!7}
!7 = !{!"buffer: {index:5, offset:0, size:8}", !3}
!8 = !{!9}
!9 = !{!"buffer: {index:7, offset:0, size:8}", !3}
!10 = !{!11}
!11 = !{!"buffer: {index:9, offset:0, size:8}", !3}
!12 = !{!13}
!13 = !{!"buffer: {index:8, offset:0, size:8}", !3}
!14 = !{!15}
!15 = !{!"buffer: {index:10, offset:0, size:8}", !3}
!16 = !{!17}
!17 = !{!"buffer: {index:12, offset:0, size:8}", !3}
!18 = !{!19}
!19 = !{!"buffer: {index:11, offset:0, size:8}", !3}
!20 = !{!21}
!21 = !{!"buffer: {index:13, offset:0, size:8}", !3}
!22 = !{!23}
!23 = !{!"buffer: {index:15, offset:0, size:8}", !3}
!24 = !{!25}
!25 = !{!"buffer: {index:14, offset:0, size:8}", !3}
!26 = !{!27}
!27 = !{!"buffer: {index:16, offset:0, size:8}", !3}
!28 = !{!29}
!29 = !{!"buffer: {index:3, offset:0, size:8}", !3}
!30 = !{!31}
!31 = !{!"buffer: {index:17, offset:0, size:8}", !3}
!32 = !{}
!33 = !{i64 96}
!34 = !{i64 16}
!35 = !{i64 68512}
!36 = !{!37, !38, !39, !40, !41, !42, !43, !44, !45, !46, !47, !48}
!37 = !{!"buffer: {index:0, offset:0, size:32}", !3}
!38 = !{!"buffer: {index:0, offset:0, size:96}", !3}
!39 = !{!"buffer: {index:18, offset:0, size:32}", !3}
!40 = !{!"buffer: {index:18, offset:0, size:16000}", !3}
!41 = !{!"buffer: {index:18, offset:16000, size:16000}", !3}
!42 = !{!"buffer: {index:18, offset:32000, size:16000}", !3}
!43 = !{!"buffer: {index:18, offset:48000, size:16000}", !3}
!44 = !{!"buffer: {index:18, offset:48512, size:32}", !3}
!45 = !{!"buffer: {index:18, offset:48544, size:32}", !3}
!46 = !{!"buffer: {index:18, offset:48576, size:32}", !3}
!47 = !{!"buffer: {index:18, offset:64000, size:4000}", !3}
!48 = !{!"buffer: {index:18, offset:68000, size:32}", !3}
!49 = !{!40}
!50 = !{!37, !41, !42, !43, !47, !48}
!51 = !{!37}
!52 = !{!40, !41, !42, !47}
!53 = !{!42}
!54 = !{!37, !40, !47}
!55 = !{!47}
!56 = !{!37, !40, !41, !42}
!57 = !{!41}
!58 = !{!37, !40, !43, !47, !48}
!59 = !{!48}
!60 = !{!40, !41, !43}
!61 = !{!43}
!62 = !{!63, !40, !41, !48, !64}
!63 = !{!"buffer: {index:2, offset:0, size:8}", !3}
!64 = !{!"buffer: {index:18, offset:68000, size:512}", !3}
!65 = !{!63}
!66 = !{!39, !40, !67, !41, !68, !42, !69, !43, !44, !45, !46, !64}
!67 = !{!"buffer: {index:18, offset:16000, size:512}", !3}
!68 = !{!"buffer: {index:18, offset:32000, size:512}", !3}
!69 = !{!"buffer: {index:18, offset:48000, size:512}", !3}
!70 = !{!64}
!71 = !{!63, !43, !44}
!72 = !{!44}
!73 = !{!38, !63, !39, !45, !46, !64}
!74 = !{!63, !69, !47}
!75 = !{!69}
!76 = !{!63, !42, !45}
!77 = !{!45}
!78 = !{!38, !63, !39, !69, !44, !46}
!79 = !{!63, !40, !68}
!80 = !{!68}
!81 = !{!63, !41, !46}
!82 = !{!46}
!83 = !{!38, !63, !39, !68, !44, !45}
!84 = !{!40, !47}
!85 = !{!37, !63, !67, !47}
!86 = !{!67}
!87 = !{!63, !39, !40}
!88 = !{!39}
!89 = !{!38, !63, !67, !44, !45, !46}
!90 = !{!38}
!91 = !{!39, !44, !45, !46}
; ModuleID = '__compute_module'
source_filename = "__compute_module"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@0 = private unnamed_addr constant [8 x i8] zeroinitializer, align 8
@1 = private unnamed_addr constant [8 x i8] c"\00\00\00\00\00\00\00@"
@2 = private unnamed_addr constant [4000 x i8] c"[\DD\17\E0\F8\CA\E1\BF\B4\0Fk\E4\C6p\DC\BFQ/\A5\E2\9B\CE\9B?\96\E2pQ\BF*\D3\BF,\CA\8Fz\1Er\FC?@\A6\BED\84Q\F2\BF\A7\E5\A7\86\A3\FD\DD\BF\C7Y\C3L\82\FC\C3?\96 \80.\CC\22\05\C0\EFW\E8\AE\8E\0D\F0?\C6J~\F4nQ\F1?~\869\CC\87\F0\C7?\7F\9EL\C4\AC\94\E0?\EF\01ZY\B0\DC\F7?\95\1F\83\E5%\86\D7?'3\825\CB[\EC\BF\A5I\0C=\F4\E7\E5? p\DF\FC\03s\F9\BF\F0\C6\DA\1F%H\DA?\7F\08\85\C27g\EB\BF|\FEG}\D8\D0\F0\BF\8E\91O\F0\08\11\E0?fB\A7\C3\03\AE\CB\BF\A0\95F\13\07\9B\E6\BF\88l\C90\E5M\0D\C0\B1\C9\DE\E34\8C\C5?\\\84\1B\F1L1\D2?4\94lJ\09<\E2?\F2\A8\D9\D7\C0\C0\F6\BF\15\80\9E{j\D5\D7\BF\EEj\02P\DD\9D\D7?\A2\B7s\C7\C9.\7F\BF[\C4l\06b\01\E2?k\EA\EB%\C6[\BB?t\DB\84\05\019\E2?Ad%\9Er\CB\E5?\E4\14\99v\0Em\F5\BF\02\B0j\B4\14\80\CE\BFpLH)KO\F0?\98\D4\19%\E9t\E6?\AF@J\F9A\96\C2\BFvr\81\9E\9B\92\E4?H\FD\84+\0D\1C\FD?;\E8#\A2/\81\D7\BF\AD\E3\C4!\D05\E8?\F0>\F3\DF\BBF\B6?\1F\ADNk\FA<\EB\BF\ADJzI[\93\ED?b5\8B\CE\1F\CB\F9?2\1C\10S-\A0\ED\BF\92sF\16\CE|\DF?}G\D1\AB<\F0\CC\BF2R\D2\B7Q\A0\F5\BF\1EC\06\D6\F4Y\D3?\A6b\B7\C7\A6\9A\F3?\A4\8C\16\A8\81O\DD\BFG\16\0E\D0Z\99\D7\BF\D1\D1\A8\87'\D0\E2\BF}/g\DB\EE{\EC?G\14\87?f\A5\CE?r\98\12\F6\E9\F9\C8\BFe\90\86\E3\9A\EE\E4?s\FE\D5\D8\87-\EA\BF<\1E\88\03\B9h\FA\BF\0B\07A5tn\DA\BF\95\7F\E3\B7U\F2\9B?5\18\BDy\CC\0B\D3?U\85@\D1!E\B2?\E4\8273\E5\9F\EC\BF\80gD\FE\82\EA\FF\BF\C4\0C\84\F0\F2\F8\C7\BF-VgS\F3\BB\E2\BF\F2@\E7Q\83&\F8\BF(\D5\9F`f\C1\BB\BF\8F\FCR\C7\A6\C6\D7\BF\84\E0~d\D0Y\F3?nvM\05\00\1D\CA\BF\07]\FF\E7h\91\89?lT\F2=\89\FE\C1?\CC\84\16Y\AD\C1\EF\BF\83m\E7\87\16`\F2\BF\91v\EA\9E\F9\F1\F5?\\\1CW\E8#>\AE\BF\81UdB\D7\98\D6\BF{2{\D9\9D.\F7\BF0\8D\95Vs\1A\03@ID\0B\0By\1A\C0?:\C6#\F4\BB\8F\FF\BF\BA\92\19\B0\DEm\E6?\B4\E5\B0\A3\D2I\D4?\D6@D\D2\C6\AE\D1?\E0\DC!\8C\89\02\FA\BFD\EB\FE\C4|\FE\ED\BF\A4k6\01\99\C6\ED\BFZbA\1FO\D9\FF\BF\C7\1F\97{\E7\9A\C1?j,\B3\DCT2\09@\F1\0B\EE\08\CF\15\E7\BF\D64\8A\1A\8Bw\E2\BF\DD\CD\CF4\8Bf\DD?k\AEi\8A\80\A4\CF?\0A0}\CEDG\9A\BF\98.\C3\DD\01:\E4\BFM\E3\D5>\A3S\F0\BF\8D8e\9A\EF\FB\F4\BF\\\83z\C6r\FC\E5?\D9\0A\13\93\C07\B8\BF\07\ADJ\84N9\D2\BF1 Y\D1I\AE\D5\BF\B5Q\83\ED\00j\B8\BF\93E\10Fj\9B\E8?u\B17\BE?\14\F7?|\B0>e \9A\D1\BFK`s\0D\FBK\D8\BF0\DB\96\08T \E7\BF\9Abroj\E0\C1?\EB\FD\FDN\A7\8C\F6\BF\8F_K\7F&\E3\F0?\07\0A\8EW\0F\E7\01\C0s+Y\09\E5\8B\F2?\87\01\B9\0Fl\15\E6\BF'\03<~5\1D\F6\BFA\91x\99\D2\00\E3?:\C8\C35\E1&\E5?&s\DB\CBB\12\06@\0A\AE\E9\B3\BD\ED\DD?3\F1\C1\97\8F\A2\B4\BF\C8\1F:\E1\C8^\B4?\EF\08\B7;f3\D7\BFx\FC/S\CE\06\E6\BF\00h\A6\05\B9C\E6\BF$\D17\CAb\83\DB\BF\9B\0BeI\9F\BE\E3\BF\E9\D6\85&\833\E9\BF\A3\A7j\E7\FBV\EF?=\8E\C2\E1\A6\\\C5\BFb\91Tj\EC9\DC\BF\BE0o\DB\22\D4\85\BF\D9\9C\07@%\15\DA?\F1\83k\F7\A6z\D8\BF\B7\91\8C.\89\8F\DB\BF\D3\A2\C0\E5\F8\18\AB\BF\9E\CA\B5\84^k\E8?#\8D\1A\A1=S\FB\BF\C0\85\13\0D\1BH\E5\BF\C1\B0\1F\954\85\F9?]\EC\EFg\E5[\E1?>\86\BC\C9qL\D1?N=\01\1F\AE\9E\F2?\10\06\84\D6(5\EF\BF\08\F6o\C9\D9\EB\E2?\17\CB\98\FE\E1\98\E2\BF\18Z^\D3\06\A9\F0\BF9\A7\9F*L\A2\C8\BF+\8E\E3*\EE\D3\DB\BF\0AS\A5d\ED\8F\B5?\D9o:\C5t\B3\F0?\89\E0]\A3\AE\88\DF\BF\1B\E5\B6\C5\07\EF\F3?vPx\12\B2\ED\F1?\F7\AF\81\AA'\91\BF\BF\13\15>\14J\10\F1\BF+h:|:\80\D3?\99\CF\C3\FD\00\D1\FC\BF\BBuH^\E0\FB\C0\BF\92\84\DD a+\E4?\E8\F6c\9B\ED\BB\02\C08\9F\C6\DB\1Cr\C4\BF*\AC*j\B9\BE\E5?d\D0vn\1C\D5\E7\BF<H\D1i\EF\B0\F3?A\BB\AF\82\16s\F1?]\1Fc\8BuU\FE?\89\8D\96\A6\BA$\D1\BF\E6\F1;0\BFP\00@\9FC\09+\FF\89\AC?\0B\D2A\DD\F2\04\E7\BF\0E\CB\D5n\9D\D9\C4\BF\93I\9A\D2)s\D2\BF\86Z\05\BFvm\00\C0\BE!ph\D6\DD\01\C0\9C\97\10\BE\\t\F2\BF\FA~\F3Pk\F2\F8\BF\0B]J\EC2\A3\F5\BF\F36\B9\03u\BB\D6\BF\BB\1D{\BF\18\07\EE\BFp\95YS?\9B\E1?\FC\C0\D8\05\D4r\FA\BFG\0E\06j\E5H\F0\BFG\80Anx\AC\F5?(rH5\BC^\E7\BF\D3\A2?f\B5Y\F7?y\A8V\C7\10\CF\F2?FH\0C\84r\83\F7?\086\18\A6\83=\01@O\D2\D0|\09R\C9\BF\08+\B5\B9\AA\D0\F3\BF\ED\85F\9A\C4z\DE?N}\E6=\FA\1F\E2?\BF\B9F(\9B\87\01@\F6?QQL_\C5\BFI'=\0C[q\FD\BF^\85\D9\F6\AB\FE\E2\BFM\DE\1C\B9Dv\DC\BF\B9\09cI\1F\19\FE?N\85\E9\17\92l\EB\BF|E\C7\05\1C\FD\E0?@\DFw\A9\22R\EE?\CE\E8\BE\8E\B15\E0?f\8A\86C|\D4\F6\BF\EE\9D/W\11u\D1?\A5d&\0B\C3\EE\FA?\8F0\13pr$\EC?\93V\FB\1F\9F\D3\D7\BF\DAB\C0\C5\B6]\F3?\0E\F9 A\82\10\EA\BFY\93<F\1E=\E5\BF'\0Av\A9\0EO\D7\BF\E8\C0~\04;h\C0?\B1J\CC\E6\94`\EB\BF'\A0\ED\99\18\E2\E7?\1D\0B\FAw\E2S\CB\BF\1F\F4\D8\8D\83l\E3?m\88\11L\7FA\C3\BFG__\1D\BCV\D2?\A5\BD_\C8\A9\01\EF?\9EN\B7P\EA\BB\DD?V}\0F&N\CB\B9\BF\AD\D4ka\EA\19\EF?\E1\E7\B5U\94\BF\F5?\02\F3r\EDQo\ED?\97|V5\84+p\BF\FB\C8\9B\80\E7H\E5?0C\F4\A3\00\B7\DD\BF\AA\A5\83\DF\AD\A8\B8\BF\E1&O\80\ACl\F7\BF\A68\05\81\D4w\A1?\EA\E0 h\87\A7\C8?\F44>\C6\8E[\F4?\D4~\B6\83O\C0\E5\BF\06\B0\FBy\E3\C9\E6?\DFe\D8\F1\D7[\FA?\E0R\D4T\DE\C7\F5\BF\84\B3\E4\C94=\FA?\7F\01.\A7\EC\B1\F4\BF\ED\AD\93\C2\AB\7F\E3\BF^a\F8c\BB\8B\DF\BF\AD\04\FBaU\97\B3?\AAY\C4\D4\86a\C4?0\CE\DDk\F8t\DC?NX\88F\0Af\F3\BFw\F0\9A\88\E1\A0\F5\BFU\8Eq\B6\9C\82\F0\BF~SU=\0A0\F1?\229;$\E0\13\F1?\12(\9C\A3\DA\C4\C5\BFq)\8C\97\C9\CD\C8?\EFs\F8\D4`\DA\03\C0\22X\0F\7Fwd\DD\BF\F7l\A9\81c\09\F3\BFBg\BE\E3\1D\AD\D0?uh\86s\B70\E4\BF\EE&x$\A5\A3\F8?\DA\ED\E57\C2\80\BA\BFsz\CF\84&\CC\F0?\1EA`,X\EA\B5\BFV\11X^\0A~\FF\BF\E9\1B?\F25=\ED?\A0\BB\02J\F4C\F8?Pg-\C1\A1\D4\EE\BF\0C\063\FD\C9\03\F3?7D9\BEV\D1\CD\BF\8ChG)A\92\EE?FlH\82`\D5\D3\BF\91\AF\D6\0EJ\9C\A5\BFbt\B2\DB\AB\E3\FF\BF\A4&B\EF\FE\EF\E3?\7FN\D0\A6\83\15\06\C0\BF\B4r\C2hd\F3?\0C!\B3\FC\180\F9?\ED\F65\C2s\16\EB\BF\D2\88\85M\B6m\E7?\00\9B\8E\A8h\B4\F0?\B7\02}\E8&\F1\F9?+\1D\EB\92<\00\06@\DEEF#i\C1\FB?_\00\FCvK\AE\F3\BF?\80P\AD_)\D7\BF\C5Ly\F2\D1\04\C5?p\F8Ho\0D8\D2\BF\8E\AAC\B2\E9\0C\FD?g\E9E\E0\EF\A0\E8\BF.\22v\D9y\0E\D8\BF\D44p\06Y/\D4\BF\A5d\DB\A3Y\B3\CD?\87\12B\C2\D3\EF\EC\BF\B9l\C4\A6\B9\B7\C2?f\B6\E8\\a\93\CC?\08\CC\16\EEZ\05\B3\BFU-+W\CA\83\EB?\DF\90E\E68\E7\E9?\B6$W \F2\E5\E8?\8Aa\F5\EDa\9E\EF\BF\B8\ADYc\EDo\C6\BF\11Fj\D3\D1\E9\F6\BF}b3Ho\E2\DF?\EA,\A3^\B8H\F7?Qs\97\A6\FF\AA\EB\BF\9D\8EX\1B\BC\13\E4?\B1V\8E\00\86\16\E7?(\0Ba\FE&f\F0?\13\E2\1E)\C5\AE\F9?\DA\A9s\81\CD\B8\DA\BFQ+\A5\0D\D8\00\F3\BFdc\FB\17\DAw\FF?\FF\18\1E-\95y\EA\BF\B6\10J\84\0B\F4\FC\BFWy\90\19K\17\CC?A\04]\EA\89\22\FB?\9F\AF\B2\EF\EFx\B3?\D7\FAK\D7@UC\BF\C5 \FF\8An)\E4\BF\E0@\15)\91\F0\E6?\11\D1^p\ED!\FB\BFB\DB\C3\D2\16\08\03\C0\9E\AD\97\E1k\AA\C4?\F5 {V\EEF\D6\BF\09\91\92d\0A\F8\C8\BF\CER\C3\94\A3\97\E1\BFA<c\E3\16K\F1?kO\E3^6\B3\01\C0\B7\E7\06b\97\E6\EB?\B8\15\A0\C0i\84}\BF4\DB\BDy\DA6\F9\BF\F6\86\AE)\AF\AB\01\C0\10\B6u\C9\22\B9\E3\BFh4_\F6\C8\90\E2\BF\DCr\99\F5\0A\FB\F8\BFve\B6\1A\DD\CD\F4\BF\D8.\0E\E1.\18\F0\BF\04\84\DD^\AE\BF\E5?~\9C\A1\C3F\1F\A6\BFT\B0c\07\DCe\A4\BF\D4\0F\BC0\FA\10\DC\BF\01\90\BC\FB\B1{\B7\BF\FAQBg\1B\9C\F3?Z\8D~\A4}\B6\CD\BFQ\D0Y\06Ll\F3\BF\96\06K\D5\E3R\CE\BF\A8}\F7\DFG~\D8\BF\CD\E2\84\06\9B\80\FF\BF_\D1\D6\D1\A5F\F9\BFcP\0D.\8E\18\E2\BF#\E7\EC\9E\E2x\FB\BFQ\1E\F0\C1\F1\91\03\C0\12\C9\F7\14\BF\18\D1\BF`\1B\CF\D1\1A\B1\E5?\EC\84#L\8B\9E\C5\BFd}\F7ec\AD\F9?\E3\E3\D8\80!\F8\FB?\E2\9D\D5\95tU\ED?#\80H\C7\8F%\F2?\AC\C4A\AC\ACk\01\C0q\0E\F5\80\98%\D5\BF\ECCj8Q\1A\D1\BF\\\0C\89.&7\F3?\02JH+\A2\12\F5?A:!n\CCF\E3?\02\90\15\E2\DDr\EF\BF\A3\D3\07\81\D3T\F2\BF#\06P\F77\86\D0?\D4\A8|\83\A8B\02\C0jE23\BCd\08\C0\AF\E4\FA\C96\82\F4\BF\D8\D0M\07\83i\06@!8c\D2\F8\0B\E2?Y\F3\9E\84,H\DD\BF\A1\DC\C8\04v\92\E9\BF\99\FD\BB\1A\9E4\F1?\8E\BF\C8}\9C\D2\E1\BF\8C0\E1\7F\B0^\A9?\DD\D7\81\D6\92\85\EC\BFL\F4e\0D\F0\91\E6\BFjlQ\95JZ\F6?\AA$\8D\DE\A8\9A\FE\BF&\EDL\92\A6\81\E4\BFk\9E\93\BD-\C6\D9\BF\C6\98\E1Hp\17\CB?H\B7\D5C\A0\EB\01@\C3u_C^6\EC\BF\CB\EA\83\9F\A8\C3\E3\BF+\C0\B7ma\10\D9\BF\9A K\16\8Cq\EE?\B0~{\8F\E5\13\C2?\8D.?4\EDH\F3?\BF\B6o\0E6\81\98?\C8M\8F\8DD\06\EA\BF\04&\8A\FDm)\F0?\F1%\7F#\1A\1D\C3?\0B\FA\85\97mp\FC?\E2'\09/\16\F8\EA?[$\CB\C5\14]\EF\BFw\C1p\93\C4\95\F4?\D1Z\1ERT\18\DC?\A2\A92\D2\B4.\E0\BF\B2G\E94\DFz\FA\BF2\10\FD\E9P\D9\E4?1\A8\9E\83H\F2\E0\BF?\19\BE)\ED\FA\EC?U\D3\C2\83\12\F8\B6?\BB#\81u<\C7\CD?\1A\CF\CF\B3\E8\04\05@s\C0\CD\8F!i\D1?\9F\00\CAL\92\97\ED?h\0BZx\CCN\D9?O\CB\131W\0F\08\C0\DB\02M\AB\E4\E4\F1? \80\03\94\90_\C6?_\A1m{\06m\F3\BF\DA\D8\AA\96U\B8\C8?!\97\B3\FB?\7F\D3?\A8\1C\86tj\14\01\C0\0B.\19\10\0B\1D\E2?z\08iT\AD\AA\99?\\I\92;z\0F\D9\BF\C8M\EED\9B6\EC?\B1h^>\E7s\EA?\E6\0F.o\EC`\EE?O\DE\F4\87\9CDj\BF\BC\DE\99'1\BD\FC\BF\A3N\0Cm\\o\DA?3\11\16gu\98\F4\BF\85A|\1F6\E9\F1\BF\9D\B5\D2\1F4\BE\E8?v\AF\D9l\80\8F\D8\BF\B5\07\B9h\C3\E8\B3?\8E\1F5\AE\EF\22\E8\BF\B1\CB\DF\81h\D4\B4?\D1L<\EE'\94\D1?DY;;\A5\CB\F1?+\FC\8F\BB\87\0B\E1?\A9\97p\95i\09\E9?\F8|\B2/|\09\D4\BF91R\99At\A7\BF\E3%\E34\1B\A8\C5?\E7\EF_\FE\F8\BE\D7?\1F\AA\E7\E0\D9.\EE\BFy\00\1B\22_Y\E8\BF\9C\F7X3\C4\F2\D1?\F0hq\D2]\C4\A8\BF\FA-\D7\D0\9Fe\EF\BF#\05\DB\D5\04\D9\F4?^\CE\C8\AF@\85\AE?9\DB\A0\A2J\DF\BF?\1E\D8\07\A6\16\14\BD?9-v\01gJ\F5\BF\B7u)\F3ZE\D6\BF\03\D2\A7Y\DFX\D2\BF_m\86q\A4\93\E5?\A1L\BC\AC\FA!\DB\BF$\E4\E8~\FB\88\ED\BF\92p\D0\DFS\ED\D3?\B4Q\A6h\F6\04\DF\BF\FC\03\90E\CC\D7\8B\BF\E0\EC\F6S\95\D8\F3?,\BD\8D9\C6\87\F0?\10xIl\F4\95\BE\BFLx$\0F\F0a\E3\BF\E3\A8\ABJ\A6\D0\E8\BF\8E\9B\05k\EF\95\F2?\B1\9C^\D9\DE\E6\F3?O\B4\D0h7s\9C?\AE\93\BA\C4\D5d\F3\BF#\B0\A3\A4\82b\E4?ULx\EC\AC\DE\E5?\18\A1\F6\1B*\F9\E3?\81\A84\82\D2\A6\F5\BF&\C0\EB\E8\93\9A\EC?\93A\F1\B4\00\CC\EA?\9D\AF\8A'\F2\E2\D7\BFN\D6\8E\95f\DD\F2?\AA\06\87\F7eQ\E9?\1C\A2\0A\1B+\07\CC?\BA~C\F6\EF\8F\E3\BF\AF\86*\FE\0Ey\C9?2\AE~\C3\CA#\D4?7\85\94\98\05\EF\F3?\CDC~r\08,\E0?\88\C5<\1F=\C9\DC\BF\EDZS\EC-6\E3?\D2\C0\08|\946\E9?\EEb\B0\ED{\84\DE?WD\A2Z8\B5\E6\BF\E4(\E4\88\0D0\B8?\93r\FC\A8 3\FA\BF@\DC\E7m\E9\81\F2?\9E\F9\03v\ED\8B\E9?N\E3\F2H\0C5\F5\BFtU:\BF\81*\CC\BF\A2\AAy\E1\09$\E4?"
@3 = private unnamed_addr constant [8 x i8] c"\18-DT\FB!\19@"
@4 = private unnamed_addr constant [8 x i8] zeroinitializer
@5 = private unnamed_addr constant [8 x i8] c"\00\00\00\00\00\00\F0?"
@6 = private unnamed_addr constant [8 x i8] c"\00\00\00\00\00\00\00@"
@7 = private unnamed_addr constant [8 x i8] c"\00\00\00\00\00\00\F0?"
@8 = private unnamed_addr constant [4000 x i8] c"[\DD\17\E0\F8\CA\E1\BF\B4\0Fk\E4\C6p\DC\BFQ/\A5\E2\9B\CE\9B?\96\E2pQ\BF*\D3\BF,\CA\8Fz\1Er\FC?@\A6\BED\84Q\F2\BF\A7\E5\A7\86\A3\FD\DD\BF\C7Y\C3L\82\FC\C3?\96 \80.\CC\22\05\C0\EFW\E8\AE\8E\0D\F0?\C6J~\F4nQ\F1?~\869\CC\87\F0\C7?\7F\9EL\C4\AC\94\E0?\EF\01ZY\B0\DC\F7?\95\1F\83\E5%\86\D7?'3\825\CB[\EC\BF\A5I\0C=\F4\E7\E5? p\DF\FC\03s\F9\BF\F0\C6\DA\1F%H\DA?\7F\08\85\C27g\EB\BF|\FEG}\D8\D0\F0\BF\8E\91O\F0\08\11\E0?fB\A7\C3\03\AE\CB\BF\A0\95F\13\07\9B\E6\BF\88l\C90\E5M\0D\C0\B1\C9\DE\E34\8C\C5?\\\84\1B\F1L1\D2?4\94lJ\09<\E2?\F2\A8\D9\D7\C0\C0\F6\BF\15\80\9E{j\D5\D7\BF\EEj\02P\DD\9D\D7?\A2\B7s\C7\C9.\7F\BF[\C4l\06b\01\E2?k\EA\EB%\C6[\BB?t\DB\84\05\019\E2?Ad%\9Er\CB\E5?\E4\14\99v\0Em\F5\BF\02\B0j\B4\14\80\CE\BFpLH)KO\F0?\98\D4\19%\E9t\E6?\AF@J\F9A\96\C2\BFvr\81\9E\9B\92\E4?H\FD\84+\0D\1C\FD?;\E8#\A2/\81\D7\BF\AD\E3\C4!\D05\E8?\F0>\F3\DF\BBF\B6?\1F\ADNk\FA<\EB\BF\ADJzI[\93\ED?b5\8B\CE\1F\CB\F9?2\1C\10S-\A0\ED\BF\92sF\16\CE|\DF?}G\D1\AB<\F0\CC\BF2R\D2\B7Q\A0\F5\BF\1EC\06\D6\F4Y\D3?\A6b\B7\C7\A6\9A\F3?\A4\8C\16\A8\81O\DD\BFG\16\0E\D0Z\99\D7\BF\D1\D1\A8\87'\D0\E2\BF}/g\DB\EE{\EC?G\14\87?f\A5\CE?r\98\12\F6\E9\F9\C8\BFe\90\86\E3\9A\EE\E4?s\FE\D5\D8\87-\EA\BF<\1E\88\03\B9h\FA\BF\0B\07A5tn\DA\BF\95\7F\E3\B7U\F2\9B?5\18\BDy\CC\0B\D3?U\85@\D1!E\B2?\E4\8273\E5\9F\EC\BF\80gD\FE\82\EA\FF\BF\C4\0C\84\F0\F2\F8\C7\BF-VgS\F3\BB\E2\BF\F2@\E7Q\83&\F8\BF(\D5\9F`f\C1\BB\BF\8F\FCR\C7\A6\C6\D7\BF\84\E0~d\D0Y\F3?nvM\05\00\1D\CA\BF\07]\FF\E7h\91\89?lT\F2=\89\FE\C1?\CC\84\16Y\AD\C1\EF\BF\83m\E7\87\16`\F2\BF\91v\EA\9E\F9\F1\F5?\\\1CW\E8#>\AE\BF\81UdB\D7\98\D6\BF{2{\D9\9D.\F7\BF0\8D\95Vs\1A\03@ID\0B\0By\1A\C0?:\C6#\F4\BB\8F\FF\BF\BA\92\19\B0\DEm\E6?\B4\E5\B0\A3\D2I\D4?\D6@D\D2\C6\AE\D1?\E0\DC!\8C\89\02\FA\BFD\EB\FE\C4|\FE\ED\BF\A4k6\01\99\C6\ED\BFZbA\1FO\D9\FF\BF\C7\1F\97{\E7\9A\C1?j,\B3\DCT2\09@\F1\0B\EE\08\CF\15\E7\BF\D64\8A\1A\8Bw\E2\BF\DD\CD\CF4\8Bf\DD?k\AEi\8A\80\A4\CF?\0A0}\CEDG\9A\BF\98.\C3\DD\01:\E4\BFM\E3\D5>\A3S\F0\BF\8D8e\9A\EF\FB\F4\BF\\\83z\C6r\FC\E5?\D9\0A\13\93\C07\B8\BF\07\ADJ\84N9\D2\BF1 Y\D1I\AE\D5\BF\B5Q\83\ED\00j\B8\BF\93E\10Fj\9B\E8?u\B17\BE?\14\F7?|\B0>e \9A\D1\BFK`s\0D\FBK\D8\BF0\DB\96\08T \E7\BF\9Abroj\E0\C1?\EB\FD\FDN\A7\8C\F6\BF\8F_K\7F&\E3\F0?\07\0A\8EW\0F\E7\01\C0s+Y\09\E5\8B\F2?\87\01\B9\0Fl\15\E6\BF'\03<~5\1D\F6\BFA\91x\99\D2\00\E3?:\C8\C35\E1&\E5?&s\DB\CBB\12\06@\0A\AE\E9\B3\BD\ED\DD?3\F1\C1\97\8F\A2\B4\BF\C8\1F:\E1\C8^\B4?\EF\08\B7;f3\D7\BFx\FC/S\CE\06\E6\BF\00h\A6\05\B9C\E6\BF$\D17\CAb\83\DB\BF\9B\0BeI\9F\BE\E3\BF\E9\D6\85&\833\E9\BF\A3\A7j\E7\FBV\EF?=\8E\C2\E1\A6\\\C5\BFb\91Tj\EC9\DC\BF\BE0o\DB\22\D4\85\BF\D9\9C\07@%\15\DA?\F1\83k\F7\A6z\D8\BF\B7\91\8C.\89\8F\DB\BF\D3\A2\C0\E5\F8\18\AB\BF\9E\CA\B5\84^k\E8?#\8D\1A\A1=S\FB\BF\C0\85\13\0D\1BH\E5\BF\C1\B0\1F\954\85\F9?]\EC\EFg\E5[\E1?>\86\BC\C9qL\D1?N=\01\1F\AE\9E\F2?\10\06\84\D6(5\EF\BF\08\F6o\C9\D9\EB\E2?\17\CB\98\FE\E1\98\E2\BF\18Z^\D3\06\A9\F0\BF9\A7\9F*L\A2\C8\BF+\8E\E3*\EE\D3\DB\BF\0AS\A5d\ED\8F\B5?\D9o:\C5t\B3\F0?\89\E0]\A3\AE\88\DF\BF\1B\E5\B6\C5\07\EF\F3?vPx\12\B2\ED\F1?\F7\AF\81\AA'\91\BF\BF\13\15>\14J\10\F1\BF+h:|:\80\D3?\99\CF\C3\FD\00\D1\FC\BF\BBuH^\E0\FB\C0\BF\92\84\DD a+\E4?\E8\F6c\9B\ED\BB\02\C08\9F\C6\DB\1Cr\C4\BF*\AC*j\B9\BE\E5?d\D0vn\1C\D5\E7\BF<H\D1i\EF\B0\F3?A\BB\AF\82\16s\F1?]\1Fc\8BuU\FE?\89\8D\96\A6\BA$\D1\BF\E6\F1;0\BFP\00@\9FC\09+\FF\89\AC?\0B\D2A\DD\F2\04\E7\BF\0E\CB\D5n\9D\D9\C4\BF\93I\9A\D2)s\D2\BF\86Z\05\BFvm\00\C0\BE!ph\D6\DD\01\C0\9C\97\10\BE\\t\F2\BF\FA~\F3Pk\F2\F8\BF\0B]J\EC2\A3\F5\BF\F36\B9\03u\BB\D6\BF\BB\1D{\BF\18\07\EE\BFp\95YS?\9B\E1?\FC\C0\D8\05\D4r\FA\BFG\0E\06j\E5H\F0\BFG\80Anx\AC\F5?(rH5\BC^\E7\BF\D3\A2?f\B5Y\F7?y\A8V\C7\10\CF\F2?FH\0C\84r\83\F7?\086\18\A6\83=\01@O\D2\D0|\09R\C9\BF\08+\B5\B9\AA\D0\F3\BF\ED\85F\9A\C4z\DE?N}\E6=\FA\1F\E2?\BF\B9F(\9B\87\01@\F6?QQL_\C5\BFI'=\0C[q\FD\BF^\85\D9\F6\AB\FE\E2\BFM\DE\1C\B9Dv\DC\BF\B9\09cI\1F\19\FE?N\85\E9\17\92l\EB\BF|E\C7\05\1C\FD\E0?@\DFw\A9\22R\EE?\CE\E8\BE\8E\B15\E0?f\8A\86C|\D4\F6\BF\EE\9D/W\11u\D1?\A5d&\0B\C3\EE\FA?\8F0\13pr$\EC?\93V\FB\1F\9F\D3\D7\BF\DAB\C0\C5\B6]\F3?\0E\F9 A\82\10\EA\BFY\93<F\1E=\E5\BF'\0Av\A9\0EO\D7\BF\E8\C0~\04;h\C0?\B1J\CC\E6\94`\EB\BF'\A0\ED\99\18\E2\E7?\1D\0B\FAw\E2S\CB\BF\1F\F4\D8\8D\83l\E3?m\88\11L\7FA\C3\BFG__\1D\BCV\D2?\A5\BD_\C8\A9\01\EF?\9EN\B7P\EA\BB\DD?V}\0F&N\CB\B9\BF\AD\D4ka\EA\19\EF?\E1\E7\B5U\94\BF\F5?\02\F3r\EDQo\ED?\97|V5\84+p\BF\FB\C8\9B\80\E7H\E5?0C\F4\A3\00\B7\DD\BF\AA\A5\83\DF\AD\A8\B8\BF\E1&O\80\ACl\F7\BF\A68\05\81\D4w\A1?\EA\E0 h\87\A7\C8?\F44>\C6\8E[\F4?\D4~\B6\83O\C0\E5\BF\06\B0\FBy\E3\C9\E6?\DFe\D8\F1\D7[\FA?\E0R\D4T\DE\C7\F5\BF\84\B3\E4\C94=\FA?\7F\01.\A7\EC\B1\F4\BF\ED\AD\93\C2\AB\7F\E3\BF^a\F8c\BB\8B\DF\BF\AD\04\FBaU\97\B3?\AAY\C4\D4\86a\C4?0\CE\DDk\F8t\DC?NX\88F\0Af\F3\BFw\F0\9A\88\E1\A0\F5\BFU\8Eq\B6\9C\82\F0\BF~SU=\0A0\F1?\229;$\E0\13\F1?\12(\9C\A3\DA\C4\C5\BFq)\8C\97\C9\CD\C8?\EFs\F8\D4`\DA\03\C0\22X\0F\7Fwd\DD\BF\F7l\A9\81c\09\F3\BFBg\BE\E3\1D\AD\D0?uh\86s\B70\E4\BF\EE&x$\A5\A3\F8?\DA\ED\E57\C2\80\BA\BFsz\CF\84&\CC\F0?\1EA`,X\EA\B5\BFV\11X^\0A~\FF\BF\E9\1B?\F25=\ED?\A0\BB\02J\F4C\F8?Pg-\C1\A1\D4\EE\BF\0C\063\FD\C9\03\F3?7D9\BEV\D1\CD\BF\8ChG)A\92\EE?FlH\82`\D5\D3\BF\91\AF\D6\0EJ\9C\A5\BFbt\B2\DB\AB\E3\FF\BF\A4&B\EF\FE\EF\E3?\7FN\D0\A6\83\15\06\C0\BF\B4r\C2hd\F3?\0C!\B3\FC\180\F9?\ED\F65\C2s\16\EB\BF\D2\88\85M\B6m\E7?\00\9B\8E\A8h\B4\F0?\B7\02}\E8&\F1\F9?+\1D\EB\92<\00\06@\DEEF#i\C1\FB?_\00\FCvK\AE\F3\BF?\80P\AD_)\D7\BF\C5Ly\F2\D1\04\C5?p\F8Ho\0D8\D2\BF\8E\AAC\B2\E9\0C\FD?g\E9E\E0\EF\A0\E8\BF.\22v\D9y\0E\D8\BF\D44p\06Y/\D4\BF\A5d\DB\A3Y\B3\CD?\87\12B\C2\D3\EF\EC\BF\B9l\C4\A6\B9\B7\C2?f\B6\E8\\a\93\CC?\08\CC\16\EEZ\05\B3\BFU-+W\CA\83\EB?\DF\90E\E68\E7\E9?\B6$W \F2\E5\E8?\8Aa\F5\EDa\9E\EF\BF\B8\ADYc\EDo\C6\BF\11Fj\D3\D1\E9\F6\BF}b3Ho\E2\DF?\EA,\A3^\B8H\F7?Qs\97\A6\FF\AA\EB\BF\9D\8EX\1B\BC\13\E4?\B1V\8E\00\86\16\E7?(\0Ba\FE&f\F0?\13\E2\1E)\C5\AE\F9?\DA\A9s\81\CD\B8\DA\BFQ+\A5\0D\D8\00\F3\BFdc\FB\17\DAw\FF?\FF\18\1E-\95y\EA\BF\B6\10J\84\0B\F4\FC\BFWy\90\19K\17\CC?A\04]\EA\89\22\FB?\9F\AF\B2\EF\EFx\B3?\D7\FAK\D7@UC\BF\C5 \FF\8An)\E4\BF\E0@\15)\91\F0\E6?\11\D1^p\ED!\FB\BFB\DB\C3\D2\16\08\03\C0\9E\AD\97\E1k\AA\C4?\F5 {V\EEF\D6\BF\09\91\92d\0A\F8\C8\BF\CER\C3\94\A3\97\E1\BFA<c\E3\16K\F1?kO\E3^6\B3\01\C0\B7\E7\06b\97\E6\EB?\B8\15\A0\C0i\84}\BF4\DB\BDy\DA6\F9\BF\F6\86\AE)\AF\AB\01\C0\10\B6u\C9\22\B9\E3\BFh4_\F6\C8\90\E2\BF\DCr\99\F5\0A\FB\F8\BFve\B6\1A\DD\CD\F4\BF\D8.\0E\E1.\18\F0\BF\04\84\DD^\AE\BF\E5?~\9C\A1\C3F\1F\A6\BFT\B0c\07\DCe\A4\BF\D4\0F\BC0\FA\10\DC\BF\01\90\BC\FB\B1{\B7\BF\FAQBg\1B\9C\F3?Z\8D~\A4}\B6\CD\BFQ\D0Y\06Ll\F3\BF\96\06K\D5\E3R\CE\BF\A8}\F7\DFG~\D8\BF\CD\E2\84\06\9B\80\FF\BF_\D1\D6\D1\A5F\F9\BFcP\0D.\8E\18\E2\BF#\E7\EC\9E\E2x\FB\BFQ\1E\F0\C1\F1\91\03\C0\12\C9\F7\14\BF\18\D1\BF`\1B\CF\D1\1A\B1\E5?\EC\84#L\8B\9E\C5\BFd}\F7ec\AD\F9?\E3\E3\D8\80!\F8\FB?\E2\9D\D5\95tU\ED?#\80H\C7\8F%\F2?\AC\C4A\AC\ACk\01\C0q\0E\F5\80\98%\D5\BF\ECCj8Q\1A\D1\BF\\\0C\89.&7\F3?\02JH+\A2\12\F5?A:!n\CCF\E3?\02\90\15\E2\DDr\EF\BF\A3\D3\07\81\D3T\F2\BF#\06P\F77\86\D0?\D4\A8|\83\A8B\02\C0jE23\BCd\08\C0\AF\E4\FA\C96\82\F4\BF\D8\D0M\07\83i\06@!8c\D2\F8\0B\E2?Y\F3\9E\84,H\DD\BF\A1\DC\C8\04v\92\E9\BF\99\FD\BB\1A\9E4\F1?\8E\BF\C8}\9C\D2\E1\BF\8C0\E1\7F\B0^\A9?\DD\D7\81\D6\92\85\EC\BFL\F4e\0D\F0\91\E6\BFjlQ\95JZ\F6?\AA$\8D\DE\A8\9A\FE\BF&\EDL\92\A6\81\E4\BFk\9E\93\BD-\C6\D9\BF\C6\98\E1Hp\17\CB?H\B7\D5C\A0\EB\01@\C3u_C^6\EC\BF\CB\EA\83\9F\A8\C3\E3\BF+\C0\B7ma\10\D9\BF\9A K\16\8Cq\EE?\B0~{\8F\E5\13\C2?\8D.?4\EDH\F3?\BF\B6o\0E6\81\98?\C8M\8F\8DD\06\EA\BF\04&\8A\FDm)\F0?\F1%\7F#\1A\1D\C3?\0B\FA\85\97mp\FC?\E2'\09/\16\F8\EA?[$\CB\C5\14]\EF\BFw\C1p\93\C4\95\F4?\D1Z\1ERT\18\DC?\A2\A92\D2\B4.\E0\BF\B2G\E94\DFz\FA\BF2\10\FD\E9P\D9\E4?1\A8\9E\83H\F2\E0\BF?\19\BE)\ED\FA\EC?U\D3\C2\83\12\F8\B6?\BB#\81u<\C7\CD?\1A\CF\CF\B3\E8\04\05@s\C0\CD\8F!i\D1?\9F\00\CAL\92\97\ED?h\0BZx\CCN\D9?O\CB\131W\0F\08\C0\DB\02M\AB\E4\E4\F1? \80\03\94\90_\C6?_\A1m{\06m\F3\BF\DA\D8\AA\96U\B8\C8?!\97\B3\FB?\7F\D3?\A8\1C\86tj\14\01\C0\0B.\19\10\0B\1D\E2?z\08iT\AD\AA\99?\\I\92;z\0F\D9\BF\C8M\EED\9B6\EC?\B1h^>\E7s\EA?\E6\0F.o\EC`\EE?O\DE\F4\87\9CDj\BF\BC\DE\99'1\BD\FC\BF\A3N\0Cm\\o\DA?3\11\16gu\98\F4\BF\85A|\1F6\E9\F1\BF\9D\B5\D2\1F4\BE\E8?v\AF\D9l\80\8F\D8\BF\B5\07\B9h\C3\E8\B3?\8E\1F5\AE\EF\22\E8\BF\B1\CB\DF\81h\D4\B4?\D1L<\EE'\94\D1?DY;;\A5\CB\F1?+\FC\8F\BB\87\0B\E1?\A9\97p\95i\09\E9?\F8|\B2/|\09\D4\BF91R\99At\A7\BF\E3%\E34\1B\A8\C5?\E7\EF_\FE\F8\BE\D7?\1F\AA\E7\E0\D9.\EE\BFy\00\1B\22_Y\E8\BF\9C\F7X3\C4\F2\D1?\F0hq\D2]\C4\A8\BF\FA-\D7\D0\9Fe\EF\BF#\05\DB\D5\04\D9\F4?^\CE\C8\AF@\85\AE?9\DB\A0\A2J\DF\BF?\1E\D8\07\A6\16\14\BD?9-v\01gJ\F5\BF\B7u)\F3ZE\D6\BF\03\D2\A7Y\DFX\D2\BF_m\86q\A4\93\E5?\A1L\BC\AC\FA!\DB\BF$\E4\E8~\FB\88\ED\BF\92p\D0\DFS\ED\D3?\B4Q\A6h\F6\04\DF\BF\FC\03\90E\CC\D7\8B\BF\E0\EC\F6S\95\D8\F3?,\BD\8D9\C6\87\F0?\10xIl\F4\95\BE\BFLx$\0F\F0a\E3\BF\E3\A8\ABJ\A6\D0\E8\BF\8E\9B\05k\EF\95\F2?\B1\9C^\D9\DE\E6\F3?O\B4\D0h7s\9C?\AE\93\BA\C4\D5d\F3\BF#\B0\A3\A4\82b\E4?ULx\EC\AC\DE\E5?\18\A1\F6\1B*\F9\E3?\81\A84\82\D2\A6\F5\BF&\C0\EB\E8\93\9A\EC?\93A\F1\B4\00\CC\EA?\9D\AF\8A'\F2\E2\D7\BFN\D6\8E\95f\DD\F2?\AA\06\87\F7eQ\E9?\1C\A2\0A\1B+\07\CC?\BA~C\F6\EF\8F\E3\BF\AF\86*\FE\0Ey\C9?2\AE~\C3\CA#\D4?7\85\94\98\05\EF\F3?\CDC~r\08,\E0?\88\C5<\1F=\C9\DC\BF\EDZS\EC-6\E3?\D2\C0\08|\946\E9?\EEb\B0\ED{\84\DE?WD\A2Z8\B5\E6\BF\E4(\E4\88\0D0\B8?\93r\FC\A8 3\FA\BF@\DC\E7m\E9\81\F2?\9E\F9\03v\ED\8B\E9?N\E3\F2H\0C5\F5\BFtU:\BF\81*\CC\BF\A2\AAy\E1\09$\E4?"
@9 = private unnamed_addr constant [8 x i8] c"\00\00\00\00\00\00\00@"
@10 = private unnamed_addr constant [4000 x i8] c"[\DD\17\E0\F8\CA\E1\BF\B4\0Fk\E4\C6p\DC\BFQ/\A5\E2\9B\CE\9B?\96\E2pQ\BF*\D3\BF,\CA\8Fz\1Er\FC?@\A6\BED\84Q\F2\BF\A7\E5\A7\86\A3\FD\DD\BF\C7Y\C3L\82\FC\C3?\96 \80.\CC\22\05\C0\EFW\E8\AE\8E\0D\F0?\C6J~\F4nQ\F1?~\869\CC\87\F0\C7?\7F\9EL\C4\AC\94\E0?\EF\01ZY\B0\DC\F7?\95\1F\83\E5%\86\D7?'3\825\CB[\EC\BF\A5I\0C=\F4\E7\E5? p\DF\FC\03s\F9\BF\F0\C6\DA\1F%H\DA?\7F\08\85\C27g\EB\BF|\FEG}\D8\D0\F0\BF\8E\91O\F0\08\11\E0?fB\A7\C3\03\AE\CB\BF\A0\95F\13\07\9B\E6\BF\88l\C90\E5M\0D\C0\B1\C9\DE\E34\8C\C5?\\\84\1B\F1L1\D2?4\94lJ\09<\E2?\F2\A8\D9\D7\C0\C0\F6\BF\15\80\9E{j\D5\D7\BF\EEj\02P\DD\9D\D7?\A2\B7s\C7\C9.\7F\BF[\C4l\06b\01\E2?k\EA\EB%\C6[\BB?t\DB\84\05\019\E2?Ad%\9Er\CB\E5?\E4\14\99v\0Em\F5\BF\02\B0j\B4\14\80\CE\BFpLH)KO\F0?\98\D4\19%\E9t\E6?\AF@J\F9A\96\C2\BFvr\81\9E\9B\92\E4?H\FD\84+\0D\1C\FD?;\E8#\A2/\81\D7\BF\AD\E3\C4!\D05\E8?\F0>\F3\DF\BBF\B6?\1F\ADNk\FA<\EB\BF\ADJzI[\93\ED?b5\8B\CE\1F\CB\F9?2\1C\10S-\A0\ED\BF\92sF\16\CE|\DF?}G\D1\AB<\F0\CC\BF2R\D2\B7Q\A0\F5\BF\1EC\06\D6\F4Y\D3?\A6b\B7\C7\A6\9A\F3?\A4\8C\16\A8\81O\DD\BFG\16\0E\D0Z\99\D7\BF\D1\D1\A8\87'\D0\E2\BF}/g\DB\EE{\EC?G\14\87?f\A5\CE?r\98\12\F6\E9\F9\C8\BFe\90\86\E3\9A\EE\E4?s\FE\D5\D8\87-\EA\BF<\1E\88\03\B9h\FA\BF\0B\07A5tn\DA\BF\95\7F\E3\B7U\F2\9B?5\18\BDy\CC\0B\D3?U\85@\D1!E\B2?\E4\8273\E5\9F\EC\BF\80gD\FE\82\EA\FF\BF\C4\0C\84\F0\F2\F8\C7\BF-VgS\F3\BB\E2\BF\F2@\E7Q\83&\F8\BF(\D5\9F`f\C1\BB\BF\8F\FCR\C7\A6\C6\D7\BF\84\E0~d\D0Y\F3?nvM\05\00\1D\CA\BF\07]\FF\E7h\91\89?lT\F2=\89\FE\C1?\CC\84\16Y\AD\C1\EF\BF\83m\E7\87\16`\F2\BF\91v\EA\9E\F9\F1\F5?\\\1CW\E8#>\AE\BF\81UdB\D7\98\D6\BF{2{\D9\9D.\F7\BF0\8D\95Vs\1A\03@ID\0B\0By\1A\C0?:\C6#\F4\BB\8F\FF\BF\BA\92\19\B0\DEm\E6?\B4\E5\B0\A3\D2I\D4?\D6@D\D2\C6\AE\D1?\E0\DC!\8C\89\02\FA\BFD\EB\FE\C4|\FE\ED\BF\A4k6\01\99\C6\ED\BFZbA\1FO\D9\FF\BF\C7\1F\97{\E7\9A\C1?j,\B3\DCT2\09@\F1\0B\EE\08\CF\15\E7\BF\D64\8A\1A\8Bw\E2\BF\DD\CD\CF4\8Bf\DD?k\AEi\8A\80\A4\CF?\0A0}\CEDG\9A\BF\98.\C3\DD\01:\E4\BFM\E3\D5>\A3S\F0\BF\8D8e\9A\EF\FB\F4\BF\\\83z\C6r\FC\E5?\D9\0A\13\93\C07\B8\BF\07\ADJ\84N9\D2\BF1 Y\D1I\AE\D5\BF\B5Q\83\ED\00j\B8\BF\93E\10Fj\9B\E8?u\B17\BE?\14\F7?|\B0>e \9A\D1\BFK`s\0D\FBK\D8\BF0\DB\96\08T \E7\BF\9Abroj\E0\C1?\EB\FD\FDN\A7\8C\F6\BF\8F_K\7F&\E3\F0?\07\0A\8EW\0F\E7\01\C0s+Y\09\E5\8B\F2?\87\01\B9\0Fl\15\E6\BF'\03<~5\1D\F6\BFA\91x\99\D2\00\E3?:\C8\C35\E1&\E5?&s\DB\CBB\12\06@\0A\AE\E9\B3\BD\ED\DD?3\F1\C1\97\8F\A2\B4\BF\C8\1F:\E1\C8^\B4?\EF\08\B7;f3\D7\BFx\FC/S\CE\06\E6\BF\00h\A6\05\B9C\E6\BF$\D17\CAb\83\DB\BF\9B\0BeI\9F\BE\E3\BF\E9\D6\85&\833\E9\BF\A3\A7j\E7\FBV\EF?=\8E\C2\E1\A6\\\C5\BFb\91Tj\EC9\DC\BF\BE0o\DB\22\D4\85\BF\D9\9C\07@%\15\DA?\F1\83k\F7\A6z\D8\BF\B7\91\8C.\89\8F\DB\BF\D3\A2\C0\E5\F8\18\AB\BF\9E\CA\B5\84^k\E8?#\8D\1A\A1=S\FB\BF\C0\85\13\0D\1BH\E5\BF\C1\B0\1F\954\85\F9?]\EC\EFg\E5[\E1?>\86\BC\C9qL\D1?N=\01\1F\AE\9E\F2?\10\06\84\D6(5\EF\BF\08\F6o\C9\D9\EB\E2?\17\CB\98\FE\E1\98\E2\BF\18Z^\D3\06\A9\F0\BF9\A7\9F*L\A2\C8\BF+\8E\E3*\EE\D3\DB\BF\0AS\A5d\ED\8F\B5?\D9o:\C5t\B3\F0?\89\E0]\A3\AE\88\DF\BF\1B\E5\B6\C5\07\EF\F3?vPx\12\B2\ED\F1?\F7\AF\81\AA'\91\BF\BF\13\15>\14J\10\F1\BF+h:|:\80\D3?\99\CF\C3\FD\00\D1\FC\BF\BBuH^\E0\FB\C0\BF\92\84\DD a+\E4?\E8\F6c\9B\ED\BB\02\C08\9F\C6\DB\1Cr\C4\BF*\AC*j\B9\BE\E5?d\D0vn\1C\D5\E7\BF<H\D1i\EF\B0\F3?A\BB\AF\82\16s\F1?]\1Fc\8BuU\FE?\89\8D\96\A6\BA$\D1\BF\E6\F1;0\BFP\00@\9FC\09+\FF\89\AC?\0B\D2A\DD\F2\04\E7\BF\0E\CB\D5n\9D\D9\C4\BF\93I\9A\D2)s\D2\BF\86Z\05\BFvm\00\C0\BE!ph\D6\DD\01\C0\9C\97\10\BE\\t\F2\BF\FA~\F3Pk\F2\F8\BF\0B]J\EC2\A3\F5\BF\F36\B9\03u\BB\D6\BF\BB\1D{\BF\18\07\EE\BFp\95YS?\9B\E1?\FC\C0\D8\05\D4r\FA\BFG\0E\06j\E5H\F0\BFG\80Anx\AC\F5?(rH5\BC^\E7\BF\D3\A2?f\B5Y\F7?y\A8V\C7\10\CF\F2?FH\0C\84r\83\F7?\086\18\A6\83=\01@O\D2\D0|\09R\C9\BF\08+\B5\B9\AA\D0\F3\BF\ED\85F\9A\C4z\DE?N}\E6=\FA\1F\E2?\BF\B9F(\9B\87\01@\F6?QQL_\C5\BFI'=\0C[q\FD\BF^\85\D9\F6\AB\FE\E2\BFM\DE\1C\B9Dv\DC\BF\B9\09cI\1F\19\FE?N\85\E9\17\92l\EB\BF|E\C7\05\1C\FD\E0?@\DFw\A9\22R\EE?\CE\E8\BE\8E\B15\E0?f\8A\86C|\D4\F6\BF\EE\9D/W\11u\D1?\A5d&\0B\C3\EE\FA?\8F0\13pr$\EC?\93V\FB\1F\9F\D3\D7\BF\DAB\C0\C5\B6]\F3?\0E\F9 A\82\10\EA\BFY\93<F\1E=\E5\BF'\0Av\A9\0EO\D7\BF\E8\C0~\04;h\C0?\B1J\CC\E6\94`\EB\BF'\A0\ED\99\18\E2\E7?\1D\0B\FAw\E2S\CB\BF\1F\F4\D8\8D\83l\E3?m\88\11L\7FA\C3\BFG__\1D\BCV\D2?\A5\BD_\C8\A9\01\EF?\9EN\B7P\EA\BB\DD?V}\0F&N\CB\B9\BF\AD\D4ka\EA\19\EF?\E1\E7\B5U\94\BF\F5?\02\F3r\EDQo\ED?\97|V5\84+p\BF\FB\C8\9B\80\E7H\E5?0C\F4\A3\00\B7\DD\BF\AA\A5\83\DF\AD\A8\B8\BF\E1&O\80\ACl\F7\BF\A68\05\81\D4w\A1?\EA\E0 h\87\A7\C8?\F44>\C6\8E[\F4?\D4~\B6\83O\C0\E5\BF\06\B0\FBy\E3\C9\E6?\DFe\D8\F1\D7[\FA?\E0R\D4T\DE\C7\F5\BF\84\B3\E4\C94=\FA?\7F\01.\A7\EC\B1\F4\BF\ED\AD\93\C2\AB\7F\E3\BF^a\F8c\BB\8B\DF\BF\AD\04\FBaU\97\B3?\AAY\C4\D4\86a\C4?0\CE\DDk\F8t\DC?NX\88F\0Af\F3\BFw\F0\9A\88\E1\A0\F5\BFU\8Eq\B6\9C\82\F0\BF~SU=\0A0\F1?\229;$\E0\13\F1?\12(\9C\A3\DA\C4\C5\BFq)\8C\97\C9\CD\C8?\EFs\F8\D4`\DA\03\C0\22X\0F\7Fwd\DD\BF\F7l\A9\81c\09\F3\BFBg\BE\E3\1D\AD\D0?uh\86s\B70\E4\BF\EE&x$\A5\A3\F8?\DA\ED\E57\C2\80\BA\BFsz\CF\84&\CC\F0?\1EA`,X\EA\B5\BFV\11X^\0A~\FF\BF\E9\1B?\F25=\ED?\A0\BB\02J\F4C\F8?Pg-\C1\A1\D4\EE\BF\0C\063\FD\C9\03\F3?7D9\BEV\D1\CD\BF\8ChG)A\92\EE?FlH\82`\D5\D3\BF\91\AF\D6\0EJ\9C\A5\BFbt\B2\DB\AB\E3\FF\BF\A4&B\EF\FE\EF\E3?\7FN\D0\A6\83\15\06\C0\BF\B4r\C2hd\F3?\0C!\B3\FC\180\F9?\ED\F65\C2s\16\EB\BF\D2\88\85M\B6m\E7?\00\9B\8E\A8h\B4\F0?\B7\02}\E8&\F1\F9?+\1D\EB\92<\00\06@\DEEF#i\C1\FB?_\00\FCvK\AE\F3\BF?\80P\AD_)\D7\BF\C5Ly\F2\D1\04\C5?p\F8Ho\0D8\D2\BF\8E\AAC\B2\E9\0C\FD?g\E9E\E0\EF\A0\E8\BF.\22v\D9y\0E\D8\BF\D44p\06Y/\D4\BF\A5d\DB\A3Y\B3\CD?\87\12B\C2\D3\EF\EC\BF\B9l\C4\A6\B9\B7\C2?f\B6\E8\\a\93\CC?\08\CC\16\EEZ\05\B3\BFU-+W\CA\83\EB?\DF\90E\E68\E7\E9?\B6$W \F2\E5\E8?\8Aa\F5\EDa\9E\EF\BF\B8\ADYc\EDo\C6\BF\11Fj\D3\D1\E9\F6\BF}b3Ho\E2\DF?\EA,\A3^\B8H\F7?Qs\97\A6\FF\AA\EB\BF\9D\8EX\1B\BC\13\E4?\B1V\8E\00\86\16\E7?(\0Ba\FE&f\F0?\13\E2\1E)\C5\AE\F9?\DA\A9s\81\CD\B8\DA\BFQ+\A5\0D\D8\00\F3\BFdc\FB\17\DAw\FF?\FF\18\1E-\95y\EA\BF\B6\10J\84\0B\F4\FC\BFWy\90\19K\17\CC?A\04]\EA\89\22\FB?\9F\AF\B2\EF\EFx\B3?\D7\FAK\D7@UC\BF\C5 \FF\8An)\E4\BF\E0@\15)\91\F0\E6?\11\D1^p\ED!\FB\BFB\DB\C3\D2\16\08\03\C0\9E\AD\97\E1k\AA\C4?\F5 {V\EEF\D6\BF\09\91\92d\0A\F8\C8\BF\CER\C3\94\A3\97\E1\BFA<c\E3\16K\F1?kO\E3^6\B3\01\C0\B7\E7\06b\97\E6\EB?\B8\15\A0\C0i\84}\BF4\DB\BDy\DA6\F9\BF\F6\86\AE)\AF\AB\01\C0\10\B6u\C9\22\B9\E3\BFh4_\F6\C8\90\E2\BF\DCr\99\F5\0A\FB\F8\BFve\B6\1A\DD\CD\F4\BF\D8.\0E\E1.\18\F0\BF\04\84\DD^\AE\BF\E5?~\9C\A1\C3F\1F\A6\BFT\B0c\07\DCe\A4\BF\D4\0F\BC0\FA\10\DC\BF\01\90\BC\FB\B1{\B7\BF\FAQBg\1B\9C\F3?Z\8D~\A4}\B6\CD\BFQ\D0Y\06Ll\F3\BF\96\06K\D5\E3R\CE\BF\A8}\F7\DFG~\D8\BF\CD\E2\84\06\9B\80\FF\BF_\D1\D6\D1\A5F\F9\BFcP\0D.\8E\18\E2\BF#\E7\EC\9E\E2x\FB\BFQ\1E\F0\C1\F1\91\03\C0\12\C9\F7\14\BF\18\D1\BF`\1B\CF\D1\1A\B1\E5?\EC\84#L\8B\9E\C5\BFd}\F7ec\AD\F9?\E3\E3\D8\80!\F8\FB?\E2\9D\D5\95tU\ED?#\80H\C7\8F%\F2?\AC\C4A\AC\ACk\01\C0q\0E\F5\80\98%\D5\BF\ECCj8Q\1A\D1\BF\\\0C\89.&7\F3?\02JH+\A2\12\F5?A:!n\CCF\E3?\02\90\15\E2\DDr\EF\BF\A3\D3\07\81\D3T\F2\BF#\06P\F77\86\D0?\D4\A8|\83\A8B\02\C0jE23\BCd\08\C0\AF\E4\FA\C96\82\F4\BF\D8\D0M\07\83i\06@!8c\D2\F8\0B\E2?Y\F3\9E\84,H\DD\BF\A1\DC\C8\04v\92\E9\BF\99\FD\BB\1A\9E4\F1?\8E\BF\C8}\9C\D2\E1\BF\8C0\E1\7F\B0^\A9?\DD\D7\81\D6\92\85\EC\BFL\F4e\0D\F0\91\E6\BFjlQ\95JZ\F6?\AA$\8D\DE\A8\9A\FE\BF&\EDL\92\A6\81\E4\BFk\9E\93\BD-\C6\D9\BF\C6\98\E1Hp\17\CB?H\B7\D5C\A0\EB\01@\C3u_C^6\EC\BF\CB\EA\83\9F\A8\C3\E3\BF+\C0\B7ma\10\D9\BF\9A K\16\8Cq\EE?\B0~{\8F\E5\13\C2?\8D.?4\EDH\F3?\BF\B6o\0E6\81\98?\C8M\8F\8DD\06\EA\BF\04&\8A\FDm)\F0?\F1%\7F#\1A\1D\C3?\0B\FA\85\97mp\FC?\E2'\09/\16\F8\EA?[$\CB\C5\14]\EF\BFw\C1p\93\C4\95\F4?\D1Z\1ERT\18\DC?\A2\A92\D2\B4.\E0\BF\B2G\E94\DFz\FA\BF2\10\FD\E9P\D9\E4?1\A8\9E\83H\F2\E0\BF?\19\BE)\ED\FA\EC?U\D3\C2\83\12\F8\B6?\BB#\81u<\C7\CD?\1A\CF\CF\B3\E8\04\05@s\C0\CD\8F!i\D1?\9F\00\CAL\92\97\ED?h\0BZx\CCN\D9?O\CB\131W\0F\08\C0\DB\02M\AB\E4\E4\F1? \80\03\94\90_\C6?_\A1m{\06m\F3\BF\DA\D8\AA\96U\B8\C8?!\97\B3\FB?\7F\D3?\A8\1C\86tj\14\01\C0\0B.\19\10\0B\1D\E2?z\08iT\AD\AA\99?\\I\92;z\0F\D9\BF\C8M\EED\9B6\EC?\B1h^>\E7s\EA?\E6\0F.o\EC`\EE?O\DE\F4\87\9CDj\BF\BC\DE\99'1\BD\FC\BF\A3N\0Cm\\o\DA?3\11\16gu\98\F4\BF\85A|\1F6\E9\F1\BF\9D\B5\D2\1F4\BE\E8?v\AF\D9l\80\8F\D8\BF\B5\07\B9h\C3\E8\B3?\8E\1F5\AE\EF\22\E8\BF\B1\CB\DF\81h\D4\B4?\D1L<\EE'\94\D1?DY;;\A5\CB\F1?+\FC\8F\BB\87\0B\E1?\A9\97p\95i\09\E9?\F8|\B2/|\09\D4\BF91R\99At\A7\BF\E3%\E34\1B\A8\C5?\E7\EF_\FE\F8\BE\D7?\1F\AA\E7\E0\D9.\EE\BFy\00\1B\22_Y\E8\BF\9C\F7X3\C4\F2\D1?\F0hq\D2]\C4\A8\BF\FA-\D7\D0\9Fe\EF\BF#\05\DB\D5\04\D9\F4?^\CE\C8\AF@\85\AE?9\DB\A0\A2J\DF\BF?\1E\D8\07\A6\16\14\BD?9-v\01gJ\F5\BF\B7u)\F3ZE\D6\BF\03\D2\A7Y\DFX\D2\BF_m\86q\A4\93\E5?\A1L\BC\AC\FA!\DB\BF$\E4\E8~\FB\88\ED\BF\92p\D0\DFS\ED\D3?\B4Q\A6h\F6\04\DF\BF\FC\03\90E\CC\D7\8B\BF\E0\EC\F6S\95\D8\F3?,\BD\8D9\C6\87\F0?\10xIl\F4\95\BE\BFLx$\0F\F0a\E3\BF\E3\A8\ABJ\A6\D0\E8\BF\8E\9B\05k\EF\95\F2?\B1\9C^\D9\DE\E6\F3?O\B4\D0h7s\9C?\AE\93\BA\C4\D5d\F3\BF#\B0\A3\A4\82b\E4?ULx\EC\AC\DE\E5?\18\A1\F6\1B*\F9\E3?\81\A84\82\D2\A6\F5\BF&\C0\EB\E8\93\9A\EC?\93A\F1\B4\00\CC\EA?\9D\AF\8A'\F2\E2\D7\BFN\D6\8E\95f\DD\F2?\AA\06\87\F7eQ\E9?\1C\A2\0A\1B+\07\CC?\BA~C\F6\EF\8F\E3\BF\AF\86*\FE\0Ey\C9?2\AE~\C3\CA#\D4?7\85\94\98\05\EF\F3?\CDC~r\08,\E0?\88\C5<\1F=\C9\DC\BF\EDZS\EC-6\E3?\D2\C0\08|\946\E9?\EEb\B0\ED{\84\DE?WD\A2Z8\B5\E6\BF\E4(\E4\88\0D0\B8?\93r\FC\A8 3\FA\BF@\DC\E7m\E9\81\F2?\9E\F9\03v\ED\8B\E9?N\E3\F2H\0C5\F5\BFtU:\BF\81*\CC\BF\A2\AAy\E1\09$\E4?"
@11 = private unnamed_addr constant [8 x i8] c"\00\00\00\00\00\00\F0?"
@12 = private unnamed_addr constant [8 x i8] zeroinitializer
@13 = private unnamed_addr constant [8 x i8] c"\00\00\00\00\00\00\00@"
@14 = private unnamed_addr constant [8 x i8] c"\18-DT\FB!\19@"
@15 = private unnamed_addr constant [8 x i8] c"\00\00\00\00\00\00\E0?"
; Function Attrs: uwtable
define internal void @region_0.51(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.54 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.52 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.53 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.52, align 8, !alias.scope !1, !noalias !4
%5 = load double, double* %Arg_1.53, align 8, !alias.scope !6, !noalias !4
%add.541 = fadd reassoc double %4, %5
store double %add.541, double* %add.54, align 8, !alias.scope !4
%load_ret_value = load double, double* %add.54, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define internal void @region_9.141(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.144 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.142 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.143 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.142, align 8, !alias.scope !8, !noalias !10
%5 = load double, double* %Arg_1.143, align 8, !alias.scope !12, !noalias !10
%add.1441 = fadd reassoc double %4, %5
store double %add.1441, double* %add.144, align 8, !alias.scope !10
%load_ret_value = load double, double* %add.144, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define internal void @region_7.133(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.136 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.134 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.135 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.134, align 8, !alias.scope !14, !noalias !16
%5 = load double, double* %Arg_1.135, align 8, !alias.scope !18, !noalias !16
%add.1361 = fadd reassoc double %4, %5
store double %add.1361, double* %add.136, align 8, !alias.scope !16
%load_ret_value = load double, double* %add.136, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define internal void @region_5.125(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.128 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.126 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.127 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.126, align 8, !alias.scope !20, !noalias !22
%5 = load double, double* %Arg_1.127, align 8, !alias.scope !24, !noalias !22
%add.1281 = fadd reassoc double %4, %5
store double %add.1281, double* %add.128, align 8, !alias.scope !22
%load_ret_value = load double, double* %add.128, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define internal void @region_2.113(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%add.116 = alloca double, align 8
%0 = getelementptr inbounds i8*, i8** %params, i64 0
%1 = load i8*, i8** %0, align 8, !dereferenceable !0, !align !0
%Arg_0.114 = bitcast i8* %1 to double*
%2 = getelementptr inbounds i8*, i8** %params, i64 1
%3 = load i8*, i8** %2, align 8, !dereferenceable !0, !align !0
%Arg_1.115 = bitcast i8* %3 to double*
%4 = load double, double* %Arg_0.114, align 8, !alias.scope !26, !noalias !28
%5 = load double, double* %Arg_1.115, align 8, !alias.scope !30, !noalias !28
%add.1161 = fadd reassoc double %4, %5
store double %add.1161, double* %add.116, align 8, !alias.scope !28
%load_ret_value = load double, double* %add.116, align 8
%6 = bitcast i8* %retval to double*
store double %load_ret_value, double* %6, align 8
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: uwtable
define void @main.253(i8* %retval, i8* noalias %run_options, i8** noalias %params, i8** noalias %buffer_table, i8* noalias %status, i64* noalias %prof_counters) #0 {
entry:
%pad_result_addr102 = alloca double, align 8
%pad_result_addr94 = alloca double, align 8
%pad_result_addr = alloca double, align 8
%fusion.invar_address.dim.0 = alloca i64, align 8
%reduce-window.1.vectorized_inner.invar_address.reduction_dim.0 = alloca i64, align 8
%accumulator81 = alloca <4 x double>, align 32
%reducer_function_parameter_addresses78 = alloca i8*, i32 2, align 8
%reducer_function_return_value_addr77 = alloca double, align 8
%arg_addr76 = alloca double, align 8
%arg_addr75 = alloca double, align 8
%reduce-window.1.invar_address.window.1 = alloca i64, align 8
%reduce-window.1.invar_address.window.0 = alloca i64, align 8
%reduce_window_accum_ptr69 = alloca double, align 8
%reduce-window.1.invar_address.dim.1 = alloca i64, align 8
%reduce-window.1.invar_address.dim.0 = alloca i64, align 8
%fusion.5.invar_address.dim.1 = alloca i64, align 8
%fusion.5.invar_address.dim.0 = alloca i64, align 8
%fusion.6.invar_address.dim.0 = alloca i64, align 8
%reduce-window.3.vectorized_inner.invar_address.reduction_dim.0 = alloca i64, align 8
%accumulator60 = alloca <4 x double>, align 32
%reducer_function_parameter_addresses57 = alloca i8*, i32 2, align 8
%reducer_function_return_value_addr56 = alloca double, align 8
%arg_addr55 = alloca double, align 8
%arg_addr54 = alloca double, align 8
%reduce-window.3.invar_address.window.1 = alloca i64, align 8
%reduce-window.3.invar_address.window.0 = alloca i64, align 8
%reduce_window_accum_ptr48 = alloca double, align 8
%reduce-window.3.invar_address.dim.1 = alloca i64, align 8
%reduce-window.3.invar_address.dim.0 = alloca i64, align 8
%fusion.1.invar_address.dim.1 = alloca i64, align 8
%fusion.1.invar_address.dim.0 = alloca i64, align 8
%reduce-window.vectorized_inner.invar_address.reduction_dim.0 = alloca i64, align 8
%accumulator38 = alloca <4 x double>, align 32
%reducer_function_parameter_addresses35 = alloca i8*, i32 2, align 8
%reducer_function_return_value_addr34 = alloca double, align 8
%arg_addr33 = alloca double, align 8
%arg_addr32 = alloca double, align 8
%reduce-window.invar_address.window.1 = alloca i64, align 8
%reduce-window.invar_address.window.0 = alloca i64, align 8
%reduce_window_accum_ptr26 = alloca double, align 8
%reduce-window.invar_address.dim.1 = alloca i64, align 8
%reduce-window.invar_address.dim.0 = alloca i64, align 8
%fusion.7.invar_address.dim.1 = alloca i64, align 8
%fusion.7.invar_address.dim.0 = alloca i64, align 8
%reduce-window.2.vectorized_inner.invar_address.reduction_dim.0 = alloca i64, align 8
%accumulator = alloca <4 x double>, align 32
%reducer_function_parameter_addresses = alloca i8*, i32 2, align 8
%reducer_function_return_value_addr = alloca double, align 8
%arg_addr20 = alloca double, align 8
%arg_addr19 = alloca double, align 8
%reduce-window.2.invar_address.window.1 = alloca i64, align 8
%reduce-window.2.invar_address.window.0 = alloca i64, align 8
%reduce_window_accum_ptr = alloca double, align 8
%reduce-window.2.invar_address.dim.1 = alloca i64, align 8
%reduce-window.2.invar_address.dim.0 = alloca i64, align 8
%fusion.2.invar_address.dim.1 = alloca i64, align 8
%fusion.2.invar_address.dim.0 = alloca i64, align 8
%fusion.3.invar_address.dim.0 = alloca i64, align 8
%fusion.4.invar_address.dim.1 = alloca i64, align 8
%fusion.4.invar_address.dim.0 = alloca i64, align 8
%reduce_function_parameter_addresses = alloca i8*, i32 2, align 8
%reduce_function_return_value_addr = alloca double, align 8
%arg_addr8 = alloca double, align 8
%arg_addr = alloca double, align 8
%reduce.23.inner.invar_address.reduction_dim.1 = alloca i64, align 8
%accumulator_0 = alloca double, align 8
%fusion.8.invar_address.dim.0 = alloca i64, align 8
%fusion.9.invar_address.dim.1 = alloca i64, align 8
%fusion.9.invar_address.dim.0 = alloca i64, align 8
%fusion.10.invar_address.dim.0 = alloca i64, align 8
%fusion.11.invar_address.dim.1 = alloca i64, align 8
%fusion.11.invar_address.dim.0 = alloca i64, align 8
%0 = getelementptr inbounds i8*, i8** %buffer_table, i64 1
%1 = load i8*, i8** %0, align 8, !invariant.load !32, !dereferenceable !33, !align !34
%Arg_0.1 = bitcast i8* %1 to [12 x double]*
%2 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%3 = load i8*, i8** %2, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%fusion.11 = bitcast i8* %3 to [500 x [4 x double]]*
store i64 0, i64* %fusion.11.invar_address.dim.0, align 8
br label %fusion.11.loop_header.dim.0
return: ; preds = %fusion.loop_exit.dim.0
ret void
fusion.11.loop_header.dim.0: ; preds = %fusion.11.loop_exit.dim.1, %entry
%fusion.11.indvar.dim.0 = load i64, i64* %fusion.11.invar_address.dim.0, align 8
%4 = icmp uge i64 %fusion.11.indvar.dim.0, 500
br i1 %4, label %fusion.11.loop_exit.dim.0, label %fusion.11.loop_body.dim.0
fusion.11.loop_body.dim.0: ; preds = %fusion.11.loop_header.dim.0
store i64 0, i64* %fusion.11.invar_address.dim.1, align 8
br label %fusion.11.loop_header.dim.1
fusion.11.loop_header.dim.1: ; preds = %fusion.11.loop_body.dim.1, %fusion.11.loop_body.dim.0
%fusion.11.indvar.dim.1 = load i64, i64* %fusion.11.invar_address.dim.1, align 8
%5 = icmp uge i64 %fusion.11.indvar.dim.1, 4
br i1 %5, label %fusion.11.loop_exit.dim.1, label %fusion.11.loop_body.dim.1
fusion.11.loop_body.dim.1: ; preds = %fusion.11.loop_header.dim.1
%constant.121 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @2 to [500 x double]*), i64 0, i64 %fusion.11.indvar.dim.0
%constant.1212 = load double, double* %constant.121, align 8
%6 = add i64 %fusion.11.indvar.dim.1, 4
%7 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %6
%8 = load double, double* %7, align 8, !invariant.load !32, !noalias !36
%subtract.4 = fsub double %constant.1212, %8
%multiply.80 = fmul double %subtract.4, %subtract.4
%9 = fneg double %multiply.80
%10 = add i64 %fusion.11.indvar.dim.1, 8
%11 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %10
%12 = load double, double* %11, align 8, !invariant.load !32, !noalias !36
%multiply.79 = fmul double %12, %12
%constant.120 = load double, double* bitcast ([8 x i8]* @1 to double*), align 8
%multiply.78 = fmul double %multiply.79, %constant.120
%divide.23 = fdiv double %9, %multiply.78
%13 = call double @llvm.exp.f64(double %divide.23)
%14 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.11.indvar.dim.0, i64 %fusion.11.indvar.dim.1
store double %13, double* %14, align 8, !alias.scope !49, !noalias !50
%invar.inc1 = add nuw nsw i64 %fusion.11.indvar.dim.1, 1
store i64 %invar.inc1, i64* %fusion.11.invar_address.dim.1, align 8
br label %fusion.11.loop_header.dim.1
fusion.11.loop_exit.dim.1: ; preds = %fusion.11.loop_header.dim.1
%invar.inc = add nuw nsw i64 %fusion.11.indvar.dim.0, 1
store i64 %invar.inc, i64* %fusion.11.invar_address.dim.0, align 8
br label %fusion.11.loop_header.dim.0
fusion.11.loop_exit.dim.0: ; preds = %fusion.11.loop_header.dim.0
%15 = getelementptr inbounds i8*, i8** %buffer_table, i64 0
%16 = load i8*, i8** %15, align 8, !invariant.load !32, !dereferenceable !33, !align !34
%fusion.10 = bitcast i8* %16 to [4 x double]*
store i64 0, i64* %fusion.10.invar_address.dim.0, align 8
br label %fusion.10.loop_header.dim.0
fusion.10.loop_header.dim.0: ; preds = %fusion.10.loop_body.dim.0, %fusion.11.loop_exit.dim.0
%fusion.10.indvar.dim.0 = load i64, i64* %fusion.10.invar_address.dim.0, align 8
%17 = icmp uge i64 %fusion.10.indvar.dim.0, 4
br i1 %17, label %fusion.10.loop_exit.dim.0, label %fusion.10.loop_body.dim.0
fusion.10.loop_body.dim.0: ; preds = %fusion.10.loop_header.dim.0
%18 = add i64 %fusion.10.indvar.dim.0, 8
%19 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %18
%20 = load double, double* %19, align 8, !invariant.load !32, !noalias !36
%multiply.77 = fmul double %20, %20
%constant.119 = load double, double* bitcast ([8 x i8]* @3 to double*), align 8
%multiply.76 = fmul double %multiply.77, %constant.119
%21 = call double @llvm.sqrt.f64(double %multiply.76)
%22 = getelementptr inbounds [4 x double], [4 x double]* %fusion.10, i64 0, i64 %fusion.10.indvar.dim.0
store double %21, double* %22, align 8, !alias.scope !51, !noalias !52
%invar.inc3 = add nuw nsw i64 %fusion.10.indvar.dim.0, 1
store i64 %invar.inc3, i64* %fusion.10.invar_address.dim.0, align 8
br label %fusion.10.loop_header.dim.0
fusion.10.loop_exit.dim.0: ; preds = %fusion.10.loop_header.dim.0
%23 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%24 = load i8*, i8** %23, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%25 = getelementptr inbounds i8, i8* %24, i64 32000
%fusion.9 = bitcast i8* %25 to [500 x [4 x double]]*
store i64 0, i64* %fusion.9.invar_address.dim.0, align 8
br label %fusion.9.loop_header.dim.0
fusion.9.loop_header.dim.0: ; preds = %fusion.9.loop_exit.dim.1, %fusion.10.loop_exit.dim.0
%fusion.9.indvar.dim.0 = load i64, i64* %fusion.9.invar_address.dim.0, align 8
%26 = icmp uge i64 %fusion.9.indvar.dim.0, 500
br i1 %26, label %fusion.9.loop_exit.dim.0, label %fusion.9.loop_body.dim.0
fusion.9.loop_body.dim.0: ; preds = %fusion.9.loop_header.dim.0
store i64 0, i64* %fusion.9.invar_address.dim.1, align 8
br label %fusion.9.loop_header.dim.1
fusion.9.loop_header.dim.1: ; preds = %fusion.9.loop_body.dim.1, %fusion.9.loop_body.dim.0
%fusion.9.indvar.dim.1 = load i64, i64* %fusion.9.invar_address.dim.1, align 8
%27 = icmp uge i64 %fusion.9.indvar.dim.1, 4
br i1 %27, label %fusion.9.loop_exit.dim.1, label %fusion.9.loop_body.dim.1
fusion.9.loop_body.dim.1: ; preds = %fusion.9.loop_header.dim.1
%28 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.9.indvar.dim.0, i64 %fusion.9.indvar.dim.1
%29 = load double, double* %28, align 8, !alias.scope !49, !noalias !50
%30 = getelementptr inbounds [4 x double], [4 x double]* %fusion.10, i64 0, i64 %fusion.9.indvar.dim.1
%31 = load double, double* %30, align 8, !alias.scope !51, !noalias !52
%divide.22 = fdiv double %29, %31
%32 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.9.indvar.dim.0, i64 %fusion.9.indvar.dim.1
store double %divide.22, double* %32, align 8, !alias.scope !53, !noalias !54
%invar.inc5 = add nuw nsw i64 %fusion.9.indvar.dim.1, 1
store i64 %invar.inc5, i64* %fusion.9.invar_address.dim.1, align 8
br label %fusion.9.loop_header.dim.1
fusion.9.loop_exit.dim.1: ; preds = %fusion.9.loop_header.dim.1
%invar.inc4 = add nuw nsw i64 %fusion.9.indvar.dim.0, 1
store i64 %invar.inc4, i64* %fusion.9.invar_address.dim.0, align 8
br label %fusion.9.loop_header.dim.0
fusion.9.loop_exit.dim.0: ; preds = %fusion.9.loop_header.dim.0
%33 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%34 = load i8*, i8** %33, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%35 = getelementptr inbounds i8, i8* %34, i64 64000
%fusion.8 = bitcast i8* %35 to [500 x double]*
store i64 0, i64* %fusion.8.invar_address.dim.0, align 8
br label %fusion.8.loop_header.dim.0
fusion.8.loop_header.dim.0: ; preds = %reduce.23.inner.loop_exit.reduction_dim.1, %fusion.9.loop_exit.dim.0
%fusion.8.indvar.dim.0 = load i64, i64* %fusion.8.invar_address.dim.0, align 8
%36 = icmp uge i64 %fusion.8.indvar.dim.0, 500
br i1 %36, label %fusion.8.loop_exit.dim.0, label %fusion.8.loop_body.dim.0
fusion.8.loop_body.dim.0: ; preds = %fusion.8.loop_header.dim.0
%constant.118 = load double, double* bitcast ([8 x i8]* @5 to double*), align 8
%constant.117 = load double, double* bitcast ([8 x i8]* @4 to double*), align 8
store double %constant.117, double* %accumulator_0, align 8
store i64 0, i64* %reduce.23.inner.invar_address.reduction_dim.1, align 8
br label %reduce.23.inner.loop_header.reduction_dim.1
reduce.23.inner.loop_header.reduction_dim.1: ; preds = %reduce.23.inner.loop_body.reduction_dim.1, %fusion.8.loop_body.dim.0
%reduce.23.inner.indvar.reduction_dim.1 = load i64, i64* %reduce.23.inner.invar_address.reduction_dim.1, align 8
%37 = icmp uge i64 %reduce.23.inner.indvar.reduction_dim.1, 4
br i1 %37, label %reduce.23.inner.loop_exit.reduction_dim.1, label %reduce.23.inner.loop_body.reduction_dim.1
reduce.23.inner.loop_body.reduction_dim.1: ; preds = %reduce.23.inner.loop_header.reduction_dim.1
%38 = load double, double* %accumulator_0, align 8
%39 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.8.indvar.dim.0, i64 %reduce.23.inner.indvar.reduction_dim.1
%40 = load double, double* %39, align 8, !alias.scope !53, !noalias !54
%41 = add i64 %reduce.23.inner.indvar.reduction_dim.1, 0
%42 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %41
%43 = load double, double* %42, align 8, !invariant.load !32, !noalias !36
%multiply.75 = fmul double %40, %43
store double %38, double* %arg_addr, align 8
store double %multiply.75, double* %arg_addr8, align 8
%reduce_function_parameter_0_address_as_i8ptr = bitcast double* %arg_addr to i8*
%44 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses, i64 0
store i8* %reduce_function_parameter_0_address_as_i8ptr, i8** %44, align 8
%reduce_function_parameter_1_address_as_i8ptr = bitcast double* %arg_addr8 to i8*
%45 = getelementptr inbounds i8*, i8** %reduce_function_parameter_addresses, i64 1
store i8* %reduce_function_parameter_1_address_as_i8ptr, i8** %45, align 8
%46 = bitcast double* %reduce_function_return_value_addr to i8*
call void @region_0.51(i8* %46, i8* %run_options, i8** %reduce_function_parameter_addresses, i8** null, i8* %status, i64* %prof_counters)
%47 = load double, double* %reduce_function_return_value_addr, align 8
store double %47, double* %accumulator_0, align 8
%invar.inc7 = add nuw nsw i64 %reduce.23.inner.indvar.reduction_dim.1, 1
store i64 %invar.inc7, i64* %reduce.23.inner.invar_address.reduction_dim.1, align 8
br label %reduce.23.inner.loop_header.reduction_dim.1
reduce.23.inner.loop_exit.reduction_dim.1: ; preds = %reduce.23.inner.loop_header.reduction_dim.1
%48 = load double, double* %accumulator_0, align 8
%divide.21 = fdiv double %constant.118, %48
%49 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.8.indvar.dim.0
store double %divide.21, double* %49, align 8, !alias.scope !55, !noalias !56
%invar.inc6 = add nuw nsw i64 %fusion.8.indvar.dim.0, 1
store i64 %invar.inc6, i64* %fusion.8.invar_address.dim.0, align 8
br label %fusion.8.loop_header.dim.0
fusion.8.loop_exit.dim.0: ; preds = %fusion.8.loop_header.dim.0
%50 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%51 = load i8*, i8** %50, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%52 = getelementptr inbounds i8, i8* %51, i64 16000
%fusion.4 = bitcast i8* %52 to [500 x [4 x double]]*
store i64 0, i64* %fusion.4.invar_address.dim.0, align 8
br label %fusion.4.loop_header.dim.0
fusion.4.loop_header.dim.0: ; preds = %fusion.4.loop_exit.dim.1, %fusion.8.loop_exit.dim.0
%fusion.4.indvar.dim.0 = load i64, i64* %fusion.4.invar_address.dim.0, align 8
%53 = icmp uge i64 %fusion.4.indvar.dim.0, 500
br i1 %53, label %fusion.4.loop_exit.dim.0, label %fusion.4.loop_body.dim.0
fusion.4.loop_body.dim.0: ; preds = %fusion.4.loop_header.dim.0
store i64 0, i64* %fusion.4.invar_address.dim.1, align 8
br label %fusion.4.loop_header.dim.1
fusion.4.loop_header.dim.1: ; preds = %fusion.4.loop_body.dim.1, %fusion.4.loop_body.dim.0
%fusion.4.indvar.dim.1 = load i64, i64* %fusion.4.invar_address.dim.1, align 8
%54 = icmp uge i64 %fusion.4.indvar.dim.1, 4
br i1 %54, label %fusion.4.loop_exit.dim.1, label %fusion.4.loop_body.dim.1
fusion.4.loop_body.dim.1: ; preds = %fusion.4.loop_header.dim.1
%55 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.4.indvar.dim.0
%56 = load double, double* %55, align 8, !alias.scope !55, !noalias !56
%57 = add i64 %fusion.4.indvar.dim.1, 0
%58 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %57
%59 = load double, double* %58, align 8, !invariant.load !32, !noalias !36
%multiply.67 = fmul double %56, %59
%60 = getelementptr inbounds [4 x double], [4 x double]* %fusion.10, i64 0, i64 %fusion.4.indvar.dim.1
%61 = load double, double* %60, align 8, !alias.scope !51, !noalias !52
%divide.19 = fdiv double %multiply.67, %61
%62 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.4.indvar.dim.0, i64 %fusion.4.indvar.dim.1
store double %divide.19, double* %62, align 8, !alias.scope !57, !noalias !58
%invar.inc10 = add nuw nsw i64 %fusion.4.indvar.dim.1, 1
store i64 %invar.inc10, i64* %fusion.4.invar_address.dim.1, align 8
br label %fusion.4.loop_header.dim.1
fusion.4.loop_exit.dim.1: ; preds = %fusion.4.loop_header.dim.1
%invar.inc9 = add nuw nsw i64 %fusion.4.indvar.dim.0, 1
store i64 %invar.inc9, i64* %fusion.4.invar_address.dim.0, align 8
br label %fusion.4.loop_header.dim.0
fusion.4.loop_exit.dim.0: ; preds = %fusion.4.loop_header.dim.0
%63 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%64 = load i8*, i8** %63, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%65 = getelementptr inbounds i8, i8* %64, i64 68000
%fusion.3 = bitcast i8* %65 to [4 x double]*
store i64 0, i64* %fusion.3.invar_address.dim.0, align 8
br label %fusion.3.loop_header.dim.0
fusion.3.loop_header.dim.0: ; preds = %fusion.3.loop_body.dim.0, %fusion.4.loop_exit.dim.0
%fusion.3.indvar.dim.0 = load i64, i64* %fusion.3.invar_address.dim.0, align 8
%66 = icmp uge i64 %fusion.3.indvar.dim.0, 4
br i1 %66, label %fusion.3.loop_exit.dim.0, label %fusion.3.loop_body.dim.0
fusion.3.loop_body.dim.0: ; preds = %fusion.3.loop_header.dim.0
%constant.114 = load double, double* bitcast ([8 x i8]* @7 to double*), align 8
%67 = add i64 %fusion.3.indvar.dim.0, 8
%68 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %67
%69 = load double, double* %68, align 8, !invariant.load !32, !noalias !36
%multiply.66 = fmul double %69, %69
%constant.115 = load double, double* bitcast ([8 x i8]* @6 to double*), align 8
%multiply.65 = fmul double %multiply.66, %constant.115
%multiply.64 = fmul double %multiply.65, %multiply.65
%divide.18 = fdiv double %constant.114, %multiply.64
%70 = getelementptr inbounds [4 x double], [4 x double]* %fusion.3, i64 0, i64 %fusion.3.indvar.dim.0
store double %divide.18, double* %70, align 8, !alias.scope !59, !noalias !60
%invar.inc11 = add nuw nsw i64 %fusion.3.indvar.dim.0, 1
store i64 %invar.inc11, i64* %fusion.3.invar_address.dim.0, align 8
br label %fusion.3.loop_header.dim.0
fusion.3.loop_exit.dim.0: ; preds = %fusion.3.loop_header.dim.0
%71 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%72 = load i8*, i8** %71, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%73 = getelementptr inbounds i8, i8* %72, i64 48000
%fusion.2 = bitcast i8* %73 to [500 x [4 x double]]*
store i64 0, i64* %fusion.2.invar_address.dim.0, align 8
br label %fusion.2.loop_header.dim.0
fusion.2.loop_header.dim.0: ; preds = %fusion.2.loop_exit.dim.1, %fusion.3.loop_exit.dim.0
%fusion.2.indvar.dim.0 = load i64, i64* %fusion.2.invar_address.dim.0, align 8
%74 = icmp uge i64 %fusion.2.indvar.dim.0, 500
br i1 %74, label %fusion.2.loop_exit.dim.0, label %fusion.2.loop_body.dim.0
fusion.2.loop_body.dim.0: ; preds = %fusion.2.loop_header.dim.0
store i64 0, i64* %fusion.2.invar_address.dim.1, align 8
br label %fusion.2.loop_header.dim.1
fusion.2.loop_header.dim.1: ; preds = %fusion.2.loop_body.dim.1, %fusion.2.loop_body.dim.0
%fusion.2.indvar.dim.1 = load i64, i64* %fusion.2.invar_address.dim.1, align 8
%75 = icmp uge i64 %fusion.2.indvar.dim.1, 4
br i1 %75, label %fusion.2.loop_exit.dim.1, label %fusion.2.loop_body.dim.1
fusion.2.loop_body.dim.1: ; preds = %fusion.2.loop_header.dim.1
%76 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.2.indvar.dim.0, i64 %fusion.2.indvar.dim.1
%77 = load double, double* %76, align 8, !alias.scope !57, !noalias !58
%78 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.2.indvar.dim.0, i64 %fusion.2.indvar.dim.1
%79 = load double, double* %78, align 8, !alias.scope !49, !noalias !50
%multiply.62 = fmul double %77, %79
%80 = getelementptr inbounds [4 x double], [4 x double]* %fusion.3, i64 0, i64 %fusion.2.indvar.dim.1
%81 = load double, double* %80, align 8, !alias.scope !59, !noalias !60
%multiply.61 = fmul double %multiply.62, %81
%constant.113 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @8 to [500 x double]*), i64 0, i64 %fusion.2.indvar.dim.0
%constant.11314 = load double, double* %constant.113, align 8
%82 = add i64 %fusion.2.indvar.dim.1, 4
%83 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %82
%84 = load double, double* %83, align 8, !invariant.load !32, !noalias !36
%subtract.3 = fsub double %constant.11314, %84
%multiply.63 = fmul double %subtract.3, %subtract.3
%85 = fneg double %multiply.63
%multiply.60 = fmul double %multiply.61, %85
%86 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %fusion.2.indvar.dim.0, i64 %fusion.2.indvar.dim.1
store double %multiply.60, double* %86, align 8, !alias.scope !61, !noalias !62
%invar.inc13 = add nuw nsw i64 %fusion.2.indvar.dim.1, 1
store i64 %invar.inc13, i64* %fusion.2.invar_address.dim.1, align 8
br label %fusion.2.loop_header.dim.1
fusion.2.loop_exit.dim.1: ; preds = %fusion.2.loop_header.dim.1
%invar.inc12 = add nuw nsw i64 %fusion.2.indvar.dim.0, 1
store i64 %invar.inc12, i64* %fusion.2.invar_address.dim.0, align 8
br label %fusion.2.loop_header.dim.0
fusion.2.loop_exit.dim.0: ; preds = %fusion.2.loop_header.dim.0
%87 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%88 = load i8*, i8** %87, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%89 = getelementptr inbounds i8, i8* %88, i64 68000
%reduce-window.2 = bitcast i8* %89 to [16 x [4 x double]]*
store i64 0, i64* %reduce-window.2.invar_address.dim.0, align 8
br label %reduce-window.2.loop_header.dim.0
reduce-window.2.loop_header.dim.0: ; preds = %reduce-window.2.loop_exit.dim.1, %fusion.2.loop_exit.dim.0
%reduce-window.2.indvar.dim.0 = load i64, i64* %reduce-window.2.invar_address.dim.0, align 8
%90 = icmp uge i64 %reduce-window.2.indvar.dim.0, 16
br i1 %90, label %reduce-window.2.loop_exit.dim.0, label %reduce-window.2.loop_body.dim.0
reduce-window.2.loop_body.dim.0: ; preds = %reduce-window.2.loop_header.dim.0
store i64 0, i64* %reduce-window.2.invar_address.dim.1, align 8
br label %reduce-window.2.loop_header.dim.1
reduce-window.2.loop_header.dim.1: ; preds = %reduce-window.2.loop_exit.window.0, %reduce-window.2.loop_body.dim.0
%reduce-window.2.indvar.dim.1 = load i64, i64* %reduce-window.2.invar_address.dim.1, align 8
%91 = icmp uge i64 %reduce-window.2.indvar.dim.1, 4
br i1 %91, label %reduce-window.2.loop_exit.dim.1, label %reduce-window.2.loop_body.dim.1
reduce-window.2.loop_body.dim.1: ; preds = %reduce-window.2.loop_header.dim.1
%92 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !65, !noalias !66
store double %92, double* %reduce_window_accum_ptr, align 8
store i64 0, i64* %reduce-window.2.invar_address.window.0, align 8
br label %reduce-window.2.loop_header.window.0
reduce-window.2.loop_header.window.0: ; preds = %reduce-window.2.loop_exit.window.1, %reduce-window.2.loop_body.dim.1
%reduce-window.2.indvar.window.0 = load i64, i64* %reduce-window.2.invar_address.window.0, align 8
%93 = icmp uge i64 %reduce-window.2.indvar.window.0, 32
br i1 %93, label %reduce-window.2.loop_exit.window.0, label %reduce-window.2.loop_body.window.0
reduce-window.2.loop_body.window.0: ; preds = %reduce-window.2.loop_header.window.0
store i64 0, i64* %reduce-window.2.invar_address.window.1, align 8
br label %reduce-window.2.loop_header.window.1
reduce-window.2.loop_header.window.1: ; preds = %in_bounds-after, %reduce-window.2.loop_body.window.0
%reduce-window.2.indvar.window.1 = load i64, i64* %reduce-window.2.invar_address.window.1, align 8
%94 = icmp uge i64 %reduce-window.2.indvar.window.1, 1
br i1 %94, label %reduce-window.2.loop_exit.window.1, label %reduce-window.2.loop_body.window.1
reduce-window.2.loop_body.window.1: ; preds = %reduce-window.2.loop_header.window.1
%95 = mul nsw i64 %reduce-window.2.indvar.dim.0, 32
%96 = mul nsw i64 %reduce-window.2.indvar.window.0, 1
%97 = add nsw i64 %95, %96
%98 = sub nsw i64 %97, 6
%99 = srem i64 %98, 1
%100 = icmp eq i64 %99, 0
%101 = and i1 true, %100
%102 = sdiv i64 %98, 1
%103 = icmp ult i64 %102, 500
%104 = and i1 %101, %103
%105 = mul nsw i64 %reduce-window.2.indvar.dim.1, 1
%106 = mul nsw i64 %reduce-window.2.indvar.window.1, 1
%107 = add nsw i64 %105, %106
%108 = sub nsw i64 %107, 0
%109 = srem i64 %108, 1
%110 = icmp eq i64 %109, 0
%111 = and i1 %104, %110
%112 = sdiv i64 %108, 1
%113 = icmp ult i64 %112, 4
%114 = and i1 %111, %113
br i1 %114, label %in_bounds-true, label %in_bounds-false
in_bounds-after: ; preds = %in_bounds-false, %in_bounds-true
%invar.inc18 = add nuw nsw i64 %reduce-window.2.indvar.window.1, 1
store i64 %invar.inc18, i64* %reduce-window.2.invar_address.window.1, align 8
br label %reduce-window.2.loop_header.window.1
reduce-window.2.loop_exit.window.1: ; preds = %reduce-window.2.loop_header.window.1
%invar.inc17 = add nuw nsw i64 %reduce-window.2.indvar.window.0, 1
store i64 %invar.inc17, i64* %reduce-window.2.invar_address.window.0, align 8
br label %reduce-window.2.loop_header.window.0
reduce-window.2.loop_exit.window.0: ; preds = %reduce-window.2.loop_header.window.0
%115 = load double, double* %reduce_window_accum_ptr, align 8
%116 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.2, i64 0, i64 %reduce-window.2.indvar.dim.0, i64 %reduce-window.2.indvar.dim.1
store double %115, double* %116, align 8, !alias.scope !70, !noalias !71
%invar.inc16 = add nuw nsw i64 %reduce-window.2.indvar.dim.1, 1
store i64 %invar.inc16, i64* %reduce-window.2.invar_address.dim.1, align 8
br label %reduce-window.2.loop_header.dim.1
reduce-window.2.loop_exit.dim.1: ; preds = %reduce-window.2.loop_header.dim.1
%invar.inc15 = add nuw nsw i64 %reduce-window.2.indvar.dim.0, 1
store i64 %invar.inc15, i64* %reduce-window.2.invar_address.dim.0, align 8
br label %reduce-window.2.loop_header.dim.0
reduce-window.2.loop_exit.dim.0: ; preds = %reduce-window.2.loop_header.dim.0
%117 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%118 = load i8*, i8** %117, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%119 = getelementptr inbounds i8, i8* %118, i64 48512
%reduce.14 = bitcast i8* %119 to [4 x double]*
%120 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8
%.splatinsert = insertelement <4 x double> poison, double %120, i32 0
%.splat = shufflevector <4 x double> %.splatinsert, <4 x double> poison, <4 x i32> zeroinitializer
store <4 x double> %.splat, <4 x double>* %accumulator, align 8
store i64 0, i64* %reduce-window.2.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.2.vectorized_inner.loop_header.reduction_dim.0
in_bounds-true: ; preds = %reduce-window.2.loop_body.window.1
%121 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %102, i64 %112
%122 = load double, double* %121, align 8, !alias.scope !61, !noalias !62
%123 = load double, double* %reduce_window_accum_ptr, align 8
store double %123, double* %arg_addr19, align 8
store double %122, double* %arg_addr20, align 8
%reducer_function_parameter_0_address_as_i8ptr = bitcast double* %arg_addr19 to i8*
%124 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses, i64 0
store i8* %reducer_function_parameter_0_address_as_i8ptr, i8** %124, align 8
%reducer_function_parameter_1_address_as_i8ptr = bitcast double* %arg_addr20 to i8*
%125 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses, i64 1
store i8* %reducer_function_parameter_1_address_as_i8ptr, i8** %125, align 8
%126 = bitcast double* %reducer_function_return_value_addr to i8*
call void @region_7.133(i8* %126, i8* %run_options, i8** %reducer_function_parameter_addresses, i8** null, i8* %status, i64* %prof_counters)
%127 = load double, double* %reducer_function_return_value_addr, align 8
store double %127, double* %reduce_window_accum_ptr, align 8
br label %in_bounds-after
in_bounds-false: ; preds = %reduce-window.2.loop_body.window.1
br label %in_bounds-after
reduce-window.2.vectorized_inner.loop_header.reduction_dim.0: ; preds = %reduce-window.2.vectorized_inner.loop_body.reduction_dim.0, %reduce-window.2.loop_exit.dim.0
%reduce-window.2.vectorized_inner.indvar.reduction_dim.0 = load i64, i64* %reduce-window.2.vectorized_inner.invar_address.reduction_dim.0, align 8
%128 = icmp uge i64 %reduce-window.2.vectorized_inner.indvar.reduction_dim.0, 16
br i1 %128, label %reduce-window.2.vectorized_inner.loop_exit.reduction_dim.0, label %reduce-window.2.vectorized_inner.loop_body.reduction_dim.0
reduce-window.2.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.2.vectorized_inner.loop_header.reduction_dim.0
%129 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.2, i64 0, i64 %reduce-window.2.vectorized_inner.indvar.reduction_dim.0, i64 0
%130 = bitcast double* %129 to i8*
%131 = bitcast i8* %130 to <4 x double>*
%132 = load <4 x double>, <4 x double>* %accumulator, align 8
%133 = load <4 x double>, <4 x double>* %131, align 8, !alias.scope !70, !noalias !71
%134 = fadd reassoc <4 x double> %132, %133
store <4 x double> %134, <4 x double>* %accumulator, align 8
%invar.inc21 = add nuw nsw i64 %reduce-window.2.vectorized_inner.indvar.reduction_dim.0, 1
store i64 %invar.inc21, i64* %reduce-window.2.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.2.vectorized_inner.loop_header.reduction_dim.0
reduce-window.2.vectorized_inner.loop_exit.reduction_dim.0: ; preds = %reduce-window.2.vectorized_inner.loop_header.reduction_dim.0
%135 = load <4 x double>, <4 x double>* %accumulator, align 8
%136 = getelementptr inbounds [4 x double], [4 x double]* %reduce.14, i64 0, i64 0
%137 = bitcast double* %136 to <4 x double>*
store <4 x double> %135, <4 x double>* %137, align 8, !alias.scope !72, !noalias !73
%138 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%139 = load i8*, i8** %138, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%140 = getelementptr inbounds i8, i8* %139, i64 32000
%fusion.7 = bitcast i8* %140 to [500 x [4 x double]]*
store i64 0, i64* %fusion.7.invar_address.dim.0, align 8
br label %fusion.7.loop_header.dim.0
fusion.7.loop_header.dim.0: ; preds = %fusion.7.loop_exit.dim.1, %reduce-window.2.vectorized_inner.loop_exit.reduction_dim.0
%fusion.7.indvar.dim.0 = load i64, i64* %fusion.7.invar_address.dim.0, align 8
%141 = icmp uge i64 %fusion.7.indvar.dim.0, 500
br i1 %141, label %fusion.7.loop_exit.dim.0, label %fusion.7.loop_body.dim.0
fusion.7.loop_body.dim.0: ; preds = %fusion.7.loop_header.dim.0
store i64 0, i64* %fusion.7.invar_address.dim.1, align 8
br label %fusion.7.loop_header.dim.1
fusion.7.loop_header.dim.1: ; preds = %fusion.7.loop_body.dim.1, %fusion.7.loop_body.dim.0
%fusion.7.indvar.dim.1 = load i64, i64* %fusion.7.invar_address.dim.1, align 8
%142 = icmp uge i64 %fusion.7.indvar.dim.1, 4
br i1 %142, label %fusion.7.loop_exit.dim.1, label %fusion.7.loop_body.dim.1
fusion.7.loop_body.dim.1: ; preds = %fusion.7.loop_header.dim.1
%143 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.7.indvar.dim.0, i64 %fusion.7.indvar.dim.1
%144 = load double, double* %143, align 8, !alias.scope !53, !noalias !54
%145 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.7.indvar.dim.0
%146 = load double, double* %145, align 8, !alias.scope !55, !noalias !56
%multiply.74 = fmul double %144, %146
%147 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.7, i64 0, i64 %fusion.7.indvar.dim.0, i64 %fusion.7.indvar.dim.1
store double %multiply.74, double* %147, align 8, !alias.scope !53, !noalias !74
%invar.inc23 = add nuw nsw i64 %fusion.7.indvar.dim.1, 1
store i64 %invar.inc23, i64* %fusion.7.invar_address.dim.1, align 8
br label %fusion.7.loop_header.dim.1
fusion.7.loop_exit.dim.1: ; preds = %fusion.7.loop_header.dim.1
%invar.inc22 = add nuw nsw i64 %fusion.7.indvar.dim.0, 1
store i64 %invar.inc22, i64* %fusion.7.invar_address.dim.0, align 8
br label %fusion.7.loop_header.dim.0
fusion.7.loop_exit.dim.0: ; preds = %fusion.7.loop_header.dim.0
%148 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%149 = load i8*, i8** %148, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%150 = getelementptr inbounds i8, i8* %149, i64 48000
%reduce-window = bitcast i8* %150 to [16 x [4 x double]]*
store i64 0, i64* %reduce-window.invar_address.dim.0, align 8
br label %reduce-window.loop_header.dim.0
reduce-window.loop_header.dim.0: ; preds = %reduce-window.loop_exit.dim.1, %fusion.7.loop_exit.dim.0
%reduce-window.indvar.dim.0 = load i64, i64* %reduce-window.invar_address.dim.0, align 8
%151 = icmp uge i64 %reduce-window.indvar.dim.0, 16
br i1 %151, label %reduce-window.loop_exit.dim.0, label %reduce-window.loop_body.dim.0
reduce-window.loop_body.dim.0: ; preds = %reduce-window.loop_header.dim.0
store i64 0, i64* %reduce-window.invar_address.dim.1, align 8
br label %reduce-window.loop_header.dim.1
reduce-window.loop_header.dim.1: ; preds = %reduce-window.loop_exit.window.0, %reduce-window.loop_body.dim.0
%reduce-window.indvar.dim.1 = load i64, i64* %reduce-window.invar_address.dim.1, align 8
%152 = icmp uge i64 %reduce-window.indvar.dim.1, 4
br i1 %152, label %reduce-window.loop_exit.dim.1, label %reduce-window.loop_body.dim.1
reduce-window.loop_body.dim.1: ; preds = %reduce-window.loop_header.dim.1
%153 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !65, !noalias !66
store double %153, double* %reduce_window_accum_ptr26, align 8
store i64 0, i64* %reduce-window.invar_address.window.0, align 8
br label %reduce-window.loop_header.window.0
reduce-window.loop_header.window.0: ; preds = %reduce-window.loop_exit.window.1, %reduce-window.loop_body.dim.1
%reduce-window.indvar.window.0 = load i64, i64* %reduce-window.invar_address.window.0, align 8
%154 = icmp uge i64 %reduce-window.indvar.window.0, 32
br i1 %154, label %reduce-window.loop_exit.window.0, label %reduce-window.loop_body.window.0
reduce-window.loop_body.window.0: ; preds = %reduce-window.loop_header.window.0
store i64 0, i64* %reduce-window.invar_address.window.1, align 8
br label %reduce-window.loop_header.window.1
reduce-window.loop_header.window.1: ; preds = %in_bounds-after31, %reduce-window.loop_body.window.0
%reduce-window.indvar.window.1 = load i64, i64* %reduce-window.invar_address.window.1, align 8
%155 = icmp uge i64 %reduce-window.indvar.window.1, 1
br i1 %155, label %reduce-window.loop_exit.window.1, label %reduce-window.loop_body.window.1
reduce-window.loop_body.window.1: ; preds = %reduce-window.loop_header.window.1
%156 = mul nsw i64 %reduce-window.indvar.dim.0, 32
%157 = mul nsw i64 %reduce-window.indvar.window.0, 1
%158 = add nsw i64 %156, %157
%159 = sub nsw i64 %158, 6
%160 = srem i64 %159, 1
%161 = icmp eq i64 %160, 0
%162 = and i1 true, %161
%163 = sdiv i64 %159, 1
%164 = icmp ult i64 %163, 500
%165 = and i1 %162, %164
%166 = mul nsw i64 %reduce-window.indvar.dim.1, 1
%167 = mul nsw i64 %reduce-window.indvar.window.1, 1
%168 = add nsw i64 %166, %167
%169 = sub nsw i64 %168, 0
%170 = srem i64 %169, 1
%171 = icmp eq i64 %170, 0
%172 = and i1 %165, %171
%173 = sdiv i64 %169, 1
%174 = icmp ult i64 %173, 4
%175 = and i1 %172, %174
br i1 %175, label %in_bounds-true29, label %in_bounds-false30
in_bounds-after31: ; preds = %in_bounds-false30, %in_bounds-true29
%invar.inc28 = add nuw nsw i64 %reduce-window.indvar.window.1, 1
store i64 %invar.inc28, i64* %reduce-window.invar_address.window.1, align 8
br label %reduce-window.loop_header.window.1
reduce-window.loop_exit.window.1: ; preds = %reduce-window.loop_header.window.1
%invar.inc27 = add nuw nsw i64 %reduce-window.indvar.window.0, 1
store i64 %invar.inc27, i64* %reduce-window.invar_address.window.0, align 8
br label %reduce-window.loop_header.window.0
reduce-window.loop_exit.window.0: ; preds = %reduce-window.loop_header.window.0
%176 = load double, double* %reduce_window_accum_ptr26, align 8
%177 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window, i64 0, i64 %reduce-window.indvar.dim.0, i64 %reduce-window.indvar.dim.1
store double %176, double* %177, align 8, !alias.scope !75, !noalias !76
%invar.inc25 = add nuw nsw i64 %reduce-window.indvar.dim.1, 1
store i64 %invar.inc25, i64* %reduce-window.invar_address.dim.1, align 8
br label %reduce-window.loop_header.dim.1
reduce-window.loop_exit.dim.1: ; preds = %reduce-window.loop_header.dim.1
%invar.inc24 = add nuw nsw i64 %reduce-window.indvar.dim.0, 1
store i64 %invar.inc24, i64* %reduce-window.invar_address.dim.0, align 8
br label %reduce-window.loop_header.dim.0
reduce-window.loop_exit.dim.0: ; preds = %reduce-window.loop_header.dim.0
%178 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%179 = load i8*, i8** %178, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%180 = getelementptr inbounds i8, i8* %179, i64 48544
%reduce.8 = bitcast i8* %180 to [4 x double]*
%181 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8
%.splatinsert39 = insertelement <4 x double> poison, double %181, i32 0
%.splat40 = shufflevector <4 x double> %.splatinsert39, <4 x double> poison, <4 x i32> zeroinitializer
store <4 x double> %.splat40, <4 x double>* %accumulator38, align 8
store i64 0, i64* %reduce-window.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.vectorized_inner.loop_header.reduction_dim.0
in_bounds-true29: ; preds = %reduce-window.loop_body.window.1
%182 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.7, i64 0, i64 %163, i64 %173
%183 = load double, double* %182, align 8, !alias.scope !53, !noalias !74
%184 = load double, double* %reduce_window_accum_ptr26, align 8
store double %184, double* %arg_addr32, align 8
store double %183, double* %arg_addr33, align 8
%reducer_function_parameter_0_address_as_i8ptr36 = bitcast double* %arg_addr32 to i8*
%185 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses35, i64 0
store i8* %reducer_function_parameter_0_address_as_i8ptr36, i8** %185, align 8
%reducer_function_parameter_1_address_as_i8ptr37 = bitcast double* %arg_addr33 to i8*
%186 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses35, i64 1
store i8* %reducer_function_parameter_1_address_as_i8ptr37, i8** %186, align 8
%187 = bitcast double* %reducer_function_return_value_addr34 to i8*
call void @region_2.113(i8* %187, i8* %run_options, i8** %reducer_function_parameter_addresses35, i8** null, i8* %status, i64* %prof_counters)
%188 = load double, double* %reducer_function_return_value_addr34, align 8
store double %188, double* %reduce_window_accum_ptr26, align 8
br label %in_bounds-after31
in_bounds-false30: ; preds = %reduce-window.loop_body.window.1
br label %in_bounds-after31
reduce-window.vectorized_inner.loop_header.reduction_dim.0: ; preds = %reduce-window.vectorized_inner.loop_body.reduction_dim.0, %reduce-window.loop_exit.dim.0
%reduce-window.vectorized_inner.indvar.reduction_dim.0 = load i64, i64* %reduce-window.vectorized_inner.invar_address.reduction_dim.0, align 8
%189 = icmp uge i64 %reduce-window.vectorized_inner.indvar.reduction_dim.0, 16
br i1 %189, label %reduce-window.vectorized_inner.loop_exit.reduction_dim.0, label %reduce-window.vectorized_inner.loop_body.reduction_dim.0
reduce-window.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.vectorized_inner.loop_header.reduction_dim.0
%190 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window, i64 0, i64 %reduce-window.vectorized_inner.indvar.reduction_dim.0, i64 0
%191 = bitcast double* %190 to i8*
%192 = bitcast i8* %191 to <4 x double>*
%193 = load <4 x double>, <4 x double>* %accumulator38, align 8
%194 = load <4 x double>, <4 x double>* %192, align 8, !alias.scope !75, !noalias !76
%195 = fadd reassoc <4 x double> %193, %194
store <4 x double> %195, <4 x double>* %accumulator38, align 8
%invar.inc41 = add nuw nsw i64 %reduce-window.vectorized_inner.indvar.reduction_dim.0, 1
store i64 %invar.inc41, i64* %reduce-window.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.vectorized_inner.loop_header.reduction_dim.0
reduce-window.vectorized_inner.loop_exit.reduction_dim.0: ; preds = %reduce-window.vectorized_inner.loop_header.reduction_dim.0
%196 = load <4 x double>, <4 x double>* %accumulator38, align 8
%197 = getelementptr inbounds [4 x double], [4 x double]* %reduce.8, i64 0, i64 0
%198 = bitcast double* %197 to <4 x double>*
store <4 x double> %196, <4 x double>* %198, align 8, !alias.scope !77, !noalias !78
%199 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%200 = load i8*, i8** %199, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%201 = getelementptr inbounds i8, i8* %200, i64 16000
%fusion.1 = bitcast i8* %201 to [500 x [4 x double]]*
store i64 0, i64* %fusion.1.invar_address.dim.0, align 8
br label %fusion.1.loop_header.dim.0
fusion.1.loop_header.dim.0: ; preds = %fusion.1.loop_exit.dim.1, %reduce-window.vectorized_inner.loop_exit.reduction_dim.0
%fusion.1.indvar.dim.0 = load i64, i64* %fusion.1.invar_address.dim.0, align 8
%202 = icmp uge i64 %fusion.1.indvar.dim.0, 500
br i1 %202, label %fusion.1.loop_exit.dim.0, label %fusion.1.loop_body.dim.0
fusion.1.loop_body.dim.0: ; preds = %fusion.1.loop_header.dim.0
store i64 0, i64* %fusion.1.invar_address.dim.1, align 8
br label %fusion.1.loop_header.dim.1
fusion.1.loop_header.dim.1: ; preds = %fusion.1.loop_body.dim.1, %fusion.1.loop_body.dim.0
%fusion.1.indvar.dim.1 = load i64, i64* %fusion.1.invar_address.dim.1, align 8
%203 = icmp uge i64 %fusion.1.indvar.dim.1, 4
br i1 %203, label %fusion.1.loop_exit.dim.1, label %fusion.1.loop_body.dim.1
fusion.1.loop_body.dim.1: ; preds = %fusion.1.loop_header.dim.1
%204 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.1.indvar.dim.0, i64 %fusion.1.indvar.dim.1
%205 = load double, double* %204, align 8, !alias.scope !57, !noalias !58
%206 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.1.indvar.dim.0, i64 %fusion.1.indvar.dim.1
%207 = load double, double* %206, align 8, !alias.scope !49, !noalias !50
%multiply.57 = fmul double %205, %207
%208 = add i64 %fusion.1.indvar.dim.1, 8
%209 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %208
%210 = load double, double* %209, align 8, !invariant.load !32, !noalias !36
%multiply.59 = fmul double %210, %210
%constant.111 = load double, double* bitcast ([8 x i8]* @9 to double*), align 8
%multiply.58 = fmul double %multiply.59, %constant.111
%divide.17 = fdiv double %multiply.57, %multiply.58
%211 = fneg double %divide.17
%constant.112 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @10 to [500 x double]*), i64 0, i64 %fusion.1.indvar.dim.0
%constant.11244 = load double, double* %constant.112, align 8
%212 = add i64 %fusion.1.indvar.dim.1, 4
%213 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %212
%214 = load double, double* %213, align 8, !invariant.load !32, !noalias !36
%subtract.2 = fsub double %constant.11244, %214
%constant.11145 = load double, double* bitcast ([8 x i8]* @9 to double*), align 8
%multiply.56 = fmul double %subtract.2, %constant.11145
%multiply.55 = fmul double %211, %multiply.56
%215 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.1, i64 0, i64 %fusion.1.indvar.dim.0, i64 %fusion.1.indvar.dim.1
store double %multiply.55, double* %215, align 8, !alias.scope !57, !noalias !79
%invar.inc43 = add nuw nsw i64 %fusion.1.indvar.dim.1, 1
store i64 %invar.inc43, i64* %fusion.1.invar_address.dim.1, align 8
br label %fusion.1.loop_header.dim.1
fusion.1.loop_exit.dim.1: ; preds = %fusion.1.loop_header.dim.1
%invar.inc42 = add nuw nsw i64 %fusion.1.indvar.dim.0, 1
store i64 %invar.inc42, i64* %fusion.1.invar_address.dim.0, align 8
br label %fusion.1.loop_header.dim.0
fusion.1.loop_exit.dim.0: ; preds = %fusion.1.loop_header.dim.0
%216 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%217 = load i8*, i8** %216, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%218 = getelementptr inbounds i8, i8* %217, i64 32000
%reduce-window.3 = bitcast i8* %218 to [16 x [4 x double]]*
store i64 0, i64* %reduce-window.3.invar_address.dim.0, align 8
br label %reduce-window.3.loop_header.dim.0
reduce-window.3.loop_header.dim.0: ; preds = %reduce-window.3.loop_exit.dim.1, %fusion.1.loop_exit.dim.0
%reduce-window.3.indvar.dim.0 = load i64, i64* %reduce-window.3.invar_address.dim.0, align 8
%219 = icmp uge i64 %reduce-window.3.indvar.dim.0, 16
br i1 %219, label %reduce-window.3.loop_exit.dim.0, label %reduce-window.3.loop_body.dim.0
reduce-window.3.loop_body.dim.0: ; preds = %reduce-window.3.loop_header.dim.0
store i64 0, i64* %reduce-window.3.invar_address.dim.1, align 8
br label %reduce-window.3.loop_header.dim.1
reduce-window.3.loop_header.dim.1: ; preds = %reduce-window.3.loop_exit.window.0, %reduce-window.3.loop_body.dim.0
%reduce-window.3.indvar.dim.1 = load i64, i64* %reduce-window.3.invar_address.dim.1, align 8
%220 = icmp uge i64 %reduce-window.3.indvar.dim.1, 4
br i1 %220, label %reduce-window.3.loop_exit.dim.1, label %reduce-window.3.loop_body.dim.1
reduce-window.3.loop_body.dim.1: ; preds = %reduce-window.3.loop_header.dim.1
%221 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !65, !noalias !66
store double %221, double* %reduce_window_accum_ptr48, align 8
store i64 0, i64* %reduce-window.3.invar_address.window.0, align 8
br label %reduce-window.3.loop_header.window.0
reduce-window.3.loop_header.window.0: ; preds = %reduce-window.3.loop_exit.window.1, %reduce-window.3.loop_body.dim.1
%reduce-window.3.indvar.window.0 = load i64, i64* %reduce-window.3.invar_address.window.0, align 8
%222 = icmp uge i64 %reduce-window.3.indvar.window.0, 32
br i1 %222, label %reduce-window.3.loop_exit.window.0, label %reduce-window.3.loop_body.window.0
reduce-window.3.loop_body.window.0: ; preds = %reduce-window.3.loop_header.window.0
store i64 0, i64* %reduce-window.3.invar_address.window.1, align 8
br label %reduce-window.3.loop_header.window.1
reduce-window.3.loop_header.window.1: ; preds = %in_bounds-after53, %reduce-window.3.loop_body.window.0
%reduce-window.3.indvar.window.1 = load i64, i64* %reduce-window.3.invar_address.window.1, align 8
%223 = icmp uge i64 %reduce-window.3.indvar.window.1, 1
br i1 %223, label %reduce-window.3.loop_exit.window.1, label %reduce-window.3.loop_body.window.1
reduce-window.3.loop_body.window.1: ; preds = %reduce-window.3.loop_header.window.1
%224 = mul nsw i64 %reduce-window.3.indvar.dim.0, 32
%225 = mul nsw i64 %reduce-window.3.indvar.window.0, 1
%226 = add nsw i64 %224, %225
%227 = sub nsw i64 %226, 6
%228 = srem i64 %227, 1
%229 = icmp eq i64 %228, 0
%230 = and i1 true, %229
%231 = sdiv i64 %227, 1
%232 = icmp ult i64 %231, 500
%233 = and i1 %230, %232
%234 = mul nsw i64 %reduce-window.3.indvar.dim.1, 1
%235 = mul nsw i64 %reduce-window.3.indvar.window.1, 1
%236 = add nsw i64 %234, %235
%237 = sub nsw i64 %236, 0
%238 = srem i64 %237, 1
%239 = icmp eq i64 %238, 0
%240 = and i1 %233, %239
%241 = sdiv i64 %237, 1
%242 = icmp ult i64 %241, 4
%243 = and i1 %240, %242
br i1 %243, label %in_bounds-true51, label %in_bounds-false52
in_bounds-after53: ; preds = %in_bounds-false52, %in_bounds-true51
%invar.inc50 = add nuw nsw i64 %reduce-window.3.indvar.window.1, 1
store i64 %invar.inc50, i64* %reduce-window.3.invar_address.window.1, align 8
br label %reduce-window.3.loop_header.window.1
reduce-window.3.loop_exit.window.1: ; preds = %reduce-window.3.loop_header.window.1
%invar.inc49 = add nuw nsw i64 %reduce-window.3.indvar.window.0, 1
store i64 %invar.inc49, i64* %reduce-window.3.invar_address.window.0, align 8
br label %reduce-window.3.loop_header.window.0
reduce-window.3.loop_exit.window.0: ; preds = %reduce-window.3.loop_header.window.0
%244 = load double, double* %reduce_window_accum_ptr48, align 8
%245 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.3, i64 0, i64 %reduce-window.3.indvar.dim.0, i64 %reduce-window.3.indvar.dim.1
store double %244, double* %245, align 8, !alias.scope !80, !noalias !81
%invar.inc47 = add nuw nsw i64 %reduce-window.3.indvar.dim.1, 1
store i64 %invar.inc47, i64* %reduce-window.3.invar_address.dim.1, align 8
br label %reduce-window.3.loop_header.dim.1
reduce-window.3.loop_exit.dim.1: ; preds = %reduce-window.3.loop_header.dim.1
%invar.inc46 = add nuw nsw i64 %reduce-window.3.indvar.dim.0, 1
store i64 %invar.inc46, i64* %reduce-window.3.invar_address.dim.0, align 8
br label %reduce-window.3.loop_header.dim.0
reduce-window.3.loop_exit.dim.0: ; preds = %reduce-window.3.loop_header.dim.0
%246 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%247 = load i8*, i8** %246, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%248 = getelementptr inbounds i8, i8* %247, i64 48576
%reduce.10 = bitcast i8* %248 to [4 x double]*
%249 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8
%.splatinsert61 = insertelement <4 x double> poison, double %249, i32 0
%.splat62 = shufflevector <4 x double> %.splatinsert61, <4 x double> poison, <4 x i32> zeroinitializer
store <4 x double> %.splat62, <4 x double>* %accumulator60, align 8
store i64 0, i64* %reduce-window.3.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.3.vectorized_inner.loop_header.reduction_dim.0
in_bounds-true51: ; preds = %reduce-window.3.loop_body.window.1
%250 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.1, i64 0, i64 %231, i64 %241
%251 = load double, double* %250, align 8, !alias.scope !57, !noalias !79
%252 = load double, double* %reduce_window_accum_ptr48, align 8
store double %252, double* %arg_addr54, align 8
store double %251, double* %arg_addr55, align 8
%reducer_function_parameter_0_address_as_i8ptr58 = bitcast double* %arg_addr54 to i8*
%253 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses57, i64 0
store i8* %reducer_function_parameter_0_address_as_i8ptr58, i8** %253, align 8
%reducer_function_parameter_1_address_as_i8ptr59 = bitcast double* %arg_addr55 to i8*
%254 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses57, i64 1
store i8* %reducer_function_parameter_1_address_as_i8ptr59, i8** %254, align 8
%255 = bitcast double* %reducer_function_return_value_addr56 to i8*
call void @region_9.141(i8* %255, i8* %run_options, i8** %reducer_function_parameter_addresses57, i8** null, i8* %status, i64* %prof_counters)
%256 = load double, double* %reducer_function_return_value_addr56, align 8
store double %256, double* %reduce_window_accum_ptr48, align 8
br label %in_bounds-after53
in_bounds-false52: ; preds = %reduce-window.3.loop_body.window.1
br label %in_bounds-after53
reduce-window.3.vectorized_inner.loop_header.reduction_dim.0: ; preds = %reduce-window.3.vectorized_inner.loop_body.reduction_dim.0, %reduce-window.3.loop_exit.dim.0
%reduce-window.3.vectorized_inner.indvar.reduction_dim.0 = load i64, i64* %reduce-window.3.vectorized_inner.invar_address.reduction_dim.0, align 8
%257 = icmp uge i64 %reduce-window.3.vectorized_inner.indvar.reduction_dim.0, 16
br i1 %257, label %reduce-window.3.vectorized_inner.loop_exit.reduction_dim.0, label %reduce-window.3.vectorized_inner.loop_body.reduction_dim.0
reduce-window.3.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.3.vectorized_inner.loop_header.reduction_dim.0
%258 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.3, i64 0, i64 %reduce-window.3.vectorized_inner.indvar.reduction_dim.0, i64 0
%259 = bitcast double* %258 to i8*
%260 = bitcast i8* %259 to <4 x double>*
%261 = load <4 x double>, <4 x double>* %accumulator60, align 8
%262 = load <4 x double>, <4 x double>* %260, align 8, !alias.scope !80, !noalias !81
%263 = fadd reassoc <4 x double> %261, %262
store <4 x double> %263, <4 x double>* %accumulator60, align 8
%invar.inc63 = add nuw nsw i64 %reduce-window.3.vectorized_inner.indvar.reduction_dim.0, 1
store i64 %invar.inc63, i64* %reduce-window.3.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.3.vectorized_inner.loop_header.reduction_dim.0
reduce-window.3.vectorized_inner.loop_exit.reduction_dim.0: ; preds = %reduce-window.3.vectorized_inner.loop_header.reduction_dim.0
%264 = load <4 x double>, <4 x double>* %accumulator60, align 8
%265 = getelementptr inbounds [4 x double], [4 x double]* %reduce.10, i64 0, i64 0
%266 = bitcast double* %265 to <4 x double>*
store <4 x double> %264, <4 x double>* %266, align 8, !alias.scope !82, !noalias !83
%267 = getelementptr inbounds i8*, i8** %buffer_table, i64 0
%268 = load i8*, i8** %267, align 8, !invariant.load !32, !dereferenceable !33, !align !34
%fusion.6 = bitcast i8* %268 to [4 x double]*
store i64 0, i64* %fusion.6.invar_address.dim.0, align 8
br label %fusion.6.loop_header.dim.0
fusion.6.loop_header.dim.0: ; preds = %fusion.6.loop_body.dim.0, %reduce-window.3.vectorized_inner.loop_exit.reduction_dim.0
%fusion.6.indvar.dim.0 = load i64, i64* %fusion.6.invar_address.dim.0, align 8
%269 = icmp uge i64 %fusion.6.indvar.dim.0, 4
br i1 %269, label %fusion.6.loop_exit.dim.0, label %fusion.6.loop_body.dim.0
fusion.6.loop_body.dim.0: ; preds = %fusion.6.loop_header.dim.0
%constant.116 = load double, double* bitcast ([8 x i8]* @11 to double*), align 8
%270 = getelementptr inbounds [4 x double], [4 x double]* %fusion.10, i64 0, i64 %fusion.6.indvar.dim.0
%271 = load double, double* %270, align 8, !alias.scope !51, !noalias !52
%272 = getelementptr inbounds [4 x double], [4 x double]* %fusion.10, i64 0, i64 %fusion.6.indvar.dim.0
%273 = load double, double* %272, align 8, !alias.scope !51, !noalias !52
%multiply.73 = fmul double %271, %273
%divide.20 = fdiv double %constant.116, %multiply.73
%274 = getelementptr inbounds [4 x double], [4 x double]* %fusion.6, i64 0, i64 %fusion.6.indvar.dim.0
store double %divide.20, double* %274, align 8, !alias.scope !51, !noalias !84
%invar.inc64 = add nuw nsw i64 %fusion.6.indvar.dim.0, 1
store i64 %invar.inc64, i64* %fusion.6.invar_address.dim.0, align 8
br label %fusion.6.loop_header.dim.0
fusion.6.loop_exit.dim.0: ; preds = %fusion.6.loop_header.dim.0
%275 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%276 = load i8*, i8** %275, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%fusion.5 = bitcast i8* %276 to [500 x [4 x double]]*
store i64 0, i64* %fusion.5.invar_address.dim.0, align 8
br label %fusion.5.loop_header.dim.0
fusion.5.loop_header.dim.0: ; preds = %fusion.5.loop_exit.dim.1, %fusion.6.loop_exit.dim.0
%fusion.5.indvar.dim.0 = load i64, i64* %fusion.5.invar_address.dim.0, align 8
%277 = icmp uge i64 %fusion.5.indvar.dim.0, 500
br i1 %277, label %fusion.5.loop_exit.dim.0, label %fusion.5.loop_body.dim.0
fusion.5.loop_body.dim.0: ; preds = %fusion.5.loop_header.dim.0
store i64 0, i64* %fusion.5.invar_address.dim.1, align 8
br label %fusion.5.loop_header.dim.1
fusion.5.loop_header.dim.1: ; preds = %fusion.5.loop_body.dim.1, %fusion.5.loop_body.dim.0
%fusion.5.indvar.dim.1 = load i64, i64* %fusion.5.invar_address.dim.1, align 8
%278 = icmp uge i64 %fusion.5.indvar.dim.1, 4
br i1 %278, label %fusion.5.loop_exit.dim.1, label %fusion.5.loop_body.dim.1
fusion.5.loop_body.dim.1: ; preds = %fusion.5.loop_header.dim.1
%279 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.5.indvar.dim.0
%280 = load double, double* %279, align 8, !alias.scope !55, !noalias !56
%281 = add i64 %fusion.5.indvar.dim.1, 0
%282 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %281
%283 = load double, double* %282, align 8, !invariant.load !32, !noalias !36
%multiply.70 = fmul double %280, %283
%284 = getelementptr inbounds [4 x double], [4 x double]* %fusion.6, i64 0, i64 %fusion.5.indvar.dim.1
%285 = load double, double* %284, align 8, !alias.scope !51, !noalias !84
%multiply.69 = fmul double %multiply.70, %285
%286 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.5.indvar.dim.0, i64 %fusion.5.indvar.dim.1
%287 = load double, double* %286, align 8, !alias.scope !49, !noalias !50
%multiply.68 = fmul double %multiply.69, %287
%288 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.5, i64 0, i64 %fusion.5.indvar.dim.0, i64 %fusion.5.indvar.dim.1
store double %multiply.68, double* %288, align 8, !alias.scope !49, !noalias !85
%invar.inc66 = add nuw nsw i64 %fusion.5.indvar.dim.1, 1
store i64 %invar.inc66, i64* %fusion.5.invar_address.dim.1, align 8
br label %fusion.5.loop_header.dim.1
fusion.5.loop_exit.dim.1: ; preds = %fusion.5.loop_header.dim.1
%invar.inc65 = add nuw nsw i64 %fusion.5.indvar.dim.0, 1
store i64 %invar.inc65, i64* %fusion.5.invar_address.dim.0, align 8
br label %fusion.5.loop_header.dim.0
fusion.5.loop_exit.dim.0: ; preds = %fusion.5.loop_header.dim.0
%289 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%290 = load i8*, i8** %289, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%291 = getelementptr inbounds i8, i8* %290, i64 16000
%reduce-window.1 = bitcast i8* %291 to [16 x [4 x double]]*
store i64 0, i64* %reduce-window.1.invar_address.dim.0, align 8
br label %reduce-window.1.loop_header.dim.0
reduce-window.1.loop_header.dim.0: ; preds = %reduce-window.1.loop_exit.dim.1, %fusion.5.loop_exit.dim.0
%reduce-window.1.indvar.dim.0 = load i64, i64* %reduce-window.1.invar_address.dim.0, align 8
%292 = icmp uge i64 %reduce-window.1.indvar.dim.0, 16
br i1 %292, label %reduce-window.1.loop_exit.dim.0, label %reduce-window.1.loop_body.dim.0
reduce-window.1.loop_body.dim.0: ; preds = %reduce-window.1.loop_header.dim.0
store i64 0, i64* %reduce-window.1.invar_address.dim.1, align 8
br label %reduce-window.1.loop_header.dim.1
reduce-window.1.loop_header.dim.1: ; preds = %reduce-window.1.loop_exit.window.0, %reduce-window.1.loop_body.dim.0
%reduce-window.1.indvar.dim.1 = load i64, i64* %reduce-window.1.invar_address.dim.1, align 8
%293 = icmp uge i64 %reduce-window.1.indvar.dim.1, 4
br i1 %293, label %reduce-window.1.loop_exit.dim.1, label %reduce-window.1.loop_body.dim.1
reduce-window.1.loop_body.dim.1: ; preds = %reduce-window.1.loop_header.dim.1
%294 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8, !alias.scope !65, !noalias !66
store double %294, double* %reduce_window_accum_ptr69, align 8
store i64 0, i64* %reduce-window.1.invar_address.window.0, align 8
br label %reduce-window.1.loop_header.window.0
reduce-window.1.loop_header.window.0: ; preds = %reduce-window.1.loop_exit.window.1, %reduce-window.1.loop_body.dim.1
%reduce-window.1.indvar.window.0 = load i64, i64* %reduce-window.1.invar_address.window.0, align 8
%295 = icmp uge i64 %reduce-window.1.indvar.window.0, 32
br i1 %295, label %reduce-window.1.loop_exit.window.0, label %reduce-window.1.loop_body.window.0
reduce-window.1.loop_body.window.0: ; preds = %reduce-window.1.loop_header.window.0
store i64 0, i64* %reduce-window.1.invar_address.window.1, align 8
br label %reduce-window.1.loop_header.window.1
reduce-window.1.loop_header.window.1: ; preds = %in_bounds-after74, %reduce-window.1.loop_body.window.0
%reduce-window.1.indvar.window.1 = load i64, i64* %reduce-window.1.invar_address.window.1, align 8
%296 = icmp uge i64 %reduce-window.1.indvar.window.1, 1
br i1 %296, label %reduce-window.1.loop_exit.window.1, label %reduce-window.1.loop_body.window.1
reduce-window.1.loop_body.window.1: ; preds = %reduce-window.1.loop_header.window.1
%297 = mul nsw i64 %reduce-window.1.indvar.dim.0, 32
%298 = mul nsw i64 %reduce-window.1.indvar.window.0, 1
%299 = add nsw i64 %297, %298
%300 = sub nsw i64 %299, 6
%301 = srem i64 %300, 1
%302 = icmp eq i64 %301, 0
%303 = and i1 true, %302
%304 = sdiv i64 %300, 1
%305 = icmp ult i64 %304, 500
%306 = and i1 %303, %305
%307 = mul nsw i64 %reduce-window.1.indvar.dim.1, 1
%308 = mul nsw i64 %reduce-window.1.indvar.window.1, 1
%309 = add nsw i64 %307, %308
%310 = sub nsw i64 %309, 0
%311 = srem i64 %310, 1
%312 = icmp eq i64 %311, 0
%313 = and i1 %306, %312
%314 = sdiv i64 %310, 1
%315 = icmp ult i64 %314, 4
%316 = and i1 %313, %315
br i1 %316, label %in_bounds-true72, label %in_bounds-false73
in_bounds-after74: ; preds = %in_bounds-false73, %in_bounds-true72
%invar.inc71 = add nuw nsw i64 %reduce-window.1.indvar.window.1, 1
store i64 %invar.inc71, i64* %reduce-window.1.invar_address.window.1, align 8
br label %reduce-window.1.loop_header.window.1
reduce-window.1.loop_exit.window.1: ; preds = %reduce-window.1.loop_header.window.1
%invar.inc70 = add nuw nsw i64 %reduce-window.1.indvar.window.0, 1
store i64 %invar.inc70, i64* %reduce-window.1.invar_address.window.0, align 8
br label %reduce-window.1.loop_header.window.0
reduce-window.1.loop_exit.window.0: ; preds = %reduce-window.1.loop_header.window.0
%317 = load double, double* %reduce_window_accum_ptr69, align 8
%318 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.1, i64 0, i64 %reduce-window.1.indvar.dim.0, i64 %reduce-window.1.indvar.dim.1
store double %317, double* %318, align 8, !alias.scope !86, !noalias !87
%invar.inc68 = add nuw nsw i64 %reduce-window.1.indvar.dim.1, 1
store i64 %invar.inc68, i64* %reduce-window.1.invar_address.dim.1, align 8
br label %reduce-window.1.loop_header.dim.1
reduce-window.1.loop_exit.dim.1: ; preds = %reduce-window.1.loop_header.dim.1
%invar.inc67 = add nuw nsw i64 %reduce-window.1.indvar.dim.0, 1
store i64 %invar.inc67, i64* %reduce-window.1.invar_address.dim.0, align 8
br label %reduce-window.1.loop_header.dim.0
reduce-window.1.loop_exit.dim.0: ; preds = %reduce-window.1.loop_header.dim.0
%319 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%320 = load i8*, i8** %319, align 8, !invariant.load !32, !dereferenceable !35, !align !34
%reduce.12 = bitcast i8* %320 to [4 x double]*
%321 = load double, double* bitcast ([8 x i8]* @0 to double*), align 8
%.splatinsert82 = insertelement <4 x double> poison, double %321, i32 0
%.splat83 = shufflevector <4 x double> %.splatinsert82, <4 x double> poison, <4 x i32> zeroinitializer
store <4 x double> %.splat83, <4 x double>* %accumulator81, align 8
store i64 0, i64* %reduce-window.1.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.1.vectorized_inner.loop_header.reduction_dim.0
in_bounds-true72: ; preds = %reduce-window.1.loop_body.window.1
%322 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.5, i64 0, i64 %304, i64 %314
%323 = load double, double* %322, align 8, !alias.scope !49, !noalias !85
%324 = load double, double* %reduce_window_accum_ptr69, align 8
store double %324, double* %arg_addr75, align 8
store double %323, double* %arg_addr76, align 8
%reducer_function_parameter_0_address_as_i8ptr79 = bitcast double* %arg_addr75 to i8*
%325 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses78, i64 0
store i8* %reducer_function_parameter_0_address_as_i8ptr79, i8** %325, align 8
%reducer_function_parameter_1_address_as_i8ptr80 = bitcast double* %arg_addr76 to i8*
%326 = getelementptr inbounds i8*, i8** %reducer_function_parameter_addresses78, i64 1
store i8* %reducer_function_parameter_1_address_as_i8ptr80, i8** %326, align 8
%327 = bitcast double* %reducer_function_return_value_addr77 to i8*
call void @region_5.125(i8* %327, i8* %run_options, i8** %reducer_function_parameter_addresses78, i8** null, i8* %status, i64* %prof_counters)
%328 = load double, double* %reducer_function_return_value_addr77, align 8
store double %328, double* %reduce_window_accum_ptr69, align 8
br label %in_bounds-after74
in_bounds-false73: ; preds = %reduce-window.1.loop_body.window.1
br label %in_bounds-after74
reduce-window.1.vectorized_inner.loop_header.reduction_dim.0: ; preds = %reduce-window.1.vectorized_inner.loop_body.reduction_dim.0, %reduce-window.1.loop_exit.dim.0
%reduce-window.1.vectorized_inner.indvar.reduction_dim.0 = load i64, i64* %reduce-window.1.vectorized_inner.invar_address.reduction_dim.0, align 8
%329 = icmp uge i64 %reduce-window.1.vectorized_inner.indvar.reduction_dim.0, 16
br i1 %329, label %reduce-window.1.vectorized_inner.loop_exit.reduction_dim.0, label %reduce-window.1.vectorized_inner.loop_body.reduction_dim.0
reduce-window.1.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.1.vectorized_inner.loop_header.reduction_dim.0
%330 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.1, i64 0, i64 %reduce-window.1.vectorized_inner.indvar.reduction_dim.0, i64 0
%331 = bitcast double* %330 to i8*
%332 = bitcast i8* %331 to <4 x double>*
%333 = load <4 x double>, <4 x double>* %accumulator81, align 8
%334 = load <4 x double>, <4 x double>* %332, align 8, !alias.scope !86, !noalias !87
%335 = fadd reassoc <4 x double> %333, %334
store <4 x double> %335, <4 x double>* %accumulator81, align 8
%invar.inc84 = add nuw nsw i64 %reduce-window.1.vectorized_inner.indvar.reduction_dim.0, 1
store i64 %invar.inc84, i64* %reduce-window.1.vectorized_inner.invar_address.reduction_dim.0, align 8
br label %reduce-window.1.vectorized_inner.loop_header.reduction_dim.0
reduce-window.1.vectorized_inner.loop_exit.reduction_dim.0: ; preds = %reduce-window.1.vectorized_inner.loop_header.reduction_dim.0
%336 = load <4 x double>, <4 x double>* %accumulator81, align 8
%337 = getelementptr inbounds [4 x double], [4 x double]* %reduce.12, i64 0, i64 0
%338 = bitcast double* %337 to <4 x double>*
store <4 x double> %336, <4 x double>* %338, align 8, !alias.scope !88, !noalias !89
%339 = getelementptr inbounds i8*, i8** %buffer_table, i64 0
%340 = load i8*, i8** %339, align 8, !invariant.load !32, !dereferenceable !33, !align !34
%fusion = bitcast i8* %340 to [12 x double]*
store i64 0, i64* %fusion.invar_address.dim.0, align 8
br label %fusion.loop_header.dim.0
fusion.loop_header.dim.0: ; preds = %in_bounds-after105, %reduce-window.1.vectorized_inner.loop_exit.reduction_dim.0
%fusion.indvar.dim.0 = load i64, i64* %fusion.invar_address.dim.0, align 8
%341 = icmp uge i64 %fusion.indvar.dim.0, 12
br i1 %341, label %fusion.loop_exit.dim.0, label %fusion.loop_body.dim.0
fusion.loop_body.dim.0: ; preds = %fusion.loop_header.dim.0
%342 = sub i64 %fusion.indvar.dim.0, 0
%343 = icmp sge i64 %342, 0
%in_bounds = and i1 true, %343
%344 = urem i64 %342, 1
%345 = icmp eq i64 0, %344
%in_bounds86 = and i1 %in_bounds, %345
%346 = sdiv i64 %342, 1
%347 = icmp slt i64 %346, 4
%in_bounds87 = and i1 %in_bounds86, %347
br i1 %in_bounds87, label %in_bounds-true88, label %in_bounds-false89
in_bounds-after90: ; preds = %in_bounds-false89, %in_bounds-true88
%348 = load double, double* %pad_result_addr, align 8
%349 = sub i64 %fusion.indvar.dim.0, 8
%350 = icmp sge i64 %349, 0
%in_bounds91 = and i1 true, %350
%351 = urem i64 %349, 1
%352 = icmp eq i64 0, %351
%in_bounds92 = and i1 %in_bounds91, %352
%353 = sdiv i64 %349, 1
%354 = icmp slt i64 %353, 4
%in_bounds93 = and i1 %in_bounds92, %354
br i1 %in_bounds93, label %in_bounds-true95, label %in_bounds-false96
in_bounds-after97: ; preds = %in_bounds-false96, %in_bounds-true95
%355 = load double, double* %pad_result_addr94, align 8
%add.17 = fadd double %348, %355
%356 = sub i64 %fusion.indvar.dim.0, 4
%357 = icmp sge i64 %356, 0
%in_bounds99 = and i1 true, %357
%358 = urem i64 %356, 1
%359 = icmp eq i64 0, %358
%in_bounds100 = and i1 %in_bounds99, %359
%360 = sdiv i64 %356, 1
%361 = icmp slt i64 %360, 4
%in_bounds101 = and i1 %in_bounds100, %361
br i1 %in_bounds101, label %in_bounds-true103, label %in_bounds-false104
in_bounds-after105: ; preds = %in_bounds-false104, %in_bounds-true103
%362 = load double, double* %pad_result_addr102, align 8
%add.16 = fadd double %add.17, %362
%363 = getelementptr inbounds [12 x double], [12 x double]* %fusion, i64 0, i64 %fusion.indvar.dim.0
store double %add.16, double* %363, align 8, !alias.scope !90, !noalias !91
%invar.inc85 = add nuw nsw i64 %fusion.indvar.dim.0, 1
store i64 %invar.inc85, i64* %fusion.invar_address.dim.0, align 8
br label %fusion.loop_header.dim.0
fusion.loop_exit.dim.0: ; preds = %fusion.loop_header.dim.0
br label %return
in_bounds-true88: ; preds = %fusion.loop_body.dim.0
%364 = getelementptr inbounds [4 x double], [4 x double]* %reduce.8, i64 0, i64 %346
%365 = load double, double* %364, align 8, !alias.scope !77, !noalias !78
store double %365, double* %pad_result_addr, align 8
br label %in_bounds-after90
in_bounds-false89: ; preds = %fusion.loop_body.dim.0
%constant.108 = load double, double* bitcast ([8 x i8]* @12 to double*), align 8
store double %constant.108, double* %pad_result_addr, align 8
br label %in_bounds-after90
in_bounds-true95: ; preds = %in_bounds-after90
%366 = getelementptr inbounds [4 x double], [4 x double]* %reduce.12, i64 0, i64 %353
%367 = load double, double* %366, align 8, !alias.scope !88, !noalias !89
%368 = fneg double %367
%constant.107 = load double, double* bitcast ([8 x i8]* @15 to double*), align 8
%369 = add i64 %353, 8
%370 = getelementptr inbounds [12 x double], [12 x double]* %Arg_0.1, i64 0, i64 %369
%371 = load double, double* %370, align 8, !invariant.load !32, !noalias !36
%multiply.54 = fmul double %371, %371
%constant.109 = load double, double* bitcast ([8 x i8]* @14 to double*), align 8
%multiply.53 = fmul double %multiply.54, %constant.109
%372 = call double @llvm.sqrt.f64(double %multiply.53)
%373 = fdiv double 1.000000e+00, %372
%multiply.52 = fmul double %constant.107, %373
%multiply.51 = fmul double %368, %multiply.52
%multiply.50 = fmul double %multiply.51, %constant.109
%374 = getelementptr inbounds [4 x double], [4 x double]* %reduce.14, i64 0, i64 %353
%375 = load double, double* %374, align 8, !alias.scope !72, !noalias !73
%376 = fneg double %375
%constant.110 = load double, double* bitcast ([8 x i8]* @13 to double*), align 8
%multiply.49 = fmul double %376, %constant.110
%add.18 = fadd double %multiply.50, %multiply.49
%multiply.47 = fmul double %371, %constant.110
%multiply.46 = fmul double %add.18, %multiply.47
store double %multiply.46, double* %pad_result_addr94, align 8
br label %in_bounds-after97
in_bounds-false96: ; preds = %in_bounds-after90
%constant.10898 = load double, double* bitcast ([8 x i8]* @12 to double*), align 8
store double %constant.10898, double* %pad_result_addr94, align 8
br label %in_bounds-after97
in_bounds-true103: ; preds = %in_bounds-after97
%377 = getelementptr inbounds [4 x double], [4 x double]* %reduce.10, i64 0, i64 %360
%378 = load double, double* %377, align 8, !alias.scope !82, !noalias !83
%379 = fneg double %378
store double %379, double* %pad_result_addr102, align 8
br label %in_bounds-after105
in_bounds-false104: ; preds = %in_bounds-after97
%constant.108106 = load double, double* bitcast ([8 x i8]* @12 to double*), align 8
store double %constant.108106, double* %pad_result_addr102, align 8
br label %in_bounds-after105
}
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.exp.f64(double) #1
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare double @llvm.sqrt.f64(double) #1
attributes #0 = { uwtable "denormal-fp-math"="preserve-sign" "no-frame-pointer-elim"="false" }
attributes #1 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
!0 = !{i64 8}
!1 = !{!2}
!2 = !{!"buffer: {index:4, offset:0, size:8}", !3}
!3 = !{!"XLA global AA domain"}
!4 = !{!5}
!5 = !{!"buffer: {index:6, offset:0, size:8}", !3}
!6 = !{!7}
!7 = !{!"buffer: {index:5, offset:0, size:8}", !3}
!8 = !{!9}
!9 = !{!"buffer: {index:7, offset:0, size:8}", !3}
!10 = !{!11}
!11 = !{!"buffer: {index:9, offset:0, size:8}", !3}
!12 = !{!13}
!13 = !{!"buffer: {index:8, offset:0, size:8}", !3}
!14 = !{!15}
!15 = !{!"buffer: {index:10, offset:0, size:8}", !3}
!16 = !{!17}
!17 = !{!"buffer: {index:12, offset:0, size:8}", !3}
!18 = !{!19}
!19 = !{!"buffer: {index:11, offset:0, size:8}", !3}
!20 = !{!21}
!21 = !{!"buffer: {index:13, offset:0, size:8}", !3}
!22 = !{!23}
!23 = !{!"buffer: {index:15, offset:0, size:8}", !3}
!24 = !{!25}
!25 = !{!"buffer: {index:14, offset:0, size:8}", !3}
!26 = !{!27}
!27 = !{!"buffer: {index:16, offset:0, size:8}", !3}
!28 = !{!29}
!29 = !{!"buffer: {index:3, offset:0, size:8}", !3}
!30 = !{!31}
!31 = !{!"buffer: {index:17, offset:0, size:8}", !3}
!32 = !{}
!33 = !{i64 96}
!34 = !{i64 16}
!35 = !{i64 68512}
!36 = !{!37, !38, !39, !40, !41, !42, !43, !44, !45, !46, !47, !48}
!37 = !{!"buffer: {index:0, offset:0, size:32}", !3}
!38 = !{!"buffer: {index:0, offset:0, size:96}", !3}
!39 = !{!"buffer: {index:18, offset:0, size:32}", !3}
!40 = !{!"buffer: {index:18, offset:0, size:16000}", !3}
!41 = !{!"buffer: {index:18, offset:16000, size:16000}", !3}
!42 = !{!"buffer: {index:18, offset:32000, size:16000}", !3}
!43 = !{!"buffer: {index:18, offset:48000, size:16000}", !3}
!44 = !{!"buffer: {index:18, offset:48512, size:32}", !3}
!45 = !{!"buffer: {index:18, offset:48544, size:32}", !3}
!46 = !{!"buffer: {index:18, offset:48576, size:32}", !3}
!47 = !{!"buffer: {index:18, offset:64000, size:4000}", !3}
!48 = !{!"buffer: {index:18, offset:68000, size:32}", !3}
!49 = !{!40}
!50 = !{!37, !41, !42, !43, !47, !48}
!51 = !{!37}
!52 = !{!40, !41, !42, !47}
!53 = !{!42}
!54 = !{!37, !40, !47}
!55 = !{!47}
!56 = !{!37, !40, !41, !42}
!57 = !{!41}
!58 = !{!37, !40, !43, !47, !48}
!59 = !{!48}
!60 = !{!40, !41, !43}
!61 = !{!43}
!62 = !{!63, !40, !41, !48, !64}
!63 = !{!"buffer: {index:2, offset:0, size:8}", !3}
!64 = !{!"buffer: {index:18, offset:68000, size:512}", !3}
!65 = !{!63}
!66 = !{!39, !40, !67, !41, !68, !42, !69, !43, !44, !45, !46, !64}
!67 = !{!"buffer: {index:18, offset:16000, size:512}", !3}
!68 = !{!"buffer: {index:18, offset:32000, size:512}", !3}
!69 = !{!"buffer: {index:18, offset:48000, size:512}", !3}
!70 = !{!64}
!71 = !{!63, !43, !44}
!72 = !{!44}
!73 = !{!38, !63, !39, !45, !46, !64}
!74 = !{!63, !69, !47}
!75 = !{!69}
!76 = !{!63, !42, !45}
!77 = !{!45}
!78 = !{!38, !63, !39, !69, !44, !46}
!79 = !{!63, !40, !68}
!80 = !{!68}
!81 = !{!63, !41, !46}
!82 = !{!46}
!83 = !{!38, !63, !39, !68, !44, !45}
!84 = !{!40, !47}
!85 = !{!37, !63, !67, !47}
!86 = !{!67}
!87 = !{!63, !39, !40}
!88 = !{!39}
!89 = !{!38, !63, !67, !44, !45, !46}
!90 = !{!38}
!91 = !{!39, !44, !45, !46}
; ModuleID = '__compute_module'
source_filename = "__compute_module"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@0 = external dso_local unnamed_addr constant [4000 x i8]
; Function Attrs: nofree nosync nounwind uwtable
define void @main.253(i8* nocapture readnone %retval, i8* noalias nocapture readnone %run_options, i8** noalias nocapture readnone %params, i8** noalias nocapture readonly %buffer_table, i8* noalias nocapture readnone %status, i64* noalias nocapture readnone %prof_counters) local_unnamed_addr #0 {
entry:
%0 = getelementptr inbounds i8*, i8** %buffer_table, i64 1
%1 = bitcast i8** %0 to [12 x double]**
%2 = load [12 x double]*, [12 x double]** %1, align 8, !invariant.load !0, !dereferenceable !1, !align !2
%3 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%4 = load i8*, i8** %3, align 8, !invariant.load !0, !dereferenceable !3, !align !2
%fusion.11 = bitcast i8* %4 to [500 x [4 x double]]*
%5 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%6 = bitcast double* %5 to <4 x double>*
%wide.load = load <4 x double>, <4 x double>* %6, align 16, !invariant.load !0, !noalias !4
%7 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%8 = bitcast double* %7 to <4 x double>*
%wide.load231 = load <4 x double>, <4 x double>* %8, align 16, !invariant.load !0, !noalias !4
%9 = fmul <4 x double> %wide.load231, %wide.load231
%10 = fmul <4 x double> %9, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
br label %vector.ph
vector.ph: ; preds = %vector.ph, %entry
%fusion.11.invar_address.dim.0.0186 = phi i64 [ 0, %entry ], [ %invar.inc, %vector.ph ]
%constant.121 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @0 to [500 x double]*), i64 0, i64 %fusion.11.invar_address.dim.0.0186
%constant.1212 = load double, double* %constant.121, align 8
%broadcast.splatinsert = insertelement <4 x double> poison, double %constant.1212, i64 0
%broadcast.splat = shufflevector <4 x double> %broadcast.splatinsert, <4 x double> poison, <4 x i32> zeroinitializer
%11 = fsub <4 x double> %broadcast.splat, %wide.load
%12 = fneg <4 x double> %11
%13 = fmul <4 x double> %11, %12
%14 = fdiv <4 x double> %13, %10
%15 = call <4 x double> @llvm.exp.v4f64(<4 x double> %14)
%16 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.11.invar_address.dim.0.0186, i64 0
%17 = bitcast double* %16 to <4 x double>*
store <4 x double> %15, <4 x double>* %17, align 16, !alias.scope !18, !noalias !19
%invar.inc = add nuw nsw i64 %fusion.11.invar_address.dim.0.0186, 1
%exitcond224 = icmp eq i64 %invar.inc, 500
br i1 %exitcond224, label %fusion.11.loop_exit.dim.0, label %vector.ph
fusion.11.loop_exit.dim.0: ; preds = %vector.ph
%18 = load i8*, i8** %buffer_table, align 8, !invariant.load !0, !dereferenceable !1, !align !2
%19 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%20 = bitcast double* %19 to <4 x double>*
%wide.load239 = load <4 x double>, <4 x double>* %20, align 16, !invariant.load !0, !noalias !4
%21 = fmul <4 x double> %wide.load239, %wide.load239
%22 = fmul <4 x double> %21, <double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18>
%23 = call <4 x double> @llvm.sqrt.v4f64(<4 x double> %22)
%24 = bitcast i8* %18 to <4 x double>*
store <4 x double> %23, <4 x double>* %24, align 16, !alias.scope !20, !noalias !21
%25 = getelementptr inbounds i8, i8* %4, i64 32000
%fusion.9 = bitcast i8* %25 to [500 x [4 x double]]*
%26 = bitcast i8* %18 to <4 x double>*
%wide.load249 = load <4 x double>, <4 x double>* %26, align 16, !alias.scope !20, !noalias !21
%27 = bitcast i8* %18 to <4 x double>*
%wide.load249.1 = load <4 x double>, <4 x double>* %27, align 16, !alias.scope !20, !noalias !21
%28 = bitcast i8* %18 to <4 x double>*
%wide.load249.2 = load <4 x double>, <4 x double>* %28, align 16, !alias.scope !20, !noalias !21
%29 = bitcast i8* %18 to <4 x double>*
%wide.load249.3 = load <4 x double>, <4 x double>* %29, align 16, !alias.scope !20, !noalias !21
br label %vector.ph243
vector.ph243: ; preds = %vector.ph243, %fusion.11.loop_exit.dim.0
%fusion.9.invar_address.dim.0.0183 = phi i64 [ 0, %fusion.11.loop_exit.dim.0 ], [ %invar.inc4.3, %vector.ph243 ]
%30 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.9.invar_address.dim.0.0183, i64 0
%31 = bitcast double* %30 to <4 x double>*
%wide.load248 = load <4 x double>, <4 x double>* %31, align 16, !alias.scope !18, !noalias !19
%32 = fdiv <4 x double> %wide.load248, %wide.load249
%33 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.9.invar_address.dim.0.0183, i64 0
%34 = bitcast double* %33 to <4 x double>*
store <4 x double> %32, <4 x double>* %34, align 16, !alias.scope !22, !noalias !23
%invar.inc4 = or i64 %fusion.9.invar_address.dim.0.0183, 1
%35 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc4, i64 0
%36 = bitcast double* %35 to <4 x double>*
%wide.load248.1 = load <4 x double>, <4 x double>* %36, align 16, !alias.scope !18, !noalias !19
%37 = fdiv <4 x double> %wide.load248.1, %wide.load249.1
%38 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc4, i64 0
%39 = bitcast double* %38 to <4 x double>*
store <4 x double> %37, <4 x double>* %39, align 16, !alias.scope !22, !noalias !23
%invar.inc4.1 = or i64 %fusion.9.invar_address.dim.0.0183, 2
%40 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc4.1, i64 0
%41 = bitcast double* %40 to <4 x double>*
%wide.load248.2 = load <4 x double>, <4 x double>* %41, align 16, !alias.scope !18, !noalias !19
%42 = fdiv <4 x double> %wide.load248.2, %wide.load249.2
%43 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc4.1, i64 0
%44 = bitcast double* %43 to <4 x double>*
store <4 x double> %42, <4 x double>* %44, align 16, !alias.scope !22, !noalias !23
%invar.inc4.2 = or i64 %fusion.9.invar_address.dim.0.0183, 3
%45 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc4.2, i64 0
%46 = bitcast double* %45 to <4 x double>*
%wide.load248.3 = load <4 x double>, <4 x double>* %46, align 16, !alias.scope !18, !noalias !19
%47 = fdiv <4 x double> %wide.load248.3, %wide.load249.3
%48 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc4.2, i64 0
%49 = bitcast double* %48 to <4 x double>*
store <4 x double> %47, <4 x double>* %49, align 16, !alias.scope !22, !noalias !23
%invar.inc4.3 = add nuw nsw i64 %fusion.9.invar_address.dim.0.0183, 4
%exitcond221.3 = icmp eq i64 %invar.inc4.3, 500
br i1 %exitcond221.3, label %fusion.9.loop_exit.dim.0, label %vector.ph243
fusion.9.loop_exit.dim.0: ; preds = %vector.ph243
%50 = getelementptr inbounds i8, i8* %4, i64 64000
%fusion.8 = bitcast i8* %50 to [500 x double]*
%51 = bitcast [12 x double]* %2 to <4 x double>*
%wide.load259 = load <4 x double>, <4 x double>* %51, align 16, !invariant.load !0, !noalias !4
%52 = bitcast [12 x double]* %2 to <4 x double>*
%wide.load259.1 = load <4 x double>, <4 x double>* %52, align 16, !invariant.load !0, !noalias !4
br label %vector.ph253
vector.ph253: ; preds = %vector.ph253, %fusion.9.loop_exit.dim.0
%fusion.8.invar_address.dim.0.0181 = phi i64 [ 0, %fusion.9.loop_exit.dim.0 ], [ %invar.inc6.1, %vector.ph253 ]
%53 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.8.invar_address.dim.0.0181, i64 0
%54 = bitcast double* %53 to <4 x double>*
%wide.load258 = load <4 x double>, <4 x double>* %54, align 16, !alias.scope !22, !noalias !23
%55 = fmul <4 x double> %wide.load258, %wide.load259
%56 = fadd reassoc <4 x double> %55, <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%57 = call reassoc double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %56)
%divide.21 = fdiv double 1.000000e+00, %57
%58 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.8.invar_address.dim.0.0181
store double %divide.21, double* %58, align 16, !alias.scope !24, !noalias !25
%invar.inc6 = or i64 %fusion.8.invar_address.dim.0.0181, 1
%59 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc6, i64 0
%60 = bitcast double* %59 to <4 x double>*
%wide.load258.1 = load <4 x double>, <4 x double>* %60, align 16, !alias.scope !22, !noalias !23
%61 = fmul <4 x double> %wide.load258.1, %wide.load259.1
%62 = fadd reassoc <4 x double> %61, <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%63 = call reassoc double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %62)
%divide.21.1 = fdiv double 1.000000e+00, %63
%64 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc6
store double %divide.21.1, double* %64, align 8, !alias.scope !24, !noalias !25
%invar.inc6.1 = add nuw nsw i64 %fusion.8.invar_address.dim.0.0181, 2
%exitcond219.1 = icmp eq i64 %invar.inc6.1, 500
br i1 %exitcond219.1, label %fusion.8.loop_exit.dim.0, label %vector.ph253
fusion.8.loop_exit.dim.0: ; preds = %vector.ph253
%65 = getelementptr inbounds i8, i8* %4, i64 16000
%fusion.4 = bitcast i8* %65 to [500 x [4 x double]]*
%66 = bitcast [12 x double]* %2 to <4 x double>*
%wide.load268 = load <4 x double>, <4 x double>* %66, align 16, !invariant.load !0, !noalias !4
%67 = bitcast i8* %18 to <4 x double>*
%wide.load271 = load <4 x double>, <4 x double>* %67, align 16, !alias.scope !20, !noalias !21
%wide.load268.1 = load <4 x double>, <4 x double>* %66, align 16, !invariant.load !0, !noalias !4
%68 = bitcast i8* %18 to <4 x double>*
%wide.load271.1 = load <4 x double>, <4 x double>* %68, align 16, !alias.scope !20, !noalias !21
br label %vector.ph263
vector.ph263: ; preds = %vector.ph263, %fusion.8.loop_exit.dim.0
%fusion.4.invar_address.dim.0.0178 = phi i64 [ 0, %fusion.8.loop_exit.dim.0 ], [ %invar.inc9.1, %vector.ph263 ]
%69 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.4.invar_address.dim.0.0178
%70 = load double, double* %69, align 16, !alias.scope !24, !noalias !25
%broadcast.splatinsert269 = insertelement <4 x double> poison, double %70, i64 0
%broadcast.splat270 = shufflevector <4 x double> %broadcast.splatinsert269, <4 x double> poison, <4 x i32> zeroinitializer
%71 = fmul <4 x double> %broadcast.splat270, %wide.load268
%72 = fdiv <4 x double> %71, %wide.load271
%73 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.4.invar_address.dim.0.0178, i64 0
%74 = bitcast double* %73 to <4 x double>*
store <4 x double> %72, <4 x double>* %74, align 16, !alias.scope !26, !noalias !27
%invar.inc9 = or i64 %fusion.4.invar_address.dim.0.0178, 1
%75 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc9
%76 = load double, double* %75, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert269.1 = insertelement <4 x double> poison, double %76, i64 0
%broadcast.splat270.1 = shufflevector <4 x double> %broadcast.splatinsert269.1, <4 x double> poison, <4 x i32> zeroinitializer
%77 = fmul <4 x double> %broadcast.splat270.1, %wide.load268.1
%78 = fdiv <4 x double> %77, %wide.load271.1
%79 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %invar.inc9, i64 0
%80 = bitcast double* %79 to <4 x double>*
store <4 x double> %78, <4 x double>* %80, align 16, !alias.scope !26, !noalias !27
%invar.inc9.1 = add nuw nsw i64 %fusion.4.invar_address.dim.0.0178, 2
%exitcond217.1 = icmp eq i64 %invar.inc9.1, 500
br i1 %exitcond217.1, label %fusion.4.loop_exit.dim.0, label %vector.ph263
fusion.4.loop_exit.dim.0: ; preds = %vector.ph263
%81 = getelementptr inbounds i8, i8* %4, i64 68000
%82 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%83 = bitcast double* %82 to <4 x double>*
%wide.load280 = load <4 x double>, <4 x double>* %83, align 16, !invariant.load !0, !noalias !4
%84 = fmul <4 x double> %wide.load280, %wide.load280
%85 = fmul <4 x double> %84, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%86 = fmul <4 x double> %85, %85
%87 = fdiv <4 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>, %86
%88 = bitcast i8* %81 to <4 x double>*
store <4 x double> %87, <4 x double>* %88, align 16, !alias.scope !28, !noalias !29
%89 = getelementptr inbounds i8, i8* %4, i64 48000
%fusion.2 = bitcast i8* %89 to [500 x [4 x double]]*
%90 = bitcast i8* %81 to <4 x double>*
%wide.load291 = load <4 x double>, <4 x double>* %90, align 16, !alias.scope !28, !noalias !29
%91 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%92 = bitcast double* %91 to <4 x double>*
%wide.load292 = load <4 x double>, <4 x double>* %92, align 16, !invariant.load !0, !noalias !4
%93 = bitcast i8* %81 to <4 x double>*
%wide.load291.1 = load <4 x double>, <4 x double>* %93, align 16, !alias.scope !28, !noalias !29
%94 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%95 = bitcast double* %94 to <4 x double>*
%wide.load292.1 = load <4 x double>, <4 x double>* %95, align 16, !invariant.load !0, !noalias !4
br label %vector.ph284
vector.ph284: ; preds = %vector.ph284, %fusion.4.loop_exit.dim.0
%fusion.2.invar_address.dim.0.0175 = phi i64 [ 0, %fusion.4.loop_exit.dim.0 ], [ %invar.inc12.1, %vector.ph284 ]
%constant.113 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @0 to [500 x double]*), i64 0, i64 %fusion.2.invar_address.dim.0.0175
%constant.11314 = load double, double* %constant.113, align 16
%broadcast.splatinsert293 = insertelement <4 x double> poison, double %constant.11314, i64 0
%broadcast.splat294 = shufflevector <4 x double> %broadcast.splatinsert293, <4 x double> poison, <4 x i32> zeroinitializer
%96 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.2.invar_address.dim.0.0175, i64 0
%97 = bitcast double* %96 to <4 x double>*
%wide.load289 = load <4 x double>, <4 x double>* %97, align 16, !alias.scope !26, !noalias !27
%98 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.2.invar_address.dim.0.0175, i64 0
%99 = bitcast double* %98 to <4 x double>*
%wide.load290 = load <4 x double>, <4 x double>* %99, align 16, !alias.scope !18, !noalias !19
%100 = fmul <4 x double> %wide.load289, %wide.load290
%101 = fmul <4 x double> %100, %wide.load291
%102 = fsub <4 x double> %broadcast.splat294, %wide.load292
%103 = fneg <4 x double> %102
%104 = fmul <4 x double> %102, %103
%105 = fmul <4 x double> %101, %104
%106 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %fusion.2.invar_address.dim.0.0175, i64 0
%107 = bitcast double* %106 to <4 x double>*
store <4 x double> %105, <4 x double>* %107, align 16, !alias.scope !30, !noalias !31
%invar.inc12 = or i64 %fusion.2.invar_address.dim.0.0175, 1
%constant.113.1 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @0 to [500 x double]*), i64 0, i64 %invar.inc12
%constant.11314.1 = load double, double* %constant.113.1, align 8
%broadcast.splatinsert293.1 = insertelement <4 x double> poison, double %constant.11314.1, i64 0
%broadcast.splat294.1 = shufflevector <4 x double> %broadcast.splatinsert293.1, <4 x double> poison, <4 x i32> zeroinitializer
%108 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %invar.inc12, i64 0
%109 = bitcast double* %108 to <4 x double>*
%wide.load289.1 = load <4 x double>, <4 x double>* %109, align 16, !alias.scope !26, !noalias !27
%110 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc12, i64 0
%111 = bitcast double* %110 to <4 x double>*
%wide.load290.1 = load <4 x double>, <4 x double>* %111, align 16, !alias.scope !18, !noalias !19
%112 = fmul <4 x double> %wide.load289.1, %wide.load290.1
%113 = fmul <4 x double> %112, %wide.load291.1
%114 = fsub <4 x double> %broadcast.splat294.1, %wide.load292.1
%115 = fneg <4 x double> %114
%116 = fmul <4 x double> %114, %115
%117 = fmul <4 x double> %113, %116
%118 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %invar.inc12, i64 0
%119 = bitcast double* %118 to <4 x double>*
store <4 x double> %117, <4 x double>* %119, align 16, !alias.scope !30, !noalias !31
%invar.inc12.1 = add nuw nsw i64 %fusion.2.invar_address.dim.0.0175, 2
%exitcond214.1 = icmp eq i64 %invar.inc12.1, 500
br i1 %exitcond214.1, label %fusion.2.loop_exit.dim.0, label %vector.ph284
fusion.2.loop_exit.dim.0: ; preds = %vector.ph284
%reduce-window.2 = bitcast i8* %81 to [16 x [4 x double]]*
br label %reduce-window.2.loop_header.dim.1.preheader
reduce-window.2.loop_header.dim.1.preheader: ; preds = %reduce-window.2.loop_exit.dim.1, %fusion.2.loop_exit.dim.0
%reduce-window.2.invar_address.dim.0.0173 = phi i64 [ 0, %fusion.2.loop_exit.dim.0 ], [ %invar.inc15, %reduce-window.2.loop_exit.dim.1 ]
%120 = shl nsw i64 %reduce-window.2.invar_address.dim.0.0173, 5
%121 = add nsw i64 %120, -6
%122 = icmp ult i64 %121, 500
%123 = add nsw i64 %120, -5
%124 = icmp ult i64 %123, 500
%125 = add nsw i64 %120, -4
%126 = icmp ult i64 %125, 500
%127 = add nsw i64 %120, -3
%128 = icmp ult i64 %127, 500
%129 = add nsw i64 %120, -2
%130 = icmp ult i64 %129, 500
%131 = add nsw i64 %120, -1
%132 = icmp ult i64 %131, 500
%133 = icmp ult i64 %120, 500
%134 = or i64 %120, 1
%135 = icmp ult i64 %134, 500
%136 = or i64 %120, 2
%137 = icmp ult i64 %136, 500
%138 = or i64 %120, 3
%139 = icmp ult i64 %138, 500
%140 = or i64 %120, 4
%141 = icmp ult i64 %140, 500
%142 = or i64 %120, 5
%143 = icmp ult i64 %142, 500
%144 = or i64 %120, 6
%145 = icmp ult i64 %144, 500
%146 = or i64 %120, 7
%147 = icmp ult i64 %146, 500
%148 = or i64 %120, 8
%149 = icmp ult i64 %148, 500
%150 = or i64 %120, 9
%151 = icmp ult i64 %150, 500
%152 = or i64 %120, 10
%153 = icmp ult i64 %152, 500
%154 = or i64 %120, 11
%155 = icmp ult i64 %154, 500
%156 = or i64 %120, 12
%157 = icmp ult i64 %156, 500
%158 = or i64 %120, 13
%159 = icmp ult i64 %158, 500
%160 = or i64 %120, 14
%161 = icmp ult i64 %160, 500
%162 = or i64 %120, 15
%163 = icmp ult i64 %162, 500
%164 = or i64 %120, 16
%165 = icmp ult i64 %164, 500
%166 = or i64 %120, 17
%167 = icmp ult i64 %166, 500
%168 = or i64 %120, 18
%169 = icmp ult i64 %168, 500
%170 = or i64 %120, 19
%171 = icmp ult i64 %170, 500
%172 = or i64 %120, 20
%173 = icmp ult i64 %172, 500
%174 = or i64 %120, 21
%175 = icmp ult i64 %174, 500
%176 = or i64 %120, 22
%177 = icmp ult i64 %176, 500
%178 = or i64 %120, 23
%179 = icmp ult i64 %178, 500
%180 = or i64 %120, 24
%181 = icmp ult i64 %180, 500
%182 = or i64 %120, 25
%183 = icmp ult i64 %182, 500
br label %reduce-window.2.loop_header.window.0.preheader
reduce-window.2.loop_header.window.0.preheader: ; preds = %reduce-window.2.loop_exit.window.1.31, %reduce-window.2.loop_header.dim.1.preheader
%reduce-window.2.invar_address.dim.1.0172 = phi i64 [ 0, %reduce-window.2.loop_header.dim.1.preheader ], [ %invar.inc16, %reduce-window.2.loop_exit.window.1.31 ]
br i1 %122, label %in_bounds-true.us, label %reduce-window.2.loop_exit.window.1
in_bounds-true.us: ; preds = %reduce-window.2.loop_header.window.0.preheader
%184 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %121, i64 %reduce-window.2.invar_address.dim.1.0172
%185 = load double, double* %184, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us = fadd reassoc double %185, 0.000000e+00
br label %reduce-window.2.loop_exit.window.1
reduce-window.2.loop_exit.window.1: ; preds = %in_bounds-true.us, %reduce-window.2.loop_header.window.0.preheader
%reduce_window_accum_ptr.1.lcssa = phi double [ %add.1361.i.us, %in_bounds-true.us ], [ 0.000000e+00, %reduce-window.2.loop_header.window.0.preheader ]
br i1 %124, label %in_bounds-true.us.1, label %reduce-window.2.loop_exit.window.1.1
in_bounds-true.us.1: ; preds = %reduce-window.2.loop_exit.window.1
%186 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %123, i64 %reduce-window.2.invar_address.dim.1.0172
%187 = load double, double* %186, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.1 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa, %187
br label %reduce-window.2.loop_exit.window.1.1
reduce-window.2.loop_exit.window.1.1: ; preds = %in_bounds-true.us.1, %reduce-window.2.loop_exit.window.1
%reduce_window_accum_ptr.1.lcssa.1 = phi double [ %add.1361.i.us.1, %in_bounds-true.us.1 ], [ %reduce_window_accum_ptr.1.lcssa, %reduce-window.2.loop_exit.window.1 ]
br i1 %126, label %in_bounds-true.us.2, label %reduce-window.2.loop_exit.window.1.2
in_bounds-true.us.2: ; preds = %reduce-window.2.loop_exit.window.1.1
%188 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %125, i64 %reduce-window.2.invar_address.dim.1.0172
%189 = load double, double* %188, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.2 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.1, %189
br label %reduce-window.2.loop_exit.window.1.2
reduce-window.2.loop_exit.window.1.2: ; preds = %in_bounds-true.us.2, %reduce-window.2.loop_exit.window.1.1
%reduce_window_accum_ptr.1.lcssa.2 = phi double [ %add.1361.i.us.2, %in_bounds-true.us.2 ], [ %reduce_window_accum_ptr.1.lcssa.1, %reduce-window.2.loop_exit.window.1.1 ]
br i1 %128, label %in_bounds-true.us.3, label %reduce-window.2.loop_exit.window.1.3
in_bounds-true.us.3: ; preds = %reduce-window.2.loop_exit.window.1.2
%190 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %127, i64 %reduce-window.2.invar_address.dim.1.0172
%191 = load double, double* %190, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.3 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.2, %191
br label %reduce-window.2.loop_exit.window.1.3
reduce-window.2.loop_exit.window.1.3: ; preds = %in_bounds-true.us.3, %reduce-window.2.loop_exit.window.1.2
%reduce_window_accum_ptr.1.lcssa.3 = phi double [ %add.1361.i.us.3, %in_bounds-true.us.3 ], [ %reduce_window_accum_ptr.1.lcssa.2, %reduce-window.2.loop_exit.window.1.2 ]
br i1 %130, label %in_bounds-true.us.4, label %reduce-window.2.loop_exit.window.1.4
in_bounds-true.us.4: ; preds = %reduce-window.2.loop_exit.window.1.3
%192 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %129, i64 %reduce-window.2.invar_address.dim.1.0172
%193 = load double, double* %192, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.4 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.3, %193
br label %reduce-window.2.loop_exit.window.1.4
reduce-window.2.loop_exit.window.1.4: ; preds = %in_bounds-true.us.4, %reduce-window.2.loop_exit.window.1.3
%reduce_window_accum_ptr.1.lcssa.4 = phi double [ %add.1361.i.us.4, %in_bounds-true.us.4 ], [ %reduce_window_accum_ptr.1.lcssa.3, %reduce-window.2.loop_exit.window.1.3 ]
br i1 %132, label %in_bounds-true.us.5, label %reduce-window.2.loop_exit.window.1.5
in_bounds-true.us.5: ; preds = %reduce-window.2.loop_exit.window.1.4
%194 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %131, i64 %reduce-window.2.invar_address.dim.1.0172
%195 = load double, double* %194, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.5 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.4, %195
br label %reduce-window.2.loop_exit.window.1.5
reduce-window.2.loop_exit.window.1.5: ; preds = %in_bounds-true.us.5, %reduce-window.2.loop_exit.window.1.4
%reduce_window_accum_ptr.1.lcssa.5 = phi double [ %add.1361.i.us.5, %in_bounds-true.us.5 ], [ %reduce_window_accum_ptr.1.lcssa.4, %reduce-window.2.loop_exit.window.1.4 ]
br i1 %133, label %in_bounds-true.us.6, label %reduce-window.2.loop_exit.window.1.6
in_bounds-true.us.6: ; preds = %reduce-window.2.loop_exit.window.1.5
%196 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %120, i64 %reduce-window.2.invar_address.dim.1.0172
%197 = load double, double* %196, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.6 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.5, %197
br label %reduce-window.2.loop_exit.window.1.6
reduce-window.2.loop_exit.window.1.6: ; preds = %in_bounds-true.us.6, %reduce-window.2.loop_exit.window.1.5
%reduce_window_accum_ptr.1.lcssa.6 = phi double [ %add.1361.i.us.6, %in_bounds-true.us.6 ], [ %reduce_window_accum_ptr.1.lcssa.5, %reduce-window.2.loop_exit.window.1.5 ]
br i1 %135, label %in_bounds-true.us.7, label %reduce-window.2.loop_exit.window.1.7
in_bounds-true.us.7: ; preds = %reduce-window.2.loop_exit.window.1.6
%198 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %134, i64 %reduce-window.2.invar_address.dim.1.0172
%199 = load double, double* %198, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.7 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.6, %199
br label %reduce-window.2.loop_exit.window.1.7
reduce-window.2.loop_exit.window.1.7: ; preds = %in_bounds-true.us.7, %reduce-window.2.loop_exit.window.1.6
%reduce_window_accum_ptr.1.lcssa.7 = phi double [ %add.1361.i.us.7, %in_bounds-true.us.7 ], [ %reduce_window_accum_ptr.1.lcssa.6, %reduce-window.2.loop_exit.window.1.6 ]
br i1 %137, label %in_bounds-true.us.8, label %reduce-window.2.loop_exit.window.1.8
in_bounds-true.us.8: ; preds = %reduce-window.2.loop_exit.window.1.7
%200 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %136, i64 %reduce-window.2.invar_address.dim.1.0172
%201 = load double, double* %200, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.8 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.7, %201
br label %reduce-window.2.loop_exit.window.1.8
reduce-window.2.loop_exit.window.1.8: ; preds = %in_bounds-true.us.8, %reduce-window.2.loop_exit.window.1.7
%reduce_window_accum_ptr.1.lcssa.8 = phi double [ %add.1361.i.us.8, %in_bounds-true.us.8 ], [ %reduce_window_accum_ptr.1.lcssa.7, %reduce-window.2.loop_exit.window.1.7 ]
br i1 %139, label %in_bounds-true.us.9, label %reduce-window.2.loop_exit.window.1.9
in_bounds-true.us.9: ; preds = %reduce-window.2.loop_exit.window.1.8
%202 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %138, i64 %reduce-window.2.invar_address.dim.1.0172
%203 = load double, double* %202, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.9 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.8, %203
br label %reduce-window.2.loop_exit.window.1.9
reduce-window.2.loop_exit.window.1.9: ; preds = %in_bounds-true.us.9, %reduce-window.2.loop_exit.window.1.8
%reduce_window_accum_ptr.1.lcssa.9 = phi double [ %add.1361.i.us.9, %in_bounds-true.us.9 ], [ %reduce_window_accum_ptr.1.lcssa.8, %reduce-window.2.loop_exit.window.1.8 ]
br i1 %141, label %in_bounds-true.us.10, label %reduce-window.2.loop_exit.window.1.10
in_bounds-true.us.10: ; preds = %reduce-window.2.loop_exit.window.1.9
%204 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %140, i64 %reduce-window.2.invar_address.dim.1.0172
%205 = load double, double* %204, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.10 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.9, %205
br label %reduce-window.2.loop_exit.window.1.10
reduce-window.2.loop_exit.window.1.10: ; preds = %in_bounds-true.us.10, %reduce-window.2.loop_exit.window.1.9
%reduce_window_accum_ptr.1.lcssa.10 = phi double [ %add.1361.i.us.10, %in_bounds-true.us.10 ], [ %reduce_window_accum_ptr.1.lcssa.9, %reduce-window.2.loop_exit.window.1.9 ]
br i1 %143, label %in_bounds-true.us.11, label %reduce-window.2.loop_exit.window.1.11
in_bounds-true.us.11: ; preds = %reduce-window.2.loop_exit.window.1.10
%206 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %142, i64 %reduce-window.2.invar_address.dim.1.0172
%207 = load double, double* %206, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.11 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.10, %207
br label %reduce-window.2.loop_exit.window.1.11
reduce-window.2.loop_exit.window.1.11: ; preds = %in_bounds-true.us.11, %reduce-window.2.loop_exit.window.1.10
%reduce_window_accum_ptr.1.lcssa.11 = phi double [ %add.1361.i.us.11, %in_bounds-true.us.11 ], [ %reduce_window_accum_ptr.1.lcssa.10, %reduce-window.2.loop_exit.window.1.10 ]
br i1 %145, label %in_bounds-true.us.12, label %reduce-window.2.loop_exit.window.1.12
in_bounds-true.us.12: ; preds = %reduce-window.2.loop_exit.window.1.11
%208 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %144, i64 %reduce-window.2.invar_address.dim.1.0172
%209 = load double, double* %208, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.12 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.11, %209
br label %reduce-window.2.loop_exit.window.1.12
reduce-window.2.loop_exit.window.1.12: ; preds = %in_bounds-true.us.12, %reduce-window.2.loop_exit.window.1.11
%reduce_window_accum_ptr.1.lcssa.12 = phi double [ %add.1361.i.us.12, %in_bounds-true.us.12 ], [ %reduce_window_accum_ptr.1.lcssa.11, %reduce-window.2.loop_exit.window.1.11 ]
br i1 %147, label %in_bounds-true.us.13, label %reduce-window.2.loop_exit.window.1.13
in_bounds-true.us.13: ; preds = %reduce-window.2.loop_exit.window.1.12
%210 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %146, i64 %reduce-window.2.invar_address.dim.1.0172
%211 = load double, double* %210, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.13 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.12, %211
br label %reduce-window.2.loop_exit.window.1.13
reduce-window.2.loop_exit.window.1.13: ; preds = %in_bounds-true.us.13, %reduce-window.2.loop_exit.window.1.12
%reduce_window_accum_ptr.1.lcssa.13 = phi double [ %add.1361.i.us.13, %in_bounds-true.us.13 ], [ %reduce_window_accum_ptr.1.lcssa.12, %reduce-window.2.loop_exit.window.1.12 ]
br i1 %149, label %in_bounds-true.us.14, label %reduce-window.2.loop_exit.window.1.14
in_bounds-true.us.14: ; preds = %reduce-window.2.loop_exit.window.1.13
%212 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %148, i64 %reduce-window.2.invar_address.dim.1.0172
%213 = load double, double* %212, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.14 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.13, %213
br label %reduce-window.2.loop_exit.window.1.14
reduce-window.2.loop_exit.window.1.14: ; preds = %in_bounds-true.us.14, %reduce-window.2.loop_exit.window.1.13
%reduce_window_accum_ptr.1.lcssa.14 = phi double [ %add.1361.i.us.14, %in_bounds-true.us.14 ], [ %reduce_window_accum_ptr.1.lcssa.13, %reduce-window.2.loop_exit.window.1.13 ]
br i1 %151, label %in_bounds-true.us.15, label %reduce-window.2.loop_exit.window.1.15
in_bounds-true.us.15: ; preds = %reduce-window.2.loop_exit.window.1.14
%214 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %150, i64 %reduce-window.2.invar_address.dim.1.0172
%215 = load double, double* %214, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.15 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.14, %215
br label %reduce-window.2.loop_exit.window.1.15
reduce-window.2.loop_exit.window.1.15: ; preds = %in_bounds-true.us.15, %reduce-window.2.loop_exit.window.1.14
%reduce_window_accum_ptr.1.lcssa.15 = phi double [ %add.1361.i.us.15, %in_bounds-true.us.15 ], [ %reduce_window_accum_ptr.1.lcssa.14, %reduce-window.2.loop_exit.window.1.14 ]
br i1 %153, label %in_bounds-true.us.16, label %reduce-window.2.loop_exit.window.1.16
in_bounds-true.us.16: ; preds = %reduce-window.2.loop_exit.window.1.15
%216 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %152, i64 %reduce-window.2.invar_address.dim.1.0172
%217 = load double, double* %216, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.16 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.15, %217
br label %reduce-window.2.loop_exit.window.1.16
reduce-window.2.loop_exit.window.1.16: ; preds = %in_bounds-true.us.16, %reduce-window.2.loop_exit.window.1.15
%reduce_window_accum_ptr.1.lcssa.16 = phi double [ %add.1361.i.us.16, %in_bounds-true.us.16 ], [ %reduce_window_accum_ptr.1.lcssa.15, %reduce-window.2.loop_exit.window.1.15 ]
br i1 %155, label %in_bounds-true.us.17, label %reduce-window.2.loop_exit.window.1.17
in_bounds-true.us.17: ; preds = %reduce-window.2.loop_exit.window.1.16
%218 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %154, i64 %reduce-window.2.invar_address.dim.1.0172
%219 = load double, double* %218, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.17 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.16, %219
br label %reduce-window.2.loop_exit.window.1.17
reduce-window.2.loop_exit.window.1.17: ; preds = %in_bounds-true.us.17, %reduce-window.2.loop_exit.window.1.16
%reduce_window_accum_ptr.1.lcssa.17 = phi double [ %add.1361.i.us.17, %in_bounds-true.us.17 ], [ %reduce_window_accum_ptr.1.lcssa.16, %reduce-window.2.loop_exit.window.1.16 ]
br i1 %157, label %in_bounds-true.us.18, label %reduce-window.2.loop_exit.window.1.18
in_bounds-true.us.18: ; preds = %reduce-window.2.loop_exit.window.1.17
%220 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %156, i64 %reduce-window.2.invar_address.dim.1.0172
%221 = load double, double* %220, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.18 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.17, %221
br label %reduce-window.2.loop_exit.window.1.18
reduce-window.2.loop_exit.window.1.18: ; preds = %in_bounds-true.us.18, %reduce-window.2.loop_exit.window.1.17
%reduce_window_accum_ptr.1.lcssa.18 = phi double [ %add.1361.i.us.18, %in_bounds-true.us.18 ], [ %reduce_window_accum_ptr.1.lcssa.17, %reduce-window.2.loop_exit.window.1.17 ]
br i1 %159, label %in_bounds-true.us.19, label %reduce-window.2.loop_exit.window.1.19
in_bounds-true.us.19: ; preds = %reduce-window.2.loop_exit.window.1.18
%222 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %158, i64 %reduce-window.2.invar_address.dim.1.0172
%223 = load double, double* %222, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.19 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.18, %223
br label %reduce-window.2.loop_exit.window.1.19
reduce-window.2.loop_exit.window.1.19: ; preds = %in_bounds-true.us.19, %reduce-window.2.loop_exit.window.1.18
%reduce_window_accum_ptr.1.lcssa.19 = phi double [ %add.1361.i.us.19, %in_bounds-true.us.19 ], [ %reduce_window_accum_ptr.1.lcssa.18, %reduce-window.2.loop_exit.window.1.18 ]
br i1 %161, label %in_bounds-true.us.20, label %reduce-window.2.loop_exit.window.1.20
in_bounds-true.us.20: ; preds = %reduce-window.2.loop_exit.window.1.19
%224 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %160, i64 %reduce-window.2.invar_address.dim.1.0172
%225 = load double, double* %224, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.20 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.19, %225
br label %reduce-window.2.loop_exit.window.1.20
reduce-window.2.loop_exit.window.1.20: ; preds = %in_bounds-true.us.20, %reduce-window.2.loop_exit.window.1.19
%reduce_window_accum_ptr.1.lcssa.20 = phi double [ %add.1361.i.us.20, %in_bounds-true.us.20 ], [ %reduce_window_accum_ptr.1.lcssa.19, %reduce-window.2.loop_exit.window.1.19 ]
br i1 %163, label %in_bounds-true.us.21, label %reduce-window.2.loop_exit.window.1.21
in_bounds-true.us.21: ; preds = %reduce-window.2.loop_exit.window.1.20
%226 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %162, i64 %reduce-window.2.invar_address.dim.1.0172
%227 = load double, double* %226, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.21 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.20, %227
br label %reduce-window.2.loop_exit.window.1.21
reduce-window.2.loop_exit.window.1.21: ; preds = %in_bounds-true.us.21, %reduce-window.2.loop_exit.window.1.20
%reduce_window_accum_ptr.1.lcssa.21 = phi double [ %add.1361.i.us.21, %in_bounds-true.us.21 ], [ %reduce_window_accum_ptr.1.lcssa.20, %reduce-window.2.loop_exit.window.1.20 ]
br i1 %165, label %in_bounds-true.us.22, label %reduce-window.2.loop_exit.window.1.22
in_bounds-true.us.22: ; preds = %reduce-window.2.loop_exit.window.1.21
%228 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %164, i64 %reduce-window.2.invar_address.dim.1.0172
%229 = load double, double* %228, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.22 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.21, %229
br label %reduce-window.2.loop_exit.window.1.22
reduce-window.2.loop_exit.window.1.22: ; preds = %in_bounds-true.us.22, %reduce-window.2.loop_exit.window.1.21
%reduce_window_accum_ptr.1.lcssa.22 = phi double [ %add.1361.i.us.22, %in_bounds-true.us.22 ], [ %reduce_window_accum_ptr.1.lcssa.21, %reduce-window.2.loop_exit.window.1.21 ]
br i1 %167, label %in_bounds-true.us.23, label %reduce-window.2.loop_exit.window.1.23
in_bounds-true.us.23: ; preds = %reduce-window.2.loop_exit.window.1.22
%230 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %166, i64 %reduce-window.2.invar_address.dim.1.0172
%231 = load double, double* %230, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.23 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.22, %231
br label %reduce-window.2.loop_exit.window.1.23
reduce-window.2.loop_exit.window.1.23: ; preds = %in_bounds-true.us.23, %reduce-window.2.loop_exit.window.1.22
%reduce_window_accum_ptr.1.lcssa.23 = phi double [ %add.1361.i.us.23, %in_bounds-true.us.23 ], [ %reduce_window_accum_ptr.1.lcssa.22, %reduce-window.2.loop_exit.window.1.22 ]
br i1 %169, label %in_bounds-true.us.24, label %reduce-window.2.loop_exit.window.1.24
in_bounds-true.us.24: ; preds = %reduce-window.2.loop_exit.window.1.23
%232 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %168, i64 %reduce-window.2.invar_address.dim.1.0172
%233 = load double, double* %232, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.24 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.23, %233
br label %reduce-window.2.loop_exit.window.1.24
reduce-window.2.loop_exit.window.1.24: ; preds = %in_bounds-true.us.24, %reduce-window.2.loop_exit.window.1.23
%reduce_window_accum_ptr.1.lcssa.24 = phi double [ %add.1361.i.us.24, %in_bounds-true.us.24 ], [ %reduce_window_accum_ptr.1.lcssa.23, %reduce-window.2.loop_exit.window.1.23 ]
br i1 %171, label %in_bounds-true.us.25, label %reduce-window.2.loop_exit.window.1.25
in_bounds-true.us.25: ; preds = %reduce-window.2.loop_exit.window.1.24
%234 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %170, i64 %reduce-window.2.invar_address.dim.1.0172
%235 = load double, double* %234, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.25 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.24, %235
br label %reduce-window.2.loop_exit.window.1.25
reduce-window.2.loop_exit.window.1.25: ; preds = %in_bounds-true.us.25, %reduce-window.2.loop_exit.window.1.24
%reduce_window_accum_ptr.1.lcssa.25 = phi double [ %add.1361.i.us.25, %in_bounds-true.us.25 ], [ %reduce_window_accum_ptr.1.lcssa.24, %reduce-window.2.loop_exit.window.1.24 ]
br i1 %173, label %in_bounds-true.us.26, label %reduce-window.2.loop_exit.window.1.26
in_bounds-true.us.26: ; preds = %reduce-window.2.loop_exit.window.1.25
%236 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %172, i64 %reduce-window.2.invar_address.dim.1.0172
%237 = load double, double* %236, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.26 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.25, %237
br label %reduce-window.2.loop_exit.window.1.26
reduce-window.2.loop_exit.window.1.26: ; preds = %in_bounds-true.us.26, %reduce-window.2.loop_exit.window.1.25
%reduce_window_accum_ptr.1.lcssa.26 = phi double [ %add.1361.i.us.26, %in_bounds-true.us.26 ], [ %reduce_window_accum_ptr.1.lcssa.25, %reduce-window.2.loop_exit.window.1.25 ]
br i1 %175, label %in_bounds-true.us.27, label %reduce-window.2.loop_exit.window.1.27
in_bounds-true.us.27: ; preds = %reduce-window.2.loop_exit.window.1.26
%238 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %174, i64 %reduce-window.2.invar_address.dim.1.0172
%239 = load double, double* %238, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.27 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.26, %239
br label %reduce-window.2.loop_exit.window.1.27
reduce-window.2.loop_exit.window.1.27: ; preds = %in_bounds-true.us.27, %reduce-window.2.loop_exit.window.1.26
%reduce_window_accum_ptr.1.lcssa.27 = phi double [ %add.1361.i.us.27, %in_bounds-true.us.27 ], [ %reduce_window_accum_ptr.1.lcssa.26, %reduce-window.2.loop_exit.window.1.26 ]
br i1 %177, label %in_bounds-true.us.28, label %reduce-window.2.loop_exit.window.1.28
in_bounds-true.us.28: ; preds = %reduce-window.2.loop_exit.window.1.27
%240 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %176, i64 %reduce-window.2.invar_address.dim.1.0172
%241 = load double, double* %240, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.28 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.27, %241
br label %reduce-window.2.loop_exit.window.1.28
reduce-window.2.loop_exit.window.1.28: ; preds = %in_bounds-true.us.28, %reduce-window.2.loop_exit.window.1.27
%reduce_window_accum_ptr.1.lcssa.28 = phi double [ %add.1361.i.us.28, %in_bounds-true.us.28 ], [ %reduce_window_accum_ptr.1.lcssa.27, %reduce-window.2.loop_exit.window.1.27 ]
br i1 %179, label %in_bounds-true.us.29, label %reduce-window.2.loop_exit.window.1.29
in_bounds-true.us.29: ; preds = %reduce-window.2.loop_exit.window.1.28
%242 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %178, i64 %reduce-window.2.invar_address.dim.1.0172
%243 = load double, double* %242, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.29 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.28, %243
br label %reduce-window.2.loop_exit.window.1.29
reduce-window.2.loop_exit.window.1.29: ; preds = %in_bounds-true.us.29, %reduce-window.2.loop_exit.window.1.28
%reduce_window_accum_ptr.1.lcssa.29 = phi double [ %add.1361.i.us.29, %in_bounds-true.us.29 ], [ %reduce_window_accum_ptr.1.lcssa.28, %reduce-window.2.loop_exit.window.1.28 ]
br i1 %181, label %in_bounds-true.us.30, label %reduce-window.2.loop_exit.window.1.30
in_bounds-true.us.30: ; preds = %reduce-window.2.loop_exit.window.1.29
%244 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %180, i64 %reduce-window.2.invar_address.dim.1.0172
%245 = load double, double* %244, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.30 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.29, %245
br label %reduce-window.2.loop_exit.window.1.30
reduce-window.2.loop_exit.window.1.30: ; preds = %in_bounds-true.us.30, %reduce-window.2.loop_exit.window.1.29
%reduce_window_accum_ptr.1.lcssa.30 = phi double [ %add.1361.i.us.30, %in_bounds-true.us.30 ], [ %reduce_window_accum_ptr.1.lcssa.29, %reduce-window.2.loop_exit.window.1.29 ]
br i1 %183, label %in_bounds-true.us.31, label %reduce-window.2.loop_exit.window.1.31
in_bounds-true.us.31: ; preds = %reduce-window.2.loop_exit.window.1.30
%246 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %182, i64 %reduce-window.2.invar_address.dim.1.0172
%247 = load double, double* %246, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.31 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.30, %247
br label %reduce-window.2.loop_exit.window.1.31
reduce-window.2.loop_exit.window.1.31: ; preds = %in_bounds-true.us.31, %reduce-window.2.loop_exit.window.1.30
%reduce_window_accum_ptr.1.lcssa.31 = phi double [ %add.1361.i.us.31, %in_bounds-true.us.31 ], [ %reduce_window_accum_ptr.1.lcssa.30, %reduce-window.2.loop_exit.window.1.30 ]
%248 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.2, i64 0, i64 %reduce-window.2.invar_address.dim.0.0173, i64 %reduce-window.2.invar_address.dim.1.0172
store double %reduce_window_accum_ptr.1.lcssa.31, double* %248, align 8, !alias.scope !34, !noalias !35
%invar.inc16 = add nuw nsw i64 %reduce-window.2.invar_address.dim.1.0172, 1
%exitcond211 = icmp eq i64 %invar.inc16, 4
br i1 %exitcond211, label %reduce-window.2.loop_exit.dim.1, label %reduce-window.2.loop_header.window.0.preheader
reduce-window.2.loop_exit.dim.1: ; preds = %reduce-window.2.loop_exit.window.1.31
%invar.inc15 = add nuw nsw i64 %reduce-window.2.invar_address.dim.0.0173, 1
%exitcond212 = icmp eq i64 %invar.inc15, 16
br i1 %exitcond212, label %reduce-window.2.vectorized_inner.loop_body.reduction_dim.0, label %reduce-window.2.loop_header.dim.1.preheader
reduce-window.2.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.2.loop_exit.dim.1
%249 = getelementptr inbounds i8, i8* %4, i64 48512
%250 = bitcast i8* %81 to <4 x double>*
%251 = load <4 x double>, <4 x double>* %250, align 16, !alias.scope !34, !noalias !35
%252 = fadd reassoc <4 x double> %251, zeroinitializer
%253 = getelementptr inbounds i8, i8* %4, i64 68032
%254 = bitcast i8* %253 to <4 x double>*
%255 = load <4 x double>, <4 x double>* %254, align 16, !alias.scope !34, !noalias !35
%256 = fadd reassoc <4 x double> %252, %255
%257 = getelementptr inbounds i8, i8* %4, i64 68064
%258 = bitcast i8* %257 to <4 x double>*
%259 = load <4 x double>, <4 x double>* %258, align 16, !alias.scope !34, !noalias !35
%260 = fadd reassoc <4 x double> %256, %259
%261 = getelementptr inbounds i8, i8* %4, i64 68096
%262 = bitcast i8* %261 to <4 x double>*
%263 = load <4 x double>, <4 x double>* %262, align 16, !alias.scope !34, !noalias !35
%264 = fadd reassoc <4 x double> %260, %263
%265 = getelementptr inbounds i8, i8* %4, i64 68128
%266 = bitcast i8* %265 to <4 x double>*
%267 = load <4 x double>, <4 x double>* %266, align 16, !alias.scope !34, !noalias !35
%268 = fadd reassoc <4 x double> %264, %267
%269 = getelementptr inbounds i8, i8* %4, i64 68160
%270 = bitcast i8* %269 to <4 x double>*
%271 = load <4 x double>, <4 x double>* %270, align 16, !alias.scope !34, !noalias !35
%272 = fadd reassoc <4 x double> %268, %271
%273 = getelementptr inbounds i8, i8* %4, i64 68192
%274 = bitcast i8* %273 to <4 x double>*
%275 = load <4 x double>, <4 x double>* %274, align 16, !alias.scope !34, !noalias !35
%276 = fadd reassoc <4 x double> %272, %275
%277 = getelementptr inbounds i8, i8* %4, i64 68224
%278 = bitcast i8* %277 to <4 x double>*
%279 = load <4 x double>, <4 x double>* %278, align 16, !alias.scope !34, !noalias !35
%280 = fadd reassoc <4 x double> %276, %279
%281 = getelementptr inbounds i8, i8* %4, i64 68256
%282 = bitcast i8* %281 to <4 x double>*
%283 = load <4 x double>, <4 x double>* %282, align 16, !alias.scope !34, !noalias !35
%284 = fadd reassoc <4 x double> %280, %283
%285 = getelementptr inbounds i8, i8* %4, i64 68288
%286 = bitcast i8* %285 to <4 x double>*
%287 = load <4 x double>, <4 x double>* %286, align 16, !alias.scope !34, !noalias !35
%288 = fadd reassoc <4 x double> %284, %287
%289 = getelementptr inbounds i8, i8* %4, i64 68320
%290 = bitcast i8* %289 to <4 x double>*
%291 = load <4 x double>, <4 x double>* %290, align 16, !alias.scope !34, !noalias !35
%292 = fadd reassoc <4 x double> %288, %291
%293 = getelementptr inbounds i8, i8* %4, i64 68352
%294 = bitcast i8* %293 to <4 x double>*
%295 = load <4 x double>, <4 x double>* %294, align 16, !alias.scope !34, !noalias !35
%296 = fadd reassoc <4 x double> %292, %295
%297 = getelementptr inbounds i8, i8* %4, i64 68384
%298 = bitcast i8* %297 to <4 x double>*
%299 = load <4 x double>, <4 x double>* %298, align 16, !alias.scope !34, !noalias !35
%300 = fadd reassoc <4 x double> %296, %299
%301 = getelementptr inbounds i8, i8* %4, i64 68416
%302 = bitcast i8* %301 to <4 x double>*
%303 = load <4 x double>, <4 x double>* %302, align 16, !alias.scope !34, !noalias !35
%304 = fadd reassoc <4 x double> %300, %303
%305 = getelementptr inbounds i8, i8* %4, i64 68448
%306 = bitcast i8* %305 to <4 x double>*
%307 = load <4 x double>, <4 x double>* %306, align 16, !alias.scope !34, !noalias !35
%308 = fadd reassoc <4 x double> %304, %307
%309 = getelementptr inbounds i8, i8* %4, i64 68480
%310 = bitcast i8* %309 to <4 x double>*
%311 = load <4 x double>, <4 x double>* %310, align 16, !alias.scope !34, !noalias !35
%312 = fadd reassoc <4 x double> %308, %311
%313 = bitcast i8* %249 to <4 x double>*
store <4 x double> %312, <4 x double>* %313, align 16, !alias.scope !36, !noalias !37
br label %vector.ph298
vector.ph298: ; preds = %vector.ph298, %reduce-window.2.vectorized_inner.loop_body.reduction_dim.0
%fusion.7.invar_address.dim.0.0166 = phi i64 [ 0, %reduce-window.2.vectorized_inner.loop_body.reduction_dim.0 ], [ %invar.inc22.4, %vector.ph298 ]
%314 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.7.invar_address.dim.0.0166
%315 = load double, double* %314, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert304 = insertelement <4 x double> poison, double %315, i64 0
%broadcast.splat305 = shufflevector <4 x double> %broadcast.splatinsert304, <4 x double> poison, <4 x i32> zeroinitializer
%316 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.7.invar_address.dim.0.0166, i64 0
%317 = bitcast double* %316 to <4 x double>*
%wide.load303 = load <4 x double>, <4 x double>* %317, align 16, !alias.scope !22, !noalias !23
%318 = fmul <4 x double> %wide.load303, %broadcast.splat305
%319 = bitcast double* %316 to <4 x double>*
store <4 x double> %318, <4 x double>* %319, align 16, !alias.scope !22, !noalias !38
%invar.inc22 = add nuw nsw i64 %fusion.7.invar_address.dim.0.0166, 1
%320 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc22
%321 = load double, double* %320, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert304.1 = insertelement <4 x double> poison, double %321, i64 0
%broadcast.splat305.1 = shufflevector <4 x double> %broadcast.splatinsert304.1, <4 x double> poison, <4 x i32> zeroinitializer
%322 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc22, i64 0
%323 = bitcast double* %322 to <4 x double>*
%wide.load303.1 = load <4 x double>, <4 x double>* %323, align 16, !alias.scope !22, !noalias !23
%324 = fmul <4 x double> %wide.load303.1, %broadcast.splat305.1
%325 = bitcast double* %322 to <4 x double>*
store <4 x double> %324, <4 x double>* %325, align 16, !alias.scope !22, !noalias !38
%invar.inc22.1 = add nuw nsw i64 %fusion.7.invar_address.dim.0.0166, 2
%326 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc22.1
%327 = load double, double* %326, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert304.2 = insertelement <4 x double> poison, double %327, i64 0
%broadcast.splat305.2 = shufflevector <4 x double> %broadcast.splatinsert304.2, <4 x double> poison, <4 x i32> zeroinitializer
%328 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc22.1, i64 0
%329 = bitcast double* %328 to <4 x double>*
%wide.load303.2 = load <4 x double>, <4 x double>* %329, align 16, !alias.scope !22, !noalias !23
%330 = fmul <4 x double> %wide.load303.2, %broadcast.splat305.2
%331 = bitcast double* %328 to <4 x double>*
store <4 x double> %330, <4 x double>* %331, align 16, !alias.scope !22, !noalias !38
%invar.inc22.2 = add nuw nsw i64 %fusion.7.invar_address.dim.0.0166, 3
%332 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc22.2
%333 = load double, double* %332, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert304.3 = insertelement <4 x double> poison, double %333, i64 0
%broadcast.splat305.3 = shufflevector <4 x double> %broadcast.splatinsert304.3, <4 x double> poison, <4 x i32> zeroinitializer
%334 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc22.2, i64 0
%335 = bitcast double* %334 to <4 x double>*
%wide.load303.3 = load <4 x double>, <4 x double>* %335, align 16, !alias.scope !22, !noalias !23
%336 = fmul <4 x double> %wide.load303.3, %broadcast.splat305.3
%337 = bitcast double* %334 to <4 x double>*
store <4 x double> %336, <4 x double>* %337, align 16, !alias.scope !22, !noalias !38
%invar.inc22.3 = add nuw nsw i64 %fusion.7.invar_address.dim.0.0166, 4
%338 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc22.3
%339 = load double, double* %338, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert304.4 = insertelement <4 x double> poison, double %339, i64 0
%broadcast.splat305.4 = shufflevector <4 x double> %broadcast.splatinsert304.4, <4 x double> poison, <4 x i32> zeroinitializer
%340 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc22.3, i64 0
%341 = bitcast double* %340 to <4 x double>*
%wide.load303.4 = load <4 x double>, <4 x double>* %341, align 16, !alias.scope !22, !noalias !23
%342 = fmul <4 x double> %wide.load303.4, %broadcast.splat305.4
%343 = bitcast double* %340 to <4 x double>*
store <4 x double> %342, <4 x double>* %343, align 16, !alias.scope !22, !noalias !38
%invar.inc22.4 = add nuw nsw i64 %fusion.7.invar_address.dim.0.0166, 5
%exitcond208.4 = icmp eq i64 %invar.inc22.4, 500
br i1 %exitcond208.4, label %fusion.7.loop_exit.dim.0, label %vector.ph298
fusion.7.loop_exit.dim.0: ; preds = %vector.ph298
%reduce-window = bitcast i8* %89 to [16 x [4 x double]]*
br label %reduce-window.loop_header.dim.1.preheader
reduce-window.loop_header.dim.1.preheader: ; preds = %reduce-window.loop_exit.dim.1, %fusion.7.loop_exit.dim.0
%reduce-window.invar_address.dim.0.0164 = phi i64 [ 0, %fusion.7.loop_exit.dim.0 ], [ %invar.inc24, %reduce-window.loop_exit.dim.1 ]
%344 = shl nsw i64 %reduce-window.invar_address.dim.0.0164, 5
%345 = add nsw i64 %344, -6
%346 = icmp ult i64 %345, 500
%347 = add nsw i64 %344, -5
%348 = icmp ult i64 %347, 500
%349 = add nsw i64 %344, -4
%350 = icmp ult i64 %349, 500
%351 = add nsw i64 %344, -3
%352 = icmp ult i64 %351, 500
%353 = add nsw i64 %344, -2
%354 = icmp ult i64 %353, 500
%355 = add nsw i64 %344, -1
%356 = icmp ult i64 %355, 500
%357 = icmp ult i64 %344, 500
%358 = or i64 %344, 1
%359 = icmp ult i64 %358, 500
%360 = or i64 %344, 2
%361 = icmp ult i64 %360, 500
%362 = or i64 %344, 3
%363 = icmp ult i64 %362, 500
%364 = or i64 %344, 4
%365 = icmp ult i64 %364, 500
%366 = or i64 %344, 5
%367 = icmp ult i64 %366, 500
%368 = or i64 %344, 6
%369 = icmp ult i64 %368, 500
%370 = or i64 %344, 7
%371 = icmp ult i64 %370, 500
%372 = or i64 %344, 8
%373 = icmp ult i64 %372, 500
%374 = or i64 %344, 9
%375 = icmp ult i64 %374, 500
%376 = or i64 %344, 10
%377 = icmp ult i64 %376, 500
%378 = or i64 %344, 11
%379 = icmp ult i64 %378, 500
%380 = or i64 %344, 12
%381 = icmp ult i64 %380, 500
%382 = or i64 %344, 13
%383 = icmp ult i64 %382, 500
%384 = or i64 %344, 14
%385 = icmp ult i64 %384, 500
%386 = or i64 %344, 15
%387 = icmp ult i64 %386, 500
%388 = or i64 %344, 16
%389 = icmp ult i64 %388, 500
%390 = or i64 %344, 17
%391 = icmp ult i64 %390, 500
%392 = or i64 %344, 18
%393 = icmp ult i64 %392, 500
%394 = or i64 %344, 19
%395 = icmp ult i64 %394, 500
%396 = or i64 %344, 20
%397 = icmp ult i64 %396, 500
%398 = or i64 %344, 21
%399 = icmp ult i64 %398, 500
%400 = or i64 %344, 22
%401 = icmp ult i64 %400, 500
%402 = or i64 %344, 23
%403 = icmp ult i64 %402, 500
%404 = or i64 %344, 24
%405 = icmp ult i64 %404, 500
%406 = or i64 %344, 25
%407 = icmp ult i64 %406, 500
br label %reduce-window.loop_header.window.0.preheader
reduce-window.loop_header.window.0.preheader: ; preds = %reduce-window.loop_exit.window.1.31, %reduce-window.loop_header.dim.1.preheader
%reduce-window.invar_address.dim.1.0163 = phi i64 [ 0, %reduce-window.loop_header.dim.1.preheader ], [ %invar.inc25, %reduce-window.loop_exit.window.1.31 ]
br i1 %346, label %in_bounds-true29.us, label %reduce-window.loop_exit.window.1
in_bounds-true29.us: ; preds = %reduce-window.loop_header.window.0.preheader
%408 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %345, i64 %reduce-window.invar_address.dim.1.0163
%409 = load double, double* %408, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us = fadd reassoc double %409, 0.000000e+00
br label %reduce-window.loop_exit.window.1
reduce-window.loop_exit.window.1: ; preds = %in_bounds-true29.us, %reduce-window.loop_header.window.0.preheader
%reduce_window_accum_ptr26.1.lcssa = phi double [ %add.1161.i.us, %in_bounds-true29.us ], [ 0.000000e+00, %reduce-window.loop_header.window.0.preheader ]
br i1 %348, label %in_bounds-true29.us.1, label %reduce-window.loop_exit.window.1.1
in_bounds-true29.us.1: ; preds = %reduce-window.loop_exit.window.1
%410 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %347, i64 %reduce-window.invar_address.dim.1.0163
%411 = load double, double* %410, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.1 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa, %411
br label %reduce-window.loop_exit.window.1.1
reduce-window.loop_exit.window.1.1: ; preds = %in_bounds-true29.us.1, %reduce-window.loop_exit.window.1
%reduce_window_accum_ptr26.1.lcssa.1 = phi double [ %add.1161.i.us.1, %in_bounds-true29.us.1 ], [ %reduce_window_accum_ptr26.1.lcssa, %reduce-window.loop_exit.window.1 ]
br i1 %350, label %in_bounds-true29.us.2, label %reduce-window.loop_exit.window.1.2
in_bounds-true29.us.2: ; preds = %reduce-window.loop_exit.window.1.1
%412 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %349, i64 %reduce-window.invar_address.dim.1.0163
%413 = load double, double* %412, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.2 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.1, %413
br label %reduce-window.loop_exit.window.1.2
reduce-window.loop_exit.window.1.2: ; preds = %in_bounds-true29.us.2, %reduce-window.loop_exit.window.1.1
%reduce_window_accum_ptr26.1.lcssa.2 = phi double [ %add.1161.i.us.2, %in_bounds-true29.us.2 ], [ %reduce_window_accum_ptr26.1.lcssa.1, %reduce-window.loop_exit.window.1.1 ]
br i1 %352, label %in_bounds-true29.us.3, label %reduce-window.loop_exit.window.1.3
in_bounds-true29.us.3: ; preds = %reduce-window.loop_exit.window.1.2
%414 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %351, i64 %reduce-window.invar_address.dim.1.0163
%415 = load double, double* %414, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.3 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.2, %415
br label %reduce-window.loop_exit.window.1.3
reduce-window.loop_exit.window.1.3: ; preds = %in_bounds-true29.us.3, %reduce-window.loop_exit.window.1.2
%reduce_window_accum_ptr26.1.lcssa.3 = phi double [ %add.1161.i.us.3, %in_bounds-true29.us.3 ], [ %reduce_window_accum_ptr26.1.lcssa.2, %reduce-window.loop_exit.window.1.2 ]
br i1 %354, label %in_bounds-true29.us.4, label %reduce-window.loop_exit.window.1.4
in_bounds-true29.us.4: ; preds = %reduce-window.loop_exit.window.1.3
%416 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %353, i64 %reduce-window.invar_address.dim.1.0163
%417 = load double, double* %416, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.4 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.3, %417
br label %reduce-window.loop_exit.window.1.4
reduce-window.loop_exit.window.1.4: ; preds = %in_bounds-true29.us.4, %reduce-window.loop_exit.window.1.3
%reduce_window_accum_ptr26.1.lcssa.4 = phi double [ %add.1161.i.us.4, %in_bounds-true29.us.4 ], [ %reduce_window_accum_ptr26.1.lcssa.3, %reduce-window.loop_exit.window.1.3 ]
br i1 %356, label %in_bounds-true29.us.5, label %reduce-window.loop_exit.window.1.5
in_bounds-true29.us.5: ; preds = %reduce-window.loop_exit.window.1.4
%418 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %355, i64 %reduce-window.invar_address.dim.1.0163
%419 = load double, double* %418, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.5 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.4, %419
br label %reduce-window.loop_exit.window.1.5
reduce-window.loop_exit.window.1.5: ; preds = %in_bounds-true29.us.5, %reduce-window.loop_exit.window.1.4
%reduce_window_accum_ptr26.1.lcssa.5 = phi double [ %add.1161.i.us.5, %in_bounds-true29.us.5 ], [ %reduce_window_accum_ptr26.1.lcssa.4, %reduce-window.loop_exit.window.1.4 ]
br i1 %357, label %in_bounds-true29.us.6, label %reduce-window.loop_exit.window.1.6
in_bounds-true29.us.6: ; preds = %reduce-window.loop_exit.window.1.5
%420 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %344, i64 %reduce-window.invar_address.dim.1.0163
%421 = load double, double* %420, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.6 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.5, %421
br label %reduce-window.loop_exit.window.1.6
reduce-window.loop_exit.window.1.6: ; preds = %in_bounds-true29.us.6, %reduce-window.loop_exit.window.1.5
%reduce_window_accum_ptr26.1.lcssa.6 = phi double [ %add.1161.i.us.6, %in_bounds-true29.us.6 ], [ %reduce_window_accum_ptr26.1.lcssa.5, %reduce-window.loop_exit.window.1.5 ]
br i1 %359, label %in_bounds-true29.us.7, label %reduce-window.loop_exit.window.1.7
in_bounds-true29.us.7: ; preds = %reduce-window.loop_exit.window.1.6
%422 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %358, i64 %reduce-window.invar_address.dim.1.0163
%423 = load double, double* %422, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.7 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.6, %423
br label %reduce-window.loop_exit.window.1.7
reduce-window.loop_exit.window.1.7: ; preds = %in_bounds-true29.us.7, %reduce-window.loop_exit.window.1.6
%reduce_window_accum_ptr26.1.lcssa.7 = phi double [ %add.1161.i.us.7, %in_bounds-true29.us.7 ], [ %reduce_window_accum_ptr26.1.lcssa.6, %reduce-window.loop_exit.window.1.6 ]
br i1 %361, label %in_bounds-true29.us.8, label %reduce-window.loop_exit.window.1.8
in_bounds-true29.us.8: ; preds = %reduce-window.loop_exit.window.1.7
%424 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %360, i64 %reduce-window.invar_address.dim.1.0163
%425 = load double, double* %424, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.8 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.7, %425
br label %reduce-window.loop_exit.window.1.8
reduce-window.loop_exit.window.1.8: ; preds = %in_bounds-true29.us.8, %reduce-window.loop_exit.window.1.7
%reduce_window_accum_ptr26.1.lcssa.8 = phi double [ %add.1161.i.us.8, %in_bounds-true29.us.8 ], [ %reduce_window_accum_ptr26.1.lcssa.7, %reduce-window.loop_exit.window.1.7 ]
br i1 %363, label %in_bounds-true29.us.9, label %reduce-window.loop_exit.window.1.9
in_bounds-true29.us.9: ; preds = %reduce-window.loop_exit.window.1.8
%426 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %362, i64 %reduce-window.invar_address.dim.1.0163
%427 = load double, double* %426, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.9 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.8, %427
br label %reduce-window.loop_exit.window.1.9
reduce-window.loop_exit.window.1.9: ; preds = %in_bounds-true29.us.9, %reduce-window.loop_exit.window.1.8
%reduce_window_accum_ptr26.1.lcssa.9 = phi double [ %add.1161.i.us.9, %in_bounds-true29.us.9 ], [ %reduce_window_accum_ptr26.1.lcssa.8, %reduce-window.loop_exit.window.1.8 ]
br i1 %365, label %in_bounds-true29.us.10, label %reduce-window.loop_exit.window.1.10
in_bounds-true29.us.10: ; preds = %reduce-window.loop_exit.window.1.9
%428 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %364, i64 %reduce-window.invar_address.dim.1.0163
%429 = load double, double* %428, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.10 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.9, %429
br label %reduce-window.loop_exit.window.1.10
reduce-window.loop_exit.window.1.10: ; preds = %in_bounds-true29.us.10, %reduce-window.loop_exit.window.1.9
%reduce_window_accum_ptr26.1.lcssa.10 = phi double [ %add.1161.i.us.10, %in_bounds-true29.us.10 ], [ %reduce_window_accum_ptr26.1.lcssa.9, %reduce-window.loop_exit.window.1.9 ]
br i1 %367, label %in_bounds-true29.us.11, label %reduce-window.loop_exit.window.1.11
in_bounds-true29.us.11: ; preds = %reduce-window.loop_exit.window.1.10
%430 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %366, i64 %reduce-window.invar_address.dim.1.0163
%431 = load double, double* %430, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.11 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.10, %431
br label %reduce-window.loop_exit.window.1.11
reduce-window.loop_exit.window.1.11: ; preds = %in_bounds-true29.us.11, %reduce-window.loop_exit.window.1.10
%reduce_window_accum_ptr26.1.lcssa.11 = phi double [ %add.1161.i.us.11, %in_bounds-true29.us.11 ], [ %reduce_window_accum_ptr26.1.lcssa.10, %reduce-window.loop_exit.window.1.10 ]
br i1 %369, label %in_bounds-true29.us.12, label %reduce-window.loop_exit.window.1.12
in_bounds-true29.us.12: ; preds = %reduce-window.loop_exit.window.1.11
%432 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %368, i64 %reduce-window.invar_address.dim.1.0163
%433 = load double, double* %432, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.12 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.11, %433
br label %reduce-window.loop_exit.window.1.12
reduce-window.loop_exit.window.1.12: ; preds = %in_bounds-true29.us.12, %reduce-window.loop_exit.window.1.11
%reduce_window_accum_ptr26.1.lcssa.12 = phi double [ %add.1161.i.us.12, %in_bounds-true29.us.12 ], [ %reduce_window_accum_ptr26.1.lcssa.11, %reduce-window.loop_exit.window.1.11 ]
br i1 %371, label %in_bounds-true29.us.13, label %reduce-window.loop_exit.window.1.13
in_bounds-true29.us.13: ; preds = %reduce-window.loop_exit.window.1.12
%434 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %370, i64 %reduce-window.invar_address.dim.1.0163
%435 = load double, double* %434, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.13 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.12, %435
br label %reduce-window.loop_exit.window.1.13
reduce-window.loop_exit.window.1.13: ; preds = %in_bounds-true29.us.13, %reduce-window.loop_exit.window.1.12
%reduce_window_accum_ptr26.1.lcssa.13 = phi double [ %add.1161.i.us.13, %in_bounds-true29.us.13 ], [ %reduce_window_accum_ptr26.1.lcssa.12, %reduce-window.loop_exit.window.1.12 ]
br i1 %373, label %in_bounds-true29.us.14, label %reduce-window.loop_exit.window.1.14
in_bounds-true29.us.14: ; preds = %reduce-window.loop_exit.window.1.13
%436 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %372, i64 %reduce-window.invar_address.dim.1.0163
%437 = load double, double* %436, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.14 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.13, %437
br label %reduce-window.loop_exit.window.1.14
reduce-window.loop_exit.window.1.14: ; preds = %in_bounds-true29.us.14, %reduce-window.loop_exit.window.1.13
%reduce_window_accum_ptr26.1.lcssa.14 = phi double [ %add.1161.i.us.14, %in_bounds-true29.us.14 ], [ %reduce_window_accum_ptr26.1.lcssa.13, %reduce-window.loop_exit.window.1.13 ]
br i1 %375, label %in_bounds-true29.us.15, label %reduce-window.loop_exit.window.1.15
in_bounds-true29.us.15: ; preds = %reduce-window.loop_exit.window.1.14
%438 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %374, i64 %reduce-window.invar_address.dim.1.0163
%439 = load double, double* %438, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.15 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.14, %439
br label %reduce-window.loop_exit.window.1.15
reduce-window.loop_exit.window.1.15: ; preds = %in_bounds-true29.us.15, %reduce-window.loop_exit.window.1.14
%reduce_window_accum_ptr26.1.lcssa.15 = phi double [ %add.1161.i.us.15, %in_bounds-true29.us.15 ], [ %reduce_window_accum_ptr26.1.lcssa.14, %reduce-window.loop_exit.window.1.14 ]
br i1 %377, label %in_bounds-true29.us.16, label %reduce-window.loop_exit.window.1.16
in_bounds-true29.us.16: ; preds = %reduce-window.loop_exit.window.1.15
%440 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %376, i64 %reduce-window.invar_address.dim.1.0163
%441 = load double, double* %440, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.16 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.15, %441
br label %reduce-window.loop_exit.window.1.16
reduce-window.loop_exit.window.1.16: ; preds = %in_bounds-true29.us.16, %reduce-window.loop_exit.window.1.15
%reduce_window_accum_ptr26.1.lcssa.16 = phi double [ %add.1161.i.us.16, %in_bounds-true29.us.16 ], [ %reduce_window_accum_ptr26.1.lcssa.15, %reduce-window.loop_exit.window.1.15 ]
br i1 %379, label %in_bounds-true29.us.17, label %reduce-window.loop_exit.window.1.17
in_bounds-true29.us.17: ; preds = %reduce-window.loop_exit.window.1.16
%442 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %378, i64 %reduce-window.invar_address.dim.1.0163
%443 = load double, double* %442, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.17 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.16, %443
br label %reduce-window.loop_exit.window.1.17
reduce-window.loop_exit.window.1.17: ; preds = %in_bounds-true29.us.17, %reduce-window.loop_exit.window.1.16
%reduce_window_accum_ptr26.1.lcssa.17 = phi double [ %add.1161.i.us.17, %in_bounds-true29.us.17 ], [ %reduce_window_accum_ptr26.1.lcssa.16, %reduce-window.loop_exit.window.1.16 ]
br i1 %381, label %in_bounds-true29.us.18, label %reduce-window.loop_exit.window.1.18
in_bounds-true29.us.18: ; preds = %reduce-window.loop_exit.window.1.17
%444 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %380, i64 %reduce-window.invar_address.dim.1.0163
%445 = load double, double* %444, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.18 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.17, %445
br label %reduce-window.loop_exit.window.1.18
reduce-window.loop_exit.window.1.18: ; preds = %in_bounds-true29.us.18, %reduce-window.loop_exit.window.1.17
%reduce_window_accum_ptr26.1.lcssa.18 = phi double [ %add.1161.i.us.18, %in_bounds-true29.us.18 ], [ %reduce_window_accum_ptr26.1.lcssa.17, %reduce-window.loop_exit.window.1.17 ]
br i1 %383, label %in_bounds-true29.us.19, label %reduce-window.loop_exit.window.1.19
in_bounds-true29.us.19: ; preds = %reduce-window.loop_exit.window.1.18
%446 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %382, i64 %reduce-window.invar_address.dim.1.0163
%447 = load double, double* %446, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.19 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.18, %447
br label %reduce-window.loop_exit.window.1.19
reduce-window.loop_exit.window.1.19: ; preds = %in_bounds-true29.us.19, %reduce-window.loop_exit.window.1.18
%reduce_window_accum_ptr26.1.lcssa.19 = phi double [ %add.1161.i.us.19, %in_bounds-true29.us.19 ], [ %reduce_window_accum_ptr26.1.lcssa.18, %reduce-window.loop_exit.window.1.18 ]
br i1 %385, label %in_bounds-true29.us.20, label %reduce-window.loop_exit.window.1.20
in_bounds-true29.us.20: ; preds = %reduce-window.loop_exit.window.1.19
%448 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %384, i64 %reduce-window.invar_address.dim.1.0163
%449 = load double, double* %448, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.20 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.19, %449
br label %reduce-window.loop_exit.window.1.20
reduce-window.loop_exit.window.1.20: ; preds = %in_bounds-true29.us.20, %reduce-window.loop_exit.window.1.19
%reduce_window_accum_ptr26.1.lcssa.20 = phi double [ %add.1161.i.us.20, %in_bounds-true29.us.20 ], [ %reduce_window_accum_ptr26.1.lcssa.19, %reduce-window.loop_exit.window.1.19 ]
br i1 %387, label %in_bounds-true29.us.21, label %reduce-window.loop_exit.window.1.21
in_bounds-true29.us.21: ; preds = %reduce-window.loop_exit.window.1.20
%450 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %386, i64 %reduce-window.invar_address.dim.1.0163
%451 = load double, double* %450, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.21 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.20, %451
br label %reduce-window.loop_exit.window.1.21
reduce-window.loop_exit.window.1.21: ; preds = %in_bounds-true29.us.21, %reduce-window.loop_exit.window.1.20
%reduce_window_accum_ptr26.1.lcssa.21 = phi double [ %add.1161.i.us.21, %in_bounds-true29.us.21 ], [ %reduce_window_accum_ptr26.1.lcssa.20, %reduce-window.loop_exit.window.1.20 ]
br i1 %389, label %in_bounds-true29.us.22, label %reduce-window.loop_exit.window.1.22
in_bounds-true29.us.22: ; preds = %reduce-window.loop_exit.window.1.21
%452 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %388, i64 %reduce-window.invar_address.dim.1.0163
%453 = load double, double* %452, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.22 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.21, %453
br label %reduce-window.loop_exit.window.1.22
reduce-window.loop_exit.window.1.22: ; preds = %in_bounds-true29.us.22, %reduce-window.loop_exit.window.1.21
%reduce_window_accum_ptr26.1.lcssa.22 = phi double [ %add.1161.i.us.22, %in_bounds-true29.us.22 ], [ %reduce_window_accum_ptr26.1.lcssa.21, %reduce-window.loop_exit.window.1.21 ]
br i1 %391, label %in_bounds-true29.us.23, label %reduce-window.loop_exit.window.1.23
in_bounds-true29.us.23: ; preds = %reduce-window.loop_exit.window.1.22
%454 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %390, i64 %reduce-window.invar_address.dim.1.0163
%455 = load double, double* %454, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.23 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.22, %455
br label %reduce-window.loop_exit.window.1.23
reduce-window.loop_exit.window.1.23: ; preds = %in_bounds-true29.us.23, %reduce-window.loop_exit.window.1.22
%reduce_window_accum_ptr26.1.lcssa.23 = phi double [ %add.1161.i.us.23, %in_bounds-true29.us.23 ], [ %reduce_window_accum_ptr26.1.lcssa.22, %reduce-window.loop_exit.window.1.22 ]
br i1 %393, label %in_bounds-true29.us.24, label %reduce-window.loop_exit.window.1.24
in_bounds-true29.us.24: ; preds = %reduce-window.loop_exit.window.1.23
%456 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %392, i64 %reduce-window.invar_address.dim.1.0163
%457 = load double, double* %456, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.24 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.23, %457
br label %reduce-window.loop_exit.window.1.24
reduce-window.loop_exit.window.1.24: ; preds = %in_bounds-true29.us.24, %reduce-window.loop_exit.window.1.23
%reduce_window_accum_ptr26.1.lcssa.24 = phi double [ %add.1161.i.us.24, %in_bounds-true29.us.24 ], [ %reduce_window_accum_ptr26.1.lcssa.23, %reduce-window.loop_exit.window.1.23 ]
br i1 %395, label %in_bounds-true29.us.25, label %reduce-window.loop_exit.window.1.25
in_bounds-true29.us.25: ; preds = %reduce-window.loop_exit.window.1.24
%458 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %394, i64 %reduce-window.invar_address.dim.1.0163
%459 = load double, double* %458, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.25 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.24, %459
br label %reduce-window.loop_exit.window.1.25
reduce-window.loop_exit.window.1.25: ; preds = %in_bounds-true29.us.25, %reduce-window.loop_exit.window.1.24
%reduce_window_accum_ptr26.1.lcssa.25 = phi double [ %add.1161.i.us.25, %in_bounds-true29.us.25 ], [ %reduce_window_accum_ptr26.1.lcssa.24, %reduce-window.loop_exit.window.1.24 ]
br i1 %397, label %in_bounds-true29.us.26, label %reduce-window.loop_exit.window.1.26
in_bounds-true29.us.26: ; preds = %reduce-window.loop_exit.window.1.25
%460 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %396, i64 %reduce-window.invar_address.dim.1.0163
%461 = load double, double* %460, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.26 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.25, %461
br label %reduce-window.loop_exit.window.1.26
reduce-window.loop_exit.window.1.26: ; preds = %in_bounds-true29.us.26, %reduce-window.loop_exit.window.1.25
%reduce_window_accum_ptr26.1.lcssa.26 = phi double [ %add.1161.i.us.26, %in_bounds-true29.us.26 ], [ %reduce_window_accum_ptr26.1.lcssa.25, %reduce-window.loop_exit.window.1.25 ]
br i1 %399, label %in_bounds-true29.us.27, label %reduce-window.loop_exit.window.1.27
in_bounds-true29.us.27: ; preds = %reduce-window.loop_exit.window.1.26
%462 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %398, i64 %reduce-window.invar_address.dim.1.0163
%463 = load double, double* %462, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.27 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.26, %463
br label %reduce-window.loop_exit.window.1.27
reduce-window.loop_exit.window.1.27: ; preds = %in_bounds-true29.us.27, %reduce-window.loop_exit.window.1.26
%reduce_window_accum_ptr26.1.lcssa.27 = phi double [ %add.1161.i.us.27, %in_bounds-true29.us.27 ], [ %reduce_window_accum_ptr26.1.lcssa.26, %reduce-window.loop_exit.window.1.26 ]
br i1 %401, label %in_bounds-true29.us.28, label %reduce-window.loop_exit.window.1.28
in_bounds-true29.us.28: ; preds = %reduce-window.loop_exit.window.1.27
%464 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %400, i64 %reduce-window.invar_address.dim.1.0163
%465 = load double, double* %464, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.28 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.27, %465
br label %reduce-window.loop_exit.window.1.28
reduce-window.loop_exit.window.1.28: ; preds = %in_bounds-true29.us.28, %reduce-window.loop_exit.window.1.27
%reduce_window_accum_ptr26.1.lcssa.28 = phi double [ %add.1161.i.us.28, %in_bounds-true29.us.28 ], [ %reduce_window_accum_ptr26.1.lcssa.27, %reduce-window.loop_exit.window.1.27 ]
br i1 %403, label %in_bounds-true29.us.29, label %reduce-window.loop_exit.window.1.29
in_bounds-true29.us.29: ; preds = %reduce-window.loop_exit.window.1.28
%466 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %402, i64 %reduce-window.invar_address.dim.1.0163
%467 = load double, double* %466, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.29 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.28, %467
br label %reduce-window.loop_exit.window.1.29
reduce-window.loop_exit.window.1.29: ; preds = %in_bounds-true29.us.29, %reduce-window.loop_exit.window.1.28
%reduce_window_accum_ptr26.1.lcssa.29 = phi double [ %add.1161.i.us.29, %in_bounds-true29.us.29 ], [ %reduce_window_accum_ptr26.1.lcssa.28, %reduce-window.loop_exit.window.1.28 ]
br i1 %405, label %in_bounds-true29.us.30, label %reduce-window.loop_exit.window.1.30
in_bounds-true29.us.30: ; preds = %reduce-window.loop_exit.window.1.29
%468 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %404, i64 %reduce-window.invar_address.dim.1.0163
%469 = load double, double* %468, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.30 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.29, %469
br label %reduce-window.loop_exit.window.1.30
reduce-window.loop_exit.window.1.30: ; preds = %in_bounds-true29.us.30, %reduce-window.loop_exit.window.1.29
%reduce_window_accum_ptr26.1.lcssa.30 = phi double [ %add.1161.i.us.30, %in_bounds-true29.us.30 ], [ %reduce_window_accum_ptr26.1.lcssa.29, %reduce-window.loop_exit.window.1.29 ]
br i1 %407, label %in_bounds-true29.us.31, label %reduce-window.loop_exit.window.1.31
in_bounds-true29.us.31: ; preds = %reduce-window.loop_exit.window.1.30
%470 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %406, i64 %reduce-window.invar_address.dim.1.0163
%471 = load double, double* %470, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.31 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.30, %471
br label %reduce-window.loop_exit.window.1.31
reduce-window.loop_exit.window.1.31: ; preds = %in_bounds-true29.us.31, %reduce-window.loop_exit.window.1.30
%reduce_window_accum_ptr26.1.lcssa.31 = phi double [ %add.1161.i.us.31, %in_bounds-true29.us.31 ], [ %reduce_window_accum_ptr26.1.lcssa.30, %reduce-window.loop_exit.window.1.30 ]
%472 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window, i64 0, i64 %reduce-window.invar_address.dim.0.0164, i64 %reduce-window.invar_address.dim.1.0163
store double %reduce_window_accum_ptr26.1.lcssa.31, double* %472, align 8, !alias.scope !40, !noalias !41
%invar.inc25 = add nuw nsw i64 %reduce-window.invar_address.dim.1.0163, 1
%exitcond205 = icmp eq i64 %invar.inc25, 4
br i1 %exitcond205, label %reduce-window.loop_exit.dim.1, label %reduce-window.loop_header.window.0.preheader
reduce-window.loop_exit.dim.1: ; preds = %reduce-window.loop_exit.window.1.31
%invar.inc24 = add nuw nsw i64 %reduce-window.invar_address.dim.0.0164, 1
%exitcond206 = icmp eq i64 %invar.inc24, 16
br i1 %exitcond206, label %reduce-window.vectorized_inner.loop_body.reduction_dim.0, label %reduce-window.loop_header.dim.1.preheader
reduce-window.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.loop_exit.dim.1
%473 = getelementptr inbounds i8, i8* %4, i64 48544
%474 = bitcast i8* %89 to <4 x double>*
%475 = load <4 x double>, <4 x double>* %474, align 16, !alias.scope !40, !noalias !41
%476 = fadd reassoc <4 x double> %475, zeroinitializer
%477 = getelementptr inbounds i8, i8* %4, i64 48032
%478 = bitcast i8* %477 to <4 x double>*
%479 = load <4 x double>, <4 x double>* %478, align 16, !alias.scope !40, !noalias !41
%480 = fadd reassoc <4 x double> %476, %479
%481 = getelementptr inbounds i8, i8* %4, i64 48064
%482 = bitcast i8* %481 to <4 x double>*
%483 = load <4 x double>, <4 x double>* %482, align 16, !alias.scope !40, !noalias !41
%484 = fadd reassoc <4 x double> %480, %483
%485 = getelementptr inbounds i8, i8* %4, i64 48096
%486 = bitcast i8* %485 to <4 x double>*
%487 = load <4 x double>, <4 x double>* %486, align 16, !alias.scope !40, !noalias !41
%488 = fadd reassoc <4 x double> %484, %487
%489 = getelementptr inbounds i8, i8* %4, i64 48128
%490 = bitcast i8* %489 to <4 x double>*
%491 = load <4 x double>, <4 x double>* %490, align 16, !alias.scope !40, !noalias !41
%492 = fadd reassoc <4 x double> %488, %491
%493 = getelementptr inbounds i8, i8* %4, i64 48160
%494 = bitcast i8* %493 to <4 x double>*
%495 = load <4 x double>, <4 x double>* %494, align 16, !alias.scope !40, !noalias !41
%496 = fadd reassoc <4 x double> %492, %495
%497 = getelementptr inbounds i8, i8* %4, i64 48192
%498 = bitcast i8* %497 to <4 x double>*
%499 = load <4 x double>, <4 x double>* %498, align 16, !alias.scope !40, !noalias !41
%500 = fadd reassoc <4 x double> %496, %499
%501 = getelementptr inbounds i8, i8* %4, i64 48224
%502 = bitcast i8* %501 to <4 x double>*
%503 = load <4 x double>, <4 x double>* %502, align 16, !alias.scope !40, !noalias !41
%504 = fadd reassoc <4 x double> %500, %503
%505 = getelementptr inbounds i8, i8* %4, i64 48256
%506 = bitcast i8* %505 to <4 x double>*
%507 = load <4 x double>, <4 x double>* %506, align 16, !alias.scope !40, !noalias !41
%508 = fadd reassoc <4 x double> %504, %507
%509 = getelementptr inbounds i8, i8* %4, i64 48288
%510 = bitcast i8* %509 to <4 x double>*
%511 = load <4 x double>, <4 x double>* %510, align 16, !alias.scope !40, !noalias !41
%512 = fadd reassoc <4 x double> %508, %511
%513 = getelementptr inbounds i8, i8* %4, i64 48320
%514 = bitcast i8* %513 to <4 x double>*
%515 = load <4 x double>, <4 x double>* %514, align 16, !alias.scope !40, !noalias !41
%516 = fadd reassoc <4 x double> %512, %515
%517 = getelementptr inbounds i8, i8* %4, i64 48352
%518 = bitcast i8* %517 to <4 x double>*
%519 = load <4 x double>, <4 x double>* %518, align 16, !alias.scope !40, !noalias !41
%520 = fadd reassoc <4 x double> %516, %519
%521 = getelementptr inbounds i8, i8* %4, i64 48384
%522 = bitcast i8* %521 to <4 x double>*
%523 = load <4 x double>, <4 x double>* %522, align 16, !alias.scope !40, !noalias !41
%524 = fadd reassoc <4 x double> %520, %523
%525 = getelementptr inbounds i8, i8* %4, i64 48416
%526 = bitcast i8* %525 to <4 x double>*
%527 = load <4 x double>, <4 x double>* %526, align 16, !alias.scope !40, !noalias !41
%528 = fadd reassoc <4 x double> %524, %527
%529 = getelementptr inbounds i8, i8* %4, i64 48448
%530 = bitcast i8* %529 to <4 x double>*
%531 = load <4 x double>, <4 x double>* %530, align 16, !alias.scope !40, !noalias !41
%532 = fadd reassoc <4 x double> %528, %531
%533 = getelementptr inbounds i8, i8* %4, i64 48480
%534 = bitcast i8* %533 to <4 x double>*
%535 = load <4 x double>, <4 x double>* %534, align 16, !alias.scope !40, !noalias !41
%536 = fadd reassoc <4 x double> %532, %535
%537 = bitcast i8* %473 to <4 x double>*
store <4 x double> %536, <4 x double>* %537, align 16, !alias.scope !42, !noalias !43
%538 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%539 = bitcast double* %538 to <4 x double>*
%wide.load316 = load <4 x double>, <4 x double>* %539, align 16, !invariant.load !0, !noalias !4
%540 = fmul <4 x double> %wide.load316, %wide.load316
%541 = fmul <4 x double> %540, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%542 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%543 = bitcast double* %542 to <4 x double>*
%wide.load317 = load <4 x double>, <4 x double>* %543, align 16, !invariant.load !0, !noalias !4
%544 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%545 = bitcast double* %544 to <4 x double>*
%wide.load316.1 = load <4 x double>, <4 x double>* %545, align 16, !invariant.load !0, !noalias !4
%546 = fmul <4 x double> %wide.load316.1, %wide.load316.1
%547 = fmul <4 x double> %546, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%548 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%549 = bitcast double* %548 to <4 x double>*
%wide.load317.1 = load <4 x double>, <4 x double>* %549, align 16, !invariant.load !0, !noalias !4
br label %vector.ph309
vector.ph309: ; preds = %vector.ph309, %reduce-window.vectorized_inner.loop_body.reduction_dim.0
%fusion.1.invar_address.dim.0.0157 = phi i64 [ 0, %reduce-window.vectorized_inner.loop_body.reduction_dim.0 ], [ %invar.inc42.1, %vector.ph309 ]
%constant.112 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @0 to [500 x double]*), i64 0, i64 %fusion.1.invar_address.dim.0.0157
%constant.11244 = load double, double* %constant.112, align 16
%broadcast.splatinsert318 = insertelement <4 x double> poison, double %constant.11244, i64 0
%broadcast.splat319 = shufflevector <4 x double> %broadcast.splatinsert318, <4 x double> poison, <4 x i32> zeroinitializer
%550 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.1.invar_address.dim.0.0157, i64 0
%551 = bitcast double* %550 to <4 x double>*
%wide.load314 = load <4 x double>, <4 x double>* %551, align 16, !alias.scope !26, !noalias !27
%552 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.1.invar_address.dim.0.0157, i64 0
%553 = bitcast double* %552 to <4 x double>*
%wide.load315 = load <4 x double>, <4 x double>* %553, align 16, !alias.scope !18, !noalias !19
%554 = fneg <4 x double> %wide.load314
%555 = fmul <4 x double> %wide.load315, %554
%556 = fdiv <4 x double> %555, %541
%557 = fsub <4 x double> %broadcast.splat319, %wide.load317
%558 = fmul <4 x double> %557, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%559 = fmul <4 x double> %556, %558
%560 = bitcast double* %550 to <4 x double>*
store <4 x double> %559, <4 x double>* %560, align 16, !alias.scope !26, !noalias !44
%invar.inc42 = or i64 %fusion.1.invar_address.dim.0.0157, 1
%constant.112.1 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @0 to [500 x double]*), i64 0, i64 %invar.inc42
%constant.11244.1 = load double, double* %constant.112.1, align 8
%broadcast.splatinsert318.1 = insertelement <4 x double> poison, double %constant.11244.1, i64 0
%broadcast.splat319.1 = shufflevector <4 x double> %broadcast.splatinsert318.1, <4 x double> poison, <4 x i32> zeroinitializer
%561 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %invar.inc42, i64 0
%562 = bitcast double* %561 to <4 x double>*
%wide.load314.1 = load <4 x double>, <4 x double>* %562, align 16, !alias.scope !26, !noalias !27
%563 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc42, i64 0
%564 = bitcast double* %563 to <4 x double>*
%wide.load315.1 = load <4 x double>, <4 x double>* %564, align 16, !alias.scope !18, !noalias !19
%565 = fneg <4 x double> %wide.load314.1
%566 = fmul <4 x double> %wide.load315.1, %565
%567 = fdiv <4 x double> %566, %547
%568 = fsub <4 x double> %broadcast.splat319.1, %wide.load317.1
%569 = fmul <4 x double> %568, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%570 = fmul <4 x double> %567, %569
%571 = bitcast double* %561 to <4 x double>*
store <4 x double> %570, <4 x double>* %571, align 16, !alias.scope !26, !noalias !44
%invar.inc42.1 = add nuw nsw i64 %fusion.1.invar_address.dim.0.0157, 2
%exitcond202.1 = icmp eq i64 %invar.inc42.1, 500
br i1 %exitcond202.1, label %fusion.1.loop_exit.dim.0, label %vector.ph309
fusion.1.loop_exit.dim.0: ; preds = %vector.ph309
%reduce-window.3 = bitcast i8* %25 to [16 x [4 x double]]*
br label %reduce-window.3.loop_header.dim.1.preheader
reduce-window.3.loop_header.dim.1.preheader: ; preds = %reduce-window.3.loop_exit.dim.1, %fusion.1.loop_exit.dim.0
%reduce-window.3.invar_address.dim.0.0155 = phi i64 [ 0, %fusion.1.loop_exit.dim.0 ], [ %invar.inc46, %reduce-window.3.loop_exit.dim.1 ]
%572 = shl nsw i64 %reduce-window.3.invar_address.dim.0.0155, 5
%573 = add nsw i64 %572, -6
%574 = icmp ult i64 %573, 500
%575 = add nsw i64 %572, -5
%576 = icmp ult i64 %575, 500
%577 = add nsw i64 %572, -4
%578 = icmp ult i64 %577, 500
%579 = add nsw i64 %572, -3
%580 = icmp ult i64 %579, 500
%581 = add nsw i64 %572, -2
%582 = icmp ult i64 %581, 500
%583 = add nsw i64 %572, -1
%584 = icmp ult i64 %583, 500
%585 = icmp ult i64 %572, 500
%586 = or i64 %572, 1
%587 = icmp ult i64 %586, 500
%588 = or i64 %572, 2
%589 = icmp ult i64 %588, 500
%590 = or i64 %572, 3
%591 = icmp ult i64 %590, 500
%592 = or i64 %572, 4
%593 = icmp ult i64 %592, 500
%594 = or i64 %572, 5
%595 = icmp ult i64 %594, 500
%596 = or i64 %572, 6
%597 = icmp ult i64 %596, 500
%598 = or i64 %572, 7
%599 = icmp ult i64 %598, 500
%600 = or i64 %572, 8
%601 = icmp ult i64 %600, 500
%602 = or i64 %572, 9
%603 = icmp ult i64 %602, 500
%604 = or i64 %572, 10
%605 = icmp ult i64 %604, 500
%606 = or i64 %572, 11
%607 = icmp ult i64 %606, 500
%608 = or i64 %572, 12
%609 = icmp ult i64 %608, 500
%610 = or i64 %572, 13
%611 = icmp ult i64 %610, 500
%612 = or i64 %572, 14
%613 = icmp ult i64 %612, 500
%614 = or i64 %572, 15
%615 = icmp ult i64 %614, 500
%616 = or i64 %572, 16
%617 = icmp ult i64 %616, 500
%618 = or i64 %572, 17
%619 = icmp ult i64 %618, 500
%620 = or i64 %572, 18
%621 = icmp ult i64 %620, 500
%622 = or i64 %572, 19
%623 = icmp ult i64 %622, 500
%624 = or i64 %572, 20
%625 = icmp ult i64 %624, 500
%626 = or i64 %572, 21
%627 = icmp ult i64 %626, 500
%628 = or i64 %572, 22
%629 = icmp ult i64 %628, 500
%630 = or i64 %572, 23
%631 = icmp ult i64 %630, 500
%632 = or i64 %572, 24
%633 = icmp ult i64 %632, 500
%634 = or i64 %572, 25
%635 = icmp ult i64 %634, 500
br label %reduce-window.3.loop_header.window.0.preheader
reduce-window.3.loop_header.window.0.preheader: ; preds = %reduce-window.3.loop_exit.window.1.31, %reduce-window.3.loop_header.dim.1.preheader
%reduce-window.3.invar_address.dim.1.0154 = phi i64 [ 0, %reduce-window.3.loop_header.dim.1.preheader ], [ %invar.inc47, %reduce-window.3.loop_exit.window.1.31 ]
br i1 %574, label %in_bounds-true51.us, label %reduce-window.3.loop_exit.window.1
in_bounds-true51.us: ; preds = %reduce-window.3.loop_header.window.0.preheader
%636 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %573, i64 %reduce-window.3.invar_address.dim.1.0154
%637 = load double, double* %636, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us = fadd reassoc double %637, 0.000000e+00
br label %reduce-window.3.loop_exit.window.1
reduce-window.3.loop_exit.window.1: ; preds = %in_bounds-true51.us, %reduce-window.3.loop_header.window.0.preheader
%reduce_window_accum_ptr48.1.lcssa = phi double [ %add.1441.i.us, %in_bounds-true51.us ], [ 0.000000e+00, %reduce-window.3.loop_header.window.0.preheader ]
br i1 %576, label %in_bounds-true51.us.1, label %reduce-window.3.loop_exit.window.1.1
in_bounds-true51.us.1: ; preds = %reduce-window.3.loop_exit.window.1
%638 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %575, i64 %reduce-window.3.invar_address.dim.1.0154
%639 = load double, double* %638, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.1 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa, %639
br label %reduce-window.3.loop_exit.window.1.1
reduce-window.3.loop_exit.window.1.1: ; preds = %in_bounds-true51.us.1, %reduce-window.3.loop_exit.window.1
%reduce_window_accum_ptr48.1.lcssa.1 = phi double [ %add.1441.i.us.1, %in_bounds-true51.us.1 ], [ %reduce_window_accum_ptr48.1.lcssa, %reduce-window.3.loop_exit.window.1 ]
br i1 %578, label %in_bounds-true51.us.2, label %reduce-window.3.loop_exit.window.1.2
in_bounds-true51.us.2: ; preds = %reduce-window.3.loop_exit.window.1.1
%640 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %577, i64 %reduce-window.3.invar_address.dim.1.0154
%641 = load double, double* %640, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.2 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.1, %641
br label %reduce-window.3.loop_exit.window.1.2
reduce-window.3.loop_exit.window.1.2: ; preds = %in_bounds-true51.us.2, %reduce-window.3.loop_exit.window.1.1
%reduce_window_accum_ptr48.1.lcssa.2 = phi double [ %add.1441.i.us.2, %in_bounds-true51.us.2 ], [ %reduce_window_accum_ptr48.1.lcssa.1, %reduce-window.3.loop_exit.window.1.1 ]
br i1 %580, label %in_bounds-true51.us.3, label %reduce-window.3.loop_exit.window.1.3
in_bounds-true51.us.3: ; preds = %reduce-window.3.loop_exit.window.1.2
%642 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %579, i64 %reduce-window.3.invar_address.dim.1.0154
%643 = load double, double* %642, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.3 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.2, %643
br label %reduce-window.3.loop_exit.window.1.3
reduce-window.3.loop_exit.window.1.3: ; preds = %in_bounds-true51.us.3, %reduce-window.3.loop_exit.window.1.2
%reduce_window_accum_ptr48.1.lcssa.3 = phi double [ %add.1441.i.us.3, %in_bounds-true51.us.3 ], [ %reduce_window_accum_ptr48.1.lcssa.2, %reduce-window.3.loop_exit.window.1.2 ]
br i1 %582, label %in_bounds-true51.us.4, label %reduce-window.3.loop_exit.window.1.4
in_bounds-true51.us.4: ; preds = %reduce-window.3.loop_exit.window.1.3
%644 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %581, i64 %reduce-window.3.invar_address.dim.1.0154
%645 = load double, double* %644, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.4 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.3, %645
br label %reduce-window.3.loop_exit.window.1.4
reduce-window.3.loop_exit.window.1.4: ; preds = %in_bounds-true51.us.4, %reduce-window.3.loop_exit.window.1.3
%reduce_window_accum_ptr48.1.lcssa.4 = phi double [ %add.1441.i.us.4, %in_bounds-true51.us.4 ], [ %reduce_window_accum_ptr48.1.lcssa.3, %reduce-window.3.loop_exit.window.1.3 ]
br i1 %584, label %in_bounds-true51.us.5, label %reduce-window.3.loop_exit.window.1.5
in_bounds-true51.us.5: ; preds = %reduce-window.3.loop_exit.window.1.4
%646 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %583, i64 %reduce-window.3.invar_address.dim.1.0154
%647 = load double, double* %646, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.5 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.4, %647
br label %reduce-window.3.loop_exit.window.1.5
reduce-window.3.loop_exit.window.1.5: ; preds = %in_bounds-true51.us.5, %reduce-window.3.loop_exit.window.1.4
%reduce_window_accum_ptr48.1.lcssa.5 = phi double [ %add.1441.i.us.5, %in_bounds-true51.us.5 ], [ %reduce_window_accum_ptr48.1.lcssa.4, %reduce-window.3.loop_exit.window.1.4 ]
br i1 %585, label %in_bounds-true51.us.6, label %reduce-window.3.loop_exit.window.1.6
in_bounds-true51.us.6: ; preds = %reduce-window.3.loop_exit.window.1.5
%648 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %572, i64 %reduce-window.3.invar_address.dim.1.0154
%649 = load double, double* %648, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.6 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.5, %649
br label %reduce-window.3.loop_exit.window.1.6
reduce-window.3.loop_exit.window.1.6: ; preds = %in_bounds-true51.us.6, %reduce-window.3.loop_exit.window.1.5
%reduce_window_accum_ptr48.1.lcssa.6 = phi double [ %add.1441.i.us.6, %in_bounds-true51.us.6 ], [ %reduce_window_accum_ptr48.1.lcssa.5, %reduce-window.3.loop_exit.window.1.5 ]
br i1 %587, label %in_bounds-true51.us.7, label %reduce-window.3.loop_exit.window.1.7
in_bounds-true51.us.7: ; preds = %reduce-window.3.loop_exit.window.1.6
%650 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %586, i64 %reduce-window.3.invar_address.dim.1.0154
%651 = load double, double* %650, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.7 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.6, %651
br label %reduce-window.3.loop_exit.window.1.7
reduce-window.3.loop_exit.window.1.7: ; preds = %in_bounds-true51.us.7, %reduce-window.3.loop_exit.window.1.6
%reduce_window_accum_ptr48.1.lcssa.7 = phi double [ %add.1441.i.us.7, %in_bounds-true51.us.7 ], [ %reduce_window_accum_ptr48.1.lcssa.6, %reduce-window.3.loop_exit.window.1.6 ]
br i1 %589, label %in_bounds-true51.us.8, label %reduce-window.3.loop_exit.window.1.8
in_bounds-true51.us.8: ; preds = %reduce-window.3.loop_exit.window.1.7
%652 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %588, i64 %reduce-window.3.invar_address.dim.1.0154
%653 = load double, double* %652, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.8 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.7, %653
br label %reduce-window.3.loop_exit.window.1.8
reduce-window.3.loop_exit.window.1.8: ; preds = %in_bounds-true51.us.8, %reduce-window.3.loop_exit.window.1.7
%reduce_window_accum_ptr48.1.lcssa.8 = phi double [ %add.1441.i.us.8, %in_bounds-true51.us.8 ], [ %reduce_window_accum_ptr48.1.lcssa.7, %reduce-window.3.loop_exit.window.1.7 ]
br i1 %591, label %in_bounds-true51.us.9, label %reduce-window.3.loop_exit.window.1.9
in_bounds-true51.us.9: ; preds = %reduce-window.3.loop_exit.window.1.8
%654 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %590, i64 %reduce-window.3.invar_address.dim.1.0154
%655 = load double, double* %654, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.9 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.8, %655
br label %reduce-window.3.loop_exit.window.1.9
reduce-window.3.loop_exit.window.1.9: ; preds = %in_bounds-true51.us.9, %reduce-window.3.loop_exit.window.1.8
%reduce_window_accum_ptr48.1.lcssa.9 = phi double [ %add.1441.i.us.9, %in_bounds-true51.us.9 ], [ %reduce_window_accum_ptr48.1.lcssa.8, %reduce-window.3.loop_exit.window.1.8 ]
br i1 %593, label %in_bounds-true51.us.10, label %reduce-window.3.loop_exit.window.1.10
in_bounds-true51.us.10: ; preds = %reduce-window.3.loop_exit.window.1.9
%656 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %592, i64 %reduce-window.3.invar_address.dim.1.0154
%657 = load double, double* %656, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.10 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.9, %657
br label %reduce-window.3.loop_exit.window.1.10
reduce-window.3.loop_exit.window.1.10: ; preds = %in_bounds-true51.us.10, %reduce-window.3.loop_exit.window.1.9
%reduce_window_accum_ptr48.1.lcssa.10 = phi double [ %add.1441.i.us.10, %in_bounds-true51.us.10 ], [ %reduce_window_accum_ptr48.1.lcssa.9, %reduce-window.3.loop_exit.window.1.9 ]
br i1 %595, label %in_bounds-true51.us.11, label %reduce-window.3.loop_exit.window.1.11
in_bounds-true51.us.11: ; preds = %reduce-window.3.loop_exit.window.1.10
%658 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %594, i64 %reduce-window.3.invar_address.dim.1.0154
%659 = load double, double* %658, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.11 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.10, %659
br label %reduce-window.3.loop_exit.window.1.11
reduce-window.3.loop_exit.window.1.11: ; preds = %in_bounds-true51.us.11, %reduce-window.3.loop_exit.window.1.10
%reduce_window_accum_ptr48.1.lcssa.11 = phi double [ %add.1441.i.us.11, %in_bounds-true51.us.11 ], [ %reduce_window_accum_ptr48.1.lcssa.10, %reduce-window.3.loop_exit.window.1.10 ]
br i1 %597, label %in_bounds-true51.us.12, label %reduce-window.3.loop_exit.window.1.12
in_bounds-true51.us.12: ; preds = %reduce-window.3.loop_exit.window.1.11
%660 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %596, i64 %reduce-window.3.invar_address.dim.1.0154
%661 = load double, double* %660, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.12 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.11, %661
br label %reduce-window.3.loop_exit.window.1.12
reduce-window.3.loop_exit.window.1.12: ; preds = %in_bounds-true51.us.12, %reduce-window.3.loop_exit.window.1.11
%reduce_window_accum_ptr48.1.lcssa.12 = phi double [ %add.1441.i.us.12, %in_bounds-true51.us.12 ], [ %reduce_window_accum_ptr48.1.lcssa.11, %reduce-window.3.loop_exit.window.1.11 ]
br i1 %599, label %in_bounds-true51.us.13, label %reduce-window.3.loop_exit.window.1.13
in_bounds-true51.us.13: ; preds = %reduce-window.3.loop_exit.window.1.12
%662 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %598, i64 %reduce-window.3.invar_address.dim.1.0154
%663 = load double, double* %662, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.13 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.12, %663
br label %reduce-window.3.loop_exit.window.1.13
reduce-window.3.loop_exit.window.1.13: ; preds = %in_bounds-true51.us.13, %reduce-window.3.loop_exit.window.1.12
%reduce_window_accum_ptr48.1.lcssa.13 = phi double [ %add.1441.i.us.13, %in_bounds-true51.us.13 ], [ %reduce_window_accum_ptr48.1.lcssa.12, %reduce-window.3.loop_exit.window.1.12 ]
br i1 %601, label %in_bounds-true51.us.14, label %reduce-window.3.loop_exit.window.1.14
in_bounds-true51.us.14: ; preds = %reduce-window.3.loop_exit.window.1.13
%664 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %600, i64 %reduce-window.3.invar_address.dim.1.0154
%665 = load double, double* %664, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.14 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.13, %665
br label %reduce-window.3.loop_exit.window.1.14
reduce-window.3.loop_exit.window.1.14: ; preds = %in_bounds-true51.us.14, %reduce-window.3.loop_exit.window.1.13
%reduce_window_accum_ptr48.1.lcssa.14 = phi double [ %add.1441.i.us.14, %in_bounds-true51.us.14 ], [ %reduce_window_accum_ptr48.1.lcssa.13, %reduce-window.3.loop_exit.window.1.13 ]
br i1 %603, label %in_bounds-true51.us.15, label %reduce-window.3.loop_exit.window.1.15
in_bounds-true51.us.15: ; preds = %reduce-window.3.loop_exit.window.1.14
%666 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %602, i64 %reduce-window.3.invar_address.dim.1.0154
%667 = load double, double* %666, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.15 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.14, %667
br label %reduce-window.3.loop_exit.window.1.15
reduce-window.3.loop_exit.window.1.15: ; preds = %in_bounds-true51.us.15, %reduce-window.3.loop_exit.window.1.14
%reduce_window_accum_ptr48.1.lcssa.15 = phi double [ %add.1441.i.us.15, %in_bounds-true51.us.15 ], [ %reduce_window_accum_ptr48.1.lcssa.14, %reduce-window.3.loop_exit.window.1.14 ]
br i1 %605, label %in_bounds-true51.us.16, label %reduce-window.3.loop_exit.window.1.16
in_bounds-true51.us.16: ; preds = %reduce-window.3.loop_exit.window.1.15
%668 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %604, i64 %reduce-window.3.invar_address.dim.1.0154
%669 = load double, double* %668, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.16 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.15, %669
br label %reduce-window.3.loop_exit.window.1.16
reduce-window.3.loop_exit.window.1.16: ; preds = %in_bounds-true51.us.16, %reduce-window.3.loop_exit.window.1.15
%reduce_window_accum_ptr48.1.lcssa.16 = phi double [ %add.1441.i.us.16, %in_bounds-true51.us.16 ], [ %reduce_window_accum_ptr48.1.lcssa.15, %reduce-window.3.loop_exit.window.1.15 ]
br i1 %607, label %in_bounds-true51.us.17, label %reduce-window.3.loop_exit.window.1.17
in_bounds-true51.us.17: ; preds = %reduce-window.3.loop_exit.window.1.16
%670 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %606, i64 %reduce-window.3.invar_address.dim.1.0154
%671 = load double, double* %670, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.17 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.16, %671
br label %reduce-window.3.loop_exit.window.1.17
reduce-window.3.loop_exit.window.1.17: ; preds = %in_bounds-true51.us.17, %reduce-window.3.loop_exit.window.1.16
%reduce_window_accum_ptr48.1.lcssa.17 = phi double [ %add.1441.i.us.17, %in_bounds-true51.us.17 ], [ %reduce_window_accum_ptr48.1.lcssa.16, %reduce-window.3.loop_exit.window.1.16 ]
br i1 %609, label %in_bounds-true51.us.18, label %reduce-window.3.loop_exit.window.1.18
in_bounds-true51.us.18: ; preds = %reduce-window.3.loop_exit.window.1.17
%672 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %608, i64 %reduce-window.3.invar_address.dim.1.0154
%673 = load double, double* %672, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.18 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.17, %673
br label %reduce-window.3.loop_exit.window.1.18
reduce-window.3.loop_exit.window.1.18: ; preds = %in_bounds-true51.us.18, %reduce-window.3.loop_exit.window.1.17
%reduce_window_accum_ptr48.1.lcssa.18 = phi double [ %add.1441.i.us.18, %in_bounds-true51.us.18 ], [ %reduce_window_accum_ptr48.1.lcssa.17, %reduce-window.3.loop_exit.window.1.17 ]
br i1 %611, label %in_bounds-true51.us.19, label %reduce-window.3.loop_exit.window.1.19
in_bounds-true51.us.19: ; preds = %reduce-window.3.loop_exit.window.1.18
%674 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %610, i64 %reduce-window.3.invar_address.dim.1.0154
%675 = load double, double* %674, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.19 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.18, %675
br label %reduce-window.3.loop_exit.window.1.19
reduce-window.3.loop_exit.window.1.19: ; preds = %in_bounds-true51.us.19, %reduce-window.3.loop_exit.window.1.18
%reduce_window_accum_ptr48.1.lcssa.19 = phi double [ %add.1441.i.us.19, %in_bounds-true51.us.19 ], [ %reduce_window_accum_ptr48.1.lcssa.18, %reduce-window.3.loop_exit.window.1.18 ]
br i1 %613, label %in_bounds-true51.us.20, label %reduce-window.3.loop_exit.window.1.20
in_bounds-true51.us.20: ; preds = %reduce-window.3.loop_exit.window.1.19
%676 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %612, i64 %reduce-window.3.invar_address.dim.1.0154
%677 = load double, double* %676, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.20 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.19, %677
br label %reduce-window.3.loop_exit.window.1.20
reduce-window.3.loop_exit.window.1.20: ; preds = %in_bounds-true51.us.20, %reduce-window.3.loop_exit.window.1.19
%reduce_window_accum_ptr48.1.lcssa.20 = phi double [ %add.1441.i.us.20, %in_bounds-true51.us.20 ], [ %reduce_window_accum_ptr48.1.lcssa.19, %reduce-window.3.loop_exit.window.1.19 ]
br i1 %615, label %in_bounds-true51.us.21, label %reduce-window.3.loop_exit.window.1.21
in_bounds-true51.us.21: ; preds = %reduce-window.3.loop_exit.window.1.20
%678 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %614, i64 %reduce-window.3.invar_address.dim.1.0154
%679 = load double, double* %678, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.21 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.20, %679
br label %reduce-window.3.loop_exit.window.1.21
reduce-window.3.loop_exit.window.1.21: ; preds = %in_bounds-true51.us.21, %reduce-window.3.loop_exit.window.1.20
%reduce_window_accum_ptr48.1.lcssa.21 = phi double [ %add.1441.i.us.21, %in_bounds-true51.us.21 ], [ %reduce_window_accum_ptr48.1.lcssa.20, %reduce-window.3.loop_exit.window.1.20 ]
br i1 %617, label %in_bounds-true51.us.22, label %reduce-window.3.loop_exit.window.1.22
in_bounds-true51.us.22: ; preds = %reduce-window.3.loop_exit.window.1.21
%680 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %616, i64 %reduce-window.3.invar_address.dim.1.0154
%681 = load double, double* %680, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.22 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.21, %681
br label %reduce-window.3.loop_exit.window.1.22
reduce-window.3.loop_exit.window.1.22: ; preds = %in_bounds-true51.us.22, %reduce-window.3.loop_exit.window.1.21
%reduce_window_accum_ptr48.1.lcssa.22 = phi double [ %add.1441.i.us.22, %in_bounds-true51.us.22 ], [ %reduce_window_accum_ptr48.1.lcssa.21, %reduce-window.3.loop_exit.window.1.21 ]
br i1 %619, label %in_bounds-true51.us.23, label %reduce-window.3.loop_exit.window.1.23
in_bounds-true51.us.23: ; preds = %reduce-window.3.loop_exit.window.1.22
%682 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %618, i64 %reduce-window.3.invar_address.dim.1.0154
%683 = load double, double* %682, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.23 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.22, %683
br label %reduce-window.3.loop_exit.window.1.23
reduce-window.3.loop_exit.window.1.23: ; preds = %in_bounds-true51.us.23, %reduce-window.3.loop_exit.window.1.22
%reduce_window_accum_ptr48.1.lcssa.23 = phi double [ %add.1441.i.us.23, %in_bounds-true51.us.23 ], [ %reduce_window_accum_ptr48.1.lcssa.22, %reduce-window.3.loop_exit.window.1.22 ]
br i1 %621, label %in_bounds-true51.us.24, label %reduce-window.3.loop_exit.window.1.24
in_bounds-true51.us.24: ; preds = %reduce-window.3.loop_exit.window.1.23
%684 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %620, i64 %reduce-window.3.invar_address.dim.1.0154
%685 = load double, double* %684, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.24 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.23, %685
br label %reduce-window.3.loop_exit.window.1.24
reduce-window.3.loop_exit.window.1.24: ; preds = %in_bounds-true51.us.24, %reduce-window.3.loop_exit.window.1.23
%reduce_window_accum_ptr48.1.lcssa.24 = phi double [ %add.1441.i.us.24, %in_bounds-true51.us.24 ], [ %reduce_window_accum_ptr48.1.lcssa.23, %reduce-window.3.loop_exit.window.1.23 ]
br i1 %623, label %in_bounds-true51.us.25, label %reduce-window.3.loop_exit.window.1.25
in_bounds-true51.us.25: ; preds = %reduce-window.3.loop_exit.window.1.24
%686 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %622, i64 %reduce-window.3.invar_address.dim.1.0154
%687 = load double, double* %686, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.25 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.24, %687
br label %reduce-window.3.loop_exit.window.1.25
reduce-window.3.loop_exit.window.1.25: ; preds = %in_bounds-true51.us.25, %reduce-window.3.loop_exit.window.1.24
%reduce_window_accum_ptr48.1.lcssa.25 = phi double [ %add.1441.i.us.25, %in_bounds-true51.us.25 ], [ %reduce_window_accum_ptr48.1.lcssa.24, %reduce-window.3.loop_exit.window.1.24 ]
br i1 %625, label %in_bounds-true51.us.26, label %reduce-window.3.loop_exit.window.1.26
in_bounds-true51.us.26: ; preds = %reduce-window.3.loop_exit.window.1.25
%688 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %624, i64 %reduce-window.3.invar_address.dim.1.0154
%689 = load double, double* %688, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.26 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.25, %689
br label %reduce-window.3.loop_exit.window.1.26
reduce-window.3.loop_exit.window.1.26: ; preds = %in_bounds-true51.us.26, %reduce-window.3.loop_exit.window.1.25
%reduce_window_accum_ptr48.1.lcssa.26 = phi double [ %add.1441.i.us.26, %in_bounds-true51.us.26 ], [ %reduce_window_accum_ptr48.1.lcssa.25, %reduce-window.3.loop_exit.window.1.25 ]
br i1 %627, label %in_bounds-true51.us.27, label %reduce-window.3.loop_exit.window.1.27
in_bounds-true51.us.27: ; preds = %reduce-window.3.loop_exit.window.1.26
%690 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %626, i64 %reduce-window.3.invar_address.dim.1.0154
%691 = load double, double* %690, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.27 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.26, %691
br label %reduce-window.3.loop_exit.window.1.27
reduce-window.3.loop_exit.window.1.27: ; preds = %in_bounds-true51.us.27, %reduce-window.3.loop_exit.window.1.26
%reduce_window_accum_ptr48.1.lcssa.27 = phi double [ %add.1441.i.us.27, %in_bounds-true51.us.27 ], [ %reduce_window_accum_ptr48.1.lcssa.26, %reduce-window.3.loop_exit.window.1.26 ]
br i1 %629, label %in_bounds-true51.us.28, label %reduce-window.3.loop_exit.window.1.28
in_bounds-true51.us.28: ; preds = %reduce-window.3.loop_exit.window.1.27
%692 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %628, i64 %reduce-window.3.invar_address.dim.1.0154
%693 = load double, double* %692, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.28 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.27, %693
br label %reduce-window.3.loop_exit.window.1.28
reduce-window.3.loop_exit.window.1.28: ; preds = %in_bounds-true51.us.28, %reduce-window.3.loop_exit.window.1.27
%reduce_window_accum_ptr48.1.lcssa.28 = phi double [ %add.1441.i.us.28, %in_bounds-true51.us.28 ], [ %reduce_window_accum_ptr48.1.lcssa.27, %reduce-window.3.loop_exit.window.1.27 ]
br i1 %631, label %in_bounds-true51.us.29, label %reduce-window.3.loop_exit.window.1.29
in_bounds-true51.us.29: ; preds = %reduce-window.3.loop_exit.window.1.28
%694 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %630, i64 %reduce-window.3.invar_address.dim.1.0154
%695 = load double, double* %694, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.29 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.28, %695
br label %reduce-window.3.loop_exit.window.1.29
reduce-window.3.loop_exit.window.1.29: ; preds = %in_bounds-true51.us.29, %reduce-window.3.loop_exit.window.1.28
%reduce_window_accum_ptr48.1.lcssa.29 = phi double [ %add.1441.i.us.29, %in_bounds-true51.us.29 ], [ %reduce_window_accum_ptr48.1.lcssa.28, %reduce-window.3.loop_exit.window.1.28 ]
br i1 %633, label %in_bounds-true51.us.30, label %reduce-window.3.loop_exit.window.1.30
in_bounds-true51.us.30: ; preds = %reduce-window.3.loop_exit.window.1.29
%696 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %632, i64 %reduce-window.3.invar_address.dim.1.0154
%697 = load double, double* %696, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.30 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.29, %697
br label %reduce-window.3.loop_exit.window.1.30
reduce-window.3.loop_exit.window.1.30: ; preds = %in_bounds-true51.us.30, %reduce-window.3.loop_exit.window.1.29
%reduce_window_accum_ptr48.1.lcssa.30 = phi double [ %add.1441.i.us.30, %in_bounds-true51.us.30 ], [ %reduce_window_accum_ptr48.1.lcssa.29, %reduce-window.3.loop_exit.window.1.29 ]
br i1 %635, label %in_bounds-true51.us.31, label %reduce-window.3.loop_exit.window.1.31
in_bounds-true51.us.31: ; preds = %reduce-window.3.loop_exit.window.1.30
%698 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %634, i64 %reduce-window.3.invar_address.dim.1.0154
%699 = load double, double* %698, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.31 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.30, %699
br label %reduce-window.3.loop_exit.window.1.31
reduce-window.3.loop_exit.window.1.31: ; preds = %in_bounds-true51.us.31, %reduce-window.3.loop_exit.window.1.30
%reduce_window_accum_ptr48.1.lcssa.31 = phi double [ %add.1441.i.us.31, %in_bounds-true51.us.31 ], [ %reduce_window_accum_ptr48.1.lcssa.30, %reduce-window.3.loop_exit.window.1.30 ]
%700 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.3, i64 0, i64 %reduce-window.3.invar_address.dim.0.0155, i64 %reduce-window.3.invar_address.dim.1.0154
store double %reduce_window_accum_ptr48.1.lcssa.31, double* %700, align 8, !alias.scope !46, !noalias !47
%invar.inc47 = add nuw nsw i64 %reduce-window.3.invar_address.dim.1.0154, 1
%exitcond199 = icmp eq i64 %invar.inc47, 4
br i1 %exitcond199, label %reduce-window.3.loop_exit.dim.1, label %reduce-window.3.loop_header.window.0.preheader
reduce-window.3.loop_exit.dim.1: ; preds = %reduce-window.3.loop_exit.window.1.31
%invar.inc46 = add nuw nsw i64 %reduce-window.3.invar_address.dim.0.0155, 1
%exitcond200 = icmp eq i64 %invar.inc46, 16
br i1 %exitcond200, label %reduce-window.3.vectorized_inner.loop_body.reduction_dim.0, label %reduce-window.3.loop_header.dim.1.preheader
reduce-window.3.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.3.loop_exit.dim.1
%701 = getelementptr inbounds i8, i8* %4, i64 48576
%702 = bitcast i8* %25 to <4 x double>*
%703 = load <4 x double>, <4 x double>* %702, align 16, !alias.scope !46, !noalias !47
%704 = fadd reassoc <4 x double> %703, zeroinitializer
%705 = getelementptr inbounds i8, i8* %4, i64 32032
%706 = bitcast i8* %705 to <4 x double>*
%707 = load <4 x double>, <4 x double>* %706, align 16, !alias.scope !46, !noalias !47
%708 = fadd reassoc <4 x double> %704, %707
%709 = getelementptr inbounds i8, i8* %4, i64 32064
%710 = bitcast i8* %709 to <4 x double>*
%711 = load <4 x double>, <4 x double>* %710, align 16, !alias.scope !46, !noalias !47
%712 = fadd reassoc <4 x double> %708, %711
%713 = getelementptr inbounds i8, i8* %4, i64 32096
%714 = bitcast i8* %713 to <4 x double>*
%715 = load <4 x double>, <4 x double>* %714, align 16, !alias.scope !46, !noalias !47
%716 = fadd reassoc <4 x double> %712, %715
%717 = getelementptr inbounds i8, i8* %4, i64 32128
%718 = bitcast i8* %717 to <4 x double>*
%719 = load <4 x double>, <4 x double>* %718, align 16, !alias.scope !46, !noalias !47
%720 = fadd reassoc <4 x double> %716, %719
%721 = getelementptr inbounds i8, i8* %4, i64 32160
%722 = bitcast i8* %721 to <4 x double>*
%723 = load <4 x double>, <4 x double>* %722, align 16, !alias.scope !46, !noalias !47
%724 = fadd reassoc <4 x double> %720, %723
%725 = getelementptr inbounds i8, i8* %4, i64 32192
%726 = bitcast i8* %725 to <4 x double>*
%727 = load <4 x double>, <4 x double>* %726, align 16, !alias.scope !46, !noalias !47
%728 = fadd reassoc <4 x double> %724, %727
%729 = getelementptr inbounds i8, i8* %4, i64 32224
%730 = bitcast i8* %729 to <4 x double>*
%731 = load <4 x double>, <4 x double>* %730, align 16, !alias.scope !46, !noalias !47
%732 = fadd reassoc <4 x double> %728, %731
%733 = getelementptr inbounds i8, i8* %4, i64 32256
%734 = bitcast i8* %733 to <4 x double>*
%735 = load <4 x double>, <4 x double>* %734, align 16, !alias.scope !46, !noalias !47
%736 = fadd reassoc <4 x double> %732, %735
%737 = getelementptr inbounds i8, i8* %4, i64 32288
%738 = bitcast i8* %737 to <4 x double>*
%739 = load <4 x double>, <4 x double>* %738, align 16, !alias.scope !46, !noalias !47
%740 = fadd reassoc <4 x double> %736, %739
%741 = getelementptr inbounds i8, i8* %4, i64 32320
%742 = bitcast i8* %741 to <4 x double>*
%743 = load <4 x double>, <4 x double>* %742, align 16, !alias.scope !46, !noalias !47
%744 = fadd reassoc <4 x double> %740, %743
%745 = getelementptr inbounds i8, i8* %4, i64 32352
%746 = bitcast i8* %745 to <4 x double>*
%747 = load <4 x double>, <4 x double>* %746, align 16, !alias.scope !46, !noalias !47
%748 = fadd reassoc <4 x double> %744, %747
%749 = getelementptr inbounds i8, i8* %4, i64 32384
%750 = bitcast i8* %749 to <4 x double>*
%751 = load <4 x double>, <4 x double>* %750, align 16, !alias.scope !46, !noalias !47
%752 = fadd reassoc <4 x double> %748, %751
%753 = getelementptr inbounds i8, i8* %4, i64 32416
%754 = bitcast i8* %753 to <4 x double>*
%755 = load <4 x double>, <4 x double>* %754, align 16, !alias.scope !46, !noalias !47
%756 = fadd reassoc <4 x double> %752, %755
%757 = getelementptr inbounds i8, i8* %4, i64 32448
%758 = bitcast i8* %757 to <4 x double>*
%759 = load <4 x double>, <4 x double>* %758, align 16, !alias.scope !46, !noalias !47
%760 = fadd reassoc <4 x double> %756, %759
%761 = getelementptr inbounds i8, i8* %4, i64 32480
%762 = bitcast i8* %761 to <4 x double>*
%763 = load <4 x double>, <4 x double>* %762, align 16, !alias.scope !46, !noalias !47
%764 = fadd reassoc <4 x double> %760, %763
%765 = bitcast i8* %701 to <4 x double>*
store <4 x double> %764, <4 x double>* %765, align 16, !alias.scope !48, !noalias !49
%766 = bitcast i8* %18 to <4 x double>*
%wide.load328 = load <4 x double>, <4 x double>* %766, align 16, !alias.scope !20, !noalias !21
%767 = fmul <4 x double> %wide.load328, %wide.load328
%768 = fdiv <4 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>, %767
%769 = bitcast i8* %18 to <4 x double>*
store <4 x double> %768, <4 x double>* %769, align 16, !alias.scope !20, !noalias !50
%770 = bitcast [12 x double]* %2 to <4 x double>*
%wide.load337 = load <4 x double>, <4 x double>* %770, align 16, !invariant.load !0, !noalias !4
%771 = bitcast i8* %18 to <4 x double>*
%wide.load340 = load <4 x double>, <4 x double>* %771, align 16, !alias.scope !20, !noalias !50
%wide.load337.1 = load <4 x double>, <4 x double>* %770, align 16, !invariant.load !0, !noalias !4
%772 = bitcast i8* %18 to <4 x double>*
%wide.load340.1 = load <4 x double>, <4 x double>* %772, align 16, !alias.scope !20, !noalias !50
%wide.load337.2 = load <4 x double>, <4 x double>* %770, align 16, !invariant.load !0, !noalias !4
%773 = bitcast i8* %18 to <4 x double>*
%wide.load340.2 = load <4 x double>, <4 x double>* %773, align 16, !alias.scope !20, !noalias !50
%wide.load337.3 = load <4 x double>, <4 x double>* %770, align 16, !invariant.load !0, !noalias !4
%774 = bitcast i8* %18 to <4 x double>*
%wide.load340.3 = load <4 x double>, <4 x double>* %774, align 16, !alias.scope !20, !noalias !50
br label %vector.ph332
vector.ph332: ; preds = %vector.ph332, %reduce-window.3.vectorized_inner.loop_body.reduction_dim.0
%fusion.5.invar_address.dim.0.0147 = phi i64 [ 0, %reduce-window.3.vectorized_inner.loop_body.reduction_dim.0 ], [ %invar.inc65.3, %vector.ph332 ]
%775 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.5.invar_address.dim.0.0147
%776 = load double, double* %775, align 16, !alias.scope !24, !noalias !25
%broadcast.splatinsert338 = insertelement <4 x double> poison, double %776, i64 0
%broadcast.splat339 = shufflevector <4 x double> %broadcast.splatinsert338, <4 x double> poison, <4 x i32> zeroinitializer
%777 = fmul <4 x double> %broadcast.splat339, %wide.load337
%778 = fmul <4 x double> %777, %wide.load340
%779 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.5.invar_address.dim.0.0147, i64 0
%780 = bitcast double* %779 to <4 x double>*
%wide.load341 = load <4 x double>, <4 x double>* %780, align 16, !alias.scope !18, !noalias !19
%781 = fmul <4 x double> %778, %wide.load341
%782 = bitcast double* %779 to <4 x double>*
store <4 x double> %781, <4 x double>* %782, align 16, !alias.scope !18, !noalias !51
%invar.inc65 = or i64 %fusion.5.invar_address.dim.0.0147, 1
%783 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc65
%784 = load double, double* %783, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert338.1 = insertelement <4 x double> poison, double %784, i64 0
%broadcast.splat339.1 = shufflevector <4 x double> %broadcast.splatinsert338.1, <4 x double> poison, <4 x i32> zeroinitializer
%785 = fmul <4 x double> %broadcast.splat339.1, %wide.load337.1
%786 = fmul <4 x double> %785, %wide.load340.1
%787 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc65, i64 0
%788 = bitcast double* %787 to <4 x double>*
%wide.load341.1 = load <4 x double>, <4 x double>* %788, align 16, !alias.scope !18, !noalias !19
%789 = fmul <4 x double> %786, %wide.load341.1
%790 = bitcast double* %787 to <4 x double>*
store <4 x double> %789, <4 x double>* %790, align 16, !alias.scope !18, !noalias !51
%invar.inc65.1 = or i64 %fusion.5.invar_address.dim.0.0147, 2
%791 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc65.1
%792 = load double, double* %791, align 16, !alias.scope !24, !noalias !25
%broadcast.splatinsert338.2 = insertelement <4 x double> poison, double %792, i64 0
%broadcast.splat339.2 = shufflevector <4 x double> %broadcast.splatinsert338.2, <4 x double> poison, <4 x i32> zeroinitializer
%793 = fmul <4 x double> %broadcast.splat339.2, %wide.load337.2
%794 = fmul <4 x double> %793, %wide.load340.2
%795 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc65.1, i64 0
%796 = bitcast double* %795 to <4 x double>*
%wide.load341.2 = load <4 x double>, <4 x double>* %796, align 16, !alias.scope !18, !noalias !19
%797 = fmul <4 x double> %794, %wide.load341.2
%798 = bitcast double* %795 to <4 x double>*
store <4 x double> %797, <4 x double>* %798, align 16, !alias.scope !18, !noalias !51
%invar.inc65.2 = or i64 %fusion.5.invar_address.dim.0.0147, 3
%799 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc65.2
%800 = load double, double* %799, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert338.3 = insertelement <4 x double> poison, double %800, i64 0
%broadcast.splat339.3 = shufflevector <4 x double> %broadcast.splatinsert338.3, <4 x double> poison, <4 x i32> zeroinitializer
%801 = fmul <4 x double> %broadcast.splat339.3, %wide.load337.3
%802 = fmul <4 x double> %801, %wide.load340.3
%803 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc65.2, i64 0
%804 = bitcast double* %803 to <4 x double>*
%wide.load341.3 = load <4 x double>, <4 x double>* %804, align 16, !alias.scope !18, !noalias !19
%805 = fmul <4 x double> %802, %wide.load341.3
%806 = bitcast double* %803 to <4 x double>*
store <4 x double> %805, <4 x double>* %806, align 16, !alias.scope !18, !noalias !51
%invar.inc65.3 = add nuw nsw i64 %fusion.5.invar_address.dim.0.0147, 4
%exitcond195.3 = icmp eq i64 %invar.inc65.3, 500
br i1 %exitcond195.3, label %fusion.5.loop_exit.dim.0, label %vector.ph332
fusion.5.loop_exit.dim.0: ; preds = %vector.ph332
%reduce-window.1 = bitcast i8* %65 to [16 x [4 x double]]*
br label %reduce-window.1.loop_header.dim.1.preheader
reduce-window.1.loop_header.dim.1.preheader: ; preds = %reduce-window.1.loop_exit.dim.1, %fusion.5.loop_exit.dim.0
%reduce-window.1.invar_address.dim.0.0145 = phi i64 [ 0, %fusion.5.loop_exit.dim.0 ], [ %invar.inc67, %reduce-window.1.loop_exit.dim.1 ]
%807 = shl nsw i64 %reduce-window.1.invar_address.dim.0.0145, 5
%808 = add nsw i64 %807, -6
%809 = icmp ult i64 %808, 500
%810 = add nsw i64 %807, -5
%811 = icmp ult i64 %810, 500
%812 = add nsw i64 %807, -4
%813 = icmp ult i64 %812, 500
%814 = add nsw i64 %807, -3
%815 = icmp ult i64 %814, 500
%816 = add nsw i64 %807, -2
%817 = icmp ult i64 %816, 500
%818 = add nsw i64 %807, -1
%819 = icmp ult i64 %818, 500
%820 = icmp ult i64 %807, 500
%821 = or i64 %807, 1
%822 = icmp ult i64 %821, 500
%823 = or i64 %807, 2
%824 = icmp ult i64 %823, 500
%825 = or i64 %807, 3
%826 = icmp ult i64 %825, 500
%827 = or i64 %807, 4
%828 = icmp ult i64 %827, 500
%829 = or i64 %807, 5
%830 = icmp ult i64 %829, 500
%831 = or i64 %807, 6
%832 = icmp ult i64 %831, 500
%833 = or i64 %807, 7
%834 = icmp ult i64 %833, 500
%835 = or i64 %807, 8
%836 = icmp ult i64 %835, 500
%837 = or i64 %807, 9
%838 = icmp ult i64 %837, 500
%839 = or i64 %807, 10
%840 = icmp ult i64 %839, 500
%841 = or i64 %807, 11
%842 = icmp ult i64 %841, 500
%843 = or i64 %807, 12
%844 = icmp ult i64 %843, 500
%845 = or i64 %807, 13
%846 = icmp ult i64 %845, 500
%847 = or i64 %807, 14
%848 = icmp ult i64 %847, 500
%849 = or i64 %807, 15
%850 = icmp ult i64 %849, 500
%851 = or i64 %807, 16
%852 = icmp ult i64 %851, 500
%853 = or i64 %807, 17
%854 = icmp ult i64 %853, 500
%855 = or i64 %807, 18
%856 = icmp ult i64 %855, 500
%857 = or i64 %807, 19
%858 = icmp ult i64 %857, 500
%859 = or i64 %807, 20
%860 = icmp ult i64 %859, 500
%861 = or i64 %807, 21
%862 = icmp ult i64 %861, 500
%863 = or i64 %807, 22
%864 = icmp ult i64 %863, 500
%865 = or i64 %807, 23
%866 = icmp ult i64 %865, 500
%867 = or i64 %807, 24
%868 = icmp ult i64 %867, 500
%869 = or i64 %807, 25
%870 = icmp ult i64 %869, 500
br label %reduce-window.1.loop_header.window.0.preheader
reduce-window.1.loop_header.window.0.preheader: ; preds = %reduce-window.1.loop_exit.window.1.31, %reduce-window.1.loop_header.dim.1.preheader
%reduce-window.1.invar_address.dim.1.0144 = phi i64 [ 0, %reduce-window.1.loop_header.dim.1.preheader ], [ %invar.inc68, %reduce-window.1.loop_exit.window.1.31 ]
br i1 %809, label %in_bounds-true72.us, label %reduce-window.1.loop_exit.window.1
in_bounds-true72.us: ; preds = %reduce-window.1.loop_header.window.0.preheader
%871 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %808, i64 %reduce-window.1.invar_address.dim.1.0144
%872 = load double, double* %871, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us = fadd reassoc double %872, 0.000000e+00
br label %reduce-window.1.loop_exit.window.1
reduce-window.1.loop_exit.window.1: ; preds = %in_bounds-true72.us, %reduce-window.1.loop_header.window.0.preheader
%reduce_window_accum_ptr69.1.lcssa = phi double [ %add.1281.i.us, %in_bounds-true72.us ], [ 0.000000e+00, %reduce-window.1.loop_header.window.0.preheader ]
br i1 %811, label %in_bounds-true72.us.1, label %reduce-window.1.loop_exit.window.1.1
in_bounds-true72.us.1: ; preds = %reduce-window.1.loop_exit.window.1
%873 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %810, i64 %reduce-window.1.invar_address.dim.1.0144
%874 = load double, double* %873, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.1 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa, %874
br label %reduce-window.1.loop_exit.window.1.1
reduce-window.1.loop_exit.window.1.1: ; preds = %in_bounds-true72.us.1, %reduce-window.1.loop_exit.window.1
%reduce_window_accum_ptr69.1.lcssa.1 = phi double [ %add.1281.i.us.1, %in_bounds-true72.us.1 ], [ %reduce_window_accum_ptr69.1.lcssa, %reduce-window.1.loop_exit.window.1 ]
br i1 %813, label %in_bounds-true72.us.2, label %reduce-window.1.loop_exit.window.1.2
in_bounds-true72.us.2: ; preds = %reduce-window.1.loop_exit.window.1.1
%875 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %812, i64 %reduce-window.1.invar_address.dim.1.0144
%876 = load double, double* %875, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.2 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.1, %876
br label %reduce-window.1.loop_exit.window.1.2
reduce-window.1.loop_exit.window.1.2: ; preds = %in_bounds-true72.us.2, %reduce-window.1.loop_exit.window.1.1
%reduce_window_accum_ptr69.1.lcssa.2 = phi double [ %add.1281.i.us.2, %in_bounds-true72.us.2 ], [ %reduce_window_accum_ptr69.1.lcssa.1, %reduce-window.1.loop_exit.window.1.1 ]
br i1 %815, label %in_bounds-true72.us.3, label %reduce-window.1.loop_exit.window.1.3
in_bounds-true72.us.3: ; preds = %reduce-window.1.loop_exit.window.1.2
%877 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %814, i64 %reduce-window.1.invar_address.dim.1.0144
%878 = load double, double* %877, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.3 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.2, %878
br label %reduce-window.1.loop_exit.window.1.3
reduce-window.1.loop_exit.window.1.3: ; preds = %in_bounds-true72.us.3, %reduce-window.1.loop_exit.window.1.2
%reduce_window_accum_ptr69.1.lcssa.3 = phi double [ %add.1281.i.us.3, %in_bounds-true72.us.3 ], [ %reduce_window_accum_ptr69.1.lcssa.2, %reduce-window.1.loop_exit.window.1.2 ]
br i1 %817, label %in_bounds-true72.us.4, label %reduce-window.1.loop_exit.window.1.4
in_bounds-true72.us.4: ; preds = %reduce-window.1.loop_exit.window.1.3
%879 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %816, i64 %reduce-window.1.invar_address.dim.1.0144
%880 = load double, double* %879, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.4 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.3, %880
br label %reduce-window.1.loop_exit.window.1.4
reduce-window.1.loop_exit.window.1.4: ; preds = %in_bounds-true72.us.4, %reduce-window.1.loop_exit.window.1.3
%reduce_window_accum_ptr69.1.lcssa.4 = phi double [ %add.1281.i.us.4, %in_bounds-true72.us.4 ], [ %reduce_window_accum_ptr69.1.lcssa.3, %reduce-window.1.loop_exit.window.1.3 ]
br i1 %819, label %in_bounds-true72.us.5, label %reduce-window.1.loop_exit.window.1.5
in_bounds-true72.us.5: ; preds = %reduce-window.1.loop_exit.window.1.4
%881 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %818, i64 %reduce-window.1.invar_address.dim.1.0144
%882 = load double, double* %881, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.5 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.4, %882
br label %reduce-window.1.loop_exit.window.1.5
reduce-window.1.loop_exit.window.1.5: ; preds = %in_bounds-true72.us.5, %reduce-window.1.loop_exit.window.1.4
%reduce_window_accum_ptr69.1.lcssa.5 = phi double [ %add.1281.i.us.5, %in_bounds-true72.us.5 ], [ %reduce_window_accum_ptr69.1.lcssa.4, %reduce-window.1.loop_exit.window.1.4 ]
br i1 %820, label %in_bounds-true72.us.6, label %reduce-window.1.loop_exit.window.1.6
in_bounds-true72.us.6: ; preds = %reduce-window.1.loop_exit.window.1.5
%883 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %807, i64 %reduce-window.1.invar_address.dim.1.0144
%884 = load double, double* %883, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.6 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.5, %884
br label %reduce-window.1.loop_exit.window.1.6
reduce-window.1.loop_exit.window.1.6: ; preds = %in_bounds-true72.us.6, %reduce-window.1.loop_exit.window.1.5
%reduce_window_accum_ptr69.1.lcssa.6 = phi double [ %add.1281.i.us.6, %in_bounds-true72.us.6 ], [ %reduce_window_accum_ptr69.1.lcssa.5, %reduce-window.1.loop_exit.window.1.5 ]
br i1 %822, label %in_bounds-true72.us.7, label %reduce-window.1.loop_exit.window.1.7
in_bounds-true72.us.7: ; preds = %reduce-window.1.loop_exit.window.1.6
%885 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %821, i64 %reduce-window.1.invar_address.dim.1.0144
%886 = load double, double* %885, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.7 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.6, %886
br label %reduce-window.1.loop_exit.window.1.7
reduce-window.1.loop_exit.window.1.7: ; preds = %in_bounds-true72.us.7, %reduce-window.1.loop_exit.window.1.6
%reduce_window_accum_ptr69.1.lcssa.7 = phi double [ %add.1281.i.us.7, %in_bounds-true72.us.7 ], [ %reduce_window_accum_ptr69.1.lcssa.6, %reduce-window.1.loop_exit.window.1.6 ]
br i1 %824, label %in_bounds-true72.us.8, label %reduce-window.1.loop_exit.window.1.8
in_bounds-true72.us.8: ; preds = %reduce-window.1.loop_exit.window.1.7
%887 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %823, i64 %reduce-window.1.invar_address.dim.1.0144
%888 = load double, double* %887, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.8 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.7, %888
br label %reduce-window.1.loop_exit.window.1.8
reduce-window.1.loop_exit.window.1.8: ; preds = %in_bounds-true72.us.8, %reduce-window.1.loop_exit.window.1.7
%reduce_window_accum_ptr69.1.lcssa.8 = phi double [ %add.1281.i.us.8, %in_bounds-true72.us.8 ], [ %reduce_window_accum_ptr69.1.lcssa.7, %reduce-window.1.loop_exit.window.1.7 ]
br i1 %826, label %in_bounds-true72.us.9, label %reduce-window.1.loop_exit.window.1.9
in_bounds-true72.us.9: ; preds = %reduce-window.1.loop_exit.window.1.8
%889 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %825, i64 %reduce-window.1.invar_address.dim.1.0144
%890 = load double, double* %889, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.9 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.8, %890
br label %reduce-window.1.loop_exit.window.1.9
reduce-window.1.loop_exit.window.1.9: ; preds = %in_bounds-true72.us.9, %reduce-window.1.loop_exit.window.1.8
%reduce_window_accum_ptr69.1.lcssa.9 = phi double [ %add.1281.i.us.9, %in_bounds-true72.us.9 ], [ %reduce_window_accum_ptr69.1.lcssa.8, %reduce-window.1.loop_exit.window.1.8 ]
br i1 %828, label %in_bounds-true72.us.10, label %reduce-window.1.loop_exit.window.1.10
in_bounds-true72.us.10: ; preds = %reduce-window.1.loop_exit.window.1.9
%891 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %827, i64 %reduce-window.1.invar_address.dim.1.0144
%892 = load double, double* %891, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.10 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.9, %892
br label %reduce-window.1.loop_exit.window.1.10
reduce-window.1.loop_exit.window.1.10: ; preds = %in_bounds-true72.us.10, %reduce-window.1.loop_exit.window.1.9
%reduce_window_accum_ptr69.1.lcssa.10 = phi double [ %add.1281.i.us.10, %in_bounds-true72.us.10 ], [ %reduce_window_accum_ptr69.1.lcssa.9, %reduce-window.1.loop_exit.window.1.9 ]
br i1 %830, label %in_bounds-true72.us.11, label %reduce-window.1.loop_exit.window.1.11
in_bounds-true72.us.11: ; preds = %reduce-window.1.loop_exit.window.1.10
%893 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %829, i64 %reduce-window.1.invar_address.dim.1.0144
%894 = load double, double* %893, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.11 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.10, %894
br label %reduce-window.1.loop_exit.window.1.11
reduce-window.1.loop_exit.window.1.11: ; preds = %in_bounds-true72.us.11, %reduce-window.1.loop_exit.window.1.10
%reduce_window_accum_ptr69.1.lcssa.11 = phi double [ %add.1281.i.us.11, %in_bounds-true72.us.11 ], [ %reduce_window_accum_ptr69.1.lcssa.10, %reduce-window.1.loop_exit.window.1.10 ]
br i1 %832, label %in_bounds-true72.us.12, label %reduce-window.1.loop_exit.window.1.12
in_bounds-true72.us.12: ; preds = %reduce-window.1.loop_exit.window.1.11
%895 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %831, i64 %reduce-window.1.invar_address.dim.1.0144
%896 = load double, double* %895, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.12 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.11, %896
br label %reduce-window.1.loop_exit.window.1.12
reduce-window.1.loop_exit.window.1.12: ; preds = %in_bounds-true72.us.12, %reduce-window.1.loop_exit.window.1.11
%reduce_window_accum_ptr69.1.lcssa.12 = phi double [ %add.1281.i.us.12, %in_bounds-true72.us.12 ], [ %reduce_window_accum_ptr69.1.lcssa.11, %reduce-window.1.loop_exit.window.1.11 ]
br i1 %834, label %in_bounds-true72.us.13, label %reduce-window.1.loop_exit.window.1.13
in_bounds-true72.us.13: ; preds = %reduce-window.1.loop_exit.window.1.12
%897 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %833, i64 %reduce-window.1.invar_address.dim.1.0144
%898 = load double, double* %897, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.13 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.12, %898
br label %reduce-window.1.loop_exit.window.1.13
reduce-window.1.loop_exit.window.1.13: ; preds = %in_bounds-true72.us.13, %reduce-window.1.loop_exit.window.1.12
%reduce_window_accum_ptr69.1.lcssa.13 = phi double [ %add.1281.i.us.13, %in_bounds-true72.us.13 ], [ %reduce_window_accum_ptr69.1.lcssa.12, %reduce-window.1.loop_exit.window.1.12 ]
br i1 %836, label %in_bounds-true72.us.14, label %reduce-window.1.loop_exit.window.1.14
in_bounds-true72.us.14: ; preds = %reduce-window.1.loop_exit.window.1.13
%899 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %835, i64 %reduce-window.1.invar_address.dim.1.0144
%900 = load double, double* %899, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.14 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.13, %900
br label %reduce-window.1.loop_exit.window.1.14
reduce-window.1.loop_exit.window.1.14: ; preds = %in_bounds-true72.us.14, %reduce-window.1.loop_exit.window.1.13
%reduce_window_accum_ptr69.1.lcssa.14 = phi double [ %add.1281.i.us.14, %in_bounds-true72.us.14 ], [ %reduce_window_accum_ptr69.1.lcssa.13, %reduce-window.1.loop_exit.window.1.13 ]
br i1 %838, label %in_bounds-true72.us.15, label %reduce-window.1.loop_exit.window.1.15
in_bounds-true72.us.15: ; preds = %reduce-window.1.loop_exit.window.1.14
%901 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %837, i64 %reduce-window.1.invar_address.dim.1.0144
%902 = load double, double* %901, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.15 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.14, %902
br label %reduce-window.1.loop_exit.window.1.15
reduce-window.1.loop_exit.window.1.15: ; preds = %in_bounds-true72.us.15, %reduce-window.1.loop_exit.window.1.14
%reduce_window_accum_ptr69.1.lcssa.15 = phi double [ %add.1281.i.us.15, %in_bounds-true72.us.15 ], [ %reduce_window_accum_ptr69.1.lcssa.14, %reduce-window.1.loop_exit.window.1.14 ]
br i1 %840, label %in_bounds-true72.us.16, label %reduce-window.1.loop_exit.window.1.16
in_bounds-true72.us.16: ; preds = %reduce-window.1.loop_exit.window.1.15
%903 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %839, i64 %reduce-window.1.invar_address.dim.1.0144
%904 = load double, double* %903, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.16 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.15, %904
br label %reduce-window.1.loop_exit.window.1.16
reduce-window.1.loop_exit.window.1.16: ; preds = %in_bounds-true72.us.16, %reduce-window.1.loop_exit.window.1.15
%reduce_window_accum_ptr69.1.lcssa.16 = phi double [ %add.1281.i.us.16, %in_bounds-true72.us.16 ], [ %reduce_window_accum_ptr69.1.lcssa.15, %reduce-window.1.loop_exit.window.1.15 ]
br i1 %842, label %in_bounds-true72.us.17, label %reduce-window.1.loop_exit.window.1.17
in_bounds-true72.us.17: ; preds = %reduce-window.1.loop_exit.window.1.16
%905 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %841, i64 %reduce-window.1.invar_address.dim.1.0144
%906 = load double, double* %905, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.17 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.16, %906
br label %reduce-window.1.loop_exit.window.1.17
reduce-window.1.loop_exit.window.1.17: ; preds = %in_bounds-true72.us.17, %reduce-window.1.loop_exit.window.1.16
%reduce_window_accum_ptr69.1.lcssa.17 = phi double [ %add.1281.i.us.17, %in_bounds-true72.us.17 ], [ %reduce_window_accum_ptr69.1.lcssa.16, %reduce-window.1.loop_exit.window.1.16 ]
br i1 %844, label %in_bounds-true72.us.18, label %reduce-window.1.loop_exit.window.1.18
in_bounds-true72.us.18: ; preds = %reduce-window.1.loop_exit.window.1.17
%907 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %843, i64 %reduce-window.1.invar_address.dim.1.0144
%908 = load double, double* %907, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.18 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.17, %908
br label %reduce-window.1.loop_exit.window.1.18
reduce-window.1.loop_exit.window.1.18: ; preds = %in_bounds-true72.us.18, %reduce-window.1.loop_exit.window.1.17
%reduce_window_accum_ptr69.1.lcssa.18 = phi double [ %add.1281.i.us.18, %in_bounds-true72.us.18 ], [ %reduce_window_accum_ptr69.1.lcssa.17, %reduce-window.1.loop_exit.window.1.17 ]
br i1 %846, label %in_bounds-true72.us.19, label %reduce-window.1.loop_exit.window.1.19
in_bounds-true72.us.19: ; preds = %reduce-window.1.loop_exit.window.1.18
%909 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %845, i64 %reduce-window.1.invar_address.dim.1.0144
%910 = load double, double* %909, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.19 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.18, %910
br label %reduce-window.1.loop_exit.window.1.19
reduce-window.1.loop_exit.window.1.19: ; preds = %in_bounds-true72.us.19, %reduce-window.1.loop_exit.window.1.18
%reduce_window_accum_ptr69.1.lcssa.19 = phi double [ %add.1281.i.us.19, %in_bounds-true72.us.19 ], [ %reduce_window_accum_ptr69.1.lcssa.18, %reduce-window.1.loop_exit.window.1.18 ]
br i1 %848, label %in_bounds-true72.us.20, label %reduce-window.1.loop_exit.window.1.20
in_bounds-true72.us.20: ; preds = %reduce-window.1.loop_exit.window.1.19
%911 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %847, i64 %reduce-window.1.invar_address.dim.1.0144
%912 = load double, double* %911, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.20 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.19, %912
br label %reduce-window.1.loop_exit.window.1.20
reduce-window.1.loop_exit.window.1.20: ; preds = %in_bounds-true72.us.20, %reduce-window.1.loop_exit.window.1.19
%reduce_window_accum_ptr69.1.lcssa.20 = phi double [ %add.1281.i.us.20, %in_bounds-true72.us.20 ], [ %reduce_window_accum_ptr69.1.lcssa.19, %reduce-window.1.loop_exit.window.1.19 ]
br i1 %850, label %in_bounds-true72.us.21, label %reduce-window.1.loop_exit.window.1.21
in_bounds-true72.us.21: ; preds = %reduce-window.1.loop_exit.window.1.20
%913 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %849, i64 %reduce-window.1.invar_address.dim.1.0144
%914 = load double, double* %913, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.21 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.20, %914
br label %reduce-window.1.loop_exit.window.1.21
reduce-window.1.loop_exit.window.1.21: ; preds = %in_bounds-true72.us.21, %reduce-window.1.loop_exit.window.1.20
%reduce_window_accum_ptr69.1.lcssa.21 = phi double [ %add.1281.i.us.21, %in_bounds-true72.us.21 ], [ %reduce_window_accum_ptr69.1.lcssa.20, %reduce-window.1.loop_exit.window.1.20 ]
br i1 %852, label %in_bounds-true72.us.22, label %reduce-window.1.loop_exit.window.1.22
in_bounds-true72.us.22: ; preds = %reduce-window.1.loop_exit.window.1.21
%915 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %851, i64 %reduce-window.1.invar_address.dim.1.0144
%916 = load double, double* %915, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.22 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.21, %916
br label %reduce-window.1.loop_exit.window.1.22
reduce-window.1.loop_exit.window.1.22: ; preds = %in_bounds-true72.us.22, %reduce-window.1.loop_exit.window.1.21
%reduce_window_accum_ptr69.1.lcssa.22 = phi double [ %add.1281.i.us.22, %in_bounds-true72.us.22 ], [ %reduce_window_accum_ptr69.1.lcssa.21, %reduce-window.1.loop_exit.window.1.21 ]
br i1 %854, label %in_bounds-true72.us.23, label %reduce-window.1.loop_exit.window.1.23
in_bounds-true72.us.23: ; preds = %reduce-window.1.loop_exit.window.1.22
%917 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %853, i64 %reduce-window.1.invar_address.dim.1.0144
%918 = load double, double* %917, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.23 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.22, %918
br label %reduce-window.1.loop_exit.window.1.23
reduce-window.1.loop_exit.window.1.23: ; preds = %in_bounds-true72.us.23, %reduce-window.1.loop_exit.window.1.22
%reduce_window_accum_ptr69.1.lcssa.23 = phi double [ %add.1281.i.us.23, %in_bounds-true72.us.23 ], [ %reduce_window_accum_ptr69.1.lcssa.22, %reduce-window.1.loop_exit.window.1.22 ]
br i1 %856, label %in_bounds-true72.us.24, label %reduce-window.1.loop_exit.window.1.24
in_bounds-true72.us.24: ; preds = %reduce-window.1.loop_exit.window.1.23
%919 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %855, i64 %reduce-window.1.invar_address.dim.1.0144
%920 = load double, double* %919, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.24 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.23, %920
br label %reduce-window.1.loop_exit.window.1.24
reduce-window.1.loop_exit.window.1.24: ; preds = %in_bounds-true72.us.24, %reduce-window.1.loop_exit.window.1.23
%reduce_window_accum_ptr69.1.lcssa.24 = phi double [ %add.1281.i.us.24, %in_bounds-true72.us.24 ], [ %reduce_window_accum_ptr69.1.lcssa.23, %reduce-window.1.loop_exit.window.1.23 ]
br i1 %858, label %in_bounds-true72.us.25, label %reduce-window.1.loop_exit.window.1.25
in_bounds-true72.us.25: ; preds = %reduce-window.1.loop_exit.window.1.24
%921 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %857, i64 %reduce-window.1.invar_address.dim.1.0144
%922 = load double, double* %921, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.25 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.24, %922
br label %reduce-window.1.loop_exit.window.1.25
reduce-window.1.loop_exit.window.1.25: ; preds = %in_bounds-true72.us.25, %reduce-window.1.loop_exit.window.1.24
%reduce_window_accum_ptr69.1.lcssa.25 = phi double [ %add.1281.i.us.25, %in_bounds-true72.us.25 ], [ %reduce_window_accum_ptr69.1.lcssa.24, %reduce-window.1.loop_exit.window.1.24 ]
br i1 %860, label %in_bounds-true72.us.26, label %reduce-window.1.loop_exit.window.1.26
in_bounds-true72.us.26: ; preds = %reduce-window.1.loop_exit.window.1.25
%923 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %859, i64 %reduce-window.1.invar_address.dim.1.0144
%924 = load double, double* %923, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.26 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.25, %924
br label %reduce-window.1.loop_exit.window.1.26
reduce-window.1.loop_exit.window.1.26: ; preds = %in_bounds-true72.us.26, %reduce-window.1.loop_exit.window.1.25
%reduce_window_accum_ptr69.1.lcssa.26 = phi double [ %add.1281.i.us.26, %in_bounds-true72.us.26 ], [ %reduce_window_accum_ptr69.1.lcssa.25, %reduce-window.1.loop_exit.window.1.25 ]
br i1 %862, label %in_bounds-true72.us.27, label %reduce-window.1.loop_exit.window.1.27
in_bounds-true72.us.27: ; preds = %reduce-window.1.loop_exit.window.1.26
%925 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %861, i64 %reduce-window.1.invar_address.dim.1.0144
%926 = load double, double* %925, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.27 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.26, %926
br label %reduce-window.1.loop_exit.window.1.27
reduce-window.1.loop_exit.window.1.27: ; preds = %in_bounds-true72.us.27, %reduce-window.1.loop_exit.window.1.26
%reduce_window_accum_ptr69.1.lcssa.27 = phi double [ %add.1281.i.us.27, %in_bounds-true72.us.27 ], [ %reduce_window_accum_ptr69.1.lcssa.26, %reduce-window.1.loop_exit.window.1.26 ]
br i1 %864, label %in_bounds-true72.us.28, label %reduce-window.1.loop_exit.window.1.28
in_bounds-true72.us.28: ; preds = %reduce-window.1.loop_exit.window.1.27
%927 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %863, i64 %reduce-window.1.invar_address.dim.1.0144
%928 = load double, double* %927, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.28 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.27, %928
br label %reduce-window.1.loop_exit.window.1.28
reduce-window.1.loop_exit.window.1.28: ; preds = %in_bounds-true72.us.28, %reduce-window.1.loop_exit.window.1.27
%reduce_window_accum_ptr69.1.lcssa.28 = phi double [ %add.1281.i.us.28, %in_bounds-true72.us.28 ], [ %reduce_window_accum_ptr69.1.lcssa.27, %reduce-window.1.loop_exit.window.1.27 ]
br i1 %866, label %in_bounds-true72.us.29, label %reduce-window.1.loop_exit.window.1.29
in_bounds-true72.us.29: ; preds = %reduce-window.1.loop_exit.window.1.28
%929 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %865, i64 %reduce-window.1.invar_address.dim.1.0144
%930 = load double, double* %929, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.29 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.28, %930
br label %reduce-window.1.loop_exit.window.1.29
reduce-window.1.loop_exit.window.1.29: ; preds = %in_bounds-true72.us.29, %reduce-window.1.loop_exit.window.1.28
%reduce_window_accum_ptr69.1.lcssa.29 = phi double [ %add.1281.i.us.29, %in_bounds-true72.us.29 ], [ %reduce_window_accum_ptr69.1.lcssa.28, %reduce-window.1.loop_exit.window.1.28 ]
br i1 %868, label %in_bounds-true72.us.30, label %reduce-window.1.loop_exit.window.1.30
in_bounds-true72.us.30: ; preds = %reduce-window.1.loop_exit.window.1.29
%931 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %867, i64 %reduce-window.1.invar_address.dim.1.0144
%932 = load double, double* %931, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.30 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.29, %932
br label %reduce-window.1.loop_exit.window.1.30
reduce-window.1.loop_exit.window.1.30: ; preds = %in_bounds-true72.us.30, %reduce-window.1.loop_exit.window.1.29
%reduce_window_accum_ptr69.1.lcssa.30 = phi double [ %add.1281.i.us.30, %in_bounds-true72.us.30 ], [ %reduce_window_accum_ptr69.1.lcssa.29, %reduce-window.1.loop_exit.window.1.29 ]
br i1 %870, label %in_bounds-true72.us.31, label %reduce-window.1.loop_exit.window.1.31
in_bounds-true72.us.31: ; preds = %reduce-window.1.loop_exit.window.1.30
%933 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %869, i64 %reduce-window.1.invar_address.dim.1.0144
%934 = load double, double* %933, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.31 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.30, %934
br label %reduce-window.1.loop_exit.window.1.31
reduce-window.1.loop_exit.window.1.31: ; preds = %in_bounds-true72.us.31, %reduce-window.1.loop_exit.window.1.30
%reduce_window_accum_ptr69.1.lcssa.31 = phi double [ %add.1281.i.us.31, %in_bounds-true72.us.31 ], [ %reduce_window_accum_ptr69.1.lcssa.30, %reduce-window.1.loop_exit.window.1.30 ]
%935 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.1, i64 0, i64 %reduce-window.1.invar_address.dim.0.0145, i64 %reduce-window.1.invar_address.dim.1.0144
store double %reduce_window_accum_ptr69.1.lcssa.31, double* %935, align 8, !alias.scope !53, !noalias !54
%invar.inc68 = add nuw nsw i64 %reduce-window.1.invar_address.dim.1.0144, 1
%exitcond192 = icmp eq i64 %invar.inc68, 4
br i1 %exitcond192, label %reduce-window.1.loop_exit.dim.1, label %reduce-window.1.loop_header.window.0.preheader
reduce-window.1.loop_exit.dim.1: ; preds = %reduce-window.1.loop_exit.window.1.31
%invar.inc67 = add nuw nsw i64 %reduce-window.1.invar_address.dim.0.0145, 1
%exitcond193 = icmp eq i64 %invar.inc67, 16
br i1 %exitcond193, label %reduce-window.1.vectorized_inner.loop_body.reduction_dim.0, label %reduce-window.1.loop_header.dim.1.preheader
reduce-window.1.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.1.loop_exit.dim.1
%936 = bitcast i8* %65 to <4 x double>*
%937 = load <4 x double>, <4 x double>* %936, align 16, !alias.scope !53, !noalias !54
%938 = fadd reassoc <4 x double> %937, zeroinitializer
%939 = getelementptr inbounds i8, i8* %4, i64 16032
%940 = bitcast i8* %939 to <4 x double>*
%941 = load <4 x double>, <4 x double>* %940, align 16, !alias.scope !53, !noalias !54
%942 = fadd reassoc <4 x double> %938, %941
%943 = getelementptr inbounds i8, i8* %4, i64 16064
%944 = bitcast i8* %943 to <4 x double>*
%945 = load <4 x double>, <4 x double>* %944, align 16, !alias.scope !53, !noalias !54
%946 = fadd reassoc <4 x double> %942, %945
%947 = getelementptr inbounds i8, i8* %4, i64 16096
%948 = bitcast i8* %947 to <4 x double>*
%949 = load <4 x double>, <4 x double>* %948, align 16, !alias.scope !53, !noalias !54
%950 = fadd reassoc <4 x double> %946, %949
%951 = getelementptr inbounds i8, i8* %4, i64 16128
%952 = bitcast i8* %951 to <4 x double>*
%953 = load <4 x double>, <4 x double>* %952, align 16, !alias.scope !53, !noalias !54
%954 = fadd reassoc <4 x double> %950, %953
%955 = getelementptr inbounds i8, i8* %4, i64 16160
%956 = bitcast i8* %955 to <4 x double>*
%957 = load <4 x double>, <4 x double>* %956, align 16, !alias.scope !53, !noalias !54
%958 = fadd reassoc <4 x double> %954, %957
%959 = getelementptr inbounds i8, i8* %4, i64 16192
%960 = bitcast i8* %959 to <4 x double>*
%961 = load <4 x double>, <4 x double>* %960, align 16, !alias.scope !53, !noalias !54
%962 = fadd reassoc <4 x double> %958, %961
%963 = getelementptr inbounds i8, i8* %4, i64 16224
%964 = bitcast i8* %963 to <4 x double>*
%965 = load <4 x double>, <4 x double>* %964, align 16, !alias.scope !53, !noalias !54
%966 = fadd reassoc <4 x double> %962, %965
%967 = getelementptr inbounds i8, i8* %4, i64 16256
%968 = bitcast i8* %967 to <4 x double>*
%969 = load <4 x double>, <4 x double>* %968, align 16, !alias.scope !53, !noalias !54
%970 = fadd reassoc <4 x double> %966, %969
%971 = getelementptr inbounds i8, i8* %4, i64 16288
%972 = bitcast i8* %971 to <4 x double>*
%973 = load <4 x double>, <4 x double>* %972, align 16, !alias.scope !53, !noalias !54
%974 = fadd reassoc <4 x double> %970, %973
%975 = getelementptr inbounds i8, i8* %4, i64 16320
%976 = bitcast i8* %975 to <4 x double>*
%977 = load <4 x double>, <4 x double>* %976, align 16, !alias.scope !53, !noalias !54
%978 = fadd reassoc <4 x double> %974, %977
%979 = getelementptr inbounds i8, i8* %4, i64 16352
%980 = bitcast i8* %979 to <4 x double>*
%981 = load <4 x double>, <4 x double>* %980, align 16, !alias.scope !53, !noalias !54
%982 = fadd reassoc <4 x double> %978, %981
%983 = getelementptr inbounds i8, i8* %4, i64 16384
%984 = bitcast i8* %983 to <4 x double>*
%985 = load <4 x double>, <4 x double>* %984, align 16, !alias.scope !53, !noalias !54
%986 = fadd reassoc <4 x double> %982, %985
%987 = getelementptr inbounds i8, i8* %4, i64 16416
%988 = bitcast i8* %987 to <4 x double>*
%989 = load <4 x double>, <4 x double>* %988, align 16, !alias.scope !53, !noalias !54
%990 = fadd reassoc <4 x double> %986, %989
%991 = getelementptr inbounds i8, i8* %4, i64 16448
%992 = bitcast i8* %991 to <4 x double>*
%993 = load <4 x double>, <4 x double>* %992, align 16, !alias.scope !53, !noalias !54
%994 = fadd reassoc <4 x double> %990, %993
%995 = getelementptr inbounds i8, i8* %4, i64 16480
%996 = bitcast i8* %995 to <4 x double>*
%997 = load <4 x double>, <4 x double>* %996, align 16, !alias.scope !53, !noalias !54
%998 = fadd reassoc <4 x double> %994, %997
%999 = bitcast i8* %4 to <4 x double>*
store <4 x double> %998, <4 x double>* %999, align 16, !alias.scope !55, !noalias !56
%1000 = bitcast i8* %473 to <4 x double>*
%unmaskedload = load <4 x double>, <4 x double>* %1000, align 16, !alias.scope !42, !noalias !43
%1001 = fadd <4 x double> %unmaskedload, zeroinitializer
%1002 = bitcast i8* %18 to <4 x double>*
store <4 x double> %1001, <4 x double>* %1002, align 16, !alias.scope !57, !noalias !58
%1003 = bitcast i8* %701 to <4 x double>*
%unmaskedload363 = load <4 x double>, <4 x double>* %1003, align 16, !alias.scope !48, !noalias !49
%1004 = fsub <4 x double> zeroinitializer, %unmaskedload363
%1005 = getelementptr inbounds i8, i8* %18, i64 32
%1006 = bitcast i8* %1005 to <4 x double>*
store <4 x double> %1004, <4 x double>* %1006, align 16, !alias.scope !57, !noalias !58
%1007 = bitcast i8* %4 to <4 x double>*
%unmaskedload364 = load <4 x double>, <4 x double>* %1007, align 16, !alias.scope !55, !noalias !56
%1008 = fneg <4 x double> %unmaskedload364
%1009 = getelementptr [12 x double], [12 x double]* %2, i64 0, i64 8
%1010 = bitcast double* %1009 to <4 x double>*
%wide.load350.2 = load <4 x double>, <4 x double>* %1010, align 16, !invariant.load !0, !noalias !4
%1011 = fmul <4 x double> %wide.load350.2, %wide.load350.2
%1012 = fmul <4 x double> %1011, <double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18>
%1013 = call <4 x double> @llvm.sqrt.v4f64(<4 x double> %1012)
%1014 = fdiv <4 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>, %1013
%1015 = fmul <4 x double> %1014, <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>
%1016 = fmul <4 x double> %1015, %1008
%1017 = fmul <4 x double> %1016, <double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18>
%1018 = bitcast i8* %249 to <4 x double>*
%unmaskedload365 = load <4 x double>, <4 x double>* %1018, align 16, !alias.scope !36, !noalias !37
%1019 = fmul <4 x double> %unmaskedload365, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%1020 = fsub <4 x double> %1017, %1019
%1021 = fmul <4 x double> %wide.load350.2, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%1022 = fmul <4 x double> %1021, %1020
%1023 = fadd <4 x double> %1022, zeroinitializer
%1024 = getelementptr inbounds i8, i8* %18, i64 64
%1025 = bitcast i8* %1024 to <4 x double>*
store <4 x double> %1023, <4 x double>* %1025, align 16, !alias.scope !57, !noalias !58
ret void
}
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare <4 x double> @llvm.exp.v4f64(<4 x double>) #1
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare <4 x double> @llvm.sqrt.v4f64(<4 x double>) #1
; Function Attrs: nocallback nofree nosync nounwind readnone willreturn
declare double @llvm.vector.reduce.fadd.v4f64(double, <4 x double>) #2
attributes #0 = { nofree nosync nounwind uwtable "denormal-fp-math"="preserve-sign" "no-frame-pointer-elim"="false" }
attributes #1 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
attributes #2 = { nocallback nofree nosync nounwind readnone willreturn }
!0 = !{}
!1 = !{i64 96}
!2 = !{i64 16}
!3 = !{i64 68512}
!4 = !{!5, !7, !8, !9, !10, !11, !12, !13, !14, !15, !16, !17}
!5 = !{!"buffer: {index:0, offset:0, size:32}", !6}
!6 = !{!"XLA global AA domain"}
!7 = !{!"buffer: {index:0, offset:0, size:96}", !6}
!8 = !{!"buffer: {index:18, offset:0, size:32}", !6}
!9 = !{!"buffer: {index:18, offset:0, size:16000}", !6}
!10 = !{!"buffer: {index:18, offset:16000, size:16000}", !6}
!11 = !{!"buffer: {index:18, offset:32000, size:16000}", !6}
!12 = !{!"buffer: {index:18, offset:48000, size:16000}", !6}
!13 = !{!"buffer: {index:18, offset:48512, size:32}", !6}
!14 = !{!"buffer: {index:18, offset:48544, size:32}", !6}
!15 = !{!"buffer: {index:18, offset:48576, size:32}", !6}
!16 = !{!"buffer: {index:18, offset:64000, size:4000}", !6}
!17 = !{!"buffer: {index:18, offset:68000, size:32}", !6}
!18 = !{!9}
!19 = !{!5, !10, !11, !12, !16, !17}
!20 = !{!5}
!21 = !{!9, !10, !11, !16}
!22 = !{!11}
!23 = !{!5, !9, !16}
!24 = !{!16}
!25 = !{!5, !9, !10, !11}
!26 = !{!10}
!27 = !{!5, !9, !12, !16, !17}
!28 = !{!17}
!29 = !{!9, !10, !12}
!30 = !{!12}
!31 = !{!32, !9, !10, !17, !33}
!32 = !{!"buffer: {index:2, offset:0, size:8}", !6}
!33 = !{!"buffer: {index:18, offset:68000, size:512}", !6}
!34 = !{!33}
!35 = !{!32, !12, !13}
!36 = !{!13}
!37 = !{!7, !32, !8, !14, !15, !33}
!38 = !{!32, !39, !16}
!39 = !{!"buffer: {index:18, offset:48000, size:512}", !6}
!40 = !{!39}
!41 = !{!32, !11, !14}
!42 = !{!14}
!43 = !{!7, !32, !8, !39, !13, !15}
!44 = !{!32, !9, !45}
!45 = !{!"buffer: {index:18, offset:32000, size:512}", !6}
!46 = !{!45}
!47 = !{!32, !10, !15}
!48 = !{!15}
!49 = !{!7, !32, !8, !45, !13, !14}
!50 = !{!9, !16}
!51 = !{!5, !32, !52, !16}
!52 = !{!"buffer: {index:18, offset:16000, size:512}", !6}
!53 = !{!52}
!54 = !{!32, !8, !9}
!55 = !{!8}
!56 = !{!7, !32, !52, !13, !14, !15}
!57 = !{!7}
!58 = !{!8, !13, !14, !15}
; ModuleID = '__compute_module'
source_filename = "__compute_module"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
@0 = private unnamed_addr constant [4000 x i8] c"[\DD\17\E0\F8\CA\E1\BF\B4\0Fk\E4\C6p\DC\BFQ/\A5\E2\9B\CE\9B?\96\E2pQ\BF*\D3\BF,\CA\8Fz\1Er\FC?@\A6\BED\84Q\F2\BF\A7\E5\A7\86\A3\FD\DD\BF\C7Y\C3L\82\FC\C3?\96 \80.\CC\22\05\C0\EFW\E8\AE\8E\0D\F0?\C6J~\F4nQ\F1?~\869\CC\87\F0\C7?\7F\9EL\C4\AC\94\E0?\EF\01ZY\B0\DC\F7?\95\1F\83\E5%\86\D7?'3\825\CB[\EC\BF\A5I\0C=\F4\E7\E5? p\DF\FC\03s\F9\BF\F0\C6\DA\1F%H\DA?\7F\08\85\C27g\EB\BF|\FEG}\D8\D0\F0\BF\8E\91O\F0\08\11\E0?fB\A7\C3\03\AE\CB\BF\A0\95F\13\07\9B\E6\BF\88l\C90\E5M\0D\C0\B1\C9\DE\E34\8C\C5?\\\84\1B\F1L1\D2?4\94lJ\09<\E2?\F2\A8\D9\D7\C0\C0\F6\BF\15\80\9E{j\D5\D7\BF\EEj\02P\DD\9D\D7?\A2\B7s\C7\C9.\7F\BF[\C4l\06b\01\E2?k\EA\EB%\C6[\BB?t\DB\84\05\019\E2?Ad%\9Er\CB\E5?\E4\14\99v\0Em\F5\BF\02\B0j\B4\14\80\CE\BFpLH)KO\F0?\98\D4\19%\E9t\E6?\AF@J\F9A\96\C2\BFvr\81\9E\9B\92\E4?H\FD\84+\0D\1C\FD?;\E8#\A2/\81\D7\BF\AD\E3\C4!\D05\E8?\F0>\F3\DF\BBF\B6?\1F\ADNk\FA<\EB\BF\ADJzI[\93\ED?b5\8B\CE\1F\CB\F9?2\1C\10S-\A0\ED\BF\92sF\16\CE|\DF?}G\D1\AB<\F0\CC\BF2R\D2\B7Q\A0\F5\BF\1EC\06\D6\F4Y\D3?\A6b\B7\C7\A6\9A\F3?\A4\8C\16\A8\81O\DD\BFG\16\0E\D0Z\99\D7\BF\D1\D1\A8\87'\D0\E2\BF}/g\DB\EE{\EC?G\14\87?f\A5\CE?r\98\12\F6\E9\F9\C8\BFe\90\86\E3\9A\EE\E4?s\FE\D5\D8\87-\EA\BF<\1E\88\03\B9h\FA\BF\0B\07A5tn\DA\BF\95\7F\E3\B7U\F2\9B?5\18\BDy\CC\0B\D3?U\85@\D1!E\B2?\E4\8273\E5\9F\EC\BF\80gD\FE\82\EA\FF\BF\C4\0C\84\F0\F2\F8\C7\BF-VgS\F3\BB\E2\BF\F2@\E7Q\83&\F8\BF(\D5\9F`f\C1\BB\BF\8F\FCR\C7\A6\C6\D7\BF\84\E0~d\D0Y\F3?nvM\05\00\1D\CA\BF\07]\FF\E7h\91\89?lT\F2=\89\FE\C1?\CC\84\16Y\AD\C1\EF\BF\83m\E7\87\16`\F2\BF\91v\EA\9E\F9\F1\F5?\\\1CW\E8#>\AE\BF\81UdB\D7\98\D6\BF{2{\D9\9D.\F7\BF0\8D\95Vs\1A\03@ID\0B\0By\1A\C0?:\C6#\F4\BB\8F\FF\BF\BA\92\19\B0\DEm\E6?\B4\E5\B0\A3\D2I\D4?\D6@D\D2\C6\AE\D1?\E0\DC!\8C\89\02\FA\BFD\EB\FE\C4|\FE\ED\BF\A4k6\01\99\C6\ED\BFZbA\1FO\D9\FF\BF\C7\1F\97{\E7\9A\C1?j,\B3\DCT2\09@\F1\0B\EE\08\CF\15\E7\BF\D64\8A\1A\8Bw\E2\BF\DD\CD\CF4\8Bf\DD?k\AEi\8A\80\A4\CF?\0A0}\CEDG\9A\BF\98.\C3\DD\01:\E4\BFM\E3\D5>\A3S\F0\BF\8D8e\9A\EF\FB\F4\BF\\\83z\C6r\FC\E5?\D9\0A\13\93\C07\B8\BF\07\ADJ\84N9\D2\BF1 Y\D1I\AE\D5\BF\B5Q\83\ED\00j\B8\BF\93E\10Fj\9B\E8?u\B17\BE?\14\F7?|\B0>e \9A\D1\BFK`s\0D\FBK\D8\BF0\DB\96\08T \E7\BF\9Abroj\E0\C1?\EB\FD\FDN\A7\8C\F6\BF\8F_K\7F&\E3\F0?\07\0A\8EW\0F\E7\01\C0s+Y\09\E5\8B\F2?\87\01\B9\0Fl\15\E6\BF'\03<~5\1D\F6\BFA\91x\99\D2\00\E3?:\C8\C35\E1&\E5?&s\DB\CBB\12\06@\0A\AE\E9\B3\BD\ED\DD?3\F1\C1\97\8F\A2\B4\BF\C8\1F:\E1\C8^\B4?\EF\08\B7;f3\D7\BFx\FC/S\CE\06\E6\BF\00h\A6\05\B9C\E6\BF$\D17\CAb\83\DB\BF\9B\0BeI\9F\BE\E3\BF\E9\D6\85&\833\E9\BF\A3\A7j\E7\FBV\EF?=\8E\C2\E1\A6\\\C5\BFb\91Tj\EC9\DC\BF\BE0o\DB\22\D4\85\BF\D9\9C\07@%\15\DA?\F1\83k\F7\A6z\D8\BF\B7\91\8C.\89\8F\DB\BF\D3\A2\C0\E5\F8\18\AB\BF\9E\CA\B5\84^k\E8?#\8D\1A\A1=S\FB\BF\C0\85\13\0D\1BH\E5\BF\C1\B0\1F\954\85\F9?]\EC\EFg\E5[\E1?>\86\BC\C9qL\D1?N=\01\1F\AE\9E\F2?\10\06\84\D6(5\EF\BF\08\F6o\C9\D9\EB\E2?\17\CB\98\FE\E1\98\E2\BF\18Z^\D3\06\A9\F0\BF9\A7\9F*L\A2\C8\BF+\8E\E3*\EE\D3\DB\BF\0AS\A5d\ED\8F\B5?\D9o:\C5t\B3\F0?\89\E0]\A3\AE\88\DF\BF\1B\E5\B6\C5\07\EF\F3?vPx\12\B2\ED\F1?\F7\AF\81\AA'\91\BF\BF\13\15>\14J\10\F1\BF+h:|:\80\D3?\99\CF\C3\FD\00\D1\FC\BF\BBuH^\E0\FB\C0\BF\92\84\DD a+\E4?\E8\F6c\9B\ED\BB\02\C08\9F\C6\DB\1Cr\C4\BF*\AC*j\B9\BE\E5?d\D0vn\1C\D5\E7\BF<H\D1i\EF\B0\F3?A\BB\AF\82\16s\F1?]\1Fc\8BuU\FE?\89\8D\96\A6\BA$\D1\BF\E6\F1;0\BFP\00@\9FC\09+\FF\89\AC?\0B\D2A\DD\F2\04\E7\BF\0E\CB\D5n\9D\D9\C4\BF\93I\9A\D2)s\D2\BF\86Z\05\BFvm\00\C0\BE!ph\D6\DD\01\C0\9C\97\10\BE\\t\F2\BF\FA~\F3Pk\F2\F8\BF\0B]J\EC2\A3\F5\BF\F36\B9\03u\BB\D6\BF\BB\1D{\BF\18\07\EE\BFp\95YS?\9B\E1?\FC\C0\D8\05\D4r\FA\BFG\0E\06j\E5H\F0\BFG\80Anx\AC\F5?(rH5\BC^\E7\BF\D3\A2?f\B5Y\F7?y\A8V\C7\10\CF\F2?FH\0C\84r\83\F7?\086\18\A6\83=\01@O\D2\D0|\09R\C9\BF\08+\B5\B9\AA\D0\F3\BF\ED\85F\9A\C4z\DE?N}\E6=\FA\1F\E2?\BF\B9F(\9B\87\01@\F6?QQL_\C5\BFI'=\0C[q\FD\BF^\85\D9\F6\AB\FE\E2\BFM\DE\1C\B9Dv\DC\BF\B9\09cI\1F\19\FE?N\85\E9\17\92l\EB\BF|E\C7\05\1C\FD\E0?@\DFw\A9\22R\EE?\CE\E8\BE\8E\B15\E0?f\8A\86C|\D4\F6\BF\EE\9D/W\11u\D1?\A5d&\0B\C3\EE\FA?\8F0\13pr$\EC?\93V\FB\1F\9F\D3\D7\BF\DAB\C0\C5\B6]\F3?\0E\F9 A\82\10\EA\BFY\93<F\1E=\E5\BF'\0Av\A9\0EO\D7\BF\E8\C0~\04;h\C0?\B1J\CC\E6\94`\EB\BF'\A0\ED\99\18\E2\E7?\1D\0B\FAw\E2S\CB\BF\1F\F4\D8\8D\83l\E3?m\88\11L\7FA\C3\BFG__\1D\BCV\D2?\A5\BD_\C8\A9\01\EF?\9EN\B7P\EA\BB\DD?V}\0F&N\CB\B9\BF\AD\D4ka\EA\19\EF?\E1\E7\B5U\94\BF\F5?\02\F3r\EDQo\ED?\97|V5\84+p\BF\FB\C8\9B\80\E7H\E5?0C\F4\A3\00\B7\DD\BF\AA\A5\83\DF\AD\A8\B8\BF\E1&O\80\ACl\F7\BF\A68\05\81\D4w\A1?\EA\E0 h\87\A7\C8?\F44>\C6\8E[\F4?\D4~\B6\83O\C0\E5\BF\06\B0\FBy\E3\C9\E6?\DFe\D8\F1\D7[\FA?\E0R\D4T\DE\C7\F5\BF\84\B3\E4\C94=\FA?\7F\01.\A7\EC\B1\F4\BF\ED\AD\93\C2\AB\7F\E3\BF^a\F8c\BB\8B\DF\BF\AD\04\FBaU\97\B3?\AAY\C4\D4\86a\C4?0\CE\DDk\F8t\DC?NX\88F\0Af\F3\BFw\F0\9A\88\E1\A0\F5\BFU\8Eq\B6\9C\82\F0\BF~SU=\0A0\F1?\229;$\E0\13\F1?\12(\9C\A3\DA\C4\C5\BFq)\8C\97\C9\CD\C8?\EFs\F8\D4`\DA\03\C0\22X\0F\7Fwd\DD\BF\F7l\A9\81c\09\F3\BFBg\BE\E3\1D\AD\D0?uh\86s\B70\E4\BF\EE&x$\A5\A3\F8?\DA\ED\E57\C2\80\BA\BFsz\CF\84&\CC\F0?\1EA`,X\EA\B5\BFV\11X^\0A~\FF\BF\E9\1B?\F25=\ED?\A0\BB\02J\F4C\F8?Pg-\C1\A1\D4\EE\BF\0C\063\FD\C9\03\F3?7D9\BEV\D1\CD\BF\8ChG)A\92\EE?FlH\82`\D5\D3\BF\91\AF\D6\0EJ\9C\A5\BFbt\B2\DB\AB\E3\FF\BF\A4&B\EF\FE\EF\E3?\7FN\D0\A6\83\15\06\C0\BF\B4r\C2hd\F3?\0C!\B3\FC\180\F9?\ED\F65\C2s\16\EB\BF\D2\88\85M\B6m\E7?\00\9B\8E\A8h\B4\F0?\B7\02}\E8&\F1\F9?+\1D\EB\92<\00\06@\DEEF#i\C1\FB?_\00\FCvK\AE\F3\BF?\80P\AD_)\D7\BF\C5Ly\F2\D1\04\C5?p\F8Ho\0D8\D2\BF\8E\AAC\B2\E9\0C\FD?g\E9E\E0\EF\A0\E8\BF.\22v\D9y\0E\D8\BF\D44p\06Y/\D4\BF\A5d\DB\A3Y\B3\CD?\87\12B\C2\D3\EF\EC\BF\B9l\C4\A6\B9\B7\C2?f\B6\E8\\a\93\CC?\08\CC\16\EEZ\05\B3\BFU-+W\CA\83\EB?\DF\90E\E68\E7\E9?\B6$W \F2\E5\E8?\8Aa\F5\EDa\9E\EF\BF\B8\ADYc\EDo\C6\BF\11Fj\D3\D1\E9\F6\BF}b3Ho\E2\DF?\EA,\A3^\B8H\F7?Qs\97\A6\FF\AA\EB\BF\9D\8EX\1B\BC\13\E4?\B1V\8E\00\86\16\E7?(\0Ba\FE&f\F0?\13\E2\1E)\C5\AE\F9?\DA\A9s\81\CD\B8\DA\BFQ+\A5\0D\D8\00\F3\BFdc\FB\17\DAw\FF?\FF\18\1E-\95y\EA\BF\B6\10J\84\0B\F4\FC\BFWy\90\19K\17\CC?A\04]\EA\89\22\FB?\9F\AF\B2\EF\EFx\B3?\D7\FAK\D7@UC\BF\C5 \FF\8An)\E4\BF\E0@\15)\91\F0\E6?\11\D1^p\ED!\FB\BFB\DB\C3\D2\16\08\03\C0\9E\AD\97\E1k\AA\C4?\F5 {V\EEF\D6\BF\09\91\92d\0A\F8\C8\BF\CER\C3\94\A3\97\E1\BFA<c\E3\16K\F1?kO\E3^6\B3\01\C0\B7\E7\06b\97\E6\EB?\B8\15\A0\C0i\84}\BF4\DB\BDy\DA6\F9\BF\F6\86\AE)\AF\AB\01\C0\10\B6u\C9\22\B9\E3\BFh4_\F6\C8\90\E2\BF\DCr\99\F5\0A\FB\F8\BFve\B6\1A\DD\CD\F4\BF\D8.\0E\E1.\18\F0\BF\04\84\DD^\AE\BF\E5?~\9C\A1\C3F\1F\A6\BFT\B0c\07\DCe\A4\BF\D4\0F\BC0\FA\10\DC\BF\01\90\BC\FB\B1{\B7\BF\FAQBg\1B\9C\F3?Z\8D~\A4}\B6\CD\BFQ\D0Y\06Ll\F3\BF\96\06K\D5\E3R\CE\BF\A8}\F7\DFG~\D8\BF\CD\E2\84\06\9B\80\FF\BF_\D1\D6\D1\A5F\F9\BFcP\0D.\8E\18\E2\BF#\E7\EC\9E\E2x\FB\BFQ\1E\F0\C1\F1\91\03\C0\12\C9\F7\14\BF\18\D1\BF`\1B\CF\D1\1A\B1\E5?\EC\84#L\8B\9E\C5\BFd}\F7ec\AD\F9?\E3\E3\D8\80!\F8\FB?\E2\9D\D5\95tU\ED?#\80H\C7\8F%\F2?\AC\C4A\AC\ACk\01\C0q\0E\F5\80\98%\D5\BF\ECCj8Q\1A\D1\BF\\\0C\89.&7\F3?\02JH+\A2\12\F5?A:!n\CCF\E3?\02\90\15\E2\DDr\EF\BF\A3\D3\07\81\D3T\F2\BF#\06P\F77\86\D0?\D4\A8|\83\A8B\02\C0jE23\BCd\08\C0\AF\E4\FA\C96\82\F4\BF\D8\D0M\07\83i\06@!8c\D2\F8\0B\E2?Y\F3\9E\84,H\DD\BF\A1\DC\C8\04v\92\E9\BF\99\FD\BB\1A\9E4\F1?\8E\BF\C8}\9C\D2\E1\BF\8C0\E1\7F\B0^\A9?\DD\D7\81\D6\92\85\EC\BFL\F4e\0D\F0\91\E6\BFjlQ\95JZ\F6?\AA$\8D\DE\A8\9A\FE\BF&\EDL\92\A6\81\E4\BFk\9E\93\BD-\C6\D9\BF\C6\98\E1Hp\17\CB?H\B7\D5C\A0\EB\01@\C3u_C^6\EC\BF\CB\EA\83\9F\A8\C3\E3\BF+\C0\B7ma\10\D9\BF\9A K\16\8Cq\EE?\B0~{\8F\E5\13\C2?\8D.?4\EDH\F3?\BF\B6o\0E6\81\98?\C8M\8F\8DD\06\EA\BF\04&\8A\FDm)\F0?\F1%\7F#\1A\1D\C3?\0B\FA\85\97mp\FC?\E2'\09/\16\F8\EA?[$\CB\C5\14]\EF\BFw\C1p\93\C4\95\F4?\D1Z\1ERT\18\DC?\A2\A92\D2\B4.\E0\BF\B2G\E94\DFz\FA\BF2\10\FD\E9P\D9\E4?1\A8\9E\83H\F2\E0\BF?\19\BE)\ED\FA\EC?U\D3\C2\83\12\F8\B6?\BB#\81u<\C7\CD?\1A\CF\CF\B3\E8\04\05@s\C0\CD\8F!i\D1?\9F\00\CAL\92\97\ED?h\0BZx\CCN\D9?O\CB\131W\0F\08\C0\DB\02M\AB\E4\E4\F1? \80\03\94\90_\C6?_\A1m{\06m\F3\BF\DA\D8\AA\96U\B8\C8?!\97\B3\FB?\7F\D3?\A8\1C\86tj\14\01\C0\0B.\19\10\0B\1D\E2?z\08iT\AD\AA\99?\\I\92;z\0F\D9\BF\C8M\EED\9B6\EC?\B1h^>\E7s\EA?\E6\0F.o\EC`\EE?O\DE\F4\87\9CDj\BF\BC\DE\99'1\BD\FC\BF\A3N\0Cm\\o\DA?3\11\16gu\98\F4\BF\85A|\1F6\E9\F1\BF\9D\B5\D2\1F4\BE\E8?v\AF\D9l\80\8F\D8\BF\B5\07\B9h\C3\E8\B3?\8E\1F5\AE\EF\22\E8\BF\B1\CB\DF\81h\D4\B4?\D1L<\EE'\94\D1?DY;;\A5\CB\F1?+\FC\8F\BB\87\0B\E1?\A9\97p\95i\09\E9?\F8|\B2/|\09\D4\BF91R\99At\A7\BF\E3%\E34\1B\A8\C5?\E7\EF_\FE\F8\BE\D7?\1F\AA\E7\E0\D9.\EE\BFy\00\1B\22_Y\E8\BF\9C\F7X3\C4\F2\D1?\F0hq\D2]\C4\A8\BF\FA-\D7\D0\9Fe\EF\BF#\05\DB\D5\04\D9\F4?^\CE\C8\AF@\85\AE?9\DB\A0\A2J\DF\BF?\1E\D8\07\A6\16\14\BD?9-v\01gJ\F5\BF\B7u)\F3ZE\D6\BF\03\D2\A7Y\DFX\D2\BF_m\86q\A4\93\E5?\A1L\BC\AC\FA!\DB\BF$\E4\E8~\FB\88\ED\BF\92p\D0\DFS\ED\D3?\B4Q\A6h\F6\04\DF\BF\FC\03\90E\CC\D7\8B\BF\E0\EC\F6S\95\D8\F3?,\BD\8D9\C6\87\F0?\10xIl\F4\95\BE\BFLx$\0F\F0a\E3\BF\E3\A8\ABJ\A6\D0\E8\BF\8E\9B\05k\EF\95\F2?\B1\9C^\D9\DE\E6\F3?O\B4\D0h7s\9C?\AE\93\BA\C4\D5d\F3\BF#\B0\A3\A4\82b\E4?ULx\EC\AC\DE\E5?\18\A1\F6\1B*\F9\E3?\81\A84\82\D2\A6\F5\BF&\C0\EB\E8\93\9A\EC?\93A\F1\B4\00\CC\EA?\9D\AF\8A'\F2\E2\D7\BFN\D6\8E\95f\DD\F2?\AA\06\87\F7eQ\E9?\1C\A2\0A\1B+\07\CC?\BA~C\F6\EF\8F\E3\BF\AF\86*\FE\0Ey\C9?2\AE~\C3\CA#\D4?7\85\94\98\05\EF\F3?\CDC~r\08,\E0?\88\C5<\1F=\C9\DC\BF\EDZS\EC-6\E3?\D2\C0\08|\946\E9?\EEb\B0\ED{\84\DE?WD\A2Z8\B5\E6\BF\E4(\E4\88\0D0\B8?\93r\FC\A8 3\FA\BF@\DC\E7m\E9\81\F2?\9E\F9\03v\ED\8B\E9?N\E3\F2H\0C5\F5\BFtU:\BF\81*\CC\BF\A2\AAy\E1\09$\E4?"
; Function Attrs: nofree nosync nounwind uwtable
define void @main.253(i8* nocapture readnone %retval, i8* noalias nocapture readnone %run_options, i8** noalias nocapture readnone %params, i8** noalias nocapture readonly %buffer_table, i8* noalias nocapture readnone %status, i64* noalias nocapture readnone %prof_counters) local_unnamed_addr #0 {
entry:
%0 = getelementptr inbounds i8*, i8** %buffer_table, i64 1
%1 = bitcast i8** %0 to [12 x double]**
%2 = load [12 x double]*, [12 x double]** %1, align 8, !invariant.load !0, !dereferenceable !1, !align !2
%3 = getelementptr inbounds i8*, i8** %buffer_table, i64 18
%4 = load i8*, i8** %3, align 8, !invariant.load !0, !dereferenceable !3, !align !2
%fusion.11 = bitcast i8* %4 to [500 x [4 x double]]*
%5 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%6 = bitcast double* %5 to <4 x double>*
%wide.load = load <4 x double>, <4 x double>* %6, align 16, !invariant.load !0, !noalias !4
%7 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%8 = bitcast double* %7 to <4 x double>*
%wide.load231 = load <4 x double>, <4 x double>* %8, align 16, !invariant.load !0, !noalias !4
%9 = fmul <4 x double> %wide.load231, %wide.load231
%10 = fmul <4 x double> %9, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
br label %vector.ph
vector.ph: ; preds = %vector.ph, %entry
%fusion.11.invar_address.dim.0.0186 = phi i64 [ 0, %entry ], [ %invar.inc, %vector.ph ]
%constant.121 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @0 to [500 x double]*), i64 0, i64 %fusion.11.invar_address.dim.0.0186
%constant.1212 = load double, double* %constant.121, align 8
%broadcast.splatinsert = insertelement <4 x double> poison, double %constant.1212, i64 0
%broadcast.splat = shufflevector <4 x double> %broadcast.splatinsert, <4 x double> poison, <4 x i32> zeroinitializer
%11 = fsub <4 x double> %broadcast.splat, %wide.load
%12 = fneg <4 x double> %11
%13 = fmul <4 x double> %11, %12
%14 = fdiv <4 x double> %13, %10
%15 = call <4 x double> @llvm.exp.v4f64(<4 x double> %14)
%16 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.11.invar_address.dim.0.0186, i64 0
%17 = bitcast double* %16 to <4 x double>*
store <4 x double> %15, <4 x double>* %17, align 16, !alias.scope !18, !noalias !19
%invar.inc = add nuw nsw i64 %fusion.11.invar_address.dim.0.0186, 1
%exitcond224 = icmp eq i64 %invar.inc, 500
br i1 %exitcond224, label %fusion.11.loop_exit.dim.0, label %vector.ph
fusion.11.loop_exit.dim.0: ; preds = %vector.ph
%18 = load i8*, i8** %buffer_table, align 8, !invariant.load !0, !dereferenceable !1, !align !2
%19 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%20 = bitcast double* %19 to <4 x double>*
%wide.load239 = load <4 x double>, <4 x double>* %20, align 16, !invariant.load !0, !noalias !4
%21 = fmul <4 x double> %wide.load239, %wide.load239
%22 = fmul <4 x double> %21, <double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18>
%23 = call <4 x double> @llvm.sqrt.v4f64(<4 x double> %22)
%24 = bitcast i8* %18 to <4 x double>*
store <4 x double> %23, <4 x double>* %24, align 16, !alias.scope !20, !noalias !21
%25 = getelementptr inbounds i8, i8* %4, i64 32000
%fusion.9 = bitcast i8* %25 to [500 x [4 x double]]*
%26 = bitcast i8* %18 to <4 x double>*
%wide.load249 = load <4 x double>, <4 x double>* %26, align 16, !alias.scope !20, !noalias !21
%27 = bitcast i8* %18 to <4 x double>*
%wide.load249.1 = load <4 x double>, <4 x double>* %27, align 16, !alias.scope !20, !noalias !21
%28 = bitcast i8* %18 to <4 x double>*
%wide.load249.2 = load <4 x double>, <4 x double>* %28, align 16, !alias.scope !20, !noalias !21
%29 = bitcast i8* %18 to <4 x double>*
%wide.load249.3 = load <4 x double>, <4 x double>* %29, align 16, !alias.scope !20, !noalias !21
br label %vector.ph243
vector.ph243: ; preds = %vector.ph243, %fusion.11.loop_exit.dim.0
%fusion.9.invar_address.dim.0.0183 = phi i64 [ 0, %fusion.11.loop_exit.dim.0 ], [ %invar.inc4.3, %vector.ph243 ]
%30 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.9.invar_address.dim.0.0183, i64 0
%31 = bitcast double* %30 to <4 x double>*
%wide.load248 = load <4 x double>, <4 x double>* %31, align 16, !alias.scope !18, !noalias !19
%32 = fdiv <4 x double> %wide.load248, %wide.load249
%33 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.9.invar_address.dim.0.0183, i64 0
%34 = bitcast double* %33 to <4 x double>*
store <4 x double> %32, <4 x double>* %34, align 16, !alias.scope !22, !noalias !23
%invar.inc4 = or i64 %fusion.9.invar_address.dim.0.0183, 1
%35 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc4, i64 0
%36 = bitcast double* %35 to <4 x double>*
%wide.load248.1 = load <4 x double>, <4 x double>* %36, align 16, !alias.scope !18, !noalias !19
%37 = fdiv <4 x double> %wide.load248.1, %wide.load249.1
%38 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc4, i64 0
%39 = bitcast double* %38 to <4 x double>*
store <4 x double> %37, <4 x double>* %39, align 16, !alias.scope !22, !noalias !23
%invar.inc4.1 = or i64 %fusion.9.invar_address.dim.0.0183, 2
%40 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc4.1, i64 0
%41 = bitcast double* %40 to <4 x double>*
%wide.load248.2 = load <4 x double>, <4 x double>* %41, align 16, !alias.scope !18, !noalias !19
%42 = fdiv <4 x double> %wide.load248.2, %wide.load249.2
%43 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc4.1, i64 0
%44 = bitcast double* %43 to <4 x double>*
store <4 x double> %42, <4 x double>* %44, align 16, !alias.scope !22, !noalias !23
%invar.inc4.2 = or i64 %fusion.9.invar_address.dim.0.0183, 3
%45 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc4.2, i64 0
%46 = bitcast double* %45 to <4 x double>*
%wide.load248.3 = load <4 x double>, <4 x double>* %46, align 16, !alias.scope !18, !noalias !19
%47 = fdiv <4 x double> %wide.load248.3, %wide.load249.3
%48 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc4.2, i64 0
%49 = bitcast double* %48 to <4 x double>*
store <4 x double> %47, <4 x double>* %49, align 16, !alias.scope !22, !noalias !23
%invar.inc4.3 = add nuw nsw i64 %fusion.9.invar_address.dim.0.0183, 4
%exitcond221.3 = icmp eq i64 %invar.inc4.3, 500
br i1 %exitcond221.3, label %fusion.9.loop_exit.dim.0, label %vector.ph243
fusion.9.loop_exit.dim.0: ; preds = %vector.ph243
%50 = getelementptr inbounds i8, i8* %4, i64 64000
%fusion.8 = bitcast i8* %50 to [500 x double]*
%51 = bitcast [12 x double]* %2 to <4 x double>*
%wide.load259 = load <4 x double>, <4 x double>* %51, align 16, !invariant.load !0, !noalias !4
%52 = bitcast [12 x double]* %2 to <4 x double>*
%wide.load259.1 = load <4 x double>, <4 x double>* %52, align 16, !invariant.load !0, !noalias !4
br label %vector.ph253
vector.ph253: ; preds = %vector.ph253, %fusion.9.loop_exit.dim.0
%fusion.8.invar_address.dim.0.0181 = phi i64 [ 0, %fusion.9.loop_exit.dim.0 ], [ %invar.inc6.1, %vector.ph253 ]
%53 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.8.invar_address.dim.0.0181, i64 0
%54 = bitcast double* %53 to <4 x double>*
%wide.load258 = load <4 x double>, <4 x double>* %54, align 16, !alias.scope !22, !noalias !23
%55 = fmul <4 x double> %wide.load258, %wide.load259
%56 = fadd reassoc <4 x double> %55, <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%57 = call reassoc double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %56)
%divide.21 = fdiv double 1.000000e+00, %57
%58 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.8.invar_address.dim.0.0181
store double %divide.21, double* %58, align 16, !alias.scope !24, !noalias !25
%invar.inc6 = or i64 %fusion.8.invar_address.dim.0.0181, 1
%59 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc6, i64 0
%60 = bitcast double* %59 to <4 x double>*
%wide.load258.1 = load <4 x double>, <4 x double>* %60, align 16, !alias.scope !22, !noalias !23
%61 = fmul <4 x double> %wide.load258.1, %wide.load259.1
%62 = fadd reassoc <4 x double> %61, <double 0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
%63 = call reassoc double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> %62)
%divide.21.1 = fdiv double 1.000000e+00, %63
%64 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc6
store double %divide.21.1, double* %64, align 8, !alias.scope !24, !noalias !25
%invar.inc6.1 = add nuw nsw i64 %fusion.8.invar_address.dim.0.0181, 2
%exitcond219.1 = icmp eq i64 %invar.inc6.1, 500
br i1 %exitcond219.1, label %fusion.8.loop_exit.dim.0, label %vector.ph253
fusion.8.loop_exit.dim.0: ; preds = %vector.ph253
%65 = getelementptr inbounds i8, i8* %4, i64 16000
%fusion.4 = bitcast i8* %65 to [500 x [4 x double]]*
%66 = bitcast [12 x double]* %2 to <4 x double>*
%wide.load268 = load <4 x double>, <4 x double>* %66, align 16, !invariant.load !0, !noalias !4
%67 = bitcast i8* %18 to <4 x double>*
%wide.load271 = load <4 x double>, <4 x double>* %67, align 16, !alias.scope !20, !noalias !21
%wide.load268.1 = load <4 x double>, <4 x double>* %66, align 16, !invariant.load !0, !noalias !4
%68 = bitcast i8* %18 to <4 x double>*
%wide.load271.1 = load <4 x double>, <4 x double>* %68, align 16, !alias.scope !20, !noalias !21
br label %vector.ph263
vector.ph263: ; preds = %vector.ph263, %fusion.8.loop_exit.dim.0
%fusion.4.invar_address.dim.0.0178 = phi i64 [ 0, %fusion.8.loop_exit.dim.0 ], [ %invar.inc9.1, %vector.ph263 ]
%69 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.4.invar_address.dim.0.0178
%70 = load double, double* %69, align 16, !alias.scope !24, !noalias !25
%broadcast.splatinsert269 = insertelement <4 x double> poison, double %70, i64 0
%broadcast.splat270 = shufflevector <4 x double> %broadcast.splatinsert269, <4 x double> poison, <4 x i32> zeroinitializer
%71 = fmul <4 x double> %broadcast.splat270, %wide.load268
%72 = fdiv <4 x double> %71, %wide.load271
%73 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.4.invar_address.dim.0.0178, i64 0
%74 = bitcast double* %73 to <4 x double>*
store <4 x double> %72, <4 x double>* %74, align 16, !alias.scope !26, !noalias !27
%invar.inc9 = or i64 %fusion.4.invar_address.dim.0.0178, 1
%75 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc9
%76 = load double, double* %75, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert269.1 = insertelement <4 x double> poison, double %76, i64 0
%broadcast.splat270.1 = shufflevector <4 x double> %broadcast.splatinsert269.1, <4 x double> poison, <4 x i32> zeroinitializer
%77 = fmul <4 x double> %broadcast.splat270.1, %wide.load268.1
%78 = fdiv <4 x double> %77, %wide.load271.1
%79 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %invar.inc9, i64 0
%80 = bitcast double* %79 to <4 x double>*
store <4 x double> %78, <4 x double>* %80, align 16, !alias.scope !26, !noalias !27
%invar.inc9.1 = add nuw nsw i64 %fusion.4.invar_address.dim.0.0178, 2
%exitcond217.1 = icmp eq i64 %invar.inc9.1, 500
br i1 %exitcond217.1, label %fusion.4.loop_exit.dim.0, label %vector.ph263
fusion.4.loop_exit.dim.0: ; preds = %vector.ph263
%81 = getelementptr inbounds i8, i8* %4, i64 68000
%82 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%83 = bitcast double* %82 to <4 x double>*
%wide.load280 = load <4 x double>, <4 x double>* %83, align 16, !invariant.load !0, !noalias !4
%84 = fmul <4 x double> %wide.load280, %wide.load280
%85 = fmul <4 x double> %84, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%86 = fmul <4 x double> %85, %85
%87 = fdiv <4 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>, %86
%88 = bitcast i8* %81 to <4 x double>*
store <4 x double> %87, <4 x double>* %88, align 16, !alias.scope !28, !noalias !29
%89 = getelementptr inbounds i8, i8* %4, i64 48000
%fusion.2 = bitcast i8* %89 to [500 x [4 x double]]*
%90 = bitcast i8* %81 to <4 x double>*
%wide.load291 = load <4 x double>, <4 x double>* %90, align 16, !alias.scope !28, !noalias !29
%91 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%92 = bitcast double* %91 to <4 x double>*
%wide.load292 = load <4 x double>, <4 x double>* %92, align 16, !invariant.load !0, !noalias !4
%93 = bitcast i8* %81 to <4 x double>*
%wide.load291.1 = load <4 x double>, <4 x double>* %93, align 16, !alias.scope !28, !noalias !29
%94 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%95 = bitcast double* %94 to <4 x double>*
%wide.load292.1 = load <4 x double>, <4 x double>* %95, align 16, !invariant.load !0, !noalias !4
br label %vector.ph284
vector.ph284: ; preds = %vector.ph284, %fusion.4.loop_exit.dim.0
%fusion.2.invar_address.dim.0.0175 = phi i64 [ 0, %fusion.4.loop_exit.dim.0 ], [ %invar.inc12.1, %vector.ph284 ]
%constant.113 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @0 to [500 x double]*), i64 0, i64 %fusion.2.invar_address.dim.0.0175
%constant.11314 = load double, double* %constant.113, align 16
%broadcast.splatinsert293 = insertelement <4 x double> poison, double %constant.11314, i64 0
%broadcast.splat294 = shufflevector <4 x double> %broadcast.splatinsert293, <4 x double> poison, <4 x i32> zeroinitializer
%96 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.2.invar_address.dim.0.0175, i64 0
%97 = bitcast double* %96 to <4 x double>*
%wide.load289 = load <4 x double>, <4 x double>* %97, align 16, !alias.scope !26, !noalias !27
%98 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.2.invar_address.dim.0.0175, i64 0
%99 = bitcast double* %98 to <4 x double>*
%wide.load290 = load <4 x double>, <4 x double>* %99, align 16, !alias.scope !18, !noalias !19
%100 = fmul <4 x double> %wide.load289, %wide.load290
%101 = fmul <4 x double> %100, %wide.load291
%102 = fsub <4 x double> %broadcast.splat294, %wide.load292
%103 = fneg <4 x double> %102
%104 = fmul <4 x double> %102, %103
%105 = fmul <4 x double> %101, %104
%106 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %fusion.2.invar_address.dim.0.0175, i64 0
%107 = bitcast double* %106 to <4 x double>*
store <4 x double> %105, <4 x double>* %107, align 16, !alias.scope !30, !noalias !31
%invar.inc12 = or i64 %fusion.2.invar_address.dim.0.0175, 1
%constant.113.1 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @0 to [500 x double]*), i64 0, i64 %invar.inc12
%constant.11314.1 = load double, double* %constant.113.1, align 8
%broadcast.splatinsert293.1 = insertelement <4 x double> poison, double %constant.11314.1, i64 0
%broadcast.splat294.1 = shufflevector <4 x double> %broadcast.splatinsert293.1, <4 x double> poison, <4 x i32> zeroinitializer
%108 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %invar.inc12, i64 0
%109 = bitcast double* %108 to <4 x double>*
%wide.load289.1 = load <4 x double>, <4 x double>* %109, align 16, !alias.scope !26, !noalias !27
%110 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc12, i64 0
%111 = bitcast double* %110 to <4 x double>*
%wide.load290.1 = load <4 x double>, <4 x double>* %111, align 16, !alias.scope !18, !noalias !19
%112 = fmul <4 x double> %wide.load289.1, %wide.load290.1
%113 = fmul <4 x double> %112, %wide.load291.1
%114 = fsub <4 x double> %broadcast.splat294.1, %wide.load292.1
%115 = fneg <4 x double> %114
%116 = fmul <4 x double> %114, %115
%117 = fmul <4 x double> %113, %116
%118 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %invar.inc12, i64 0
%119 = bitcast double* %118 to <4 x double>*
store <4 x double> %117, <4 x double>* %119, align 16, !alias.scope !30, !noalias !31
%invar.inc12.1 = add nuw nsw i64 %fusion.2.invar_address.dim.0.0175, 2
%exitcond214.1 = icmp eq i64 %invar.inc12.1, 500
br i1 %exitcond214.1, label %fusion.2.loop_exit.dim.0, label %vector.ph284
fusion.2.loop_exit.dim.0: ; preds = %vector.ph284
%reduce-window.2 = bitcast i8* %81 to [16 x [4 x double]]*
br label %reduce-window.2.loop_header.dim.1.preheader
reduce-window.2.loop_header.dim.1.preheader: ; preds = %fusion.2.loop_exit.dim.0, %reduce-window.2.loop_exit.dim.1
%reduce-window.2.invar_address.dim.0.0173 = phi i64 [ 0, %fusion.2.loop_exit.dim.0 ], [ %invar.inc15, %reduce-window.2.loop_exit.dim.1 ]
%120 = shl nsw i64 %reduce-window.2.invar_address.dim.0.0173, 5
%121 = add nsw i64 %120, -6
%122 = icmp ult i64 %121, 500
%123 = add nsw i64 %120, -5
%124 = icmp ult i64 %123, 500
%125 = add nsw i64 %120, -4
%126 = icmp ult i64 %125, 500
%127 = add nsw i64 %120, -3
%128 = icmp ult i64 %127, 500
%129 = add nsw i64 %120, -2
%130 = icmp ult i64 %129, 500
%131 = add nsw i64 %120, -1
%132 = icmp ult i64 %131, 500
%133 = icmp ult i64 %120, 500
%134 = or i64 %120, 1
%135 = icmp ult i64 %134, 500
%136 = or i64 %120, 2
%137 = icmp ult i64 %136, 500
%138 = or i64 %120, 3
%139 = icmp ult i64 %138, 500
%140 = or i64 %120, 4
%141 = icmp ult i64 %140, 500
%142 = or i64 %120, 5
%143 = icmp ult i64 %142, 500
%144 = or i64 %120, 6
%145 = icmp ult i64 %144, 500
%146 = or i64 %120, 7
%147 = icmp ult i64 %146, 500
%148 = or i64 %120, 8
%149 = icmp ult i64 %148, 500
%150 = or i64 %120, 9
%151 = icmp ult i64 %150, 500
%152 = or i64 %120, 10
%153 = icmp ult i64 %152, 500
%154 = or i64 %120, 11
%155 = icmp ult i64 %154, 500
%156 = or i64 %120, 12
%157 = icmp ult i64 %156, 500
%158 = or i64 %120, 13
%159 = icmp ult i64 %158, 500
%160 = or i64 %120, 14
%161 = icmp ult i64 %160, 500
%162 = or i64 %120, 15
%163 = icmp ult i64 %162, 500
%164 = or i64 %120, 16
%165 = icmp ult i64 %164, 500
%166 = or i64 %120, 17
%167 = icmp ult i64 %166, 500
%168 = or i64 %120, 18
%169 = icmp ult i64 %168, 500
%170 = or i64 %120, 19
%171 = icmp ult i64 %170, 500
%172 = or i64 %120, 20
%173 = icmp ult i64 %172, 500
%174 = or i64 %120, 21
%175 = icmp ult i64 %174, 500
%176 = or i64 %120, 22
%177 = icmp ult i64 %176, 500
%178 = or i64 %120, 23
%179 = icmp ult i64 %178, 500
%180 = or i64 %120, 24
%181 = icmp ult i64 %180, 500
%182 = or i64 %120, 25
%183 = icmp ult i64 %182, 500
br label %reduce-window.2.loop_header.window.0.preheader
reduce-window.2.loop_header.window.0.preheader: ; preds = %reduce-window.2.loop_header.dim.1.preheader, %reduce-window.2.loop_exit.window.1.31
%reduce-window.2.invar_address.dim.1.0172 = phi i64 [ 0, %reduce-window.2.loop_header.dim.1.preheader ], [ %invar.inc16, %reduce-window.2.loop_exit.window.1.31 ]
br i1 %122, label %in_bounds-true.us, label %reduce-window.2.loop_exit.window.1
in_bounds-true.us: ; preds = %reduce-window.2.loop_header.window.0.preheader
%184 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %121, i64 %reduce-window.2.invar_address.dim.1.0172
%185 = load double, double* %184, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us = fadd reassoc double %185, 0.000000e+00
br label %reduce-window.2.loop_exit.window.1
reduce-window.2.loop_exit.window.1: ; preds = %reduce-window.2.loop_header.window.0.preheader, %in_bounds-true.us
%reduce_window_accum_ptr.1.lcssa = phi double [ %add.1361.i.us, %in_bounds-true.us ], [ 0.000000e+00, %reduce-window.2.loop_header.window.0.preheader ]
br i1 %124, label %in_bounds-true.us.1, label %reduce-window.2.loop_exit.window.1.1
in_bounds-true.us.1: ; preds = %reduce-window.2.loop_exit.window.1
%186 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %123, i64 %reduce-window.2.invar_address.dim.1.0172
%187 = load double, double* %186, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.1 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa, %187
br label %reduce-window.2.loop_exit.window.1.1
reduce-window.2.loop_exit.window.1.1: ; preds = %in_bounds-true.us.1, %reduce-window.2.loop_exit.window.1
%reduce_window_accum_ptr.1.lcssa.1 = phi double [ %add.1361.i.us.1, %in_bounds-true.us.1 ], [ %reduce_window_accum_ptr.1.lcssa, %reduce-window.2.loop_exit.window.1 ]
br i1 %126, label %in_bounds-true.us.2, label %reduce-window.2.loop_exit.window.1.2
in_bounds-true.us.2: ; preds = %reduce-window.2.loop_exit.window.1.1
%188 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %125, i64 %reduce-window.2.invar_address.dim.1.0172
%189 = load double, double* %188, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.2 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.1, %189
br label %reduce-window.2.loop_exit.window.1.2
reduce-window.2.loop_exit.window.1.2: ; preds = %in_bounds-true.us.2, %reduce-window.2.loop_exit.window.1.1
%reduce_window_accum_ptr.1.lcssa.2 = phi double [ %add.1361.i.us.2, %in_bounds-true.us.2 ], [ %reduce_window_accum_ptr.1.lcssa.1, %reduce-window.2.loop_exit.window.1.1 ]
br i1 %128, label %in_bounds-true.us.3, label %reduce-window.2.loop_exit.window.1.3
in_bounds-true.us.3: ; preds = %reduce-window.2.loop_exit.window.1.2
%190 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %127, i64 %reduce-window.2.invar_address.dim.1.0172
%191 = load double, double* %190, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.3 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.2, %191
br label %reduce-window.2.loop_exit.window.1.3
reduce-window.2.loop_exit.window.1.3: ; preds = %in_bounds-true.us.3, %reduce-window.2.loop_exit.window.1.2
%reduce_window_accum_ptr.1.lcssa.3 = phi double [ %add.1361.i.us.3, %in_bounds-true.us.3 ], [ %reduce_window_accum_ptr.1.lcssa.2, %reduce-window.2.loop_exit.window.1.2 ]
br i1 %130, label %in_bounds-true.us.4, label %reduce-window.2.loop_exit.window.1.4
in_bounds-true.us.4: ; preds = %reduce-window.2.loop_exit.window.1.3
%192 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %129, i64 %reduce-window.2.invar_address.dim.1.0172
%193 = load double, double* %192, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.4 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.3, %193
br label %reduce-window.2.loop_exit.window.1.4
reduce-window.2.loop_exit.window.1.4: ; preds = %in_bounds-true.us.4, %reduce-window.2.loop_exit.window.1.3
%reduce_window_accum_ptr.1.lcssa.4 = phi double [ %add.1361.i.us.4, %in_bounds-true.us.4 ], [ %reduce_window_accum_ptr.1.lcssa.3, %reduce-window.2.loop_exit.window.1.3 ]
br i1 %132, label %in_bounds-true.us.5, label %reduce-window.2.loop_exit.window.1.5
in_bounds-true.us.5: ; preds = %reduce-window.2.loop_exit.window.1.4
%194 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %131, i64 %reduce-window.2.invar_address.dim.1.0172
%195 = load double, double* %194, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.5 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.4, %195
br label %reduce-window.2.loop_exit.window.1.5
reduce-window.2.loop_exit.window.1.5: ; preds = %in_bounds-true.us.5, %reduce-window.2.loop_exit.window.1.4
%reduce_window_accum_ptr.1.lcssa.5 = phi double [ %add.1361.i.us.5, %in_bounds-true.us.5 ], [ %reduce_window_accum_ptr.1.lcssa.4, %reduce-window.2.loop_exit.window.1.4 ]
br i1 %133, label %in_bounds-true.us.6, label %reduce-window.2.loop_exit.window.1.6
in_bounds-true.us.6: ; preds = %reduce-window.2.loop_exit.window.1.5
%196 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %120, i64 %reduce-window.2.invar_address.dim.1.0172
%197 = load double, double* %196, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.6 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.5, %197
br label %reduce-window.2.loop_exit.window.1.6
reduce-window.2.loop_exit.window.1.6: ; preds = %in_bounds-true.us.6, %reduce-window.2.loop_exit.window.1.5
%reduce_window_accum_ptr.1.lcssa.6 = phi double [ %add.1361.i.us.6, %in_bounds-true.us.6 ], [ %reduce_window_accum_ptr.1.lcssa.5, %reduce-window.2.loop_exit.window.1.5 ]
br i1 %135, label %in_bounds-true.us.7, label %reduce-window.2.loop_exit.window.1.7
in_bounds-true.us.7: ; preds = %reduce-window.2.loop_exit.window.1.6
%198 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %134, i64 %reduce-window.2.invar_address.dim.1.0172
%199 = load double, double* %198, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.7 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.6, %199
br label %reduce-window.2.loop_exit.window.1.7
reduce-window.2.loop_exit.window.1.7: ; preds = %in_bounds-true.us.7, %reduce-window.2.loop_exit.window.1.6
%reduce_window_accum_ptr.1.lcssa.7 = phi double [ %add.1361.i.us.7, %in_bounds-true.us.7 ], [ %reduce_window_accum_ptr.1.lcssa.6, %reduce-window.2.loop_exit.window.1.6 ]
br i1 %137, label %in_bounds-true.us.8, label %reduce-window.2.loop_exit.window.1.8
in_bounds-true.us.8: ; preds = %reduce-window.2.loop_exit.window.1.7
%200 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %136, i64 %reduce-window.2.invar_address.dim.1.0172
%201 = load double, double* %200, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.8 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.7, %201
br label %reduce-window.2.loop_exit.window.1.8
reduce-window.2.loop_exit.window.1.8: ; preds = %in_bounds-true.us.8, %reduce-window.2.loop_exit.window.1.7
%reduce_window_accum_ptr.1.lcssa.8 = phi double [ %add.1361.i.us.8, %in_bounds-true.us.8 ], [ %reduce_window_accum_ptr.1.lcssa.7, %reduce-window.2.loop_exit.window.1.7 ]
br i1 %139, label %in_bounds-true.us.9, label %reduce-window.2.loop_exit.window.1.9
in_bounds-true.us.9: ; preds = %reduce-window.2.loop_exit.window.1.8
%202 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %138, i64 %reduce-window.2.invar_address.dim.1.0172
%203 = load double, double* %202, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.9 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.8, %203
br label %reduce-window.2.loop_exit.window.1.9
reduce-window.2.loop_exit.window.1.9: ; preds = %in_bounds-true.us.9, %reduce-window.2.loop_exit.window.1.8
%reduce_window_accum_ptr.1.lcssa.9 = phi double [ %add.1361.i.us.9, %in_bounds-true.us.9 ], [ %reduce_window_accum_ptr.1.lcssa.8, %reduce-window.2.loop_exit.window.1.8 ]
br i1 %141, label %in_bounds-true.us.10, label %reduce-window.2.loop_exit.window.1.10
in_bounds-true.us.10: ; preds = %reduce-window.2.loop_exit.window.1.9
%204 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %140, i64 %reduce-window.2.invar_address.dim.1.0172
%205 = load double, double* %204, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.10 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.9, %205
br label %reduce-window.2.loop_exit.window.1.10
reduce-window.2.loop_exit.window.1.10: ; preds = %in_bounds-true.us.10, %reduce-window.2.loop_exit.window.1.9
%reduce_window_accum_ptr.1.lcssa.10 = phi double [ %add.1361.i.us.10, %in_bounds-true.us.10 ], [ %reduce_window_accum_ptr.1.lcssa.9, %reduce-window.2.loop_exit.window.1.9 ]
br i1 %143, label %in_bounds-true.us.11, label %reduce-window.2.loop_exit.window.1.11
in_bounds-true.us.11: ; preds = %reduce-window.2.loop_exit.window.1.10
%206 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %142, i64 %reduce-window.2.invar_address.dim.1.0172
%207 = load double, double* %206, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.11 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.10, %207
br label %reduce-window.2.loop_exit.window.1.11
reduce-window.2.loop_exit.window.1.11: ; preds = %in_bounds-true.us.11, %reduce-window.2.loop_exit.window.1.10
%reduce_window_accum_ptr.1.lcssa.11 = phi double [ %add.1361.i.us.11, %in_bounds-true.us.11 ], [ %reduce_window_accum_ptr.1.lcssa.10, %reduce-window.2.loop_exit.window.1.10 ]
br i1 %145, label %in_bounds-true.us.12, label %reduce-window.2.loop_exit.window.1.12
in_bounds-true.us.12: ; preds = %reduce-window.2.loop_exit.window.1.11
%208 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %144, i64 %reduce-window.2.invar_address.dim.1.0172
%209 = load double, double* %208, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.12 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.11, %209
br label %reduce-window.2.loop_exit.window.1.12
reduce-window.2.loop_exit.window.1.12: ; preds = %in_bounds-true.us.12, %reduce-window.2.loop_exit.window.1.11
%reduce_window_accum_ptr.1.lcssa.12 = phi double [ %add.1361.i.us.12, %in_bounds-true.us.12 ], [ %reduce_window_accum_ptr.1.lcssa.11, %reduce-window.2.loop_exit.window.1.11 ]
br i1 %147, label %in_bounds-true.us.13, label %reduce-window.2.loop_exit.window.1.13
in_bounds-true.us.13: ; preds = %reduce-window.2.loop_exit.window.1.12
%210 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %146, i64 %reduce-window.2.invar_address.dim.1.0172
%211 = load double, double* %210, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.13 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.12, %211
br label %reduce-window.2.loop_exit.window.1.13
reduce-window.2.loop_exit.window.1.13: ; preds = %in_bounds-true.us.13, %reduce-window.2.loop_exit.window.1.12
%reduce_window_accum_ptr.1.lcssa.13 = phi double [ %add.1361.i.us.13, %in_bounds-true.us.13 ], [ %reduce_window_accum_ptr.1.lcssa.12, %reduce-window.2.loop_exit.window.1.12 ]
br i1 %149, label %in_bounds-true.us.14, label %reduce-window.2.loop_exit.window.1.14
in_bounds-true.us.14: ; preds = %reduce-window.2.loop_exit.window.1.13
%212 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %148, i64 %reduce-window.2.invar_address.dim.1.0172
%213 = load double, double* %212, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.14 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.13, %213
br label %reduce-window.2.loop_exit.window.1.14
reduce-window.2.loop_exit.window.1.14: ; preds = %in_bounds-true.us.14, %reduce-window.2.loop_exit.window.1.13
%reduce_window_accum_ptr.1.lcssa.14 = phi double [ %add.1361.i.us.14, %in_bounds-true.us.14 ], [ %reduce_window_accum_ptr.1.lcssa.13, %reduce-window.2.loop_exit.window.1.13 ]
br i1 %151, label %in_bounds-true.us.15, label %reduce-window.2.loop_exit.window.1.15
in_bounds-true.us.15: ; preds = %reduce-window.2.loop_exit.window.1.14
%214 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %150, i64 %reduce-window.2.invar_address.dim.1.0172
%215 = load double, double* %214, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.15 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.14, %215
br label %reduce-window.2.loop_exit.window.1.15
reduce-window.2.loop_exit.window.1.15: ; preds = %in_bounds-true.us.15, %reduce-window.2.loop_exit.window.1.14
%reduce_window_accum_ptr.1.lcssa.15 = phi double [ %add.1361.i.us.15, %in_bounds-true.us.15 ], [ %reduce_window_accum_ptr.1.lcssa.14, %reduce-window.2.loop_exit.window.1.14 ]
br i1 %153, label %in_bounds-true.us.16, label %reduce-window.2.loop_exit.window.1.16
in_bounds-true.us.16: ; preds = %reduce-window.2.loop_exit.window.1.15
%216 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %152, i64 %reduce-window.2.invar_address.dim.1.0172
%217 = load double, double* %216, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.16 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.15, %217
br label %reduce-window.2.loop_exit.window.1.16
reduce-window.2.loop_exit.window.1.16: ; preds = %in_bounds-true.us.16, %reduce-window.2.loop_exit.window.1.15
%reduce_window_accum_ptr.1.lcssa.16 = phi double [ %add.1361.i.us.16, %in_bounds-true.us.16 ], [ %reduce_window_accum_ptr.1.lcssa.15, %reduce-window.2.loop_exit.window.1.15 ]
br i1 %155, label %in_bounds-true.us.17, label %reduce-window.2.loop_exit.window.1.17
in_bounds-true.us.17: ; preds = %reduce-window.2.loop_exit.window.1.16
%218 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %154, i64 %reduce-window.2.invar_address.dim.1.0172
%219 = load double, double* %218, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.17 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.16, %219
br label %reduce-window.2.loop_exit.window.1.17
reduce-window.2.loop_exit.window.1.17: ; preds = %in_bounds-true.us.17, %reduce-window.2.loop_exit.window.1.16
%reduce_window_accum_ptr.1.lcssa.17 = phi double [ %add.1361.i.us.17, %in_bounds-true.us.17 ], [ %reduce_window_accum_ptr.1.lcssa.16, %reduce-window.2.loop_exit.window.1.16 ]
br i1 %157, label %in_bounds-true.us.18, label %reduce-window.2.loop_exit.window.1.18
in_bounds-true.us.18: ; preds = %reduce-window.2.loop_exit.window.1.17
%220 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %156, i64 %reduce-window.2.invar_address.dim.1.0172
%221 = load double, double* %220, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.18 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.17, %221
br label %reduce-window.2.loop_exit.window.1.18
reduce-window.2.loop_exit.window.1.18: ; preds = %in_bounds-true.us.18, %reduce-window.2.loop_exit.window.1.17
%reduce_window_accum_ptr.1.lcssa.18 = phi double [ %add.1361.i.us.18, %in_bounds-true.us.18 ], [ %reduce_window_accum_ptr.1.lcssa.17, %reduce-window.2.loop_exit.window.1.17 ]
br i1 %159, label %in_bounds-true.us.19, label %reduce-window.2.loop_exit.window.1.19
in_bounds-true.us.19: ; preds = %reduce-window.2.loop_exit.window.1.18
%222 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %158, i64 %reduce-window.2.invar_address.dim.1.0172
%223 = load double, double* %222, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.19 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.18, %223
br label %reduce-window.2.loop_exit.window.1.19
reduce-window.2.loop_exit.window.1.19: ; preds = %in_bounds-true.us.19, %reduce-window.2.loop_exit.window.1.18
%reduce_window_accum_ptr.1.lcssa.19 = phi double [ %add.1361.i.us.19, %in_bounds-true.us.19 ], [ %reduce_window_accum_ptr.1.lcssa.18, %reduce-window.2.loop_exit.window.1.18 ]
br i1 %161, label %in_bounds-true.us.20, label %reduce-window.2.loop_exit.window.1.20
in_bounds-true.us.20: ; preds = %reduce-window.2.loop_exit.window.1.19
%224 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %160, i64 %reduce-window.2.invar_address.dim.1.0172
%225 = load double, double* %224, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.20 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.19, %225
br label %reduce-window.2.loop_exit.window.1.20
reduce-window.2.loop_exit.window.1.20: ; preds = %in_bounds-true.us.20, %reduce-window.2.loop_exit.window.1.19
%reduce_window_accum_ptr.1.lcssa.20 = phi double [ %add.1361.i.us.20, %in_bounds-true.us.20 ], [ %reduce_window_accum_ptr.1.lcssa.19, %reduce-window.2.loop_exit.window.1.19 ]
br i1 %163, label %in_bounds-true.us.21, label %reduce-window.2.loop_exit.window.1.21
in_bounds-true.us.21: ; preds = %reduce-window.2.loop_exit.window.1.20
%226 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %162, i64 %reduce-window.2.invar_address.dim.1.0172
%227 = load double, double* %226, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.21 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.20, %227
br label %reduce-window.2.loop_exit.window.1.21
reduce-window.2.loop_exit.window.1.21: ; preds = %in_bounds-true.us.21, %reduce-window.2.loop_exit.window.1.20
%reduce_window_accum_ptr.1.lcssa.21 = phi double [ %add.1361.i.us.21, %in_bounds-true.us.21 ], [ %reduce_window_accum_ptr.1.lcssa.20, %reduce-window.2.loop_exit.window.1.20 ]
br i1 %165, label %in_bounds-true.us.22, label %reduce-window.2.loop_exit.window.1.22
in_bounds-true.us.22: ; preds = %reduce-window.2.loop_exit.window.1.21
%228 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %164, i64 %reduce-window.2.invar_address.dim.1.0172
%229 = load double, double* %228, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.22 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.21, %229
br label %reduce-window.2.loop_exit.window.1.22
reduce-window.2.loop_exit.window.1.22: ; preds = %in_bounds-true.us.22, %reduce-window.2.loop_exit.window.1.21
%reduce_window_accum_ptr.1.lcssa.22 = phi double [ %add.1361.i.us.22, %in_bounds-true.us.22 ], [ %reduce_window_accum_ptr.1.lcssa.21, %reduce-window.2.loop_exit.window.1.21 ]
br i1 %167, label %in_bounds-true.us.23, label %reduce-window.2.loop_exit.window.1.23
in_bounds-true.us.23: ; preds = %reduce-window.2.loop_exit.window.1.22
%230 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %166, i64 %reduce-window.2.invar_address.dim.1.0172
%231 = load double, double* %230, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.23 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.22, %231
br label %reduce-window.2.loop_exit.window.1.23
reduce-window.2.loop_exit.window.1.23: ; preds = %in_bounds-true.us.23, %reduce-window.2.loop_exit.window.1.22
%reduce_window_accum_ptr.1.lcssa.23 = phi double [ %add.1361.i.us.23, %in_bounds-true.us.23 ], [ %reduce_window_accum_ptr.1.lcssa.22, %reduce-window.2.loop_exit.window.1.22 ]
br i1 %169, label %in_bounds-true.us.24, label %reduce-window.2.loop_exit.window.1.24
in_bounds-true.us.24: ; preds = %reduce-window.2.loop_exit.window.1.23
%232 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %168, i64 %reduce-window.2.invar_address.dim.1.0172
%233 = load double, double* %232, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.24 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.23, %233
br label %reduce-window.2.loop_exit.window.1.24
reduce-window.2.loop_exit.window.1.24: ; preds = %in_bounds-true.us.24, %reduce-window.2.loop_exit.window.1.23
%reduce_window_accum_ptr.1.lcssa.24 = phi double [ %add.1361.i.us.24, %in_bounds-true.us.24 ], [ %reduce_window_accum_ptr.1.lcssa.23, %reduce-window.2.loop_exit.window.1.23 ]
br i1 %171, label %in_bounds-true.us.25, label %reduce-window.2.loop_exit.window.1.25
in_bounds-true.us.25: ; preds = %reduce-window.2.loop_exit.window.1.24
%234 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %170, i64 %reduce-window.2.invar_address.dim.1.0172
%235 = load double, double* %234, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.25 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.24, %235
br label %reduce-window.2.loop_exit.window.1.25
reduce-window.2.loop_exit.window.1.25: ; preds = %in_bounds-true.us.25, %reduce-window.2.loop_exit.window.1.24
%reduce_window_accum_ptr.1.lcssa.25 = phi double [ %add.1361.i.us.25, %in_bounds-true.us.25 ], [ %reduce_window_accum_ptr.1.lcssa.24, %reduce-window.2.loop_exit.window.1.24 ]
br i1 %173, label %in_bounds-true.us.26, label %reduce-window.2.loop_exit.window.1.26
in_bounds-true.us.26: ; preds = %reduce-window.2.loop_exit.window.1.25
%236 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %172, i64 %reduce-window.2.invar_address.dim.1.0172
%237 = load double, double* %236, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.26 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.25, %237
br label %reduce-window.2.loop_exit.window.1.26
reduce-window.2.loop_exit.window.1.26: ; preds = %in_bounds-true.us.26, %reduce-window.2.loop_exit.window.1.25
%reduce_window_accum_ptr.1.lcssa.26 = phi double [ %add.1361.i.us.26, %in_bounds-true.us.26 ], [ %reduce_window_accum_ptr.1.lcssa.25, %reduce-window.2.loop_exit.window.1.25 ]
br i1 %175, label %in_bounds-true.us.27, label %reduce-window.2.loop_exit.window.1.27
in_bounds-true.us.27: ; preds = %reduce-window.2.loop_exit.window.1.26
%238 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %174, i64 %reduce-window.2.invar_address.dim.1.0172
%239 = load double, double* %238, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.27 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.26, %239
br label %reduce-window.2.loop_exit.window.1.27
reduce-window.2.loop_exit.window.1.27: ; preds = %in_bounds-true.us.27, %reduce-window.2.loop_exit.window.1.26
%reduce_window_accum_ptr.1.lcssa.27 = phi double [ %add.1361.i.us.27, %in_bounds-true.us.27 ], [ %reduce_window_accum_ptr.1.lcssa.26, %reduce-window.2.loop_exit.window.1.26 ]
br i1 %177, label %in_bounds-true.us.28, label %reduce-window.2.loop_exit.window.1.28
in_bounds-true.us.28: ; preds = %reduce-window.2.loop_exit.window.1.27
%240 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %176, i64 %reduce-window.2.invar_address.dim.1.0172
%241 = load double, double* %240, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.28 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.27, %241
br label %reduce-window.2.loop_exit.window.1.28
reduce-window.2.loop_exit.window.1.28: ; preds = %in_bounds-true.us.28, %reduce-window.2.loop_exit.window.1.27
%reduce_window_accum_ptr.1.lcssa.28 = phi double [ %add.1361.i.us.28, %in_bounds-true.us.28 ], [ %reduce_window_accum_ptr.1.lcssa.27, %reduce-window.2.loop_exit.window.1.27 ]
br i1 %179, label %in_bounds-true.us.29, label %reduce-window.2.loop_exit.window.1.29
in_bounds-true.us.29: ; preds = %reduce-window.2.loop_exit.window.1.28
%242 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %178, i64 %reduce-window.2.invar_address.dim.1.0172
%243 = load double, double* %242, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.29 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.28, %243
br label %reduce-window.2.loop_exit.window.1.29
reduce-window.2.loop_exit.window.1.29: ; preds = %in_bounds-true.us.29, %reduce-window.2.loop_exit.window.1.28
%reduce_window_accum_ptr.1.lcssa.29 = phi double [ %add.1361.i.us.29, %in_bounds-true.us.29 ], [ %reduce_window_accum_ptr.1.lcssa.28, %reduce-window.2.loop_exit.window.1.28 ]
br i1 %181, label %in_bounds-true.us.30, label %reduce-window.2.loop_exit.window.1.30
in_bounds-true.us.30: ; preds = %reduce-window.2.loop_exit.window.1.29
%244 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %180, i64 %reduce-window.2.invar_address.dim.1.0172
%245 = load double, double* %244, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.30 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.29, %245
br label %reduce-window.2.loop_exit.window.1.30
reduce-window.2.loop_exit.window.1.30: ; preds = %in_bounds-true.us.30, %reduce-window.2.loop_exit.window.1.29
%reduce_window_accum_ptr.1.lcssa.30 = phi double [ %add.1361.i.us.30, %in_bounds-true.us.30 ], [ %reduce_window_accum_ptr.1.lcssa.29, %reduce-window.2.loop_exit.window.1.29 ]
br i1 %183, label %in_bounds-true.us.31, label %reduce-window.2.loop_exit.window.1.31
in_bounds-true.us.31: ; preds = %reduce-window.2.loop_exit.window.1.30
%246 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.2, i64 0, i64 %182, i64 %reduce-window.2.invar_address.dim.1.0172
%247 = load double, double* %246, align 8, !alias.scope !30, !noalias !31
%add.1361.i.us.31 = fadd reassoc double %reduce_window_accum_ptr.1.lcssa.30, %247
br label %reduce-window.2.loop_exit.window.1.31
reduce-window.2.loop_exit.window.1.31: ; preds = %in_bounds-true.us.31, %reduce-window.2.loop_exit.window.1.30
%reduce_window_accum_ptr.1.lcssa.31 = phi double [ %add.1361.i.us.31, %in_bounds-true.us.31 ], [ %reduce_window_accum_ptr.1.lcssa.30, %reduce-window.2.loop_exit.window.1.30 ]
%248 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.2, i64 0, i64 %reduce-window.2.invar_address.dim.0.0173, i64 %reduce-window.2.invar_address.dim.1.0172
store double %reduce_window_accum_ptr.1.lcssa.31, double* %248, align 8, !alias.scope !34, !noalias !35
%invar.inc16 = add nuw nsw i64 %reduce-window.2.invar_address.dim.1.0172, 1
%exitcond211 = icmp eq i64 %invar.inc16, 4
br i1 %exitcond211, label %reduce-window.2.loop_exit.dim.1, label %reduce-window.2.loop_header.window.0.preheader
reduce-window.2.loop_exit.dim.1: ; preds = %reduce-window.2.loop_exit.window.1.31
%invar.inc15 = add nuw nsw i64 %reduce-window.2.invar_address.dim.0.0173, 1
%exitcond212 = icmp eq i64 %invar.inc15, 16
br i1 %exitcond212, label %reduce-window.2.vectorized_inner.loop_body.reduction_dim.0, label %reduce-window.2.loop_header.dim.1.preheader
reduce-window.2.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.2.loop_exit.dim.1
%249 = getelementptr inbounds i8, i8* %4, i64 48512
%250 = bitcast i8* %81 to <4 x double>*
%251 = load <4 x double>, <4 x double>* %250, align 16, !alias.scope !34, !noalias !35
%252 = fadd reassoc <4 x double> %251, zeroinitializer
%253 = getelementptr inbounds i8, i8* %4, i64 68032
%254 = bitcast i8* %253 to <4 x double>*
%255 = load <4 x double>, <4 x double>* %254, align 16, !alias.scope !34, !noalias !35
%256 = fadd reassoc <4 x double> %252, %255
%257 = getelementptr inbounds i8, i8* %4, i64 68064
%258 = bitcast i8* %257 to <4 x double>*
%259 = load <4 x double>, <4 x double>* %258, align 16, !alias.scope !34, !noalias !35
%260 = fadd reassoc <4 x double> %256, %259
%261 = getelementptr inbounds i8, i8* %4, i64 68096
%262 = bitcast i8* %261 to <4 x double>*
%263 = load <4 x double>, <4 x double>* %262, align 16, !alias.scope !34, !noalias !35
%264 = fadd reassoc <4 x double> %260, %263
%265 = getelementptr inbounds i8, i8* %4, i64 68128
%266 = bitcast i8* %265 to <4 x double>*
%267 = load <4 x double>, <4 x double>* %266, align 16, !alias.scope !34, !noalias !35
%268 = fadd reassoc <4 x double> %264, %267
%269 = getelementptr inbounds i8, i8* %4, i64 68160
%270 = bitcast i8* %269 to <4 x double>*
%271 = load <4 x double>, <4 x double>* %270, align 16, !alias.scope !34, !noalias !35
%272 = fadd reassoc <4 x double> %268, %271
%273 = getelementptr inbounds i8, i8* %4, i64 68192
%274 = bitcast i8* %273 to <4 x double>*
%275 = load <4 x double>, <4 x double>* %274, align 16, !alias.scope !34, !noalias !35
%276 = fadd reassoc <4 x double> %272, %275
%277 = getelementptr inbounds i8, i8* %4, i64 68224
%278 = bitcast i8* %277 to <4 x double>*
%279 = load <4 x double>, <4 x double>* %278, align 16, !alias.scope !34, !noalias !35
%280 = fadd reassoc <4 x double> %276, %279
%281 = getelementptr inbounds i8, i8* %4, i64 68256
%282 = bitcast i8* %281 to <4 x double>*
%283 = load <4 x double>, <4 x double>* %282, align 16, !alias.scope !34, !noalias !35
%284 = fadd reassoc <4 x double> %280, %283
%285 = getelementptr inbounds i8, i8* %4, i64 68288
%286 = bitcast i8* %285 to <4 x double>*
%287 = load <4 x double>, <4 x double>* %286, align 16, !alias.scope !34, !noalias !35
%288 = fadd reassoc <4 x double> %284, %287
%289 = getelementptr inbounds i8, i8* %4, i64 68320
%290 = bitcast i8* %289 to <4 x double>*
%291 = load <4 x double>, <4 x double>* %290, align 16, !alias.scope !34, !noalias !35
%292 = fadd reassoc <4 x double> %288, %291
%293 = getelementptr inbounds i8, i8* %4, i64 68352
%294 = bitcast i8* %293 to <4 x double>*
%295 = load <4 x double>, <4 x double>* %294, align 16, !alias.scope !34, !noalias !35
%296 = fadd reassoc <4 x double> %292, %295
%297 = getelementptr inbounds i8, i8* %4, i64 68384
%298 = bitcast i8* %297 to <4 x double>*
%299 = load <4 x double>, <4 x double>* %298, align 16, !alias.scope !34, !noalias !35
%300 = fadd reassoc <4 x double> %296, %299
%301 = getelementptr inbounds i8, i8* %4, i64 68416
%302 = bitcast i8* %301 to <4 x double>*
%303 = load <4 x double>, <4 x double>* %302, align 16, !alias.scope !34, !noalias !35
%304 = fadd reassoc <4 x double> %300, %303
%305 = getelementptr inbounds i8, i8* %4, i64 68448
%306 = bitcast i8* %305 to <4 x double>*
%307 = load <4 x double>, <4 x double>* %306, align 16, !alias.scope !34, !noalias !35
%308 = fadd reassoc <4 x double> %304, %307
%309 = getelementptr inbounds i8, i8* %4, i64 68480
%310 = bitcast i8* %309 to <4 x double>*
%311 = load <4 x double>, <4 x double>* %310, align 16, !alias.scope !34, !noalias !35
%312 = fadd reassoc <4 x double> %308, %311
%313 = bitcast i8* %249 to <4 x double>*
store <4 x double> %312, <4 x double>* %313, align 16, !alias.scope !36, !noalias !37
br label %vector.ph298
vector.ph298: ; preds = %vector.ph298, %reduce-window.2.vectorized_inner.loop_body.reduction_dim.0
%fusion.7.invar_address.dim.0.0166 = phi i64 [ 0, %reduce-window.2.vectorized_inner.loop_body.reduction_dim.0 ], [ %invar.inc22.4, %vector.ph298 ]
%314 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.7.invar_address.dim.0.0166
%315 = load double, double* %314, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert304 = insertelement <4 x double> poison, double %315, i64 0
%broadcast.splat305 = shufflevector <4 x double> %broadcast.splatinsert304, <4 x double> poison, <4 x i32> zeroinitializer
%316 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %fusion.7.invar_address.dim.0.0166, i64 0
%317 = bitcast double* %316 to <4 x double>*
%wide.load303 = load <4 x double>, <4 x double>* %317, align 16, !alias.scope !22, !noalias !23
%318 = fmul <4 x double> %wide.load303, %broadcast.splat305
%319 = bitcast double* %316 to <4 x double>*
store <4 x double> %318, <4 x double>* %319, align 16, !alias.scope !22, !noalias !38
%invar.inc22 = add nuw nsw i64 %fusion.7.invar_address.dim.0.0166, 1
%320 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc22
%321 = load double, double* %320, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert304.1 = insertelement <4 x double> poison, double %321, i64 0
%broadcast.splat305.1 = shufflevector <4 x double> %broadcast.splatinsert304.1, <4 x double> poison, <4 x i32> zeroinitializer
%322 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc22, i64 0
%323 = bitcast double* %322 to <4 x double>*
%wide.load303.1 = load <4 x double>, <4 x double>* %323, align 16, !alias.scope !22, !noalias !23
%324 = fmul <4 x double> %wide.load303.1, %broadcast.splat305.1
%325 = bitcast double* %322 to <4 x double>*
store <4 x double> %324, <4 x double>* %325, align 16, !alias.scope !22, !noalias !38
%invar.inc22.1 = add nuw nsw i64 %fusion.7.invar_address.dim.0.0166, 2
%326 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc22.1
%327 = load double, double* %326, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert304.2 = insertelement <4 x double> poison, double %327, i64 0
%broadcast.splat305.2 = shufflevector <4 x double> %broadcast.splatinsert304.2, <4 x double> poison, <4 x i32> zeroinitializer
%328 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc22.1, i64 0
%329 = bitcast double* %328 to <4 x double>*
%wide.load303.2 = load <4 x double>, <4 x double>* %329, align 16, !alias.scope !22, !noalias !23
%330 = fmul <4 x double> %wide.load303.2, %broadcast.splat305.2
%331 = bitcast double* %328 to <4 x double>*
store <4 x double> %330, <4 x double>* %331, align 16, !alias.scope !22, !noalias !38
%invar.inc22.2 = add nuw nsw i64 %fusion.7.invar_address.dim.0.0166, 3
%332 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc22.2
%333 = load double, double* %332, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert304.3 = insertelement <4 x double> poison, double %333, i64 0
%broadcast.splat305.3 = shufflevector <4 x double> %broadcast.splatinsert304.3, <4 x double> poison, <4 x i32> zeroinitializer
%334 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc22.2, i64 0
%335 = bitcast double* %334 to <4 x double>*
%wide.load303.3 = load <4 x double>, <4 x double>* %335, align 16, !alias.scope !22, !noalias !23
%336 = fmul <4 x double> %wide.load303.3, %broadcast.splat305.3
%337 = bitcast double* %334 to <4 x double>*
store <4 x double> %336, <4 x double>* %337, align 16, !alias.scope !22, !noalias !38
%invar.inc22.3 = add nuw nsw i64 %fusion.7.invar_address.dim.0.0166, 4
%338 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc22.3
%339 = load double, double* %338, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert304.4 = insertelement <4 x double> poison, double %339, i64 0
%broadcast.splat305.4 = shufflevector <4 x double> %broadcast.splatinsert304.4, <4 x double> poison, <4 x i32> zeroinitializer
%340 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %invar.inc22.3, i64 0
%341 = bitcast double* %340 to <4 x double>*
%wide.load303.4 = load <4 x double>, <4 x double>* %341, align 16, !alias.scope !22, !noalias !23
%342 = fmul <4 x double> %wide.load303.4, %broadcast.splat305.4
%343 = bitcast double* %340 to <4 x double>*
store <4 x double> %342, <4 x double>* %343, align 16, !alias.scope !22, !noalias !38
%invar.inc22.4 = add nuw nsw i64 %fusion.7.invar_address.dim.0.0166, 5
%exitcond208.4 = icmp eq i64 %invar.inc22.4, 500
br i1 %exitcond208.4, label %fusion.7.loop_exit.dim.0, label %vector.ph298
fusion.7.loop_exit.dim.0: ; preds = %vector.ph298
%reduce-window = bitcast i8* %89 to [16 x [4 x double]]*
br label %reduce-window.loop_header.dim.1.preheader
reduce-window.loop_header.dim.1.preheader: ; preds = %fusion.7.loop_exit.dim.0, %reduce-window.loop_exit.dim.1
%reduce-window.invar_address.dim.0.0164 = phi i64 [ 0, %fusion.7.loop_exit.dim.0 ], [ %invar.inc24, %reduce-window.loop_exit.dim.1 ]
%344 = shl nsw i64 %reduce-window.invar_address.dim.0.0164, 5
%345 = add nsw i64 %344, -6
%346 = icmp ult i64 %345, 500
%347 = add nsw i64 %344, -5
%348 = icmp ult i64 %347, 500
%349 = add nsw i64 %344, -4
%350 = icmp ult i64 %349, 500
%351 = add nsw i64 %344, -3
%352 = icmp ult i64 %351, 500
%353 = add nsw i64 %344, -2
%354 = icmp ult i64 %353, 500
%355 = add nsw i64 %344, -1
%356 = icmp ult i64 %355, 500
%357 = icmp ult i64 %344, 500
%358 = or i64 %344, 1
%359 = icmp ult i64 %358, 500
%360 = or i64 %344, 2
%361 = icmp ult i64 %360, 500
%362 = or i64 %344, 3
%363 = icmp ult i64 %362, 500
%364 = or i64 %344, 4
%365 = icmp ult i64 %364, 500
%366 = or i64 %344, 5
%367 = icmp ult i64 %366, 500
%368 = or i64 %344, 6
%369 = icmp ult i64 %368, 500
%370 = or i64 %344, 7
%371 = icmp ult i64 %370, 500
%372 = or i64 %344, 8
%373 = icmp ult i64 %372, 500
%374 = or i64 %344, 9
%375 = icmp ult i64 %374, 500
%376 = or i64 %344, 10
%377 = icmp ult i64 %376, 500
%378 = or i64 %344, 11
%379 = icmp ult i64 %378, 500
%380 = or i64 %344, 12
%381 = icmp ult i64 %380, 500
%382 = or i64 %344, 13
%383 = icmp ult i64 %382, 500
%384 = or i64 %344, 14
%385 = icmp ult i64 %384, 500
%386 = or i64 %344, 15
%387 = icmp ult i64 %386, 500
%388 = or i64 %344, 16
%389 = icmp ult i64 %388, 500
%390 = or i64 %344, 17
%391 = icmp ult i64 %390, 500
%392 = or i64 %344, 18
%393 = icmp ult i64 %392, 500
%394 = or i64 %344, 19
%395 = icmp ult i64 %394, 500
%396 = or i64 %344, 20
%397 = icmp ult i64 %396, 500
%398 = or i64 %344, 21
%399 = icmp ult i64 %398, 500
%400 = or i64 %344, 22
%401 = icmp ult i64 %400, 500
%402 = or i64 %344, 23
%403 = icmp ult i64 %402, 500
%404 = or i64 %344, 24
%405 = icmp ult i64 %404, 500
%406 = or i64 %344, 25
%407 = icmp ult i64 %406, 500
br label %reduce-window.loop_header.window.0.preheader
reduce-window.loop_header.window.0.preheader: ; preds = %reduce-window.loop_header.dim.1.preheader, %reduce-window.loop_exit.window.1.31
%reduce-window.invar_address.dim.1.0163 = phi i64 [ 0, %reduce-window.loop_header.dim.1.preheader ], [ %invar.inc25, %reduce-window.loop_exit.window.1.31 ]
br i1 %346, label %in_bounds-true29.us, label %reduce-window.loop_exit.window.1
in_bounds-true29.us: ; preds = %reduce-window.loop_header.window.0.preheader
%408 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %345, i64 %reduce-window.invar_address.dim.1.0163
%409 = load double, double* %408, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us = fadd reassoc double %409, 0.000000e+00
br label %reduce-window.loop_exit.window.1
reduce-window.loop_exit.window.1: ; preds = %reduce-window.loop_header.window.0.preheader, %in_bounds-true29.us
%reduce_window_accum_ptr26.1.lcssa = phi double [ %add.1161.i.us, %in_bounds-true29.us ], [ 0.000000e+00, %reduce-window.loop_header.window.0.preheader ]
br i1 %348, label %in_bounds-true29.us.1, label %reduce-window.loop_exit.window.1.1
in_bounds-true29.us.1: ; preds = %reduce-window.loop_exit.window.1
%410 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %347, i64 %reduce-window.invar_address.dim.1.0163
%411 = load double, double* %410, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.1 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa, %411
br label %reduce-window.loop_exit.window.1.1
reduce-window.loop_exit.window.1.1: ; preds = %in_bounds-true29.us.1, %reduce-window.loop_exit.window.1
%reduce_window_accum_ptr26.1.lcssa.1 = phi double [ %add.1161.i.us.1, %in_bounds-true29.us.1 ], [ %reduce_window_accum_ptr26.1.lcssa, %reduce-window.loop_exit.window.1 ]
br i1 %350, label %in_bounds-true29.us.2, label %reduce-window.loop_exit.window.1.2
in_bounds-true29.us.2: ; preds = %reduce-window.loop_exit.window.1.1
%412 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %349, i64 %reduce-window.invar_address.dim.1.0163
%413 = load double, double* %412, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.2 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.1, %413
br label %reduce-window.loop_exit.window.1.2
reduce-window.loop_exit.window.1.2: ; preds = %in_bounds-true29.us.2, %reduce-window.loop_exit.window.1.1
%reduce_window_accum_ptr26.1.lcssa.2 = phi double [ %add.1161.i.us.2, %in_bounds-true29.us.2 ], [ %reduce_window_accum_ptr26.1.lcssa.1, %reduce-window.loop_exit.window.1.1 ]
br i1 %352, label %in_bounds-true29.us.3, label %reduce-window.loop_exit.window.1.3
in_bounds-true29.us.3: ; preds = %reduce-window.loop_exit.window.1.2
%414 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %351, i64 %reduce-window.invar_address.dim.1.0163
%415 = load double, double* %414, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.3 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.2, %415
br label %reduce-window.loop_exit.window.1.3
reduce-window.loop_exit.window.1.3: ; preds = %in_bounds-true29.us.3, %reduce-window.loop_exit.window.1.2
%reduce_window_accum_ptr26.1.lcssa.3 = phi double [ %add.1161.i.us.3, %in_bounds-true29.us.3 ], [ %reduce_window_accum_ptr26.1.lcssa.2, %reduce-window.loop_exit.window.1.2 ]
br i1 %354, label %in_bounds-true29.us.4, label %reduce-window.loop_exit.window.1.4
in_bounds-true29.us.4: ; preds = %reduce-window.loop_exit.window.1.3
%416 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %353, i64 %reduce-window.invar_address.dim.1.0163
%417 = load double, double* %416, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.4 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.3, %417
br label %reduce-window.loop_exit.window.1.4
reduce-window.loop_exit.window.1.4: ; preds = %in_bounds-true29.us.4, %reduce-window.loop_exit.window.1.3
%reduce_window_accum_ptr26.1.lcssa.4 = phi double [ %add.1161.i.us.4, %in_bounds-true29.us.4 ], [ %reduce_window_accum_ptr26.1.lcssa.3, %reduce-window.loop_exit.window.1.3 ]
br i1 %356, label %in_bounds-true29.us.5, label %reduce-window.loop_exit.window.1.5
in_bounds-true29.us.5: ; preds = %reduce-window.loop_exit.window.1.4
%418 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %355, i64 %reduce-window.invar_address.dim.1.0163
%419 = load double, double* %418, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.5 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.4, %419
br label %reduce-window.loop_exit.window.1.5
reduce-window.loop_exit.window.1.5: ; preds = %in_bounds-true29.us.5, %reduce-window.loop_exit.window.1.4
%reduce_window_accum_ptr26.1.lcssa.5 = phi double [ %add.1161.i.us.5, %in_bounds-true29.us.5 ], [ %reduce_window_accum_ptr26.1.lcssa.4, %reduce-window.loop_exit.window.1.4 ]
br i1 %357, label %in_bounds-true29.us.6, label %reduce-window.loop_exit.window.1.6
in_bounds-true29.us.6: ; preds = %reduce-window.loop_exit.window.1.5
%420 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %344, i64 %reduce-window.invar_address.dim.1.0163
%421 = load double, double* %420, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.6 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.5, %421
br label %reduce-window.loop_exit.window.1.6
reduce-window.loop_exit.window.1.6: ; preds = %in_bounds-true29.us.6, %reduce-window.loop_exit.window.1.5
%reduce_window_accum_ptr26.1.lcssa.6 = phi double [ %add.1161.i.us.6, %in_bounds-true29.us.6 ], [ %reduce_window_accum_ptr26.1.lcssa.5, %reduce-window.loop_exit.window.1.5 ]
br i1 %359, label %in_bounds-true29.us.7, label %reduce-window.loop_exit.window.1.7
in_bounds-true29.us.7: ; preds = %reduce-window.loop_exit.window.1.6
%422 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %358, i64 %reduce-window.invar_address.dim.1.0163
%423 = load double, double* %422, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.7 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.6, %423
br label %reduce-window.loop_exit.window.1.7
reduce-window.loop_exit.window.1.7: ; preds = %in_bounds-true29.us.7, %reduce-window.loop_exit.window.1.6
%reduce_window_accum_ptr26.1.lcssa.7 = phi double [ %add.1161.i.us.7, %in_bounds-true29.us.7 ], [ %reduce_window_accum_ptr26.1.lcssa.6, %reduce-window.loop_exit.window.1.6 ]
br i1 %361, label %in_bounds-true29.us.8, label %reduce-window.loop_exit.window.1.8
in_bounds-true29.us.8: ; preds = %reduce-window.loop_exit.window.1.7
%424 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %360, i64 %reduce-window.invar_address.dim.1.0163
%425 = load double, double* %424, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.8 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.7, %425
br label %reduce-window.loop_exit.window.1.8
reduce-window.loop_exit.window.1.8: ; preds = %in_bounds-true29.us.8, %reduce-window.loop_exit.window.1.7
%reduce_window_accum_ptr26.1.lcssa.8 = phi double [ %add.1161.i.us.8, %in_bounds-true29.us.8 ], [ %reduce_window_accum_ptr26.1.lcssa.7, %reduce-window.loop_exit.window.1.7 ]
br i1 %363, label %in_bounds-true29.us.9, label %reduce-window.loop_exit.window.1.9
in_bounds-true29.us.9: ; preds = %reduce-window.loop_exit.window.1.8
%426 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %362, i64 %reduce-window.invar_address.dim.1.0163
%427 = load double, double* %426, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.9 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.8, %427
br label %reduce-window.loop_exit.window.1.9
reduce-window.loop_exit.window.1.9: ; preds = %in_bounds-true29.us.9, %reduce-window.loop_exit.window.1.8
%reduce_window_accum_ptr26.1.lcssa.9 = phi double [ %add.1161.i.us.9, %in_bounds-true29.us.9 ], [ %reduce_window_accum_ptr26.1.lcssa.8, %reduce-window.loop_exit.window.1.8 ]
br i1 %365, label %in_bounds-true29.us.10, label %reduce-window.loop_exit.window.1.10
in_bounds-true29.us.10: ; preds = %reduce-window.loop_exit.window.1.9
%428 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %364, i64 %reduce-window.invar_address.dim.1.0163
%429 = load double, double* %428, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.10 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.9, %429
br label %reduce-window.loop_exit.window.1.10
reduce-window.loop_exit.window.1.10: ; preds = %in_bounds-true29.us.10, %reduce-window.loop_exit.window.1.9
%reduce_window_accum_ptr26.1.lcssa.10 = phi double [ %add.1161.i.us.10, %in_bounds-true29.us.10 ], [ %reduce_window_accum_ptr26.1.lcssa.9, %reduce-window.loop_exit.window.1.9 ]
br i1 %367, label %in_bounds-true29.us.11, label %reduce-window.loop_exit.window.1.11
in_bounds-true29.us.11: ; preds = %reduce-window.loop_exit.window.1.10
%430 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %366, i64 %reduce-window.invar_address.dim.1.0163
%431 = load double, double* %430, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.11 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.10, %431
br label %reduce-window.loop_exit.window.1.11
reduce-window.loop_exit.window.1.11: ; preds = %in_bounds-true29.us.11, %reduce-window.loop_exit.window.1.10
%reduce_window_accum_ptr26.1.lcssa.11 = phi double [ %add.1161.i.us.11, %in_bounds-true29.us.11 ], [ %reduce_window_accum_ptr26.1.lcssa.10, %reduce-window.loop_exit.window.1.10 ]
br i1 %369, label %in_bounds-true29.us.12, label %reduce-window.loop_exit.window.1.12
in_bounds-true29.us.12: ; preds = %reduce-window.loop_exit.window.1.11
%432 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %368, i64 %reduce-window.invar_address.dim.1.0163
%433 = load double, double* %432, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.12 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.11, %433
br label %reduce-window.loop_exit.window.1.12
reduce-window.loop_exit.window.1.12: ; preds = %in_bounds-true29.us.12, %reduce-window.loop_exit.window.1.11
%reduce_window_accum_ptr26.1.lcssa.12 = phi double [ %add.1161.i.us.12, %in_bounds-true29.us.12 ], [ %reduce_window_accum_ptr26.1.lcssa.11, %reduce-window.loop_exit.window.1.11 ]
br i1 %371, label %in_bounds-true29.us.13, label %reduce-window.loop_exit.window.1.13
in_bounds-true29.us.13: ; preds = %reduce-window.loop_exit.window.1.12
%434 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %370, i64 %reduce-window.invar_address.dim.1.0163
%435 = load double, double* %434, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.13 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.12, %435
br label %reduce-window.loop_exit.window.1.13
reduce-window.loop_exit.window.1.13: ; preds = %in_bounds-true29.us.13, %reduce-window.loop_exit.window.1.12
%reduce_window_accum_ptr26.1.lcssa.13 = phi double [ %add.1161.i.us.13, %in_bounds-true29.us.13 ], [ %reduce_window_accum_ptr26.1.lcssa.12, %reduce-window.loop_exit.window.1.12 ]
br i1 %373, label %in_bounds-true29.us.14, label %reduce-window.loop_exit.window.1.14
in_bounds-true29.us.14: ; preds = %reduce-window.loop_exit.window.1.13
%436 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %372, i64 %reduce-window.invar_address.dim.1.0163
%437 = load double, double* %436, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.14 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.13, %437
br label %reduce-window.loop_exit.window.1.14
reduce-window.loop_exit.window.1.14: ; preds = %in_bounds-true29.us.14, %reduce-window.loop_exit.window.1.13
%reduce_window_accum_ptr26.1.lcssa.14 = phi double [ %add.1161.i.us.14, %in_bounds-true29.us.14 ], [ %reduce_window_accum_ptr26.1.lcssa.13, %reduce-window.loop_exit.window.1.13 ]
br i1 %375, label %in_bounds-true29.us.15, label %reduce-window.loop_exit.window.1.15
in_bounds-true29.us.15: ; preds = %reduce-window.loop_exit.window.1.14
%438 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %374, i64 %reduce-window.invar_address.dim.1.0163
%439 = load double, double* %438, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.15 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.14, %439
br label %reduce-window.loop_exit.window.1.15
reduce-window.loop_exit.window.1.15: ; preds = %in_bounds-true29.us.15, %reduce-window.loop_exit.window.1.14
%reduce_window_accum_ptr26.1.lcssa.15 = phi double [ %add.1161.i.us.15, %in_bounds-true29.us.15 ], [ %reduce_window_accum_ptr26.1.lcssa.14, %reduce-window.loop_exit.window.1.14 ]
br i1 %377, label %in_bounds-true29.us.16, label %reduce-window.loop_exit.window.1.16
in_bounds-true29.us.16: ; preds = %reduce-window.loop_exit.window.1.15
%440 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %376, i64 %reduce-window.invar_address.dim.1.0163
%441 = load double, double* %440, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.16 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.15, %441
br label %reduce-window.loop_exit.window.1.16
reduce-window.loop_exit.window.1.16: ; preds = %in_bounds-true29.us.16, %reduce-window.loop_exit.window.1.15
%reduce_window_accum_ptr26.1.lcssa.16 = phi double [ %add.1161.i.us.16, %in_bounds-true29.us.16 ], [ %reduce_window_accum_ptr26.1.lcssa.15, %reduce-window.loop_exit.window.1.15 ]
br i1 %379, label %in_bounds-true29.us.17, label %reduce-window.loop_exit.window.1.17
in_bounds-true29.us.17: ; preds = %reduce-window.loop_exit.window.1.16
%442 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %378, i64 %reduce-window.invar_address.dim.1.0163
%443 = load double, double* %442, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.17 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.16, %443
br label %reduce-window.loop_exit.window.1.17
reduce-window.loop_exit.window.1.17: ; preds = %in_bounds-true29.us.17, %reduce-window.loop_exit.window.1.16
%reduce_window_accum_ptr26.1.lcssa.17 = phi double [ %add.1161.i.us.17, %in_bounds-true29.us.17 ], [ %reduce_window_accum_ptr26.1.lcssa.16, %reduce-window.loop_exit.window.1.16 ]
br i1 %381, label %in_bounds-true29.us.18, label %reduce-window.loop_exit.window.1.18
in_bounds-true29.us.18: ; preds = %reduce-window.loop_exit.window.1.17
%444 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %380, i64 %reduce-window.invar_address.dim.1.0163
%445 = load double, double* %444, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.18 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.17, %445
br label %reduce-window.loop_exit.window.1.18
reduce-window.loop_exit.window.1.18: ; preds = %in_bounds-true29.us.18, %reduce-window.loop_exit.window.1.17
%reduce_window_accum_ptr26.1.lcssa.18 = phi double [ %add.1161.i.us.18, %in_bounds-true29.us.18 ], [ %reduce_window_accum_ptr26.1.lcssa.17, %reduce-window.loop_exit.window.1.17 ]
br i1 %383, label %in_bounds-true29.us.19, label %reduce-window.loop_exit.window.1.19
in_bounds-true29.us.19: ; preds = %reduce-window.loop_exit.window.1.18
%446 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %382, i64 %reduce-window.invar_address.dim.1.0163
%447 = load double, double* %446, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.19 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.18, %447
br label %reduce-window.loop_exit.window.1.19
reduce-window.loop_exit.window.1.19: ; preds = %in_bounds-true29.us.19, %reduce-window.loop_exit.window.1.18
%reduce_window_accum_ptr26.1.lcssa.19 = phi double [ %add.1161.i.us.19, %in_bounds-true29.us.19 ], [ %reduce_window_accum_ptr26.1.lcssa.18, %reduce-window.loop_exit.window.1.18 ]
br i1 %385, label %in_bounds-true29.us.20, label %reduce-window.loop_exit.window.1.20
in_bounds-true29.us.20: ; preds = %reduce-window.loop_exit.window.1.19
%448 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %384, i64 %reduce-window.invar_address.dim.1.0163
%449 = load double, double* %448, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.20 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.19, %449
br label %reduce-window.loop_exit.window.1.20
reduce-window.loop_exit.window.1.20: ; preds = %in_bounds-true29.us.20, %reduce-window.loop_exit.window.1.19
%reduce_window_accum_ptr26.1.lcssa.20 = phi double [ %add.1161.i.us.20, %in_bounds-true29.us.20 ], [ %reduce_window_accum_ptr26.1.lcssa.19, %reduce-window.loop_exit.window.1.19 ]
br i1 %387, label %in_bounds-true29.us.21, label %reduce-window.loop_exit.window.1.21
in_bounds-true29.us.21: ; preds = %reduce-window.loop_exit.window.1.20
%450 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %386, i64 %reduce-window.invar_address.dim.1.0163
%451 = load double, double* %450, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.21 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.20, %451
br label %reduce-window.loop_exit.window.1.21
reduce-window.loop_exit.window.1.21: ; preds = %in_bounds-true29.us.21, %reduce-window.loop_exit.window.1.20
%reduce_window_accum_ptr26.1.lcssa.21 = phi double [ %add.1161.i.us.21, %in_bounds-true29.us.21 ], [ %reduce_window_accum_ptr26.1.lcssa.20, %reduce-window.loop_exit.window.1.20 ]
br i1 %389, label %in_bounds-true29.us.22, label %reduce-window.loop_exit.window.1.22
in_bounds-true29.us.22: ; preds = %reduce-window.loop_exit.window.1.21
%452 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %388, i64 %reduce-window.invar_address.dim.1.0163
%453 = load double, double* %452, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.22 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.21, %453
br label %reduce-window.loop_exit.window.1.22
reduce-window.loop_exit.window.1.22: ; preds = %in_bounds-true29.us.22, %reduce-window.loop_exit.window.1.21
%reduce_window_accum_ptr26.1.lcssa.22 = phi double [ %add.1161.i.us.22, %in_bounds-true29.us.22 ], [ %reduce_window_accum_ptr26.1.lcssa.21, %reduce-window.loop_exit.window.1.21 ]
br i1 %391, label %in_bounds-true29.us.23, label %reduce-window.loop_exit.window.1.23
in_bounds-true29.us.23: ; preds = %reduce-window.loop_exit.window.1.22
%454 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %390, i64 %reduce-window.invar_address.dim.1.0163
%455 = load double, double* %454, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.23 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.22, %455
br label %reduce-window.loop_exit.window.1.23
reduce-window.loop_exit.window.1.23: ; preds = %in_bounds-true29.us.23, %reduce-window.loop_exit.window.1.22
%reduce_window_accum_ptr26.1.lcssa.23 = phi double [ %add.1161.i.us.23, %in_bounds-true29.us.23 ], [ %reduce_window_accum_ptr26.1.lcssa.22, %reduce-window.loop_exit.window.1.22 ]
br i1 %393, label %in_bounds-true29.us.24, label %reduce-window.loop_exit.window.1.24
in_bounds-true29.us.24: ; preds = %reduce-window.loop_exit.window.1.23
%456 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %392, i64 %reduce-window.invar_address.dim.1.0163
%457 = load double, double* %456, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.24 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.23, %457
br label %reduce-window.loop_exit.window.1.24
reduce-window.loop_exit.window.1.24: ; preds = %in_bounds-true29.us.24, %reduce-window.loop_exit.window.1.23
%reduce_window_accum_ptr26.1.lcssa.24 = phi double [ %add.1161.i.us.24, %in_bounds-true29.us.24 ], [ %reduce_window_accum_ptr26.1.lcssa.23, %reduce-window.loop_exit.window.1.23 ]
br i1 %395, label %in_bounds-true29.us.25, label %reduce-window.loop_exit.window.1.25
in_bounds-true29.us.25: ; preds = %reduce-window.loop_exit.window.1.24
%458 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %394, i64 %reduce-window.invar_address.dim.1.0163
%459 = load double, double* %458, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.25 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.24, %459
br label %reduce-window.loop_exit.window.1.25
reduce-window.loop_exit.window.1.25: ; preds = %in_bounds-true29.us.25, %reduce-window.loop_exit.window.1.24
%reduce_window_accum_ptr26.1.lcssa.25 = phi double [ %add.1161.i.us.25, %in_bounds-true29.us.25 ], [ %reduce_window_accum_ptr26.1.lcssa.24, %reduce-window.loop_exit.window.1.24 ]
br i1 %397, label %in_bounds-true29.us.26, label %reduce-window.loop_exit.window.1.26
in_bounds-true29.us.26: ; preds = %reduce-window.loop_exit.window.1.25
%460 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %396, i64 %reduce-window.invar_address.dim.1.0163
%461 = load double, double* %460, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.26 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.25, %461
br label %reduce-window.loop_exit.window.1.26
reduce-window.loop_exit.window.1.26: ; preds = %in_bounds-true29.us.26, %reduce-window.loop_exit.window.1.25
%reduce_window_accum_ptr26.1.lcssa.26 = phi double [ %add.1161.i.us.26, %in_bounds-true29.us.26 ], [ %reduce_window_accum_ptr26.1.lcssa.25, %reduce-window.loop_exit.window.1.25 ]
br i1 %399, label %in_bounds-true29.us.27, label %reduce-window.loop_exit.window.1.27
in_bounds-true29.us.27: ; preds = %reduce-window.loop_exit.window.1.26
%462 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %398, i64 %reduce-window.invar_address.dim.1.0163
%463 = load double, double* %462, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.27 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.26, %463
br label %reduce-window.loop_exit.window.1.27
reduce-window.loop_exit.window.1.27: ; preds = %in_bounds-true29.us.27, %reduce-window.loop_exit.window.1.26
%reduce_window_accum_ptr26.1.lcssa.27 = phi double [ %add.1161.i.us.27, %in_bounds-true29.us.27 ], [ %reduce_window_accum_ptr26.1.lcssa.26, %reduce-window.loop_exit.window.1.26 ]
br i1 %401, label %in_bounds-true29.us.28, label %reduce-window.loop_exit.window.1.28
in_bounds-true29.us.28: ; preds = %reduce-window.loop_exit.window.1.27
%464 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %400, i64 %reduce-window.invar_address.dim.1.0163
%465 = load double, double* %464, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.28 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.27, %465
br label %reduce-window.loop_exit.window.1.28
reduce-window.loop_exit.window.1.28: ; preds = %in_bounds-true29.us.28, %reduce-window.loop_exit.window.1.27
%reduce_window_accum_ptr26.1.lcssa.28 = phi double [ %add.1161.i.us.28, %in_bounds-true29.us.28 ], [ %reduce_window_accum_ptr26.1.lcssa.27, %reduce-window.loop_exit.window.1.27 ]
br i1 %403, label %in_bounds-true29.us.29, label %reduce-window.loop_exit.window.1.29
in_bounds-true29.us.29: ; preds = %reduce-window.loop_exit.window.1.28
%466 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %402, i64 %reduce-window.invar_address.dim.1.0163
%467 = load double, double* %466, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.29 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.28, %467
br label %reduce-window.loop_exit.window.1.29
reduce-window.loop_exit.window.1.29: ; preds = %in_bounds-true29.us.29, %reduce-window.loop_exit.window.1.28
%reduce_window_accum_ptr26.1.lcssa.29 = phi double [ %add.1161.i.us.29, %in_bounds-true29.us.29 ], [ %reduce_window_accum_ptr26.1.lcssa.28, %reduce-window.loop_exit.window.1.28 ]
br i1 %405, label %in_bounds-true29.us.30, label %reduce-window.loop_exit.window.1.30
in_bounds-true29.us.30: ; preds = %reduce-window.loop_exit.window.1.29
%468 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %404, i64 %reduce-window.invar_address.dim.1.0163
%469 = load double, double* %468, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.30 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.29, %469
br label %reduce-window.loop_exit.window.1.30
reduce-window.loop_exit.window.1.30: ; preds = %in_bounds-true29.us.30, %reduce-window.loop_exit.window.1.29
%reduce_window_accum_ptr26.1.lcssa.30 = phi double [ %add.1161.i.us.30, %in_bounds-true29.us.30 ], [ %reduce_window_accum_ptr26.1.lcssa.29, %reduce-window.loop_exit.window.1.29 ]
br i1 %407, label %in_bounds-true29.us.31, label %reduce-window.loop_exit.window.1.31
in_bounds-true29.us.31: ; preds = %reduce-window.loop_exit.window.1.30
%470 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.9, i64 0, i64 %406, i64 %reduce-window.invar_address.dim.1.0163
%471 = load double, double* %470, align 8, !alias.scope !22, !noalias !38
%add.1161.i.us.31 = fadd reassoc double %reduce_window_accum_ptr26.1.lcssa.30, %471
br label %reduce-window.loop_exit.window.1.31
reduce-window.loop_exit.window.1.31: ; preds = %in_bounds-true29.us.31, %reduce-window.loop_exit.window.1.30
%reduce_window_accum_ptr26.1.lcssa.31 = phi double [ %add.1161.i.us.31, %in_bounds-true29.us.31 ], [ %reduce_window_accum_ptr26.1.lcssa.30, %reduce-window.loop_exit.window.1.30 ]
%472 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window, i64 0, i64 %reduce-window.invar_address.dim.0.0164, i64 %reduce-window.invar_address.dim.1.0163
store double %reduce_window_accum_ptr26.1.lcssa.31, double* %472, align 8, !alias.scope !40, !noalias !41
%invar.inc25 = add nuw nsw i64 %reduce-window.invar_address.dim.1.0163, 1
%exitcond205 = icmp eq i64 %invar.inc25, 4
br i1 %exitcond205, label %reduce-window.loop_exit.dim.1, label %reduce-window.loop_header.window.0.preheader
reduce-window.loop_exit.dim.1: ; preds = %reduce-window.loop_exit.window.1.31
%invar.inc24 = add nuw nsw i64 %reduce-window.invar_address.dim.0.0164, 1
%exitcond206 = icmp eq i64 %invar.inc24, 16
br i1 %exitcond206, label %reduce-window.vectorized_inner.loop_body.reduction_dim.0, label %reduce-window.loop_header.dim.1.preheader
reduce-window.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.loop_exit.dim.1
%473 = getelementptr inbounds i8, i8* %4, i64 48544
%474 = bitcast i8* %89 to <4 x double>*
%475 = load <4 x double>, <4 x double>* %474, align 16, !alias.scope !40, !noalias !41
%476 = fadd reassoc <4 x double> %475, zeroinitializer
%477 = getelementptr inbounds i8, i8* %4, i64 48032
%478 = bitcast i8* %477 to <4 x double>*
%479 = load <4 x double>, <4 x double>* %478, align 16, !alias.scope !40, !noalias !41
%480 = fadd reassoc <4 x double> %476, %479
%481 = getelementptr inbounds i8, i8* %4, i64 48064
%482 = bitcast i8* %481 to <4 x double>*
%483 = load <4 x double>, <4 x double>* %482, align 16, !alias.scope !40, !noalias !41
%484 = fadd reassoc <4 x double> %480, %483
%485 = getelementptr inbounds i8, i8* %4, i64 48096
%486 = bitcast i8* %485 to <4 x double>*
%487 = load <4 x double>, <4 x double>* %486, align 16, !alias.scope !40, !noalias !41
%488 = fadd reassoc <4 x double> %484, %487
%489 = getelementptr inbounds i8, i8* %4, i64 48128
%490 = bitcast i8* %489 to <4 x double>*
%491 = load <4 x double>, <4 x double>* %490, align 16, !alias.scope !40, !noalias !41
%492 = fadd reassoc <4 x double> %488, %491
%493 = getelementptr inbounds i8, i8* %4, i64 48160
%494 = bitcast i8* %493 to <4 x double>*
%495 = load <4 x double>, <4 x double>* %494, align 16, !alias.scope !40, !noalias !41
%496 = fadd reassoc <4 x double> %492, %495
%497 = getelementptr inbounds i8, i8* %4, i64 48192
%498 = bitcast i8* %497 to <4 x double>*
%499 = load <4 x double>, <4 x double>* %498, align 16, !alias.scope !40, !noalias !41
%500 = fadd reassoc <4 x double> %496, %499
%501 = getelementptr inbounds i8, i8* %4, i64 48224
%502 = bitcast i8* %501 to <4 x double>*
%503 = load <4 x double>, <4 x double>* %502, align 16, !alias.scope !40, !noalias !41
%504 = fadd reassoc <4 x double> %500, %503
%505 = getelementptr inbounds i8, i8* %4, i64 48256
%506 = bitcast i8* %505 to <4 x double>*
%507 = load <4 x double>, <4 x double>* %506, align 16, !alias.scope !40, !noalias !41
%508 = fadd reassoc <4 x double> %504, %507
%509 = getelementptr inbounds i8, i8* %4, i64 48288
%510 = bitcast i8* %509 to <4 x double>*
%511 = load <4 x double>, <4 x double>* %510, align 16, !alias.scope !40, !noalias !41
%512 = fadd reassoc <4 x double> %508, %511
%513 = getelementptr inbounds i8, i8* %4, i64 48320
%514 = bitcast i8* %513 to <4 x double>*
%515 = load <4 x double>, <4 x double>* %514, align 16, !alias.scope !40, !noalias !41
%516 = fadd reassoc <4 x double> %512, %515
%517 = getelementptr inbounds i8, i8* %4, i64 48352
%518 = bitcast i8* %517 to <4 x double>*
%519 = load <4 x double>, <4 x double>* %518, align 16, !alias.scope !40, !noalias !41
%520 = fadd reassoc <4 x double> %516, %519
%521 = getelementptr inbounds i8, i8* %4, i64 48384
%522 = bitcast i8* %521 to <4 x double>*
%523 = load <4 x double>, <4 x double>* %522, align 16, !alias.scope !40, !noalias !41
%524 = fadd reassoc <4 x double> %520, %523
%525 = getelementptr inbounds i8, i8* %4, i64 48416
%526 = bitcast i8* %525 to <4 x double>*
%527 = load <4 x double>, <4 x double>* %526, align 16, !alias.scope !40, !noalias !41
%528 = fadd reassoc <4 x double> %524, %527
%529 = getelementptr inbounds i8, i8* %4, i64 48448
%530 = bitcast i8* %529 to <4 x double>*
%531 = load <4 x double>, <4 x double>* %530, align 16, !alias.scope !40, !noalias !41
%532 = fadd reassoc <4 x double> %528, %531
%533 = getelementptr inbounds i8, i8* %4, i64 48480
%534 = bitcast i8* %533 to <4 x double>*
%535 = load <4 x double>, <4 x double>* %534, align 16, !alias.scope !40, !noalias !41
%536 = fadd reassoc <4 x double> %532, %535
%537 = bitcast i8* %473 to <4 x double>*
store <4 x double> %536, <4 x double>* %537, align 16, !alias.scope !42, !noalias !43
%538 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%539 = bitcast double* %538 to <4 x double>*
%wide.load316 = load <4 x double>, <4 x double>* %539, align 16, !invariant.load !0, !noalias !4
%540 = fmul <4 x double> %wide.load316, %wide.load316
%541 = fmul <4 x double> %540, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%542 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%543 = bitcast double* %542 to <4 x double>*
%wide.load317 = load <4 x double>, <4 x double>* %543, align 16, !invariant.load !0, !noalias !4
%544 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 8
%545 = bitcast double* %544 to <4 x double>*
%wide.load316.1 = load <4 x double>, <4 x double>* %545, align 16, !invariant.load !0, !noalias !4
%546 = fmul <4 x double> %wide.load316.1, %wide.load316.1
%547 = fmul <4 x double> %546, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%548 = getelementptr inbounds [12 x double], [12 x double]* %2, i64 0, i64 4
%549 = bitcast double* %548 to <4 x double>*
%wide.load317.1 = load <4 x double>, <4 x double>* %549, align 16, !invariant.load !0, !noalias !4
br label %vector.ph309
vector.ph309: ; preds = %vector.ph309, %reduce-window.vectorized_inner.loop_body.reduction_dim.0
%fusion.1.invar_address.dim.0.0157 = phi i64 [ 0, %reduce-window.vectorized_inner.loop_body.reduction_dim.0 ], [ %invar.inc42.1, %vector.ph309 ]
%constant.112 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @0 to [500 x double]*), i64 0, i64 %fusion.1.invar_address.dim.0.0157
%constant.11244 = load double, double* %constant.112, align 16
%broadcast.splatinsert318 = insertelement <4 x double> poison, double %constant.11244, i64 0
%broadcast.splat319 = shufflevector <4 x double> %broadcast.splatinsert318, <4 x double> poison, <4 x i32> zeroinitializer
%550 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %fusion.1.invar_address.dim.0.0157, i64 0
%551 = bitcast double* %550 to <4 x double>*
%wide.load314 = load <4 x double>, <4 x double>* %551, align 16, !alias.scope !26, !noalias !27
%552 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.1.invar_address.dim.0.0157, i64 0
%553 = bitcast double* %552 to <4 x double>*
%wide.load315 = load <4 x double>, <4 x double>* %553, align 16, !alias.scope !18, !noalias !19
%554 = fneg <4 x double> %wide.load314
%555 = fmul <4 x double> %wide.load315, %554
%556 = fdiv <4 x double> %555, %541
%557 = fsub <4 x double> %broadcast.splat319, %wide.load317
%558 = fmul <4 x double> %557, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%559 = fmul <4 x double> %556, %558
%560 = bitcast double* %550 to <4 x double>*
store <4 x double> %559, <4 x double>* %560, align 16, !alias.scope !26, !noalias !44
%invar.inc42 = or i64 %fusion.1.invar_address.dim.0.0157, 1
%constant.112.1 = getelementptr inbounds [500 x double], [500 x double]* bitcast ([4000 x i8]* @0 to [500 x double]*), i64 0, i64 %invar.inc42
%constant.11244.1 = load double, double* %constant.112.1, align 8
%broadcast.splatinsert318.1 = insertelement <4 x double> poison, double %constant.11244.1, i64 0
%broadcast.splat319.1 = shufflevector <4 x double> %broadcast.splatinsert318.1, <4 x double> poison, <4 x i32> zeroinitializer
%561 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %invar.inc42, i64 0
%562 = bitcast double* %561 to <4 x double>*
%wide.load314.1 = load <4 x double>, <4 x double>* %562, align 16, !alias.scope !26, !noalias !27
%563 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc42, i64 0
%564 = bitcast double* %563 to <4 x double>*
%wide.load315.1 = load <4 x double>, <4 x double>* %564, align 16, !alias.scope !18, !noalias !19
%565 = fneg <4 x double> %wide.load314.1
%566 = fmul <4 x double> %wide.load315.1, %565
%567 = fdiv <4 x double> %566, %547
%568 = fsub <4 x double> %broadcast.splat319.1, %wide.load317.1
%569 = fmul <4 x double> %568, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%570 = fmul <4 x double> %567, %569
%571 = bitcast double* %561 to <4 x double>*
store <4 x double> %570, <4 x double>* %571, align 16, !alias.scope !26, !noalias !44
%invar.inc42.1 = add nuw nsw i64 %fusion.1.invar_address.dim.0.0157, 2
%exitcond202.1 = icmp eq i64 %invar.inc42.1, 500
br i1 %exitcond202.1, label %fusion.1.loop_exit.dim.0, label %vector.ph309
fusion.1.loop_exit.dim.0: ; preds = %vector.ph309
%reduce-window.3 = bitcast i8* %25 to [16 x [4 x double]]*
br label %reduce-window.3.loop_header.dim.1.preheader
reduce-window.3.loop_header.dim.1.preheader: ; preds = %fusion.1.loop_exit.dim.0, %reduce-window.3.loop_exit.dim.1
%reduce-window.3.invar_address.dim.0.0155 = phi i64 [ 0, %fusion.1.loop_exit.dim.0 ], [ %invar.inc46, %reduce-window.3.loop_exit.dim.1 ]
%572 = shl nsw i64 %reduce-window.3.invar_address.dim.0.0155, 5
%573 = add nsw i64 %572, -6
%574 = icmp ult i64 %573, 500
%575 = add nsw i64 %572, -5
%576 = icmp ult i64 %575, 500
%577 = add nsw i64 %572, -4
%578 = icmp ult i64 %577, 500
%579 = add nsw i64 %572, -3
%580 = icmp ult i64 %579, 500
%581 = add nsw i64 %572, -2
%582 = icmp ult i64 %581, 500
%583 = add nsw i64 %572, -1
%584 = icmp ult i64 %583, 500
%585 = icmp ult i64 %572, 500
%586 = or i64 %572, 1
%587 = icmp ult i64 %586, 500
%588 = or i64 %572, 2
%589 = icmp ult i64 %588, 500
%590 = or i64 %572, 3
%591 = icmp ult i64 %590, 500
%592 = or i64 %572, 4
%593 = icmp ult i64 %592, 500
%594 = or i64 %572, 5
%595 = icmp ult i64 %594, 500
%596 = or i64 %572, 6
%597 = icmp ult i64 %596, 500
%598 = or i64 %572, 7
%599 = icmp ult i64 %598, 500
%600 = or i64 %572, 8
%601 = icmp ult i64 %600, 500
%602 = or i64 %572, 9
%603 = icmp ult i64 %602, 500
%604 = or i64 %572, 10
%605 = icmp ult i64 %604, 500
%606 = or i64 %572, 11
%607 = icmp ult i64 %606, 500
%608 = or i64 %572, 12
%609 = icmp ult i64 %608, 500
%610 = or i64 %572, 13
%611 = icmp ult i64 %610, 500
%612 = or i64 %572, 14
%613 = icmp ult i64 %612, 500
%614 = or i64 %572, 15
%615 = icmp ult i64 %614, 500
%616 = or i64 %572, 16
%617 = icmp ult i64 %616, 500
%618 = or i64 %572, 17
%619 = icmp ult i64 %618, 500
%620 = or i64 %572, 18
%621 = icmp ult i64 %620, 500
%622 = or i64 %572, 19
%623 = icmp ult i64 %622, 500
%624 = or i64 %572, 20
%625 = icmp ult i64 %624, 500
%626 = or i64 %572, 21
%627 = icmp ult i64 %626, 500
%628 = or i64 %572, 22
%629 = icmp ult i64 %628, 500
%630 = or i64 %572, 23
%631 = icmp ult i64 %630, 500
%632 = or i64 %572, 24
%633 = icmp ult i64 %632, 500
%634 = or i64 %572, 25
%635 = icmp ult i64 %634, 500
br label %reduce-window.3.loop_header.window.0.preheader
reduce-window.3.loop_header.window.0.preheader: ; preds = %reduce-window.3.loop_header.dim.1.preheader, %reduce-window.3.loop_exit.window.1.31
%reduce-window.3.invar_address.dim.1.0154 = phi i64 [ 0, %reduce-window.3.loop_header.dim.1.preheader ], [ %invar.inc47, %reduce-window.3.loop_exit.window.1.31 ]
br i1 %574, label %in_bounds-true51.us, label %reduce-window.3.loop_exit.window.1
in_bounds-true51.us: ; preds = %reduce-window.3.loop_header.window.0.preheader
%636 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %573, i64 %reduce-window.3.invar_address.dim.1.0154
%637 = load double, double* %636, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us = fadd reassoc double %637, 0.000000e+00
br label %reduce-window.3.loop_exit.window.1
reduce-window.3.loop_exit.window.1: ; preds = %reduce-window.3.loop_header.window.0.preheader, %in_bounds-true51.us
%reduce_window_accum_ptr48.1.lcssa = phi double [ %add.1441.i.us, %in_bounds-true51.us ], [ 0.000000e+00, %reduce-window.3.loop_header.window.0.preheader ]
br i1 %576, label %in_bounds-true51.us.1, label %reduce-window.3.loop_exit.window.1.1
in_bounds-true51.us.1: ; preds = %reduce-window.3.loop_exit.window.1
%638 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %575, i64 %reduce-window.3.invar_address.dim.1.0154
%639 = load double, double* %638, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.1 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa, %639
br label %reduce-window.3.loop_exit.window.1.1
reduce-window.3.loop_exit.window.1.1: ; preds = %in_bounds-true51.us.1, %reduce-window.3.loop_exit.window.1
%reduce_window_accum_ptr48.1.lcssa.1 = phi double [ %add.1441.i.us.1, %in_bounds-true51.us.1 ], [ %reduce_window_accum_ptr48.1.lcssa, %reduce-window.3.loop_exit.window.1 ]
br i1 %578, label %in_bounds-true51.us.2, label %reduce-window.3.loop_exit.window.1.2
in_bounds-true51.us.2: ; preds = %reduce-window.3.loop_exit.window.1.1
%640 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %577, i64 %reduce-window.3.invar_address.dim.1.0154
%641 = load double, double* %640, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.2 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.1, %641
br label %reduce-window.3.loop_exit.window.1.2
reduce-window.3.loop_exit.window.1.2: ; preds = %in_bounds-true51.us.2, %reduce-window.3.loop_exit.window.1.1
%reduce_window_accum_ptr48.1.lcssa.2 = phi double [ %add.1441.i.us.2, %in_bounds-true51.us.2 ], [ %reduce_window_accum_ptr48.1.lcssa.1, %reduce-window.3.loop_exit.window.1.1 ]
br i1 %580, label %in_bounds-true51.us.3, label %reduce-window.3.loop_exit.window.1.3
in_bounds-true51.us.3: ; preds = %reduce-window.3.loop_exit.window.1.2
%642 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %579, i64 %reduce-window.3.invar_address.dim.1.0154
%643 = load double, double* %642, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.3 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.2, %643
br label %reduce-window.3.loop_exit.window.1.3
reduce-window.3.loop_exit.window.1.3: ; preds = %in_bounds-true51.us.3, %reduce-window.3.loop_exit.window.1.2
%reduce_window_accum_ptr48.1.lcssa.3 = phi double [ %add.1441.i.us.3, %in_bounds-true51.us.3 ], [ %reduce_window_accum_ptr48.1.lcssa.2, %reduce-window.3.loop_exit.window.1.2 ]
br i1 %582, label %in_bounds-true51.us.4, label %reduce-window.3.loop_exit.window.1.4
in_bounds-true51.us.4: ; preds = %reduce-window.3.loop_exit.window.1.3
%644 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %581, i64 %reduce-window.3.invar_address.dim.1.0154
%645 = load double, double* %644, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.4 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.3, %645
br label %reduce-window.3.loop_exit.window.1.4
reduce-window.3.loop_exit.window.1.4: ; preds = %in_bounds-true51.us.4, %reduce-window.3.loop_exit.window.1.3
%reduce_window_accum_ptr48.1.lcssa.4 = phi double [ %add.1441.i.us.4, %in_bounds-true51.us.4 ], [ %reduce_window_accum_ptr48.1.lcssa.3, %reduce-window.3.loop_exit.window.1.3 ]
br i1 %584, label %in_bounds-true51.us.5, label %reduce-window.3.loop_exit.window.1.5
in_bounds-true51.us.5: ; preds = %reduce-window.3.loop_exit.window.1.4
%646 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %583, i64 %reduce-window.3.invar_address.dim.1.0154
%647 = load double, double* %646, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.5 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.4, %647
br label %reduce-window.3.loop_exit.window.1.5
reduce-window.3.loop_exit.window.1.5: ; preds = %in_bounds-true51.us.5, %reduce-window.3.loop_exit.window.1.4
%reduce_window_accum_ptr48.1.lcssa.5 = phi double [ %add.1441.i.us.5, %in_bounds-true51.us.5 ], [ %reduce_window_accum_ptr48.1.lcssa.4, %reduce-window.3.loop_exit.window.1.4 ]
br i1 %585, label %in_bounds-true51.us.6, label %reduce-window.3.loop_exit.window.1.6
in_bounds-true51.us.6: ; preds = %reduce-window.3.loop_exit.window.1.5
%648 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %572, i64 %reduce-window.3.invar_address.dim.1.0154
%649 = load double, double* %648, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.6 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.5, %649
br label %reduce-window.3.loop_exit.window.1.6
reduce-window.3.loop_exit.window.1.6: ; preds = %in_bounds-true51.us.6, %reduce-window.3.loop_exit.window.1.5
%reduce_window_accum_ptr48.1.lcssa.6 = phi double [ %add.1441.i.us.6, %in_bounds-true51.us.6 ], [ %reduce_window_accum_ptr48.1.lcssa.5, %reduce-window.3.loop_exit.window.1.5 ]
br i1 %587, label %in_bounds-true51.us.7, label %reduce-window.3.loop_exit.window.1.7
in_bounds-true51.us.7: ; preds = %reduce-window.3.loop_exit.window.1.6
%650 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %586, i64 %reduce-window.3.invar_address.dim.1.0154
%651 = load double, double* %650, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.7 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.6, %651
br label %reduce-window.3.loop_exit.window.1.7
reduce-window.3.loop_exit.window.1.7: ; preds = %in_bounds-true51.us.7, %reduce-window.3.loop_exit.window.1.6
%reduce_window_accum_ptr48.1.lcssa.7 = phi double [ %add.1441.i.us.7, %in_bounds-true51.us.7 ], [ %reduce_window_accum_ptr48.1.lcssa.6, %reduce-window.3.loop_exit.window.1.6 ]
br i1 %589, label %in_bounds-true51.us.8, label %reduce-window.3.loop_exit.window.1.8
in_bounds-true51.us.8: ; preds = %reduce-window.3.loop_exit.window.1.7
%652 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %588, i64 %reduce-window.3.invar_address.dim.1.0154
%653 = load double, double* %652, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.8 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.7, %653
br label %reduce-window.3.loop_exit.window.1.8
reduce-window.3.loop_exit.window.1.8: ; preds = %in_bounds-true51.us.8, %reduce-window.3.loop_exit.window.1.7
%reduce_window_accum_ptr48.1.lcssa.8 = phi double [ %add.1441.i.us.8, %in_bounds-true51.us.8 ], [ %reduce_window_accum_ptr48.1.lcssa.7, %reduce-window.3.loop_exit.window.1.7 ]
br i1 %591, label %in_bounds-true51.us.9, label %reduce-window.3.loop_exit.window.1.9
in_bounds-true51.us.9: ; preds = %reduce-window.3.loop_exit.window.1.8
%654 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %590, i64 %reduce-window.3.invar_address.dim.1.0154
%655 = load double, double* %654, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.9 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.8, %655
br label %reduce-window.3.loop_exit.window.1.9
reduce-window.3.loop_exit.window.1.9: ; preds = %in_bounds-true51.us.9, %reduce-window.3.loop_exit.window.1.8
%reduce_window_accum_ptr48.1.lcssa.9 = phi double [ %add.1441.i.us.9, %in_bounds-true51.us.9 ], [ %reduce_window_accum_ptr48.1.lcssa.8, %reduce-window.3.loop_exit.window.1.8 ]
br i1 %593, label %in_bounds-true51.us.10, label %reduce-window.3.loop_exit.window.1.10
in_bounds-true51.us.10: ; preds = %reduce-window.3.loop_exit.window.1.9
%656 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %592, i64 %reduce-window.3.invar_address.dim.1.0154
%657 = load double, double* %656, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.10 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.9, %657
br label %reduce-window.3.loop_exit.window.1.10
reduce-window.3.loop_exit.window.1.10: ; preds = %in_bounds-true51.us.10, %reduce-window.3.loop_exit.window.1.9
%reduce_window_accum_ptr48.1.lcssa.10 = phi double [ %add.1441.i.us.10, %in_bounds-true51.us.10 ], [ %reduce_window_accum_ptr48.1.lcssa.9, %reduce-window.3.loop_exit.window.1.9 ]
br i1 %595, label %in_bounds-true51.us.11, label %reduce-window.3.loop_exit.window.1.11
in_bounds-true51.us.11: ; preds = %reduce-window.3.loop_exit.window.1.10
%658 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %594, i64 %reduce-window.3.invar_address.dim.1.0154
%659 = load double, double* %658, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.11 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.10, %659
br label %reduce-window.3.loop_exit.window.1.11
reduce-window.3.loop_exit.window.1.11: ; preds = %in_bounds-true51.us.11, %reduce-window.3.loop_exit.window.1.10
%reduce_window_accum_ptr48.1.lcssa.11 = phi double [ %add.1441.i.us.11, %in_bounds-true51.us.11 ], [ %reduce_window_accum_ptr48.1.lcssa.10, %reduce-window.3.loop_exit.window.1.10 ]
br i1 %597, label %in_bounds-true51.us.12, label %reduce-window.3.loop_exit.window.1.12
in_bounds-true51.us.12: ; preds = %reduce-window.3.loop_exit.window.1.11
%660 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %596, i64 %reduce-window.3.invar_address.dim.1.0154
%661 = load double, double* %660, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.12 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.11, %661
br label %reduce-window.3.loop_exit.window.1.12
reduce-window.3.loop_exit.window.1.12: ; preds = %in_bounds-true51.us.12, %reduce-window.3.loop_exit.window.1.11
%reduce_window_accum_ptr48.1.lcssa.12 = phi double [ %add.1441.i.us.12, %in_bounds-true51.us.12 ], [ %reduce_window_accum_ptr48.1.lcssa.11, %reduce-window.3.loop_exit.window.1.11 ]
br i1 %599, label %in_bounds-true51.us.13, label %reduce-window.3.loop_exit.window.1.13
in_bounds-true51.us.13: ; preds = %reduce-window.3.loop_exit.window.1.12
%662 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %598, i64 %reduce-window.3.invar_address.dim.1.0154
%663 = load double, double* %662, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.13 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.12, %663
br label %reduce-window.3.loop_exit.window.1.13
reduce-window.3.loop_exit.window.1.13: ; preds = %in_bounds-true51.us.13, %reduce-window.3.loop_exit.window.1.12
%reduce_window_accum_ptr48.1.lcssa.13 = phi double [ %add.1441.i.us.13, %in_bounds-true51.us.13 ], [ %reduce_window_accum_ptr48.1.lcssa.12, %reduce-window.3.loop_exit.window.1.12 ]
br i1 %601, label %in_bounds-true51.us.14, label %reduce-window.3.loop_exit.window.1.14
in_bounds-true51.us.14: ; preds = %reduce-window.3.loop_exit.window.1.13
%664 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %600, i64 %reduce-window.3.invar_address.dim.1.0154
%665 = load double, double* %664, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.14 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.13, %665
br label %reduce-window.3.loop_exit.window.1.14
reduce-window.3.loop_exit.window.1.14: ; preds = %in_bounds-true51.us.14, %reduce-window.3.loop_exit.window.1.13
%reduce_window_accum_ptr48.1.lcssa.14 = phi double [ %add.1441.i.us.14, %in_bounds-true51.us.14 ], [ %reduce_window_accum_ptr48.1.lcssa.13, %reduce-window.3.loop_exit.window.1.13 ]
br i1 %603, label %in_bounds-true51.us.15, label %reduce-window.3.loop_exit.window.1.15
in_bounds-true51.us.15: ; preds = %reduce-window.3.loop_exit.window.1.14
%666 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %602, i64 %reduce-window.3.invar_address.dim.1.0154
%667 = load double, double* %666, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.15 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.14, %667
br label %reduce-window.3.loop_exit.window.1.15
reduce-window.3.loop_exit.window.1.15: ; preds = %in_bounds-true51.us.15, %reduce-window.3.loop_exit.window.1.14
%reduce_window_accum_ptr48.1.lcssa.15 = phi double [ %add.1441.i.us.15, %in_bounds-true51.us.15 ], [ %reduce_window_accum_ptr48.1.lcssa.14, %reduce-window.3.loop_exit.window.1.14 ]
br i1 %605, label %in_bounds-true51.us.16, label %reduce-window.3.loop_exit.window.1.16
in_bounds-true51.us.16: ; preds = %reduce-window.3.loop_exit.window.1.15
%668 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %604, i64 %reduce-window.3.invar_address.dim.1.0154
%669 = load double, double* %668, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.16 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.15, %669
br label %reduce-window.3.loop_exit.window.1.16
reduce-window.3.loop_exit.window.1.16: ; preds = %in_bounds-true51.us.16, %reduce-window.3.loop_exit.window.1.15
%reduce_window_accum_ptr48.1.lcssa.16 = phi double [ %add.1441.i.us.16, %in_bounds-true51.us.16 ], [ %reduce_window_accum_ptr48.1.lcssa.15, %reduce-window.3.loop_exit.window.1.15 ]
br i1 %607, label %in_bounds-true51.us.17, label %reduce-window.3.loop_exit.window.1.17
in_bounds-true51.us.17: ; preds = %reduce-window.3.loop_exit.window.1.16
%670 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %606, i64 %reduce-window.3.invar_address.dim.1.0154
%671 = load double, double* %670, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.17 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.16, %671
br label %reduce-window.3.loop_exit.window.1.17
reduce-window.3.loop_exit.window.1.17: ; preds = %in_bounds-true51.us.17, %reduce-window.3.loop_exit.window.1.16
%reduce_window_accum_ptr48.1.lcssa.17 = phi double [ %add.1441.i.us.17, %in_bounds-true51.us.17 ], [ %reduce_window_accum_ptr48.1.lcssa.16, %reduce-window.3.loop_exit.window.1.16 ]
br i1 %609, label %in_bounds-true51.us.18, label %reduce-window.3.loop_exit.window.1.18
in_bounds-true51.us.18: ; preds = %reduce-window.3.loop_exit.window.1.17
%672 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %608, i64 %reduce-window.3.invar_address.dim.1.0154
%673 = load double, double* %672, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.18 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.17, %673
br label %reduce-window.3.loop_exit.window.1.18
reduce-window.3.loop_exit.window.1.18: ; preds = %in_bounds-true51.us.18, %reduce-window.3.loop_exit.window.1.17
%reduce_window_accum_ptr48.1.lcssa.18 = phi double [ %add.1441.i.us.18, %in_bounds-true51.us.18 ], [ %reduce_window_accum_ptr48.1.lcssa.17, %reduce-window.3.loop_exit.window.1.17 ]
br i1 %611, label %in_bounds-true51.us.19, label %reduce-window.3.loop_exit.window.1.19
in_bounds-true51.us.19: ; preds = %reduce-window.3.loop_exit.window.1.18
%674 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %610, i64 %reduce-window.3.invar_address.dim.1.0154
%675 = load double, double* %674, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.19 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.18, %675
br label %reduce-window.3.loop_exit.window.1.19
reduce-window.3.loop_exit.window.1.19: ; preds = %in_bounds-true51.us.19, %reduce-window.3.loop_exit.window.1.18
%reduce_window_accum_ptr48.1.lcssa.19 = phi double [ %add.1441.i.us.19, %in_bounds-true51.us.19 ], [ %reduce_window_accum_ptr48.1.lcssa.18, %reduce-window.3.loop_exit.window.1.18 ]
br i1 %613, label %in_bounds-true51.us.20, label %reduce-window.3.loop_exit.window.1.20
in_bounds-true51.us.20: ; preds = %reduce-window.3.loop_exit.window.1.19
%676 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %612, i64 %reduce-window.3.invar_address.dim.1.0154
%677 = load double, double* %676, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.20 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.19, %677
br label %reduce-window.3.loop_exit.window.1.20
reduce-window.3.loop_exit.window.1.20: ; preds = %in_bounds-true51.us.20, %reduce-window.3.loop_exit.window.1.19
%reduce_window_accum_ptr48.1.lcssa.20 = phi double [ %add.1441.i.us.20, %in_bounds-true51.us.20 ], [ %reduce_window_accum_ptr48.1.lcssa.19, %reduce-window.3.loop_exit.window.1.19 ]
br i1 %615, label %in_bounds-true51.us.21, label %reduce-window.3.loop_exit.window.1.21
in_bounds-true51.us.21: ; preds = %reduce-window.3.loop_exit.window.1.20
%678 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %614, i64 %reduce-window.3.invar_address.dim.1.0154
%679 = load double, double* %678, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.21 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.20, %679
br label %reduce-window.3.loop_exit.window.1.21
reduce-window.3.loop_exit.window.1.21: ; preds = %in_bounds-true51.us.21, %reduce-window.3.loop_exit.window.1.20
%reduce_window_accum_ptr48.1.lcssa.21 = phi double [ %add.1441.i.us.21, %in_bounds-true51.us.21 ], [ %reduce_window_accum_ptr48.1.lcssa.20, %reduce-window.3.loop_exit.window.1.20 ]
br i1 %617, label %in_bounds-true51.us.22, label %reduce-window.3.loop_exit.window.1.22
in_bounds-true51.us.22: ; preds = %reduce-window.3.loop_exit.window.1.21
%680 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %616, i64 %reduce-window.3.invar_address.dim.1.0154
%681 = load double, double* %680, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.22 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.21, %681
br label %reduce-window.3.loop_exit.window.1.22
reduce-window.3.loop_exit.window.1.22: ; preds = %in_bounds-true51.us.22, %reduce-window.3.loop_exit.window.1.21
%reduce_window_accum_ptr48.1.lcssa.22 = phi double [ %add.1441.i.us.22, %in_bounds-true51.us.22 ], [ %reduce_window_accum_ptr48.1.lcssa.21, %reduce-window.3.loop_exit.window.1.21 ]
br i1 %619, label %in_bounds-true51.us.23, label %reduce-window.3.loop_exit.window.1.23
in_bounds-true51.us.23: ; preds = %reduce-window.3.loop_exit.window.1.22
%682 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %618, i64 %reduce-window.3.invar_address.dim.1.0154
%683 = load double, double* %682, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.23 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.22, %683
br label %reduce-window.3.loop_exit.window.1.23
reduce-window.3.loop_exit.window.1.23: ; preds = %in_bounds-true51.us.23, %reduce-window.3.loop_exit.window.1.22
%reduce_window_accum_ptr48.1.lcssa.23 = phi double [ %add.1441.i.us.23, %in_bounds-true51.us.23 ], [ %reduce_window_accum_ptr48.1.lcssa.22, %reduce-window.3.loop_exit.window.1.22 ]
br i1 %621, label %in_bounds-true51.us.24, label %reduce-window.3.loop_exit.window.1.24
in_bounds-true51.us.24: ; preds = %reduce-window.3.loop_exit.window.1.23
%684 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %620, i64 %reduce-window.3.invar_address.dim.1.0154
%685 = load double, double* %684, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.24 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.23, %685
br label %reduce-window.3.loop_exit.window.1.24
reduce-window.3.loop_exit.window.1.24: ; preds = %in_bounds-true51.us.24, %reduce-window.3.loop_exit.window.1.23
%reduce_window_accum_ptr48.1.lcssa.24 = phi double [ %add.1441.i.us.24, %in_bounds-true51.us.24 ], [ %reduce_window_accum_ptr48.1.lcssa.23, %reduce-window.3.loop_exit.window.1.23 ]
br i1 %623, label %in_bounds-true51.us.25, label %reduce-window.3.loop_exit.window.1.25
in_bounds-true51.us.25: ; preds = %reduce-window.3.loop_exit.window.1.24
%686 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %622, i64 %reduce-window.3.invar_address.dim.1.0154
%687 = load double, double* %686, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.25 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.24, %687
br label %reduce-window.3.loop_exit.window.1.25
reduce-window.3.loop_exit.window.1.25: ; preds = %in_bounds-true51.us.25, %reduce-window.3.loop_exit.window.1.24
%reduce_window_accum_ptr48.1.lcssa.25 = phi double [ %add.1441.i.us.25, %in_bounds-true51.us.25 ], [ %reduce_window_accum_ptr48.1.lcssa.24, %reduce-window.3.loop_exit.window.1.24 ]
br i1 %625, label %in_bounds-true51.us.26, label %reduce-window.3.loop_exit.window.1.26
in_bounds-true51.us.26: ; preds = %reduce-window.3.loop_exit.window.1.25
%688 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %624, i64 %reduce-window.3.invar_address.dim.1.0154
%689 = load double, double* %688, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.26 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.25, %689
br label %reduce-window.3.loop_exit.window.1.26
reduce-window.3.loop_exit.window.1.26: ; preds = %in_bounds-true51.us.26, %reduce-window.3.loop_exit.window.1.25
%reduce_window_accum_ptr48.1.lcssa.26 = phi double [ %add.1441.i.us.26, %in_bounds-true51.us.26 ], [ %reduce_window_accum_ptr48.1.lcssa.25, %reduce-window.3.loop_exit.window.1.25 ]
br i1 %627, label %in_bounds-true51.us.27, label %reduce-window.3.loop_exit.window.1.27
in_bounds-true51.us.27: ; preds = %reduce-window.3.loop_exit.window.1.26
%690 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %626, i64 %reduce-window.3.invar_address.dim.1.0154
%691 = load double, double* %690, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.27 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.26, %691
br label %reduce-window.3.loop_exit.window.1.27
reduce-window.3.loop_exit.window.1.27: ; preds = %in_bounds-true51.us.27, %reduce-window.3.loop_exit.window.1.26
%reduce_window_accum_ptr48.1.lcssa.27 = phi double [ %add.1441.i.us.27, %in_bounds-true51.us.27 ], [ %reduce_window_accum_ptr48.1.lcssa.26, %reduce-window.3.loop_exit.window.1.26 ]
br i1 %629, label %in_bounds-true51.us.28, label %reduce-window.3.loop_exit.window.1.28
in_bounds-true51.us.28: ; preds = %reduce-window.3.loop_exit.window.1.27
%692 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %628, i64 %reduce-window.3.invar_address.dim.1.0154
%693 = load double, double* %692, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.28 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.27, %693
br label %reduce-window.3.loop_exit.window.1.28
reduce-window.3.loop_exit.window.1.28: ; preds = %in_bounds-true51.us.28, %reduce-window.3.loop_exit.window.1.27
%reduce_window_accum_ptr48.1.lcssa.28 = phi double [ %add.1441.i.us.28, %in_bounds-true51.us.28 ], [ %reduce_window_accum_ptr48.1.lcssa.27, %reduce-window.3.loop_exit.window.1.27 ]
br i1 %631, label %in_bounds-true51.us.29, label %reduce-window.3.loop_exit.window.1.29
in_bounds-true51.us.29: ; preds = %reduce-window.3.loop_exit.window.1.28
%694 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %630, i64 %reduce-window.3.invar_address.dim.1.0154
%695 = load double, double* %694, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.29 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.28, %695
br label %reduce-window.3.loop_exit.window.1.29
reduce-window.3.loop_exit.window.1.29: ; preds = %in_bounds-true51.us.29, %reduce-window.3.loop_exit.window.1.28
%reduce_window_accum_ptr48.1.lcssa.29 = phi double [ %add.1441.i.us.29, %in_bounds-true51.us.29 ], [ %reduce_window_accum_ptr48.1.lcssa.28, %reduce-window.3.loop_exit.window.1.28 ]
br i1 %633, label %in_bounds-true51.us.30, label %reduce-window.3.loop_exit.window.1.30
in_bounds-true51.us.30: ; preds = %reduce-window.3.loop_exit.window.1.29
%696 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %632, i64 %reduce-window.3.invar_address.dim.1.0154
%697 = load double, double* %696, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.30 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.29, %697
br label %reduce-window.3.loop_exit.window.1.30
reduce-window.3.loop_exit.window.1.30: ; preds = %in_bounds-true51.us.30, %reduce-window.3.loop_exit.window.1.29
%reduce_window_accum_ptr48.1.lcssa.30 = phi double [ %add.1441.i.us.30, %in_bounds-true51.us.30 ], [ %reduce_window_accum_ptr48.1.lcssa.29, %reduce-window.3.loop_exit.window.1.29 ]
br i1 %635, label %in_bounds-true51.us.31, label %reduce-window.3.loop_exit.window.1.31
in_bounds-true51.us.31: ; preds = %reduce-window.3.loop_exit.window.1.30
%698 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.4, i64 0, i64 %634, i64 %reduce-window.3.invar_address.dim.1.0154
%699 = load double, double* %698, align 8, !alias.scope !26, !noalias !44
%add.1441.i.us.31 = fadd reassoc double %reduce_window_accum_ptr48.1.lcssa.30, %699
br label %reduce-window.3.loop_exit.window.1.31
reduce-window.3.loop_exit.window.1.31: ; preds = %in_bounds-true51.us.31, %reduce-window.3.loop_exit.window.1.30
%reduce_window_accum_ptr48.1.lcssa.31 = phi double [ %add.1441.i.us.31, %in_bounds-true51.us.31 ], [ %reduce_window_accum_ptr48.1.lcssa.30, %reduce-window.3.loop_exit.window.1.30 ]
%700 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.3, i64 0, i64 %reduce-window.3.invar_address.dim.0.0155, i64 %reduce-window.3.invar_address.dim.1.0154
store double %reduce_window_accum_ptr48.1.lcssa.31, double* %700, align 8, !alias.scope !46, !noalias !47
%invar.inc47 = add nuw nsw i64 %reduce-window.3.invar_address.dim.1.0154, 1
%exitcond199 = icmp eq i64 %invar.inc47, 4
br i1 %exitcond199, label %reduce-window.3.loop_exit.dim.1, label %reduce-window.3.loop_header.window.0.preheader
reduce-window.3.loop_exit.dim.1: ; preds = %reduce-window.3.loop_exit.window.1.31
%invar.inc46 = add nuw nsw i64 %reduce-window.3.invar_address.dim.0.0155, 1
%exitcond200 = icmp eq i64 %invar.inc46, 16
br i1 %exitcond200, label %reduce-window.3.vectorized_inner.loop_body.reduction_dim.0, label %reduce-window.3.loop_header.dim.1.preheader
reduce-window.3.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.3.loop_exit.dim.1
%701 = getelementptr inbounds i8, i8* %4, i64 48576
%702 = bitcast i8* %25 to <4 x double>*
%703 = load <4 x double>, <4 x double>* %702, align 16, !alias.scope !46, !noalias !47
%704 = fadd reassoc <4 x double> %703, zeroinitializer
%705 = getelementptr inbounds i8, i8* %4, i64 32032
%706 = bitcast i8* %705 to <4 x double>*
%707 = load <4 x double>, <4 x double>* %706, align 16, !alias.scope !46, !noalias !47
%708 = fadd reassoc <4 x double> %704, %707
%709 = getelementptr inbounds i8, i8* %4, i64 32064
%710 = bitcast i8* %709 to <4 x double>*
%711 = load <4 x double>, <4 x double>* %710, align 16, !alias.scope !46, !noalias !47
%712 = fadd reassoc <4 x double> %708, %711
%713 = getelementptr inbounds i8, i8* %4, i64 32096
%714 = bitcast i8* %713 to <4 x double>*
%715 = load <4 x double>, <4 x double>* %714, align 16, !alias.scope !46, !noalias !47
%716 = fadd reassoc <4 x double> %712, %715
%717 = getelementptr inbounds i8, i8* %4, i64 32128
%718 = bitcast i8* %717 to <4 x double>*
%719 = load <4 x double>, <4 x double>* %718, align 16, !alias.scope !46, !noalias !47
%720 = fadd reassoc <4 x double> %716, %719
%721 = getelementptr inbounds i8, i8* %4, i64 32160
%722 = bitcast i8* %721 to <4 x double>*
%723 = load <4 x double>, <4 x double>* %722, align 16, !alias.scope !46, !noalias !47
%724 = fadd reassoc <4 x double> %720, %723
%725 = getelementptr inbounds i8, i8* %4, i64 32192
%726 = bitcast i8* %725 to <4 x double>*
%727 = load <4 x double>, <4 x double>* %726, align 16, !alias.scope !46, !noalias !47
%728 = fadd reassoc <4 x double> %724, %727
%729 = getelementptr inbounds i8, i8* %4, i64 32224
%730 = bitcast i8* %729 to <4 x double>*
%731 = load <4 x double>, <4 x double>* %730, align 16, !alias.scope !46, !noalias !47
%732 = fadd reassoc <4 x double> %728, %731
%733 = getelementptr inbounds i8, i8* %4, i64 32256
%734 = bitcast i8* %733 to <4 x double>*
%735 = load <4 x double>, <4 x double>* %734, align 16, !alias.scope !46, !noalias !47
%736 = fadd reassoc <4 x double> %732, %735
%737 = getelementptr inbounds i8, i8* %4, i64 32288
%738 = bitcast i8* %737 to <4 x double>*
%739 = load <4 x double>, <4 x double>* %738, align 16, !alias.scope !46, !noalias !47
%740 = fadd reassoc <4 x double> %736, %739
%741 = getelementptr inbounds i8, i8* %4, i64 32320
%742 = bitcast i8* %741 to <4 x double>*
%743 = load <4 x double>, <4 x double>* %742, align 16, !alias.scope !46, !noalias !47
%744 = fadd reassoc <4 x double> %740, %743
%745 = getelementptr inbounds i8, i8* %4, i64 32352
%746 = bitcast i8* %745 to <4 x double>*
%747 = load <4 x double>, <4 x double>* %746, align 16, !alias.scope !46, !noalias !47
%748 = fadd reassoc <4 x double> %744, %747
%749 = getelementptr inbounds i8, i8* %4, i64 32384
%750 = bitcast i8* %749 to <4 x double>*
%751 = load <4 x double>, <4 x double>* %750, align 16, !alias.scope !46, !noalias !47
%752 = fadd reassoc <4 x double> %748, %751
%753 = getelementptr inbounds i8, i8* %4, i64 32416
%754 = bitcast i8* %753 to <4 x double>*
%755 = load <4 x double>, <4 x double>* %754, align 16, !alias.scope !46, !noalias !47
%756 = fadd reassoc <4 x double> %752, %755
%757 = getelementptr inbounds i8, i8* %4, i64 32448
%758 = bitcast i8* %757 to <4 x double>*
%759 = load <4 x double>, <4 x double>* %758, align 16, !alias.scope !46, !noalias !47
%760 = fadd reassoc <4 x double> %756, %759
%761 = getelementptr inbounds i8, i8* %4, i64 32480
%762 = bitcast i8* %761 to <4 x double>*
%763 = load <4 x double>, <4 x double>* %762, align 16, !alias.scope !46, !noalias !47
%764 = fadd reassoc <4 x double> %760, %763
%765 = bitcast i8* %701 to <4 x double>*
store <4 x double> %764, <4 x double>* %765, align 16, !alias.scope !48, !noalias !49
%766 = bitcast i8* %18 to <4 x double>*
%wide.load328 = load <4 x double>, <4 x double>* %766, align 16, !alias.scope !20, !noalias !21
%767 = fmul <4 x double> %wide.load328, %wide.load328
%768 = fdiv <4 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>, %767
%769 = bitcast i8* %18 to <4 x double>*
store <4 x double> %768, <4 x double>* %769, align 16, !alias.scope !20, !noalias !50
%770 = bitcast [12 x double]* %2 to <4 x double>*
%wide.load337 = load <4 x double>, <4 x double>* %770, align 16, !invariant.load !0, !noalias !4
%771 = bitcast i8* %18 to <4 x double>*
%wide.load340 = load <4 x double>, <4 x double>* %771, align 16, !alias.scope !20, !noalias !50
%wide.load337.1 = load <4 x double>, <4 x double>* %770, align 16, !invariant.load !0, !noalias !4
%772 = bitcast i8* %18 to <4 x double>*
%wide.load340.1 = load <4 x double>, <4 x double>* %772, align 16, !alias.scope !20, !noalias !50
%wide.load337.2 = load <4 x double>, <4 x double>* %770, align 16, !invariant.load !0, !noalias !4
%773 = bitcast i8* %18 to <4 x double>*
%wide.load340.2 = load <4 x double>, <4 x double>* %773, align 16, !alias.scope !20, !noalias !50
%wide.load337.3 = load <4 x double>, <4 x double>* %770, align 16, !invariant.load !0, !noalias !4
%774 = bitcast i8* %18 to <4 x double>*
%wide.load340.3 = load <4 x double>, <4 x double>* %774, align 16, !alias.scope !20, !noalias !50
br label %vector.ph332
vector.ph332: ; preds = %vector.ph332, %reduce-window.3.vectorized_inner.loop_body.reduction_dim.0
%fusion.5.invar_address.dim.0.0147 = phi i64 [ 0, %reduce-window.3.vectorized_inner.loop_body.reduction_dim.0 ], [ %invar.inc65.3, %vector.ph332 ]
%775 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %fusion.5.invar_address.dim.0.0147
%776 = load double, double* %775, align 16, !alias.scope !24, !noalias !25
%broadcast.splatinsert338 = insertelement <4 x double> poison, double %776, i64 0
%broadcast.splat339 = shufflevector <4 x double> %broadcast.splatinsert338, <4 x double> poison, <4 x i32> zeroinitializer
%777 = fmul <4 x double> %broadcast.splat339, %wide.load337
%778 = fmul <4 x double> %777, %wide.load340
%779 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %fusion.5.invar_address.dim.0.0147, i64 0
%780 = bitcast double* %779 to <4 x double>*
%wide.load341 = load <4 x double>, <4 x double>* %780, align 16, !alias.scope !18, !noalias !19
%781 = fmul <4 x double> %778, %wide.load341
%782 = bitcast double* %779 to <4 x double>*
store <4 x double> %781, <4 x double>* %782, align 16, !alias.scope !18, !noalias !51
%invar.inc65 = or i64 %fusion.5.invar_address.dim.0.0147, 1
%783 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc65
%784 = load double, double* %783, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert338.1 = insertelement <4 x double> poison, double %784, i64 0
%broadcast.splat339.1 = shufflevector <4 x double> %broadcast.splatinsert338.1, <4 x double> poison, <4 x i32> zeroinitializer
%785 = fmul <4 x double> %broadcast.splat339.1, %wide.load337.1
%786 = fmul <4 x double> %785, %wide.load340.1
%787 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc65, i64 0
%788 = bitcast double* %787 to <4 x double>*
%wide.load341.1 = load <4 x double>, <4 x double>* %788, align 16, !alias.scope !18, !noalias !19
%789 = fmul <4 x double> %786, %wide.load341.1
%790 = bitcast double* %787 to <4 x double>*
store <4 x double> %789, <4 x double>* %790, align 16, !alias.scope !18, !noalias !51
%invar.inc65.1 = or i64 %fusion.5.invar_address.dim.0.0147, 2
%791 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc65.1
%792 = load double, double* %791, align 16, !alias.scope !24, !noalias !25
%broadcast.splatinsert338.2 = insertelement <4 x double> poison, double %792, i64 0
%broadcast.splat339.2 = shufflevector <4 x double> %broadcast.splatinsert338.2, <4 x double> poison, <4 x i32> zeroinitializer
%793 = fmul <4 x double> %broadcast.splat339.2, %wide.load337.2
%794 = fmul <4 x double> %793, %wide.load340.2
%795 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc65.1, i64 0
%796 = bitcast double* %795 to <4 x double>*
%wide.load341.2 = load <4 x double>, <4 x double>* %796, align 16, !alias.scope !18, !noalias !19
%797 = fmul <4 x double> %794, %wide.load341.2
%798 = bitcast double* %795 to <4 x double>*
store <4 x double> %797, <4 x double>* %798, align 16, !alias.scope !18, !noalias !51
%invar.inc65.2 = or i64 %fusion.5.invar_address.dim.0.0147, 3
%799 = getelementptr inbounds [500 x double], [500 x double]* %fusion.8, i64 0, i64 %invar.inc65.2
%800 = load double, double* %799, align 8, !alias.scope !24, !noalias !25
%broadcast.splatinsert338.3 = insertelement <4 x double> poison, double %800, i64 0
%broadcast.splat339.3 = shufflevector <4 x double> %broadcast.splatinsert338.3, <4 x double> poison, <4 x i32> zeroinitializer
%801 = fmul <4 x double> %broadcast.splat339.3, %wide.load337.3
%802 = fmul <4 x double> %801, %wide.load340.3
%803 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %invar.inc65.2, i64 0
%804 = bitcast double* %803 to <4 x double>*
%wide.load341.3 = load <4 x double>, <4 x double>* %804, align 16, !alias.scope !18, !noalias !19
%805 = fmul <4 x double> %802, %wide.load341.3
%806 = bitcast double* %803 to <4 x double>*
store <4 x double> %805, <4 x double>* %806, align 16, !alias.scope !18, !noalias !51
%invar.inc65.3 = add nuw nsw i64 %fusion.5.invar_address.dim.0.0147, 4
%exitcond195.3 = icmp eq i64 %invar.inc65.3, 500
br i1 %exitcond195.3, label %fusion.5.loop_exit.dim.0, label %vector.ph332
fusion.5.loop_exit.dim.0: ; preds = %vector.ph332
%reduce-window.1 = bitcast i8* %65 to [16 x [4 x double]]*
br label %reduce-window.1.loop_header.dim.1.preheader
reduce-window.1.loop_header.dim.1.preheader: ; preds = %fusion.5.loop_exit.dim.0, %reduce-window.1.loop_exit.dim.1
%reduce-window.1.invar_address.dim.0.0145 = phi i64 [ 0, %fusion.5.loop_exit.dim.0 ], [ %invar.inc67, %reduce-window.1.loop_exit.dim.1 ]
%807 = shl nsw i64 %reduce-window.1.invar_address.dim.0.0145, 5
%808 = add nsw i64 %807, -6
%809 = icmp ult i64 %808, 500
%810 = add nsw i64 %807, -5
%811 = icmp ult i64 %810, 500
%812 = add nsw i64 %807, -4
%813 = icmp ult i64 %812, 500
%814 = add nsw i64 %807, -3
%815 = icmp ult i64 %814, 500
%816 = add nsw i64 %807, -2
%817 = icmp ult i64 %816, 500
%818 = add nsw i64 %807, -1
%819 = icmp ult i64 %818, 500
%820 = icmp ult i64 %807, 500
%821 = or i64 %807, 1
%822 = icmp ult i64 %821, 500
%823 = or i64 %807, 2
%824 = icmp ult i64 %823, 500
%825 = or i64 %807, 3
%826 = icmp ult i64 %825, 500
%827 = or i64 %807, 4
%828 = icmp ult i64 %827, 500
%829 = or i64 %807, 5
%830 = icmp ult i64 %829, 500
%831 = or i64 %807, 6
%832 = icmp ult i64 %831, 500
%833 = or i64 %807, 7
%834 = icmp ult i64 %833, 500
%835 = or i64 %807, 8
%836 = icmp ult i64 %835, 500
%837 = or i64 %807, 9
%838 = icmp ult i64 %837, 500
%839 = or i64 %807, 10
%840 = icmp ult i64 %839, 500
%841 = or i64 %807, 11
%842 = icmp ult i64 %841, 500
%843 = or i64 %807, 12
%844 = icmp ult i64 %843, 500
%845 = or i64 %807, 13
%846 = icmp ult i64 %845, 500
%847 = or i64 %807, 14
%848 = icmp ult i64 %847, 500
%849 = or i64 %807, 15
%850 = icmp ult i64 %849, 500
%851 = or i64 %807, 16
%852 = icmp ult i64 %851, 500
%853 = or i64 %807, 17
%854 = icmp ult i64 %853, 500
%855 = or i64 %807, 18
%856 = icmp ult i64 %855, 500
%857 = or i64 %807, 19
%858 = icmp ult i64 %857, 500
%859 = or i64 %807, 20
%860 = icmp ult i64 %859, 500
%861 = or i64 %807, 21
%862 = icmp ult i64 %861, 500
%863 = or i64 %807, 22
%864 = icmp ult i64 %863, 500
%865 = or i64 %807, 23
%866 = icmp ult i64 %865, 500
%867 = or i64 %807, 24
%868 = icmp ult i64 %867, 500
%869 = or i64 %807, 25
%870 = icmp ult i64 %869, 500
br label %reduce-window.1.loop_header.window.0.preheader
reduce-window.1.loop_header.window.0.preheader: ; preds = %reduce-window.1.loop_header.dim.1.preheader, %reduce-window.1.loop_exit.window.1.31
%reduce-window.1.invar_address.dim.1.0144 = phi i64 [ 0, %reduce-window.1.loop_header.dim.1.preheader ], [ %invar.inc68, %reduce-window.1.loop_exit.window.1.31 ]
br i1 %809, label %in_bounds-true72.us, label %reduce-window.1.loop_exit.window.1
in_bounds-true72.us: ; preds = %reduce-window.1.loop_header.window.0.preheader
%871 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %808, i64 %reduce-window.1.invar_address.dim.1.0144
%872 = load double, double* %871, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us = fadd reassoc double %872, 0.000000e+00
br label %reduce-window.1.loop_exit.window.1
reduce-window.1.loop_exit.window.1: ; preds = %reduce-window.1.loop_header.window.0.preheader, %in_bounds-true72.us
%reduce_window_accum_ptr69.1.lcssa = phi double [ %add.1281.i.us, %in_bounds-true72.us ], [ 0.000000e+00, %reduce-window.1.loop_header.window.0.preheader ]
br i1 %811, label %in_bounds-true72.us.1, label %reduce-window.1.loop_exit.window.1.1
in_bounds-true72.us.1: ; preds = %reduce-window.1.loop_exit.window.1
%873 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %810, i64 %reduce-window.1.invar_address.dim.1.0144
%874 = load double, double* %873, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.1 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa, %874
br label %reduce-window.1.loop_exit.window.1.1
reduce-window.1.loop_exit.window.1.1: ; preds = %in_bounds-true72.us.1, %reduce-window.1.loop_exit.window.1
%reduce_window_accum_ptr69.1.lcssa.1 = phi double [ %add.1281.i.us.1, %in_bounds-true72.us.1 ], [ %reduce_window_accum_ptr69.1.lcssa, %reduce-window.1.loop_exit.window.1 ]
br i1 %813, label %in_bounds-true72.us.2, label %reduce-window.1.loop_exit.window.1.2
in_bounds-true72.us.2: ; preds = %reduce-window.1.loop_exit.window.1.1
%875 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %812, i64 %reduce-window.1.invar_address.dim.1.0144
%876 = load double, double* %875, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.2 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.1, %876
br label %reduce-window.1.loop_exit.window.1.2
reduce-window.1.loop_exit.window.1.2: ; preds = %in_bounds-true72.us.2, %reduce-window.1.loop_exit.window.1.1
%reduce_window_accum_ptr69.1.lcssa.2 = phi double [ %add.1281.i.us.2, %in_bounds-true72.us.2 ], [ %reduce_window_accum_ptr69.1.lcssa.1, %reduce-window.1.loop_exit.window.1.1 ]
br i1 %815, label %in_bounds-true72.us.3, label %reduce-window.1.loop_exit.window.1.3
in_bounds-true72.us.3: ; preds = %reduce-window.1.loop_exit.window.1.2
%877 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %814, i64 %reduce-window.1.invar_address.dim.1.0144
%878 = load double, double* %877, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.3 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.2, %878
br label %reduce-window.1.loop_exit.window.1.3
reduce-window.1.loop_exit.window.1.3: ; preds = %in_bounds-true72.us.3, %reduce-window.1.loop_exit.window.1.2
%reduce_window_accum_ptr69.1.lcssa.3 = phi double [ %add.1281.i.us.3, %in_bounds-true72.us.3 ], [ %reduce_window_accum_ptr69.1.lcssa.2, %reduce-window.1.loop_exit.window.1.2 ]
br i1 %817, label %in_bounds-true72.us.4, label %reduce-window.1.loop_exit.window.1.4
in_bounds-true72.us.4: ; preds = %reduce-window.1.loop_exit.window.1.3
%879 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %816, i64 %reduce-window.1.invar_address.dim.1.0144
%880 = load double, double* %879, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.4 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.3, %880
br label %reduce-window.1.loop_exit.window.1.4
reduce-window.1.loop_exit.window.1.4: ; preds = %in_bounds-true72.us.4, %reduce-window.1.loop_exit.window.1.3
%reduce_window_accum_ptr69.1.lcssa.4 = phi double [ %add.1281.i.us.4, %in_bounds-true72.us.4 ], [ %reduce_window_accum_ptr69.1.lcssa.3, %reduce-window.1.loop_exit.window.1.3 ]
br i1 %819, label %in_bounds-true72.us.5, label %reduce-window.1.loop_exit.window.1.5
in_bounds-true72.us.5: ; preds = %reduce-window.1.loop_exit.window.1.4
%881 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %818, i64 %reduce-window.1.invar_address.dim.1.0144
%882 = load double, double* %881, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.5 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.4, %882
br label %reduce-window.1.loop_exit.window.1.5
reduce-window.1.loop_exit.window.1.5: ; preds = %in_bounds-true72.us.5, %reduce-window.1.loop_exit.window.1.4
%reduce_window_accum_ptr69.1.lcssa.5 = phi double [ %add.1281.i.us.5, %in_bounds-true72.us.5 ], [ %reduce_window_accum_ptr69.1.lcssa.4, %reduce-window.1.loop_exit.window.1.4 ]
br i1 %820, label %in_bounds-true72.us.6, label %reduce-window.1.loop_exit.window.1.6
in_bounds-true72.us.6: ; preds = %reduce-window.1.loop_exit.window.1.5
%883 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %807, i64 %reduce-window.1.invar_address.dim.1.0144
%884 = load double, double* %883, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.6 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.5, %884
br label %reduce-window.1.loop_exit.window.1.6
reduce-window.1.loop_exit.window.1.6: ; preds = %in_bounds-true72.us.6, %reduce-window.1.loop_exit.window.1.5
%reduce_window_accum_ptr69.1.lcssa.6 = phi double [ %add.1281.i.us.6, %in_bounds-true72.us.6 ], [ %reduce_window_accum_ptr69.1.lcssa.5, %reduce-window.1.loop_exit.window.1.5 ]
br i1 %822, label %in_bounds-true72.us.7, label %reduce-window.1.loop_exit.window.1.7
in_bounds-true72.us.7: ; preds = %reduce-window.1.loop_exit.window.1.6
%885 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %821, i64 %reduce-window.1.invar_address.dim.1.0144
%886 = load double, double* %885, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.7 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.6, %886
br label %reduce-window.1.loop_exit.window.1.7
reduce-window.1.loop_exit.window.1.7: ; preds = %in_bounds-true72.us.7, %reduce-window.1.loop_exit.window.1.6
%reduce_window_accum_ptr69.1.lcssa.7 = phi double [ %add.1281.i.us.7, %in_bounds-true72.us.7 ], [ %reduce_window_accum_ptr69.1.lcssa.6, %reduce-window.1.loop_exit.window.1.6 ]
br i1 %824, label %in_bounds-true72.us.8, label %reduce-window.1.loop_exit.window.1.8
in_bounds-true72.us.8: ; preds = %reduce-window.1.loop_exit.window.1.7
%887 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %823, i64 %reduce-window.1.invar_address.dim.1.0144
%888 = load double, double* %887, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.8 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.7, %888
br label %reduce-window.1.loop_exit.window.1.8
reduce-window.1.loop_exit.window.1.8: ; preds = %in_bounds-true72.us.8, %reduce-window.1.loop_exit.window.1.7
%reduce_window_accum_ptr69.1.lcssa.8 = phi double [ %add.1281.i.us.8, %in_bounds-true72.us.8 ], [ %reduce_window_accum_ptr69.1.lcssa.7, %reduce-window.1.loop_exit.window.1.7 ]
br i1 %826, label %in_bounds-true72.us.9, label %reduce-window.1.loop_exit.window.1.9
in_bounds-true72.us.9: ; preds = %reduce-window.1.loop_exit.window.1.8
%889 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %825, i64 %reduce-window.1.invar_address.dim.1.0144
%890 = load double, double* %889, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.9 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.8, %890
br label %reduce-window.1.loop_exit.window.1.9
reduce-window.1.loop_exit.window.1.9: ; preds = %in_bounds-true72.us.9, %reduce-window.1.loop_exit.window.1.8
%reduce_window_accum_ptr69.1.lcssa.9 = phi double [ %add.1281.i.us.9, %in_bounds-true72.us.9 ], [ %reduce_window_accum_ptr69.1.lcssa.8, %reduce-window.1.loop_exit.window.1.8 ]
br i1 %828, label %in_bounds-true72.us.10, label %reduce-window.1.loop_exit.window.1.10
in_bounds-true72.us.10: ; preds = %reduce-window.1.loop_exit.window.1.9
%891 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %827, i64 %reduce-window.1.invar_address.dim.1.0144
%892 = load double, double* %891, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.10 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.9, %892
br label %reduce-window.1.loop_exit.window.1.10
reduce-window.1.loop_exit.window.1.10: ; preds = %in_bounds-true72.us.10, %reduce-window.1.loop_exit.window.1.9
%reduce_window_accum_ptr69.1.lcssa.10 = phi double [ %add.1281.i.us.10, %in_bounds-true72.us.10 ], [ %reduce_window_accum_ptr69.1.lcssa.9, %reduce-window.1.loop_exit.window.1.9 ]
br i1 %830, label %in_bounds-true72.us.11, label %reduce-window.1.loop_exit.window.1.11
in_bounds-true72.us.11: ; preds = %reduce-window.1.loop_exit.window.1.10
%893 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %829, i64 %reduce-window.1.invar_address.dim.1.0144
%894 = load double, double* %893, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.11 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.10, %894
br label %reduce-window.1.loop_exit.window.1.11
reduce-window.1.loop_exit.window.1.11: ; preds = %in_bounds-true72.us.11, %reduce-window.1.loop_exit.window.1.10
%reduce_window_accum_ptr69.1.lcssa.11 = phi double [ %add.1281.i.us.11, %in_bounds-true72.us.11 ], [ %reduce_window_accum_ptr69.1.lcssa.10, %reduce-window.1.loop_exit.window.1.10 ]
br i1 %832, label %in_bounds-true72.us.12, label %reduce-window.1.loop_exit.window.1.12
in_bounds-true72.us.12: ; preds = %reduce-window.1.loop_exit.window.1.11
%895 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %831, i64 %reduce-window.1.invar_address.dim.1.0144
%896 = load double, double* %895, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.12 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.11, %896
br label %reduce-window.1.loop_exit.window.1.12
reduce-window.1.loop_exit.window.1.12: ; preds = %in_bounds-true72.us.12, %reduce-window.1.loop_exit.window.1.11
%reduce_window_accum_ptr69.1.lcssa.12 = phi double [ %add.1281.i.us.12, %in_bounds-true72.us.12 ], [ %reduce_window_accum_ptr69.1.lcssa.11, %reduce-window.1.loop_exit.window.1.11 ]
br i1 %834, label %in_bounds-true72.us.13, label %reduce-window.1.loop_exit.window.1.13
in_bounds-true72.us.13: ; preds = %reduce-window.1.loop_exit.window.1.12
%897 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %833, i64 %reduce-window.1.invar_address.dim.1.0144
%898 = load double, double* %897, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.13 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.12, %898
br label %reduce-window.1.loop_exit.window.1.13
reduce-window.1.loop_exit.window.1.13: ; preds = %in_bounds-true72.us.13, %reduce-window.1.loop_exit.window.1.12
%reduce_window_accum_ptr69.1.lcssa.13 = phi double [ %add.1281.i.us.13, %in_bounds-true72.us.13 ], [ %reduce_window_accum_ptr69.1.lcssa.12, %reduce-window.1.loop_exit.window.1.12 ]
br i1 %836, label %in_bounds-true72.us.14, label %reduce-window.1.loop_exit.window.1.14
in_bounds-true72.us.14: ; preds = %reduce-window.1.loop_exit.window.1.13
%899 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %835, i64 %reduce-window.1.invar_address.dim.1.0144
%900 = load double, double* %899, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.14 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.13, %900
br label %reduce-window.1.loop_exit.window.1.14
reduce-window.1.loop_exit.window.1.14: ; preds = %in_bounds-true72.us.14, %reduce-window.1.loop_exit.window.1.13
%reduce_window_accum_ptr69.1.lcssa.14 = phi double [ %add.1281.i.us.14, %in_bounds-true72.us.14 ], [ %reduce_window_accum_ptr69.1.lcssa.13, %reduce-window.1.loop_exit.window.1.13 ]
br i1 %838, label %in_bounds-true72.us.15, label %reduce-window.1.loop_exit.window.1.15
in_bounds-true72.us.15: ; preds = %reduce-window.1.loop_exit.window.1.14
%901 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %837, i64 %reduce-window.1.invar_address.dim.1.0144
%902 = load double, double* %901, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.15 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.14, %902
br label %reduce-window.1.loop_exit.window.1.15
reduce-window.1.loop_exit.window.1.15: ; preds = %in_bounds-true72.us.15, %reduce-window.1.loop_exit.window.1.14
%reduce_window_accum_ptr69.1.lcssa.15 = phi double [ %add.1281.i.us.15, %in_bounds-true72.us.15 ], [ %reduce_window_accum_ptr69.1.lcssa.14, %reduce-window.1.loop_exit.window.1.14 ]
br i1 %840, label %in_bounds-true72.us.16, label %reduce-window.1.loop_exit.window.1.16
in_bounds-true72.us.16: ; preds = %reduce-window.1.loop_exit.window.1.15
%903 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %839, i64 %reduce-window.1.invar_address.dim.1.0144
%904 = load double, double* %903, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.16 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.15, %904
br label %reduce-window.1.loop_exit.window.1.16
reduce-window.1.loop_exit.window.1.16: ; preds = %in_bounds-true72.us.16, %reduce-window.1.loop_exit.window.1.15
%reduce_window_accum_ptr69.1.lcssa.16 = phi double [ %add.1281.i.us.16, %in_bounds-true72.us.16 ], [ %reduce_window_accum_ptr69.1.lcssa.15, %reduce-window.1.loop_exit.window.1.15 ]
br i1 %842, label %in_bounds-true72.us.17, label %reduce-window.1.loop_exit.window.1.17
in_bounds-true72.us.17: ; preds = %reduce-window.1.loop_exit.window.1.16
%905 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %841, i64 %reduce-window.1.invar_address.dim.1.0144
%906 = load double, double* %905, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.17 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.16, %906
br label %reduce-window.1.loop_exit.window.1.17
reduce-window.1.loop_exit.window.1.17: ; preds = %in_bounds-true72.us.17, %reduce-window.1.loop_exit.window.1.16
%reduce_window_accum_ptr69.1.lcssa.17 = phi double [ %add.1281.i.us.17, %in_bounds-true72.us.17 ], [ %reduce_window_accum_ptr69.1.lcssa.16, %reduce-window.1.loop_exit.window.1.16 ]
br i1 %844, label %in_bounds-true72.us.18, label %reduce-window.1.loop_exit.window.1.18
in_bounds-true72.us.18: ; preds = %reduce-window.1.loop_exit.window.1.17
%907 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %843, i64 %reduce-window.1.invar_address.dim.1.0144
%908 = load double, double* %907, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.18 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.17, %908
br label %reduce-window.1.loop_exit.window.1.18
reduce-window.1.loop_exit.window.1.18: ; preds = %in_bounds-true72.us.18, %reduce-window.1.loop_exit.window.1.17
%reduce_window_accum_ptr69.1.lcssa.18 = phi double [ %add.1281.i.us.18, %in_bounds-true72.us.18 ], [ %reduce_window_accum_ptr69.1.lcssa.17, %reduce-window.1.loop_exit.window.1.17 ]
br i1 %846, label %in_bounds-true72.us.19, label %reduce-window.1.loop_exit.window.1.19
in_bounds-true72.us.19: ; preds = %reduce-window.1.loop_exit.window.1.18
%909 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %845, i64 %reduce-window.1.invar_address.dim.1.0144
%910 = load double, double* %909, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.19 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.18, %910
br label %reduce-window.1.loop_exit.window.1.19
reduce-window.1.loop_exit.window.1.19: ; preds = %in_bounds-true72.us.19, %reduce-window.1.loop_exit.window.1.18
%reduce_window_accum_ptr69.1.lcssa.19 = phi double [ %add.1281.i.us.19, %in_bounds-true72.us.19 ], [ %reduce_window_accum_ptr69.1.lcssa.18, %reduce-window.1.loop_exit.window.1.18 ]
br i1 %848, label %in_bounds-true72.us.20, label %reduce-window.1.loop_exit.window.1.20
in_bounds-true72.us.20: ; preds = %reduce-window.1.loop_exit.window.1.19
%911 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %847, i64 %reduce-window.1.invar_address.dim.1.0144
%912 = load double, double* %911, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.20 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.19, %912
br label %reduce-window.1.loop_exit.window.1.20
reduce-window.1.loop_exit.window.1.20: ; preds = %in_bounds-true72.us.20, %reduce-window.1.loop_exit.window.1.19
%reduce_window_accum_ptr69.1.lcssa.20 = phi double [ %add.1281.i.us.20, %in_bounds-true72.us.20 ], [ %reduce_window_accum_ptr69.1.lcssa.19, %reduce-window.1.loop_exit.window.1.19 ]
br i1 %850, label %in_bounds-true72.us.21, label %reduce-window.1.loop_exit.window.1.21
in_bounds-true72.us.21: ; preds = %reduce-window.1.loop_exit.window.1.20
%913 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %849, i64 %reduce-window.1.invar_address.dim.1.0144
%914 = load double, double* %913, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.21 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.20, %914
br label %reduce-window.1.loop_exit.window.1.21
reduce-window.1.loop_exit.window.1.21: ; preds = %in_bounds-true72.us.21, %reduce-window.1.loop_exit.window.1.20
%reduce_window_accum_ptr69.1.lcssa.21 = phi double [ %add.1281.i.us.21, %in_bounds-true72.us.21 ], [ %reduce_window_accum_ptr69.1.lcssa.20, %reduce-window.1.loop_exit.window.1.20 ]
br i1 %852, label %in_bounds-true72.us.22, label %reduce-window.1.loop_exit.window.1.22
in_bounds-true72.us.22: ; preds = %reduce-window.1.loop_exit.window.1.21
%915 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %851, i64 %reduce-window.1.invar_address.dim.1.0144
%916 = load double, double* %915, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.22 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.21, %916
br label %reduce-window.1.loop_exit.window.1.22
reduce-window.1.loop_exit.window.1.22: ; preds = %in_bounds-true72.us.22, %reduce-window.1.loop_exit.window.1.21
%reduce_window_accum_ptr69.1.lcssa.22 = phi double [ %add.1281.i.us.22, %in_bounds-true72.us.22 ], [ %reduce_window_accum_ptr69.1.lcssa.21, %reduce-window.1.loop_exit.window.1.21 ]
br i1 %854, label %in_bounds-true72.us.23, label %reduce-window.1.loop_exit.window.1.23
in_bounds-true72.us.23: ; preds = %reduce-window.1.loop_exit.window.1.22
%917 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %853, i64 %reduce-window.1.invar_address.dim.1.0144
%918 = load double, double* %917, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.23 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.22, %918
br label %reduce-window.1.loop_exit.window.1.23
reduce-window.1.loop_exit.window.1.23: ; preds = %in_bounds-true72.us.23, %reduce-window.1.loop_exit.window.1.22
%reduce_window_accum_ptr69.1.lcssa.23 = phi double [ %add.1281.i.us.23, %in_bounds-true72.us.23 ], [ %reduce_window_accum_ptr69.1.lcssa.22, %reduce-window.1.loop_exit.window.1.22 ]
br i1 %856, label %in_bounds-true72.us.24, label %reduce-window.1.loop_exit.window.1.24
in_bounds-true72.us.24: ; preds = %reduce-window.1.loop_exit.window.1.23
%919 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %855, i64 %reduce-window.1.invar_address.dim.1.0144
%920 = load double, double* %919, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.24 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.23, %920
br label %reduce-window.1.loop_exit.window.1.24
reduce-window.1.loop_exit.window.1.24: ; preds = %in_bounds-true72.us.24, %reduce-window.1.loop_exit.window.1.23
%reduce_window_accum_ptr69.1.lcssa.24 = phi double [ %add.1281.i.us.24, %in_bounds-true72.us.24 ], [ %reduce_window_accum_ptr69.1.lcssa.23, %reduce-window.1.loop_exit.window.1.23 ]
br i1 %858, label %in_bounds-true72.us.25, label %reduce-window.1.loop_exit.window.1.25
in_bounds-true72.us.25: ; preds = %reduce-window.1.loop_exit.window.1.24
%921 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %857, i64 %reduce-window.1.invar_address.dim.1.0144
%922 = load double, double* %921, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.25 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.24, %922
br label %reduce-window.1.loop_exit.window.1.25
reduce-window.1.loop_exit.window.1.25: ; preds = %in_bounds-true72.us.25, %reduce-window.1.loop_exit.window.1.24
%reduce_window_accum_ptr69.1.lcssa.25 = phi double [ %add.1281.i.us.25, %in_bounds-true72.us.25 ], [ %reduce_window_accum_ptr69.1.lcssa.24, %reduce-window.1.loop_exit.window.1.24 ]
br i1 %860, label %in_bounds-true72.us.26, label %reduce-window.1.loop_exit.window.1.26
in_bounds-true72.us.26: ; preds = %reduce-window.1.loop_exit.window.1.25
%923 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %859, i64 %reduce-window.1.invar_address.dim.1.0144
%924 = load double, double* %923, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.26 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.25, %924
br label %reduce-window.1.loop_exit.window.1.26
reduce-window.1.loop_exit.window.1.26: ; preds = %in_bounds-true72.us.26, %reduce-window.1.loop_exit.window.1.25
%reduce_window_accum_ptr69.1.lcssa.26 = phi double [ %add.1281.i.us.26, %in_bounds-true72.us.26 ], [ %reduce_window_accum_ptr69.1.lcssa.25, %reduce-window.1.loop_exit.window.1.25 ]
br i1 %862, label %in_bounds-true72.us.27, label %reduce-window.1.loop_exit.window.1.27
in_bounds-true72.us.27: ; preds = %reduce-window.1.loop_exit.window.1.26
%925 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %861, i64 %reduce-window.1.invar_address.dim.1.0144
%926 = load double, double* %925, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.27 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.26, %926
br label %reduce-window.1.loop_exit.window.1.27
reduce-window.1.loop_exit.window.1.27: ; preds = %in_bounds-true72.us.27, %reduce-window.1.loop_exit.window.1.26
%reduce_window_accum_ptr69.1.lcssa.27 = phi double [ %add.1281.i.us.27, %in_bounds-true72.us.27 ], [ %reduce_window_accum_ptr69.1.lcssa.26, %reduce-window.1.loop_exit.window.1.26 ]
br i1 %864, label %in_bounds-true72.us.28, label %reduce-window.1.loop_exit.window.1.28
in_bounds-true72.us.28: ; preds = %reduce-window.1.loop_exit.window.1.27
%927 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %863, i64 %reduce-window.1.invar_address.dim.1.0144
%928 = load double, double* %927, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.28 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.27, %928
br label %reduce-window.1.loop_exit.window.1.28
reduce-window.1.loop_exit.window.1.28: ; preds = %in_bounds-true72.us.28, %reduce-window.1.loop_exit.window.1.27
%reduce_window_accum_ptr69.1.lcssa.28 = phi double [ %add.1281.i.us.28, %in_bounds-true72.us.28 ], [ %reduce_window_accum_ptr69.1.lcssa.27, %reduce-window.1.loop_exit.window.1.27 ]
br i1 %866, label %in_bounds-true72.us.29, label %reduce-window.1.loop_exit.window.1.29
in_bounds-true72.us.29: ; preds = %reduce-window.1.loop_exit.window.1.28
%929 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %865, i64 %reduce-window.1.invar_address.dim.1.0144
%930 = load double, double* %929, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.29 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.28, %930
br label %reduce-window.1.loop_exit.window.1.29
reduce-window.1.loop_exit.window.1.29: ; preds = %in_bounds-true72.us.29, %reduce-window.1.loop_exit.window.1.28
%reduce_window_accum_ptr69.1.lcssa.29 = phi double [ %add.1281.i.us.29, %in_bounds-true72.us.29 ], [ %reduce_window_accum_ptr69.1.lcssa.28, %reduce-window.1.loop_exit.window.1.28 ]
br i1 %868, label %in_bounds-true72.us.30, label %reduce-window.1.loop_exit.window.1.30
in_bounds-true72.us.30: ; preds = %reduce-window.1.loop_exit.window.1.29
%931 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %867, i64 %reduce-window.1.invar_address.dim.1.0144
%932 = load double, double* %931, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.30 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.29, %932
br label %reduce-window.1.loop_exit.window.1.30
reduce-window.1.loop_exit.window.1.30: ; preds = %in_bounds-true72.us.30, %reduce-window.1.loop_exit.window.1.29
%reduce_window_accum_ptr69.1.lcssa.30 = phi double [ %add.1281.i.us.30, %in_bounds-true72.us.30 ], [ %reduce_window_accum_ptr69.1.lcssa.29, %reduce-window.1.loop_exit.window.1.29 ]
br i1 %870, label %in_bounds-true72.us.31, label %reduce-window.1.loop_exit.window.1.31
in_bounds-true72.us.31: ; preds = %reduce-window.1.loop_exit.window.1.30
%933 = getelementptr inbounds [500 x [4 x double]], [500 x [4 x double]]* %fusion.11, i64 0, i64 %869, i64 %reduce-window.1.invar_address.dim.1.0144
%934 = load double, double* %933, align 8, !alias.scope !18, !noalias !51
%add.1281.i.us.31 = fadd reassoc double %reduce_window_accum_ptr69.1.lcssa.30, %934
br label %reduce-window.1.loop_exit.window.1.31
reduce-window.1.loop_exit.window.1.31: ; preds = %in_bounds-true72.us.31, %reduce-window.1.loop_exit.window.1.30
%reduce_window_accum_ptr69.1.lcssa.31 = phi double [ %add.1281.i.us.31, %in_bounds-true72.us.31 ], [ %reduce_window_accum_ptr69.1.lcssa.30, %reduce-window.1.loop_exit.window.1.30 ]
%935 = getelementptr inbounds [16 x [4 x double]], [16 x [4 x double]]* %reduce-window.1, i64 0, i64 %reduce-window.1.invar_address.dim.0.0145, i64 %reduce-window.1.invar_address.dim.1.0144
store double %reduce_window_accum_ptr69.1.lcssa.31, double* %935, align 8, !alias.scope !53, !noalias !54
%invar.inc68 = add nuw nsw i64 %reduce-window.1.invar_address.dim.1.0144, 1
%exitcond192 = icmp eq i64 %invar.inc68, 4
br i1 %exitcond192, label %reduce-window.1.loop_exit.dim.1, label %reduce-window.1.loop_header.window.0.preheader
reduce-window.1.loop_exit.dim.1: ; preds = %reduce-window.1.loop_exit.window.1.31
%invar.inc67 = add nuw nsw i64 %reduce-window.1.invar_address.dim.0.0145, 1
%exitcond193 = icmp eq i64 %invar.inc67, 16
br i1 %exitcond193, label %reduce-window.1.vectorized_inner.loop_body.reduction_dim.0, label %reduce-window.1.loop_header.dim.1.preheader
reduce-window.1.vectorized_inner.loop_body.reduction_dim.0: ; preds = %reduce-window.1.loop_exit.dim.1
%936 = bitcast i8* %65 to <4 x double>*
%937 = load <4 x double>, <4 x double>* %936, align 16, !alias.scope !53, !noalias !54
%938 = fadd reassoc <4 x double> %937, zeroinitializer
%939 = getelementptr inbounds i8, i8* %4, i64 16032
%940 = bitcast i8* %939 to <4 x double>*
%941 = load <4 x double>, <4 x double>* %940, align 16, !alias.scope !53, !noalias !54
%942 = fadd reassoc <4 x double> %938, %941
%943 = getelementptr inbounds i8, i8* %4, i64 16064
%944 = bitcast i8* %943 to <4 x double>*
%945 = load <4 x double>, <4 x double>* %944, align 16, !alias.scope !53, !noalias !54
%946 = fadd reassoc <4 x double> %942, %945
%947 = getelementptr inbounds i8, i8* %4, i64 16096
%948 = bitcast i8* %947 to <4 x double>*
%949 = load <4 x double>, <4 x double>* %948, align 16, !alias.scope !53, !noalias !54
%950 = fadd reassoc <4 x double> %946, %949
%951 = getelementptr inbounds i8, i8* %4, i64 16128
%952 = bitcast i8* %951 to <4 x double>*
%953 = load <4 x double>, <4 x double>* %952, align 16, !alias.scope !53, !noalias !54
%954 = fadd reassoc <4 x double> %950, %953
%955 = getelementptr inbounds i8, i8* %4, i64 16160
%956 = bitcast i8* %955 to <4 x double>*
%957 = load <4 x double>, <4 x double>* %956, align 16, !alias.scope !53, !noalias !54
%958 = fadd reassoc <4 x double> %954, %957
%959 = getelementptr inbounds i8, i8* %4, i64 16192
%960 = bitcast i8* %959 to <4 x double>*
%961 = load <4 x double>, <4 x double>* %960, align 16, !alias.scope !53, !noalias !54
%962 = fadd reassoc <4 x double> %958, %961
%963 = getelementptr inbounds i8, i8* %4, i64 16224
%964 = bitcast i8* %963 to <4 x double>*
%965 = load <4 x double>, <4 x double>* %964, align 16, !alias.scope !53, !noalias !54
%966 = fadd reassoc <4 x double> %962, %965
%967 = getelementptr inbounds i8, i8* %4, i64 16256
%968 = bitcast i8* %967 to <4 x double>*
%969 = load <4 x double>, <4 x double>* %968, align 16, !alias.scope !53, !noalias !54
%970 = fadd reassoc <4 x double> %966, %969
%971 = getelementptr inbounds i8, i8* %4, i64 16288
%972 = bitcast i8* %971 to <4 x double>*
%973 = load <4 x double>, <4 x double>* %972, align 16, !alias.scope !53, !noalias !54
%974 = fadd reassoc <4 x double> %970, %973
%975 = getelementptr inbounds i8, i8* %4, i64 16320
%976 = bitcast i8* %975 to <4 x double>*
%977 = load <4 x double>, <4 x double>* %976, align 16, !alias.scope !53, !noalias !54
%978 = fadd reassoc <4 x double> %974, %977
%979 = getelementptr inbounds i8, i8* %4, i64 16352
%980 = bitcast i8* %979 to <4 x double>*
%981 = load <4 x double>, <4 x double>* %980, align 16, !alias.scope !53, !noalias !54
%982 = fadd reassoc <4 x double> %978, %981
%983 = getelementptr inbounds i8, i8* %4, i64 16384
%984 = bitcast i8* %983 to <4 x double>*
%985 = load <4 x double>, <4 x double>* %984, align 16, !alias.scope !53, !noalias !54
%986 = fadd reassoc <4 x double> %982, %985
%987 = getelementptr inbounds i8, i8* %4, i64 16416
%988 = bitcast i8* %987 to <4 x double>*
%989 = load <4 x double>, <4 x double>* %988, align 16, !alias.scope !53, !noalias !54
%990 = fadd reassoc <4 x double> %986, %989
%991 = getelementptr inbounds i8, i8* %4, i64 16448
%992 = bitcast i8* %991 to <4 x double>*
%993 = load <4 x double>, <4 x double>* %992, align 16, !alias.scope !53, !noalias !54
%994 = fadd reassoc <4 x double> %990, %993
%995 = getelementptr inbounds i8, i8* %4, i64 16480
%996 = bitcast i8* %995 to <4 x double>*
%997 = load <4 x double>, <4 x double>* %996, align 16, !alias.scope !53, !noalias !54
%998 = fadd reassoc <4 x double> %994, %997
%999 = bitcast i8* %4 to <4 x double>*
store <4 x double> %998, <4 x double>* %999, align 16, !alias.scope !55, !noalias !56
%1000 = bitcast i8* %473 to <4 x double>*
%unmaskedload = load <4 x double>, <4 x double>* %1000, align 16, !alias.scope !42, !noalias !43
%1001 = fadd <4 x double> %unmaskedload, zeroinitializer
%1002 = bitcast i8* %18 to <4 x double>*
store <4 x double> %1001, <4 x double>* %1002, align 16, !alias.scope !57, !noalias !58
%1003 = bitcast i8* %701 to <4 x double>*
%unmaskedload363 = load <4 x double>, <4 x double>* %1003, align 16, !alias.scope !48, !noalias !49
%1004 = fsub <4 x double> zeroinitializer, %unmaskedload363
%1005 = getelementptr inbounds i8, i8* %18, i64 32
%1006 = bitcast i8* %1005 to <4 x double>*
store <4 x double> %1004, <4 x double>* %1006, align 16, !alias.scope !57, !noalias !58
%1007 = bitcast i8* %4 to <4 x double>*
%unmaskedload364 = load <4 x double>, <4 x double>* %1007, align 16, !alias.scope !55, !noalias !56
%1008 = fneg <4 x double> %unmaskedload364
%1009 = getelementptr [12 x double], [12 x double]* %2, i64 0, i64 8
%1010 = bitcast double* %1009 to <4 x double>*
%wide.load350.2 = load <4 x double>, <4 x double>* %1010, align 16, !invariant.load !0, !noalias !4
%1011 = fmul <4 x double> %wide.load350.2, %wide.load350.2
%1012 = fmul <4 x double> %1011, <double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18>
%1013 = call <4 x double> @llvm.sqrt.v4f64(<4 x double> %1012)
%1014 = fdiv <4 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>, %1013
%1015 = fmul <4 x double> %1014, <double 5.000000e-01, double 5.000000e-01, double 5.000000e-01, double 5.000000e-01>
%1016 = fmul <4 x double> %1015, %1008
%1017 = fmul <4 x double> %1016, <double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18, double 0x401921FB54442D18>
%1018 = bitcast i8* %249 to <4 x double>*
%unmaskedload365 = load <4 x double>, <4 x double>* %1018, align 16, !alias.scope !36, !noalias !37
%1019 = fmul <4 x double> %unmaskedload365, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%1020 = fsub <4 x double> %1017, %1019
%1021 = fmul <4 x double> %wide.load350.2, <double 2.000000e+00, double 2.000000e+00, double 2.000000e+00, double 2.000000e+00>
%1022 = fmul <4 x double> %1021, %1020
%1023 = fadd <4 x double> %1022, zeroinitializer
%1024 = getelementptr inbounds i8, i8* %18, i64 64
%1025 = bitcast i8* %1024 to <4 x double>*
store <4 x double> %1023, <4 x double>* %1025, align 16, !alias.scope !57, !noalias !58
ret void
}
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare <4 x double> @llvm.exp.v4f64(<4 x double>) #1
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare <4 x double> @llvm.sqrt.v4f64(<4 x double>) #1
; Function Attrs: nocallback nofree nosync nounwind readnone willreturn
declare double @llvm.vector.reduce.fadd.v4f64(double, <4 x double>) #2
attributes #0 = { nofree nosync nounwind uwtable "denormal-fp-math"="preserve-sign" "no-frame-pointer-elim"="false" }
attributes #1 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
attributes #2 = { nocallback nofree nosync nounwind readnone willreturn }
!0 = !{}
!1 = !{i64 96}
!2 = !{i64 16}
!3 = !{i64 68512}
!4 = !{!5, !7, !8, !9, !10, !11, !12, !13, !14, !15, !16, !17}
!5 = !{!"buffer: {index:0, offset:0, size:32}", !6}
!6 = !{!"XLA global AA domain"}
!7 = !{!"buffer: {index:0, offset:0, size:96}", !6}
!8 = !{!"buffer: {index:18, offset:0, size:32}", !6}
!9 = !{!"buffer: {index:18, offset:0, size:16000}", !6}
!10 = !{!"buffer: {index:18, offset:16000, size:16000}", !6}
!11 = !{!"buffer: {index:18, offset:32000, size:16000}", !6}
!12 = !{!"buffer: {index:18, offset:48000, size:16000}", !6}
!13 = !{!"buffer: {index:18, offset:48512, size:32}", !6}
!14 = !{!"buffer: {index:18, offset:48544, size:32}", !6}
!15 = !{!"buffer: {index:18, offset:48576, size:32}", !6}
!16 = !{!"buffer: {index:18, offset:64000, size:4000}", !6}
!17 = !{!"buffer: {index:18, offset:68000, size:32}", !6}
!18 = !{!9}
!19 = !{!5, !10, !11, !12, !16, !17}
!20 = !{!5}
!21 = !{!9, !10, !11, !16}
!22 = !{!11}
!23 = !{!5, !9, !16}
!24 = !{!16}
!25 = !{!5, !9, !10, !11}
!26 = !{!10}
!27 = !{!5, !9, !12, !16, !17}
!28 = !{!17}
!29 = !{!9, !10, !12}
!30 = !{!12}
!31 = !{!32, !9, !10, !17, !33}
!32 = !{!"buffer: {index:2, offset:0, size:8}", !6}
!33 = !{!"buffer: {index:18, offset:68000, size:512}", !6}
!34 = !{!33}
!35 = !{!32, !12, !13}
!36 = !{!13}
!37 = !{!7, !32, !8, !14, !15, !33}
!38 = !{!32, !39, !16}
!39 = !{!"buffer: {index:18, offset:48000, size:512}", !6}
!40 = !{!39}
!41 = !{!32, !11, !14}
!42 = !{!14}
!43 = !{!7, !32, !8, !39, !13, !15}
!44 = !{!32, !9, !45}
!45 = !{!"buffer: {index:18, offset:32000, size:512}", !6}
!46 = !{!45}
!47 = !{!32, !10, !15}
!48 = !{!15}
!49 = !{!7, !32, !8, !45, !13, !14}
!50 = !{!9, !16}
!51 = !{!5, !32, !52, !16}
!52 = !{!"buffer: {index:18, offset:16000, size:512}", !6}
!53 = !{!52}
!54 = !{!32, !8, !9}
!55 = !{!8}
!56 = !{!7, !32, !52, !13, !14, !15}
!57 = !{!7}
!58 = !{!8, !13, !14, !15}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment