Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ERROR: iree-opt --iree-convert-vm-to-emitc #19557

Open
pyl3000 opened this issue Dec 24, 2024 · 0 comments
Open

ERROR: iree-opt --iree-convert-vm-to-emitc #19557

pyl3000 opened this issue Dec 24, 2024 · 0 comments

Comments

@pyl3000
Copy link

pyl3000 commented Dec 24, 2024

When I execute iree-opt --iree-convert-vm-to-emitc . \matmul_original.12.vm.mlir -o matmul-emitc.mlir to drop the vm dialect to the EmitC dialect, the following error occurs:

Image

How to run OrdinalAllocationPass?

The matmul_original.12.vm.mlir as follow:

module attributes {vm.toplevel} {
  vm.module public @module {
    vm.global.ref private mutable @__device_0 : !vm.ref<!hal.device>
    vm.rodata private @_utf8_hal_device_id_C1DCB7DBC4F49AE6 {alignment = 1 : i64} "hal.device.id"
    vm.rodata private @_utf8_local_3D3B5147158B235A {alignment = 1 : i64} "local*"
    vm.rodata private @_utf8_hal_executable_format_EAB228F999C2D3A1 {alignment = 1 : i64} "hal.executable.format"
    vm.rodata private @_utf8_embedded_elf_x86_64_9FD8733DA4A6F228 {alignment = 1 : i64} "embedded-elf-x86_64"
    vm.rodata private @matmul_original_linked_embedded_elf_x86_64 {alignment = 16 : i64, mime_type = "application/x-elf"} dense<"0x7F454C4602010100000000000000000003003E000100000000000000000000004000000000000000A82000000000000000000000400038000700400015001300060000000400000040000000000000004000000000000000400000000000000088010000000000008801000000000000080000000000000001000000040000000000000000000000000000000000000000000000000000000008000000000000000800000000000000100000000000000100000005000000000800000000000000180000000000000018000000000000810F000000000000810F000000000000001000000000000001000000060000009017000000000000903700000000000090370000000000002802000000000000700800000000000000100000000000000200000006000000F818000000000000F838000000000000F838000000000000C000000000000000C000000000000000080000000000000052E574640400000090170000000000009037000000000000903700000000000028020000000000007008000000000000010000000000000051E574640600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000120007007027000000000000110000000000000002000000020000000000000001000000000000000000000000697265655F68616C5F65786563757461626C655F6C6962726172795F7175657279000000000000983700000000000008000000000000002005000000000000B03700000000000008000000000000000018000000000000B8370000000000000800000000000000B01A000000000000C0370000000000000800000000000000101D000000000000C83700000000000008000000000000008020000000000000D03700000000000008000000000000006006000000000000D83700000000000008000000000000008506000000000000E0370000000000000800000000000000AA06000000000000E8370000000000000800000000000000DC06000000000000F83700000000000008000000000000000307000000000000083800000000000008000000000000000307000000000000183800000000000008000000000000000307000000000000283800000000000008000000000000000307000000000000383800000000000008000000000000002007000000000000403800000000000008000000000000002007000000000000503800000000000008000000000000002007000000000000583800000000000008000000000000002007000000000000683800000000000008000000000000002007000000000000703800000000000008000000000000002007000000000000803800000000000008000000000000002007000000000000883800000000000008000000000000002007000000000000903800000000000008000000000000009037000000000000B0380000000000000800000000000000B037000000000000B83800000000000008000000000000004005000000000000C0380000000000000800000000000000D037000000000000D0380000000000000800000000000000F037000000000000D838000000000000080000000000000030380000000000000000008000000000010000800000000002000080000000000300008000000000040000800000000005000080000000000600008000000000070000800000000000000000000000000000000000000000000000800000000000000080000000006D61746D756C5F6F726967696E616C5F6C696E6B65640000000000000000000000000602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D61696E5F6772617068246173796E635F64697370617463685F305F7061636B5F663332006D61696E5F6772617068246173796E635F64697370617463685F315F7061636B5F663332006D61696E5F6772617068246173796E635F64697370617463685F325F6D6D7434645F44784478447838783478315F663332006D61696E5F6772617068246173796E635F64697370617463685F335F756E7061636B5F663332002E5C6D61746D756C2D6F726967696E616C2E6D6C6972000000000000001400000000000000017A5200017810011B0C070890010000280000001C000000C0100000A802000000410E108602430D064983078C068D058E048F03039A020C070800002800000048000000441300005A02000000410E108602430D064983078C068D058E048F03034C020C070800002800000074000000781500006103000000410E108602430D064D83078C068D058E048F03034F030C0708000028000000A0000000BC180000E506000000410E108602430D064983078C068D058E048F0303D7060C0708000010000000CC000000801F0000110000000000000000000000554889E5415741564155415453488B4E18488B014C8B41088B7A044C8D14FD000000004C8955C84D29D04983F80841B9080000004D0F4CC84E8D14CD000000004989FB49C1E3064C29D84939C2490F4CC2488945C04D85C00F8E3D020000488B5E20448B7110448B41144D89C749C1E7204B8D3437488D04F500000000488945D08B0A4989CA49C1E2064C29D64889CA48C1E20848C1E10B48034B084D89FB4D09F34D29D34983FB4041BA400000004D0F4CD34983FA0241BB010000004D0F4CD34983F9024D0F4DD94D01F74C0FAFFF49C1E7084803134C01FA4C89C748C1E72549C1E0224B8D1CB049C1E6054909FE4531FF660F6F0515ECFFFF660FEFC9660F6F15B9EBFFFF660F6F1DC1EBFFFF660F6F25C9EBFFFF660F6F2DD1EBFFFFEB1E662E0F1F8400000000000F1F44000049FFC74C01F24D39DF0F845C0100004885F67EEC4A8D3CFD000000004C8B45C04929F84983F808B8080000004C0F4DC066490F6EF0660F70F644660FEFF0488B45C8498D3C07480FAF7DD04C8D24B9660F70FEF5660F76F94989D131FFEB1F904889F848C1E005450F294C0410450F29040448FFC74983C1044C39D77482450F57C04D89CD450F57C94531C0EB0E669049FFC04901DD4983F80874C466440F6FD666440F66D266450F70DAA066440FDBDF66450F70D2F566450FEBD366440F6FDE66440F66DB66450F70E3A066440FDBE766450F70DBF566450FEBDC66450F6BD366440F6FDE66440F66DC66450F70E3A066440FDBE766450F70DBF566450FEBDC66440F6FE666440F66E566450F70ECA066440FDBEF66450F70E4F566450FEBE566450F6BDC66450F6BD366450F63D266410FD7C2440FA3C00F8351FFFFFF66450F6E5500440F2945A0440F294DB04489C083E00766440F7E5485A0440F2845A0440F284DB0E925FFFFFF31C05B415C415D415E415F5DC3CCCCCCCCCCCCCCCC554889E54157415641554154534C8B4618458B5808418B580C498B78104989DE49C1E6204B8D041E448B52044C89D148C1E1064829CF4883FF40B940000000480F4CCF4C8D0C8D000000004D89D749C1E7084C29F84939C1490F4CC14885FF0F8EE80100004D8B08418B7818458B781C4D89F849C1E0204909F849C1E90249BCFFFFFFFFFFFFFF074D21CC448B2A4C89EA48C1E2044929D04C89D248C1E20A4883F902488975D04C89DE41BB01000000490F4CCB4983F81041B9100000004D0F4CC84983F9024D0F4CCB4D89FB49C1E3224D8D1CBB4D0FAFDA49C1E3084901F64D0FAFF549C1E5084D01DD4F8D54A50049C1E72448C1E7044C09FF4C8B5DD04D8B5B204D03530849031349C1E6064C01F248C1E322488D34B34531DBBB04000000660F6F0537E9FFFF660F6F0DDFE8FFFF660F6F15E7E8FFFFEB180F1F44000049FFC34901FA4883C2104939CB0F84FA0000004D85C07EE84E8D349D000000004989C74D29F74983FF044C0F4DFB66490F6EDF660F70DB44660FEFD8660F6FE30FC6E3DD4989D64D89D74D89CCEB1190410F112F4983C7104901F649FFCC74A0660F6FF3660F66F1660F6FFB660F66FA66440F6FC6440FC6C788660FEFED440F28CC66440F76CD66450FDBC80FC6F7DD410F56F1440F50EE41F6C501752241F6C502752741F6C504753841F6C50874A0EB48662E0F1F8400000000000F1F400066410F6E2E41F6C50274D966410F6E7604660F6CF50FC6F5E20F28EE41F6C50474C8F3410F1076080FC6F5300FC6EE8441F6C5080F8456FFFFFFF3410F10760C0FC6F5E40FC6EE24E943FFFFFF31C05B415C415D415E415F5DC3CCCCCCCCCCCC554889E54157415641554154534883EC18488B46184C8B5820448B42044B8D3C0048897D984929FB4D85DB0F8E1F030000448B6814448B7028448B482C49C1E5204D89CF49C1E7204D09F74C89F948C1E10548894DA08B3A488D14BD0000000048899548FFFFFF4929D78B500C48C1E2208B58084809D38B480448C1E120448B104909CA48C1F93F4931CA4D85D24D8D62034D0F49E249C1FC024931CC4889F948C1E10748C1FA3F4831D34885DB4C8D53034C0F49D349C1FA024931D24C01D148894DA84983FF04B9040000004C897D88490F4CCF4883F902BA01000000480F4DD148899558FFFFFF31DB4983FB010F95C34C89C948C1E1254C89F248C1E2054809CA490FAFD04889F948C1E109488D0CD14A8D149149C1E12749C1E6074D09CE4C8975808B48104D8D440D004901CD488B4E20488B40184C8B09488B490848FFC348895D904C898560FFFFFF49C1E0084C8945B848894DB04801CA488955C8480FAFF848C1E7064C89A550FFFFFF4A8D0CA748894DC0488D0C850000000048898D78FFFFFF48C1E00448898568FFFFFF48C745D0000000004C898D70FFFFFFEB2F662E0F1F8400000000000F1F4000488B4DD048FFC1488B45C848034580488945C848894DD0483B4D900F847F01000048837D88007ED8488B4598488B4DD04C8D1401488B45A0490FAFC2480345A84C0FAF55B849C1FA034D01CA488B4DB0488D14814C8B45C04C8B7DC831C048899540FFFFFFEB32660F1F84000000000048FFC04983EF804C038568FFFFFF483B8558FFFFFF4C8B8D70FFFFFF488B9540FFFFFF0F8467FFFFFF488B8D48FFFFFF4801C1480FAF8D78FFFFFF48038D50FFFFFF48C1E10548C1F9034989C649C1E6074883BD60FFFFFF00420F181C32410F180A410F180C090F8E830000004A8D34C50000000048C1FE034C01CE4901D64D89D14531E4662E0F1F840000000000904C89E348C1E3044C01F34889F24531DB0F57C04C89E931FF0F1F840000000000F3410F100C79F30F590C3AF30F58C14883C71048FFC975E8F3420F11049B49FFC34883C2044983FB0475C549FFC44983C1044983FC0875A8E913FFFFFF0F1F004C89FA31F6662E0F1F8400000000009048C7C1F0FFFFFF660F1F840000000000C7440A10000000004883C10475F248FFC64883C2104883FE0875D5E9D0FEFFFF31C04883C4185B415C415D415E415F5DC3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC554889E54157415641554154534C8B4E184D8B5118458B5920418B59244989DE49C1E6204B8D041E8B0A8B52044889D748C1E7064929FA4983FA40BF4000000048897DD0490F4CFA4989CF49C1E7064C29F84883F84041B8400000004C0F4CC04D85D20F8E6F0600004C8B5620498B314C895DC84D8B59104D8B0A48C1EE0249BCFFFFFFFFFFFFFF074921F44C89DE480FAFF248C1E60A4989CD49C1E50B4901F54B8D74A5004D8D4C317049C1E3074C895DC0488B75C84901F6490FAFD648C1E20848C1E10849034A084801D14889DA48C1E2254989F249C1E2054909D24D29FE4983FE40488B55D0490F4CD6488955D048C1E3224C8D1CB331DBEB170F1F004883C3084C034DC04C01D14839FB0F8DC40500004885C07EE74989FE4929DE4C8B7DD04D89CC4531EDEB160F1F4400004983C5044983EC804983C7FC4D39C57DBF4983FF04BA04000000490F4CD74D85F666480F6EC2660F70C844660FEF0D2DE3FFFF660F6FD1660F6615E1E2FFFF660F660DC9E2FFFF660F6FD90FC6DADD0FC6CA88660F70E055660F7625F0E2FFFF660FDBE1660FEBE3660F6FD40F8E5E0200004983FE02660F6FC40F8C620200004983FE0366440F6FF40F8C660200004983FE0466440F6FE40F8C6B0200004983FE0566440F6FDC0F8C700200004983FE0666440F6FCC0F8C750200004983FE07660F6FFC0F8C7A0200004983FE087D04660FEFE4410F105C2490410F104C24A0450F107C24B0450F106C24C0450F105424D0450F104424E0410F107424F0410F102C244A8D14A90F50F240F6C6010F854C02000040F6C6020F855002000040F6C6040F855C02000040F6C60874090FC6DBFFF30F115A0C4C01DA660F72F01F0F50F040F6C6010F855402000040F6C6020F855802000040F6C6040F856402000040F6C60874090FC6C9FFF30F114A0C4C01DA66410F72F61F410F50F640F6C6010F855A02000040F6C6020F855F02000040F6C6040F856D02000040F6C608740B450FC6FFFFF3440F117A0C4C01DA66410F72F41F410F50F440F6C6010F856E02000040F6C6020F857302000040F6C6040F858102000040F6C608740B450FC6EDFFF3440F116A0C4C01DA66410F72F31F410F50F340F6C6010F858202000040F6C6020F858702000040F6C6040F859502000040F6C608740B450FC6D2FFF3440F11520C4C01DA66410F72F11F410F50F140F6C6010F859602000040F6C6020F859B02000040F6C6040F85A902000040F6C608740B450FC6C0FFF3440F11420C4C01DA660F72F71F0F50F740F6C6010F85AC02000040F6C6020F85B002000040F6C6040F85BC02000040F6C60874090FC6F6FFF30F11720C4C01DA660F72F41F0F50F440F6C6010F85B402000040F6C6020F85B802000040F6C6040F85C402000040F6C6080F8436FDFFFFE9CB02000090660FEFD24983FE02660F6FC40F8D9EFDFFFF660FEFC04983FE0366440F6FF40F8D9AFDFFFF66450FEFF64983FE0466440F6FE40F8D95FDFFFF66450FEFE44983FE0566440F6FDC0F8D90FDFFFF66450FEFDB4983FE0666440F6FCC0F8D8BFDFFFF66450FEFC94983FE07660F6FFC0F8D86FDFFFF660FEFFF4983FE080F8C7EFDFFFFE97DFDFFFF660F1F840000000000F30F111A40F6C6020F84B0FDFFFF0F28D30FC6D355F30F11520440F6C6040F84A4FDFFFF0F28D3660F15D3F30F11520840F6C6080F8594FDFFFFE998FDFFFF90F30F110A40F6C6020F84A8FDFFFF0F28C10FC6C155F30F11420440F6C6040F849CFDFFFF0F28C1660F15C1F30F11420840F6C6080F858CFDFFFFE990FDFFFF90F3440F113A40F6C6020F84A1FDFFFF410F28C7410FC6C755F30F11420440F6C6040F8493FDFFFF410F28C766410F15C7F30F11420840F6C6080F8581FDFFFFE987FDFFFF662E0F1F8400000000006690F3440F112A40F6C6020F848DFDFFFF410F28C5410FC6C555F30F11420440F6C6040F847FFDFFFF410F28C566410F15C5F30F11420840F6C6080F856DFDFFFFE973FDFFFF662E0F1F8400000000006690F3440F111240F6C6020F8479FDFFFF410F28C2410FC6C255F30F11420440F6C6040F846BFDFFFF410F28C266410F15C2F30F11420840F6C6080F8559FDFFFFE95FFDFFFF662E0F1F8400000000006690F3440F110240F6C6020F8465FDFFFF410F28C0410FC6C055F30F11420440F6C6040F8457FDFFFF410F28C066410F15C0F30F11420840F6C6080F8545FDFFFFE94BFDFFFF662E0F1F8400000000006690F30F113240F6C6020F8450FDFFFF0F28C60FC6C655F30F11420440F6C6040F8444FDFFFF0F28C6660F15C6F30F11420840F6C6080F8534FDFFFFE938FDFFFF90F30F112A40F6C6020F8448FDFFFF0F28C50FC6C555F30F11420440F6C6040F843CFDFFFF0F28C5660F15C5F30F11420840F6C6080F8466FAFFFF0FC6EDFFF30F116A0CE958FAFFFF31C05B415C415D415E415F5DC3CCCCCCCCCCCCCCCCCCCCCC31C083FF05488D0D14110000480F44C1C30000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000016000000000000000000000004000000160000000000000000000000040000001600000000000000000000000400000016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E000000000000000800000000000000FBFFFF6F000000000100000000000000070000000000000038020000000000000800000000000000880200000000000009000000000000001800000000000000F9FFFF6F000000001B000000000000000600000000000000C8010000000000000B000000000000001800000000000000050000000000000010020000000000000A0000000000000023000000000000000400000000000000F80100000000000000000000000000000000000000000000011101250E1305030E10171B0EB44219110112060000022E001101120640186E0E030E3A0B3B0B49133F190000032400030E3E0B0B0B0000042E001101120640186E0E030E3A0B3B0B49103F190000004B0000000400000000000801BE0000002C002D00000000000000270000000018000000000000A8020000020018000000000000A8020000015642000000420000000101470000000329000000050400440000000400000000000801BE0000002C002D0000007000000027000000B01A0000000000005A02000004B01A0000000000005A0200000156990000009900000001014700000000440000000400000000000801BE0000002C002D000000E200000027000000101D0000000000006103000004101D000000000000610300000156670000006700000001014700000000440000000400000000000801BE0000002C002D00000071010000270000008020000000000000E5060000048020000000000000E506000001560000000000000000010147000000006D61696E5F6772617068246173796E635F64697370617463685F335F756E7061636B5F663332002E00696E74006D61746D756C2D6F726967696E616C2E6D6C6972006D61696E5F6772617068246173796E635F64697370617463685F305F7061636B5F663332006D61696E5F6772617068246173796E635F64697370617463685F325F6D6D7434645F44784478447838783478315F663332006D61696E5F6772617068246173796E635F64697370617463685F315F7061636B5F663332004952454500370000000200000000004F0000002A0000006D61696E5F6772617068246173796E635F64697370617463685F305F7061636B5F66333200000000003700000002004F000000480000002A0000006D61696E5F6772617068246173796E635F64697370617463685F315F7061636B5F663332000000000044000000020097000000480000002A0000006D61696E5F6772617068246173796E635F64697370617463685F325F6D6D7434645F44784478447838783478315F6633320000000000390000000200DF000000480000002A0000006D61696E5F6772617068246173796E635F64697370617463685F335F756E7061636B5F6633320000000000160000000200000000004F00000047000000696E7400000000000E00000002004F00000048000000000000000E00000002009700000048000000000000000E0000000200DF00000048000000000000006C00000004002C000000010101FB0E0D000101010100000001000001006D61746D756C2D6F726967696E616C2E6D6C6972000000000000090200180000000000000105190AC9050A76050006024A0E050A086A02AC010EE8E040024D0E2408C40824B6029901160B023812020B0001016E00000004002C000000010101FB0E0D000101010100000001000001006D61746D756C2D6F726967696E616C2E6D6C69720000000000000902B01A00000000000001050A0ACB053B48050A84053B48050AAE06023D0E02231602B3010E5C082A4002390E2402620EDA0B024F12020B0001018B00000004002C000000010101FB0E0D000101010100000001000001006D61746D756C2D6F726967696E616C2E6D6C69720000000000000902101D00000000000001050A0A081505000608E0050AF6050002E4010E050A86050038050A860500023F0E050AE808A8082408B65C2A02281608629402290E78023D0E022316EEF6023D0E0223160B022212020F000101A800000004002C000000010101FB0E0D000101010100000001000001006D61746D756C2D6F726967696E616C2E6D6C69720000000000000902802000000000000001050A0ACB051948053B064A050A0608300602410E08E802740E4008384008385C02720E8662946294629462946286624E2A4E02FB030ECC62CC62DA62DA62DA62CC6286A894023F0E24023F0E2402440EBE02440EBE02440EBE02440EBE023F0E240B024A12020B0001014952454520000000000000000000000000000000000000000000000000002300000000020900F8380000000000000000000000000000010000001200070070270000000000001100000000000000002E64796E73796D002E68617368002E64796E737472002E72656C612E64796E002E726F64617461002E65685F6672616D65002E74657874002E646174612E72656C2E726F002E64796E616D6963002E72656C726F5F70616464696E67002E64656275675F616262726576002E64656275675F696E666F002E64656275675F737472002E64656275675F7075626E616D6573002E64656275675F7075627479706573002E64656275675F6C696E65002E636F6D6D656E74002E73796D746162002E7368737472746162002E7374727461620000697265655F68616C5F65786563757461626C655F6C6962726172795F7175657279005F44594E414D494300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000B0000000200000000000000C801000000000000C801000000000000300000000000000003000000010000000800000000000000180000000000000009000000050000000200000000000000F801000000000000F80100000000000018000000000000000100000000000000040000000000000004000000000000000F0000000300000002000000000000001002000000000000100200000000000023000000000000000000000000000000010000000000000000000000000000001700000004000000020000000000000038020000000000003802000000000000880200000000000001000000000000000800000000000000180000000000000021000000010000001200000000000000C004000000000000C00400000000000060020000000000000000000000000000100000000000000000000000000000002900000001000000020000000000000020070000000000002007000000000000E0000000000000000000000000000000080000000000000000000000000000003300000001000000060000000000000000180000000000000008000000000000810F0000000000000000000000000000100000000000000000000000000000003900000001000000030000000000000090370000000000009017000000000000680100000000000000000000000000001000000000000000000000000000000046000000060000000300000000000000F838000000000000F818000000000000C0000000000000000300000000000000080000000000000010000000000000004F000000080000000300000000000000B839000000000000B81900000000000048060000000000000000000000000000010000000000000000000000000000005E0000000100000000000000000000000000000000000000B81900000000000050000000000000000000000000000000010000000000000000000000000000006C0000000100000000000000000000000000000000000000081A00000000000027010000000000000000000000000000010000000000000000000000000000007800000001000000300000000000000000000000000000002F1B000000000000C300000000000000000000000000000001000000000000000100000000000000830000000100000000000000000000000000000000000000F21B000000000000FB00000000000000000000000000000001000000000000000000000000000000930000000100000000000000000000000000000000000000ED1C0000000000005000000000000000000000000000000001000000000000000000000000000000A300000001000000000000000000000000000000000000003D1D0000000000001D02000000000000000000000000000001000000000000000000000000000000AF00000001000000300000000000000000000000000000005A1F0000000000000600000000000000000000000000000001000000000000000100000000000000B80000000200000000000000000000000000000000000000601F0000000000004800000000000000140000000200000008000000000000001800000000000000C00000000300000000000000000000000000000000000000A81F000000000000D200000000000000000000000000000001000000000000000000000000000000CA00000003000000000000000000000000000000000000007A200000000000002C00000000000000000000000000000001000000000000000000000000000000"> : vector<9704xi8>
    vm.global.ref private mutable @__device_0_executable_0_matmul_original_linked : !vm.ref<!hal.executable>
    vm.rodata private @_utf8_tensor_3C6209B4FD120BDC {alignment = 1 : i64} "tensor"
    vm.func private @main_graph$async(%arg0: !vm.ref<!hal.buffer_view>, %arg1: !vm.ref<!hal.buffer_view>, %arg2: !vm.ref<!hal.fence>, %arg3: !vm.ref<!hal.fence>) -> !vm.ref<!hal.buffer_view> attributes {inlining_policy = #util.inline.never} {
      %c2 = vm.const.i32 2
      %c13 = vm.const.i32 13
      %c28 = vm.const.i32 28
      %c3 = vm.const.i32 3
      %c32 = vm.const.i32 32
      %c-64 = vm.const.i64 -64
      %c63 = vm.const.i64 63
      %c48 = vm.const.i32 48
      %c3075 = vm.const.i32 3075
      %c16 = vm.const.i32 16
      %c553648160 = vm.const.i32 553648160
      %c1 = vm.const.i32 1
      %zero = vm.const.i32.zero
      %zero_0 = vm.const.i64.zero
      %c-1 = vm.const.i64 -1
      %c32_1 = vm.const.i64 32
      %c64 = vm.const.i64 64
      %c128 = vm.const.i64 128
      %c16_2 = vm.const.i64 16
      %c4 = vm.const.i64 4
      %c8 = vm.const.i64 8
      %c1_3 = vm.const.i64 1
      %c2_4 = vm.const.i64 2
      %__device_0 = vm.global.load.ref @__device_0 : !vm.ref<!hal.device>
      %__device_0_executable_0_matmul_original_linked = vm.global.load.ref @__device_0_executable_0_matmul_original_linked : !vm.ref<!hal.executable>
      %0 = vm.call @hal.buffer_view.dim(%arg0, %zero) {nosideeffects} : (!vm.ref<!hal.buffer_view>, i32) -> i64
      %1 = vm.call @hal.buffer_view.dim(%arg0, %c1) {nosideeffects} : (!vm.ref<!hal.buffer_view>, i32) -> i64
      %_utf8_tensor_3C6209B4FD120BDC = vm.const.ref.rodata @_utf8_tensor_3C6209B4FD120BDC : !vm.buffer
      vm.call.variadic @hal.buffer_view.assert(%arg0, %_utf8_tensor_3C6209B4FD120BDC, %c553648160, %c1, [%0, %1]) : (!vm.ref<!hal.buffer_view>, !vm.buffer, i32, i32, i64 ...)
      %2 = vm.mul.i64 %0, %c4 : i64
      %3 = vm.mul.i64 %2, %1 : i64
      %ref = vm.call @hal.buffer_view.buffer(%arg0) {nosideeffects} : (!vm.ref<!hal.buffer_view>) -> !vm.ref<!hal.buffer>
      %ref_5 = vm.call @hal.device.allocator(%__device_0) {nosideeffects} : (!vm.ref<!hal.device>) -> !vm.ref<!hal.allocator>
      vm.call @hal.buffer.assert(%ref, %_utf8_tensor_3C6209B4FD120BDC, %ref_5, %3, %c16, %c3075) : (!vm.ref<!hal.buffer>, !vm.buffer, !vm.ref<!hal.allocator>, i64, i32, i32) -> ()
      %4 = vm.call @hal.buffer_view.dim(%arg1, %zero) {nosideeffects} : (!vm.ref<!hal.buffer_view>, i32) -> i64
      %5 = vm.call @hal.buffer_view.dim(%arg1, %c1) {nosideeffects} : (!vm.ref<!hal.buffer_view>, i32) -> i64
      vm.call.variadic @hal.buffer_view.assert(%arg1, %_utf8_tensor_3C6209B4FD120BDC, %c553648160, %c1, [%4, %5]) : (!vm.ref<!hal.buffer_view>, !vm.buffer, i32, i32, i64 ...)
      %6 = vm.mul.i64 %4, %c4 : i64
      %7 = vm.mul.i64 %6, %5 : i64
      %ref_6 = vm.call @hal.buffer_view.buffer(%arg1) {nosideeffects} : (!vm.ref<!hal.buffer_view>) -> !vm.ref<!hal.buffer>
      vm.call @hal.buffer.assert(%ref_6, %_utf8_tensor_3C6209B4FD120BDC, %ref_5, %7, %c16, %c3075) : (!vm.ref<!hal.buffer>, !vm.buffer, !vm.ref<!hal.allocator>, i64, i32, i32) -> ()
      %ult = vm.cmp.lt.i64.u %zero_0, %0 : i64
      %8 = vm.xor.i32 %ult, %c1 : i32
      %9 = vm.sub.i64 %zero_0, %0 : i64
      %10 = vm.sub.i64 %0, %c1_3 : i64
      %11 = vm.select.i64 %8, %9, %10 : i64
      %12 = vm.div.i64.s %11, %c8 : i64
      %13 = vm.sub.i64 %zero_0, %12 : i64
      %14 = vm.add.i64 %12, %c1_3 : i64
      %15 = vm.select.i64 %8, %13, %14 : i64
      %16 = vm.mul.i64 %15, %c32_1 : i64
      %ult_7 = vm.cmp.lt.i64.u %zero_0, %5 : i64
      %17 = vm.xor.i32 %ult_7, %c1 : i32
      %18 = vm.sub.i64 %zero_0, %5 : i64
      %19 = vm.sub.i64 %5, %c1_3 : i64
      %20 = vm.select.i64 %17, %18, %19 : i64
      %21 = vm.div.i64.s %20, %c4 : i64
      %22 = vm.sub.i64 %zero_0, %21 : i64
      %23 = vm.add.i64 %21, %c1_3 : i64
      %24 = vm.select.i64 %17, %22, %23 : i64
      %25 = vm.mul.i64 %24, %c16_2 : i64
      %26 = vm.mul.i64 %15, %c128 : i64
      %27 = vm.mul.i64 %2, %5 : i64
      %ref_8 = vm.call @hal.fence.create(%__device_0, %zero) : (!vm.ref<!hal.device>, i32) -> !vm.ref<!hal.fence>
      %ref_9 = vm.call @hal.device.queue.alloca(%__device_0, %c-1, %arg2, %ref_8, %zero, %c48, %c3075, %27) : (!vm.ref<!hal.device>, i64, !vm.ref<!hal.fence>, !vm.ref<!hal.fence>, i32, i32, i32, i64) -> !vm.ref<!hal.buffer>
      %28 = vm.fma.i64 %16, %1, %c63 : i64
      %29 = vm.and.i64 %28, %c-64 : i64
      %30 = vm.fma.i64 %25, %4, %c63 : i64
      %31 = vm.and.i64 %30, %c-64 : i64
      %32 = vm.add.i64 %29, %31 : i64
      %33 = vm.fma.i64 %26, %24, %32 : i64
      %ref_10 = vm.call @hal.fence.create(%__device_0, %zero) : (!vm.ref<!hal.device>, i32) -> !vm.ref<!hal.fence>
      %ref_11 = vm.call @hal.device.queue.alloca(%__device_0, %c-1, %arg2, %ref_10, %zero, %c48, %c3075, %33) : (!vm.ref<!hal.device>, i64, !vm.ref<!hal.fence>, !vm.ref<!hal.fence>, i32, i32, i32, i64) -> !vm.ref<!hal.buffer>
      %ref_12 = vm.call.variadic @hal.fence.join([%ref_8, %ref_10]) {nosideeffects} : (!vm.ref<!hal.fence> ...) -> !vm.ref<!hal.fence>
      %34 = vm.trunc.i64.i32 %0 : i64 -> i32
      %35 = vm.shr.i64.u %0, %c32 : i64
      %36 = vm.trunc.i64.i32 %35 : i64 -> i32
      %37 = vm.trunc.i64.i32 %15 : i64 -> i32
      %38 = vm.shr.i64.u %15, %c32 : i64
      %39 = vm.trunc.i64.i32 %38 : i64 -> i32
      %40 = vm.trunc.i64.i32 %1 : i64 -> i32
      %41 = vm.shr.i64.u %1, %c32 : i64
      %42 = vm.trunc.i64.i32 %41 : i64 -> i32
      %43 = vm.trunc.i64.i32 %29 : i64 -> i32
      %44 = vm.shr.i64.u %29, %c32 : i64
      %45 = vm.trunc.i64.i32 %44 : i64 -> i32
      %46 = vm.trunc.i64.i32 %5 : i64 -> i32
      %47 = vm.shr.i64.u %5, %c32 : i64
      %48 = vm.trunc.i64.i32 %47 : i64 -> i32
      %49 = vm.trunc.i64.i32 %24 : i64 -> i32
      %50 = vm.shr.i64.u %24, %c32 : i64
      %51 = vm.trunc.i64.i32 %50 : i64 -> i32
      %52 = vm.trunc.i64.i32 %4 : i64 -> i32
      %53 = vm.shr.i64.u %4, %c32 : i64
      %54 = vm.trunc.i64.i32 %53 : i64 -> i32
      %55 = vm.trunc.i64.i32 %32 : i64 -> i32
      %56 = vm.shr.i64.u %32, %c32 : i64
      %57 = vm.trunc.i64.i32 %56 : i64 -> i32
      %ref_13 = vm.call @hal.command_buffer.create(%__device_0, %c1, %c3, %c-1, %zero) : (!vm.ref<!hal.device>, i32, i32, i64, i32) -> !vm.ref<!hal.command_buffer>
      %slt = vm.cmp.lt.i64.s %zero_0, %15 : i64
      %58 = vm.xor.i32 %slt, %c1 : i32
      %59 = vm.sub.i64 %zero_0, %15 : i64
      %60 = vm.sub.i64 %15, %c1_3 : i64
      %61 = vm.select.i64 %58, %59, %60 : i64
      %62 = vm.div.i64.s %61, %c8 : i64
      %63 = vm.sub.i64 %zero_0, %62 : i64
      %64 = vm.add.i64 %62, %c1_3 : i64
      %65 = vm.select.i64 %58, %63, %64 : i64
      %ult_14 = vm.cmp.lt.i64.u %zero_0, %1 : i64
      %66 = vm.xor.i32 %ult_14, %c1 : i32
      %67 = vm.sub.i64 %zero_0, %1 : i64
      %68 = vm.sub.i64 %1, %c1_3 : i64
      %69 = vm.select.i64 %66, %67, %68 : i64
      %70 = vm.div.i64.s %69, %c64 : i64
      %71 = vm.sub.i64 %zero_0, %70 : i64
      %72 = vm.add.i64 %70, %c1_3 : i64
      %73 = vm.select.i64 %66, %71, %72 : i64
      %74 = vm.trunc.i64.i32 %73 : i64 -> i32
      %75 = vm.trunc.i64.i32 %65 : i64 -> i32
      vm.call.variadic @hal.command_buffer.dispatch(%ref_13, %__device_0_executable_0_matmul_original_linked, %zero, %74, %75, %c1, %zero_0, [%34, %36, %37, %39, %40, %42], [(%zero, %zero, %ref, %zero_0, %3), (%zero, %zero, %ref_11, %zero_0, %33)]) : (!vm.ref<!hal.command_buffer>, !vm.ref<!hal.executable>, i32, i32, i32, i32, i64, i32 ..., tuple<i32, i32, !vm.ref<!hal.buffer>, i64, i64> ...)
      %slt_15 = vm.cmp.lt.i64.s %zero_0, %24 : i64
      %76 = vm.xor.i32 %slt_15, %c1 : i32
      %77 = vm.sub.i64 %zero_0, %24 : i64
      %78 = vm.sub.i64 %24, %c1_3 : i64
      %79 = vm.select.i64 %76, %77, %78 : i64
      %80 = vm.div.i64.s %79, %c64 : i64
      %81 = vm.sub.i64 %zero_0, %80 : i64
      %82 = vm.add.i64 %80, %c1_3 : i64
      %83 = vm.select.i64 %76, %81, %82 : i64
      %ult_16 = vm.cmp.lt.i64.u %zero_0, %4 : i64
      %84 = vm.xor.i32 %ult_16, %c1 : i32
      %85 = vm.sub.i64 %zero_0, %4 : i64
      %86 = vm.sub.i64 %4, %c1_3 : i64
      %87 = vm.select.i64 %84, %85, %86 : i64
      %88 = vm.div.i64.s %87, %c16_2 : i64
      %89 = vm.sub.i64 %zero_0, %88 : i64
      %90 = vm.add.i64 %88, %c1_3 : i64
      %91 = vm.select.i64 %84, %89, %90 : i64
      %92 = vm.trunc.i64.i32 %91 : i64 -> i32
      %93 = vm.trunc.i64.i32 %83 : i64 -> i32
      vm.call.variadic @hal.command_buffer.dispatch(%ref_13, %__device_0_executable_0_matmul_original_linked, %c1, %92, %93, %c1, %zero_0, [%43, %45, %46, %48, %49, %51, %52, %54], [(%zero, %zero, %ref_6, %zero_0, %7), (%zero, %zero, %ref_11, %zero_0, %33)]) : (!vm.ref<!hal.command_buffer>, !vm.ref<!hal.executable>, i32, i32, i32, i32, i64, i32 ..., tuple<i32, i32, !vm.ref<!hal.buffer>, i64, i64> ...)
      vm.call @hal.command_buffer.execution_barrier(%ref_13, %c28, %c13, %zero) : (!vm.ref<!hal.command_buffer>, i32, i32, i32) -> ()
      %94 = vm.div.i64.s %61, %c2_4 : i64
      %95 = vm.sub.i64 %zero_0, %94 : i64
      %96 = vm.add.i64 %94, %c1_3 : i64
      %97 = vm.select.i64 %58, %95, %96 : i64
      %98 = vm.div.i64.s %79, %c4 : i64
      %99 = vm.sub.i64 %zero_0, %98 : i64
      %100 = vm.add.i64 %98, %c1_3 : i64
      %101 = vm.select.i64 %76, %99, %100 : i64
      %102 = vm.trunc.i64.i32 %101 : i64 -> i32
      %103 = vm.trunc.i64.i32 %97 : i64 -> i32
      vm.call.variadic @hal.command_buffer.dispatch(%ref_13, %__device_0_executable_0_matmul_original_linked, %c2, %102, %103, %c1, %zero_0, [%43, %45, %55, %57, %40, %42, %52, %54, %37, %39, %49, %51], [(%zero, %zero, %ref_11, %zero_0, %33), (%zero, %zero, %ref_11, %zero_0, %33)]) : (!vm.ref<!hal.command_buffer>, !vm.ref<!hal.executable>, i32, i32, i32, i32, i64, i32 ..., tuple<i32, i32, !vm.ref<!hal.buffer>, i64, i64> ...)
      vm.call @hal.command_buffer.execution_barrier(%ref_13, %c28, %c13, %zero) : (!vm.ref<!hal.command_buffer>, i32, i32, i32) -> ()
      %104 = vm.div.i64.s %11, %c64 : i64
      %105 = vm.sub.i64 %zero_0, %104 : i64
      %106 = vm.add.i64 %104, %c1_3 : i64
      %107 = vm.select.i64 %8, %105, %106 : i64
      %108 = vm.div.i64.s %20, %c64 : i64
      %109 = vm.sub.i64 %zero_0, %108 : i64
      %110 = vm.add.i64 %108, %c1_3 : i64
      %111 = vm.select.i64 %17, %109, %110 : i64
      %112 = vm.trunc.i64.i32 %111 : i64 -> i32
      %113 = vm.trunc.i64.i32 %107 : i64 -> i32
      vm.call.variadic @hal.command_buffer.dispatch(%ref_13, %__device_0_executable_0_matmul_original_linked, %c3, %112, %113, %c1, %zero_0, [%55, %57, %37, %39, %49, %51, %34, %36, %46, %48], [(%zero, %zero, %ref_11, %zero_0, %33), (%zero, %zero, %ref_9, %zero_0, %27)]) : (!vm.ref<!hal.command_buffer>, !vm.ref<!hal.executable>, i32, i32, i32, i32, i64, i32 ..., tuple<i32, i32, !vm.ref<!hal.buffer>, i64, i64> ...)
      vm.call @hal.command_buffer.execution_barrier(%ref_13, %c28, %c13, %zero) : (!vm.ref<!hal.command_buffer>, i32, i32, i32) -> ()
      vm.call @hal.command_buffer.finalize(%ref_13) : (!vm.ref<!hal.command_buffer>) -> ()
      %ref_17 = vm.call @hal.fence.create(%__device_0, %zero) : (!vm.ref<!hal.device>, i32) -> !vm.ref<!hal.fence>
      vm.call.variadic @hal.device.queue.execute(%__device_0, %c-1, %ref_12, %ref_17, [%ref_13]) : (!vm.ref<!hal.device>, i64, !vm.ref<!hal.fence>, !vm.ref<!hal.fence>, !vm.ref<!hal.command_buffer> ...)
      vm.call @hal.device.queue.dealloca(%__device_0, %c-1, %ref_17, %arg3, %ref_11) : (!vm.ref<!hal.device>, i64, !vm.ref<!hal.fence>, !vm.ref<!hal.fence>, !vm.ref<!hal.buffer>) -> ()
      %ref_18 = vm.call.variadic @hal.buffer_view.create(%ref_9, %zero_0, %27, %c553648160, %c1, [%0, %5]) {nosideeffects} : (!vm.ref<!hal.buffer>, i64, i64, i32, i32, i64 ...) -> !vm.ref<!hal.buffer_view>
      vm.return %ref_18 : !vm.ref<!hal.buffer_view>
    }
    vm.export @main_graph$async attributes {iree.abi.model = "coarse-fences", iree.abi.stub}
    vm.import private @hal.buffer.assert(%buffer : !vm.ref<!hal.buffer>, %message : !vm.buffer, %allocator : !vm.ref<!hal.allocator>, %minimum_length : i64, %memory_types : i32, %buffer_usage : i32)
    vm.import private @hal.buffer_view.create(%buffer : !vm.ref<!hal.buffer>, %source_offset : i64, %source_length : i64, %element_type : i32, %encoding_type : i32, %shape : i64 ...) -> !vm.ref<!hal.buffer_view> attributes {nosideeffects}
    vm.import private @hal.buffer_view.assert(%buffer_view : !vm.ref<!hal.buffer_view>, %message : !vm.buffer, %element_type : i32, %encoding_type : i32, %shape : i64 ...)
    vm.import private @hal.buffer_view.buffer(%buffer_view : !vm.ref<!hal.buffer_view>) -> !vm.ref<!hal.buffer> attributes {nosideeffects}
    vm.import private @hal.buffer_view.dim(%buffer_view : !vm.ref<!hal.buffer_view>, %index : i32) -> i64 attributes {nosideeffects}
    vm.import private @hal.command_buffer.create(%device : !vm.ref<!hal.device>, %modes : i32, %command_categories : i32, %queue_affinity : i64, %binding_capacity : i32) -> !vm.ref<!hal.command_buffer> attributes {minimum_version = 5 : i32}
    vm.import private @hal.command_buffer.finalize(%command_buffer : !vm.ref<!hal.command_buffer>)
    vm.import private @hal.command_buffer.execution_barrier(%command_buffer : !vm.ref<!hal.command_buffer>, %source_stage_mask : i32, %target_stage_mask : i32, %flags : i32)
    vm.import private @hal.command_buffer.dispatch(%command_buffer : !vm.ref<!hal.command_buffer>, %executable : !vm.ref<!hal.executable>, %entry_point : i32, %workgroup_x : i32, %workgroup_y : i32, %workgroup_z : i32, %flags : i64, %constants : i32 ..., %bindings : tuple<i32, i32, !vm.ref<!hal.buffer>, i64, i64> ...)
    vm.import private @hal.device.allocator(%device : !vm.ref<!hal.device>) -> !vm.ref<!hal.allocator> attributes {nosideeffects}
    vm.import private @hal.device.query.i64(%device : !vm.ref<!hal.device>, %category : !vm.buffer, %key : !vm.buffer) -> (i32, i64) attributes {nosideeffects}
    vm.import private @hal.device.queue.alloca(%device : !vm.ref<!hal.device>, %queue_affinity : i64, %wait_fence : !vm.ref<!hal.fence>, %signal_fence : !vm.ref<!hal.fence>, %pool : i32, %memory_types : i32, %buffer_usage : i32, %allocation_size : i64) -> !vm.ref<!hal.buffer>
    vm.import private @hal.device.queue.dealloca(%device : !vm.ref<!hal.device>, %queue_affinity : i64, %wait_fence : !vm.ref<!hal.fence>, %signal_fence : !vm.ref<!hal.fence>, %buffer : !vm.ref<!hal.buffer>)
    vm.import private @hal.device.queue.execute(%device : !vm.ref<!hal.device>, %queue_affinity : i64, %wait_fence : !vm.ref<!hal.fence>, %signal_fence : !vm.ref<!hal.fence>, %command_buffers : !vm.ref<!hal.command_buffer> ...)
    vm.import private @hal.devices.count() -> i32 attributes {nosideeffects}
    vm.import private @hal.devices.get(%index : i32) -> !vm.ref<!hal.device> attributes {nosideeffects}
    vm.import private @hal.executable.create(%device : !vm.ref<!hal.device>, %executable_format : !vm.buffer, %executable_data : !vm.buffer, %constants : !vm.buffer) -> !vm.ref<!hal.executable> attributes {nosideeffects}
    vm.import private @hal.fence.create(%device : !vm.ref<!hal.device>, %flags : i32) -> !vm.ref<!hal.fence>
    vm.import private @hal.fence.join(%fences : !vm.ref<!hal.fence> ...) -> !vm.ref<!hal.fence> attributes {nosideeffects}
    vm.import private @hal.fence.await(%timeout_millis : i32, %fences : !vm.ref<!hal.fence> ...) -> i32 attributes {vm.yield}
    vm.func private @main_graph(%arg0: !vm.ref<!hal.buffer_view>, %arg1: !vm.ref<!hal.buffer_view>) -> !vm.ref<!hal.buffer_view> {
      %null = vm.const.ref.zero : !vm.ref<!hal.fence>
      %c-1 = vm.const.i32 -1
      %zero = vm.const.i32.zero
      %ref = vm.call @hal.devices.get(%zero) {nosideeffects} : (i32) -> !vm.ref<!hal.device>
      %ref_0 = vm.call @hal.fence.create(%ref, %zero) : (!vm.ref<!hal.device>, i32) -> !vm.ref<!hal.fence>
      %ref_1 = vm.call @main_graph$async(%arg0, %arg1, %null, %ref_0) : (!vm.ref<!hal.buffer_view>, !vm.ref<!hal.buffer_view>, !vm.ref<!hal.fence>, !vm.ref<!hal.fence>) -> !vm.ref<!hal.buffer_view>
      %0 = vm.call.variadic @hal.fence.await(%c-1, [%ref_0]) : (i32, !vm.ref<!hal.fence> ...) -> i32
      vm.return %ref_1 : !vm.ref<!hal.buffer_view>
    }
    vm.export @main_graph attributes {iree.abi.stub}
    vm.export @__init
    vm.func private @__init() {
      %c1 = vm.const.i32 1
      %null = vm.const.ref.zero : !vm.buffer
      %c-1 = vm.const.i64 -1
      %c14 = vm.const.i32 14
      %c18 = vm.const.i32 18
      %zero = vm.const.i32.zero
      %zero_0 = vm.const.i64.zero
      %c1_1 = vm.const.i64 1
      %null_2 = vm.const.ref.zero : !vm.ref<!hal.device>
      %0 = vm.call @hal.devices.count() {nosideeffects} : () -> i32
      %1 = vm.ext.i32.i64.s %0 : i32 -> i64
      vm.br ^bb1(%zero_0, %zero_0, %null_2 : i64, i64, !vm.ref<!hal.device>)
    ^bb1(%2: i64, %3: i64, %4: !vm.ref<!hal.device>):  // 2 preds: ^bb0, ^bb4
      %rnz = vm.cmp.nz.ref %4 : !vm.ref<!hal.device>
      %5 = vm.xor.i32 %rnz, %c1 : i32
      %slt = vm.cmp.lt.i64.s %2, %1 : i64
      %6 = vm.and.i32 %5, %slt : i32
      vm.cond_br %6, ^bb2, ^bb5
    ^bb2:  // pred: ^bb1
      %7 = vm.trunc.i64.i32 %2 : i64 -> i32
      %ref = vm.call @hal.devices.get(%7) {nosideeffects} : (i32) -> !vm.ref<!hal.device>
      %_utf8_hal_device_id_C1DCB7DBC4F49AE6 = vm.const.ref.rodata @_utf8_hal_device_id_C1DCB7DBC4F49AE6 : !vm.buffer
      %_utf8_local_3D3B5147158B235A = vm.const.ref.rodata @_utf8_local_3D3B5147158B235A : !vm.buffer
      %8:2 = vm.call @hal.device.query.i64(%ref, %_utf8_hal_device_id_C1DCB7DBC4F49AE6, %_utf8_local_3D3B5147158B235A) {nosideeffects} : (!vm.ref<!hal.device>, !vm.buffer, !vm.buffer) -> (i32, i64)
      %nz = vm.cmp.nz.i64 %8#1 : i64
      %9 = vm.select.i32 %8#0, %nz, %zero : i32
      vm.cond_br %9, ^bb3, ^bb4(%zero : i32)
    ^bb3:  // pred: ^bb2
      %_utf8_hal_executable_format_EAB228F999C2D3A1 = vm.const.ref.rodata @_utf8_hal_executable_format_EAB228F999C2D3A1 : !vm.buffer
      %_utf8_embedded_elf_x86_64_9FD8733DA4A6F228 = vm.const.ref.rodata @_utf8_embedded_elf_x86_64_9FD8733DA4A6F228 : !vm.buffer
      %10:2 = vm.call @hal.device.query.i64(%ref, %_utf8_hal_executable_format_EAB228F999C2D3A1, %_utf8_embedded_elf_x86_64_9FD8733DA4A6F228) {nosideeffects} : (!vm.ref<!hal.device>, !vm.buffer, !vm.buffer) -> (i32, i64)
      %nz_3 = vm.cmp.nz.i64 %10#1 : i64
      %11 = vm.select.i32 %10#0, %nz_3, %zero : i32
      vm.br ^bb4(%11 : i32)
    ^bb4(%12: i32):  // 2 preds: ^bb2, ^bb3
      %eq = vm.cmp.eq.i64 %3, %zero_0 : i64
      %13 = vm.select.i64 %12, %c1_1, %zero_0 : i64
      %14 = vm.add.i64 %3, %13 : i64
      %15 = vm.and.i32 %12, %eq : i32
      %ref_4 = vm.select.ref %15, %ref, %null_2 : !vm.ref<!hal.device>
      %16 = vm.add.i64 %2, %c1_1 : i64
      vm.br ^bb1(%16, %14, %ref_4 : i64, i64, !vm.ref<!hal.device>)
    ^bb5:  // pred: ^bb1
      vm.cond_br %5, ^bb6, ^bb7
    ^bb6:  // pred: ^bb5
      vm.fail %c18, "HAL device `__device_0` not found or unavailable: #hal.device.target<\22local\22, [#hal.executable.target<\22llvm-cpu\22, \22embedded-elf-x86_64\22, {cpu = \22\22, cpu_features = \22\22, data_layout = \22e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128\22, native_vector_size = 16 : i64, target_triple = \22x86_64-unknown-unknown-eabi-elf\22}>]>"
    ^bb7:  // pred: ^bb5
      %_utf8_hal_executable_format_EAB228F999C2D3A1_5 = vm.const.ref.rodata @_utf8_hal_executable_format_EAB228F999C2D3A1 : !vm.buffer
      %_utf8_embedded_elf_x86_64_9FD8733DA4A6F228_6 = vm.const.ref.rodata @_utf8_embedded_elf_x86_64_9FD8733DA4A6F228 : !vm.buffer
      %17:2 = vm.call @hal.device.query.i64(%4, %_utf8_hal_executable_format_EAB228F999C2D3A1_5, %_utf8_embedded_elf_x86_64_9FD8733DA4A6F228_6) {nosideeffects} : (!vm.ref<!hal.device>, !vm.buffer, !vm.buffer) -> (i32, i64)
      %nz_7 = vm.cmp.nz.i64 %17#1 : i64
      %18 = vm.select.i32 %17#0, %nz_7, %zero : i32
      %19 = vm.select.i64 %18, %zero_0, %c-1 : i64
      %eq_8 = vm.cmp.eq.i64 %19, %zero_0 : i64
      vm.global.store.ref %4, @__device_0 : !vm.ref<!hal.device>
      vm.cond_br %eq_8, ^bb8, ^bb9
    ^bb8:  // pred: ^bb7
      %matmul_original_linked_embedded_elf_x86_64 = vm.const.ref.rodata @matmul_original_linked_embedded_elf_x86_64 : !vm.buffer
      %ref_9 = vm.call @hal.executable.create(%4, %_utf8_embedded_elf_x86_64_9FD8733DA4A6F228_6, %matmul_original_linked_embedded_elf_x86_64, %null) {nosideeffects} : (!vm.ref<!hal.device>, !vm.buffer, !vm.buffer, !vm.buffer) -> !vm.ref<!hal.executable>
      vm.global.store.ref %ref_9, @__device_0_executable_0_matmul_original_linked : !vm.ref<!hal.executable>
      vm.return
    ^bb9:  // pred: ^bb7
      vm.fail %c14, "HAL device `__device_0` does not support any variant of executable `matmul_original_linked`; available formats: [embedded-elf-x86_64]"
    }
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant