annotate test/CodeGen/SystemZ/tdc-02.ll @ 120:1172e4bd9c6f

update 4.0.0
author mir3636
date Fri, 25 Nov 2016 19:14:25 +0900
parents
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 logic operation folding.
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 or i1
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, 7
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13 ; CHECK-NEXT: ipm [[REG1:%r[0-9]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14 ; CHECK-NEXT: risbg %r2, [[REG1]], 63, 191, 36
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15 %a = call i32 @llvm.s390.tdc.f32(float %x, i64 3)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 %b = call i32 @llvm.s390.tdc.f32(float %x, i64 6)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 %a1 = icmp ne i32 %a, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18 %b1 = icmp ne i32 %b, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 %res = or i1 %a1, %b1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 %xres = zext i1 %res to i32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 ret i32 %xres
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 ; Check using and i1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 define i32 @f2(double %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 ; CHECK-LABEL: f2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27 ; CHECK: tcdb %f0, 2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 ; CHECK-NEXT: ipm [[REG1:%r[0-9]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 ; CHECK-NEXT: risbg %r2, [[REG1]], 63, 191, 36
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 %a = call i32 @llvm.s390.tdc.f64(double %x, i64 3)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31 %b = call i32 @llvm.s390.tdc.f64(double %x, i64 6)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 %a1 = icmp ne i32 %a, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 %b1 = icmp ne i32 %b, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 %res = and i1 %a1, %b1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35 %xres = zext i1 %res to i32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36 ret i32 %xres
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39 ; Check using xor i1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40 define i32 @f3(fp128 %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41 ; CHECK-LABEL: f3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42 ; CHECK: tcxb %f0, 5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43 ; CHECK-NEXT: ipm [[REG1:%r[0-9]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44 ; CHECK-NEXT: risbg %r2, [[REG1]], 63, 191, 36
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
45 %a = call i32 @llvm.s390.tdc.f128(fp128 %x, i64 3)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
46 %b = call i32 @llvm.s390.tdc.f128(fp128 %x, i64 6)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
47 %a1 = icmp ne i32 %a, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
48 %b1 = icmp ne i32 %b, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
49 %res = xor i1 %a1, %b1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
50 %xres = zext i1 %res to i32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
51 ret i32 %xres
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
52 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
53
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
54 ; Check using xor i1 - negated test
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
55 define i32 @f4(fp128 %x) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
56 ; CHECK-LABEL: f4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
57 ; CHECK: tcxb %f0, 4090
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
58 ; CHECK-NEXT: ipm [[REG1:%r[0-9]+]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
59 ; CHECK-NEXT: risbg %r2, [[REG1]], 63, 191, 36
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
60 %a = call i32 @llvm.s390.tdc.f128(fp128 %x, i64 3)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
61 %b = call i32 @llvm.s390.tdc.f128(fp128 %x, i64 6)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
62 %a1 = icmp ne i32 %a, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
63 %b1 = icmp eq i32 %b, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
64 %res = xor i1 %a1, %b1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
65 %xres = zext i1 %res to i32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
66 ret i32 %xres
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
67 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
68
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
69 ; Check different first args
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
70 define i32 @f5(float %x, float %y) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
71 ; CHECK-LABEL: f5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
72 ; CHECK-NOT: tceb {{%f[0-9]+}}, 5
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
73 ; CHECK-DAG: tceb %f0, 3
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
74 ; CHECK-DAG: tceb %f2, 6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
75 %a = call i32 @llvm.s390.tdc.f32(float %x, i64 3)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
76 %b = call i32 @llvm.s390.tdc.f32(float %y, i64 6)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
77 %a1 = icmp ne i32 %a, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
78 %b1 = icmp ne i32 %b, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
79 %res = xor i1 %a1, %b1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
80 %xres = zext i1 %res to i32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
81 ret i32 %xres
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
82 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
83
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
84 ; Non-const mask (not supported)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
85 define i32 @f6(float %x, i64 %y) {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
86 ; CHECK-LABEL: f6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
87 ; CHECK-DAG: tceb %f0, 0(%r2)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
88 ; CHECK-DAG: tceb %f0, 6
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
89 %a = call i32 @llvm.s390.tdc.f32(float %x, i64 %y)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
90 %b = call i32 @llvm.s390.tdc.f32(float %x, i64 6)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
91 %a1 = icmp ne i32 %a, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
92 %b1 = icmp ne i32 %b, 0
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
93 %res = xor i1 %a1, %b1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
94 %xres = zext i1 %res to i32
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
95 ret i32 %xres
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
96 }