[llvm] [SandboxVec][LoadStoreVec][NFC] Precommit tests (PR #194962)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 29 15:46:30 PDT 2026
https://github.com/vporpo updated https://github.com/llvm/llvm-project/pull/194962
>From be7aaa3f21ea5ce8bf7651a9bc20c4403848c91b Mon Sep 17 00:00:00 2001
From: Vasileios Porpodas <vasileios.porpodas at amd.com>
Date: Fri, 24 Apr 2026 20:35:01 +0000
Subject: [PATCH] [SandboxVec][LoadStoreVec][NFC] Precommit tests
These tests are for a follow-up LoadStoreVec patch.
---
.../load_store_vec_mixed_types.ll | 90 +++++++++++++++++++
1 file changed, 90 insertions(+)
create mode 100644 llvm/test/Transforms/SandboxVectorizer/load_store_vec_mixed_types.ll
diff --git a/llvm/test/Transforms/SandboxVectorizer/load_store_vec_mixed_types.ll b/llvm/test/Transforms/SandboxVectorizer/load_store_vec_mixed_types.ll
new file mode 100644
index 0000000000000..54136b29ba304
--- /dev/null
+++ b/llvm/test/Transforms/SandboxVectorizer/load_store_vec_mixed_types.ll
@@ -0,0 +1,90 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt -passes=sandbox-vectorizer -sbvec-passes="seed-collection(enable-diff-types)<load-store-vec>" -sbvec-vec-reg-bits=1024 %s -S | FileCheck %s
+
+; Check that we vectorize mixed ints and floats.
+define void @mixed_int_float(ptr %ptr0) {
+; CHECK-LABEL: define void @mixed_int_float(
+; CHECK-SAME: ptr [[PTR0:%.*]]) {
+; CHECK-NEXT: [[PTR1:%.*]] = getelementptr inbounds i8, ptr [[PTR0]], i64 4
+; CHECK-NEXT: [[LD0:%.*]] = load i32, ptr [[PTR0]], align 4
+; CHECK-NEXT: [[LD1:%.*]] = load float, ptr [[PTR1]], align 4
+; CHECK-NEXT: store i32 [[LD0]], ptr [[PTR0]], align 4, !sandboxvec [[META0:![0-9]+]]
+; CHECK-NEXT: store float [[LD1]], ptr [[PTR1]], align 4, !sandboxvec [[META0]]
+; CHECK-NEXT: ret void
+;
+ %ptr1 = getelementptr inbounds i8, ptr %ptr0, i64 4
+
+ %ld0 = load i32, ptr %ptr0
+ %ld1 = load float, ptr %ptr1
+
+ store i32 %ld0, ptr %ptr0
+ store float %ld1, ptr %ptr1
+ ret void
+}
+
+; Check that we vectorize mixed ints and vector of floats.
+define void @mixed_int_vector_float(ptr %ptr) {
+; CHECK-LABEL: define void @mixed_int_vector_float(
+; CHECK-SAME: ptr [[PTR:%.*]]) {
+; CHECK-NEXT: [[PTR_4:%.*]] = getelementptr inbounds i8, ptr [[PTR]], i64 4
+; CHECK-NEXT: [[LD_0_3:%.*]] = load i32, ptr [[PTR]], align 4
+; CHECK-NEXT: [[LD_4_LOAD:%.*]] = load <2 x half>, ptr [[PTR_4]], align 4
+; CHECK-NEXT: store i32 [[LD_0_3]], ptr [[PTR]], align 4, !sandboxvec [[META1:![0-9]+]]
+; CHECK-NEXT: store <2 x half> [[LD_4_LOAD]], ptr [[PTR_4]], align 4, !sandboxvec [[META1]]
+; CHECK-NEXT: ret void
+;
+ %ptr_4 = getelementptr inbounds i8, ptr %ptr, i64 4
+
+ %ld_0_3 = load i32, ptr %ptr
+ %ld_4_7 = load <2 x half>, ptr %ptr_4
+
+ store i32 %ld_0_3, ptr %ptr
+ store <2 x half> %ld_4_7, ptr %ptr_4
+ ret void
+}
+
+; Check that we vectorize mixed ints and and pointers.
+define void @mixed_int_pointer(ptr %ptr) {
+; CHECK-LABEL: define void @mixed_int_pointer(
+; CHECK-SAME: ptr [[PTR:%.*]]) {
+; CHECK-NEXT: [[VECIINITL:%.*]] = load <2 x i64>, ptr [[PTR]], align 1, !sandboxvec [[META2:![0-9]+]]
+; CHECK-NEXT: store <2 x i64> [[VECIINITL]], ptr [[PTR]], align 1, !sandboxvec [[META2]]
+; CHECK-NEXT: ret void
+;
+ %ptr_8 = getelementptr inbounds i8, ptr %ptr, i64 8
+
+ %ld_0_7 = load i64, ptr %ptr
+ %ld_8_15 = load ptr, ptr %ptr_8
+
+ store i64 %ld_0_7, ptr %ptr
+ store ptr %ld_8_15, ptr %ptr_8
+ ret void
+}
+
+; Check that we vectorize mixed doubles and pointers.
+define void @mixed_dboule_pointer(ptr %ptr) {
+; CHECK-LABEL: define void @mixed_dboule_pointer(
+; CHECK-SAME: ptr [[PTR:%.*]]) {
+; CHECK-NEXT: [[PTR_8:%.*]] = getelementptr inbounds i8, ptr [[PTR]], i64 8
+; CHECK-NEXT: [[LD_0_7:%.*]] = load double, ptr [[PTR]], align 8
+; CHECK-NEXT: [[LD_8_15:%.*]] = load ptr, ptr [[PTR_8]], align 8
+; CHECK-NEXT: store double [[LD_0_7]], ptr [[PTR]], align 8, !sandboxvec [[META3:![0-9]+]]
+; CHECK-NEXT: store ptr [[LD_8_15]], ptr [[PTR_8]], align 8, !sandboxvec [[META3]]
+; CHECK-NEXT: ret void
+;
+ %ptr_8 = getelementptr inbounds i8, ptr %ptr, i64 8
+
+ %ld_0_7 = load double, ptr %ptr
+ %ld_8_15 = load ptr, ptr %ptr_8
+
+ store double %ld_0_7, ptr %ptr
+ store ptr %ld_8_15, ptr %ptr_8
+ ret void
+}
+
+;.
+; CHECK: [[META0]] = distinct !{!"sandboxregion"}
+; CHECK: [[META1]] = distinct !{!"sandboxregion"}
+; CHECK: [[META2]] = distinct !{!"sandboxregion"}
+; CHECK: [[META3]] = distinct !{!"sandboxregion"}
+;.
More information about the llvm-commits
mailing list