1 /* 2 * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 package org.graalvm.compiler.asm.aarch64.test; 25 26 import org.graalvm.compiler.asm.AbstractAddress; 27 import org.graalvm.compiler.asm.Label; 28 import org.graalvm.compiler.asm.aarch64.AArch64Address; 29 import org.graalvm.compiler.asm.aarch64.AArch64Assembler; 30 31 import jdk.vm.ci.code.Register; 32 import jdk.vm.ci.code.TargetDescription; 33 34 /** 35 * Cheat so that we can test protected functions of assembler. 36 */ 37 class TestProtectedAssembler extends AArch64Assembler { 38 39 TestProtectedAssembler(TargetDescription target) { 40 super(target); 41 } 42 43 @Override 44 protected void cbnz(int size, Register reg, int imm21, int pos) { 45 super.cbnz(size, reg, imm21, pos); 46 } 47 48 @Override 49 protected void cbz(int size, Register reg, int imm21, int pos) { 50 super.cbz(size, reg, imm21, pos); 51 } 52 53 @Override 54 public void ands(int size, Register dst, Register src, long bimm) { 55 super.ands(size, dst, src, bimm); 56 } 57 58 @Override 59 protected void b(ConditionFlag condition, int imm21) { 60 super.b(condition, imm21); 61 } 62 63 @Override 64 protected void b(ConditionFlag condition, int imm21, int pos) { 65 super.b(condition, imm21, pos); 66 } 67 68 @Override 69 protected void cbnz(int size, Register reg, int imm21) { 70 super.cbnz(size, reg, imm21); 71 } 72 73 @Override 74 protected void cbz(int size, Register reg, int imm21) { 75 super.cbz(size, reg, imm21); 76 } 77 78 @Override 79 protected void b(int imm28) { 80 super.b(imm28); 81 } 82 83 @Override 84 protected void b(int imm28, int pos) { 85 super.b(imm28, pos); 86 } 87 88 @Override 89 public void bl(int imm28) { 90 super.bl(imm28); 91 } 92 93 @Override 94 public void blr(Register reg) { 95 super.blr(reg); 96 } 97 98 @Override 99 protected void br(Register reg) { 100 super.br(reg); 101 } 102 103 @Override 104 public void ret(Register reg) { 105 super.ret(reg); 106 } 107 108 @Override 109 public void ldr(int srcSize, Register rt, AArch64Address address) { 110 super.ldr(srcSize, rt, address); 111 } 112 113 @Override 114 public void ldrs(int targetSize, int srcSize, Register rt, AArch64Address address) { 115 super.ldrs(targetSize, srcSize, rt, address); 116 } 117 118 @Override 119 public void str(int destSize, Register rt, AArch64Address address) { 120 super.str(destSize, rt, address); 121 } 122 123 @Override 124 protected void ldxr(int size, Register rt, Register rn) { 125 super.ldxr(size, rt, rn); 126 } 127 128 @Override 129 protected void stxr(int size, Register rs, Register rt, Register rn) { 130 super.stxr(size, rs, rt, rn); 131 } 132 133 @Override 134 protected void ldar(int size, Register rt, Register rn) { 135 super.ldar(size, rt, rn); 136 } 137 138 @Override 139 protected void stlr(int size, Register rt, Register rn) { 140 super.stlr(size, rt, rn); 141 } 142 143 @Override 144 public void ldaxr(int size, Register rt, Register rn) { 145 super.ldaxr(size, rt, rn); 146 } 147 148 @Override 149 public void stlxr(int size, Register rs, Register rt, Register rn) { 150 super.stlxr(size, rs, rt, rn); 151 } 152 153 @Override 154 public void adr(Register dst, int imm21) { 155 super.adr(dst, imm21); 156 } 157 158 @Override 159 protected void add(int size, Register dst, Register src, int aimm) { 160 super.add(size, dst, src, aimm); 161 } 162 163 @Override 164 protected void adds(int size, Register dst, Register src, int aimm) { 165 super.adds(size, dst, src, aimm); 166 } 167 168 @Override 169 protected void sub(int size, Register dst, Register src, int aimm) { 170 super.sub(size, dst, src, aimm); 171 } 172 173 @Override 174 protected void subs(int size, Register dst, Register src, int aimm) { 175 super.subs(size, dst, src, aimm); 176 } 177 178 @Override 179 public void and(int size, Register dst, Register src, long bimm) { 180 super.and(size, dst, src, bimm); 181 } 182 183 @Override 184 public void eor(int size, Register dst, Register src, long bimm) { 185 super.eor(size, dst, src, bimm); 186 } 187 188 @Override 189 protected void orr(int size, Register dst, Register src, long bimm) { 190 super.orr(size, dst, src, bimm); 191 } 192 193 @Override 194 protected void movz(int size, Register dst, int uimm16, int shiftAmt) { 195 super.movz(size, dst, uimm16, shiftAmt); 196 } 197 198 @Override 199 protected void movn(int size, Register dst, int uimm16, int shiftAmt) { 200 super.movn(size, dst, uimm16, shiftAmt); 201 } 202 203 @Override 204 protected void movk(int size, Register dst, int uimm16, int pos) { 205 super.movk(size, dst, uimm16, pos); 206 } 207 208 @Override 209 protected void bfm(int size, Register dst, Register src, int r, int s) { 210 super.bfm(size, dst, src, r, s); 211 } 212 213 @Override 214 protected void ubfm(int size, Register dst, Register src, int r, int s) { 215 super.ubfm(size, dst, src, r, s); 216 } 217 218 @Override 219 protected void sbfm(int size, Register dst, Register src, int r, int s) { 220 super.sbfm(size, dst, src, r, s); 221 } 222 223 @Override 224 protected void extr(int size, Register dst, Register src1, Register src2, int lsb) { 225 super.extr(size, dst, src1, src2, lsb); 226 } 227 228 @Override 229 protected void adds(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int imm) { 230 super.adds(size, dst, src1, src2, shiftType, imm); 231 } 232 233 @Override 234 protected void subs(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int imm) { 235 super.subs(size, dst, src1, src2, shiftType, imm); 236 } 237 238 @Override 239 protected void add(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int imm) { 240 super.add(size, dst, src1, src2, shiftType, imm); 241 } 242 243 @Override 244 protected void sub(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int imm) { 245 super.sub(size, dst, src1, src2, shiftType, imm); 246 } 247 248 @Override 249 public void add(int size, Register dst, Register src1, Register src2, ExtendType extendType, int shiftAmt) { 250 super.add(size, dst, src1, src2, extendType, shiftAmt); 251 } 252 253 @Override 254 protected void adds(int size, Register dst, Register src1, Register src2, ExtendType extendType, int shiftAmt) { 255 super.adds(size, dst, src1, src2, extendType, shiftAmt); 256 } 257 258 @Override 259 protected void sub(int size, Register dst, Register src1, Register src2, ExtendType extendType, int shiftAmt) { 260 super.sub(size, dst, src1, src2, extendType, shiftAmt); 261 } 262 263 @Override 264 protected void subs(int size, Register dst, Register src1, Register src2, ExtendType extendType, int shiftAmt) { 265 super.subs(size, dst, src1, src2, extendType, shiftAmt); 266 } 267 268 @Override 269 protected void and(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int shiftAmt) { 270 super.and(size, dst, src1, src2, shiftType, shiftAmt); 271 } 272 273 @Override 274 protected void ands(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int shiftAmt) { 275 super.ands(size, dst, src1, src2, shiftType, shiftAmt); 276 } 277 278 @Override 279 protected void bic(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int shiftAmt) { 280 super.bic(size, dst, src1, src2, shiftType, shiftAmt); 281 } 282 283 @Override 284 protected void bics(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int shiftAmt) { 285 super.bics(size, dst, src1, src2, shiftType, shiftAmt); 286 } 287 288 @Override 289 protected void eon(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int shiftAmt) { 290 super.eon(size, dst, src1, src2, shiftType, shiftAmt); 291 } 292 293 @Override 294 protected void eor(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int shiftAmt) { 295 super.eor(size, dst, src1, src2, shiftType, shiftAmt); 296 } 297 298 @Override 299 protected void orr(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int shiftAmt) { 300 super.orr(size, dst, src1, src2, shiftType, shiftAmt); 301 } 302 303 @Override 304 protected void orn(int size, Register dst, Register src1, Register src2, ShiftType shiftType, int shiftAmt) { 305 super.orn(size, dst, src1, src2, shiftType, shiftAmt); 306 } 307 308 @Override 309 protected void asr(int size, Register dst, Register src1, Register src2) { 310 super.asr(size, dst, src1, src2); 311 } 312 313 @Override 314 protected void lsl(int size, Register dst, Register src1, Register src2) { 315 super.lsl(size, dst, src1, src2); 316 } 317 318 @Override 319 protected void lsr(int size, Register dst, Register src1, Register src2) { 320 super.lsr(size, dst, src1, src2); 321 } 322 323 @Override 324 protected void ror(int size, Register dst, Register src1, Register src2) { 325 super.ror(size, dst, src1, src2); 326 } 327 328 @Override 329 protected void cls(int size, Register dst, Register src) { 330 super.cls(size, dst, src); 331 } 332 333 @Override 334 public void clz(int size, Register dst, Register src) { 335 super.clz(size, dst, src); 336 } 337 338 @Override 339 protected void rbit(int size, Register dst, Register src) { 340 super.rbit(size, dst, src); 341 } 342 343 @Override 344 public void rev(int size, Register dst, Register src) { 345 super.rev(size, dst, src); 346 } 347 348 @Override 349 protected void csel(int size, Register dst, Register src1, Register src2, ConditionFlag condition) { 350 super.csel(size, dst, src1, src2, condition); 351 } 352 353 @Override 354 protected void csneg(int size, Register dst, Register src1, Register src2, ConditionFlag condition) { 355 super.csneg(size, dst, src1, src2, condition); 356 } 357 358 @Override 359 protected void csinc(int size, Register dst, Register src1, Register src2, ConditionFlag condition) { 360 super.csinc(size, dst, src1, src2, condition); 361 } 362 363 @Override 364 protected void madd(int size, Register dst, Register src1, Register src2, Register src3) { 365 super.madd(size, dst, src1, src2, src3); 366 } 367 368 @Override 369 protected void msub(int size, Register dst, Register src1, Register src2, Register src3) { 370 super.msub(size, dst, src1, src2, src3); 371 } 372 373 @Override 374 public void sdiv(int size, Register dst, Register src1, Register src2) { 375 super.sdiv(size, dst, src1, src2); 376 } 377 378 @Override 379 public void udiv(int size, Register dst, Register src1, Register src2) { 380 super.udiv(size, dst, src1, src2); 381 } 382 383 @Override 384 public void fldr(int size, Register rt, AArch64Address address) { 385 super.fldr(size, rt, address); 386 } 387 388 @Override 389 public void fstr(int size, Register rt, AArch64Address address) { 390 super.fstr(size, rt, address); 391 } 392 393 @Override 394 protected void fmov(int size, Register dst, Register src) { 395 super.fmov(size, dst, src); 396 } 397 398 @Override 399 protected void fmovFpu2Cpu(int size, Register dst, Register src) { 400 super.fmovFpu2Cpu(size, dst, src); 401 } 402 403 @Override 404 protected void fmovCpu2Fpu(int size, Register dst, Register src) { 405 super.fmovCpu2Fpu(size, dst, src); 406 } 407 408 @Override 409 protected void fmov(int size, Register dst, double imm) { 410 super.fmov(size, dst, imm); 411 } 412 413 @Override 414 public void fcvt(int srcSize, Register dst, Register src) { 415 super.fcvt(srcSize, dst, src); 416 } 417 418 @Override 419 public void fcvtzs(int targetSize, int srcSize, Register dst, Register src) { 420 super.fcvtzs(targetSize, srcSize, dst, src); 421 } 422 423 @Override 424 public void scvtf(int targetSize, int srcSize, Register dst, Register src) { 425 super.scvtf(targetSize, srcSize, dst, src); 426 } 427 428 @Override 429 protected void frintz(int size, Register dst, Register src) { 430 super.frintz(size, dst, src); 431 } 432 433 @Override 434 public void fabs(int size, Register dst, Register src) { 435 super.fabs(size, dst, src); 436 } 437 438 @Override 439 public void fneg(int size, Register dst, Register src) { 440 super.fneg(size, dst, src); 441 } 442 443 @Override 444 public void fsqrt(int size, Register dst, Register src) { 445 super.fsqrt(size, dst, src); 446 } 447 448 @Override 449 public void fadd(int size, Register dst, Register src1, Register src2) { 450 super.fadd(size, dst, src1, src2); 451 } 452 453 @Override 454 public void fsub(int size, Register dst, Register src1, Register src2) { 455 super.fsub(size, dst, src1, src2); 456 } 457 458 @Override 459 public void fmul(int size, Register dst, Register src1, Register src2) { 460 super.fmul(size, dst, src1, src2); 461 } 462 463 @Override 464 public void fdiv(int size, Register dst, Register src1, Register src2) { 465 super.fdiv(size, dst, src1, src2); 466 } 467 468 @Override 469 protected void fmadd(int size, Register dst, Register src1, Register src2, Register src3) { 470 super.fmadd(size, dst, src1, src2, src3); 471 } 472 473 @Override 474 protected void fmsub(int size, Register dst, Register src1, Register src2, Register src3) { 475 super.fmsub(size, dst, src1, src2, src3); 476 } 477 478 @Override 479 public void fcmp(int size, Register src1, Register src2) { 480 super.fcmp(size, src1, src2); 481 } 482 483 @Override 484 public void fccmp(int size, Register src1, Register src2, int uimm4, ConditionFlag condition) { 485 super.fccmp(size, src1, src2, uimm4, condition); 486 } 487 488 @Override 489 public void fcmpZero(int size, Register src) { 490 super.fcmpZero(size, src); 491 } 492 493 @Override 494 protected void fcsel(int size, Register dst, Register src1, Register src2, ConditionFlag condition) { 495 super.fcsel(size, dst, src1, src2, condition); 496 } 497 498 @Override 499 protected void hlt(int uimm16) { 500 super.hlt(uimm16); 501 } 502 503 @Override 504 protected void brk(int uimm16) { 505 super.brk(uimm16); 506 } 507 508 @Override 509 protected void hint(SystemHint hint) { 510 super.hint(hint); 511 } 512 513 @Override 514 protected void clrex() { 515 super.clrex(); 516 } 517 518 @Override 519 public void dmb(BarrierKind barrierKind) { 520 super.dmb(barrierKind); 521 } 522 523 @Override 524 public void align(int modulus) { 525 } 526 527 @Override 528 public void jmp(Label l) { 529 } 530 531 @Override 532 protected void patchJumpTarget(int branch, int jumpTarget) { 533 534 } 535 536 @Override 537 public AbstractAddress makeAddress(Register base, int displacement) { 538 throw new UnsupportedOperationException(); 539 } 540 541 @Override 542 public AbstractAddress getPlaceholder(int instructionStartPosition) { 543 throw new UnsupportedOperationException(); 544 } 545 546 @Override 547 public void ensureUniquePC() { 548 throw new UnsupportedOperationException(); 549 } 550 }