Alien-LibJIT

 view release on metacpan or  search on metacpan

libjit/attic/jit-rules-alpha.h  view on Meta::CPAN

/*
 * jit-rules-alpha.h - Rules that define the characteristics of the alpha.
 *
 * Copyright (C) 2006  Southern Storm Software, Pty Ltd.
 *
 * This file is part of the libjit library.
 *
 * The libjit library is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation, either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * The libjit library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with the libjit library.  If not, see
 * <http://www.gnu.org/licenses/>.
 */

#ifndef	_JIT_RULES_ALPHA_H
#define	_JIT_RULES_ALPHA_H

#ifdef	__cplusplus
extern	"C" {
#endif

/*
 * alpha has 32 64-bit floating-point registers. Each can hold either
 * 1 32-bit float or 1 64-bit double.
 */
#define JIT_REG_ALPHA_FLOAT	\
	(JIT_REG_FLOAT32 | JIT_REG_FLOAT64 | JIT_REG_NFLOAT)

/*
 * alpha has 32 64-bit integer registers that can hold WORD and LONG values
 */
#define JIT_REG_ALPHA_INT	\
	(JIT_REG_WORD | JIT_REG_LONG)

/*
 * Integer registers
 *
 * $0 - function results.
 * $1..$8 - Temp registers. 
 * $9..$14 - Saved registers.
 * $15/$fp - Frame pointer or saved register.
 * $16-$21 - First 6 arguments.
 * $22-$25 - Temp registers.
 * $26 - Return address.
 * $27 - Procedure value or temp register.
 * $28/$at - Reserved for the assembler.
 * $29/$gp - Global pointer.
 * $30/$sp - Stack pointer.
 * $31 - Contains the value 0.
 *
 * Floating-point registers
 *
 * $f0,$f1 - function results. $f0 = real component $f1 = imaginary component
 * $f2..$f9 - Saved registers.
 * $f10..$f15 - Temp registers.
 * $f16..$f21 - First 6 arguments.
 * $f22..$f30 - Temp registers for expression evaluation.
 * $f31 - Contains the value 0.0.
 */
#define JIT_REG_INFO	\
	{   "v0",  0, -1, JIT_REG_FIXED}, \
	{   "t0",  1, -1, JIT_REG_ALPHA_INT | JIT_REG_CALL_USED}, \
	{   "t1",  2, -1, JIT_REG_ALPHA_INT | JIT_REG_CALL_USED}, \
	{   "t2",  3, -1, JIT_REG_ALPHA_INT | JIT_REG_CALL_USED}, \
	{   "t3",  4, -1, JIT_REG_ALPHA_INT | JIT_REG_CALL_USED}, \
	{   "t4",  5, -1, JIT_REG_ALPHA_INT | JIT_REG_CALL_USED}, \
	{   "t5",  6, -1, JIT_REG_ALPHA_INT | JIT_REG_CALL_USED}, \
	{   "t6",  7, -1, JIT_REG_ALPHA_INT | JIT_REG_CALL_USED}, \
	{   "t7",  8, -1, JIT_REG_ALPHA_INT | JIT_REG_CALL_USED}, \
	{   "s0",  9, -1, JIT_REG_ALPHA_INT | JIT_REG_GLOBAL}, \
 	{   "s1", 10, -1, JIT_REG_ALPHA_INT | JIT_REG_GLOBAL}, \
	{   "s2", 11, -1, JIT_REG_ALPHA_INT | JIT_REG_GLOBAL}, \



( run in 0.798 second using v1.01-cache-2.11-cpan-df04353d9ac )