[llvm-branch-commits] [llvm] 2b90b63 - [LLVM][CodeGen] Add suppport for vector ConstantInt/FP to scalarConstantToHexString. (#180978)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Feb 17 03:57:32 PST 2026


Author: Paul Walker
Date: 2026-02-17T11:24:43Z
New Revision: 2b90b630bb081d1ba9348ef2b60f26841142e159

URL: https://github.com/llvm/llvm-project/commit/2b90b630bb081d1ba9348ef2b60f26841142e159
DIFF: https://github.com/llvm/llvm-project/commit/2b90b630bb081d1ba9348ef2b60f26841142e159.diff

LOG: [LLVM][CodeGen] Add suppport for vector ConstantInt/FP to scalarConstantToHexString. (#180978)

Added: 
    

Modified: 
    llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
    llvm/test/CodeGen/X86/win_cst_pool.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
index 47ee485a2cca9..83446e7d670f0 100644
--- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -2126,9 +2126,25 @@ static std::string scalarConstantToHexString(const Constant *C) {
   if (isa<UndefValue>(C)) {
     return APIntToHexString(APInt::getZero(Ty->getPrimitiveSizeInBits()));
   } else if (const auto *CFP = dyn_cast<ConstantFP>(C)) {
-    return APIntToHexString(CFP->getValueAPF().bitcastToAPInt());
+    if (CFP->getType()->isFloatingPointTy())
+      return APIntToHexString(CFP->getValueAPF().bitcastToAPInt());
+
+    std::string HexString;
+    unsigned NumElements =
+        cast<FixedVectorType>(CFP->getType())->getNumElements();
+    for (unsigned I = 0; I < NumElements; ++I)
+      HexString += APIntToHexString(CFP->getValueAPF().bitcastToAPInt());
+    return HexString;
   } else if (const auto *CI = dyn_cast<ConstantInt>(C)) {
-    return APIntToHexString(CI->getValue());
+    if (CI->getType()->isIntegerTy())
+      return APIntToHexString(CI->getValue());
+
+    std::string HexString;
+    unsigned NumElements =
+        cast<FixedVectorType>(CI->getType())->getNumElements();
+    for (unsigned I = 0; I < NumElements; ++I)
+      HexString += APIntToHexString(CI->getValue());
+    return HexString;
   } else {
     unsigned NumElements;
     if (auto *VTy = dyn_cast<VectorType>(Ty))

diff  --git a/llvm/test/CodeGen/X86/win_cst_pool.ll b/llvm/test/CodeGen/X86/win_cst_pool.ll
index 1fc05b26fddb5..097fe2a39abb6 100644
--- a/llvm/test/CodeGen/X86/win_cst_pool.ll
+++ b/llvm/test/CodeGen/X86/win_cst_pool.ll
@@ -2,6 +2,7 @@
 ; RUN: llc < %s -mattr=sse2 -mattr=avx | FileCheck %s
 ; RUN: llc < %s -mtriple=x86_64-win32 -mattr=sse2 -mattr=avx | FileCheck %s
 ; RUN: llc < %s -mtriple=x86_64-windows-msvc -mattr=sse2 -mattr=avx | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-windows-msvc -mattr=sse2 -mattr=avx --use-constant-int-for-fixed-length-splat -use-constant-fp-for-fixed-length-splat | FileCheck %s
 ; GNU environment.
 ; RUN: llc < %s -mtriple=x86_64-win32-gnu -mattr=sse2 -mattr=avx | FileCheck -check-prefix=MINGW %s
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
@@ -101,4 +102,32 @@ entry:
 ; CHECK: 	.quad	8589934593              # 0x200000001
 ; CHECK: 	.quad	17179869187             # 0x400000003
 ; CHECK: 	.quad	8589934593              # 0x200000001
-; CHECK: 	.quad	17179869187
+; CHECK: 	.quad	17179869187             # 0x400000003
+
+define <4 x i64> @ymm_splat() {
+entry:
+  ret <4 x i64> splat(i64 8589934593)
+}
+
+; CHECK:	.globl	__ymm at 0000000200000001000000020000000100000002000000010000000200000001
+; CHECK:	.section	.rdata,"dr",discard,__ymm at 0000000200000001000000020000000100000002000000010000000200000001
+; CHECK:	.p2align	5
+; CHECK: __ymm at 0000000200000001000000020000000100000002000000010000000200000001
+; CHECK: 	.quad	8589934593             # 0x200000001
+; CHECK: 	.quad	8589934593             # 0x200000001
+; CHECK: 	.quad	8589934593             # 0x200000001
+; CHECK: 	.quad	8589934593             # 0x200000001
+
+define <4 x double> @ymm_splat_double() {
+entry:
+  ret <4 x double> splat(double 0x0000000000800000)
+}
+
+; CHECK:	.globl	__ymm at 0000000000800000000000000080000000000000008000000000000000800000
+; CHECK:	.section	.rdata,"dr",discard,__ymm at 0000000000800000000000000080000000000000008000000000000000800000
+; CHECK:	.p2align	5, 0x0
+; CHECK: __ymm at 0000000000800000000000000080000000000000008000000000000000800000:
+; CHECK:	.quad	0x0000000000800000              # double 4.1445230292290475E-317
+; CHECK:	.quad	0x0000000000800000              # double 4.1445230292290475E-317
+; CHECK:	.quad	0x0000000000800000              # double 4.1445230292290475E-317
+; CHECK:	.quad	0x0000000000800000              # double 4.1445230292290475E-317


        


More information about the llvm-branch-commits mailing list