[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