Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions llvm/lib/Target/X86/X86AsmPrinter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1002,11 +1002,11 @@ static bool usesMSVCFloatingPoint(const Triple &TT, const Module &M) {

for (const Function &F : M) {
for (const Instruction &I : instructions(F)) {
if (I.getType()->isFPOrFPVectorTy())
if (I.getType()->isFloatingPointTy())
return true;

for (const auto &Op : I.operands()) {
if (Op->getType()->isFPOrFPVectorTy())
if (Op->getType()->isFloatingPointTy())
return true;
}
}
Expand Down
32 changes: 32 additions & 0 deletions llvm/test/CodeGen/X86/fltused_vec.ll
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
; The purpose of this test to verify that the fltused symbol is
; not emitted when purely vector floating point operations are used on Windows.

; RUN: llc < %s -mtriple i686-pc-win32 | FileCheck %s --check-prefix WIN32
; RUN: llc < %s -mtriple x86_64-pc-win32 | FileCheck %s --check-prefix WIN64
; RUN: llc < %s -O0 -mtriple i686-pc-win32 | FileCheck %s --check-prefix WIN32
; RUN: llc < %s -O0 -mtriple x86_64-pc-win32 | FileCheck %s --check-prefix WIN64
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to test O0

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed. Carry over from other test.


@foo = external dso_local global [4 x float], align 16

; Function Attrs: noinline nounwind optnone sspstrong uwtable
define dso_local <4 x float> @func() #0 {
entry:
%__p.addr.i = alloca ptr, align 8
%vector1 = alloca <4 x float>, align 16
store ptr @foo, ptr %__p.addr.i, align 8
%0 = load ptr, ptr %__p.addr.i, align 8
%1 = load <4 x float>, ptr %0, align 16
store <4 x float> %1, ptr %vector1, align 16
%2 = load <4 x float>, ptr %vector1, align 16
ret <4 x float> %2
}

define <4 x float> @mul_vectors(<4 x float> %a, <4 x float> %b) {
entry:
%result = fmul <4 x float> %a, %b
ret <4 x float> %result
}

; _fltused is determined at a module level
; WIN32-NOT: .globl __fltused
; WIN64-NOT: .globl _fltused
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about use CHECK-NOT: .globl {{.*}}_fltused. We don't need to distiguish 32/64 then.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed, though i used {{_?}}_fltused instead.

Loading