| 1 | /* This file was generated by: gen-reg-macros.py. |
| 2 | |
| 3 | Copyright (C) 2022-2023 Free Software Foundation, Inc. |
| 4 | This file is part of the GNU C Library. |
| 5 | |
| 6 | The GNU C Library is free software; you can redistribute it and/or |
| 7 | modify it under the terms of the GNU Lesser General Public |
| 8 | License as published by the Free Software Foundation; either |
| 9 | version 2.1 of the License, or (at your option) any later version. |
| 10 | |
| 11 | The GNU C Library is distributed in the hope that it will be useful, |
| 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 14 | Lesser General Public License for more details. |
| 15 | |
| 16 | You should have received a copy of the GNU Lesser General Public |
| 17 | License along with the GNU C Library; if not, see |
| 18 | <https://www.gnu.org/licenses/>. */ |
| 19 | |
| 20 | #ifndef _REG_MACROS_H |
| 21 | #define _REG_MACROS_H 1 |
| 22 | |
| 23 | #define rax_8 al |
| 24 | #define rax_16 ax |
| 25 | #define rax_32 eax |
| 26 | #define rax_64 rax |
| 27 | #define rbx_8 bl |
| 28 | #define rbx_16 bx |
| 29 | #define rbx_32 ebx |
| 30 | #define rbx_64 rbx |
| 31 | #define rcx_8 cl |
| 32 | #define rcx_16 cx |
| 33 | #define rcx_32 ecx |
| 34 | #define rcx_64 rcx |
| 35 | #define rdx_8 dl |
| 36 | #define rdx_16 dx |
| 37 | #define rdx_32 edx |
| 38 | #define rdx_64 rdx |
| 39 | #define rbp_8 bpl |
| 40 | #define rbp_16 bp |
| 41 | #define rbp_32 ebp |
| 42 | #define rbp_64 rbp |
| 43 | #define rsp_8 spl |
| 44 | #define rsp_16 sp |
| 45 | #define rsp_32 esp |
| 46 | #define rsp_64 rsp |
| 47 | #define rsi_8 sil |
| 48 | #define rsi_16 si |
| 49 | #define rsi_32 esi |
| 50 | #define rsi_64 rsi |
| 51 | #define rdi_8 dil |
| 52 | #define rdi_16 di |
| 53 | #define rdi_32 edi |
| 54 | #define rdi_64 rdi |
| 55 | #define r8_8 r8b |
| 56 | #define r8_16 r8w |
| 57 | #define r8_32 r8d |
| 58 | #define r8_64 r8 |
| 59 | #define r9_8 r9b |
| 60 | #define r9_16 r9w |
| 61 | #define r9_32 r9d |
| 62 | #define r9_64 r9 |
| 63 | #define r10_8 r10b |
| 64 | #define r10_16 r10w |
| 65 | #define r10_32 r10d |
| 66 | #define r10_64 r10 |
| 67 | #define r11_8 r11b |
| 68 | #define r11_16 r11w |
| 69 | #define r11_32 r11d |
| 70 | #define r11_64 r11 |
| 71 | #define r12_8 r12b |
| 72 | #define r12_16 r12w |
| 73 | #define r12_32 r12d |
| 74 | #define r12_64 r12 |
| 75 | #define r13_8 r13b |
| 76 | #define r13_16 r13w |
| 77 | #define r13_32 r13d |
| 78 | #define r13_64 r13 |
| 79 | #define r14_8 r14b |
| 80 | #define r14_16 r14w |
| 81 | #define r14_32 r14d |
| 82 | #define r14_64 r14 |
| 83 | #define r15_8 r15b |
| 84 | #define r15_16 r15w |
| 85 | #define r15_32 r15d |
| 86 | #define r15_64 r15 |
| 87 | |
| 88 | #define kmov_8 kmovb |
| 89 | #define kmov_16 kmovw |
| 90 | #define kmov_32 kmovd |
| 91 | #define kmov_64 kmovq |
| 92 | #define kortest_8 kortestb |
| 93 | #define kortest_16 kortestw |
| 94 | #define kortest_32 kortestd |
| 95 | #define kortest_64 kortestq |
| 96 | #define kor_8 korb |
| 97 | #define kor_16 korw |
| 98 | #define kor_32 kord |
| 99 | #define kor_64 korq |
| 100 | #define ktest_8 ktestb |
| 101 | #define ktest_16 ktestw |
| 102 | #define ktest_32 ktestd |
| 103 | #define ktest_64 ktestq |
| 104 | #define kand_8 kandb |
| 105 | #define kand_16 kandw |
| 106 | #define kand_32 kandd |
| 107 | #define kand_64 kandq |
| 108 | #define kxor_8 kxorb |
| 109 | #define kxor_16 kxorw |
| 110 | #define kxor_32 kxord |
| 111 | #define kxor_64 kxorq |
| 112 | #define knot_8 knotb |
| 113 | #define knot_16 knotw |
| 114 | #define knot_32 knotd |
| 115 | #define knot_64 knotq |
| 116 | #define kxnor_8 kxnorb |
| 117 | #define kxnor_16 kxnorw |
| 118 | #define kxnor_32 kxnord |
| 119 | #define kxnor_64 kxnorq |
| 120 | #define kunpack_8 kunpackbw |
| 121 | #define kunpack_16 kunpackwd |
| 122 | #define kunpack_32 kunpackdq |
| 123 | |
| 124 | /* Common API for accessing proper width GPR is V{upcase_GPR_name}. */ |
| 125 | #define VRAX VGPR(rax) |
| 126 | #define VRBX VGPR(rbx) |
| 127 | #define VRCX VGPR(rcx) |
| 128 | #define VRDX VGPR(rdx) |
| 129 | #define VRBP VGPR(rbp) |
| 130 | #define VRSP VGPR(rsp) |
| 131 | #define VRSI VGPR(rsi) |
| 132 | #define VRDI VGPR(rdi) |
| 133 | #define VR8 VGPR(r8) |
| 134 | #define VR9 VGPR(r9) |
| 135 | #define VR10 VGPR(r10) |
| 136 | #define VR11 VGPR(r11) |
| 137 | #define VR12 VGPR(r12) |
| 138 | #define VR13 VGPR(r13) |
| 139 | #define VR14 VGPR(r14) |
| 140 | #define VR15 VGPR(r15) |
| 141 | |
| 142 | /* Common API for accessing proper width mask insn is {upcase_mask_insn}. */ |
| 143 | #define KMOV VKINSN(kmov) |
| 144 | #define KORTEST VKINSN(kortest) |
| 145 | #define KOR VKINSN(kor) |
| 146 | #define KTEST VKINSN(ktest) |
| 147 | #define KAND VKINSN(kand) |
| 148 | #define KXOR VKINSN(kxor) |
| 149 | #define KNOT VKINSN(knot) |
| 150 | #define KXNOR VKINSN(kxnor) |
| 151 | #define KUNPACK VKINSN(kunpack) |
| 152 | |
| 153 | #ifdef USE_WIDE_CHAR |
| 154 | # define REG_WIDTH 32 |
| 155 | #else |
| 156 | # define REG_WIDTH VEC_SIZE |
| 157 | #endif |
| 158 | |
| 159 | #define VPASTER(x, y) x##_##y |
| 160 | #define VEVALUATOR(x, y) VPASTER(x, y) |
| 161 | |
| 162 | #define VGPR_SZ(reg_name, reg_size) VEVALUATOR(reg_name, reg_size) |
| 163 | #define VKINSN_SZ(insn, reg_size) VEVALUATOR(insn, reg_size) |
| 164 | |
| 165 | #define VGPR(reg_name) VGPR_SZ(reg_name, REG_WIDTH) |
| 166 | #define VKINSN(mask_insn) VKINSN_SZ(mask_insn, REG_WIDTH) |
| 167 | |
| 168 | #endif |
| 169 | |