{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,27]],"date-time":"2026-02-27T03:48:24Z","timestamp":1772164104926,"version":"3.50.1"},"publisher-location":"New York, NY, USA","reference-count":72,"publisher":"ACM","license":[{"start":{"date-parts":[[2018,1,26]],"date-time":"2018-01-26T00:00:00Z","timestamp":1516924800000},"content-version":"vor","delay-in-days":365,"URL":"http:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["1314547,1533644"],"award-info":[{"award-number":["1314547,1533644"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"name":"Intelligence Advanced Research Projects Activity","award":["D16PC00002"],"award-info":[{"award-number":["D16PC00002"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":[],"published-print":{"date-parts":[[2017,1,26]]},"DOI":"10.1145\/3018743.3018758","type":"proceedings-article","created":{"date-parts":[[2017,1,27]],"date-time":"2017-01-27T13:41:04Z","timestamp":1485524464000},"page":"249-265","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":33,"title":["Tapir"],"prefix":"10.1145","author":[{"given":"Tao B.","family":"Schardl","sequence":"first","affiliation":[{"name":"Massachusetts Institute of Technology, Cambridge, MA, USA"}]},{"given":"William S.","family":"Moses","sequence":"additional","affiliation":[{"name":"Massachusetts Institute of Technology, Cambridge, MA, USA"}]},{"given":"Charles E.","family":"Leiserson","sequence":"additional","affiliation":[{"name":"Massachusetts Institute of Technology, Cambridge, MA, USA"}]}],"member":"320","published-online":{"date-parts":[[2017,1,26]]},"reference":[{"key":"e_1_3_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/1229428.1229471"},{"key":"e_1_3_2_1_2_1","volume-title":"Compilers: Principles, Techniques, and Tools","author":"Aho A. V.","year":"2006","unstructured":"A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, second edition, 2006."},{"key":"e_1_3_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-48294-6_2"},{"key":"e_1_3_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/277651.277678"},{"key":"e_1_3_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2008.105"},{"key":"e_1_3_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/PACT.2009.32"},{"key":"e_1_3_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1109\/PACT.2013.6618794"},{"key":"e_1_3_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/324133.324234"},{"key":"e_1_3_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1006\/jpdc.1996.0107"},{"key":"e_1_3_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1375581.1375591"},{"key":"e_1_3_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/2093157.2093165"},{"key":"e_1_3_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1109\/PACT.2015.44"},{"key":"e_1_3_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/1048935.1050159"},{"key":"e_1_3_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1007\/s002240000120"},{"key":"e_1_3_2_1_15_1","first-page":"1706","volume-title":"Encyclopedia of Parallel Computing","author":"Fineman J. T.","year":"2011","unstructured":"J. T. Fineman and C. E. Leiserson. Race detectors for Cilk and Cilk++ programs. In D. Padua, editor, Encyclopedia of Parallel Computing, pages 1706--1719. 2011."},{"key":"e_1_3_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277725"},{"key":"e_1_3_2_1_17_1","volume-title":"new features, and fixes.","author":"Team GCC","year":"2014","unstructured":"GCC Team. GCC 4.9 release series changes, new features, and fixes. Available at https:\/\/gcc.gnu.org\/gcc-4.9\/ changes.html, 2014."},{"key":"e_1_3_2_1_18_1","volume-title":"GOMP -- an OpenMP implementation for GCC.","author":"Team GCC","year":"2015","unstructured":"GCC Team. GOMP -- an OpenMP implementation for GCC. Available at https:\/\/gcc.gnu.org\/projects\/gomp\/, 2015."},{"key":"e_1_3_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/155332.155349"},{"key":"e_1_3_2_1_20_1","doi-asserted-by":"crossref","unstructured":"C. A. R. Hoare. Algorithm 64: Quicksort. CACM 4(7):321 1961. ISSN 0001-0782.","DOI":"10.1145\/366622.366644"},{"key":"e_1_3_2_1_21_1","first-page":"324396","author":"Intel Corporation","year":"2010","unstructured":"Intel Corporation. Intel Cilk Plus Language Specification, 2010. Document Number: 324396-001US. Available from http:\/\/software.intel.com\/sites\/products\/cilk-plus\/cilk_plus_language_specification.pdf.","journal-title":"Intel Cilk Plus Language Specification"},{"key":"e_1_3_2_1_22_1","first-page":"324512","author":"Intel Corporation","year":"2010","unstructured":"Intel Corporation. Intel Cilk Plus Application Binary Interface Specification, 2010. Document Number: 324512-001US. Available from https:\/\/software.intel.com\/sites\/products\/cilk-plus\/cilk_plus_abi.pdf.","journal-title":"Intel Cilk Plus Application Binary Interface Specification"},{"key":"e_1_3_2_1_23_1","volume-title":"Available from http:\/\/cilkplus.github.io\/","author":"Intel Corporation","year":"2013","unstructured":"Intel Corporation. Cilk Plus\/LLVM. Available from http:\/\/cilkplus.github.io\/, 2013."},{"key":"e_1_3_2_1_24_1","unstructured":"Intel Corporation. Intel C++ Compiler 16.0 User and Reference Guide 2015."},{"key":"e_1_3_2_1_25_1","volume-title":"Intel Cilk Plus samples. Available from https:\/\/software.intel.com\/en-us\/codesamples\/intel-compiler\/intel-compiler-features\/ intelcilkplus","author":"Intel Corporation","year":"2016","unstructured":"Intel Corporation. Intel Cilk Plus samples. Available from https:\/\/software.intel.com\/en-us\/codesamples\/intel-compiler\/intel-compiler-features\/ intelcilkplus, 2016."},{"key":"e_1_3_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/1926385.1926457"},{"key":"e_1_3_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1109\/PACT.2013.6618792"},{"key":"e_1_3_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.5555\/100511"},{"key":"e_1_3_2_1_29_1","unstructured":"D. Khaldi P. Jouvelot C. Ancourt and F. Irigoin. SPIRE a sequential to parallel intermediate representation extension. Technical report Technical Report CRI\/A-487 MINES ParisTech 2012."},{"key":"e_1_3_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/2833157.2833158"},{"key":"e_1_3_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/229542.229545"},{"key":"e_1_3_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2004.1281665"},{"key":"e_1_3_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/2809808"},{"key":"e_1_3_2_1_34_1","first-page":"114","volume-title":"LCPC","author":"Lee J.","year":"1997","unstructured":"J. Lee, S. P. Midkiff, and D. A. Padua. Concurrent static single assignment form and constant propagation for explicitly parallel programs. In LCPC, pages 114--130, 1997."},{"key":"e_1_3_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11227-010-0405-3"},{"key":"e_1_3_2_1_36_1","volume-title":"September","author":"Developer List LLVM","year":"2012","unstructured":"LLVM Developer List. LLVMdev discussions on Intel OpenMP proposal. Available from http: \/\/lists.llvm.org\/pipermail\/llvm-dev\/2012-September\/053861.html, September 2012."},{"key":"e_1_3_2_1_37_1","volume-title":"September","author":"Developer List LLVM","year":"2012","unstructured":"LLVM Developer List. LLVMdev Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.). Available from http:\/\/lists.llvm.org\/pipermail\/llvm-dev\/2012September\/053792.html, September 2012."},{"key":"e_1_3_2_1_38_1","volume-title":"September","author":"Developer List LLVM","year":"2012","unstructured":"LLVM Developer List. LLVMdev discussions on OpenCL SPIR proposal. Available from http:\/\/lists.llvm.org\/pipermail\/llvm-dev\/2012-September\/053293.html, September 2012."},{"key":"e_1_3_2_1_39_1","volume-title":"March","author":"Developer List LLVM","year":"2015","unstructured":"LLVM Developer List. LLVMdev discussions on parallel IR. Available from http:\/\/lists.llvm.org\/pipermail\/llvm-dev\/2015-March\/083314.html, March 2015."},{"key":"e_1_3_2_1_40_1","volume-title":"OpenMP\u00ae: Support for the OpenMP language.","author":"Project LLVM","year":"2015","unstructured":"LLVM Project. OpenMP\u00ae: Support for the OpenMP language. Available at http:\/\/openmp.llvm.org\/, 2015."},{"key":"e_1_3_2_1_41_1","volume-title":"LLVM Language Reference Manual","author":"Project LLVM","year":"2015","unstructured":"LLVM Project. LLVM Language Reference Manual, 2015. Available from http:\/\/llvm.org\/docs\/LangRef.html."},{"key":"e_1_3_2_1_42_1","volume-title":"LLVM's Analysis and Transform Passes","author":"Project LLVM","year":"2015","unstructured":"LLVM Project. LLVM's Analysis and Transform Passes, 2015. Available from http:\/\/llvm.org\/docs\/Passes.html."},{"key":"e_1_3_2_1_43_1","first-page":"340","volume-title":"UAI","author":"Low Y.","year":"2010","unstructured":"Y. Low, J. Gonzalez, A. Kyrola, D. Bickson, C. Guestrin, and J. M. Hellerstein. GraphLab: A new framework for parallel machine learning. In UAI, pages 340--349, 2010."},{"key":"e_1_3_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.14778\/2212351.2212354"},{"key":"e_1_3_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/1807167.1807184"},{"key":"e_1_3_2_1_46_1","volume-title":"Structured Parallel Programming: Patterns for Efficient Computation","author":"McCool M.","year":"2012","unstructured":"M. McCool, A. D. Robison, and J. Reinders. Structured Parallel Programming: Patterns for Efficient Computation. Elsevier Science, 2012."},{"key":"e_1_3_2_1_47_1","first-page":"105","volume-title":"ICPP","author":"Midkiff S. P.","year":"1990","unstructured":"S. P. Midkiff and D. A. Padua. Issues in the optimization of parallel programs. In ICPP, pages 105--113, 1990."},{"key":"e_1_3_2_1_48_1","volume-title":"Morgan Kaufmann","author":"Muchnick S. S.","year":"1997","unstructured":"S. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997."},{"key":"e_1_3_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1109\/PACT.2009.28"},{"key":"e_1_3_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/130616.130623"},{"key":"e_1_3_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/2517349.2522739"},{"key":"e_1_3_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/2541940.2541964"},{"key":"e_1_3_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICPP.1998.708506"},{"key":"e_1_3_2_1_54_1","volume-title":"Version 4.0","author":"Architecture Review Board MP","year":"2013","unstructured":"OpenMP Architecture Review Board. OpenMP Application Program Interface, Version 4.0, July 2013. Available from http:\/\/www.openmp.org\/mp-documents\/ OpenMP4.0.0.pdf."},{"key":"e_1_3_2_1_55_1","volume-title":"CPC","author":"Pop A.","year":"2010","unstructured":"A. Pop and A. Cohen. Preserving high-level semantics of parallel programming annotations through the compilation flow of optimizing compilers. In CPC, 2010. URL https:\/\/hal.inria.fr\/inria-00551518."},{"key":"e_1_3_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/304065.304106"},{"key":"e_1_3_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/349299.349327"},{"key":"e_1_3_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/596980.596982"},{"key":"e_1_3_2_1_59_1","first-page":"94","volume-title":"LCPC","author":"Sarkar V.","year":"1998","unstructured":"V. Sarkar. Analysis and optimization of explicitly parallel programs using the parallel program graph representation. In LCPC, pages 94--113, 1998."},{"key":"e_1_3_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-57659-2_36"},{"key":"e_1_3_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/2755573.2755603"},{"key":"e_1_3_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/2442516.2442530"},{"key":"e_1_3_2_1_63_1","doi-asserted-by":"publisher","DOI":"10.1145\/2312005.2312018"},{"key":"e_1_3_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.1109\/DCC.2015.8"},{"key":"e_1_3_2_1_65_1","unstructured":"H. Srinivasan and D. Grunwald. An efficient construction of parallel static single assignment form for structured parallel programs. Technical report Technical Report CU-CS-564--91 University of Colorado at Boulder 1991."},{"key":"e_1_3_2_1_66_1","first-page":"405","volume-title":"LCPC","author":"Srinivasan H.","year":"1991","unstructured":"H. Srinivasan and M. Wolfe. Analyzing programs with explicit parallelism. In LCPC, pages 405--419, 1991."},{"key":"e_1_3_2_1_67_1","doi-asserted-by":"publisher","DOI":"10.1145\/158511.158644"},{"key":"e_1_3_2_1_68_1","volume-title":"Using the GNU Compiler Collection (for GCC version 6.1.0)","author":"Stallman R. M.","year":"2016","unstructured":"R. M. Stallman and the GCC Developer Community. Using the GNU Compiler Collection (for GCC version 6.1.0). Free Software Foundation, 2016."},{"key":"e_1_3_2_1_69_1","doi-asserted-by":"publisher","DOI":"10.5555\/2543987"},{"key":"e_1_3_2_1_70_1","doi-asserted-by":"publisher","DOI":"10.1145\/2935764.2935801"},{"key":"e_1_3_2_1_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/2676726.2676995"},{"key":"e_1_3_2_1_72_1","doi-asserted-by":"publisher","DOI":"10.1145\/2095050.2095103"}],"event":{"name":"PPoPP '17: 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming","location":"Austin Texas USA","acronym":"PPoPP '17","sponsor":["SIGPLAN ACM Special Interest Group on Programming Languages"]},"container-title":["Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3018743.3018758","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3018743.3018758","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3018743.3018758","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,11,18]],"date-time":"2025-11-18T09:40:24Z","timestamp":1763458824000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3018743.3018758"}},"subtitle":["Embedding Fork-Join Parallelism into LLVM's Intermediate Representation"],"short-title":[],"issued":{"date-parts":[[2017,1,26]]},"references-count":72,"alternative-id":["10.1145\/3018743.3018758","10.1145\/3018743"],"URL":"https:\/\/doi.org\/10.1145\/3018743.3018758","relation":{"is-identical-to":[{"id-type":"doi","id":"10.1145\/3155284.3018758","asserted-by":"object"}]},"subject":[],"published":{"date-parts":[[2017,1,26]]},"assertion":[{"value":"2017-01-26","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}