OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 "00a6202f dsubu a0, a1, a2"); | 115 "00a6202f dsubu a0, a1, a2"); |
116 COMPARE(subu(a6, a7, t0), | 116 COMPARE(subu(a6, a7, t0), |
117 "016c5023 subu a6, a7, t0"); | 117 "016c5023 subu a6, a7, t0"); |
118 COMPARE(dsubu(a6, a7, t0), | 118 COMPARE(dsubu(a6, a7, t0), |
119 "016c502f dsubu a6, a7, t0"); | 119 "016c502f dsubu a6, a7, t0"); |
120 COMPARE(subu(v0, v1, s0), | 120 COMPARE(subu(v0, v1, s0), |
121 "00701023 subu v0, v1, s0"); | 121 "00701023 subu v0, v1, s0"); |
122 COMPARE(dsubu(v0, v1, s0), | 122 COMPARE(dsubu(v0, v1, s0), |
123 "0070102f dsubu v0, v1, s0"); | 123 "0070102f dsubu v0, v1, s0"); |
124 | 124 |
125 COMPARE(mult(a0, a1), | 125 if (kArchVariant != kMips64r6) { |
126 "00850018 mult a0, a1"); | 126 COMPARE(mult(a0, a1), |
127 COMPARE(dmult(a0, a1), | 127 "00850018 mult a0, a1"); |
128 "0085001c dmult a0, a1"); | 128 COMPARE(dmult(a0, a1), |
129 COMPARE(mult(a6, a7), | 129 "0085001c dmult a0, a1"); |
130 "014b0018 mult a6, a7"); | 130 COMPARE(mult(a6, a7), |
131 COMPARE(dmult(a6, a7), | 131 "014b0018 mult a6, a7"); |
132 "014b001c dmult a6, a7"); | 132 COMPARE(dmult(a6, a7), |
133 COMPARE(mult(v0, v1), | 133 "014b001c dmult a6, a7"); |
134 "00430018 mult v0, v1"); | 134 COMPARE(mult(v0, v1), |
135 COMPARE(dmult(v0, v1), | 135 "00430018 mult v0, v1"); |
136 "0043001c dmult v0, v1"); | 136 COMPARE(dmult(v0, v1), |
| 137 "0043001c dmult v0, v1"); |
137 | 138 |
138 COMPARE(multu(a0, a1), | 139 COMPARE(multu(a0, a1), |
139 "00850019 multu a0, a1"); | 140 "00850019 multu a0, a1"); |
140 COMPARE(dmultu(a0, a1), | 141 COMPARE(dmultu(a0, a1), |
141 "0085001d dmultu a0, a1"); | 142 "0085001d dmultu a0, a1"); |
142 COMPARE(multu(a6, a7), | 143 COMPARE(multu(a6, a7), |
143 "014b0019 multu a6, a7"); | 144 "014b0019 multu a6, a7"); |
144 COMPARE(dmultu(a6, a7), | 145 COMPARE(dmultu(a6, a7), |
145 "014b001d dmultu a6, a7"); | 146 "014b001d dmultu a6, a7"); |
146 COMPARE(multu(v0, v1), | 147 COMPARE(multu(v0, v1), |
147 "00430019 multu v0, v1"); | 148 "00430019 multu v0, v1"); |
148 COMPARE(dmultu(v0, v1), | 149 COMPARE(dmultu(v0, v1), |
149 "0043001d dmultu v0, v1"); | 150 "0043001d dmultu v0, v1"); |
150 | 151 |
151 COMPARE(div(a0, a1), | 152 COMPARE(div(a0, a1), |
152 "0085001a div a0, a1"); | 153 "0085001a div a0, a1"); |
153 COMPARE(div(a6, a7), | 154 COMPARE(div(a6, a7), |
154 "014b001a div a6, a7"); | 155 "014b001a div a6, a7"); |
155 COMPARE(div(v0, v1), | 156 COMPARE(div(v0, v1), |
156 "0043001a div v0, v1"); | 157 "0043001a div v0, v1"); |
157 COMPARE(ddiv(a0, a1), | 158 COMPARE(ddiv(a0, a1), |
158 "0085001e ddiv a0, a1"); | 159 "0085001e ddiv a0, a1"); |
159 COMPARE(ddiv(a6, a7), | 160 COMPARE(ddiv(a6, a7), |
160 "014b001e ddiv a6, a7"); | 161 "014b001e ddiv a6, a7"); |
161 COMPARE(ddiv(v0, v1), | 162 COMPARE(ddiv(v0, v1), |
162 "0043001e ddiv v0, v1"); | 163 "0043001e ddiv v0, v1"); |
163 | 164 |
164 COMPARE(divu(a0, a1), | 165 COMPARE(divu(a0, a1), |
165 "0085001b divu a0, a1"); | 166 "0085001b divu a0, a1"); |
166 COMPARE(divu(a6, a7), | 167 COMPARE(divu(a6, a7), |
167 "014b001b divu a6, a7"); | 168 "014b001b divu a6, a7"); |
168 COMPARE(divu(v0, v1), | 169 COMPARE(divu(v0, v1), |
169 "0043001b divu v0, v1"); | 170 "0043001b divu v0, v1"); |
170 COMPARE(ddivu(a0, a1), | 171 COMPARE(ddivu(a0, a1), |
171 "0085001f ddivu a0, a1"); | 172 "0085001f ddivu a0, a1"); |
172 COMPARE(ddivu(a6, a7), | 173 COMPARE(ddivu(a6, a7), |
173 "014b001f ddivu a6, a7"); | 174 "014b001f ddivu a6, a7"); |
174 COMPARE(ddivu(v0, v1), | 175 COMPARE(ddivu(v0, v1), |
175 "0043001f ddivu v0, v1"); | 176 "0043001f ddivu v0, v1"); |
176 | 177 |
177 if (kArchVariant != kLoongson) { | 178 if (kArchVariant != kLoongson) { |
| 179 COMPARE(mul(a0, a1, a2), |
| 180 "70a62002 mul a0, a1, a2"); |
| 181 COMPARE(mul(a6, a7, t0), |
| 182 "716c5002 mul a6, a7, t0"); |
| 183 COMPARE(mul(v0, v1, s0), |
| 184 "70701002 mul v0, v1, s0"); |
| 185 } |
| 186 } else { // MIPS64r6. |
178 COMPARE(mul(a0, a1, a2), | 187 COMPARE(mul(a0, a1, a2), |
179 "70a62002 mul a0, a1, a2"); | 188 "00a62098 mul a0, a1, a2"); |
180 COMPARE(mul(a6, a7, t0), | 189 COMPARE(muh(a0, a1, a2), |
181 "716c5002 mul a6, a7, t0"); | 190 "00a620d8 muh a0, a1, a2"); |
182 COMPARE(mul(v0, v1, s0), | 191 COMPARE(dmul(a0, a1, a2), |
183 "70701002 mul v0, v1, s0"); | 192 "00a6209c dmul a0, a1, a2"); |
| 193 COMPARE(dmuh(a0, a1, a2), |
| 194 "00a620dc dmuh a0, a1, a2"); |
| 195 COMPARE(mul(a5, a6, a7), |
| 196 "014b4898 mul a5, a6, a7"); |
| 197 COMPARE(muh(a5, a6, a7), |
| 198 "014b48d8 muh a5, a6, a7"); |
| 199 COMPARE(dmul(a5, a6, a7), |
| 200 "014b489c dmul a5, a6, a7"); |
| 201 COMPARE(dmuh(a5, a6, a7), |
| 202 "014b48dc dmuh a5, a6, a7"); |
| 203 COMPARE(mul(v0, v1, a0), |
| 204 "00641098 mul v0, v1, a0"); |
| 205 COMPARE(muh(v0, v1, a0), |
| 206 "006410d8 muh v0, v1, a0"); |
| 207 COMPARE(dmul(v0, v1, a0), |
| 208 "0064109c dmul v0, v1, a0"); |
| 209 COMPARE(dmuh(v0, v1, a0), |
| 210 "006410dc dmuh v0, v1, a0"); |
| 211 |
| 212 COMPARE(mulu(a0, a1, a2), |
| 213 "00a62099 mulu a0, a1, a2"); |
| 214 COMPARE(muhu(a0, a1, a2), |
| 215 "00a620d9 muhu a0, a1, a2"); |
| 216 COMPARE(dmulu(a0, a1, a2), |
| 217 "00a6209d dmulu a0, a1, a2"); |
| 218 COMPARE(dmuhu(a0, a1, a2), |
| 219 "00a620dd dmuhu a0, a1, a2"); |
| 220 COMPARE(mulu(a5, a6, a7), |
| 221 "014b4899 mulu a5, a6, a7"); |
| 222 COMPARE(muhu(a5, a6, a7), |
| 223 "014b48d9 muhu a5, a6, a7"); |
| 224 COMPARE(dmulu(a5, a6, a7), |
| 225 "014b489d dmulu a5, a6, a7"); |
| 226 COMPARE(dmuhu(a5, a6, a7), |
| 227 "014b48dd dmuhu a5, a6, a7"); |
| 228 COMPARE(mulu(v0, v1, a0), |
| 229 "00641099 mulu v0, v1, a0"); |
| 230 COMPARE(muhu(v0, v1, a0), |
| 231 "006410d9 muhu v0, v1, a0"); |
| 232 COMPARE(dmulu(v0, v1, a0), |
| 233 "0064109d dmulu v0, v1, a0"); |
| 234 COMPARE(dmuhu(v0, v1, a0), |
| 235 "006410dd dmuhu v0, v1, a0"); |
| 236 |
| 237 COMPARE(div(a0, a1, a2), |
| 238 "00a6209a div a0, a1, a2"); |
| 239 COMPARE(mod(a0, a1, a2), |
| 240 "00a620da mod a0, a1, a2"); |
| 241 COMPARE(ddiv(a0, a1, a2), |
| 242 "00a6209e ddiv a0, a1, a2"); |
| 243 COMPARE(dmod(a0, a1, a2), |
| 244 "00a620de dmod a0, a1, a2"); |
| 245 COMPARE(div(a5, a6, a7), |
| 246 "014b489a div a5, a6, a7"); |
| 247 COMPARE(mod(a5, a6, a7), |
| 248 "014b48da mod a5, a6, a7"); |
| 249 COMPARE(ddiv(a5, a6, a7), |
| 250 "014b489e ddiv a5, a6, a7"); |
| 251 COMPARE(dmod(a5, a6, a7), |
| 252 "014b48de dmod a5, a6, a7"); |
| 253 COMPARE(div(v0, v1, a0), |
| 254 "0064109a div v0, v1, a0"); |
| 255 COMPARE(mod(v0, v1, a0), |
| 256 "006410da mod v0, v1, a0"); |
| 257 COMPARE(ddiv(v0, v1, a0), |
| 258 "0064109e ddiv v0, v1, a0"); |
| 259 COMPARE(dmod(v0, v1, a0), |
| 260 "006410de dmod v0, v1, a0"); |
| 261 |
| 262 COMPARE(divu(a0, a1, a2), |
| 263 "00a6209b divu a0, a1, a2"); |
| 264 COMPARE(modu(a0, a1, a2), |
| 265 "00a620db modu a0, a1, a2"); |
| 266 COMPARE(ddivu(a0, a1, a2), |
| 267 "00a6209f ddivu a0, a1, a2"); |
| 268 COMPARE(dmodu(a0, a1, a2), |
| 269 "00a620df dmodu a0, a1, a2"); |
| 270 COMPARE(divu(a5, a6, a7), |
| 271 "014b489b divu a5, a6, a7"); |
| 272 COMPARE(modu(a5, a6, a7), |
| 273 "014b48db modu a5, a6, a7"); |
| 274 COMPARE(ddivu(a5, a6, a7), |
| 275 "014b489f ddivu a5, a6, a7"); |
| 276 COMPARE(dmodu(a5, a6, a7), |
| 277 "014b48df dmodu a5, a6, a7"); |
| 278 COMPARE(divu(v0, v1, a0), |
| 279 "0064109b divu v0, v1, a0"); |
| 280 COMPARE(modu(v0, v1, a0), |
| 281 "006410db modu v0, v1, a0"); |
| 282 COMPARE(ddivu(v0, v1, a0), |
| 283 "0064109f ddivu v0, v1, a0"); |
| 284 COMPARE(dmodu(v0, v1, a0), |
| 285 "006410df dmodu v0, v1, a0"); |
| 286 |
| 287 COMPARE(bovc(a0, a0, static_cast<int16_t>(0)), |
| 288 "20840000 bovc a0, a0, 0"); |
| 289 COMPARE(bovc(a1, a0, static_cast<int16_t>(0)), |
| 290 "20a40000 bovc a1, a0, 0"); |
| 291 COMPARE(bovc(a1, a0, 32767), |
| 292 "20a47fff bovc a1, a0, 32767"); |
| 293 COMPARE(bovc(a1, a0, -32768), |
| 294 "20a48000 bovc a1, a0, -32768"); |
| 295 |
| 296 COMPARE(bnvc(a0, a0, static_cast<int16_t>(0)), |
| 297 "60840000 bnvc a0, a0, 0"); |
| 298 COMPARE(bnvc(a1, a0, static_cast<int16_t>(0)), |
| 299 "60a40000 bnvc a1, a0, 0"); |
| 300 COMPARE(bnvc(a1, a0, 32767), |
| 301 "60a47fff bnvc a1, a0, 32767"); |
| 302 COMPARE(bnvc(a1, a0, -32768), |
| 303 "60a48000 bnvc a1, a0, -32768"); |
| 304 |
| 305 COMPARE(beqzc(a0, 0), |
| 306 "d8800000 beqzc a0, 0x0"); |
| 307 COMPARE(beqzc(a0, 0xfffff), // 0x0fffff == 1048575. |
| 308 "d88fffff beqzc a0, 0xfffff"); |
| 309 COMPARE(beqzc(a0, 0x100000), // 0x100000 == -1048576. |
| 310 "d8900000 beqzc a0, 0x100000"); |
| 311 |
| 312 COMPARE(bnezc(a0, 0), |
| 313 "f8800000 bnezc a0, 0x0"); |
| 314 COMPARE(bnezc(a0, 0xfffff), // 0x0fffff == 1048575. |
| 315 "f88fffff bnezc a0, 0xfffff"); |
| 316 COMPARE(bnezc(a0, 0x100000), // 0x100000 == -1048576. |
| 317 "f8900000 bnezc a0, 0x100000"); |
184 } | 318 } |
185 | 319 |
186 COMPARE(addiu(a0, a1, 0x0), | 320 COMPARE(addiu(a0, a1, 0x0), |
187 "24a40000 addiu a0, a1, 0"); | 321 "24a40000 addiu a0, a1, 0"); |
188 COMPARE(addiu(s0, s1, 32767), | 322 COMPARE(addiu(s0, s1, 32767), |
189 "26307fff addiu s0, s1, 32767"); | 323 "26307fff addiu s0, s1, 32767"); |
190 COMPARE(addiu(a6, a7, -32768), | 324 COMPARE(addiu(a6, a7, -32768), |
191 "256a8000 addiu a6, a7, -32768"); | 325 "256a8000 addiu a6, a7, -32768"); |
192 COMPARE(addiu(v0, v1, -1), | 326 COMPARE(addiu(v0, v1, -1), |
193 "2462ffff addiu v0, v1, -1"); | 327 "2462ffff addiu v0, v1, -1"); |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 "007d1001 movt v0, v1, 7"); | 639 "007d1001 movt v0, v1, 7"); |
506 COMPARE(movf(a0, a1, 0), | 640 COMPARE(movf(a0, a1, 0), |
507 "00a02001 movf a0, a1, 0"); | 641 "00a02001 movf a0, a1, 0"); |
508 COMPARE(movf(s0, s1, 4), | 642 COMPARE(movf(s0, s1, 4), |
509 "02308001 movf s0, s1, 4"); | 643 "02308001 movf s0, s1, 4"); |
510 COMPARE(movf(a6, a7, 5), | 644 COMPARE(movf(a6, a7, 5), |
511 "01745001 movf a6, a7, 5"); | 645 "01745001 movf a6, a7, 5"); |
512 COMPARE(movf(v0, v1, 6), | 646 COMPARE(movf(v0, v1, 6), |
513 "00781001 movf v0, v1, 6"); | 647 "00781001 movf v0, v1, 6"); |
514 | 648 |
515 COMPARE(clz(a0, a1), | 649 if (kArchVariant == kMips64r6) { |
516 "70a42020 clz a0, a1"); | 650 COMPARE(clz(a0, a1), |
517 COMPARE(clz(s6, s7), | 651 "00a02050 clz a0, a1"); |
518 "72f6b020 clz s6, s7"); | 652 COMPARE(clz(s6, s7), |
519 COMPARE(clz(v0, v1), | 653 "02e0b050 clz s6, s7"); |
520 "70621020 clz v0, v1"); | 654 COMPARE(clz(v0, v1), |
| 655 "00601050 clz v0, v1"); |
| 656 } else { |
| 657 COMPARE(clz(a0, a1), |
| 658 "70a42020 clz a0, a1"); |
| 659 COMPARE(clz(s6, s7), |
| 660 "72f6b020 clz s6, s7"); |
| 661 COMPARE(clz(v0, v1), |
| 662 "70621020 clz v0, v1"); |
| 663 } |
521 } | 664 } |
522 | 665 |
523 if (kArchVariant == kMips64r2) { | 666 if (kArchVariant == kMips64r2) { |
524 COMPARE(ins_(a0, a1, 31, 1), | 667 COMPARE(ins_(a0, a1, 31, 1), |
525 "7ca4ffc4 ins a0, a1, 31, 1"); | 668 "7ca4ffc4 ins a0, a1, 31, 1"); |
526 COMPARE(ins_(s6, s7, 30, 2), | 669 COMPARE(ins_(s6, s7, 30, 2), |
527 "7ef6ff84 ins s6, s7, 30, 2"); | 670 "7ef6ff84 ins s6, s7, 30, 2"); |
528 COMPARE(ins_(v0, v1, 0, 32), | 671 COMPARE(ins_(v0, v1, 0, 32), |
529 "7c62f804 ins v0, v1, 0, 32"); | 672 "7c62f804 ins v0, v1, 0, 32"); |
530 COMPARE(ext_(a0, a1, 31, 1), | 673 COMPARE(ext_(a0, a1, 31, 1), |
531 "7ca407c0 ext a0, a1, 31, 1"); | 674 "7ca407c0 ext a0, a1, 31, 1"); |
532 COMPARE(ext_(s6, s7, 30, 2), | 675 COMPARE(ext_(s6, s7, 30, 2), |
533 "7ef60f80 ext s6, s7, 30, 2"); | 676 "7ef60f80 ext s6, s7, 30, 2"); |
534 COMPARE(ext_(v0, v1, 0, 32), | 677 COMPARE(ext_(v0, v1, 0, 32), |
535 "7c62f800 ext v0, v1, 0, 32"); | 678 "7c62f800 ext v0, v1, 0, 32"); |
536 } | 679 } |
537 | 680 |
538 VERIFY_RUN(); | 681 VERIFY_RUN(); |
539 } | 682 } |
OLD | NEW |