Hi,
I'm working on str* operation under x86 platform, and have improved speedup
of strcmp function with SSE instruction to 2xx% by libmicro benchmark,however
when I run specCPU2006, it generate exception.
After multiple verifications, I think at least there is conflict under snv_67
platform.
If I append only pcmpeqb %xmm2,%xmm0 in original AMD source code
-usr/src/lib/libc/amd64/strcmp.s,
after BFU and run specCPU2006 benchmark ,¡°comiss +0x854210(%rip),%xmm0¡±
instruction in module_ra_sw.swpara_ function generates exception .
If removing pcmpeqb %xmm2,%xmm0, after BFU module_ra_sw.swpara_ work normally.
From above result, I suppose because they should use the same register -xmm0
without saving context and failed, or I need append addtional option, correct?
Thanks
Ma Ling
// original AMD code
#ifdef USE_AS_STRNCMP
ENTRY(strncmp)
#else
ENTRY(strcmp) /* (const char *, const ch
#endif
pcmpeqb %xmm2,%xmm0 // my test code ,which caused problem
xor %ecx, %ecx
#ifdef USE_AS_STRNCMP
test %rdx, %rdx /* (const char *, const ch
mov %r14, -8 (%rsp)
mov %rdx, %r14
mov %edx, %eax
jz LABEL(exitz) /* early exit */
#endif
LABEL(aligntry):
mov %rsi, %r8 /* align by "source" */
---------------------------------
Never miss a thing. Make Yahoo your homepage.
_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org