1207151Smarius/*- 2207151Smarius * Copyright (c) 2010 by Peter Jeremy <peterjeremy@acm.org> 3207151Smarius * All rights reserved. 4207151Smarius * 5207151Smarius * Redistribution and use in source and binary forms, with or without 6207151Smarius * modification, are permitted provided that the following conditions 7207151Smarius * are met: 8207151Smarius * 1. Redistributions of source code must retain the above copyright 9207151Smarius * notice, this list of conditions and the following disclaimer. 10207151Smarius * 2. Redistributions in binary form must reproduce the above copyright 11207151Smarius * notice, this list of conditions and the following disclaimer in the 12207151Smarius * documentation and/or other materials provided with the distribution. 13207151Smarius * 14207151Smarius * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15207151Smarius * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16207151Smarius * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17207151Smarius * IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 18207151Smarius * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19207151Smarius * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 20207151Smarius * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 21207151Smarius * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 22207151Smarius * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 23207151Smarius * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24207151Smarius */ 25207151Smarius 26207151Smarius#include <machine/asm.h> 27207151Smarius__FBSDID("$FreeBSD$"); 28207151Smarius 29207151Smarius .section "rodata1",#alloc 30207151Smarius .align 8 31207151Smarius 32207151Smarius .global insn_int32_to_float32 33207151Smariusinsn_int32_to_float32: 34207151Smarius fitos %f0,%f0 35207151Smarius 36207151Smarius .global insn_int32_to_float64 37207151Smariusinsn_int32_to_float64: 38207151Smarius fitod %f0,%f0 39207151Smarius 40207151Smarius .global insn_int32_to_float128 41207151Smariusinsn_int32_to_float128: 42207151Smarius fitoq %f0,%f0 43207151Smarius 44207151Smarius .global insn_int64_to_float32 45207151Smariusinsn_int64_to_float32: 46207151Smarius fxtos %f0,%f0 47207151Smarius 48207151Smarius .global insn_int64_to_float64 49207151Smariusinsn_int64_to_float64: 50207151Smarius fxtod %f0,%f0 51207151Smarius 52207151Smarius .global insn_int64_to_float128 53207151Smariusinsn_int64_to_float128: 54207151Smarius fxtoq %f0,%f0 55207151Smarius 56207151Smarius .global insn_float32_to_int32_round_to_zero 57207151Smariusinsn_float32_to_int32_round_to_zero: 58207151Smarius fstoi %f0,%f0 59207151Smarius 60207151Smarius .global insn_float32_to_int64_round_to_zero 61207151Smariusinsn_float32_to_int64_round_to_zero: 62207151Smarius fstox %f0,%f0 63207151Smarius 64207151Smarius .global insn_float32_to_float64 65207151Smariusinsn_float32_to_float64: 66207151Smarius fstod %f0,%f0 67207151Smarius 68207151Smarius .global insn_float32_to_float128 69207151Smariusinsn_float32_to_float128: 70207151Smarius fstoq %f0,%f0 71207151Smarius 72207151Smarius .global insn_float32_add 73207151Smariusinsn_float32_add: 74207151Smarius fadds %f0,%f1,%f0 75207151Smarius 76207151Smarius .global insn_float32_sub 77207151Smariusinsn_float32_sub: 78207151Smarius fsubs %f0,%f1,%f0 79207151Smarius 80207151Smarius .global insn_float32_mul 81207151Smariusinsn_float32_mul: 82207151Smarius fmuls %f0,%f1,%f0 83207151Smarius 84207151Smarius .global insn_float32_div 85207151Smariusinsn_float32_div: 86207151Smarius fdivs %f0,%f1,%f0 87207151Smarius 88207151Smarius .global insn_float32_sqrt 89207151Smariusinsn_float32_sqrt: 90207151Smarius fsqrts %f0,%f0 91207151Smarius 92207151Smarius .global insn_float32_cmp 93207151Smariusinsn_float32_cmp: 94207151Smarius fcmps %fcc0,%f0,%f1 95207151Smarius 96207151Smarius .global insn_float32_cmpe 97207151Smariusinsn_float32_cmpe: 98207151Smarius fcmpes %fcc0,%f0,%f1 99207151Smarius 100207151Smarius .global insn_float64_to_int32_round_to_zero 101207151Smariusinsn_float64_to_int32_round_to_zero: 102207151Smarius fdtoi %f0,%f0 103207151Smarius 104207151Smarius .global insn_float64_to_int64_round_to_zero 105207151Smariusinsn_float64_to_int64_round_to_zero: 106207151Smarius fdtox %f0,%f0 107207151Smarius 108207151Smarius .global insn_float64_to_float32 109207151Smariusinsn_float64_to_float32: 110207151Smarius fdtos %f0,%f0 111207151Smarius 112207151Smarius .global insn_float64_to_float128 113207151Smariusinsn_float64_to_float128: 114207151Smarius fdtoq %f0,%f0 115207151Smarius 116207151Smarius .global insn_float64_add 117207151Smariusinsn_float64_add: 118207151Smarius faddd %f0,%f2,%f0 119207151Smarius 120207151Smarius .global insn_float64_sub 121207151Smariusinsn_float64_sub: 122207151Smarius fsubd %f0,%f2,%f0 123207151Smarius 124207151Smarius .global insn_float64_mul 125207151Smariusinsn_float64_mul: 126207151Smarius fmuld %f0,%f2,%f0 127207151Smarius 128207151Smarius .global insn_float64_div 129207151Smariusinsn_float64_div: 130207151Smarius fdivd %f0,%f2,%f0 131207151Smarius 132207151Smarius .global insn_float64_sqrt 133207151Smariusinsn_float64_sqrt: 134207151Smarius fsqrtd %f0,%f0 135207151Smarius 136207151Smarius .global insn_float64_cmp 137207151Smariusinsn_float64_cmp: 138207151Smarius fcmpd %fcc0,%f0,%f2 139207151Smarius 140207151Smarius .global insn_float64_cmpe 141207151Smariusinsn_float64_cmpe: 142207151Smarius fcmped %fcc0,%f0,%f2 143207151Smarius 144207151Smarius .global insn_float128_to_int32_round_to_zero 145207151Smariusinsn_float128_to_int32_round_to_zero: 146207151Smarius fqtoi %f0,%f0 147207151Smarius 148207151Smarius .global insn_float128_to_int64_round_to_zero 149207151Smariusinsn_float128_to_int64_round_to_zero: 150207151Smarius fqtox %f0,%f0 151207151Smarius 152207151Smarius .global insn_float128_to_float32 153207151Smariusinsn_float128_to_float32: 154207151Smarius fqtos %f0,%f0 155207151Smarius 156207151Smarius .global insn_float128_to_float64 157207151Smariusinsn_float128_to_float64: 158207151Smarius fqtod %f0,%f0 159207151Smarius 160207151Smarius .global insn_float128_add 161207151Smariusinsn_float128_add: 162207151Smarius faddq %f0,%f4,%f0 163207151Smarius 164207151Smarius .global insn_float128_sub 165207151Smariusinsn_float128_sub: 166207151Smarius fsubq %f0,%f4,%f0 167207151Smarius 168207151Smarius .global insn_float128_mul 169207151Smariusinsn_float128_mul: 170207151Smarius fmulq %f0,%f4,%f0 171207151Smarius 172207151Smarius .global insn_float128_div 173207151Smariusinsn_float128_div: 174207151Smarius fdivq %f0,%f4,%f0 175207151Smarius 176207151Smarius .global insn_float128_sqrt 177207151Smariusinsn_float128_sqrt: 178207151Smarius fsqrtq %f0,%f0 179207151Smarius 180207151Smarius .global insn_float128_cmp 181207151Smariusinsn_float128_cmp: 182207151Smarius fcmpq %fcc0,%f0,%f4 183207151Smarius 184207151Smarius .global insn_float128_cmpe 185207151Smariusinsn_float128_cmpe: 186207151Smarius fcmpeq %fcc0,%f0,%f4 187