[llvm] [NVPTX] Merge consecutive elements while buffering constant vectors with sub-byte datatype. (PR #183628)

Karthik Senthil via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 3 17:07:27 PDT 2026


================
@@ -0,0 +1,28 @@
+; Test to verify that NVPTX backend correctly handles constant global vectors
+; containing sub-byte sized elements.
+
+; RUN: llc < %s -mtriple=nvptx64 | FileCheck %s
+; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 | %ptxas-verify %}
+
+target triple = "nvptx-nvidia-cuda"
+
+; CHECK: .visible .global .align 1 .b8 test0[1] = {33};
+ at test0 = local_unnamed_addr addrspace(1) constant <2 x i4> <i4 1, i4 2>, align 1
+
+; CHECK: .visible .global .align 1 .b8 test1[2] = {33, 3};
+ at test1 = local_unnamed_addr addrspace(1) constant <3 x i4> <i4 1, i4 2, i4 3>, align 1
+
+; CHECK: .visible .global .align 1 .b8 test2[1] = {228};
+ at test2 = local_unnamed_addr addrspace(1) constant <4 x i2> <i2 0, i2 1, i2 2, i2 3>, align 1
+
+; CHECK: .visible .global .align 1 .b8 test3[2] = {228, 4};
+ at test3 = local_unnamed_addr addrspace(1) constant <6 x i2> <i2 0, i2 1, i2 2, i2 3, i2 0, i2 1>, align 1
+
+; CHECK: .visible .global .align 1 .b8 test4[1] = {1};
+ at test4 = local_unnamed_addr addrspace(1) constant <1 x i4> <i4 1>, align 1
+
+; CHECK: .visible .global .align 1 .b8 test5[2] = {33, 67};
+ at test5 = local_unnamed_addr addrspace(1) constant <4 x i4> <i4 1, i4 2, i4 3, i4 4>, align 1
+
+; CHECK: .visible .global .align 1 .b8 test6[2] = {228, 228};
+ at test6 = local_unnamed_addr addrspace(1) constant <8 x i2> <i2 0, i2 1, i2 2, i2 3, i2 0, i2 1, i2 2, i2 3>, align 1
----------------
karthik-senthil wrote:

Done. I also rearranged the test cases for better organization.

https://github.com/llvm/llvm-project/pull/183628


More information about the llvm-commits mailing list