| /* |
| * 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, 1) \ |
| 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) |