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

Side by Side Diff: src/arm64/macro-assembler-arm64-inl.h

Issue 368313002: ARM64: Generate better immediates for shifted ops (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Add comment about bit setting Created 6 years, 5 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 | « src/arm64/macro-assembler-arm64.cc ('k') | no next file » | 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_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_ 5 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_
6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_ 6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_
7 7
8 #include <ctype.h> 8 #include <ctype.h>
9 9
10 #include "src/globals.h" 10 #include "src/globals.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 } else { 144 } else {
145 ConditionalCompareMacro(rn, operand, nzcv, cond, CCMN); 145 ConditionalCompareMacro(rn, operand, nzcv, cond, CCMN);
146 } 146 }
147 } 147 }
148 148
149 149
150 void MacroAssembler::Add(const Register& rd, 150 void MacroAssembler::Add(const Register& rd,
151 const Register& rn, 151 const Register& rn,
152 const Operand& operand) { 152 const Operand& operand) {
153 ASSERT(allow_macro_instructions_); 153 ASSERT(allow_macro_instructions_);
154 if (operand.IsImmediate() && (operand.ImmediateValue() < 0)) { 154 if (operand.IsImmediate() && (operand.ImmediateValue() < 0) &&
155 IsImmAddSub(-operand.ImmediateValue())) {
155 AddSubMacro(rd, rn, -operand.ImmediateValue(), LeaveFlags, SUB); 156 AddSubMacro(rd, rn, -operand.ImmediateValue(), LeaveFlags, SUB);
156 } else { 157 } else {
157 AddSubMacro(rd, rn, operand, LeaveFlags, ADD); 158 AddSubMacro(rd, rn, operand, LeaveFlags, ADD);
158 } 159 }
159 } 160 }
160 161
161 void MacroAssembler::Adds(const Register& rd, 162 void MacroAssembler::Adds(const Register& rd,
162 const Register& rn, 163 const Register& rn,
163 const Operand& operand) { 164 const Operand& operand) {
164 ASSERT(allow_macro_instructions_); 165 ASSERT(allow_macro_instructions_);
165 if (operand.IsImmediate() && (operand.ImmediateValue() < 0)) { 166 if (operand.IsImmediate() && (operand.ImmediateValue() < 0) &&
167 IsImmAddSub(-operand.ImmediateValue())) {
166 AddSubMacro(rd, rn, -operand.ImmediateValue(), SetFlags, SUB); 168 AddSubMacro(rd, rn, -operand.ImmediateValue(), SetFlags, SUB);
167 } else { 169 } else {
168 AddSubMacro(rd, rn, operand, SetFlags, ADD); 170 AddSubMacro(rd, rn, operand, SetFlags, ADD);
169 } 171 }
170 } 172 }
171 173
172 174
173 void MacroAssembler::Sub(const Register& rd, 175 void MacroAssembler::Sub(const Register& rd,
174 const Register& rn, 176 const Register& rn,
175 const Operand& operand) { 177 const Operand& operand) {
176 ASSERT(allow_macro_instructions_); 178 ASSERT(allow_macro_instructions_);
177 if (operand.IsImmediate() && (operand.ImmediateValue() < 0)) { 179 if (operand.IsImmediate() && (operand.ImmediateValue() < 0) &&
180 IsImmAddSub(-operand.ImmediateValue())) {
178 AddSubMacro(rd, rn, -operand.ImmediateValue(), LeaveFlags, ADD); 181 AddSubMacro(rd, rn, -operand.ImmediateValue(), LeaveFlags, ADD);
179 } else { 182 } else {
180 AddSubMacro(rd, rn, operand, LeaveFlags, SUB); 183 AddSubMacro(rd, rn, operand, LeaveFlags, SUB);
181 } 184 }
182 } 185 }
183 186
184 187
185 void MacroAssembler::Subs(const Register& rd, 188 void MacroAssembler::Subs(const Register& rd,
186 const Register& rn, 189 const Register& rn,
187 const Operand& operand) { 190 const Operand& operand) {
188 ASSERT(allow_macro_instructions_); 191 ASSERT(allow_macro_instructions_);
189 if (operand.IsImmediate() && (operand.ImmediateValue() < 0)) { 192 if (operand.IsImmediate() && (operand.ImmediateValue() < 0) &&
193 IsImmAddSub(-operand.ImmediateValue())) {
190 AddSubMacro(rd, rn, -operand.ImmediateValue(), SetFlags, ADD); 194 AddSubMacro(rd, rn, -operand.ImmediateValue(), SetFlags, ADD);
191 } else { 195 } else {
192 AddSubMacro(rd, rn, operand, SetFlags, SUB); 196 AddSubMacro(rd, rn, operand, SetFlags, SUB);
193 } 197 }
194 } 198 }
195 199
196 200
197 void MacroAssembler::Cmn(const Register& rn, const Operand& operand) { 201 void MacroAssembler::Cmn(const Register& rn, const Operand& operand) {
198 ASSERT(allow_macro_instructions_); 202 ASSERT(allow_macro_instructions_);
199 Adds(AppropriateZeroRegFor(rn), rn, operand); 203 Adds(AppropriateZeroRegFor(rn), rn, operand);
(...skipping 1497 matching lines...) Expand 10 before | Expand all | Expand 10 after
1697 // characters are reserved for controlling features of the instrumentation. 1701 // characters are reserved for controlling features of the instrumentation.
1698 ASSERT(isprint(marker_name[0]) && isprint(marker_name[1])); 1702 ASSERT(isprint(marker_name[0]) && isprint(marker_name[1]));
1699 1703
1700 InstructionAccurateScope scope(this, 1); 1704 InstructionAccurateScope scope(this, 1);
1701 movn(xzr, (marker_name[1] << 8) | marker_name[0]); 1705 movn(xzr, (marker_name[1] << 8) | marker_name[0]);
1702 } 1706 }
1703 1707
1704 } } // namespace v8::internal 1708 } } // namespace v8::internal
1705 1709
1706 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_ 1710 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_
OLDNEW
« no previous file with comments | « src/arm64/macro-assembler-arm64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698