{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,6]],"date-time":"2026-06-06T01:17:15Z","timestamp":1780708635944,"version":"3.54.1"},"publisher-location":"New York, NY, USA","reference-count":31,"publisher":"ACM","license":[{"start":{"date-parts":[[2021,6,22]],"date-time":"2021-06-22T00:00:00Z","timestamp":1624320000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":[],"published-print":{"date-parts":[[2021,6,22]]},"DOI":"10.1145\/3459898.3463904","type":"proceedings-article","created":{"date-parts":[[2021,6,18]],"date-time":"2021-06-18T05:27:46Z","timestamp":1623994066000},"page":"39-51","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["automemcpy: a framework for automatic generation of fundamental memory operations"],"prefix":"10.1145","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-6209-6242","authenticated-orcid":false,"given":"Guillaume","family":"Chatelet","sequence":"first","affiliation":[{"name":"Google Research, France"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9404-7875","authenticated-orcid":false,"given":"Chris","family":"Kennelly","sequence":"additional","affiliation":[{"name":"Google, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Sam (Likun)","family":"Xi","sequence":"additional","affiliation":[{"name":"Google, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Ondrej","family":"Sykora","sequence":"additional","affiliation":[{"name":"Google Research, France"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Cl\u00e9ment","family":"Courbet","sequence":"additional","affiliation":[{"name":"Google Research, France"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Xinliang David","family":"Li","sequence":"additional","affiliation":[{"name":"Google, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Bruno","family":"De Backer","sequence":"additional","affiliation":[{"name":"Google Research, France"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2021,6,22]]},"reference":[{"key":"e_1_3_2_1_1_1","unstructured":"ARM. 2020. memcpy-advsimd.S. https:\/\/github.com\/ARM-software\/optimized-routines\/blob\/master\/string\/aarch64\/memcpy-advsimd.S  ARM. 2020. memcpy-advsimd.S. https:\/\/github.com\/ARM-software\/optimized-routines\/blob\/master\/string\/aarch64\/memcpy-advsimd.S"},{"key":"e_1_3_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/3307650.3322234"},{"key":"e_1_3_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2018.2841200"},{"key":"e_1_3_2_1_4_1","unstructured":"JF Bastien. 2018. Deprecating volatile. http:\/\/wg21.link\/P1152R0  JF Bastien. 2018. Deprecating volatile. http:\/\/wg21.link\/P1152R0"},{"key":"e_1_3_2_1_5_1","unstructured":"Eli Bendersky. 2011. Load-time relocation of shared libraries. https:\/\/eli.thegreenplace.net\/2011\/08\/25\/load-time-relocation-of-shared-libraries  Eli Bendersky. 2011. Load-time relocation of shared libraries. https:\/\/eli.thegreenplace.net\/2011\/08\/25\/load-time-relocation-of-shared-libraries"},{"key":"e_1_3_2_1_6_1","unstructured":"Eli Bendersky. 2011. Position Independent Code (PIC) in shared libraries. https:\/\/eli.thegreenplace.net\/2011\/11\/03\/position-independent-code-pic-in-shared-libraries  Eli Bendersky. 2011. Position Independent Code (PIC) in shared libraries. https:\/\/eli.thegreenplace.net\/2011\/11\/03\/position-independent-code-pic-in-shared-libraries"},{"key":"e_1_3_2_1_7_1","unstructured":"Eli Bendersky. 2011. Position Independent Code (PIC) in shared libraries on x64. https:\/\/eli.thegreenplace.net\/2011\/11\/11\/position-independent-code-pic-in-shared-libraries-on-x64  Eli Bendersky. 2011. Position Independent Code (PIC) in shared libraries on x64. https:\/\/eli.thegreenplace.net\/2011\/11\/11\/position-independent-code-pic-in-shared-libraries-on-x64"},{"key":"e_1_3_2_1_8_1","unstructured":"Chandler Carruth. 2015. CppCon 2015: Chandler Carruth \"Tuning C++: Benchmarks and CPUs and Compilers! Oh My!\". https:\/\/youtu.be\/nXaxk27zwlk?t=2441  Chandler Carruth. 2015. CppCon 2015: Chandler Carruth \"Tuning C++: Benchmarks and CPUs and Compilers! Oh My!\". https:\/\/youtu.be\/nXaxk27zwlk?t=2441"},{"key":"e_1_3_2_1_9_1","unstructured":"Guillaume Chatelet. 2019. [llvm-dev] [RFC][clang\/llvm] Allow efficient implementation of libc\u2019s memory functions in C\/C++. https:\/\/lists.llvm.org\/pipermail\/llvm-dev\/2019-April\/131973.html  Guillaume Chatelet. 2019. [llvm-dev] [RFC][clang\/llvm] Allow efficient implementation of libc\u2019s memory functions in C\/C++. https:\/\/lists.llvm.org\/pipermail\/llvm-dev\/2019-April\/131973.html"},{"key":"e_1_3_2_1_10_1","unstructured":"Guillaume Chatelet. 2020. automemcpy paper supplementary materials. http:\/\/github.com\/google-research\/automemcpy  Guillaume Chatelet. 2020. automemcpy paper supplementary materials. http:\/\/github.com\/google-research\/automemcpy"},{"key":"e_1_3_2_1_11_1","unstructured":"Guillaume Chatelet. 2020. Benchmarking llvm-libc\u2019s memory functions. https:\/\/github.com\/llvm\/llvm-project\/blob\/main\/libc\/benchmarks\/RATIONALE.md  Guillaume Chatelet. 2020. Benchmarking llvm-libc\u2019s memory functions. https:\/\/github.com\/llvm\/llvm-project\/blob\/main\/libc\/benchmarks\/RATIONALE.md"},{"key":"e_1_3_2_1_12_1","unstructured":"Guillaume Chatelet. 2020. [libc-dev] Q&A and the round table highlights from the virtual dev meeting. https:\/\/lists.llvm.org\/pipermail\/libc-dev\/2020-October\/000211.html  Guillaume Chatelet. 2020. [libc-dev] Q&A and the round table highlights from the virtual dev meeting. https:\/\/lists.llvm.org\/pipermail\/libc-dev\/2020-October\/000211.html"},{"key":"e_1_3_2_1_13_1","unstructured":"Guillaume Chatelet. 2020. Libc mem* benchmarking framework. https:\/\/github.com\/llvm\/llvm-project\/tree\/main\/libc\/benchmarks  Guillaume Chatelet. 2020. Libc mem* benchmarking framework. https:\/\/github.com\/llvm\/llvm-project\/tree\/main\/libc\/benchmarks"},{"key":"e_1_3_2_1_14_1","unstructured":"Guillaume Chatelet and \u00f6ther contributors\". 2020. Libc string functions. https:\/\/github.com\/llvm\/llvm-project\/tree\/main\/libc\/src\/string  Guillaume Chatelet and \u00f6ther contributors\". 2020. Libc string functions. https:\/\/github.com\/llvm\/llvm-project\/tree\/main\/libc\/src\/string"},{"key":"e_1_3_2_1_15_1","volume-title":"AutoFDO: Automatic Feedback-Directed Optimization for Warehouse-Scale Applications. In CGO 2016 Proceedings of the 2016 International Symposium on Code Generation and Optimization","author":"Chen Dehao","year":"2016","unstructured":"Dehao Chen , David Xinliang Li , and Tipp Moseley . 2016 . AutoFDO: Automatic Feedback-Directed Optimization for Warehouse-Scale Applications. In CGO 2016 Proceedings of the 2016 International Symposium on Code Generation and Optimization . New York, NY, USA. 12\u201323. Dehao Chen, David Xinliang Li, and Tipp Moseley. 2016. AutoFDO: Automatic Feedback-Directed Optimization for Warehouse-Scale Applications. In CGO 2016 Proceedings of the 2016 International Symposium on Code Generation and Optimization. New York, NY, USA. 12\u201323."},{"key":"e_1_3_2_1_16_1","volume-title":"Tools and Algorithms for the Construction and Analysis of Systems","author":"de Moura Leonardo","unstructured":"Leonardo de Moura and Nikolaj Bj\u00f8rner . 2008. Z3: An Efficient SMT Solver . In Tools and Algorithms for the Construction and Analysis of Systems , C. R. Ramakrishnan and Jakob Rehof (Eds.). Springer Berlin Heidelberg , Berlin, Heidelberg . 337\u2013340. isbn:978-3-540-78800-3 Leonardo de Moura and Nikolaj Bj\u00f8rner. 2008. Z3: An Efficient SMT Solver. In Tools and Algorithms for the Construction and Analysis of Systems, C. R. Ramakrishnan and Jakob Rehof (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 337\u2013340. isbn:978-3-540-78800-3"},{"key":"e_1_3_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1064978.1065048"},{"key":"e_1_3_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2004.840301"},{"key":"e_1_3_2_1_19_1","volume-title":"Mechanism to Mitigate AVX-Induced Frequency Reduction. CoRR, abs\/1901.04982","author":"Gottschlag Mathias","year":"2019","unstructured":"Mathias Gottschlag and Frank Bellosa . 2019. Mechanism to Mitigate AVX-Induced Frequency Reduction. CoRR, abs\/1901.04982 ( 2019 ), arxiv:1901.04982. arxiv:1901.04982 Mathias Gottschlag and Frank Bellosa. 2019. Mechanism to Mitigate AVX-Induced Frequency Reduction. CoRR, abs\/1901.04982 (2019), arxiv:1901.04982. arxiv:1901.04982"},{"key":"e_1_3_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1186736.1186737"},{"key":"e_1_3_2_1_21_1","unstructured":"ISO\/IEC.. 2020. ISO International Standard ISO\/IEC 9899:202x (E) \u2013 Programming Language C [Working draft]. http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n2478.pdf  ISO\/IEC.. 2020. ISO International Standard ISO\/IEC 9899:202x (E) \u2013 Programming Language C [Working draft]. http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n2478.pdf"},{"key":"e_1_3_2_1_22_1","volume-title":"Proceedings of the 42nd Annual International Symposium on Computer Architecture. 158\u2013169","author":"Kanev Svilen","year":"2014","unstructured":"Svilen Kanev , Juan Darago , Kim Hazelwood , Parthasarathy Ranganathan , Tipp Moseley , Gu-Yeon Wei , and David Brooks . 2014 . Profiling a warehouse-scale computer. In ISCA \u201915 Proceedings of the 42nd Annual International Symposium on Computer Architecture. 158\u2013169 . Svilen Kanev, Juan Darago, Kim Hazelwood, Parthasarathy Ranganathan, Tipp Moseley, Gu-Yeon Wei, and David Brooks. 2014. Profiling a warehouse-scale computer. In ISCA \u201915 Proceedings of the 42nd Annual International Symposium on Computer Architecture. 158\u2013169."},{"key":"e_1_3_2_1_23_1","volume-title":"Optimum binary search trees. Acta informatica, 1, 1","author":"Knuth Donald E.","year":"1971","unstructured":"Donald E. Knuth . 1971. Optimum binary search trees. Acta informatica, 1, 1 ( 1971 ), 14\u201325. Donald E. Knuth. 1971. Optimum binary search trees. Acta informatica, 1, 1 (1971), 14\u201325."},{"key":"e_1_3_2_1_24_1","unstructured":"Vlad Krasnov. 2017. On the dangers of Intel\u2019s frequency scaling. https:\/\/blog.cloudflare.com\/on-the-dangers-of-intels-frequency-scaling\/  Vlad Krasnov. 2017. On the dangers of Intel\u2019s frequency scaling. https:\/\/blog.cloudflare.com\/on-the-dangers-of-intels-frequency-scaling\/"},{"key":"e_1_3_2_1_25_1","unstructured":"Michael Matz and Janothers. 2014. System V Application Binary Interface AMD64 Architecture Processor Supplement (With LP64 and ILP32 Programming Models) Version 1.0. https:\/\/gitlab.com\/x86-psABIs\/x86-64-ABI  Michael Matz and Janothers. 2014. System V Application Binary Interface AMD64 Architecture Processor Supplement (With LP64 and ILP32 Programming Models) Version 1.0. https:\/\/gitlab.com\/x86-psABIs\/x86-64-ABI"},{"key":"e_1_3_2_1_26_1","unstructured":"Carlos O\u2019Donell. 2017. What is an indirect function (IFUNC)? https:\/\/sourceware.org\/glibc\/wiki\/GNU_IFUNC  Carlos O\u2019Donell. 2017. What is an indirect function (IFUNC)? https:\/\/sourceware.org\/glibc\/wiki\/GNU_IFUNC"},{"key":"e_1_3_2_1_27_1","unstructured":"Linus Torvalds. 2021. Linux Perf Tool. https:\/\/github.com\/torvalds\/linux\/tree\/master\/tools\/perf  Linus Torvalds. 2021. Linux Perf Tool. https:\/\/github.com\/torvalds\/linux\/tree\/master\/tools\/perf"},{"key":"e_1_3_2_1_28_1","unstructured":"Travis Downs aka BeeOnRope and Arnaud. 2019. Enhanced REP MOVSB for memcpy. https:\/\/stackoverflow.com\/a\/43574756  Travis Downs aka BeeOnRope and Arnaud. 2019. Enhanced REP MOVSB for memcpy. https:\/\/stackoverflow.com\/a\/43574756"},{"key":"e_1_3_2_1_29_1","unstructured":"various contributors. 2021. Glibc memcpy Implementation Strategies. https:\/\/sourceware.org\/git\/?p=glibc.git;a=blob;f=sysdeps\/x86_64\/multiarch\/memmove-vec-unaligned-erms.S;hb=6e02b3e9327b7dbb063958d2b124b64fcb4bbe3f##l20  various contributors. 2021. Glibc memcpy Implementation Strategies. https:\/\/sourceware.org\/git\/?p=glibc.git;a=blob;f=sysdeps\/x86_64\/multiarch\/memmove-vec-unaligned-erms.S;hb=6e02b3e9327b7dbb063958d2b124b64fcb4bbe3f##l20"},{"key":"e_1_3_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.626"},{"key":"e_1_3_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICIST.2013.6747619"}],"event":{"name":"ISMM '21: 2021 ACM SIGPLAN International Symposium on Memory Management","location":"Virtual Canada","acronym":"ISMM '21","sponsor":["SIGPLAN ACM Special Interest Group on Programming Languages"]},"container-title":["Proceedings of the 2021 ACM SIGPLAN International Symposium on Memory Management"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3459898.3463904","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3459898.3463904","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:48:50Z","timestamp":1750193330000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3459898.3463904"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,6,22]]},"references-count":31,"alternative-id":["10.1145\/3459898.3463904","10.1145\/3459898"],"URL":"https:\/\/doi.org\/10.1145\/3459898.3463904","relation":{},"subject":[],"published":{"date-parts":[[2021,6,22]]},"assertion":[{"value":"2021-06-22","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}