blob: 1f1daa951d075c2d7e7fc83a77a316e8ddf3f35d [file] [log] [blame]
/*
* Copyright (C) 2019 Metrological Group B.V.
* Copyright (C) 2019 Igalia S.L.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#define RegisterNames MIPSRegisters
#define FOR_EACH_REGISTER(macro) \
FOR_EACH_GP_REGISTER(macro) \
FOR_EACH_FP_REGISTER(macro)
#define FOR_EACH_GP_REGISTER(macro) \
macro(r0, "zero", 0, 0) \
macro(r1, "at", 0, 0) \
macro(r2, "v0", 0, 0) \
macro(r3, "v1", 0, 0) \
macro(r4, "a0", 0, 0) \
macro(r5, "a1", 0, 0) \
macro(r6, "a2", 0, 0) \
macro(r7, "a3", 0, 0) \
macro(r8, "t0", 0, 0) \
macro(r9, "t1", 0, 0) \
macro(r10, "t2", 0, 0) \
macro(r11, "t3", 0, 0) \
macro(r12, "t4", 0, 0) \
macro(r13, "t5", 0, 0) \
macro(r14, "t6", 0, 0) \
macro(r15, "t7", 0, 0) \
macro(r16, "s0", 0, 1) \
macro(r17, "s1", 0, 0) \
macro(r18, "s2", 0, 0) \
macro(r19, "s3", 0, 0) \
macro(r20, "s4", 0, 0) \
macro(r21, "s5", 0, 0) \
macro(r22, "s6", 0, 0) \
macro(r23, "s7", 0, 0) \
macro(r24, "t8", 0, 0) \
macro(r25, "t9", 0, 0) \
macro(r26, "k0", 0, 0) \
macro(r27, "k1", 0, 0) \
macro(r28, "gp", 0, 0) \
macro(r29, "sp", 0, 0) \
macro(r30, "fp", 0, 0) \
macro(r31, "ra", 0, 0)
#define FOR_EACH_REGISTER_ALIAS(macro) \
macro(zero, r0) \
macro(at, r1) \
macro(v0, r2) \
macro(v1, r3) \
macro(a0, r4) \
macro(a1, r5) \
macro(a2, r6) \
macro(a3, r7) \
macro(t0, r8) \
macro(t1, r9) \
macro(t2, r10) \
macro(t3, r11) \
macro(t4, r12) \
macro(t5, r13) \
macro(t6, r14) \
macro(t7, r15) \
macro(s0, r16) \
macro(s1, r17) \
macro(s2, r18) \
macro(s3, r19) \
macro(s4, r20) \
macro(s5, r21) \
macro(s6, r22) \
macro(s7, r23) \
macro(t8, r24) \
macro(t9, r25) \
macro(k0, r26) \
macro(k1, r27) \
macro(gp, r28) \
macro(sp, r29) \
macro(fp, r30) \
macro(ra, r31)
#define FOR_EACH_SP_REGISTER(macro) \
macro(fir, "fir", 0) \
macro(fccr, "fccr", 25) \
macro(fexr, "fexr", 26) \
macro(fenr, "fenr", 28) \
macro(fcsr, "fcsr", 31) \
macro(pc, "pc", 32)
#define FOR_EACH_FP_REGISTER(macro) \
macro(f0, "f0", 0, 0) \
macro(f1, "f1", 0, 0) \
macro(f2, "f2", 0, 0) \
macro(f3, "f3", 0, 0) \
macro(f4, "f4", 0, 0) \
macro(f5, "f5", 0, 0) \
macro(f6, "f6", 0, 0) \
macro(f7, "f7", 0, 0) \
macro(f8, "f8", 0, 0) \
macro(f9, "f9", 0, 0) \
macro(f10, "f10", 0, 0) \
macro(f11, "f11", 0, 0) \
macro(f12, "f12", 0, 0) \
macro(f13, "f13", 0, 0) \
macro(f14, "f14", 0, 0) \
macro(f15, "f15", 0, 0) \
macro(f16, "f16", 0, 0) \
macro(f17, "f17", 0, 0) \
macro(f18, "f18", 0, 0) \
macro(f19, "f19", 0, 0) \
macro(f20, "f20", 0, 0) \
macro(f21, "f21", 0, 0) \
macro(f22, "f22", 0, 0) \
macro(f23, "f23", 0, 0) \
macro(f24, "f24", 0, 0) \
macro(f25, "f25", 0, 0) \
macro(f26, "f26", 0, 0) \
macro(f27, "f27", 0, 0) \
macro(f28, "f28", 0, 0) \
macro(f29, "f29", 0, 0) \
macro(f30, "f30", 0, 0) \
macro(f31, "f31", 0, 0)