{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,16]],"date-time":"2026-07-16T20:17:14Z","timestamp":1784233034747,"version":"3.55.0"},"reference-count":61,"publisher":"Association for Computing Machinery (ACM)","issue":"PLDI","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2025,6,10]]},"abstract":"<jats:p>Graphics shaders are the core of modern 3D visual effects, enabling developers to create realistic, real-time rendering of 3D scenes. Shaders are specialized programs written in high-level shading languages like GLSL, and graphics shader compilers translate these high-level shader programs into low-level binaries that run on GPUs. These shader compilers are complex programs with multiple layers: front-end, middle-end, and back-end. Despite significant development efforts from industrial GPU vendors such as NVIDIA and AMD, graphics shader compilers still contain bugs that can impact downstream applications and lead to negative consequences from poor user experience in entertainment to accidents in driving assistance systems. Because they are complex and deep in the compilation pipeline, the back-ends of shader compilers are particularly challenging to test. Our empirical exploration shows that state-of-the-art testing tools for shader compilers do not specifically target the back-ends and are thus ineffective in uncovering back-end bugs.<\/jats:p>\n                  <jats:p>\n                    This work fills this gap and introduces\n                    <jats:sc>ShaDiv<\/jats:sc>\n                    , an automated testing tool specifically designed to uncover bugs in the back-ends of graphics shader compilers. To this end,\n                    <jats:sc>ShaDiv<\/jats:sc>\n                    generates test inputs with two novel, carefully designed strategies to support the unique computational models of the back-ends, namely control and data flow divergence among GPU threads.\n                    <jats:sc>ShaDiv<\/jats:sc>\n                    deliberately perturbs divergence patterns in both the control and data flow of shader programs to effectively trigger back-end optimizations. Our evaluation of\n                    <jats:sc>ShaDiv<\/jats:sc>\n                    on graphics shader compilers from four mainstream GPU vendors uncovered 12 back-end bugs. Further comparison with existing shader compiler testing tools shows that\n                    <jats:sc>ShaDiv<\/jats:sc>\n                    achieves a 25% coverage increase in the back-end components and finds four times as many back-end bugs.\n                  <\/jats:p>","DOI":"10.1145\/3729305","type":"journal-article","created":{"date-parts":[[2025,6,13]],"date-time":"2025-06-13T16:02:27Z","timestamp":1749830547000},"page":"1367-1391","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["Divergence-Aware Testing of Graphics Shader Compiler Back-Ends"],"prefix":"10.1145","volume":"9","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-4680-5715","authenticated-orcid":false,"given":"Dongwei","family":"Xiao","sequence":"first","affiliation":[{"name":"Hong Kong University of Science and Technology, Hong Kong, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-0866-0308","authenticated-orcid":false,"given":"Shuai","family":"Wang","sequence":"additional","affiliation":[{"name":"Hong Kong University of Science and Technology, Hong Kong, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-7872-1129","authenticated-orcid":false,"given":"Zhibo","family":"Liu","sequence":"additional","affiliation":[{"name":"Hong Kong University of Science and Technology, Hong Kong, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0009-0006-2066-7939","authenticated-orcid":false,"given":"Yiteng","family":"Peng","sequence":"additional","affiliation":[{"name":"Hong Kong University of Science and Technology, Hong Kong, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3752-0718","authenticated-orcid":false,"given":"Daoyuan","family":"Wu","sequence":"additional","affiliation":[{"name":"Hong Kong University of Science and Technology, Hong Kong, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2970-1391","authenticated-orcid":false,"given":"Zhendong","family":"Su","sequence":"additional","affiliation":[{"name":"ETH Zurich, Z\u00fcrich, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2025,6,13]]},"reference":[{"key":"e_1_3_2_2_1","unstructured":"2024. Vulkan. https:\/\/www.vulkan.org\/."},{"key":"e_1_3_2_3_1","unstructured":"Mesa 3D. 2024. ACO: back end compiler for AMD GCN \/ RDNA CPUs https:\/\/gitlab.freedesktop.org\/mesa\/mesa\/-\/blob\/main\/src\/amd\/compiler\/README.md."},{"key":"e_1_3_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/360018.360025"},{"key":"e_1_3_2_5_1","unstructured":"Anonymous. 2024. GPU hangs on AMD Radeon RX 6400 on a fragment shader. https:\/\/gitlab.freedesktop.org\/mesa\/mesa\/-\/merge_requests\/297xx."},{"key":"e_1_3_2_6_1","doi-asserted-by":"publisher","unstructured":"Stefanos Chaliasos Thodoris Sotiropoulos Diomidis Spinellis Arthur Gervais Benjamin Livshits and Dimitris Mitropoulos. 2022. Finding typing compiler bugs. In Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation. 183\u2013198. https:\/\/doi.org\/10.1145\/3519939.3523427 10.1145\/3519939.3523427","DOI":"10.1145\/3519939.3523427"},{"key":"e_1_3_2_7_1","unstructured":"Tsong Y Chen Shing C Cheung and Shiu Ming Yiu. 2020. Metamorphic testing: a new approach for generating next test cases. arXiv preprint arXiv:2002.12543 (2020)."},{"key":"e_1_3_2_8_1","doi-asserted-by":"publisher","unstructured":"Koen Claessen and John Hughes. 2000. QuickCheck: a lightweight tool for random testing of Haskell programs. In Proceedings of the fifth ACM SIGPLAN international conference on Functional programming. 268\u2013279. https:\/\/doi.org\/10.1145\/351240.351266 10.1145\/351240.351266","DOI":"10.1145\/351240.351266"},{"key":"e_1_3_2_9_1","unstructured":"CNN. 2024. This VR modeling tool is revolutionizing 3D design | CNN Business. https:\/\/edition.cnn.com\/2024\/10\/11\/business\/video\/shapelab-3d-design-spc."},{"key":"e_1_3_2_10_1","unstructured":"Tobias CornilleMarch. 2024. Software Tools For Robotics Landscape (2024) | Segments.ai. https:\/\/segments.ai\/blog\/software-tools-for-robotics-landscape\/."},{"key":"e_1_3_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133917"},{"key":"e_1_3_2_12_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2020.22"},{"key":"e_1_3_2_13_1","doi-asserted-by":"publisher","unstructured":"Alastair F Donaldson Paul Thomson Vasyl Teliman Stefano Milizia Andr\u00e9 Perez Maselco and Antoni Karpi\u0144ski. 2021. Test-case reduction and deduplication almost for free with transformation-based compiler testing. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation. 1017\u20131032. https:\/\/doi.org\/10.1145\/3453483.3454092 10.1145\/3453483.3454092","DOI":"10.1145\/3453483.3454092"},{"key":"e_1_3_2_14_1","unstructured":"Faith Ekstrand. 2022. In defense of NIR. https:\/\/www.gfxstrand.net\/faith\/blog\/2022\/01\/in-defense-of-nir\/."},{"key":"e_1_3_2_15_1","doi-asserted-by":"publisher","DOI":"10.1007\/S10664-022-10146-1"},{"key":"e_1_3_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/3597926.3598130"},{"key":"e_1_3_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/3632919"},{"key":"e_1_3_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1839676.1839694"},{"key":"e_1_3_2_19_1","volume-title":"The trouble with SPIR-V","author":"Glob","year":"2022","unstructured":"Glob. 2022. The trouble with SPIR-V, 2022 edition - Gob\u2019s blog. https:\/\/xol.io\/blah\/the-trouble-with-spirv\/."},{"key":"e_1_3_2_20_1","unstructured":"Google. 2024. GitHub - google\/swiftshader: SwiftShader is a high-performance CPU-based implementation of the Vulkan graphics API. Its goal is to provide hardware independence for advanced 3D graphics. https:\/\/github.com\/google\/swiftshader."},{"key":"e_1_3_2_21_1","unstructured":"Khronos Group. 2024a. Core Language (GLSL) - OpenGL Wiki. https:\/\/www.khronos.org\/opengl\/wiki\/Core_Language_(GLSL)."},{"key":"e_1_3_2_22_1","unstructured":"Khronos Group. 2024b. GitHub - KhronosGroup\/SPIRV-Tools. https:\/\/github.com\/KhronosGroup\/SPIRV-Tools.git."},{"key":"e_1_3_2_23_1","unstructured":"Khronos Group. 2024c. OpenGL ES 3.0 Reference Pages. https:\/\/registry.khronos.org\/OpenGL-Refpages\/es3.0\/."},{"key":"e_1_3_2_24_1","unstructured":"Khronos Group. 2024d. SPIR Overview - The Khronos Group Inc. https:\/\/www.khronos.org\/api\/spir."},{"key":"e_1_3_2_25_1","unstructured":"Autodesk Inc. 2024. Help | Maya Shaders | Autodesk. https:\/\/help.autodesk.com\/view\/ARNOL\/ENU\/?guid=arnold_for_maya_shaders_am_Maya_Shaders_html."},{"key":"e_1_3_2_26_1","unstructured":"Francisco Jerez. 2018. Represent divergent control flow paths caused by non-uniform loop execution. https:\/\/gitlab.freedesktop.org\/mesa\/mesa\/-\/commit\/4d1959e69328cf0d59f0ec7aeea5a2b704ef0c5f."},{"key":"e_1_3_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/2594291.2594334"},{"key":"e_1_3_2_28_1","doi-asserted-by":"publisher","unstructured":"Vu Le Chengnian Sun and Zhendong Su. 2015. Randomized stress-testing of link-time optimizers. In Proceedings of the 2015 International Symposium on Software Testing and Analysis. 327\u2013337. https:\/\/doi.org\/10.1145\/2771783.2771785 10.1145\/2771783.2771785","DOI":"10.1145\/2771783.2771785"},{"key":"e_1_3_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/3591294"},{"key":"e_1_3_2_30_1","doi-asserted-by":"publisher","unstructured":"Cong Li Yanyan Jiang Chang Xu and Zhendong Su. 2023. Validating JIT compilers via compilation space exploration. In Proceedings of the 29th Symposium on Operating Systems Principles. 66\u201379. https:\/\/doi.org\/10.1145\/3600006.3613140 10.1145\/3600006.3613140","DOI":"10.1145\/3600006.3613140"},{"key":"e_1_3_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/3656386"},{"key":"e_1_3_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/3643781"},{"key":"e_1_3_2_33_1","doi-asserted-by":"publisher","unstructured":"Zhibo Liu and Shuai Wang. 2020. How far we have come: Testing decompilation correctness of C decompilers. In Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis. 475\u2013487. https:\/\/doi.org\/10.1145\/3395363.3397370 10.1145\/3395363.3397370","DOI":"10.1145\/3395363.3397370"},{"key":"e_1_3_2_34_1","doi-asserted-by":"publisher","unstructured":"Zhibo Liu Dongwei Xiao Zongjie Li Shuai Wang and Wei Meng. 2023. Exploring missed optimizations in webassembly optimizers. In Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis. 436\u2013448. https:\/\/doi.org\/10.1145\/3597926.3598068 10.1145\/3597926.3598068","DOI":"10.1145\/3597926.3598068"},{"key":"e_1_3_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/3428264"},{"key":"e_1_3_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/3591295"},{"key":"e_1_3_2_37_1","unstructured":"GraphicsFuzz Ltd. 2018. GraphicsFuzz is acquired by Google. https:\/\/www.graphicsfuzz.com\/."},{"key":"e_1_3_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3649860"},{"key":"e_1_3_2_39_1","doi-asserted-by":"publisher","unstructured":"Haoyang Ma Qingchao Shen Yongqiang Tian Junjie Chen and Shing-Chi Cheung. 2023. Fuzzing deep learning compilers with hirgen. In Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis. 248\u2013260. https:\/\/doi.org\/10.1145\/3597926.3598053 10.1145\/3597926.3598053","DOI":"10.1145\/3597926.3598053"},{"issue":"1","key":"e_1_3_2_40_1","first-page":"100","article-title":"Differential testing for software","volume":"10","author":"McKeeman William M","year":"1998","unstructured":"William M McKeeman. 1998. Differential testing for software. Digital Technical Journal 10, 1 (1998), 100\u2013107.","journal-title":"Digital Technical Journal"},{"key":"e_1_3_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/3110259"},{"key":"e_1_3_2_42_1","doi-asserted-by":"publisher","DOI":"10.1109\/MM.2010.41"},{"key":"e_1_3_2_43_1","unstructured":"John Nickolls and David Kirk. 2009. Graphics and computing GPUs. Computer Organization and Design: The Hardware\/Software Interface DA Patterson and JL Hennessy 4th ed. Morgan Kaufmann (2009) A2\u2013A77."},{"key":"e_1_3_2_44_1","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2014.2324587"},{"key":"e_1_3_2_45_1","doi-asserted-by":"publisher","unstructured":"Michal H Pa\u0142ka Koen Claessen Alejandro Russo and John Hughes. 2011. Testing an optimising compiler by generating random lambda terms. In Proceedings of the 6th International Workshop on Automation of Software Test. 91\u201397. https:\/\/doi.org\/10.1145\/1982595.1982615 10.1145\/1982595.1982615","DOI":"10.1145\/1982595.1982615"},{"key":"e_1_3_2_46_1","doi-asserted-by":"publisher","DOI":"10.1007\/11575467_21"},{"key":"e_1_3_2_47_1","doi-asserted-by":"publisher","unstructured":"John Regehr Yang Chen Pascal Cuoq Eric Eide Chucky Ellison and Xuejun Yang. 2012. Test-case reduction for C compiler bugs. In Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation. 335\u2013346. https:\/\/doi.org\/10.1145\/2254064.2254104 10.1145\/2254064.2254104","DOI":"10.1145\/2254064.2254104"},{"key":"e_1_3_2_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/2523815"},{"key":"e_1_3_2_49_1","unstructured":"ShadeDiv-Artifact. 2024. Research artifacts. https:\/\/sites.google.com\/view\/ggenshader\/."},{"key":"e_1_3_2_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/3632904"},{"key":"e_1_3_2_51_1","doi-asserted-by":"publisher","unstructured":"Chengnian Sun Vu Le and Zhendong Su. 2016. Finding compiler bugs via live code mutation. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming Systems Languages and Applications. 849\u2013863. https:\/\/doi.org\/10.1145\/2983990.2984038 10.1145\/2983990.2984038","DOI":"10.1145\/2983990.2984038"},{"key":"e_1_3_2_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180236"},{"key":"e_1_3_2_53_1","doi-asserted-by":"publisher","unstructured":"Theodoros Theodoridis Tobias Grosser and Zhendong Su. 2022a. Understanding and exploiting optimal function inlining. In Proceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems. 977\u2013989. https:\/\/doi.org\/10.1145\/3503222.3507744 10.1145\/3503222.3507744","DOI":"10.1145\/3503222.3507744"},{"key":"e_1_3_2_54_1","doi-asserted-by":"publisher","unstructured":"Theodoros Theodoridis Manuel Rigger and Zhendong Su. 2022b. Finding missed optimizations through the lens of dead code elimination. In Proceedings of the 27th ACM International Conference on Architectural Support for Programming Languages and Operating Systems. 697\u2013709. https:\/\/doi.org\/10.1145\/3503222.3507764 10.1145\/3503222.3507764","DOI":"10.1145\/3503222.3507764"},{"key":"e_1_3_2_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/3352460.3358307"},{"key":"e_1_3_2_56_1","unstructured":"Preeti Wadhwani. 2024. 3D Rendering Market Size | Global Statistics Report 2032. https:\/\/www.gminsights.com\/industry-analysis\/3d-rendering-market."},{"key":"e_1_3_2_57_1","doi-asserted-by":"publisher","unstructured":"Dongwei Xiao Zhibo Liu Yiteng Peng and Shuai Wang. 2025. Mtzk: Testing and exploring bugs in zero-knowledge (ZK) compilers. In NDSS. https:\/\/doi.org\/10.14722\/ndss.2025.230530 10.14722\/ndss.2025.230530","DOI":"10.14722\/ndss.2025.230530"},{"key":"e_1_3_2_58_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE48619.2023.00201"},{"key":"e_1_3_2_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/3489048.3522655"},{"key":"e_1_3_2_60_1","doi-asserted-by":"publisher","unstructured":"Yiheng Xiong Ting Su Jue Wang Jingling Sun Geguang Pu and Zhendong Su. 2024. General and Practical Property-based Testing for Android Apps. In Proceedings of the 39th IEEE\/ACM International Conference on Automated Software Engineering. 53\u201364. https:\/\/doi.org\/10.1145\/3691620.3694986 10.1145\/3691620.3694986","DOI":"10.1145\/3691620.3694986"},{"key":"e_1_3_2_61_1","doi-asserted-by":"publisher","unstructured":"Xuejun Yang Yang Chen Eric Eide and John Regehr. 2011. Finding and understanding bugs in C compilers. In Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation. 283\u2013294. https:\/\/doi.org\/10.1145\/3691620.3694986 10.1145\/3691620.3694986","DOI":"10.1145\/3691620.3694986"},{"key":"e_1_3_2_62_1","doi-asserted-by":"publisher","unstructured":"Qirun Zhang Chengnian Sun and Zhendong Su. 2017. Skeletal program enumeration for rigorous compiler testing. In Proceedings of the 38th ACM SIGPLAN conference on programming language design and implementation. 347\u2013361. https:\/\/doi.org\/10.1145\/3062341.3062379 10.1145\/3062341.3062379","DOI":"10.1145\/3062341.3062379"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3729305","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,7,16]],"date-time":"2026-07-16T10:01:56Z","timestamp":1784196116000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3729305"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,6,10]]},"references-count":61,"journal-issue":{"issue":"PLDI","published-print":{"date-parts":[[2025,6,10]]}},"alternative-id":["10.1145\/3729305"],"URL":"https:\/\/doi.org\/10.1145\/3729305","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,6,10]]},"assertion":[{"value":"2024-11-15","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-03-06","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-06-13","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}