[Stack realignment] Handling of aligned allocas.
[oota-llvm.git] / test / CodeGen / SystemZ / fp-move-01.ll
1 ; Test moves between FPRs.
2 ;
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s
4 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
5
6 ; Test f32 moves.
7 define float @f1(float %a, float %b) {
8 ; CHECK-LABEL: f1:
9 ; CHECK: ler %f0, %f2
10 ; CHECK: br %r14
11   ret float %b
12 }
13
14 ; Test f64 moves.
15 define double @f2(double %a, double %b) {
16 ; CHECK-LABEL: f2:
17 ; CHECK: ldr %f0, %f2
18 ; CHECK: br %r14
19   ret double %b
20 }
21
22 ; Test f128 moves.  Since f128s are passed by reference, we need to force
23 ; a copy by other means.
24 define void @f3(fp128 *%x) {
25 ; CHECK-LABEL: f3:
26 ; CHECK: lxr
27 ; CHECK: axbr
28 ; CHECK: br %r14
29   %val = load volatile fp128 , fp128 *%x
30   %sum = fadd fp128 %val, %val
31   store volatile fp128 %sum, fp128 *%x
32   store volatile fp128 %val, fp128 *%x
33   ret void
34 }