mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
562bb43207
1. Makes it possible to lower with floating point loads and stores. 2. Avoid unaligned loads / stores unless it's fast. 3. Fix some memcpy lowering logic bug related to when to optimize a load from constant string into a constant. 4. Adjust x86 memcpy lowering threshold to make it more sane. 5. Fix x86 target hook so it uses vector and floating point memory ops more effectively. rdar://7774704 llvm-svn: 100090
23 lines
718 B
LLVM
23 lines
718 B
LLVM
; RUN: llc < %s -march=x86 -mcpu=yonah | FileCheck %s
|
|
|
|
%struct.S = type { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>,
|
|
<2 x i64>, <2 x i64>, <2 x i64>, <2 x i64>,
|
|
<2 x i64> }
|
|
|
|
define i32 @main() nounwind {
|
|
entry:
|
|
; CHECK: main:
|
|
; CHECK: movl $1, (%esp)
|
|
; CHECK: leal 16(%esp), %edi
|
|
; CHECK: movl $36, %ecx
|
|
; CHECK: leal 160(%esp), %esi
|
|
; CHECK: rep;movsl
|
|
%s = alloca %struct.S ; <%struct.S*> [#uses=2]
|
|
%tmp15 = getelementptr %struct.S* %s, i32 0, i32 0 ; <<2 x i64>*> [#uses=1]
|
|
store <2 x i64> < i64 8589934595, i64 1 >, <2 x i64>* %tmp15, align 16
|
|
call void @t( i32 1, %struct.S* byval %s ) nounwind
|
|
ret i32 0
|
|
}
|
|
|
|
declare void @t(i32, %struct.S* byval )
|