< prev index next >

src/hotspot/share/c1/c1_LIR.hpp

Print this page

        

@@ -1,7 +1,8 @@
 /*
  * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015-2018, Azul Systems, 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.

@@ -691,22 +692,44 @@
                                   LIR_OprDesc::virtual_mask);
         break;
 
 #ifdef __SOFTFP__
       case T_FLOAT:
+#ifdef AARCH32
+        if (hasFPU()) {
+            res = (LIR_Opr)(intptr_t)((index << LIR_OprDesc::data_shift) |
+                                      LIR_OprDesc::float_type           |
+                                      LIR_OprDesc::fpu_register         |
+                                      LIR_OprDesc::single_size          |
+                                      LIR_OprDesc::virtual_mask);
+        } else
+#endif // AARCH32
+        {
         res = (LIR_Opr)(intptr_t)((index << LIR_OprDesc::data_shift) |
                                   LIR_OprDesc::float_type  |
                                   LIR_OprDesc::cpu_register |
                                   LIR_OprDesc::single_size |
                                   LIR_OprDesc::virtual_mask);
+        }
         break;
       case T_DOUBLE:
+#ifdef AARCH32
+        if(hasFPU()) {
+            res = (LIR_Opr)(intptr_t)((index << LIR_OprDesc::data_shift) |
+                                                LIR_OprDesc::double_type           |
+                                                LIR_OprDesc::fpu_register          |
+                                                LIR_OprDesc::double_size           |
+                                                LIR_OprDesc::virtual_mask);
+        } else
+#endif
+        {
         res = (LIR_Opr)(intptr_t)((index << LIR_OprDesc::data_shift) |
                                   LIR_OprDesc::double_type |
                                   LIR_OprDesc::cpu_register |
                                   LIR_OprDesc::double_size |
                                   LIR_OprDesc::virtual_mask);
+        }
         break;
 #else // __SOFTFP__
       case T_FLOAT:
         res = (LIR_Opr)(intptr_t)((index << LIR_OprDesc::data_shift) |
                                   LIR_OprDesc::float_type           |
< prev index next >