Mercurial > hg > Members > tobaru > cbc > CbC_llvm
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 |