Created
August 9, 2022 16:40
-
-
Save ToucheSir/7f9623364d953db102540466a58dba9e to your computer and use it in GitHub Desktop.
JAX mixture log-likelihood IR dump
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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