comparison test/CodeGen/SystemZ/int-cmp-23.ll @ 120:1172e4bd9c6f

update 4.0.0
author mir3636
date Fri, 25 Nov 2016 19:14:25 +0900
parents afa8332a0e37
children
comparison
equal deleted inserted replaced
101:34baf5011add 120:1172e4bd9c6f
4 4
5 ; Check a value near the low end of the unsigned 16-bit range. 5 ; Check a value near the low end of the unsigned 16-bit range.
6 define double @f1(double %a, double %b, i16 *%ptr) { 6 define double @f1(double %a, double %b, i16 *%ptr) {
7 ; CHECK-LABEL: f1: 7 ; CHECK-LABEL: f1:
8 ; CHECK: clhhsi 0(%r2), 1 8 ; CHECK: clhhsi 0(%r2), 1
9 ; CHECK-NEXT: jh 9 ; CHECK-NEXT: bhr %r14
10 ; CHECK: ldr %f0, %f2 10 ; CHECK: ldr %f0, %f2
11 ; CHECK: br %r14 11 ; CHECK: br %r14
12 %val = load i16 , i16 *%ptr 12 %val = load i16 , i16 *%ptr
13 %cond = icmp ugt i16 %val, 1 13 %cond = icmp ugt i16 %val, 1
14 %res = select i1 %cond, double %a, double %b 14 %res = select i1 %cond, double %a, double %b
17 17
18 ; Check a value near the high end of the unsigned 16-bit range. 18 ; Check a value near the high end of the unsigned 16-bit range.
19 define double @f2(double %a, double %b, i16 *%ptr) { 19 define double @f2(double %a, double %b, i16 *%ptr) {
20 ; CHECK-LABEL: f2: 20 ; CHECK-LABEL: f2:
21 ; CHECK: clhhsi 0(%r2), 65534 21 ; CHECK: clhhsi 0(%r2), 65534
22 ; CHECK-NEXT: jl 22 ; CHECK-NEXT: blr %r14
23 ; CHECK: ldr %f0, %f2 23 ; CHECK: ldr %f0, %f2
24 ; CHECK: br %r14 24 ; CHECK: br %r14
25 %val = load i16 , i16 *%ptr 25 %val = load i16 , i16 *%ptr
26 %cond = icmp ult i16 %val, 65534 26 %cond = icmp ult i16 %val, 65534
27 %res = select i1 %cond, double %a, double %b 27 %res = select i1 %cond, double %a, double %b
30 30
31 ; Check the high end of the CLHHSI range. 31 ; Check the high end of the CLHHSI range.
32 define double @f3(double %a, double %b, i16 %i1, i16 *%base) { 32 define double @f3(double %a, double %b, i16 %i1, i16 *%base) {
33 ; CHECK-LABEL: f3: 33 ; CHECK-LABEL: f3:
34 ; CHECK: clhhsi 4094(%r3), 1 34 ; CHECK: clhhsi 4094(%r3), 1
35 ; CHECK-NEXT: jh 35 ; CHECK-NEXT: bhr %r14
36 ; CHECK: ldr %f0, %f2 36 ; CHECK: ldr %f0, %f2
37 ; CHECK: br %r14 37 ; CHECK: br %r14
38 %ptr = getelementptr i16, i16 *%base, i64 2047 38 %ptr = getelementptr i16, i16 *%base, i64 2047
39 %val = load i16 , i16 *%ptr 39 %val = load i16 , i16 *%ptr
40 %cond = icmp ugt i16 %val, 1 40 %cond = icmp ugt i16 %val, 1
45 ; Check the next halfword up, which needs separate address logic, 45 ; Check the next halfword up, which needs separate address logic,
46 define double @f4(double %a, double %b, i16 *%base) { 46 define double @f4(double %a, double %b, i16 *%base) {
47 ; CHECK-LABEL: f4: 47 ; CHECK-LABEL: f4:
48 ; CHECK: aghi %r2, 4096 48 ; CHECK: aghi %r2, 4096
49 ; CHECK: clhhsi 0(%r2), 1 49 ; CHECK: clhhsi 0(%r2), 1
50 ; CHECK-NEXT: jh 50 ; CHECK-NEXT: bhr %r14
51 ; CHECK: ldr %f0, %f2 51 ; CHECK: ldr %f0, %f2
52 ; CHECK: br %r14 52 ; CHECK: br %r14
53 %ptr = getelementptr i16, i16 *%base, i64 2048 53 %ptr = getelementptr i16, i16 *%base, i64 2048
54 %val = load i16 , i16 *%ptr 54 %val = load i16 , i16 *%ptr
55 %cond = icmp ugt i16 %val, 1 55 %cond = icmp ugt i16 %val, 1
60 ; Check negative offsets, which also need separate address logic. 60 ; Check negative offsets, which also need separate address logic.
61 define double @f5(double %a, double %b, i16 *%base) { 61 define double @f5(double %a, double %b, i16 *%base) {
62 ; CHECK-LABEL: f5: 62 ; CHECK-LABEL: f5:
63 ; CHECK: aghi %r2, -2 63 ; CHECK: aghi %r2, -2
64 ; CHECK: clhhsi 0(%r2), 1 64 ; CHECK: clhhsi 0(%r2), 1
65 ; CHECK-NEXT: jh 65 ; CHECK-NEXT: bhr %r14
66 ; CHECK: ldr %f0, %f2 66 ; CHECK: ldr %f0, %f2
67 ; CHECK: br %r14 67 ; CHECK: br %r14
68 %ptr = getelementptr i16, i16 *%base, i64 -1 68 %ptr = getelementptr i16, i16 *%base, i64 -1
69 %val = load i16 , i16 *%ptr 69 %val = load i16 , i16 *%ptr
70 %cond = icmp ugt i16 %val, 1 70 %cond = icmp ugt i16 %val, 1
75 ; Check that CLHHSI does not allow indices. 75 ; Check that CLHHSI does not allow indices.
76 define double @f6(double %a, double %b, i64 %base, i64 %index) { 76 define double @f6(double %a, double %b, i64 %base, i64 %index) {
77 ; CHECK-LABEL: f6: 77 ; CHECK-LABEL: f6:
78 ; CHECK: agr {{%r2, %r3|%r3, %r2}} 78 ; CHECK: agr {{%r2, %r3|%r3, %r2}}
79 ; CHECK: clhhsi 0({{%r[23]}}), 1 79 ; CHECK: clhhsi 0({{%r[23]}}), 1
80 ; CHECK-NEXT: jh 80 ; CHECK-NEXT: bhr %r14
81 ; CHECK: ldr %f0, %f2 81 ; CHECK: ldr %f0, %f2
82 ; CHECK: br %r14 82 ; CHECK: br %r14
83 %add = add i64 %base, %index 83 %add = add i64 %base, %index
84 %ptr = inttoptr i64 %add to i16 * 84 %ptr = inttoptr i64 %add to i16 *
85 %val = load i16 , i16 *%ptr 85 %val = load i16 , i16 *%ptr