< prev index next >

src/hotspot/cpu/aarch64/register_aarch64.hpp

Print this page
@@ -1,8 +1,8 @@
  /*
   * Copyright (c) 2000, 2021, Oracle and/or its affiliates. All rights reserved.
-  * Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved.
+  * Copyright (c) 2014, 2021, Red Hat Inc. All rights reserved.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 only, as
   * published by the Free Software Foundation.

@@ -241,10 +241,14 @@
  class PRegisterImpl: public AbstractRegisterImpl {
   public:
    enum {
      number_of_registers = 16,
      number_of_governing_registers = 8,
+     // AArch64 has 8 governing predicate registers, but p7 is used as an
+     // all-1s register so the predicates to save are from p0 to p6 if we
+     // don't have non-governing predicate registers support.
+     number_of_saved_registers = number_of_governing_registers - 1,
      max_slots_per_register = 1
    };
  
    // construction
    inline friend PRegister as_PRegister(int encoding);

@@ -375,10 +379,11 @@
    RegSetIterator<RegImpl> begin();
  };
  
  typedef AbstractRegSet<Register> RegSet;
  typedef AbstractRegSet<FloatRegister> FloatRegSet;
+ typedef AbstractRegSet<PRegister> PRegSet;
  
  template <class RegImpl>
  class RegSetIterator {
    AbstractRegSet<RegImpl> _regs;
  
< prev index next >