[llvm] [X86] Resolve FIXME: Add X86::FPCW as a rounding control register (PR #82452)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 20 18:00:02 PST 2024
https://github.com/AtariDreams updated https://github.com/llvm/llvm-project/pull/82452
>From 6c2452ac33acef9ff4d60d8738fb70e41e88f5d1 Mon Sep 17 00:00:00 2001
From: Rose <83477269+AtariDreams at users.noreply.github.com>
Date: Tue, 20 Feb 2024 20:41:40 -0500
Subject: [PATCH] [X86] Resolve FIXME: Add X86::FPCW as a rounding control
register
In tests, this seems to only cause the wait instruction to disappear, which I do not see as necessary in these particular cases.
---
llvm/lib/Target/X86/X86ISelLoweringCall.cpp | 4 +-
llvm/test/CodeGen/X86/fp-intrinsics.ll | 19 --------
.../CodeGen/X86/fp-strict-libcalls-msvc32.ll | 9 ----
llvm/test/CodeGen/X86/fp-strict-scalar-cmp.ll | 1 -
llvm/test/CodeGen/X86/fp-strict-scalar.ll | 2 -
llvm/test/CodeGen/X86/fp128-cast-strict.ll | 4 +-
llvm/test/CodeGen/X86/fp80-strict-libcalls.ll | 48 -------------------
llvm/test/CodeGen/X86/half-constrained.ll | 7 ---
llvm/test/CodeGen/X86/ldexp-f80.ll | 1 -
llvm/test/CodeGen/X86/vec-strict-128.ll | 2 -
10 files changed, 2 insertions(+), 95 deletions(-)
diff --git a/llvm/lib/Target/X86/X86ISelLoweringCall.cpp b/llvm/lib/Target/X86/X86ISelLoweringCall.cpp
index be8275c92e11ae..c7ef11aede886a 100644
--- a/llvm/lib/Target/X86/X86ISelLoweringCall.cpp
+++ b/llvm/lib/Target/X86/X86ISelLoweringCall.cpp
@@ -670,9 +670,7 @@ const MCPhysReg *X86TargetLowering::getScratchRegisters(CallingConv::ID) const {
}
ArrayRef<MCPhysReg> X86TargetLowering::getRoundingControlRegisters() const {
- // FIXME: We should def X86::FPCW for x87 as well. But it affects a lot of lit
- // tests at the moment, which is not what we expected.
- static const MCPhysReg RCRegs[] = {X86::MXCSR};
+ static const MCPhysReg RCRegs[] = {X86::FPCW, X86::MXCSR};
return RCRegs;
}
diff --git a/llvm/test/CodeGen/X86/fp-intrinsics.ll b/llvm/test/CodeGen/X86/fp-intrinsics.ll
index d2b45ee1e03e63..1387cac7fe1a70 100644
--- a/llvm/test/CodeGen/X86/fp-intrinsics.ll
+++ b/llvm/test/CodeGen/X86/fp-intrinsics.ll
@@ -301,7 +301,6 @@ define double @f6() #0 {
; X87-NEXT: fstpl {{[0-9]+}}(%esp)
; X87-NEXT: fldl {{\.?LCPI[0-9]+_[0-9]+}}
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll pow
; X87-NEXT: addl $28, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -413,7 +412,6 @@ define double @f8() #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll sin
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -464,7 +462,6 @@ define double @f9() #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll cos
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -515,7 +512,6 @@ define double @f10() #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll exp
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -566,7 +562,6 @@ define double @f11() #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: fldl {{\.?LCPI[0-9]+_[0-9]+}}
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll exp2
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -617,7 +612,6 @@ define double @f12() #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll log
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -668,7 +662,6 @@ define double @f13() #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll log10
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -719,7 +712,6 @@ define double @f14() #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll log2
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -770,7 +762,6 @@ define double @f15() #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: fldl {{\.?LCPI[0-9]+_[0-9]+}}
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll rint
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -818,7 +809,6 @@ define double @f16() #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: fldl {{\.?LCPI[0-9]+_[0-9]+}}
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll nearbyint
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -867,7 +857,6 @@ define double @f19() #0 {
; X87-NEXT: fstpl {{[0-9]+}}(%esp)
; X87-NEXT: fld1
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll fmod
; X87-NEXT: addl $28, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -1607,7 +1596,6 @@ define i32 @f23(double %x) #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: fldl {{[0-9]+}}(%esp)
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll lrint
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -1655,7 +1643,6 @@ define i32 @f24(float %x) #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: flds {{[0-9]+}}(%esp)
; X87-NEXT: fstps (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll lrintf
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -1703,7 +1690,6 @@ define i64 @f25(double %x) #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: fldl {{[0-9]+}}(%esp)
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll llrint
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -1751,7 +1737,6 @@ define i64 @f26(float %x) #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: flds {{[0-9]+}}(%esp)
; X87-NEXT: fstps (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll llrintf
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -1799,7 +1784,6 @@ define i32 @f27(double %x) #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: fldl {{[0-9]+}}(%esp)
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll lround
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -1846,7 +1830,6 @@ define i32 @f28(float %x) #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: flds {{[0-9]+}}(%esp)
; X87-NEXT: fstps (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll lroundf
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -1893,7 +1876,6 @@ define i64 @f29(double %x) #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: fldl {{[0-9]+}}(%esp)
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll llround
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
@@ -1940,7 +1922,6 @@ define i64 @f30(float %x) #0 {
; X87-NEXT: .cfi_def_cfa_offset 16
; X87-NEXT: flds {{[0-9]+}}(%esp)
; X87-NEXT: fstps (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll llroundf
; X87-NEXT: addl $12, %esp
; X87-NEXT: .cfi_def_cfa_offset 4
diff --git a/llvm/test/CodeGen/X86/fp-strict-libcalls-msvc32.ll b/llvm/test/CodeGen/X86/fp-strict-libcalls-msvc32.ll
index 1bc308bef8cccf..c9dd8a7374569f 100644
--- a/llvm/test/CodeGen/X86/fp-strict-libcalls-msvc32.ll
+++ b/llvm/test/CodeGen/X86/fp-strict-libcalls-msvc32.ll
@@ -7,7 +7,6 @@ define float @ceil(float %x) #0 {
; CHECK-NEXT: subl $12, %esp
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
; CHECK-NEXT: fstpl (%esp)
-; CHECK-NEXT: wait
; CHECK-NEXT: calll _ceil
; CHECK-NEXT: fstps {{[0-9]+}}(%esp)
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
@@ -24,7 +23,6 @@ define float @cos(float %x) #0 {
; CHECK-NEXT: subl $12, %esp
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
; CHECK-NEXT: fstpl (%esp)
-; CHECK-NEXT: wait
; CHECK-NEXT: calll _cos
; CHECK-NEXT: fstps {{[0-9]+}}(%esp)
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
@@ -41,7 +39,6 @@ define float @exp(float %x) #0 {
; CHECK-NEXT: subl $12, %esp
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
; CHECK-NEXT: fstpl (%esp)
-; CHECK-NEXT: wait
; CHECK-NEXT: calll _exp
; CHECK-NEXT: fstps {{[0-9]+}}(%esp)
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
@@ -58,7 +55,6 @@ define float @floor(float %x) #0 {
; CHECK-NEXT: subl $12, %esp
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
; CHECK-NEXT: fstpl (%esp)
-; CHECK-NEXT: wait
; CHECK-NEXT: calll _floor
; CHECK-NEXT: fstps {{[0-9]+}}(%esp)
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
@@ -78,7 +74,6 @@ define float @frem(float %x, float %y) #0 {
; CHECK-NEXT: fxch %st(1)
; CHECK-NEXT: fstpl {{[0-9]+}}(%esp)
; CHECK-NEXT: fstpl (%esp)
-; CHECK-NEXT: wait
; CHECK-NEXT: calll _fmod
; CHECK-NEXT: fstps {{[0-9]+}}(%esp)
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
@@ -95,7 +90,6 @@ define float @log(float %x) #0 {
; CHECK-NEXT: subl $12, %esp
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
; CHECK-NEXT: fstpl (%esp)
-; CHECK-NEXT: wait
; CHECK-NEXT: calll _log
; CHECK-NEXT: fstps {{[0-9]+}}(%esp)
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
@@ -112,7 +106,6 @@ define float @log10(float %x) #0 {
; CHECK-NEXT: subl $12, %esp
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
; CHECK-NEXT: fstpl (%esp)
-; CHECK-NEXT: wait
; CHECK-NEXT: calll _log10
; CHECK-NEXT: fstps {{[0-9]+}}(%esp)
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
@@ -132,7 +125,6 @@ define float @pow(float %x, float %y) #0 {
; CHECK-NEXT: fxch %st(1)
; CHECK-NEXT: fstpl {{[0-9]+}}(%esp)
; CHECK-NEXT: fstpl (%esp)
-; CHECK-NEXT: wait
; CHECK-NEXT: calll _pow
; CHECK-NEXT: fstps {{[0-9]+}}(%esp)
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
@@ -149,7 +141,6 @@ define float @sin(float %x) #0 {
; CHECK-NEXT: subl $12, %esp
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
; CHECK-NEXT: fstpl (%esp)
-; CHECK-NEXT: wait
; CHECK-NEXT: calll _sin
; CHECK-NEXT: fstps {{[0-9]+}}(%esp)
; CHECK-NEXT: flds {{[0-9]+}}(%esp)
diff --git a/llvm/test/CodeGen/X86/fp-strict-scalar-cmp.ll b/llvm/test/CodeGen/X86/fp-strict-scalar-cmp.ll
index cb1876fee05aea..47a83e9ae581a2 100644
--- a/llvm/test/CodeGen/X86/fp-strict-scalar-cmp.ll
+++ b/llvm/test/CodeGen/X86/fp-strict-scalar-cmp.ll
@@ -4186,7 +4186,6 @@ define void @foo(float %0, float %1) #0 {
; X87-CMOV-NEXT: flds {{[0-9]+}}(%esp)
; X87-CMOV-NEXT: fucompi %st(1), %st
; X87-CMOV-NEXT: fstp %st(0)
-; X87-CMOV-NEXT: wait
; X87-CMOV-NEXT: ja bar # TAILCALL
; X87-CMOV-NEXT: # %bb.1:
; X87-CMOV-NEXT: retl
diff --git a/llvm/test/CodeGen/X86/fp-strict-scalar.ll b/llvm/test/CodeGen/X86/fp-strict-scalar.ll
index f1be74f5c3ac4c..5939bb4189b7ab 100644
--- a/llvm/test/CodeGen/X86/fp-strict-scalar.ll
+++ b/llvm/test/CodeGen/X86/fp-strict-scalar.ll
@@ -660,7 +660,6 @@ define double @fma_f64(double %a, double %b, double %c) nounwind strictfp {
; X87-NEXT: fstpl {{[0-9]+}}(%esp)
; X87-NEXT: fstpl {{[0-9]+}}(%esp)
; X87-NEXT: fstpl (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll fma
; X87-NEXT: addl $24, %esp
; X87-NEXT: retl
@@ -717,7 +716,6 @@ define float @fma_f32(float %a, float %b, float %c) nounwind strictfp {
; X87-NEXT: fstps {{[0-9]+}}(%esp)
; X87-NEXT: fstps {{[0-9]+}}(%esp)
; X87-NEXT: fstps (%esp)
-; X87-NEXT: wait
; X87-NEXT: calll fmaf
; X87-NEXT: addl $12, %esp
; X87-NEXT: retl
diff --git a/llvm/test/CodeGen/X86/fp128-cast-strict.ll b/llvm/test/CodeGen/X86/fp128-cast-strict.ll
index f141153d059acb..a7cc2ae49e005f 100644
--- a/llvm/test/CodeGen/X86/fp128-cast-strict.ll
+++ b/llvm/test/CodeGen/X86/fp128-cast-strict.ll
@@ -28,7 +28,7 @@ define dso_local void @TestFPExtF16_F128() nounwind strictfp {
; X64-AVX512-LABEL: TestFPExtF16_F128:
; X64-AVX512: # %bb.0: # %entry
; X64-AVX512-NEXT: pushq %rax
-; X64-AVX512-NEXT: vmovsh vf16(%rip), %xmm0
+; X64-AVX512-NEXT: vmovsh {{.*#+}} xmm0 = mem[0],zero,zero,zero,zero,zero,zero,zero
; X64-AVX512-NEXT: callq __extendhftf2 at PLT
; X64-AVX512-NEXT: vmovaps %xmm0, vf128(%rip)
; X64-AVX512-NEXT: popq %rax
@@ -167,7 +167,6 @@ define dso_local void @TestFPExtF80_F128() nounwind strictfp {
; X64-SSE-NEXT: subq $24, %rsp
; X64-SSE-NEXT: fldt vf80(%rip)
; X64-SSE-NEXT: fstpt (%rsp)
-; X64-SSE-NEXT: wait
; X64-SSE-NEXT: callq __extendxftf2 at PLT
; X64-SSE-NEXT: movaps %xmm0, vf128(%rip)
; X64-SSE-NEXT: addq $24, %rsp
@@ -178,7 +177,6 @@ define dso_local void @TestFPExtF80_F128() nounwind strictfp {
; X64-AVX-NEXT: subq $24, %rsp
; X64-AVX-NEXT: fldt vf80(%rip)
; X64-AVX-NEXT: fstpt (%rsp)
-; X64-AVX-NEXT: wait
; X64-AVX-NEXT: callq __extendxftf2 at PLT
; X64-AVX-NEXT: vmovaps %xmm0, vf128(%rip)
; X64-AVX-NEXT: addq $24, %rsp
diff --git a/llvm/test/CodeGen/X86/fp80-strict-libcalls.ll b/llvm/test/CodeGen/X86/fp80-strict-libcalls.ll
index 4d50b15e5c185b..9462acd53c4392 100644
--- a/llvm/test/CodeGen/X86/fp80-strict-libcalls.ll
+++ b/llvm/test/CodeGen/X86/fp80-strict-libcalls.ll
@@ -12,7 +12,6 @@ define x86_fp80 @fma(x86_fp80 %x, x86_fp80 %y, x86_fp80 %z) nounwind strictfp {
; X86-NEXT: fstpt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll fmal
; X86-NEXT: addl $36, %esp
; X86-NEXT: retl
@@ -26,7 +25,6 @@ define x86_fp80 @fma(x86_fp80 %x, x86_fp80 %y, x86_fp80 %z) nounwind strictfp {
; X64-NEXT: fstpt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq fmal at PLT
; X64-NEXT: addq $56, %rsp
; X64-NEXT: retq
@@ -43,7 +41,6 @@ define x86_fp80 @frem(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll fmodl
; X86-NEXT: addl $24, %esp
; X86-NEXT: retl
@@ -55,7 +52,6 @@ define x86_fp80 @frem(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq fmodl at PLT
; X64-NEXT: addq $40, %rsp
; X64-NEXT: retq
@@ -70,7 +66,6 @@ define x86_fp80 @ceil(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll ceill
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -80,7 +75,6 @@ define x86_fp80 @ceil(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq ceill at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -95,7 +89,6 @@ define x86_fp80 @cos(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll cosl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -105,7 +98,6 @@ define x86_fp80 @cos(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq cosl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -120,7 +112,6 @@ define x86_fp80 @exp(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll expl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -130,7 +121,6 @@ define x86_fp80 @exp(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq expl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -145,7 +135,6 @@ define x86_fp80 @exp2(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll exp2l
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -155,7 +144,6 @@ define x86_fp80 @exp2(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq exp2l at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -170,7 +158,6 @@ define x86_fp80 @floor(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll floorl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -180,7 +167,6 @@ define x86_fp80 @floor(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq floorl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -195,7 +181,6 @@ define x86_fp80 @log(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll logl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -205,7 +190,6 @@ define x86_fp80 @log(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq logl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -220,7 +204,6 @@ define x86_fp80 @log10(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll log10l
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -230,7 +213,6 @@ define x86_fp80 @log10(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq log10l at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -245,7 +227,6 @@ define x86_fp80 @log2(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll log2l
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -255,7 +236,6 @@ define x86_fp80 @log2(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq log2l at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -272,7 +252,6 @@ define x86_fp80 @maxnum(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll fmaxl
; X86-NEXT: addl $24, %esp
; X86-NEXT: retl
@@ -284,7 +263,6 @@ define x86_fp80 @maxnum(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq fmaxl at PLT
; X64-NEXT: addq $40, %rsp
; X64-NEXT: retq
@@ -301,7 +279,6 @@ define x86_fp80 @minnum(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll fminl
; X86-NEXT: addl $24, %esp
; X86-NEXT: retl
@@ -313,7 +290,6 @@ define x86_fp80 @minnum(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq fminl at PLT
; X64-NEXT: addq $40, %rsp
; X64-NEXT: retq
@@ -328,7 +304,6 @@ define x86_fp80 @nearbyint(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll nearbyintl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -338,7 +313,6 @@ define x86_fp80 @nearbyint(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq nearbyintl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -355,7 +329,6 @@ define x86_fp80 @pow(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll powl
; X86-NEXT: addl $24, %esp
; X86-NEXT: retl
@@ -367,7 +340,6 @@ define x86_fp80 @pow(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq powl at PLT
; X64-NEXT: addq $40, %rsp
; X64-NEXT: retq
@@ -385,7 +357,6 @@ define x86_fp80 @powi(x86_fp80 %x, i32 %y) nounwind strictfp {
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
; X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll __powixf2
; X86-NEXT: addl $16, %esp
; X86-NEXT: retl
@@ -395,7 +366,6 @@ define x86_fp80 @powi(x86_fp80 %x, i32 %y) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq __powixf2 at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -410,7 +380,6 @@ define x86_fp80 @rint(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll rintl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -420,7 +389,6 @@ define x86_fp80 @rint(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq rintl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -435,7 +403,6 @@ define x86_fp80 @round(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll roundl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -445,7 +412,6 @@ define x86_fp80 @round(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq roundl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -460,7 +426,6 @@ define x86_fp80 @roundeven(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll roundevenl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -470,7 +435,6 @@ define x86_fp80 @roundeven(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq roundevenl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -485,7 +449,6 @@ define x86_fp80 @sin(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll sinl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -495,7 +458,6 @@ define x86_fp80 @sin(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq sinl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -510,7 +472,6 @@ define x86_fp80 @trunc(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll truncl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -520,7 +481,6 @@ define x86_fp80 @trunc(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq truncl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -535,7 +495,6 @@ define i32 @lrint(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll lrintl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -545,7 +504,6 @@ define i32 @lrint(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq lrintl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -560,7 +518,6 @@ define i64 @llrint(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll llrintl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -570,7 +527,6 @@ define i64 @llrint(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq llrintl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -585,7 +541,6 @@ define i32 @lround(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll lroundl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -595,7 +550,6 @@ define i32 @lround(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq lroundl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
@@ -610,7 +564,6 @@ define i64 @llround(x86_fp80 %x) nounwind strictfp {
; X86-NEXT: subl $12, %esp
; X86-NEXT: fldt {{[0-9]+}}(%esp)
; X86-NEXT: fstpt (%esp)
-; X86-NEXT: wait
; X86-NEXT: calll llroundl
; X86-NEXT: addl $12, %esp
; X86-NEXT: retl
@@ -620,7 +573,6 @@ define i64 @llround(x86_fp80 %x) nounwind strictfp {
; X64-NEXT: subq $24, %rsp
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq llroundl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: retq
diff --git a/llvm/test/CodeGen/X86/half-constrained.ll b/llvm/test/CodeGen/X86/half-constrained.ll
index b4db61a4a4a342..bf80fc496d594e 100644
--- a/llvm/test/CodeGen/X86/half-constrained.ll
+++ b/llvm/test/CodeGen/X86/half-constrained.ll
@@ -165,7 +165,6 @@ define void @float_to_half(float %0) strictfp {
; X32-NOF16C-NEXT: .cfi_def_cfa_offset 16
; X32-NOF16C-NEXT: flds {{[0-9]+}}(%esp)
; X32-NOF16C-NEXT: fstps (%esp)
-; X32-NOF16C-NEXT: wait
; X32-NOF16C-NEXT: calll __gnu_f2h_ieee
; X32-NOF16C-NEXT: movw %ax, a
; X32-NOF16C-NEXT: addl $12, %esp
@@ -213,7 +212,6 @@ define void @double_to_half(double %0) strictfp {
; X32-NOF16C-NEXT: .cfi_def_cfa_offset 16
; X32-NOF16C-NEXT: fldl {{[0-9]+}}(%esp)
; X32-NOF16C-NEXT: fstpl (%esp)
-; X32-NOF16C-NEXT: wait
; X32-NOF16C-NEXT: calll __truncdfhf2
; X32-NOF16C-NEXT: movw %ax, a
; X32-NOF16C-NEXT: addl $12, %esp
@@ -266,7 +264,6 @@ define void @fp80_to_half(x86_fp80 %0) strictfp {
; X32-NOF16C-NEXT: .cfi_def_cfa_offset 16
; X32-NOF16C-NEXT: fldt {{[0-9]+}}(%esp)
; X32-NOF16C-NEXT: fstpt (%esp)
-; X32-NOF16C-NEXT: wait
; X32-NOF16C-NEXT: calll __truncxfhf2
; X32-NOF16C-NEXT: movw %ax, a
; X32-NOF16C-NEXT: addl $12, %esp
@@ -279,7 +276,6 @@ define void @fp80_to_half(x86_fp80 %0) strictfp {
; X32-F16C-NEXT: .cfi_def_cfa_offset 16
; X32-F16C-NEXT: fldt {{[0-9]+}}(%esp)
; X32-F16C-NEXT: fstpt (%esp)
-; X32-F16C-NEXT: wait
; X32-F16C-NEXT: calll __truncxfhf2
; X32-F16C-NEXT: vpextrw $0, %xmm0, a
; X32-F16C-NEXT: addl $12, %esp
@@ -292,7 +288,6 @@ define void @fp80_to_half(x86_fp80 %0) strictfp {
; X64-NOF16C-NEXT: .cfi_def_cfa_offset 32
; X64-NOF16C-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NOF16C-NEXT: fstpt (%rsp)
-; X64-NOF16C-NEXT: wait
; X64-NOF16C-NEXT: callq __truncxfhf2 at PLT
; X64-NOF16C-NEXT: pextrw $0, %xmm0, %eax
; X64-NOF16C-NEXT: movq a at GOTPCREL(%rip), %rcx
@@ -307,7 +302,6 @@ define void @fp80_to_half(x86_fp80 %0) strictfp {
; X64-F16C-NEXT: .cfi_def_cfa_offset 32
; X64-F16C-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-F16C-NEXT: fstpt (%rsp)
-; X64-F16C-NEXT: wait
; X64-F16C-NEXT: callq __truncxfhf2 at PLT
; X64-F16C-NEXT: movq a at GOTPCREL(%rip), %rax
; X64-F16C-NEXT: vpextrw $0, %xmm0, (%rax)
@@ -335,7 +329,6 @@ define void @add() strictfp {
; X32-NOF16C-NEXT: flds {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload
; X32-NOF16C-NEXT: faddp %st, %st(1)
; X32-NOF16C-NEXT: fstps (%esp)
-; X32-NOF16C-NEXT: wait
; X32-NOF16C-NEXT: calll __gnu_f2h_ieee
; X32-NOF16C-NEXT: movw %ax, c
; X32-NOF16C-NEXT: addl $12, %esp
diff --git a/llvm/test/CodeGen/X86/ldexp-f80.ll b/llvm/test/CodeGen/X86/ldexp-f80.ll
index 3a10eab2f47cbb..6d733f602fc55c 100644
--- a/llvm/test/CodeGen/X86/ldexp-f80.ll
+++ b/llvm/test/CodeGen/X86/ldexp-f80.ll
@@ -26,7 +26,6 @@ define x86_fp80 @test_strict_ldexp_f80_i32(ptr addrspace(1) %out, x86_fp80 %a, i
; X64-NEXT: movl %esi, %edi
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
; X64-NEXT: fstpt (%rsp)
-; X64-NEXT: wait
; X64-NEXT: callq ldexpl at PLT
; X64-NEXT: addq $24, %rsp
; X64-NEXT: .cfi_def_cfa_offset 8
diff --git a/llvm/test/CodeGen/X86/vec-strict-128.ll b/llvm/test/CodeGen/X86/vec-strict-128.ll
index 84c0ff61cf9b7d..ee00f01af1a3d4 100644
--- a/llvm/test/CodeGen/X86/vec-strict-128.ll
+++ b/llvm/test/CodeGen/X86/vec-strict-128.ll
@@ -271,7 +271,6 @@ define <4 x float> @f13(<4 x float> %a, <4 x float> %b, <4 x float> %c) #0 {
; SSE-X86-NEXT: fstps {{[0-9]+}}(%esp)
; SSE-X86-NEXT: fldt {{[-0-9]+}}(%e{{[sb]}}p) # 10-byte Folded Reload
; SSE-X86-NEXT: fstps {{[0-9]+}}(%esp)
-; SSE-X86-NEXT: wait
; SSE-X86-NEXT: calll fmaf
; SSE-X86-NEXT: fstps {{[0-9]+}}(%esp)
; SSE-X86-NEXT: wait
@@ -363,7 +362,6 @@ define <2 x double> @f14(<2 x double> %a, <2 x double> %b, <2 x double> %c) #0 {
; SSE-X86-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload
; SSE-X86-NEXT: movhps %xmm0, (%esp)
; SSE-X86-NEXT: fstpl {{[0-9]+}}(%esp)
-; SSE-X86-NEXT: wait
; SSE-X86-NEXT: calll fma
; SSE-X86-NEXT: fstpl {{[0-9]+}}(%esp)
; SSE-X86-NEXT: wait
More information about the llvm-commits
mailing list