mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-11 21:45:16 +00:00
[legalize-types] Remove stale entries from SoftenedFloats.
Summary: When replacing a SDValue, we should remove the replaced value from SoftenedFloats (and possibly the other maps as well?). When we revisit a Node because it needs analyzing again, we have to remove all result values from SoftenedFloats (and possibly other maps?). This fixes the fp128 test failures with expensive checks for X86. I think we probably should also remove the values from the other maps (PromotedIntegers and so on), let me know what you think. Reviewers: baldrick, bogner, davidxl, ab, arsenm, pirama, chh, RKSimon Reviewed By: chh Subscribers: danalbert, wdng, srhines, hfinkel, sepavloff, llvm-commits Differential Revision: https://reviews.llvm.org/D29265 llvm-svn: 296964
This commit is contained in:
parent
ba51722072
commit
21e448ed02
@ -330,6 +330,12 @@ ScanOperands:
|
||||
// to the worklist etc.
|
||||
if (NeedsReanalyzing) {
|
||||
assert(N->getNodeId() == ReadyToProcess && "Node ID recalculated?");
|
||||
|
||||
// Remove any result values from SoftenedFloats as N will be revisited
|
||||
// again.
|
||||
for (unsigned i = 0, NumResults = N->getNumValues(); i < NumResults; ++i)
|
||||
SoftenedFloats.erase(SDValue(N, i));
|
||||
|
||||
N->setNodeId(NewNode);
|
||||
// Recompute the NodeId and correct processed operands, adding the node to
|
||||
// the worklist if ready.
|
||||
@ -748,6 +754,8 @@ void DAGTypeLegalizer::ReplaceValueWith(SDValue From, SDValue To) {
|
||||
// new uses of From due to CSE. If this happens, replace the new uses of
|
||||
// From with To.
|
||||
} while (!From.use_empty());
|
||||
|
||||
SoftenedFloats.erase(From);
|
||||
}
|
||||
|
||||
void DAGTypeLegalizer::SetPromotedInteger(SDValue Op, SDValue Result) {
|
||||
|
@ -1,5 +1,7 @@
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s
|
||||
|
||||
define i32 @TestComp128GT(fp128 %d1, fp128 %d2) {
|
||||
entry:
|
||||
|
@ -1,4 +1,5 @@
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx | FileCheck %s --check-prefix=X64
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s --check-prefix=X64
|
||||
;
|
||||
; These cases check if x86_64-linux-android works with -O2 -g,
|
||||
; especially CSE matching needed by SoftenFloatRes_LOAD.
|
||||
|
@ -1,5 +1,7 @@
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s
|
||||
|
||||
; These tests were generated from simplified libm C code.
|
||||
; When compiled for the x86_64-linux-android target,
|
||||
|
@ -1,5 +1,7 @@
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s
|
||||
|
||||
; Check all soft floating point library function calls.
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s
|
||||
|
||||
; __float128 myFP128 = 1.0L; // x86_64-linux-android
|
||||
@my_fp128 = global fp128 0xL00000000000000003FFF000000000000, align 16
|
||||
|
@ -1,8 +1,12 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx | FileCheck %s --check-prefix=MMX
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx | FileCheck %s --check-prefix=MMX
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s --check-prefix=MMX
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s --check-prefix=MMX
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-android \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s
|
||||
; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu \
|
||||
; RUN: -enable-legalize-types-checking | FileCheck %s
|
||||
|
||||
define void @test_select(fp128* %p, fp128* %q, i1 zeroext %c) {
|
||||
; MMX-LABEL: test_select:
|
||||
|
Loading…
Reference in New Issue
Block a user