blob: ebd0903358d81c36a7ca3e58b15d8cd0fcae000f [file] [log] [blame]
Hal Finkel46479192013-04-01 17:52:07 +00001; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=a2 | FileCheck %s
2target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
3target triple = "powerpc64-unknown-linux-gnu"
4
5define i64 @foo(float %a) nounwind {
6 %x = fptosi float %a to i64
7 ret i64 %x
8
9; CHECK: @foo
10; CHECK: fctidz [[REG:[0-9]+]], 1
11; CHECK: stfd [[REG]],
12; CHECK: ld 3,
13; CHECK: blr
14}
15
16define i64 @foo2(double %a) nounwind {
17 %x = fptosi double %a to i64
18 ret i64 %x
19
20; CHECK: @foo2
21; CHECK: fctidz [[REG:[0-9]+]], 1
22; CHECK: stfd [[REG]],
23; CHECK: ld 3,
24; CHECK: blr
25}
26
27define i64 @foo3(float %a) nounwind {
28 %x = fptoui float %a to i64
29 ret i64 %x
30
31; CHECK: @foo3
32; CHECK: fctiduz [[REG:[0-9]+]], 1
33; CHECK: stfd [[REG]],
34; CHECK: ld 3,
35; CHECK: blr
36}
37
38define i64 @foo4(double %a) nounwind {
39 %x = fptoui double %a to i64
40 ret i64 %x
41
42; CHECK: @foo4
43; CHECK: fctiduz [[REG:[0-9]+]], 1
44; CHECK: stfd [[REG]],
45; CHECK: ld 3,
46; CHECK: blr
47}
48
49define i32 @goo(float %a) nounwind {
50 %x = fptosi float %a to i32
51 ret i32 %x
52
53; CHECK: @goo
54; CHECK: fctiwz [[REG:[0-9]+]], 1
55; CHECK: stfiwx [[REG]],
56; CHECK: lwz 3,
57; CHECK: blr
58}
59
60define i32 @goo2(double %a) nounwind {
61 %x = fptosi double %a to i32
62 ret i32 %x
63
64; CHECK: @goo2
65; CHECK: fctiwz [[REG:[0-9]+]], 1
66; CHECK: stfiwx [[REG]],
67; CHECK: lwz 3,
68; CHECK: blr
69}
70
71define i32 @goo3(float %a) nounwind {
72 %x = fptoui float %a to i32
73 ret i32 %x
74
75; CHECK: @goo3
76; CHECK: fctiwuz [[REG:[0-9]+]], 1
77; CHECK: stfiwx [[REG]],
78; CHECK: lwz 3,
79; CHECK: blr
80}
81
82define i32 @goo4(double %a) nounwind {
83 %x = fptoui double %a to i32
84 ret i32 %x
85
86; CHECK: @goo4
87; CHECK: fctiwuz [[REG:[0-9]+]], 1
88; CHECK: stfiwx [[REG]],
89; CHECK: lwz 3,
90; CHECK: blr
91}
92