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

Side by Side Diff: src/compiler/machine-operator.h

Issue 531093002: Lower simplified StringLessThan[OrEqual] to runtime call. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/compiler/simplified-lowering.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 #ifndef V8_COMPILER_MACHINE_OPERATOR_H_ 5 #ifndef V8_COMPILER_MACHINE_OPERATOR_H_
6 #define V8_COMPILER_MACHINE_OPERATOR_H_ 6 #define V8_COMPILER_MACHINE_OPERATOR_H_
7 7
8 #include "src/compiler/machine-type.h" 8 #include "src/compiler/machine-type.h"
9 #include "src/compiler/opcodes.h" 9 #include "src/compiler/opcodes.h"
10 #include "src/compiler/operator.h" 10 #include "src/compiler/operator.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 SIMPLE(name, \ 53 SIMPLE(name, \
54 Operator::kAssociative | Operator::kCommutative | Operator::kPure, 2, \ 54 Operator::kAssociative | Operator::kCommutative | Operator::kPure, 2, \
55 1) 55 1)
56 #define BINOP_ACO(name) \ 56 #define BINOP_ACO(name) \
57 SIMPLE(name, \ 57 SIMPLE(name, \
58 Operator::kAssociative | Operator::kCommutative | Operator::kPure, 2, \ 58 Operator::kAssociative | Operator::kCommutative | Operator::kPure, 2, \
59 2) 59 2)
60 #define UNOP(name) SIMPLE(name, Operator::kPure, 1, 1) 60 #define UNOP(name) SIMPLE(name, Operator::kPure, 1, 1)
61 61
62 #define WORD_SIZE(x) return is64() ? Word64##x() : Word32##x() 62 #define WORD_SIZE(x) return is64() ? Word64##x() : Word32##x()
63 #define INT_SIZE(x) return is64() ? Int64##x() : Int32##x()
63 64
64 Operator* Load(MachineType rep) { // load [base + index] 65 Operator* Load(MachineType rep) { // load [base + index]
65 OP1(Load, MachineType, rep, Operator::kNoWrite, 2, 1); 66 OP1(Load, MachineType, rep, Operator::kNoWrite, 2, 1);
66 } 67 }
67 // store [base + index], value 68 // store [base + index], value
68 Operator* Store(MachineType rep, WriteBarrierKind kind) { 69 Operator* Store(MachineType rep, WriteBarrierKind kind) {
69 StoreRepresentation store_rep = {rep, kind}; 70 StoreRepresentation store_rep = {rep, kind};
70 OP1(Store, StoreRepresentation, store_rep, Operator::kNoRead, 3, 0); 71 OP1(Store, StoreRepresentation, store_rep, Operator::kNoRead, 3, 0);
71 } 72 }
72 73
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 Operator* Int64Add() { BINOP_AC(Int64Add); } 115 Operator* Int64Add() { BINOP_AC(Int64Add); }
115 Operator* Int64Sub() { BINOP(Int64Sub); } 116 Operator* Int64Sub() { BINOP(Int64Sub); }
116 Operator* Int64Mul() { BINOP_AC(Int64Mul); } 117 Operator* Int64Mul() { BINOP_AC(Int64Mul); }
117 Operator* Int64Div() { BINOP(Int64Div); } 118 Operator* Int64Div() { BINOP(Int64Div); }
118 Operator* Int64UDiv() { BINOP(Int64UDiv); } 119 Operator* Int64UDiv() { BINOP(Int64UDiv); }
119 Operator* Int64Mod() { BINOP(Int64Mod); } 120 Operator* Int64Mod() { BINOP(Int64Mod); }
120 Operator* Int64UMod() { BINOP(Int64UMod); } 121 Operator* Int64UMod() { BINOP(Int64UMod); }
121 Operator* Int64LessThan() { BINOP(Int64LessThan); } 122 Operator* Int64LessThan() { BINOP(Int64LessThan); }
122 Operator* Int64LessThanOrEqual() { BINOP(Int64LessThanOrEqual); } 123 Operator* Int64LessThanOrEqual() { BINOP(Int64LessThanOrEqual); }
123 124
125 // Signed comparison of word-sized integer values, translates to int32/int64
126 // comparisons depending on the word-size of the machine.
127 Operator* IntLessThan() { INT_SIZE(LessThan); }
128 Operator* IntLessThanOrEqual() { INT_SIZE(LessThanOrEqual); }
129
124 // Convert representation of integers between float64 and int32/uint32. 130 // Convert representation of integers between float64 and int32/uint32.
125 // The precise rounding mode and handling of out of range inputs are *not* 131 // The precise rounding mode and handling of out of range inputs are *not*
126 // defined for these operators, since they are intended only for use with 132 // defined for these operators, since they are intended only for use with
127 // integers. 133 // integers.
128 Operator* ChangeInt32ToFloat64() { UNOP(ChangeInt32ToFloat64); } 134 Operator* ChangeInt32ToFloat64() { UNOP(ChangeInt32ToFloat64); }
129 Operator* ChangeUint32ToFloat64() { UNOP(ChangeUint32ToFloat64); } 135 Operator* ChangeUint32ToFloat64() { UNOP(ChangeUint32ToFloat64); }
130 Operator* ChangeFloat64ToInt32() { UNOP(ChangeFloat64ToInt32); } 136 Operator* ChangeFloat64ToInt32() { UNOP(ChangeFloat64ToInt32); }
131 Operator* ChangeFloat64ToUint32() { UNOP(ChangeFloat64ToUint32); } 137 Operator* ChangeFloat64ToUint32() { UNOP(ChangeFloat64ToUint32); }
132 138
133 // Sign/zero extend int32/uint32 to int64/uint64. 139 // Sign/zero extend int32/uint32 to int64/uint64.
(...skipping 16 matching lines...) Expand all
150 // Floating point comparisons complying to IEEE 754. 156 // Floating point comparisons complying to IEEE 754.
151 Operator* Float64Equal() { BINOP_C(Float64Equal); } 157 Operator* Float64Equal() { BINOP_C(Float64Equal); }
152 Operator* Float64LessThan() { BINOP(Float64LessThan); } 158 Operator* Float64LessThan() { BINOP(Float64LessThan); }
153 Operator* Float64LessThanOrEqual() { BINOP(Float64LessThanOrEqual); } 159 Operator* Float64LessThanOrEqual() { BINOP(Float64LessThanOrEqual); }
154 160
155 inline bool is32() const { return word_ == kRepWord32; } 161 inline bool is32() const { return word_ == kRepWord32; }
156 inline bool is64() const { return word_ == kRepWord64; } 162 inline bool is64() const { return word_ == kRepWord64; }
157 inline MachineType word() const { return word_; } 163 inline MachineType word() const { return word_; }
158 164
159 #undef WORD_SIZE 165 #undef WORD_SIZE
166 #undef INT_SIZE
160 #undef UNOP 167 #undef UNOP
161 #undef BINOP 168 #undef BINOP
162 #undef OP1 169 #undef OP1
163 #undef SIMPLE 170 #undef SIMPLE
164 171
165 private: 172 private:
166 Zone* zone_; 173 Zone* zone_;
167 MachineType word_; 174 MachineType word_;
168 }; 175 };
169 } 176 }
170 } 177 }
171 } // namespace v8::internal::compiler 178 } // namespace v8::internal::compiler
172 179
173 #endif // V8_COMPILER_MACHINE_OPERATOR_H_ 180 #endif // V8_COMPILER_MACHINE_OPERATOR_H_
OLDNEW
« no previous file with comments | « no previous file | src/compiler/simplified-lowering.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698