Path: blob/master/runtime/j9vm31/j9vm31floatstubs.s
5985 views
*1* Copyright (c) 2021, 2021 IBM Corp. and others2*3* This program and the accompanying materials are made4* available under the terms of the Eclipse Public License 2.05* which accompanies this distribution and is available at6* https://www.eclipse.org/legal/epl-2.0/ or the Apache License,7* Version 2.0 which accompanies this distribution and is available8* at https://www.apache.org/licenses/LICENSE-2.0.9*10* This Source Code is also Distributed under one or more11* Secondary Licenses, as those terms are defined by the12* Eclipse Public License, v. 2.0: GNU General Public License,13* version 2 with the GNU Classpath Exception [1] and GNU14* General Public License, version 2 with the OpenJDK Assembly15* Exception [2].16*17* [1] https://www.gnu.org/software/classpath/license.html18* [2] http://openjdk.java.net/legal/assembly-exception.html19*20TITLE 'j9vm31floatstubs'21**********************************************************************22* This file contains a set of stub functions with the sole23* intention of loading and storing float/double from/to FPR0.24* However, since the OS Linkage dictates FPR0 is the incoming25* param and outgoing return floating point register, these26* functions are actually NOPs. Ideally, we just generate27* inline assembly code from the C code (j9cel4ro64 in this case)28* once build compiler is upgraded.2930J9VM_STE CSECT31J9VM_STE AMODE ANY32J9VM_STE RMODE ANY33EDCPRLG34* This routine is to extract FPR0 as a float35* however, since OS linkage returns FPR0 anyways36* this is a nop routine to trick compiler in37* extracting return value from FPR0.38EDCEPIL39END4041J9VM_STD CSECT42J9VM_STD AMODE ANY43J9VM_STD RMODE ANY44EDCPRLG45* This routine is to extract FPR0 as a double46* however, since OS linkage returns FPR0 anyways47* this is a nop routine to trick compiler in48* extracting return value from FPR0.49EDCEPIL50END5152J9VM_LE CSECT53J9VM_LE AMODE ANY54J9VM_LE RMODE ANY55EDCPRLG56* This routine is to store FPR0 with a float57* parameter. However, since OS linkage uses58* FPR0 as the parm, this is a nop routine59* to trick the compiler in doing it for us.60EDCEPIL61END6263J9VM_LD CSECT64J9VM_LD AMODE ANY65J9VM_LD RMODE ANY66EDCPRLG67* This routine is to store FPR0 with a double68* parameter. However, since OS linkage uses69* FPR0 as the parm, this is a nop routine70* to trick the compiler in doing it for us.71EDCEPIL72END73747576