Skip to content

Commit

Permalink
i#1569 AArch64: Rename NUM_XMM_{REGS,SAVED,SLOTS} to NUM_SIMD_...
Browse files Browse the repository at this point in the history
This is to prepare for moving some of x86/clean_call_opt.c into
clean_call_opt_shared.c.

Apart from the "#elif defined(X86)" in globals_shared.h, and adding
the definition of NUM_XMM_SLOTS for backward compatibility, this is
just search-and-replace with a few adjustments to spaces and comments.

Review-URL: https://codereview.appspot.com/318770043
  • Loading branch information
egrimley-arm committed Nov 17, 2016
1 parent c3bd1ca commit 4c259cc
Show file tree
Hide file tree
Showing 19 changed files with 81 additions and 71 deletions.
2 changes: 1 addition & 1 deletion core/arch/aarchxx/mangle.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ insert_push_all_registers(dcontext_t *dcontext, clean_call_info_t *cci,
#endif
if (cci == NULL)
cci = &default_clean_call_info;
if (cci->preserve_mcontext || cci->num_xmms_skip != NUM_XMM_REGS) {
if (cci->preserve_mcontext || cci->num_xmms_skip != NUM_SIMD_REGS) {
/* FIXME i#1551: once we add skipping of regs, need to keep shape here */
}
/* FIXME i#1551: once we have cci->num_xmms_skip, skip this if possible */
Expand Down
2 changes: 1 addition & 1 deletion core/arch/arch.c
Original file line number Diff line number Diff line change
Expand Up @@ -3379,7 +3379,7 @@ dump_mcontext(priv_mcontext_t *context, file_t f, bool dump_xml)
#ifdef X86
if (preserve_xmm_caller_saved()) {
int i, j;
for (i=0; i<NUM_XMM_SAVED; i++) {
for (i=0; i<NUM_SIMD_SAVED; i++) {
if (YMM_ENABLED()) {
print_file(f, dump_xml ? "\t\tymm%d= \"0x" : "\tymm%d= 0x", i);
for (j = 0; j < 8; j++) {
Expand Down
6 changes: 3 additions & 3 deletions core/arch/arch.h
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ typedef enum {
# define SHARED_GENCODE_MATCH_THREAD(dc) get_shared_gencode(dc)
#endif

#define NUM_XMM_REGS NUM_XMM_SAVED
#define NUM_SIMD_REGS NUM_SIMD_SAVED
#define NUM_GP_REGS DR_NUM_GPR_REGS

/* Information about each individual clean call invocation site.
Expand All @@ -340,7 +340,7 @@ typedef struct _clean_call_info_t {
bool skip_save_aflags;
bool skip_clear_eflags;
uint num_xmms_skip;
bool xmm_skip[NUM_XMM_REGS];
bool xmm_skip[NUM_SIMD_REGS];
uint num_regs_skip;
bool reg_skip[NUM_GP_REGS];
bool preserve_mcontext; /* even if skip reg save, preserve mcontext shape */
Expand Down Expand Up @@ -1253,7 +1253,7 @@ typedef struct _callee_info_t {
app_pc bwd_tgt; /* earliest backward branch target */
app_pc fwd_tgt; /* last forward branch target */
int num_xmms_used; /* number of xmms used by callee */
bool xmm_used[NUM_XMM_REGS]; /* xmm/ymm registers usage */
bool xmm_used[NUM_SIMD_REGS]; /* xmm/ymm registers usage */
bool reg_used[NUM_GP_REGS]; /* general purpose registers usage */
int num_callee_save_regs; /* number of regs callee saved */
bool callee_save_regs[NUM_GP_REGS]; /* callee-save registers */
Expand Down
6 changes: 3 additions & 3 deletions core/arch/arch_exports.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@
# define XMM_REG_SIZE 16
# define YMM_REG_SIZE 32
# define XMM_SAVED_REG_SIZE YMM_REG_SIZE /* space in priv_mcontext_t for xmm/ymm */
# define XMM_SLOTS_SIZE (NUM_XMM_SLOTS*XMM_SAVED_REG_SIZE)
# define XMM_SAVED_SIZE (NUM_XMM_SAVED*XMM_SAVED_REG_SIZE)
# define XMM_SLOTS_SIZE (NUM_SIMD_SLOTS*XMM_SAVED_REG_SIZE)
# define XMM_SAVED_SIZE (NUM_SIMD_SAVED*XMM_SAVED_REG_SIZE)
/* Indicates OS support, not just processor support (xref i#1278) */
# define YMM_ENABLED() (proc_avx_enabled())
# define YMMH_REG_SIZE (YMM_REG_SIZE/2) /* upper half */
# define YMMH_SAVED_SIZE (NUM_XMM_SLOTS*YMMH_REG_SIZE)
# define YMMH_SAVED_SIZE (NUM_SIMD_SLOTS*YMMH_REG_SIZE)
#endif /* X86 */

/* Number of slots for spills from inlined clean calls. */
Expand Down
16 changes: 8 additions & 8 deletions core/arch/x86/clean_call_opt.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ callee_info_init(callee_info_t *ci)
* but then later in analyze_callee_regs_usage, we have to use the loop.
*/
/* assuming all xmm registers are used */
ci->num_xmms_used = NUM_XMM_REGS;
for (i = 0; i < NUM_XMM_REGS; i++)
ci->num_xmms_used = NUM_SIMD_REGS;
for (i = 0; i < NUM_SIMD_REGS; i++)
ci->xmm_used[i] = true;
for (i = 0; i < NUM_GP_REGS; i++)
ci->reg_used[i] = true;
Expand Down Expand Up @@ -453,7 +453,7 @@ analyze_callee_regs_usage(dcontext_t *dcontext, callee_info_t *ci)
uint i, num_regparm;

ci->num_xmms_used = 0;
memset(ci->xmm_used, 0, sizeof(bool) * NUM_XMM_REGS);
memset(ci->xmm_used, 0, sizeof(bool) * NUM_SIMD_REGS);
memset(ci->reg_used, 0, sizeof(bool) * NUM_GP_REGS);
ci->write_aflags = false;
for (instr = instrlist_first(ilist);
Expand All @@ -466,7 +466,7 @@ analyze_callee_regs_usage(dcontext_t *dcontext, callee_info_t *ci)
* impact unless there are a lot of different clean call callees.
*/
/* XMM registers usage */
for (i = 0; i < NUM_XMM_REGS; i++) {
for (i = 0; i < NUM_SIMD_REGS; i++) {
if (!ci->xmm_used[i] &&
instr_uses_reg(instr, (DR_REG_XMM0 + (reg_id_t)i))) {
LOG(THREAD, LOG_CLEANCALL, 2,
Expand Down Expand Up @@ -1060,7 +1060,7 @@ analyze_clean_call_regs(dcontext_t *dcontext, clean_call_info_t *cci)
callee_info_t *info = cci->callee_info;

/* 1. xmm registers */
for (i = 0; i < NUM_XMM_REGS; i++) {
for (i = 0; i < NUM_SIMD_REGS; i++) {
if (info->xmm_used[i]) {
cci->xmm_skip[i] = false;
} else {
Expand All @@ -1071,7 +1071,7 @@ analyze_clean_call_regs(dcontext_t *dcontext, clean_call_info_t *cci)
cci->num_xmms_skip++;
}
}
if (INTERNAL_OPTION(opt_cleancall) > 2 && cci->num_xmms_skip != NUM_XMM_REGS)
if (INTERNAL_OPTION(opt_cleancall) > 2 && cci->num_xmms_skip != NUM_SIMD_REGS)
cci->should_align = false;
/* 2. general purpose registers */
/* set regs not to be saved for clean call */
Expand Down Expand Up @@ -1213,7 +1213,7 @@ analyze_clean_call_inline(dcontext_t *dcontext, clean_call_info_t *cci)
}
}
}
if (cci->num_xmms_skip == NUM_XMM_REGS) {
if (cci->num_xmms_skip == NUM_SIMD_REGS) {
STATS_INC(cleancall_xmm_skipped);
}
if (cci->skip_save_aflags) {
Expand Down Expand Up @@ -1306,7 +1306,7 @@ insert_inline_reg_save(dcontext_t *dcontext, clean_call_info_t *cci,
insert_get_mcontext_base(dcontext, ilist, where, ci->spill_reg);

/* Save used registers. */
ASSERT(cci->num_xmms_skip == NUM_XMM_REGS);
ASSERT(cci->num_xmms_skip == NUM_SIMD_REGS);
for (i = 0; i < NUM_GP_REGS; i++) {
if (!cci->reg_skip[i]) {
reg_id_t reg_id = DR_REG_XAX + (reg_id_t)i;
Expand Down
4 changes: 2 additions & 2 deletions core/arch/x86/emit_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -1303,7 +1303,7 @@ append_restore_simd_reg(dcontext_t *dcontext, instrlist_t *ilist, bool absolute)
int i;
uint opcode = move_mm_reg_opcode(true/*align32*/, true/*align16*/);
ASSERT(proc_has_feature(FEATURE_SSE));
for (i=0; i<NUM_XMM_SAVED; i++) {
for (i=0; i<NUM_SIMD_SAVED; i++) {
APP(ilist, instr_create_1dst_1src
(dcontext, opcode, opnd_create_reg
(REG_SAVED_XMM0 + (reg_id_t)i),
Expand Down Expand Up @@ -1521,7 +1521,7 @@ append_save_simd_reg(dcontext_t *dcontext, instrlist_t *ilist, bool absolute)
int i;
uint opcode = move_mm_reg_opcode(true/*align32*/, true/*align16*/);
ASSERT(proc_has_feature(FEATURE_SSE));
for (i=0; i<NUM_XMM_SAVED; i++) {
for (i=0; i<NUM_SIMD_SAVED; i++) {
APP(ilist, instr_create_1dst_1src
(dcontext, opcode,
OPND_DC_FIELD(absolute, dcontext, OPSZ_SAVED_XMM,
Expand Down
6 changes: 3 additions & 3 deletions core/arch/x86/mangle.c
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ insert_push_all_registers(dcontext_t *dcontext, clean_call_info_t *cci,
int offs_beyond_xmm = 0;
if (cci == NULL)
cci = &default_clean_call_info;
if (cci->preserve_mcontext || cci->num_xmms_skip != NUM_XMM_REGS) {
if (cci->preserve_mcontext || cci->num_xmms_skip != NUM_SIMD_REGS) {
int offs = XMM_SLOTS_SIZE + PRE_XMM_PADDING;
if (cci->preserve_mcontext && cci->skip_save_aflags) {
offs_beyond_xmm = 2*XSP_SZ; /* pc and flags */
Expand All @@ -361,7 +361,7 @@ insert_push_all_registers(dcontext_t *dcontext, clean_call_info_t *cci,
*/
uint opcode = move_mm_reg_opcode(ALIGNED(alignment, 16), ALIGNED(alignment, 32));
ASSERT(proc_has_feature(FEATURE_SSE));
for (i=0; i<NUM_XMM_SAVED; i++) {
for (i=0; i<NUM_SIMD_SAVED; i++) {
if (!cci->xmm_skip[i]) {
PRE(ilist, instr, instr_create_1dst_1src
(dcontext, opcode,
Expand Down Expand Up @@ -504,7 +504,7 @@ insert_pop_all_registers(dcontext_t *dcontext, clean_call_info_t *cci,
* is better. */
uint opcode = move_mm_reg_opcode(ALIGNED(alignment, 32), ALIGNED(alignment, 16));
ASSERT(proc_has_feature(FEATURE_SSE));
for (i=0; i<NUM_XMM_SAVED; i++) {
for (i=0; i<NUM_SIMD_SAVED; i++) {
if (!cci->xmm_skip[i]) {
PRE(ilist, instr, instr_create_1dst_1src
(dcontext, opcode, opnd_create_reg(REG_SAVED_XMM0 + (reg_id_t)i),
Expand Down
8 changes: 4 additions & 4 deletions core/arch/x86/x86_asm_defines.asm
Original file line number Diff line number Diff line change
Expand Up @@ -47,18 +47,18 @@
*/
#ifdef X64
# ifdef WINDOWS
# define NUM_XMM_SLOTS 6 /* xmm0-5 */
# define NUM_SIMD_SLOTS 6 /* xmm0-5 */
# else
# define NUM_XMM_SLOTS 16 /* xmm0-15 */
# define NUM_SIMD_SLOTS 16 /* xmm0-15 */
# endif
# define PRE_XMM_PADDING 16
#else
# define NUM_XMM_SLOTS 8 /* xmm0-7 */
# define NUM_SIMD_SLOTS 8 /* xmm0-7 */
# define PRE_XMM_PADDING 24
#endif
#define XMM_SAVED_REG_SIZE 32 /* for ymm */
/* xmm0-5/7/15 for PR 264138/i#139/PR 302107 */
#define XMM_SAVED_SIZE ((NUM_XMM_SLOTS)*(XMM_SAVED_REG_SIZE))
#define XMM_SAVED_SIZE ((NUM_SIMD_SLOTS)*(XMM_SAVED_REG_SIZE))

#ifdef X64
/* push GPR registers in priv_mcontext_t order. does NOT make xsp have a
Expand Down
40 changes: 25 additions & 15 deletions core/lib/globals_shared.h
Original file line number Diff line number Diff line change
Expand Up @@ -1789,7 +1789,7 @@ typedef union _dr_ymm_t {
reg_t reg[IF_X64_ELSE(4,8)]; /**< Representation as 4 or 8 registers. */
} dr_ymm_t;

#ifdef AARCHXX
#if defined(AARCHXX)
/**
* 128-bit ARM SIMD Vn register.
* In AArch64, align to 16 bytes for better performance.
Expand Down Expand Up @@ -1818,28 +1818,38 @@ typedef union _dr_simd_t {
# define NUM_SIMD_SLOTS 16 /**< Number of 128-bit SIMD Vn slots in dr_mcontext_t */
# endif
# define PRE_SIMD_PADDING 0 /**< Bytes of padding before xmm/ymm dr_mcontext_t slots */
#endif /* ARM */

#ifdef AVOID_API_EXPORT
#elif defined(X86)

# ifdef AVOID_API_EXPORT
/* If this is increased, you'll probably need to increase the size of
* inject_into_thread's buf and INTERCEPTION_CODE_SIZE (for Windows).
* Also, update NUM_XMM_SLOTS in x86.asm and get_xmm_caller_saved.
* Also, update NUM_SIMD_SLOTS in x86.asm and get_xmm_caller_saved.
* i#437: YMM is an extension of XMM from 128-bit to 256-bit without
* adding new ones, so code operating on XMM often also operates on YMM,
* and thus some *XMM* macros also apply to *YMM*.
*/
#endif
#ifdef X64
# ifdef WINDOWS
# define NUM_XMM_SLOTS 6 /**< Number of [xy]mm reg slots in dr_mcontext_t */ /*xmm0-5*/
# endif
# ifdef X64
# ifdef WINDOWS
/*xmm0-5*/
# define NUM_SIMD_SLOTS 6 /**< Number of [xy]mm reg slots in dr_mcontext_t */
# else
/*xmm0-15*/
# define NUM_SIMD_SLOTS 16 /**< Number of [xy]mm reg slots in dr_mcontext_t */
# endif
# define PRE_XMM_PADDING 16 /**< Bytes of padding before xmm/ymm dr_mcontext_t slots */
# else
# define NUM_XMM_SLOTS 16 /**< Number of [xy]mm reg slots in dr_mcontext_t */ /*xmm0-15*/
/*xmm0-7*/
# define NUM_SIMD_SLOTS 8 /**< Number of [xy]mm reg slots in dr_mcontext_t */
# define PRE_XMM_PADDING 24 /**< Bytes of padding before xmm/ymm dr_mcontext_t slots */
# endif
# define PRE_XMM_PADDING 16 /**< Bytes of padding before xmm/ymm dr_mcontext_t slots */

# define NUM_XMM_SLOTS NUM_SIMD_SLOTS /* for backward compatibility */

#else
# define NUM_XMM_SLOTS 8 /**< Number of [xy]mm reg slots in dr_mcontext_t */ /*xmm0-7*/
# define PRE_XMM_PADDING 24 /**< Bytes of padding before xmm/ymm dr_mcontext_t slots */
#endif
# error NYI
#endif /* AARCHXX/X86 */

/** Values for the flags field of dr_mcontext_t */
typedef enum {
Expand Down Expand Up @@ -1910,10 +1920,10 @@ typedef struct _priv_mcontext_t {
* have noticable impacts, i.e. pushing bbs over the max size limit,
* and could have a noticeable performance hit.
*/
/* We now save everything but we keep separate NUM_XMM_SLOTS vs NUM_XMM_SAVED
/* We now save everything but we keep separate NUM_SIMD_SLOTS vs NUM_SIMD_SAVED
* in case we go back to not saving some slots in the future: e.g., w/o
* CLIENT_INTERFACE we could control our own libs enough to avoid some saves.
*/
#define NUM_XMM_SAVED NUM_XMM_SLOTS
#define NUM_SIMD_SAVED NUM_SIMD_SLOTS

#endif /* ifndef _GLOBALS_SHARED_H_ */
2 changes: 1 addition & 1 deletion core/lib/instrument.c
Original file line number Diff line number Diff line change
Expand Up @@ -5166,7 +5166,7 @@ dr_insert_clean_call_ex_varg(void *drcontext, instrlist_t *ilist, instr_t *where
cci.num_xmms_skip = 6;
#else
/* all 8 (or 16) are scratch */
cci.num_xmms_skip = NUM_XMM_REGS;
cci.num_xmms_skip = NUM_SIMD_REGS;
#endif
for (i=0; i<cci.num_xmms_skip; i++)
cci.xmm_skip[i] = true;
Expand Down
2 changes: 1 addition & 1 deletion core/lib/instrument_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -5347,7 +5347,7 @@ DR_API
* multimedia registers incurs a higher performance cost. An invalid
* flags value will return false.
*
* \note NUM_XMM_SLOTS in the dr_mcontext_t.xmm array are filled in,
* \note NUM_SIMD_SLOTS in the dr_mcontext_t.xmm array are filled in,
* but only if dr_mcontext_xmm_fields_valid() returns true and
* DR_MC_MULTIMEDIA is set in the flags field.
*
Expand Down
2 changes: 1 addition & 1 deletion core/lib/mcxtx.h
Original file line number Diff line number Diff line change
Expand Up @@ -244,5 +244,5 @@
* DrMi#665: we now preserve all of the xmm registers.
*/
# endif
dr_ymm_t ymm[NUM_XMM_SLOTS];
dr_ymm_t ymm[NUM_SIMD_SLOTS];
#endif /* ARM/X86 */
12 changes: 6 additions & 6 deletions core/unix/signal_linux_x86.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ save_xmm(dcontext_t *dcontext, sigframe_rt_t *frame)
dr_xgetbv(&bv_high, &bv_low);
xstate->xstate_hdr.xstate_bv = (((uint64)bv_high)<<32) | bv_low;
}
for (i=0; i<NUM_XMM_SAVED; i++) {
for (i=0; i<NUM_SIMD_SAVED; i++) {
/* we assume no padding */
#ifdef X64
/* __u32 xmm_space[64] */
Expand Down Expand Up @@ -360,7 +360,7 @@ dump_fpstate(dcontext_t *dcontext, struct _fpstate *fp)
ASSERT(TEST(XCR0_AVX, fp->sw_reserved.xstate_bv));
LOG(THREAD, LOG_ASYNCH, 1, "\txstate_bv = 0x"HEX64_FORMAT_STRING"\n",
xstate->xstate_hdr.xstate_bv);
for (i=0; i<NUM_XMM_SLOTS; i++) {
for (i=0; i<NUM_SIMD_SLOTS; i++) {
LOG(THREAD, LOG_ASYNCH, 1, "\tymmh%d = ", i);
for (j=0; j<4; j++)
LOG(THREAD, LOG_ASYNCH, 1, "%04x ", xstate->ymmh.ymmh_space[i*4+j]);
Expand Down Expand Up @@ -424,7 +424,7 @@ sigcontext_to_mcontext_simd(priv_mcontext_t *mc, sig_full_cxt_t *sc_full)
sigcontext_t *sc = sc_full->sc;
if (sc->fpstate != NULL) {
int i;
for (i=0; i<NUM_XMM_SLOTS; i++) {
for (i=0; i<NUM_SIMD_SLOTS; i++) {
memcpy(&mc->ymm[i], &sc->fpstate->IF_X64_ELSE(xmm_space[i*4],_xmm[i]),
XMM_REG_SIZE);
}
Expand All @@ -436,7 +436,7 @@ sigcontext_to_mcontext_simd(priv_mcontext_t *mc, sig_full_cxt_t *sc_full)
*/
ASSERT(sc->fpstate->sw_reserved.extended_size >= sizeof(*xstate));
ASSERT(TEST(XCR0_AVX, sc->fpstate->sw_reserved.xstate_bv));
for (i=0; i<NUM_XMM_SLOTS; i++) {
for (i=0; i<NUM_SIMD_SLOTS; i++) {
memcpy(&mc->ymm[i].u32[4], &xstate->ymmh.ymmh_space[i*4],
YMMH_REG_SIZE);
}
Expand All @@ -451,7 +451,7 @@ mcontext_to_sigcontext_simd(sig_full_cxt_t *sc_full, priv_mcontext_t *mc)
sigcontext_t *sc = sc_full->sc;
if (sc->fpstate != NULL) {
int i;
for (i=0; i<NUM_XMM_SLOTS; i++) {
for (i=0; i<NUM_SIMD_SLOTS; i++) {
memcpy(&sc->fpstate->IF_X64_ELSE(xmm_space[i*4],_xmm[i]), &mc->ymm[i],
XMM_REG_SIZE);
}
Expand All @@ -463,7 +463,7 @@ mcontext_to_sigcontext_simd(sig_full_cxt_t *sc_full, priv_mcontext_t *mc)
*/
ASSERT(sc->fpstate->sw_reserved.extended_size >= sizeof(*xstate));
ASSERT(TEST(XCR0_AVX, sc->fpstate->sw_reserved.xstate_bv));
for (i=0; i<NUM_XMM_SLOTS; i++) {
for (i=0; i<NUM_SIMD_SLOTS; i++) {
memcpy(&xstate->ymmh.ymmh_space[i*4], &mc->ymm[i].u32[4],
YMMH_REG_SIZE);
}
Expand Down
12 changes: 6 additions & 6 deletions core/unix/signal_macos.c
Original file line number Diff line number Diff line change
Expand Up @@ -154,11 +154,11 @@ sigcontext_to_mcontext_simd(priv_mcontext_t *mc, sig_full_cxt_t *sc_full)
*/
sigcontext_t *sc = sc_full->sc;
int i;
for (i=0; i<NUM_XMM_SLOTS; i++) {
for (i=0; i<NUM_SIMD_SLOTS; i++) {
memcpy(&mc->ymm[i], &sc->__fs.__fpu_xmm0 + i, XMM_REG_SIZE);
}
if (YMM_ENABLED()) {
for (i=0; i<NUM_XMM_SLOTS; i++) {
for (i=0; i<NUM_SIMD_SLOTS; i++) {
memcpy(&mc->ymm[i].u32[4], &sc->__fs.__fpu_ymmh0 + i, YMMH_REG_SIZE);
}
}
Expand All @@ -169,11 +169,11 @@ mcontext_to_sigcontext_simd(sig_full_cxt_t *sc_full, priv_mcontext_t *mc)
{
sigcontext_t *sc = sc_full->sc;
int i;
for (i=0; i<NUM_XMM_SLOTS; i++) {
for (i=0; i<NUM_SIMD_SLOTS; i++) {
memcpy(&sc->__fs.__fpu_xmm0 + i, &mc->ymm[i], XMM_REG_SIZE);
}
if (YMM_ENABLED()) {
for (i=0; i<NUM_XMM_SLOTS; i++) {
for (i=0; i<NUM_SIMD_SLOTS; i++) {
memcpy(&sc->__fs.__fpu_ymmh0 + i, &mc->ymm[i].u32[4], YMMH_REG_SIZE);
}
}
Expand All @@ -200,15 +200,15 @@ dump_fpstate(dcontext_t *dcontext, sigcontext_t *sc)
*((ushort *)(&sc->__fs.__fpu_stmm0 + i) + j));
LOG(THREAD, LOG_ASYNCH, 1, "\n");
}
for (i=0; i<NUM_XMM_SLOTS; i++) {
for (i=0; i<NUM_SIMD_SLOTS; i++) {
LOG(THREAD, LOG_ASYNCH, 1, "\txmm%d = ", i);
for (j=0; j<4; j++)
LOG(THREAD, LOG_ASYNCH, 1, "%08x ",
*((uint *)(&sc->__fs.__fpu_xmm0 + i) + j));
LOG(THREAD, LOG_ASYNCH, 1, "\n");
}
if (YMM_ENABLED()) {
for (i=0; i<NUM_XMM_SLOTS; i++) {
for (i=0; i<NUM_SIMD_SLOTS; i++) {
LOG(THREAD, LOG_ASYNCH, 1, "\tymmh%d = ", i);
for (j=0; j<4; j++) {
LOG(THREAD, LOG_ASYNCH, 1, "%08x ",
Expand Down
Loading

0 comments on commit 4c259cc

Please sign in to comment.