annotate test/CodeGen/SystemZ/tdc-01.ll @ 128:c347d3398279 default tip

fix
author mir3636
date Wed, 06 Dec 2017 14:37:17 +0900
parents 1172e4bd9c6f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 ; Test the Test Data Class instruction, selected manually via the intrinsic.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2 ;
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 declare i32 @llvm.s390.tdc.f32(float, i64)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 declare i32 @llvm.s390.tdc.f64(double, i64)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 declare i32 @llvm.s390.tdc.f128(fp128, i64)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9 ; Check using as i32 - f32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 define i32 @f1(float %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 ; CHECK-LABEL: f1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12 ; CHECK: tceb %f0, 123
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13 ; CHECK: ipm %r2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14 ; CHECK: srl %r2, 28
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15 %res = call i32 @llvm.s390.tdc.f32(float %x, i64 123)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 ret i32 %res
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 ; Check using as i32 - f64
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 define i32 @f2(double %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 ; CHECK-LABEL: f2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 ; CHECK: tcdb %f0, 123
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 ; CHECK: ipm %r2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 ; CHECK: srl %r2, 28
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 %res = call i32 @llvm.s390.tdc.f64(double %x, i64 123)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 ret i32 %res
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 ; Check using as i32 - f128
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 define i32 @f3(fp128 %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31 ; CHECK-LABEL: f3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 ; CHECK: ld %f0, 0(%r2)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 ; CHECK: ld %f2, 8(%r2)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 ; CHECK: tcxb %f0, 123
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35 ; CHECK: ipm %r2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36 ; CHECK: srl %r2, 28
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 %res = call i32 @llvm.s390.tdc.f128(fp128 %x, i64 123)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38 ret i32 %res
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41 declare void @g()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43 ; Check branch
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44 define void @f4(float %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
45 ; CHECK-LABEL: f4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
46 ; CHECK: tceb %f0, 123
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
47 ; CHECK: jgl g
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
48 ; CHECK: br %r14
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
49 %res = call i32 @llvm.s390.tdc.f32(float %x, i64 123)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
50 %cond = icmp ne i32 %res, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
51 br i1 %cond, label %call, label %exit
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
52
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
53 call:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
54 tail call void @g()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
55 br label %exit
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
56
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
57 exit:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
58 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
59 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
60
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
61 ; Check branch negated
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
62 define void @f5(float %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
63 ; CHECK-LABEL: f5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
64 ; CHECK: tceb %f0, 123
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
65 ; CHECK: jge g
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
66 ; CHECK: br %r14
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
67 %res = call i32 @llvm.s390.tdc.f32(float %x, i64 123)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
68 %cond = icmp eq i32 %res, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
69 br i1 %cond, label %call, label %exit
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
70
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
71 call:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
72 tail call void @g()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
73 br label %exit
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
74
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
75 exit:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
76 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
77 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
78
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
79 ; Check non-const mask
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
80 define void @f6(float %x, i64 %y) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
81 ; CHECK-LABEL: f6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
82 ; CHECK: tceb %f0, 0(%r2)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
83 ; CHECK: jge g
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
84 ; CHECK: br %r14
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
85 %res = call i32 @llvm.s390.tdc.f32(float %x, i64 %y)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
86 %cond = icmp eq i32 %res, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
87 br i1 %cond, label %call, label %exit
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
88
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
89 call:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
90 tail call void @g()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
91 br label %exit
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
92
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
93 exit:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
94 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
95 }