OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |