[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