From e8ca460910c4dfe208c76e8b8ae4de4ba2652c03 Mon Sep 17 00:00:00 2001 From: tlopex <820958424@qq.com> Date: Wed, 10 Jun 2026 03:06:04 -0400 Subject: [PATCH 1/2] [Codegen][LLVM] Accept splat form in VLA broadcast test Newer LLVM versions (observed with LLVM 20) print a scalable broadcast store as a splat constant, e.g. `store splat (float 1.000000e+00)`, instead of the older `shufflevector ( insertelement (...` form. Accept either representation in test_scalable_broadcast so the test passes across LLVM versions while still verifying scalable vector codegen. --- tests/python/codegen/test_target_codegen_llvm_vla.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/python/codegen/test_target_codegen_llvm_vla.py b/tests/python/codegen/test_target_codegen_llvm_vla.py index 16514af9c67a..f1e135008da5 100644 --- a/tests/python/codegen/test_target_codegen_llvm_vla.py +++ b/tests/python/codegen/test_target_codegen_llvm_vla.py @@ -109,9 +109,13 @@ def my_func(a: T.handle): mod = tvm.tirx.build(my_func) llvm = mod.inspect_source("ll") + # Older LLVM versions print the broadcast as a shufflevector of an insertelement, + # newer ones print it as a splat constant. assert re.findall( r"shufflevector \( insertelement \(", llvm - ), "No scalable broadcast in generated LLVM." + ) or re.findall(r"store splat \(float 1\.000000e\+00\)", llvm), ( + "No scalable broadcast in generated LLVM." + ) assert re.findall(r" store ", llvm), "No scalable store in generated LLVM." From b77d7fbe6176152696a9140832c9815f5ebb3b71 Mon Sep 17 00:00:00 2001 From: tqchen Date: Wed, 10 Jun 2026 13:26:41 +0000 Subject: [PATCH 2/2] [Codegen][LLVM] Use in-operator instead of re.findall in VLA broadcast test --- tests/python/codegen/test_target_codegen_llvm_vla.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/python/codegen/test_target_codegen_llvm_vla.py b/tests/python/codegen/test_target_codegen_llvm_vla.py index f1e135008da5..20efd54bdd6b 100644 --- a/tests/python/codegen/test_target_codegen_llvm_vla.py +++ b/tests/python/codegen/test_target_codegen_llvm_vla.py @@ -111,11 +111,10 @@ def my_func(a: T.handle): llvm = mod.inspect_source("ll") # Older LLVM versions print the broadcast as a shufflevector of an insertelement, # newer ones print it as a splat constant. - assert re.findall( - r"shufflevector \( insertelement \(", llvm - ) or re.findall(r"store splat \(float 1\.000000e\+00\)", llvm), ( - "No scalable broadcast in generated LLVM." - ) + assert ( + "shufflevector ( insertelement (" in llvm + or "store splat (float 1.000000e+00)" in llvm + ), "No scalable broadcast in generated LLVM." assert re.findall(r" store ", llvm), "No scalable store in generated LLVM."