[PATCH] D69784: Set the floating point status register as reserved

LiuChen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Nov 3 22:52:35 PST 2019


LiuChen3 created this revision.
LiuChen3 added a reviewer: pengfei.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.

This patch sets the FPSW (X87 floating-point status register) as a reserved
physical register and fix the test failure caused by D68854 <https://reviews.llvm.org/D68854>.

Before this patch, some tests will fail because it implicit uses FPSW without
define it. Setting the FPSW as a reserved physical register will skip liveness
analysis because it is always live.


https://reviews.llvm.org/D69784

Files:
  llvm/lib/Target/X86/X86RegisterInfo.cpp
  llvm/test/CodeGen/X86/pr34080-2.ll


Index: llvm/test/CodeGen/X86/pr34080-2.ll
===================================================================
--- llvm/test/CodeGen/X86/pr34080-2.ll
+++ llvm/test/CodeGen/X86/pr34080-2.ll
@@ -62,13 +62,13 @@
 ; CHECK-NEXT:    imull $60000, 24(%ebx), %ecx # imm = 0xEA60
 ; CHECK-NEXT:    addl %eax, %ecx
 ; CHECK-NEXT:    fldl 28(%ebx)
+; CHECK-NEXT:    fmuls {{\.LCPI.*}}
 ; CHECK-NEXT:    fnstcw {{[0-9]+}}(%esp)
 ; CHECK-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
 ; CHECK-NEXT:    orl $3072, %eax # imm = 0xC00
 ; CHECK-NEXT:    movw %ax, {{[0-9]+}}(%esp)
 ; CHECK-NEXT:    movl %ecx, %eax
 ; CHECK-NEXT:    sarl $31, %eax
-; CHECK-NEXT:    fmuls {{\.LCPI.*}}
 ; CHECK-NEXT:    fldcw {{[0-9]+}}(%esp)
 ; CHECK-NEXT:    fistpll {{[0-9]+}}(%esp)
 ; CHECK-NEXT:    fldcw {{[0-9]+}}(%esp)
Index: llvm/lib/Target/X86/X86RegisterInfo.cpp
===================================================================
--- llvm/lib/Target/X86/X86RegisterInfo.cpp
+++ llvm/lib/Target/X86/X86RegisterInfo.cpp
@@ -523,6 +523,9 @@
   // Set the floating point control register as reserved.
   Reserved.set(X86::FPCW);
 
+  // Set the floating point status register as reserved.
+  Reserved.set(X86::FPSW);
+
   // Set the SIMD floating point control register as reserved.
   Reserved.set(X86::MXCSR);
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D69784.227646.patch
Type: text/x-patch
Size: 1280 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191104/6a91c28f/attachment.bin>


More information about the llvm-commits mailing list