[llvm] 1d56138 - [X86] X86FixupVectorConstants - create f32/f64 broadcast constants if the source constant data was f32/f64
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 12 02:32:16 PST 2023
Author: Simon Pilgrim
Date: 2023-12-12T10:32:04Z
New Revision: 1d56138d741ebec81ac7a6dada10f5d6b891a768
URL: https://github.com/llvm/llvm-project/commit/1d56138d741ebec81ac7a6dada10f5d6b891a768
DIFF: https://github.com/llvm/llvm-project/commit/1d56138d741ebec81ac7a6dada10f5d6b891a768.diff
LOG: [X86] X86FixupVectorConstants - create f32/f64 broadcast constants if the source constant data was f32/f64
This partially reverts 33819f3bfb9c - the asm comments become a lot messier in #73509 - we're better off ensuring the constant data is the correct type in DAG
Added:
Modified:
llvm/lib/Target/X86/X86FixupVectorConstants.cpp
llvm/test/CodeGen/X86/combine-concatvectors.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86FixupVectorConstants.cpp b/llvm/lib/Target/X86/X86FixupVectorConstants.cpp
index 5cc3b26dddafa8..483becebbe1066 100644
--- a/llvm/lib/Target/X86/X86FixupVectorConstants.cpp
+++ b/llvm/lib/Target/X86/X86FixupVectorConstants.cpp
@@ -212,8 +212,8 @@ static Constant *rebuildSplatableConstant(const Constant *C,
SmallVector<uint32_t> RawBits;
for (unsigned I = 0; I != SplatBitWidth; I += 32)
RawBits.push_back(Splat->extractBits(32, I).getZExtValue());
- if (SclTy->isFloatingPointTy())
- return ConstantDataVector::getFP(Type::getFloatTy(Ctx), RawBits);
+ if (SclTy->isFloatTy())
+ return ConstantDataVector::getFP(SclTy, RawBits);
return ConstantDataVector::get(Ctx, RawBits);
}
@@ -221,8 +221,8 @@ static Constant *rebuildSplatableConstant(const Constant *C,
SmallVector<uint64_t> RawBits;
for (unsigned I = 0; I != SplatBitWidth; I += 64)
RawBits.push_back(Splat->extractBits(64, I).getZExtValue());
- if (SclTy->isFloatingPointTy())
- return ConstantDataVector::getFP(Type::getDoubleTy(Ctx), RawBits);
+ if (SclTy->isDoubleTy())
+ return ConstantDataVector::getFP(SclTy, RawBits);
return ConstantDataVector::get(Ctx, RawBits);
}
diff --git a/llvm/test/CodeGen/X86/combine-concatvectors.ll b/llvm/test/CodeGen/X86/combine-concatvectors.ll
index 31eaa1b205aac9..8a0e39c57b787a 100644
--- a/llvm/test/CodeGen/X86/combine-concatvectors.ll
+++ b/llvm/test/CodeGen/X86/combine-concatvectors.ll
@@ -48,7 +48,7 @@ define void @concat_of_broadcast_v2f64_v4f64() {
; AVX1-NEXT: movl $1091567616, 30256(%rax) # imm = 0x41100000
; AVX1-NEXT: movabsq $4294967297, %rcx # imm = 0x100000001
; AVX1-NEXT: movq %rcx, 46348(%rax)
-; AVX1-NEXT: vbroadcastss {{.*#+}} ymm0 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
+; AVX1-NEXT: vbroadcastss {{.*#+}} ymm0 = [1065353216,1065353216,1065353216,1065353216,1065353216,1065353216,1065353216,1065353216]
; AVX1-NEXT: vmovups %ymm0, 48296(%rax)
; AVX1-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
; AVX1-NEXT: vmovsd %xmm0, 47372(%rax)
More information about the llvm-commits
mailing list