[llvm-commits] [llvm] r77407 - in /llvm/trunk: include/llvm/IntrinsicsX86.td lib/Target/X86/X86ISelLowering.cpp lib/Target/X86/X86ISelLowering.h lib/Target/X86/X86InstrSSE.td test/CodeGen/X86/sse41.ll
Evan Cheng
evan.cheng at apple.com
Tue Jul 28 19:09:54 PDT 2009
Ok, I'll stop bugging you and let you figure all it out. :-)
Evan
On Jul 28, 2009, at 7:04 PM, Eric Christopher wrote:
>
> On Jul 28, 2009, at 6:57 PM, Evan Cheng wrote:
>
>> Is there a way to make use of ptest for non-intrinsic form of
>> comparison of two SSE values?
>
> Qualified yes. I'm trying to figure out how to make this work for
> things like an & of two SSE values or the other two, just not sure how
> to do it yet.
>
> Another quick optimization that Dan suggested was trying to optimize
> code that looks like this:
>
> #include <smmintrin.h>
>
> int foo (__m128i a, __m128i b)
> {
> if (_mm_testz_si128(a, b) != 0) return 4;
>
> return 8;
> }
>
> where we should be able to get rid of the extra (bonus!) setcc that
> we've got in the generated code (cruft removed):
>
> _foo:
> ptest %xmm1, %xmm0
> sete %al
> movzbl %al, %eax
> testl %eax, %eax
> sete %al
> movzbl %al, %eax
> leal 4(,%eax,4), %eax
> ret
>
> Honestly it's the movzbl instructions that irritate me the most, but
> there's no setcc that will set an entire register :(
>
> -eric
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list