Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Side by Side Diff: test/cctest/compiler/test-machine-operator-reducer.cc

Issue 2647353007: [wasm] Fix constant folding with signalling NaN. (Closed)
Patch Set: Remove unused variable Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/base/utils/random-number-generator.h" 5 #include "src/base/utils/random-number-generator.h"
6 #include "src/codegen.h" 6 #include "src/codegen.h"
7 #include "src/compiler/js-graph.h" 7 #include "src/compiler/js-graph.h"
8 #include "src/compiler/machine-operator-reducer.h" 8 #include "src/compiler/machine-operator-reducer.h"
9 #include "src/compiler/operator-properties.h" 9 #include "src/compiler/operator-properties.h"
10 #include "src/compiler/typer.h" 10 #include "src/compiler/typer.h"
(...skipping 832 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 R.binop = R.machine.Float32Sub(); 843 R.binop = R.machine.Float32Sub();
844 844
845 FOR_FLOAT32_INPUTS(pl) { 845 FOR_FLOAT32_INPUTS(pl) {
846 FOR_FLOAT32_INPUTS(pr) { 846 FOR_FLOAT32_INPUTS(pr) {
847 float x = *pl, y = *pr; 847 float x = *pl, y = *pr;
848 R.CheckFoldBinop<float>(x - y, x, y); 848 R.CheckFoldBinop<float>(x - y, x, y);
849 } 849 }
850 } 850 }
851 851
852 Node* x = R.Parameter(); 852 Node* x = R.Parameter();
853 Node* zero = R.Constant<float>(0.0);
854 Node* nan = R.Constant<float>(std::numeric_limits<float>::quiet_NaN()); 853 Node* nan = R.Constant<float>(std::numeric_limits<float>::quiet_NaN());
855 854
856 R.CheckBinop(x, x, zero); // x - 0 => x 855 // nan - x => nan
857 R.CheckBinop(nan, nan, x); // nan - x => nan 856 R.CheckFoldBinop(std::numeric_limits<float>::quiet_NaN(), nan, x);
858 R.CheckBinop(nan, x, nan); // x - nan => nan 857 // x - nan => nan
858 R.CheckFoldBinop(std::numeric_limits<float>::quiet_NaN(), x, nan);
859 } 859 }
860 860
861 TEST(ReduceFloat64Sub) { 861 TEST(ReduceFloat64Sub) {
862 ReducerTester R; 862 ReducerTester R;
863 R.binop = R.machine.Float64Sub(); 863 R.binop = R.machine.Float64Sub();
864 864
865 FOR_FLOAT64_INPUTS(pl) { 865 FOR_FLOAT64_INPUTS(pl) {
866 FOR_FLOAT64_INPUTS(pr) { 866 FOR_FLOAT64_INPUTS(pr) {
867 double x = *pl, y = *pr; 867 double x = *pl, y = *pr;
868 R.CheckFoldBinop<double>(x - y, x, y); 868 R.CheckFoldBinop<double>(x - y, x, y);
869 } 869 }
870 } 870 }
871 871
872 Node* x = R.Parameter(); 872 Node* x = R.Parameter();
873 Node* zero = R.Constant<double>(0.0);
874 Node* nan = R.Constant<double>(std::numeric_limits<double>::quiet_NaN()); 873 Node* nan = R.Constant<double>(std::numeric_limits<double>::quiet_NaN());
875 874
876 R.CheckBinop(x, x, zero); // x - 0 => x 875 // nan - x => nan
877 R.CheckBinop(nan, nan, x); // nan - x => nan 876 R.CheckFoldBinop(std::numeric_limits<double>::quiet_NaN(), nan, x);
878 R.CheckBinop(nan, x, nan); // x - nan => nan 877 // x - nan => nan
878 R.CheckFoldBinop(std::numeric_limits<double>::quiet_NaN(), x, nan);
879 } 879 }
880 880
881 // TODO(titzer): test MachineOperatorReducer for Word64And 881 // TODO(titzer): test MachineOperatorReducer for Word64And
882 // TODO(titzer): test MachineOperatorReducer for Word64Or 882 // TODO(titzer): test MachineOperatorReducer for Word64Or
883 // TODO(titzer): test MachineOperatorReducer for Word64Xor 883 // TODO(titzer): test MachineOperatorReducer for Word64Xor
884 // TODO(titzer): test MachineOperatorReducer for Word64Equal 884 // TODO(titzer): test MachineOperatorReducer for Word64Equal
885 // TODO(titzer): test MachineOperatorReducer for Word64Not 885 // TODO(titzer): test MachineOperatorReducer for Word64Not
886 // TODO(titzer): test MachineOperatorReducer for Int64Mul 886 // TODO(titzer): test MachineOperatorReducer for Int64Mul
887 // TODO(titzer): test MachineOperatorReducer for Int64UMul 887 // TODO(titzer): test MachineOperatorReducer for Int64UMul
888 // TODO(titzer): test MachineOperatorReducer for Int64Div 888 // TODO(titzer): test MachineOperatorReducer for Int64Div
889 // TODO(titzer): test MachineOperatorReducer for Uint64Div 889 // TODO(titzer): test MachineOperatorReducer for Uint64Div
890 // TODO(titzer): test MachineOperatorReducer for Int64Mod 890 // TODO(titzer): test MachineOperatorReducer for Int64Mod
891 // TODO(titzer): test MachineOperatorReducer for Uint64Mod 891 // TODO(titzer): test MachineOperatorReducer for Uint64Mod
892 // TODO(titzer): test MachineOperatorReducer for Int64Neg 892 // TODO(titzer): test MachineOperatorReducer for Int64Neg
893 // TODO(titzer): test MachineOperatorReducer for ChangeInt32ToFloat64 893 // TODO(titzer): test MachineOperatorReducer for ChangeInt32ToFloat64
894 // TODO(titzer): test MachineOperatorReducer for ChangeFloat64ToInt32 894 // TODO(titzer): test MachineOperatorReducer for ChangeFloat64ToInt32
895 // TODO(titzer): test MachineOperatorReducer for Float64Compare 895 // TODO(titzer): test MachineOperatorReducer for Float64Compare
896 // TODO(titzer): test MachineOperatorReducer for Float64Add 896 // TODO(titzer): test MachineOperatorReducer for Float64Add
897 // TODO(titzer): test MachineOperatorReducer for Float64Sub 897 // TODO(titzer): test MachineOperatorReducer for Float64Sub
898 // TODO(titzer): test MachineOperatorReducer for Float64Mul 898 // TODO(titzer): test MachineOperatorReducer for Float64Mul
899 // TODO(titzer): test MachineOperatorReducer for Float64Div 899 // TODO(titzer): test MachineOperatorReducer for Float64Div
900 // TODO(titzer): test MachineOperatorReducer for Float64Mod 900 // TODO(titzer): test MachineOperatorReducer for Float64Mod
901 901
902 } // namespace compiler 902 } // namespace compiler
903 } // namespace internal 903 } // namespace internal
904 } // namespace v8 904 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698