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

Side by Side Diff: test/unittests/compiler/arm64/instruction-selector-arm64-unittest.cc

Issue 1364773002: [arm64] Explicit commuted conditions in unittests (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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
« no previous file with comments | « no previous file | 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 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 "test/unittests/compiler/instruction-selector-unittest.h" 5 #include "test/unittests/compiler/instruction-selector-unittest.h"
6 6
7 namespace v8 { 7 namespace v8 {
8 namespace internal { 8 namespace internal {
9 namespace compiler { 9 namespace compiler {
10 10
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 kMachFloat64}, 213 kMachFloat64},
214 {&RawMachineAssembler::Float64Mul, "Float64Mul", kArm64Float64Mul, 214 {&RawMachineAssembler::Float64Mul, "Float64Mul", kArm64Float64Mul,
215 kMachFloat64}, 215 kMachFloat64},
216 {&RawMachineAssembler::Float64Div, "Float64Div", kArm64Float64Div, 216 {&RawMachineAssembler::Float64Div, "Float64Div", kArm64Float64Div,
217 kMachFloat64}}; 217 kMachFloat64}};
218 218
219 219
220 struct FPCmp { 220 struct FPCmp {
221 MachInst2 mi; 221 MachInst2 mi;
222 FlagsCondition cond; 222 FlagsCondition cond;
223 FlagsCondition commuted_cond;
223 }; 224 };
224 225
225 226
226 std::ostream& operator<<(std::ostream& os, const FPCmp& cmp) { 227 std::ostream& operator<<(std::ostream& os, const FPCmp& cmp) {
227 return os << cmp.mi; 228 return os << cmp.mi;
228 } 229 }
229 230
230 231
231 // ARM64 FP comparison instructions. 232 // ARM64 FP comparison instructions.
232 const FPCmp kFPCmpInstructions[] = { 233 const FPCmp kFPCmpInstructions[] = {
233 {{&RawMachineAssembler::Float64Equal, "Float64Equal", kArm64Float64Cmp, 234 {{&RawMachineAssembler::Float64Equal, "Float64Equal", kArm64Float64Cmp,
234 kMachFloat64}, 235 kMachFloat64},
235 kEqual}, 236 kEqual, kEqual},
236 {{&RawMachineAssembler::Float64LessThan, "Float64LessThan", 237 {{&RawMachineAssembler::Float64LessThan, "Float64LessThan",
237 kArm64Float64Cmp, kMachFloat64}, 238 kArm64Float64Cmp, kMachFloat64},
238 kFloatLessThan}, 239 kFloatLessThan, kFloatGreaterThan},
239 {{&RawMachineAssembler::Float64LessThanOrEqual, "Float64LessThanOrEqual", 240 {{&RawMachineAssembler::Float64LessThanOrEqual, "Float64LessThanOrEqual",
240 kArm64Float64Cmp, kMachFloat64}, 241 kArm64Float64Cmp, kMachFloat64},
241 kFloatLessThanOrEqual}, 242 kFloatLessThanOrEqual, kFloatGreaterThanOrEqual},
242 {{&RawMachineAssembler::Float32Equal, "Float32Equal", kArm64Float32Cmp, 243 {{&RawMachineAssembler::Float32Equal, "Float32Equal", kArm64Float32Cmp,
243 kMachFloat32}, 244 kMachFloat32},
244 kEqual}, 245 kEqual, kEqual},
245 {{&RawMachineAssembler::Float32LessThan, "Float32LessThan", 246 {{&RawMachineAssembler::Float32LessThan, "Float32LessThan",
246 kArm64Float32Cmp, kMachFloat32}, 247 kArm64Float32Cmp, kMachFloat32},
247 kFloatLessThan}, 248 kFloatLessThan, kFloatGreaterThan},
248 {{&RawMachineAssembler::Float32LessThanOrEqual, "Float32LessThanOrEqual", 249 {{&RawMachineAssembler::Float32LessThanOrEqual, "Float32LessThanOrEqual",
249 kArm64Float32Cmp, kMachFloat32}, 250 kArm64Float32Cmp, kMachFloat32},
250 kFloatLessThanOrEqual}}; 251 kFloatLessThanOrEqual, kFloatGreaterThanOrEqual}};
251 252
252 253
253 struct Conversion { 254 struct Conversion {
254 // The machine_type field in MachInst1 represents the destination type. 255 // The machine_type field in MachInst1 represents the destination type.
255 MachInst1 mi; 256 MachInst1 mi;
256 MachineType src_machine_type; 257 MachineType src_machine_type;
257 }; 258 };
258 259
259 260
260 std::ostream& operator<<(std::ostream& os, const Conversion& conv) { 261 std::ostream& operator<<(std::ostream& os, const Conversion& conv) {
(...skipping 1685 matching lines...) Expand 10 before | Expand all | Expand 10 after
1946 } else { 1947 } else {
1947 m.Return((m.*cmp.mi.constructor)(m.Float32Constant(0.0f), m.Parameter(0))); 1948 m.Return((m.*cmp.mi.constructor)(m.Float32Constant(0.0f), m.Parameter(0)));
1948 } 1949 }
1949 Stream s = m.Build(); 1950 Stream s = m.Build();
1950 ASSERT_EQ(1U, s.size()); 1951 ASSERT_EQ(1U, s.size());
1951 EXPECT_EQ(cmp.mi.arch_opcode, s[0]->arch_opcode()); 1952 EXPECT_EQ(cmp.mi.arch_opcode, s[0]->arch_opcode());
1952 EXPECT_EQ(2U, s[0]->InputCount()); 1953 EXPECT_EQ(2U, s[0]->InputCount());
1953 EXPECT_TRUE(s[0]->InputAt(1)->IsImmediate()); 1954 EXPECT_TRUE(s[0]->InputAt(1)->IsImmediate());
1954 EXPECT_EQ(1U, s[0]->OutputCount()); 1955 EXPECT_EQ(1U, s[0]->OutputCount());
1955 EXPECT_EQ(kFlags_set, s[0]->flags_mode()); 1956 EXPECT_EQ(kFlags_set, s[0]->flags_mode());
1956 EXPECT_EQ(CommuteFlagsCondition(cmp.cond), s[0]->flags_condition()); 1957 EXPECT_EQ(cmp.commuted_cond, s[0]->flags_condition());
1957 } 1958 }
1958 1959
1959 1960
1960 INSTANTIATE_TEST_CASE_P(InstructionSelectorTest, InstructionSelectorFPCmpTest, 1961 INSTANTIATE_TEST_CASE_P(InstructionSelectorTest, InstructionSelectorFPCmpTest,
1961 ::testing::ValuesIn(kFPCmpInstructions)); 1962 ::testing::ValuesIn(kFPCmpInstructions));
1962 1963
1963 1964
1964 // ----------------------------------------------------------------------------- 1965 // -----------------------------------------------------------------------------
1965 // Conversions. 1966 // Conversions.
1966 1967
(...skipping 1082 matching lines...) Expand 10 before | Expand all | Expand 10 after
3049 EXPECT_EQ(kArm64Float64Neg, s[0]->arch_opcode()); 3050 EXPECT_EQ(kArm64Float64Neg, s[0]->arch_opcode());
3050 ASSERT_EQ(1U, s[0]->InputCount()); 3051 ASSERT_EQ(1U, s[0]->InputCount());
3051 EXPECT_EQ(s.ToVreg(p0), s.ToVreg(s[0]->InputAt(0))); 3052 EXPECT_EQ(s.ToVreg(p0), s.ToVreg(s[0]->InputAt(0)));
3052 ASSERT_EQ(1U, s[0]->OutputCount()); 3053 ASSERT_EQ(1U, s[0]->OutputCount());
3053 EXPECT_EQ(s.ToVreg(n), s.ToVreg(s[0]->Output())); 3054 EXPECT_EQ(s.ToVreg(n), s.ToVreg(s[0]->Output()));
3054 } 3055 }
3055 3056
3056 } // namespace compiler 3057 } // namespace compiler
3057 } // namespace internal 3058 } // namespace internal
3058 } // namespace v8 3059 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698