| 1 | //===-- RegisterInfos_x86_64_with_base_shared.cpp--------------------------===// |
| 2 | // |
| 3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| 4 | // See https://llvm.org/LICENSE.txt for license information. |
| 5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 6 | // |
| 7 | //===----------------------------------------------------------------------===// |
| 8 | |
| 9 | #include "RegisterInfos_x86_64_with_base_shared.h" |
| 10 | |
| 11 | #include "lldb/lldb-defines.h" |
| 12 | #include <mutex> |
| 13 | |
| 14 | using namespace lldb; |
| 15 | |
| 16 | namespace lldb_private { |
| 17 | |
| 18 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_eax[] = { |
| 19 | lldb_eax_i386, LLDB_INVALID_REGNUM}; |
| 20 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_ebx[] = { |
| 21 | lldb_ebx_i386, LLDB_INVALID_REGNUM}; |
| 22 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_ecx[] = { |
| 23 | lldb_ecx_i386, LLDB_INVALID_REGNUM}; |
| 24 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_edx[] = { |
| 25 | lldb_edx_i386, LLDB_INVALID_REGNUM}; |
| 26 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_edi[] = { |
| 27 | lldb_edi_i386, LLDB_INVALID_REGNUM}; |
| 28 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_esi[] = { |
| 29 | lldb_esi_i386, LLDB_INVALID_REGNUM}; |
| 30 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_ebp[] = { |
| 31 | lldb_ebp_i386, LLDB_INVALID_REGNUM}; |
| 32 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_esp[] = { |
| 33 | lldb_esp_i386, LLDB_INVALID_REGNUM}; |
| 34 | |
| 35 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_eax[] = { |
| 36 | lldb_eax_i386, lldb_ax_i386, lldb_ah_i386, lldb_al_i386, |
| 37 | LLDB_INVALID_REGNUM}; |
| 38 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_ebx[] = { |
| 39 | lldb_ebx_i386, lldb_bx_i386, lldb_bh_i386, lldb_bl_i386, |
| 40 | LLDB_INVALID_REGNUM}; |
| 41 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_ecx[] = { |
| 42 | lldb_ecx_i386, lldb_cx_i386, lldb_ch_i386, lldb_cl_i386, |
| 43 | LLDB_INVALID_REGNUM}; |
| 44 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_edx[] = { |
| 45 | lldb_edx_i386, lldb_dx_i386, lldb_dh_i386, lldb_dl_i386, |
| 46 | LLDB_INVALID_REGNUM}; |
| 47 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_edi[] = { |
| 48 | lldb_edi_i386, lldb_di_i386, LLDB_INVALID_REGNUM}; |
| 49 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_esi[] = { |
| 50 | lldb_esi_i386, lldb_si_i386, LLDB_INVALID_REGNUM}; |
| 51 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_ebp[] = { |
| 52 | lldb_ebp_i386, lldb_bp_i386, LLDB_INVALID_REGNUM}; |
| 53 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_esp[] = { |
| 54 | lldb_esp_i386, lldb_sp_i386, LLDB_INVALID_REGNUM}; |
| 55 | |
| 56 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_rax[] = { |
| 57 | x86_64_with_base::lldb_rax, LLDB_INVALID_REGNUM}; |
| 58 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_rbx[] = { |
| 59 | x86_64_with_base::lldb_rbx, LLDB_INVALID_REGNUM}; |
| 60 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_rcx[] = { |
| 61 | x86_64_with_base::lldb_rcx, LLDB_INVALID_REGNUM}; |
| 62 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_rdx[] = { |
| 63 | x86_64_with_base::lldb_rdx, LLDB_INVALID_REGNUM}; |
| 64 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_rdi[] = { |
| 65 | x86_64_with_base::lldb_rdi, LLDB_INVALID_REGNUM}; |
| 66 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_rsi[] = { |
| 67 | x86_64_with_base::lldb_rsi, LLDB_INVALID_REGNUM}; |
| 68 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_rbp[] = { |
| 69 | x86_64_with_base::lldb_rbp, LLDB_INVALID_REGNUM}; |
| 70 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_rsp[] = { |
| 71 | x86_64_with_base::lldb_rsp, LLDB_INVALID_REGNUM}; |
| 72 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_r8[] = { |
| 73 | x86_64_with_base::lldb_r8, LLDB_INVALID_REGNUM}; |
| 74 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_r9[] = { |
| 75 | x86_64_with_base::lldb_r9, LLDB_INVALID_REGNUM}; |
| 76 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_r10[] = { |
| 77 | x86_64_with_base::lldb_r10, LLDB_INVALID_REGNUM}; |
| 78 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_r11[] = { |
| 79 | x86_64_with_base::lldb_r11, LLDB_INVALID_REGNUM}; |
| 80 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_r12[] = { |
| 81 | x86_64_with_base::lldb_r12, LLDB_INVALID_REGNUM}; |
| 82 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_r13[] = { |
| 83 | x86_64_with_base::lldb_r13, LLDB_INVALID_REGNUM}; |
| 84 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_r14[] = { |
| 85 | x86_64_with_base::lldb_r14, LLDB_INVALID_REGNUM}; |
| 86 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_r15[] = { |
| 87 | x86_64_with_base::lldb_r15, LLDB_INVALID_REGNUM}; |
| 88 | |
| 89 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_rax[] = { |
| 90 | x86_64_with_base::lldb_rax, x86_64_with_base::lldb_eax, |
| 91 | x86_64_with_base::lldb_ax, x86_64_with_base::lldb_ah, |
| 92 | x86_64_with_base::lldb_al, LLDB_INVALID_REGNUM}; |
| 93 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_rbx[] = { |
| 94 | x86_64_with_base::lldb_rbx, x86_64_with_base::lldb_ebx, |
| 95 | x86_64_with_base::lldb_bx, x86_64_with_base::lldb_bh, |
| 96 | x86_64_with_base::lldb_bl, LLDB_INVALID_REGNUM}; |
| 97 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_rcx[] = { |
| 98 | x86_64_with_base::lldb_rcx, x86_64_with_base::lldb_ecx, |
| 99 | x86_64_with_base::lldb_cx, x86_64_with_base::lldb_ch, |
| 100 | x86_64_with_base::lldb_cl, LLDB_INVALID_REGNUM}; |
| 101 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_rdx[] = { |
| 102 | x86_64_with_base::lldb_rdx, x86_64_with_base::lldb_edx, |
| 103 | x86_64_with_base::lldb_dx, x86_64_with_base::lldb_dh, |
| 104 | x86_64_with_base::lldb_dl, LLDB_INVALID_REGNUM}; |
| 105 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_rdi[] = { |
| 106 | x86_64_with_base::lldb_rdi, x86_64_with_base::lldb_edi, |
| 107 | x86_64_with_base::lldb_di, x86_64_with_base::lldb_dil, LLDB_INVALID_REGNUM}; |
| 108 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_rsi[] = { |
| 109 | x86_64_with_base::lldb_rsi, x86_64_with_base::lldb_esi, |
| 110 | x86_64_with_base::lldb_si, x86_64_with_base::lldb_sil, LLDB_INVALID_REGNUM}; |
| 111 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_rbp[] = { |
| 112 | x86_64_with_base::lldb_rbp, x86_64_with_base::lldb_ebp, |
| 113 | x86_64_with_base::lldb_bp, x86_64_with_base::lldb_bpl, LLDB_INVALID_REGNUM}; |
| 114 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_rsp[] = { |
| 115 | x86_64_with_base::lldb_rsp, x86_64_with_base::lldb_esp, |
| 116 | x86_64_with_base::lldb_sp, x86_64_with_base::lldb_spl, LLDB_INVALID_REGNUM}; |
| 117 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_r8[] = { |
| 118 | x86_64_with_base::lldb_r8, x86_64_with_base::lldb_r8d, |
| 119 | x86_64_with_base::lldb_r8w, x86_64_with_base::lldb_r8l, |
| 120 | LLDB_INVALID_REGNUM}; |
| 121 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_r9[] = { |
| 122 | x86_64_with_base::lldb_r9, x86_64_with_base::lldb_r9d, |
| 123 | x86_64_with_base::lldb_r9w, x86_64_with_base::lldb_r9l, |
| 124 | LLDB_INVALID_REGNUM}; |
| 125 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_r10[] = { |
| 126 | x86_64_with_base::lldb_r10, x86_64_with_base::lldb_r10d, |
| 127 | x86_64_with_base::lldb_r10w, x86_64_with_base::lldb_r10l, |
| 128 | LLDB_INVALID_REGNUM}; |
| 129 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_r11[] = { |
| 130 | x86_64_with_base::lldb_r11, x86_64_with_base::lldb_r11d, |
| 131 | x86_64_with_base::lldb_r11w, x86_64_with_base::lldb_r11l, |
| 132 | LLDB_INVALID_REGNUM}; |
| 133 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_r12[] = { |
| 134 | x86_64_with_base::lldb_r12, x86_64_with_base::lldb_r12d, |
| 135 | x86_64_with_base::lldb_r12w, x86_64_with_base::lldb_r12l, |
| 136 | LLDB_INVALID_REGNUM}; |
| 137 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_r13[] = { |
| 138 | x86_64_with_base::lldb_r13, x86_64_with_base::lldb_r13d, |
| 139 | x86_64_with_base::lldb_r13w, x86_64_with_base::lldb_r13l, |
| 140 | LLDB_INVALID_REGNUM}; |
| 141 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_r14[] = { |
| 142 | x86_64_with_base::lldb_r14, x86_64_with_base::lldb_r14d, |
| 143 | x86_64_with_base::lldb_r14w, x86_64_with_base::lldb_r14l, |
| 144 | LLDB_INVALID_REGNUM}; |
| 145 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_r15[] = { |
| 146 | x86_64_with_base::lldb_r15, x86_64_with_base::lldb_r15d, |
| 147 | x86_64_with_base::lldb_r15w, x86_64_with_base::lldb_r15l, |
| 148 | LLDB_INVALID_REGNUM}; |
| 149 | |
| 150 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_fip[] = { |
| 151 | x86_64_with_base::lldb_fip, LLDB_INVALID_REGNUM}; |
| 152 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_fdp[] = { |
| 153 | x86_64_with_base::lldb_fdp, LLDB_INVALID_REGNUM}; |
| 154 | |
| 155 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_fip[] = { |
| 156 | x86_64_with_base::lldb_fip, x86_64_with_base::lldb_fioff, |
| 157 | x86_64_with_base::lldb_fiseg, LLDB_INVALID_REGNUM}; |
| 158 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_fdp[] = { |
| 159 | x86_64_with_base::lldb_fdp, x86_64_with_base::lldb_fooff, |
| 160 | x86_64_with_base::lldb_foseg, LLDB_INVALID_REGNUM}; |
| 161 | |
| 162 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st0_32[] = { |
| 163 | lldb_st0_i386, LLDB_INVALID_REGNUM}; |
| 164 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st1_32[] = { |
| 165 | lldb_st1_i386, LLDB_INVALID_REGNUM}; |
| 166 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st2_32[] = { |
| 167 | lldb_st2_i386, LLDB_INVALID_REGNUM}; |
| 168 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st3_32[] = { |
| 169 | lldb_st3_i386, LLDB_INVALID_REGNUM}; |
| 170 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st4_32[] = { |
| 171 | lldb_st4_i386, LLDB_INVALID_REGNUM}; |
| 172 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st5_32[] = { |
| 173 | lldb_st5_i386, LLDB_INVALID_REGNUM}; |
| 174 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st6_32[] = { |
| 175 | lldb_st6_i386, LLDB_INVALID_REGNUM}; |
| 176 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st7_32[] = { |
| 177 | lldb_st7_i386, LLDB_INVALID_REGNUM}; |
| 178 | |
| 179 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st0_32[] = { |
| 180 | lldb_st0_i386, lldb_mm0_i386, LLDB_INVALID_REGNUM}; |
| 181 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st1_32[] = { |
| 182 | lldb_st1_i386, lldb_mm1_i386, LLDB_INVALID_REGNUM}; |
| 183 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st2_32[] = { |
| 184 | lldb_st2_i386, lldb_mm2_i386, LLDB_INVALID_REGNUM}; |
| 185 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st3_32[] = { |
| 186 | lldb_st3_i386, lldb_mm3_i386, LLDB_INVALID_REGNUM}; |
| 187 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st4_32[] = { |
| 188 | lldb_st4_i386, lldb_mm4_i386, LLDB_INVALID_REGNUM}; |
| 189 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st5_32[] = { |
| 190 | lldb_st5_i386, lldb_mm5_i386, LLDB_INVALID_REGNUM}; |
| 191 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st6_32[] = { |
| 192 | lldb_st6_i386, lldb_mm6_i386, LLDB_INVALID_REGNUM}; |
| 193 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st7_32[] = { |
| 194 | lldb_st7_i386, lldb_mm7_i386, LLDB_INVALID_REGNUM}; |
| 195 | |
| 196 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st0_64[] = { |
| 197 | x86_64_with_base::lldb_st0, LLDB_INVALID_REGNUM}; |
| 198 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st1_64[] = { |
| 199 | x86_64_with_base::lldb_st1, LLDB_INVALID_REGNUM}; |
| 200 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st2_64[] = { |
| 201 | x86_64_with_base::lldb_st2, LLDB_INVALID_REGNUM}; |
| 202 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st3_64[] = { |
| 203 | x86_64_with_base::lldb_st3, LLDB_INVALID_REGNUM}; |
| 204 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st4_64[] = { |
| 205 | x86_64_with_base::lldb_st4, LLDB_INVALID_REGNUM}; |
| 206 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st5_64[] = { |
| 207 | x86_64_with_base::lldb_st5, LLDB_INVALID_REGNUM}; |
| 208 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st6_64[] = { |
| 209 | x86_64_with_base::lldb_st6, LLDB_INVALID_REGNUM}; |
| 210 | uint32_t RegisterInfos_x86_64_with_base_shared::g_contained_st7_64[] = { |
| 211 | x86_64_with_base::lldb_st7, LLDB_INVALID_REGNUM}; |
| 212 | |
| 213 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st0_64[] = { |
| 214 | x86_64_with_base::lldb_st0, x86_64_with_base::lldb_mm0, |
| 215 | LLDB_INVALID_REGNUM}; |
| 216 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st1_64[] = { |
| 217 | x86_64_with_base::lldb_st1, x86_64_with_base::lldb_mm1, |
| 218 | LLDB_INVALID_REGNUM}; |
| 219 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st2_64[] = { |
| 220 | x86_64_with_base::lldb_st2, x86_64_with_base::lldb_mm2, |
| 221 | LLDB_INVALID_REGNUM}; |
| 222 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st3_64[] = { |
| 223 | x86_64_with_base::lldb_st3, x86_64_with_base::lldb_mm3, |
| 224 | LLDB_INVALID_REGNUM}; |
| 225 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st4_64[] = { |
| 226 | x86_64_with_base::lldb_st4, x86_64_with_base::lldb_mm4, |
| 227 | LLDB_INVALID_REGNUM}; |
| 228 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st5_64[] = { |
| 229 | x86_64_with_base::lldb_st5, x86_64_with_base::lldb_mm5, |
| 230 | LLDB_INVALID_REGNUM}; |
| 231 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st6_64[] = { |
| 232 | x86_64_with_base::lldb_st6, x86_64_with_base::lldb_mm6, |
| 233 | LLDB_INVALID_REGNUM}; |
| 234 | uint32_t RegisterInfos_x86_64_with_base_shared::g_invalidate_st7_64[] = { |
| 235 | x86_64_with_base::lldb_st7, x86_64_with_base::lldb_mm7, |
| 236 | LLDB_INVALID_REGNUM}; |
| 237 | |
| 238 | RegInfo &GetRegInfoShared(llvm::Triple::ArchType arch_type, bool with_base) { |
| 239 | static std::once_flag once_flag_x86, once_flag_x86_64, |
| 240 | once_flag_x86_64_with_base; |
| 241 | static RegInfo reg_info_x86, reg_info_x86_64, reg_info_x86_64_with_base, reg_info_invalid; |
| 242 | |
| 243 | switch (arch_type) { |
| 244 | case llvm::Triple::x86: |
| 245 | std::call_once(once&: once_flag_x86, f: []() { |
| 246 | reg_info_x86.num_registers = k_num_registers_i386; |
| 247 | reg_info_x86.num_gpr_registers = k_num_gpr_registers_i386; |
| 248 | reg_info_x86.num_fpr_registers = k_num_fpr_registers_i386; |
| 249 | reg_info_x86.num_avx_registers = k_num_avx_registers_i386; |
| 250 | reg_info_x86.last_gpr = k_last_gpr_i386; |
| 251 | reg_info_x86.first_fpr = k_first_fpr_i386; |
| 252 | reg_info_x86.last_fpr = k_last_fpr_i386; |
| 253 | reg_info_x86.first_st = lldb_st0_i386; |
| 254 | reg_info_x86.last_st = lldb_st7_i386; |
| 255 | reg_info_x86.first_mm = lldb_mm0_i386; |
| 256 | reg_info_x86.last_mm = lldb_mm7_i386; |
| 257 | reg_info_x86.first_xmm = lldb_xmm0_i386; |
| 258 | reg_info_x86.last_xmm = lldb_xmm7_i386; |
| 259 | reg_info_x86.first_ymm = lldb_ymm0_i386; |
| 260 | reg_info_x86.last_ymm = lldb_ymm7_i386; |
| 261 | reg_info_x86.first_dr = lldb_dr0_i386; |
| 262 | reg_info_x86.gpr_flags = lldb_eflags_i386; |
| 263 | }); |
| 264 | |
| 265 | return reg_info_x86; |
| 266 | case llvm::Triple::x86_64: |
| 267 | if (with_base) { |
| 268 | std::call_once(once&: once_flag_x86_64_with_base, f: []() { |
| 269 | reg_info_x86_64_with_base.num_registers = |
| 270 | x86_64_with_base::k_num_registers; |
| 271 | reg_info_x86_64_with_base.num_gpr_registers = |
| 272 | x86_64_with_base::k_num_gpr_registers; |
| 273 | reg_info_x86_64_with_base.num_fpr_registers = |
| 274 | x86_64_with_base::k_num_fpr_registers; |
| 275 | reg_info_x86_64_with_base.num_avx_registers = |
| 276 | x86_64_with_base::k_num_avx_registers; |
| 277 | reg_info_x86_64_with_base.last_gpr = x86_64_with_base::k_last_gpr; |
| 278 | reg_info_x86_64_with_base.first_fpr = x86_64_with_base::k_first_fpr; |
| 279 | reg_info_x86_64_with_base.last_fpr = x86_64_with_base::k_last_fpr; |
| 280 | reg_info_x86_64_with_base.first_st = x86_64_with_base::lldb_st0; |
| 281 | reg_info_x86_64_with_base.last_st = x86_64_with_base::lldb_st7; |
| 282 | reg_info_x86_64_with_base.first_mm = x86_64_with_base::lldb_mm0; |
| 283 | reg_info_x86_64_with_base.last_mm = x86_64_with_base::lldb_mm7; |
| 284 | reg_info_x86_64_with_base.first_xmm = x86_64_with_base::lldb_xmm0; |
| 285 | reg_info_x86_64_with_base.last_xmm = x86_64_with_base::lldb_xmm15; |
| 286 | reg_info_x86_64_with_base.first_ymm = x86_64_with_base::lldb_ymm0; |
| 287 | reg_info_x86_64_with_base.last_ymm = x86_64_with_base::lldb_ymm15; |
| 288 | reg_info_x86_64_with_base.first_dr = x86_64_with_base::lldb_dr0; |
| 289 | reg_info_x86_64_with_base.gpr_flags = x86_64_with_base::lldb_rflags; |
| 290 | }); |
| 291 | |
| 292 | return reg_info_x86_64_with_base; |
| 293 | } else { |
| 294 | std::call_once(once&: once_flag_x86_64, f: []() { |
| 295 | reg_info_x86_64.num_registers = k_num_registers_x86_64; |
| 296 | reg_info_x86_64.num_gpr_registers = k_num_gpr_registers_x86_64; |
| 297 | reg_info_x86_64.num_fpr_registers = k_num_fpr_registers_x86_64; |
| 298 | reg_info_x86_64.num_avx_registers = k_num_avx_registers_x86_64; |
| 299 | reg_info_x86_64.last_gpr = k_last_gpr_x86_64; |
| 300 | reg_info_x86_64.first_fpr = k_first_fpr_x86_64; |
| 301 | reg_info_x86_64.last_fpr = k_last_fpr_x86_64; |
| 302 | reg_info_x86_64.first_st = lldb_st0_x86_64; |
| 303 | reg_info_x86_64.last_st = lldb_st7_x86_64; |
| 304 | reg_info_x86_64.first_mm = lldb_mm0_x86_64; |
| 305 | reg_info_x86_64.last_mm = lldb_mm7_x86_64; |
| 306 | reg_info_x86_64.first_xmm = lldb_xmm0_x86_64; |
| 307 | reg_info_x86_64.last_xmm = lldb_xmm15_x86_64; |
| 308 | reg_info_x86_64.first_ymm = lldb_ymm0_x86_64; |
| 309 | reg_info_x86_64.last_ymm = lldb_ymm15_x86_64; |
| 310 | reg_info_x86_64.first_dr = lldb_dr0_x86_64; |
| 311 | reg_info_x86_64.gpr_flags = lldb_rflags_x86_64; |
| 312 | }); |
| 313 | return reg_info_x86_64; |
| 314 | } |
| 315 | default: |
| 316 | assert(false && "Unhandled target architecture." ); |
| 317 | return reg_info_invalid; |
| 318 | } |
| 319 | } |
| 320 | |
| 321 | } // namespace lldb_private |
| 322 | |