Skip to content

Instantly share code, notes, and snippets.

@qedawkins
Created September 12, 2022 05:25
Show Gist options
  • Save qedawkins/e3023a70ef3e5797545c4b3468e98dc1 to your computer and use it in GitHub Desktop.
Save qedawkins/e3023a70ef3e5797545c4b3468e98dc1 to your computer and use it in GitHub Desktop.
#map0 = affine_map<(d0, d1, d2) -> (d1)>
#map1 = affine_map<(d0, d1, d2) -> (d0)>
#map2 = affine_map<(d0, d1, d2) -> (d0, d2)>
module attributes {torch.debug_module_name = "DLRMShark"} {
func.func @forward(%arg1: tensor<4xi64>, %arg2: tensor<2xi64>, %arg4: tensor<4xi64>, %arg5: tensor<2xi64>, %arg7: tensor<3xi64>, %arg8: tensor<2xi64>) -> tensor<2x3x8xf32> {
%cst = arith.constant dense<"0xFAE4453F6438D0BE959A3D40874F6D3FBB97693F3CD2FF3E94F862BF44F56DBFF4A20A3F2ED0E63F4C60CA3DD652CABFE73107BD722AF1BFA93AB2BF865D5ABFE2C528C011E9233F02A23F3F9A0F98BECDAC8B3F7D0F54BF1CA3B03FC8C6A93EA16B803F8E4ECA3EDF74FE3ED0FE03BEA2BEA73D99F06ABFE193B23E803DF03E4FBC6ABFF7B8583E0E4EB53F3A030240EB021EBF8019ABBFEC935BBF71B219BF851FD23E51521C3D386AD1BFCC68533F45DFCF3EA51687BE24C5B83F4148AB3F00D38CBE77E492BF5D738ABFC65E02C0D7E809BFAF00E33F9E4489BF3560ACBE2F70823E6AD3DA3E0A3910BD8874943F36D339BF32918CBF89C713BF5F833ABFE3BCC4BFB37DF6BEF096013FD63DD13FE5AA0C40BB7C1A3D2F24563FDFC178BF5AFF783F6DECA33F4BE3C4BF9391E5BE446DB73F94C997BEB4079EBF1E3218BF665C26BFDF64B0BFD7AE7E3F810B30BF7C88C43EC60BB0BFBCFEABBF7CF3563F736B7EBF9D38C7BF6F032D3FFF222FBF060886BF79A404BF62DFCA3E295242BF73FA0FBE564B17BFA4004C3FD66614C060F0B73BF0E85EBF5657373C6E2593BFAF5CAABED9AC083FC37796BDE8FABDBC0B123A3E4B356ABFB88C35BEA31DEB3B9FDAE43F7AEE1FBFB6DBBABF11AC9A3F46A98A3FABE61F3F982441BE23D1BE3E9AA2B73F5E10FD3DB8411B3FA71CA2BF4831A1BFB7697FBF380EB63F35D6983E3354283CE02ABF3FAE5287BEE408133D998040BF398ABDBE4DCC03BF6AC3CC3EA862803E20A86EBEAA01363EF27CAEBC2D0A57BDD00E223EBF032D3FFADEFF3EFB00CC3EF260E53F8F71613F5F3BB63DBA5E1CC06593883F8DAED1BE7426EF3EB9A9603E0DE63A3F3AD58ABE718806BED45924BF6BBA083F317BE13E065EB83D0410B6BFB18D74BF99D2313FA4636A3FA598B2BEEF55DF3E68DE843EF74089BFDEA6E93E3503573DFEE2373F1D038FBD2999CB3FEF71D4BFFA5EAC3FC549B9BCAA0591BFD96393BEC687BDBCFEF046BEF2FC9BBDB7C78BBE50D7BABE6CA4C63F534C78BF951DD43C00ECCE3FC199EBBEE1F5A53F0F8379BF2D13DC3F4D5A1EC0B4BEE4BF09EC64BFE690E7BD3CC3363F24412A3D4C71ECBF32375C3C7C32B8BF7CA3863F4BD4C93F851B973F977FBABFE3CD983E3D45923FD81A76BF9269F1BE1BDE97BDFE89433D2C112EBFE9A413C01B5B0DBF93DBB6BECC07FCBE1868E9BED0A2CC3E61386D3D56B4B9BEC3B88A3F5CF5ADBD907FD8BF07E3F4BF1245323F621F963F16C9663FAF4C98BF783C99BFEC75F03BDA57253EAD3386BFA82FF6BEEB4FC83E8D38873F5FE5EEBD82D7213F541B573FE6030CC007179B3EDDC874BF8BACB9BE3E91453FE65B063F666574BF94D48ABF6C9A06BFA43D78BF463887BF7E5E0EC0814C3DBEC59E0EBFE9C8A8BEACCB5E3EFBE80BBF9B0B003E018FEC3E499CBDBFF0AF533D36BDE7BD3FEB4CBF3A071A3F806D3FBF04A187BE013469BF06DF3E3E94EDE03E2760C13E7A3E5EBF1E13343F65A11CBE2B3A283CC525D5BF95C070BF2FF396BD3B70123F313F01405959F0BEC24DEB3E2010803EE941E23ECE6B9DBF2BD01C3FEE67BDBF1DCBB23E2BE3913F4F60CE3F785A533F119DA33F94271DBE31A387BFAB9375BE0FDFC9BEC88F46BF22E8843F06EF39BF5D65843EF9953F3E10CB4CBF8CD77BBFCA9AC3BD27A762BFB4709CBAB87BB13FCA66CEBED08813C07D87163EB9C0813FEA0885BF81216F3FE2699DBF184EF03D10B6473F58EB1FBEE4A79F3E0C8E74BF6100B4BF733BF2BE88AF9BBF53B199BF324CF4BF16D0E73E1A7F743FA59F9BBED2288C3E4228953FC2715E3F76445A3FADD6C3BEDE5C9FBFDD90723EA1A5A9BFFCD900BF9835A03EFB258BBEE188633FBBE58A3E7EB2993F83C163BFC24E15C09E3E383F48D3433F56AD0CBFFF5050BEEA6618409CB797BF959356BEB6CB1DBFC0CEBD3E8DD43DBF04478F3E1569433FC79FE33F0CBFC7BFF17D13BE019CC23F027E20BFD1AB30BE7123C0BF59A67DBF7835B7BF7381C63F356AD03F196975BFC1E88CBFF8F5103F8573DDBE9C564E3F9CC2C93E54CD493FD5112C3DDC6002C01A4CF33FDF03A0BDF621E23E5C26763F4BB316BFE3B8C6BFB992EC3E0A80B2BFC0E8C53D4D7896BF51FF35BFFD4075BFD20E1EBE94F7853FC7C4ABBFF6BAD6BF5B05313F7F6D3E3ECE26093EF05543BF52BC3B3FAC6FB8BF51CB253F1CFB63BFD330CDBFC3739DBEF075A1BFE2B5EE3E8D52853E079A3BBE74361D3FD914D2BD1A51F83E6B7C653FF603ACBE002710BF3CAD6C3F9C96A9BD85FFA93FABD794BFDC26D43E6C64A8BF68451D40080DD63FB76F043F1967783FDE194DBFD1288E3E0A12F8BF470E21BF7677F53D13D9833FD3F4A53F2EACDCBD93873F3F5C093EBFED77B03E2E32D23F8236A7BEBDD5BB3E057839BF26CF31C0B54BC93D9275B13F90B34EBFABCD8BBFF14A72BF8EE0F339C4F355BFC5552BC0DF07723F6A602FBF98376240535674BF19DB9B3F132FC2BF536D31BDD11128BF6A902CBFF2D829BFA54D36BFCE3899BE2C1A9CBE4619683FAC23C9BE1677CC3FEB3B2C3FFE1E1ABEC8EBAD3F2AAD223FAC6B9D3E3AE59EBF62E609BFDF24CABE07C6133E6D7611BF769C9FBF0DBF743F7511F1BDBAC10BC00709F8BE0BA82ABF18940FBF1CE0863F90EB46BFD90928BFD492E23F147A0BBFD4E0AD3FF235F83E484A9E3F9884FD3F9C4576BE5558183E3390A43EBCF3A0BF307EC4BEBE31D2BD1F9595BF7500523F957D2E3FC844C2BF25B7B53F494B64BF0BA3D73F22FB503FB6C8CB3FA9ED5DBF845BB63F9472DB3EDE28DABF5AFBA03F2EF262BF74058A3F0054DFBEFBE0963FECB2B2BFAED27CBF69F95D3E42E6433F259D6ABEEA99273F304F45BF8FA92E3F90DF813FE8184FBECD8AE93E259FBF3E50C4AE3EA376D2BEF82E973F675E003F899EE8BF546D79BE376856BFD45FA13F1F359B3FC858563F8705DD3ECECBCFBEF10AFC3E68573E3F4B11133F1C0B2BBF98C1B5BEB125A7BDF594943FF93AB73FEEABF83E68F34EBFC9D55B3F2C461AC03C7F4D3FFA0D0DC07B65A6BF2B3B96BE043F64BF17BF5FBE0EFC393ED5E09D3FDCD790BE293F33C0C4EFB13CA002653E9C037CBF3CCCA13FFB870EBC89370FBF98E72EC034215E3FFF8B783E9EC430BF7A16B9BF66C82B3EE4BD07BEBAD4823FA8D3B23F5E46523CBE68633DCE3F41BC14C3224051B371BE5DC12BBE2F55E63E402BE53E8B13C83F5688083EA998813E4C2DB0BF2EEA6BBF2BC1D53E0F58493E7B54F93E3BF08F3F97A982BF98B6453FD838FF3E8B21D8BE89EACA3F56F1B1BF42CD273F48BAB2BFCA70903F13C098BF57E20BBE9F037FBE170497BFA499C8BEA6D9B13F83D08CBC641515BFCFAA6F3FCB2D40BB51C6993FF0AF933F8C75FCBE40971F3EA8F13ABFB7225FBF81FC8FBFE8B1F43F8A380C3F5AC9A8BF95C58ABF80010E3FCB11F63FC1C1E33FD2858D3F9CC7333F87DC3C3F8C9DCF3E5BC10F3F7265293EE5FE68BF388DA8BF0F69153F238B473E37CB863DFBF9003F3671D03E42BB9CBFE77382BF8EAB8DBF599B09C0BF960FC0904D113FAF5E42BF81972ABFEE620ABF0D014B3E6C168BBE3D3ED2BEB8DDE3BDAC8626C010F8F13E309D47BE3AF15FBF47E29DBE2FB9183FAC15AFBFDAD1BE3F674C9C3D07D0CDBFD3EFBFBFA98A3E3F987A86BF9FE47E3E8FBB8C3F418393BFE1BECD3E54B4353E09824CBECC3F9D3D33DD013F750B2ABF069F98BFD4D3C13FEA19B83F26C5083D9C2D04BFC9ACF2BFA60D7A3F395E93BD8116053F843CD13E11C3B73F5ACA4EBF58053ABE59F312BF1CB3ABBE09561FBE358FB23E7C1E873F71DF3C3F5919CABED4FC183F7E0BC83BB7DC78BF6D1BB13E11253BBD9D47F53EA1191E3F5AD4913F08A7D1BE2BA5953EBCABC43EAFE7C2BDD7A6A73EF4A5BCBD78700D3F072B273F6D4B2BBF98018E3FA93CC63F3D1C35BF553B0140DFD80740AB5584BF03DDAEBF3C4A6A3F3E587A3E2F2B273F6E33923D5C2A233F1CF7F8BF2FAE2B3F261CF53C48E91B405938E23F5AB108BFA8C30740D6BE40BFCDFE8E3F1864CFBFA511B7BFC2C9D83D83642840985296BFAD5C1CBFEC2490BDEE90143F5B8CEE3F71DBFBBFCB2481BF0D65003D1225B83F0AC24B3ED2FD29BE304D15408A65B1BFE2F8813FC7DADC3F8ECF34BF2831C33FA79B833E972BE2BFB1F308C0138435BE6D47C73D8944C13DCE381B3FA5BECF3FF52E17BFC9BB9EBFC149B93D23B80040D95E51BF64F866BF5301C43DF83E0D3F3F5D02BE64BB30BF8A1B36BF0D5A563F8A8000BF9754E13E5BA7AFBE134B903E99F9933F205FA73FBBE2273F8D495ABEDC09A8BF01AF48BF7EE19C3E401B3F3F2BC65E3FBB6A573F844CC43FCEDB5D3F42B729BFEEAE243FFA5AB13F4B2795BF07326A3FA93F29BFD1F7C5BE2C6819BFC06D0B3FF5406E3FA1B492BFCB055A3EDDC4B7BCA6AED83FC102403E7CAE21BF28829FBE479A62BF8A23DCBE"> : tensor<100x8xf32>
%cst_0 = arith.constant dense<"0x3B1BB33F2B965A3D3F6F97BEB34F91BE96F19D3C05EAD5BDC2FD12BF355C08C0B6D585BF5B532FBFDB8469BF75459A3E845949BEC82ADEBF630F8CBF5967463E3B60D8BDF9866E3F2C6CA63E8EF13C3D54EF273B006D7F3F23DAF2BE3929033EBFD3A63F4DD939BF7DCADE3E6A03B1BFB37308BF04CFA7BFFAB2F3BE7EA065BF84E6074041B26CBF902909BFDFF5DE3E1919693F6022B6BD6409A23F6123603FA3BF6C3DD0267C3F63D6B1BF6D0150BE1996923E5C4EA0BF3704523E19B8F73D76F8C2BD99F7AFBE870EA8BF3681F3BEC2E89A3F08C2FF3F57F4CBBE2624ACBF9ADA223FF446813FEC40103FCA102EBE6EA6D83F49EAB83FFBF994BFD487DBBF0F63264012CE153DD0FBBEBF3374433FBD0DE63EE96D8E3FAA1B014037D1DB3FDD80C1BF725756BFF72C35BEA04BB5BEA637CC3F708F4DBE764D14BE90C478BEAD43CFBE8381B9BE02004ABFD57FC13EBD9BCBBF8E24913FA274B0BF0971A4BE1CD62C3FECD922BFE01A72BFDC8CB43F1864FFBE7EF1883FA386E83F31116A3F6321813FA119333C18661ABF7C3F113EF201B03F312AF6BEA514BC3F4CBC95BE868F084056BFA33EB06C9DBE415A17BD39DA8DBEE531EE3DCC1AC23D09DFFD3EFBEB4ABF5BDD0A3DA07CBCBF1D6AC5BFD2A6C93FB5CE423FB0684CBFB633883FC780ABBE16EE7F3F6CA5D93E804B233FAB438D3E87B89BBF7466863EB21AF73ED62D9BBF1748113E79A7BABFB6362440A32096BF9957533F3234C6BF91B595BFD781DF3FD9F0353FA858BB3E931306C00A46A6BE558B96BF722B143D12A0D7BFB9D596BE2D299CBEBC054E3E9757AB3ED559733F420CD4BF4488443F979526BFFED595BF26A194BF99C6BC3D2102093E5C624F3F3C6EB7BDE39EDE3F6242833FD73D783FE0DA5DBFDBA2E9BE2C44863FCAECD43FA7A6CBBECCFFE6BE7C0C323F3351D1BE4423A33FED2AA73F82A016403D45E7BF4E72FB3E8FD58A3F9CE18FBFD65DFC3FD66C8C3E48070B3F9A18E1BF8C7E8ABEE889133F3D2611BFDA0B9FBE5695CC3F8CDF8D3FA4C01F3EBA39A53F12F259BF16500B3F6A06233BC7D2353F317D4B3E83E804C0A3C73D3D7731363F6BB4A8BE3B432D3FDCF5B73FC7DEA93DA71CD1BFB9F5853FA06088BFB8FE813ED0EEBDBEDC137FBDCB943E3DE077B03F5827A23E99A562BFD2A225BF0DC6C63D254FEE3E8696ACBEFDEF5EBF2576C7BE1896E9BF8AFA0EBFBB3AACBE0020E7BF236A92BF4CDD943FCED49F3E548E00C04DEC3BBF5CC88A3F83A5BD3ED14D583FCE48FC3E4F9F053F072AF8BFD24B3FBEB4D5743E1C8418C02923E83EA0E7B03FA4857C3E75E4AF3FE23C22BE2054A23FB474DFBEC94D9ABF9D9DD1BF2551AFBDB98FAEBEFCE0443E991EED3EAD0A2EC0E8E2A63F0DF5293DC811C13F49C04FBF390563BFFAFBEF3F425E59BFEAD80C3FBD888C3D2CF436BFB7B65D3F8D702ABF95C2C9BF831E22BF5F6CE3BFABDC53BF67F8763F8A036A3F6857DE3FCA893EC0F23FF8BE54D1953F8532163F2C6D533D07F2CEBF01401A400F04FB3E5F7E0FBF8B434B3F5D3393BD480D5EBF9FADF23E9C15D1BF4A834FBE66E2833DE457B43FC072A83F5801C43FA0751DBF9CB5A8BFDD8B31BE2AA2723F4AF7F73F55AA1D3F00109DBFFC6F3EBF68F523BC77B9EA3ECA7FF53E0AFFCD3F3E938E3FCC1EE8BEF899033FFC1D853DC9F4AE3F95C624BF75D590BE9AA00FBFC160B73EC0E2C53E879A1940E8BCEFBEF34483BF510C33BFA62122BF455320BF7A31A53EFA3E03BEF4E7EE3CA0F819BEFE108D3EC2991F3F8635F3BF904408400CB19BBF444A38BFE9E1E53F5651533EC6B05B3FCBBE71BF469C81BEF7BC41BF37C7DCBED050033F5B61703F0A54E93FDBE582BF24D3D63D6620483FF646BA3F57F389BE849D85BFDA09573FA6B18EBFAAE3823F061ED1BE69CB4DBFF040013F91D00C3FA289D0BE063CDC3E3D2AA3BF0B4EF63FFCDAE4BF5B878EBCC7D1C3BE447EF2BFFD7E7BBF33341A3FF7E825C0046D8A3EBF5DE53E1CC20A40F4567B3D9A6E99BFB8D0A53F21F3CB3D21CC7B3F970B83BE394BCABE062C8F3FC331A6BF379A47BE8A74D7BE327AAB3FD78B3EBDE59809BF0E3470BF31029EBFE033F43DEF57B13F96C283BE2F284B3F5416513DF01E23BF46D84A3EB3FBAE3E2D77C8BF0C5106BED72B28BF707499BFC16A9FBF7CF2873E6EA8B43FC46384BF3B35683F783EFA3E3DB1BD3E5E4627C08333073F95FF80BF718D6C3FC21604BF43780EBFBA4197BFB9747BBF0E9AB5BF5811043F0C4C40BF3504993E3331113F6E68FE3F404E05BF03F26EBF37C3D33E358F553F29CBC53E6ACDB33F1E77253FBBDD0C3FA55D02C013EF96BD60BF7E3EE4C0CA3F42AFB93D4336B83E83E1C83F9446843ED5C427BF4A2AC63F8B3497BE5E47A13F50975BBD33E588BF5B6301C062254A3F02C6093FC966D43EF72E0E406E7982BEA44938BEA0CD73BFCF489BBF698AFF3E41EEBFBEB145E23E1035EBBDE485373F4290873F8BB3E03E5663B3BFDE24523F47FF263D6B958B3FCF4412C0D9B5DA3EEE0E51BFE2B0B4BFC14CB43E093E1C3FDD918B3CF17DCF3F21BB154037B9CEBFE08039405E42313E7B692E3ED2799EBECB53ADBE14F42340890707C09C168A3FDDA7763F395B84BF529393BF058B083FCA478D3F6AE39FBF77DAC3BEF902E13F9BFB04BF861118BF5ED088BFA70F8BBEA12AABBF9E0ED43EC43351BF2B47443E8B4747BF430A8BBFE58EAABF1B797FBE4334BEBD099AE1BF0C882B3F579F2B3F74FEFFBFA98B9ABF9D23693EDFF785BF94D42FBFB09280BF92DE1E3F8056E9BEB3CF3FBED574BBBFE0D2C13F1B03913E5CD050BF0285F2BE4795A2BF62D64BBE44E93CBE7898D83E48E7A43F72D9B73FC34EF13E228A843D250B0D3F7B7A39BE649918BF51C4B83F54925B3E6328F93EE8FCEDBF82AC623E8C1B1FBF19F089BEB49319BFC5428BBF58FAC8BC4FFDEC3F80CCAA3F8A2811BF924AA73F1BAD6DBF364853BF13680C3F95BE8B3ED64F45BF02D31FBF6E384A3ED898F83E6EFF383EDDFB31BE002070BF136496BFC390B73FA79595BF86CFA43E86DD0FBF0F5456BED82B88BF93D1B93FC5A8883E48B707BE525D4C3FAA9A1E3F711FA6BEE6E1823E7540FA3E1F7811BE54FD3CBEB7F911401999A3BFE9B018BFCCEA663F1530AFBE6C48BDBECD7ADC3EC7B291BF38BB103F24504BBE617F213F2081E5BF3F331BBF8AE392BF7362A7BF5DDF6C3F275E86BF685FF63F2A9383BDB7680F3FE3D674BFDCC326BE8DF943BED1CEB5BEAAE0CC3E60F3753FDAF1E43E146D16BE8B254A3F9903553FEA109BBF64217EBD3DA992BE27C3E8BF7E35DE3F869E2ABD663F20BFC2F762BF3F5760BDE341A4BF90934C3EE1BDA4BF0EBE2D3E9E711540777DBBBF4EBE0D3E5393673F48F9B83E222DECBF64FAA13EF8C7FE3C7B5410C0C139CEBFDD4A343D7294F43E16321DBDEF47C6BC2285753FEED603BE7E72DD3F8C51B4BE46182B3FBC157F3EFA4DB33C93AED3BECC81F83EE41D81BC389F92BFF69F3E3FC6E9C53F76263FBEE7211B3F6B7280BFB7E77D3E840C49C04C939EBEC55BDB3E8299163D188D92BEE62CCEBF6B19B43DE101B03E89D3183F27D39B3F6D2917BFD1212CBFD65CA0BF8A0B893EC8E580BF220A05BD7022B1BE64E6B7BE74F6863FCF189E3F604EE83E8965003F08E4A9BCC0AC59BF5EA91CBE654029BEB67891BFEAFA413F04954D3D9C69AD3FFC43C73F61A933BF31EF1ABF6AFEF73E01542540AE5E14BF2314883F948C8D3EB68C45BF6E0824C03F389FBFCE32EE3E38C13D3F6136143EB132173F3828E2BE3D2C35BF12FB6EBF230113BFFE0B9B3FD9A746BFC173E9BF3ECBF63ED89FAE3D590059BFFEBB86BF40D53DBF525D1740F10B3B3F8BE48CBD846ABFBF285F803E306BEA3E3BD4C83FB096413E7F74813F3821473E2E4B9DBE7B590E3F0522B63DE8E18E3F9A973C3E0241A9BEC95DE2BE09746B3FE6247D3E3A432B3F5EB728BF898999BEDCD2703E1128B0BF6E8AC9BFCCC02FC062FBBA3E60AF57BFA8A9203FC709DCBE290B953FF6D2A9BF62D3FCBE299EC03F67EE6FBF96352E3E0FDA04BF2200FCBE3217303F7969EB3FD8D8B5BE43294E3F101B0ABF47A7BA3F755781BFCA2D9ABFD7E016BED3006E3E8360BCBF05CAB9BC9887DE3F09EFB33E658C513DA3F367BF286CDBBEA15D153FB38029BFFB9BD1BD9A5A55BF0713B13E2571DF3E1BD7AA3F0BD48EBFE0A7233E28D314BD7B5EA5BE71E811BF4916ACBD249A1F3F03B60A3F09FB8EBE72E912BF611FCF3EECEBD6BD5AEAB43CFD8351BF67D08B3EBBF4333F1AF1A43FD5BD84BF0D4EBDBD2EB222BFAB5CD43E27325EBF0510023FCEA47E3F982611C03EB6D63F08369B3CFC7A56BFA3218E3FCA967FBE1F36CF3F9BBF5BBE2109F93E70F9F4BEEB00DD3F5632C83FAA1686BF192679BF77B1413F35CD25BF7880ADBFD5A5853F58D31C3DE1B787BF999A733F8F1A35BF"> : tensor<100x8xf32>
%c1_i64 = arith.constant 1 : i64
%cst_1 = arith.constant 0.000000e+00 : f32
%c2_i64 = arith.constant 2 : i64
%c4_i64 = arith.constant 4 : i64
%c3_i64 = arith.constant 3 : i64
%0 = linalg.init_tensor [2, 8] : tensor<2x8xf32>
%1 = linalg.fill ins(%cst_1 : f32) outs(%0 : tensor<2x8xf32>) -> tensor<2x8xf32>
%2 = linalg.generic {indexing_maps = [#map0, #map1, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%arg1, %arg2 : tensor<4xi64>, tensor<2xi64>) outs(%1 : tensor<2x8xf32>) {
^bb0(%arg10: i64, %arg11: i64, %arg12: f32):
%12 = linalg.index 0 : index
%13 = arith.index_cast %12 : index to i64
%14 = arith.addi %13, %c1_i64 : i64
%15 = arith.index_cast %14 : i64 to index
%16 = arith.cmpi eq, %14, %c2_i64 : i64
%17 = tensor.extract %arg2[%15] : tensor<2xi64>
%18 = arith.select %16, %c4_i64, %17 : i64
%19 = linalg.index 1 : index
%20 = arith.index_cast %19 : index to i64
%21 = arith.cmpi slt, %arg11, %20 : i64
%22 = arith.cmpi eq, %arg11, %20 : i64
%23 = arith.ori %21, %22 : i1
%24 = arith.cmpi slt, %20, %18 : i64
%25 = arith.andi %23, %24 : i1
%26 = arith.index_cast %arg10 : i64 to index
%27 = linalg.index 2 : index
%28 = tensor.extract %cst_0[%26, %27] : tensor<100x8xf32>
%29 = arith.addf %28, %arg12 : f32
%30 = arith.select %25, %29, %arg12 : f32
linalg.yield %30 : f32
} -> tensor<2x8xf32>
%3 = linalg.fill ins(%cst_1 : f32) outs(%0 : tensor<2x8xf32>) -> tensor<2x8xf32>
%4 = linalg.generic {indexing_maps = [#map0, #map1, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%arg4, %arg5 : tensor<4xi64>, tensor<2xi64>) outs(%3 : tensor<2x8xf32>) {
^bb0(%arg10: i64, %arg11: i64, %arg12: f32):
%12 = linalg.index 0 : index
%13 = arith.index_cast %12 : index to i64
%14 = arith.addi %13, %c1_i64 : i64
%15 = arith.index_cast %14 : i64 to index
%16 = arith.cmpi eq, %14, %c2_i64 : i64
%17 = tensor.extract %arg5[%15] : tensor<2xi64>
%18 = arith.select %16, %c4_i64, %17 : i64
%19 = linalg.index 1 : index
%20 = arith.index_cast %19 : index to i64
%21 = arith.cmpi slt, %arg11, %20 : i64
%22 = arith.cmpi eq, %arg11, %20 : i64
%23 = arith.ori %21, %22 : i1
%24 = arith.cmpi slt, %20, %18 : i64
%25 = arith.andi %23, %24 : i1
%26 = arith.index_cast %arg10 : i64 to index
%27 = linalg.index 2 : index
%28 = tensor.extract %cst_0[%26, %27] : tensor<100x8xf32>
%29 = arith.addf %28, %arg12 : f32
%30 = arith.select %25, %29, %arg12 : f32
linalg.yield %30 : f32
} -> tensor<2x8xf32>
%5 = linalg.fill ins(%cst_1 : f32) outs(%0 : tensor<2x8xf32>) -> tensor<2x8xf32>
%6 = linalg.generic {indexing_maps = [#map0, #map1, #map2], iterator_types = ["parallel", "parallel", "parallel"]} ins(%arg7, %arg8 : tensor<3xi64>, tensor<2xi64>) outs(%5 : tensor<2x8xf32>) {
^bb0(%arg10: i64, %arg11: i64, %arg12: f32):
%12 = linalg.index 0 : index
%13 = arith.index_cast %12 : index to i64
%14 = arith.addi %13, %c1_i64 : i64
%15 = arith.index_cast %14 : i64 to index
%16 = arith.cmpi eq, %14, %c2_i64 : i64
%17 = tensor.extract %arg8[%15] : tensor<2xi64>
%18 = arith.select %16, %c3_i64, %17 : i64
%19 = linalg.index 1 : index
%20 = arith.index_cast %19 : index to i64
%21 = arith.cmpi slt, %arg11, %20 : i64
%22 = arith.cmpi eq, %arg11, %20 : i64
%23 = arith.ori %21, %22 : i1
%24 = arith.cmpi slt, %20, %18 : i64
%25 = arith.andi %23, %24 : i1
%26 = arith.index_cast %arg10 : i64 to index
%27 = linalg.index 2 : index
%28 = tensor.extract %cst[%26, %27] : tensor<100x8xf32>
%29 = arith.addf %28, %arg12 : f32
%30 = arith.select %25, %29, %arg12 : f32
linalg.yield %30 : f32
} -> tensor<2x8xf32>
%7 = linalg.init_tensor [2, 24] : tensor<2x24xf32>
%8 = tensor.insert_slice %2 into %7[0, 0] [2, 8] [1, 1] : tensor<2x8xf32> into tensor<2x24xf32>
%9 = tensor.insert_slice %4 into %8[0, 8] [2, 8] [1, 1] : tensor<2x8xf32> into tensor<2x24xf32>
%10 = tensor.insert_slice %6 into %9[0, 16] [2, 8] [1, 1] : tensor<2x8xf32> into tensor<2x24xf32>
%11 = tensor.expand_shape %10 [[0], [1, 2]] : tensor<2x24xf32> into tensor<2x3x8xf32>
return %11 : tensor<2x3x8xf32>
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment