[llvm] fda2fea - [NVPTX] Promote v2i8 to v2i16 (#111189)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 4 14:15:33 PDT 2024
Author: Manasij Mukherjee
Date: 2024-10-04T14:15:30-07:00
New Revision: fda2fea3d161e07ec3a8441359f761ce9dd9a977
URL: https://github.com/llvm/llvm-project/commit/fda2fea3d161e07ec3a8441359f761ce9dd9a977
DIFF: https://github.com/llvm/llvm-project/commit/fda2fea3d161e07ec3a8441359f761ce9dd9a977.diff
LOG: [NVPTX] Promote v2i8 to v2i16 (#111189)
Promote v2i8 to v2i16, fixes a crash.
Re-enable a test in NVPTX/vector-returns.ll
https://github.com/llvm/llvm-project/issues/104864
Added:
Modified:
llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
llvm/test/CodeGen/NVPTX/vector-returns.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
index 8718b7890bf58a..57bc5fe0ac361c 100644
--- a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
@@ -236,6 +236,10 @@ static void ComputePTXValueVTs(const TargetLowering &TLI, const DataLayout &DL,
// v*i8 are formally lowered as v4i8
EltVT = MVT::v4i8;
NumElts = (NumElts + 3) / 4;
+ } else if (EltVT.getSimpleVT() == MVT::i8 && NumElts == 2) {
+ // v2i8 is promoted to v2i16
+ NumElts = 1;
+ EltVT = MVT::v2i16;
}
for (unsigned j = 0; j != NumElts; ++j) {
ValueVTs.push_back(EltVT);
diff --git a/llvm/test/CodeGen/NVPTX/vector-returns.ll b/llvm/test/CodeGen/NVPTX/vector-returns.ll
index 0d2ad2c9bee750..956f74392ae130 100644
--- a/llvm/test/CodeGen/NVPTX/vector-returns.ll
+++ b/llvm/test/CodeGen/NVPTX/vector-returns.ll
@@ -325,10 +325,17 @@ define <3 x i8> @byte3() {
ret <3 x i8> zeroinitializer
}
-; FIXME: This test causes a crash.
-; define <2 x i8> @byte2() {
-; ret <2 x i8> zeroinitializer
-; }
+define <2 x i8> @byte2() {
+; CHECK-LABEL: byte2(
+; CHECK: {
+; CHECK-NEXT: .reg .b32 %r<2>;
+; CHECK-EMPTY:
+; CHECK-NEXT: // %bb.0:
+; CHECK-NEXT: mov.b32 %r1, 0;
+; CHECK-NEXT: st.param.b32 [func_retval0+0], %r1;
+; CHECK-NEXT: ret;
+ ret <2 x i8> zeroinitializer
+}
define <1 x i8> @byte1() {
; CHECK-LABEL: byte1(
More information about the llvm-commits
mailing list