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

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

Issue 850653002: [turbofan] Improve code generation for unordered comparisons. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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
« no previous file with comments | « test/cctest/compiler/test-branch-combine.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 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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 break; 55 break;
56 56
57 default: 57 default:
58 UNIMPLEMENTED(); 58 UNIMPLEMENTED();
59 } 59 }
60 return NULL; 60 return NULL;
61 } 61 }
62 62
63 63
64 // ARM64 logical instructions. 64 // ARM64 logical instructions.
65 static const MachInst2 kLogicalInstructions[] = { 65 const MachInst2 kLogicalInstructions[] = {
66 {&RawMachineAssembler::Word32And, "Word32And", kArm64And32, kMachInt32}, 66 {&RawMachineAssembler::Word32And, "Word32And", kArm64And32, kMachInt32},
67 {&RawMachineAssembler::Word64And, "Word64And", kArm64And, kMachInt64}, 67 {&RawMachineAssembler::Word64And, "Word64And", kArm64And, kMachInt64},
68 {&RawMachineAssembler::Word32Or, "Word32Or", kArm64Or32, kMachInt32}, 68 {&RawMachineAssembler::Word32Or, "Word32Or", kArm64Or32, kMachInt32},
69 {&RawMachineAssembler::Word64Or, "Word64Or", kArm64Or, kMachInt64}, 69 {&RawMachineAssembler::Word64Or, "Word64Or", kArm64Or, kMachInt64},
70 {&RawMachineAssembler::Word32Xor, "Word32Xor", kArm64Eor32, kMachInt32}, 70 {&RawMachineAssembler::Word32Xor, "Word32Xor", kArm64Eor32, kMachInt32},
71 {&RawMachineAssembler::Word64Xor, "Word64Xor", kArm64Eor, kMachInt64}}; 71 {&RawMachineAssembler::Word64Xor, "Word64Xor", kArm64Eor, kMachInt64}};
72 72
73 73
74 // ARM64 logical immediates: contiguous set bits, rotated about a power of two 74 // ARM64 logical immediates: contiguous set bits, rotated about a power of two
75 // sized block. The block is then duplicated across the word. Below is a random 75 // sized block. The block is then duplicated across the word. Below is a random
76 // subset of the 32-bit immediates. 76 // subset of the 32-bit immediates.
77 static const uint32_t kLogical32Immediates[] = { 77 const uint32_t kLogical32Immediates[] = {
78 0x00000002, 0x00000003, 0x00000070, 0x00000080, 0x00000100, 0x000001c0, 78 0x00000002, 0x00000003, 0x00000070, 0x00000080, 0x00000100, 0x000001c0,
79 0x00000300, 0x000007e0, 0x00003ffc, 0x00007fc0, 0x0003c000, 0x0003f000, 79 0x00000300, 0x000007e0, 0x00003ffc, 0x00007fc0, 0x0003c000, 0x0003f000,
80 0x0003ffc0, 0x0003fff8, 0x0007ff00, 0x0007ffe0, 0x000e0000, 0x001e0000, 80 0x0003ffc0, 0x0003fff8, 0x0007ff00, 0x0007ffe0, 0x000e0000, 0x001e0000,
81 0x001ffffc, 0x003f0000, 0x003f8000, 0x00780000, 0x007fc000, 0x00ff0000, 81 0x001ffffc, 0x003f0000, 0x003f8000, 0x00780000, 0x007fc000, 0x00ff0000,
82 0x01800000, 0x01800180, 0x01f801f8, 0x03fe0000, 0x03ffffc0, 0x03fffffc, 82 0x01800000, 0x01800180, 0x01f801f8, 0x03fe0000, 0x03ffffc0, 0x03fffffc,
83 0x06000000, 0x07fc0000, 0x07ffc000, 0x07ffffc0, 0x07ffffe0, 0x0ffe0ffe, 83 0x06000000, 0x07fc0000, 0x07ffc000, 0x07ffffc0, 0x07ffffe0, 0x0ffe0ffe,
84 0x0ffff800, 0x0ffffff0, 0x0fffffff, 0x18001800, 0x1f001f00, 0x1f801f80, 84 0x0ffff800, 0x0ffffff0, 0x0fffffff, 0x18001800, 0x1f001f00, 0x1f801f80,
85 0x30303030, 0x3ff03ff0, 0x3ff83ff8, 0x3fff0000, 0x3fff8000, 0x3fffffc0, 85 0x30303030, 0x3ff03ff0, 0x3ff83ff8, 0x3fff0000, 0x3fff8000, 0x3fffffc0,
86 0x70007000, 0x7f7f7f7f, 0x7fc00000, 0x7fffffc0, 0x8000001f, 0x800001ff, 86 0x70007000, 0x7f7f7f7f, 0x7fc00000, 0x7fffffc0, 0x8000001f, 0x800001ff,
87 0x81818181, 0x9fff9fff, 0xc00007ff, 0xc0ffffff, 0xdddddddd, 0xe00001ff, 87 0x81818181, 0x9fff9fff, 0xc00007ff, 0xc0ffffff, 0xdddddddd, 0xe00001ff,
88 0xe00003ff, 0xe007ffff, 0xefffefff, 0xf000003f, 0xf001f001, 0xf3fff3ff, 88 0xe00003ff, 0xe007ffff, 0xefffefff, 0xf000003f, 0xf001f001, 0xf3fff3ff,
89 0xf800001f, 0xf80fffff, 0xf87ff87f, 0xfbfbfbfb, 0xfc00001f, 0xfc0000ff, 89 0xf800001f, 0xf80fffff, 0xf87ff87f, 0xfbfbfbfb, 0xfc00001f, 0xfc0000ff,
90 0xfc0001ff, 0xfc03fc03, 0xfe0001ff, 0xff000001, 0xff03ff03, 0xff800000, 90 0xfc0001ff, 0xfc03fc03, 0xfe0001ff, 0xff000001, 0xff03ff03, 0xff800000,
91 0xff800fff, 0xff801fff, 0xff87ffff, 0xffc0003f, 0xffc007ff, 0xffcfffcf, 91 0xff800fff, 0xff801fff, 0xff87ffff, 0xffc0003f, 0xffc007ff, 0xffcfffcf,
92 0xffe00003, 0xffe1ffff, 0xfff0001f, 0xfff07fff, 0xfff80007, 0xfff87fff, 92 0xffe00003, 0xffe1ffff, 0xfff0001f, 0xfff07fff, 0xfff80007, 0xfff87fff,
93 0xfffc00ff, 0xfffe07ff, 0xffff00ff, 0xffffc001, 0xfffff007, 0xfffff3ff, 93 0xfffc00ff, 0xfffe07ff, 0xffff00ff, 0xffffc001, 0xfffff007, 0xfffff3ff,
94 0xfffff807, 0xfffff9ff, 0xfffffc0f, 0xfffffeff}; 94 0xfffff807, 0xfffff9ff, 0xfffffc0f, 0xfffffeff};
95 95
96 96
97 // Random subset of 64-bit logical immediates. 97 // Random subset of 64-bit logical immediates.
98 static const uint64_t kLogical64Immediates[] = { 98 const uint64_t kLogical64Immediates[] = {
99 0x0000000000000001, 0x0000000000000002, 0x0000000000000003, 99 0x0000000000000001, 0x0000000000000002, 0x0000000000000003,
100 0x0000000000000070, 0x0000000000000080, 0x0000000000000100, 100 0x0000000000000070, 0x0000000000000080, 0x0000000000000100,
101 0x00000000000001c0, 0x0000000000000300, 0x0000000000000600, 101 0x00000000000001c0, 0x0000000000000300, 0x0000000000000600,
102 0x00000000000007e0, 0x0000000000003ffc, 0x0000000000007fc0, 102 0x00000000000007e0, 0x0000000000003ffc, 0x0000000000007fc0,
103 0x0000000600000000, 0x0000003ffffffffc, 0x000000f000000000, 103 0x0000000600000000, 0x0000003ffffffffc, 0x000000f000000000,
104 0x000001f800000000, 0x0003fc0000000000, 0x0003fc000003fc00, 104 0x000001f800000000, 0x0003fc0000000000, 0x0003fc000003fc00,
105 0x0003ffffffc00000, 0x0003ffffffffffc0, 0x0006000000060000, 105 0x0003ffffffc00000, 0x0003ffffffffffc0, 0x0006000000060000,
106 0x003ffffffffc0000, 0x0180018001800180, 0x01f801f801f801f8, 106 0x003ffffffffc0000, 0x0180018001800180, 0x01f801f801f801f8,
107 0x0600000000000000, 0x1000000010000000, 0x1000100010001000, 107 0x0600000000000000, 0x1000000010000000, 0x1000100010001000,
108 0x1010101010101010, 0x1111111111111111, 0x1f001f001f001f00, 108 0x1010101010101010, 0x1111111111111111, 0x1f001f001f001f00,
(...skipping 15 matching lines...) Expand all
124 MachInst2 mi; 124 MachInst2 mi;
125 ArchOpcode negate_arch_opcode; 125 ArchOpcode negate_arch_opcode;
126 }; 126 };
127 127
128 128
129 std::ostream& operator<<(std::ostream& os, const AddSub& op) { 129 std::ostream& operator<<(std::ostream& os, const AddSub& op) {
130 return os << op.mi; 130 return os << op.mi;
131 } 131 }
132 132
133 133
134 static const AddSub kAddSubInstructions[] = { 134 const AddSub kAddSubInstructions[] = {
135 {{&RawMachineAssembler::Int32Add, "Int32Add", kArm64Add32, kMachInt32}, 135 {{&RawMachineAssembler::Int32Add, "Int32Add", kArm64Add32, kMachInt32},
136 kArm64Sub32}, 136 kArm64Sub32},
137 {{&RawMachineAssembler::Int64Add, "Int64Add", kArm64Add, kMachInt64}, 137 {{&RawMachineAssembler::Int64Add, "Int64Add", kArm64Add, kMachInt64},
138 kArm64Sub}, 138 kArm64Sub},
139 {{&RawMachineAssembler::Int32Sub, "Int32Sub", kArm64Sub32, kMachInt32}, 139 {{&RawMachineAssembler::Int32Sub, "Int32Sub", kArm64Sub32, kMachInt32},
140 kArm64Add32}, 140 kArm64Add32},
141 {{&RawMachineAssembler::Int64Sub, "Int64Sub", kArm64Sub, kMachInt64}, 141 {{&RawMachineAssembler::Int64Sub, "Int64Sub", kArm64Sub, kMachInt64},
142 kArm64Add}}; 142 kArm64Add}};
143 143
144 144
145 // ARM64 Add/Sub immediates: 12-bit immediate optionally shifted by 12. 145 // ARM64 Add/Sub immediates: 12-bit immediate optionally shifted by 12.
146 // Below is a combination of a random subset and some edge values. 146 // Below is a combination of a random subset and some edge values.
147 static const int32_t kAddSubImmediates[] = { 147 const int32_t kAddSubImmediates[] = {
148 0, 1, 69, 493, 599, 701, 719, 148 0, 1, 69, 493, 599, 701, 719,
149 768, 818, 842, 945, 1246, 1286, 1429, 149 768, 818, 842, 945, 1246, 1286, 1429,
150 1669, 2171, 2179, 2182, 2254, 2334, 2338, 150 1669, 2171, 2179, 2182, 2254, 2334, 2338,
151 2343, 2396, 2449, 2610, 2732, 2855, 2876, 151 2343, 2396, 2449, 2610, 2732, 2855, 2876,
152 2944, 3377, 3458, 3475, 3476, 3540, 3574, 152 2944, 3377, 3458, 3475, 3476, 3540, 3574,
153 3601, 3813, 3871, 3917, 4095, 4096, 16384, 153 3601, 3813, 3871, 3917, 4095, 4096, 16384,
154 364544, 462848, 970752, 1523712, 1863680, 2363392, 3219456, 154 364544, 462848, 970752, 1523712, 1863680, 2363392, 3219456,
155 3280896, 4247552, 4526080, 4575232, 4960256, 5505024, 5894144, 155 3280896, 4247552, 4526080, 4575232, 4960256, 5505024, 5894144,
156 6004736, 6193152, 6385664, 6795264, 7114752, 7233536, 7348224, 156 6004736, 6193152, 6385664, 6795264, 7114752, 7233536, 7348224,
157 7499776, 7573504, 7729152, 8634368, 8937472, 9465856, 10354688, 157 7499776, 7573504, 7729152, 8634368, 8937472, 9465856, 10354688,
158 10682368, 11059200, 11460608, 13168640, 13176832, 14336000, 15028224, 158 10682368, 11059200, 11460608, 13168640, 13176832, 14336000, 15028224,
159 15597568, 15892480, 16773120}; 159 15597568, 15892480, 16773120};
160 160
161 161
162 // ARM64 flag setting data processing instructions. 162 // ARM64 flag setting data processing instructions.
163 static const MachInst2 kDPFlagSetInstructions[] = { 163 const MachInst2 kDPFlagSetInstructions[] = {
164 {&RawMachineAssembler::Word32And, "Word32And", kArm64Tst32, kMachInt32}, 164 {&RawMachineAssembler::Word32And, "Word32And", kArm64Tst32, kMachInt32},
165 {&RawMachineAssembler::Int32Add, "Int32Add", kArm64Cmn32, kMachInt32}, 165 {&RawMachineAssembler::Int32Add, "Int32Add", kArm64Cmn32, kMachInt32},
166 {&RawMachineAssembler::Int32Sub, "Int32Sub", kArm64Cmp32, kMachInt32}, 166 {&RawMachineAssembler::Int32Sub, "Int32Sub", kArm64Cmp32, kMachInt32},
167 {&RawMachineAssembler::Word64And, "Word64And", kArm64Tst, kMachInt64}}; 167 {&RawMachineAssembler::Word64And, "Word64And", kArm64Tst, kMachInt64}};
168 168
169 169
170 // ARM64 arithmetic with overflow instructions. 170 // ARM64 arithmetic with overflow instructions.
171 static const MachInst2 kOvfAddSubInstructions[] = { 171 const MachInst2 kOvfAddSubInstructions[] = {
172 {&RawMachineAssembler::Int32AddWithOverflow, "Int32AddWithOverflow", 172 {&RawMachineAssembler::Int32AddWithOverflow, "Int32AddWithOverflow",
173 kArm64Add32, kMachInt32}, 173 kArm64Add32, kMachInt32},
174 {&RawMachineAssembler::Int32SubWithOverflow, "Int32SubWithOverflow", 174 {&RawMachineAssembler::Int32SubWithOverflow, "Int32SubWithOverflow",
175 kArm64Sub32, kMachInt32}}; 175 kArm64Sub32, kMachInt32}};
176 176
177 177
178 // ARM64 shift instructions. 178 // ARM64 shift instructions.
179 static const Shift kShiftInstructions[] = { 179 const Shift kShiftInstructions[] = {
180 {{&RawMachineAssembler::Word32Shl, "Word32Shl", kArm64Lsl32, kMachInt32}, 180 {{&RawMachineAssembler::Word32Shl, "Word32Shl", kArm64Lsl32, kMachInt32},
181 kMode_Operand2_R_LSL_I}, 181 kMode_Operand2_R_LSL_I},
182 {{&RawMachineAssembler::Word64Shl, "Word64Shl", kArm64Lsl, kMachInt64}, 182 {{&RawMachineAssembler::Word64Shl, "Word64Shl", kArm64Lsl, kMachInt64},
183 kMode_Operand2_R_LSL_I}, 183 kMode_Operand2_R_LSL_I},
184 {{&RawMachineAssembler::Word32Shr, "Word32Shr", kArm64Lsr32, kMachInt32}, 184 {{&RawMachineAssembler::Word32Shr, "Word32Shr", kArm64Lsr32, kMachInt32},
185 kMode_Operand2_R_LSR_I}, 185 kMode_Operand2_R_LSR_I},
186 {{&RawMachineAssembler::Word64Shr, "Word64Shr", kArm64Lsr, kMachInt64}, 186 {{&RawMachineAssembler::Word64Shr, "Word64Shr", kArm64Lsr, kMachInt64},
187 kMode_Operand2_R_LSR_I}, 187 kMode_Operand2_R_LSR_I},
188 {{&RawMachineAssembler::Word32Sar, "Word32Sar", kArm64Asr32, kMachInt32}, 188 {{&RawMachineAssembler::Word32Sar, "Word32Sar", kArm64Asr32, kMachInt32},
189 kMode_Operand2_R_ASR_I}, 189 kMode_Operand2_R_ASR_I},
190 {{&RawMachineAssembler::Word64Sar, "Word64Sar", kArm64Asr, kMachInt64}, 190 {{&RawMachineAssembler::Word64Sar, "Word64Sar", kArm64Asr, kMachInt64},
191 kMode_Operand2_R_ASR_I}, 191 kMode_Operand2_R_ASR_I},
192 {{&RawMachineAssembler::Word32Ror, "Word32Ror", kArm64Ror32, kMachInt32}, 192 {{&RawMachineAssembler::Word32Ror, "Word32Ror", kArm64Ror32, kMachInt32},
193 kMode_Operand2_R_ROR_I}, 193 kMode_Operand2_R_ROR_I},
194 {{&RawMachineAssembler::Word64Ror, "Word64Ror", kArm64Ror, kMachInt64}, 194 {{&RawMachineAssembler::Word64Ror, "Word64Ror", kArm64Ror, kMachInt64},
195 kMode_Operand2_R_ROR_I}}; 195 kMode_Operand2_R_ROR_I}};
196 196
197 197
198 // ARM64 Mul/Div instructions. 198 // ARM64 Mul/Div instructions.
199 static const MachInst2 kMulDivInstructions[] = { 199 const MachInst2 kMulDivInstructions[] = {
200 {&RawMachineAssembler::Int32Mul, "Int32Mul", kArm64Mul32, kMachInt32}, 200 {&RawMachineAssembler::Int32Mul, "Int32Mul", kArm64Mul32, kMachInt32},
201 {&RawMachineAssembler::Int64Mul, "Int64Mul", kArm64Mul, kMachInt64}, 201 {&RawMachineAssembler::Int64Mul, "Int64Mul", kArm64Mul, kMachInt64},
202 {&RawMachineAssembler::Int32Div, "Int32Div", kArm64Idiv32, kMachInt32}, 202 {&RawMachineAssembler::Int32Div, "Int32Div", kArm64Idiv32, kMachInt32},
203 {&RawMachineAssembler::Int64Div, "Int64Div", kArm64Idiv, kMachInt64}, 203 {&RawMachineAssembler::Int64Div, "Int64Div", kArm64Idiv, kMachInt64},
204 {&RawMachineAssembler::Uint32Div, "Uint32Div", kArm64Udiv32, kMachInt32}, 204 {&RawMachineAssembler::Uint32Div, "Uint32Div", kArm64Udiv32, kMachInt32},
205 {&RawMachineAssembler::Uint64Div, "Uint64Div", kArm64Udiv, kMachInt64}}; 205 {&RawMachineAssembler::Uint64Div, "Uint64Div", kArm64Udiv, kMachInt64}};
206 206
207 207
208 // ARM64 FP arithmetic instructions. 208 // ARM64 FP arithmetic instructions.
209 static const MachInst2 kFPArithInstructions[] = { 209 const MachInst2 kFPArithInstructions[] = {
210 {&RawMachineAssembler::Float64Add, "Float64Add", kArm64Float64Add, 210 {&RawMachineAssembler::Float64Add, "Float64Add", kArm64Float64Add,
211 kMachFloat64}, 211 kMachFloat64},
212 {&RawMachineAssembler::Float64Sub, "Float64Sub", kArm64Float64Sub, 212 {&RawMachineAssembler::Float64Sub, "Float64Sub", kArm64Float64Sub,
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 }; 223 };
224 224
225 225
226 std::ostream& operator<<(std::ostream& os, const FPCmp& cmp) { 226 std::ostream& operator<<(std::ostream& os, const FPCmp& cmp) {
227 return os << cmp.mi; 227 return os << cmp.mi;
228 } 228 }
229 229
230 230
231 // ARM64 FP comparison instructions. 231 // ARM64 FP comparison instructions.
232 static const FPCmp kFPCmpInstructions[] = { 232 const FPCmp kFPCmpInstructions[] = {
233 {{&RawMachineAssembler::Float64Equal, "Float64Equal", kArm64Float64Cmp, 233 {{&RawMachineAssembler::Float64Equal, "Float64Equal", kArm64Float64Cmp,
234 kMachFloat64}, 234 kMachFloat64},
235 kUnorderedEqual}, 235 kEqual},
236 {{&RawMachineAssembler::Float64LessThan, "Float64LessThan", 236 {{&RawMachineAssembler::Float64LessThan, "Float64LessThan",
237 kArm64Float64Cmp, kMachFloat64}, 237 kArm64Float64Cmp, kMachFloat64},
238 kUnorderedLessThan}, 238 kUnsignedLessThan},
239 {{&RawMachineAssembler::Float64LessThanOrEqual, "Float64LessThanOrEqual", 239 {{&RawMachineAssembler::Float64LessThanOrEqual, "Float64LessThanOrEqual",
240 kArm64Float64Cmp, kMachFloat64}, 240 kArm64Float64Cmp, kMachFloat64},
241 kUnorderedLessThanOrEqual}}; 241 kUnsignedLessThanOrEqual}};
242 242
243 243
244 struct Conversion { 244 struct Conversion {
245 // The machine_type field in MachInst1 represents the destination type. 245 // The machine_type field in MachInst1 represents the destination type.
246 MachInst1 mi; 246 MachInst1 mi;
247 MachineType src_machine_type; 247 MachineType src_machine_type;
248 }; 248 };
249 249
250 250
251 std::ostream& operator<<(std::ostream& os, const Conversion& conv) { 251 std::ostream& operator<<(std::ostream& os, const Conversion& conv) {
252 return os << conv.mi; 252 return os << conv.mi;
253 } 253 }
254 254
255 255
256 // ARM64 type conversion instructions. 256 // ARM64 type conversion instructions.
257 static const Conversion kConversionInstructions[] = { 257 const Conversion kConversionInstructions[] = {
258 {{&RawMachineAssembler::ChangeFloat32ToFloat64, "ChangeFloat32ToFloat64", 258 {{&RawMachineAssembler::ChangeFloat32ToFloat64, "ChangeFloat32ToFloat64",
259 kArm64Float32ToFloat64, kMachFloat64}, 259 kArm64Float32ToFloat64, kMachFloat64},
260 kMachFloat32}, 260 kMachFloat32},
261 {{&RawMachineAssembler::TruncateFloat64ToFloat32, 261 {{&RawMachineAssembler::TruncateFloat64ToFloat32,
262 "TruncateFloat64ToFloat32", kArm64Float64ToFloat32, kMachFloat32}, 262 "TruncateFloat64ToFloat32", kArm64Float64ToFloat32, kMachFloat32},
263 kMachFloat64}, 263 kMachFloat64},
264 {{&RawMachineAssembler::ChangeInt32ToInt64, "ChangeInt32ToInt64", 264 {{&RawMachineAssembler::ChangeInt32ToInt64, "ChangeInt32ToInt64",
265 kArm64Sxtw, kMachInt64}, 265 kArm64Sxtw, kMachInt64},
266 kMachInt32}, 266 kMachInt32},
267 {{&RawMachineAssembler::ChangeUint32ToUint64, "ChangeUint32ToUint64", 267 {{&RawMachineAssembler::ChangeUint32ToUint64, "ChangeUint32ToUint64",
(...skipping 1899 matching lines...) Expand 10 before | Expand all | Expand 10 after
2167 ASSERT_EQ(1U, s[0]->InputCount()); 2167 ASSERT_EQ(1U, s[0]->InputCount());
2168 EXPECT_EQ(s.ToVreg(p0), s.ToVreg(s[0]->InputAt(0))); 2168 EXPECT_EQ(s.ToVreg(p0), s.ToVreg(s[0]->InputAt(0)));
2169 ASSERT_EQ(1U, s[0]->OutputCount()); 2169 ASSERT_EQ(1U, s[0]->OutputCount());
2170 EXPECT_EQ(s.ToVreg(r), s.ToVreg(s[0]->Output())); 2170 EXPECT_EQ(s.ToVreg(r), s.ToVreg(s[0]->Output()));
2171 } 2171 }
2172 } 2172 }
2173 2173
2174 } // namespace compiler 2174 } // namespace compiler
2175 } // namespace internal 2175 } // namespace internal
2176 } // namespace v8 2176 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/compiler/test-branch-combine.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698