hotspot/src/cpu/ppc/vm/assembler_ppc.hpp
changeset 39259 14a1c9c7f909
parent 39236 c9d756fa846e
parent 38931 3cf28d630349
child 39444 2eae9b74c1f3
equal deleted inserted replaced
39258:62ad1cdc7317 39259:14a1c9c7f909
     1 /*
     1 /*
     2  * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
     3  * Copyright (c) 2012, 2015 SAP SE. All rights reserved.
     3  * Copyright (c) 2012, 2016 SAP SE. All rights reserved.
     4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     5  *
     5  *
     6  * This code is free software; you can redistribute it and/or modify it
     6  * This code is free software; you can redistribute it and/or modify it
     7  * under the terms of the GNU General Public License version 2 only, as
     7  * under the terms of the GNU General Public License version 2 only, as
     8  * published by the Free Software Foundation.
     8  * published by the Free Software Foundation.
  1544 
  1544 
  1545   // 8 bytes
  1545   // 8 bytes
  1546   inline void ldx(  Register d, Register s1, Register s2);
  1546   inline void ldx(  Register d, Register s1, Register s2);
  1547   inline void ld(   Register d, int si16,    Register s1);
  1547   inline void ld(   Register d, int si16,    Register s1);
  1548   inline void ldu(  Register d, int si16,    Register s1);
  1548   inline void ldu(  Register d, int si16,    Register s1);
       
  1549 
       
  1550   // For convenience. Load pointer into d from b+s1.
       
  1551   inline void ld_ptr(Register d, int b, Register s1);
       
  1552   DEBUG_ONLY(inline void ld_ptr(Register d, ByteSize b, Register s1);)
  1549 
  1553 
  1550   //  PPC 1, section 3.3.3 Fixed-Point Store Instructions
  1554   //  PPC 1, section 3.3.3 Fixed-Point Store Instructions
  1551   inline void stwx( Register d, Register s1, Register s2);
  1555   inline void stwx( Register d, Register s1, Register s2);
  1552   inline void stw(  Register d, int si16,    Register s1);
  1556   inline void stw(  Register d, int si16,    Register s1);
  1553   inline void stwu( Register d, int si16,    Register s1);
  1557   inline void stwu( Register d, int si16,    Register s1);
  2213   void sth( Register d, RegisterOrConstant roc, Register s1 = noreg, Register tmp = noreg);
  2217   void sth( Register d, RegisterOrConstant roc, Register s1 = noreg, Register tmp = noreg);
  2214   void stb( Register d, RegisterOrConstant roc, Register s1 = noreg, Register tmp = noreg);
  2218   void stb( Register d, RegisterOrConstant roc, Register s1 = noreg, Register tmp = noreg);
  2215   void add( Register d, RegisterOrConstant roc, Register s1);
  2219   void add( Register d, RegisterOrConstant roc, Register s1);
  2216   void subf(Register d, RegisterOrConstant roc, Register s1);
  2220   void subf(Register d, RegisterOrConstant roc, Register s1);
  2217   void cmpd(ConditionRegister d, RegisterOrConstant roc, Register s1);
  2221   void cmpd(ConditionRegister d, RegisterOrConstant roc, Register s1);
  2218 
  2222   // Load pointer d from s1+roc.
       
  2223   void ld_ptr(Register d, RegisterOrConstant roc, Register s1 = noreg) { ld(d, roc, s1); }
  2219 
  2224 
  2220   // Emit several instructions to load a 64 bit constant. This issues a fixed
  2225   // Emit several instructions to load a 64 bit constant. This issues a fixed
  2221   // instruction pattern so that the constant can be patched later on.
  2226   // instruction pattern so that the constant can be patched later on.
  2222   enum {
  2227   enum {
  2223     load_const_size = 5 * BytesPerInstWord
  2228     load_const_size = 5 * BytesPerInstWord