d469c62f2f0532e5691c254d7c848000532f9a95
[oota-llvm.git] / test / CodeGen / PowerPC / unaligned.ll
1 ; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s
2 target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f128:64:128-n32"
3
4 define void @foo1(i16* %p, i16* %r) nounwind {
5 entry:
6   %v = load i16* %p, align 1
7   store i16 %v, i16* %r, align 1
8   ret void
9
10 ; CHECK: @foo1
11 ; CHECK: lhz
12 ; CHECK: sth
13 }
14
15 define void @foo2(i32* %p, i32* %r) nounwind {
16 entry:
17   %v = load i32* %p, align 1
18   store i32 %v, i32* %r, align 1
19   ret void
20
21 ; CHECK: @foo2
22 ; CHECK: lwz
23 ; CHECK: stw
24 }
25
26 define void @foo3(i64* %p, i64* %r) nounwind {
27 entry:
28   %v = load i64* %p, align 1
29   store i64 %v, i64* %r, align 1
30   ret void
31
32 ; CHECK: @foo3
33 ; CHECK: ld
34 ; CHECK: std
35 }
36
37 define void @foo4(float* %p, float* %r) nounwind {
38 entry:
39   %v = load float* %p, align 1
40   store float %v, float* %r, align 1
41   ret void
42
43 ; CHECK: @foo4
44 ; CHECK: lfs
45 ; CHECK: stfs
46 }
47
48 define void @foo5(double* %p, double* %r) nounwind {
49 entry:
50   %v = load double* %p, align 1
51   store double %v, double* %r, align 1
52   ret void
53
54 ; CHECK: @foo5
55 ; CHECK: lfd
56 ; CHECK: stfd
57 }
58
59 define void @foo6(<4 x float>* %p, <4 x float>* %r) nounwind {
60 entry:
61   %v = load <4 x float>* %p, align 1
62   store <4 x float> %v, <4 x float>* %r, align 1
63   ret void
64
65 ; These loads and stores are legalized into aligned loads and stores
66 ; using aligned stack slots.
67 ; CHECK: @foo6
68 ; CHECK-DAG: ld
69 ; CHECK-DAG: ld
70 ; CHECK-DAG: stdx
71 ; CHECK: stdx
72 }
73