mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
another missed SSE optimization
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39772 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1cb960a4bb
commit
ca23e17adf
@ -598,3 +598,32 @@ entry:
|
||||
}
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
These functions should produce the same code:
|
||||
|
||||
#include <emmintrin.h>
|
||||
|
||||
typedef long long __m128i __attribute__ ((__vector_size__ (16)));
|
||||
|
||||
int foo(__m128i* val) {
|
||||
return __builtin_ia32_vec_ext_v4si(*val, 1);
|
||||
}
|
||||
int bar(__m128i* val) {
|
||||
union vs {
|
||||
__m128i *_v;
|
||||
int* _s;
|
||||
} v = {val};
|
||||
return v._s[1];
|
||||
}
|
||||
|
||||
We currently produce (with -m64):
|
||||
|
||||
_foo:
|
||||
pshufd $1, (%rdi), %xmm0
|
||||
movd %xmm0, %eax
|
||||
ret
|
||||
_bar:
|
||||
movl 4(%rdi), %eax
|
||||
ret
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
Loading…
Reference in New Issue
Block a user