mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-26 14:15:53 +00:00
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38507 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b91025b619
commit
36c5155d0f
@ -572,3 +572,29 @@ swizzle:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
//===---------------------------------------------------------------------===//
|
//===---------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
This code:
|
||||||
|
|
||||||
|
#include <emmintrin.h>
|
||||||
|
__m128i test(long long i) { return _mm_cvtsi64x_si128(i); }
|
||||||
|
|
||||||
|
Should turn into a single 'movq %rdi, %xmm0' instruction. Instead, we
|
||||||
|
get this (on x86-64):
|
||||||
|
|
||||||
|
_test:
|
||||||
|
movd %rdi, %xmm1
|
||||||
|
xorps %xmm0, %xmm0
|
||||||
|
movsd %xmm1, %xmm0
|
||||||
|
ret
|
||||||
|
|
||||||
|
The LLVM IR is:
|
||||||
|
|
||||||
|
target triple = "x86_64-apple-darwin8"
|
||||||
|
define <2 x i64> @test(i64 %i) {
|
||||||
|
entry:
|
||||||
|
%tmp10 = insertelement <2 x i64> undef, i64 %i, i32 0
|
||||||
|
%tmp11 = insertelement <2 x i64> %tmp10, i64 0, i32 1
|
||||||
|
ret <2 x i64> %tmp11
|
||||||
|
}
|
||||||
|
|
||||||
|
//===---------------------------------------------------------------------===//
|
||||||
|
Loading…
Reference in New Issue
Block a user