|
2 | 2 | // RUN: FileCheck --input-file=%t.cir %s |
3 | 3 |
|
4 | 4 | typedef unsigned long size_type; |
| 5 | + |
5 | 6 | size_type size(unsigned long *_start, unsigned long *_finish) { |
| 7 | + // CIR-LABEL: cir.func dso_local @_Z4sizePmS_ |
| 8 | + // CIR: %[[D:.*]] = cir.ptr_diff {{.*}} : !cir.ptr<!u64i> -> !s64i |
| 9 | + // CIR: %[[U:.*]] = cir.cast integral %[[D]] : !s64i -> !u64i |
| 10 | + // CIR: cir.return %[[U]] : !u64i |
| 11 | + |
| 12 | + // LLVM-LABEL: @_Z4sizePmS_ |
| 13 | + // LLVM: ptrtoint ptr {{.*}} to i64 |
| 14 | + // LLVM: ptrtoint ptr {{.*}} to i64 |
| 15 | + // LLVM: %[[SUB:.*]] = sub i64 {{.*}}, {{.*}} |
| 16 | + // LLVM: %[[DIV:.*]] = sdiv exact i64 %[[SUB]], 8 |
| 17 | + // LLVM: ret i64 %[[DIV]] |
6 | 18 | return static_cast<size_type>(_finish - _start); |
7 | 19 | } |
8 | 20 |
|
9 | | -// CHECK: cir.func dso_local @_Z4sizePmS_(%arg0: !cir.ptr<!u64i> |
10 | | -// CHECK: %3 = cir.load{{.*}} %1 : !cir.ptr<!cir.ptr<!u64i>>, !cir.ptr<!u64i> |
11 | | -// CHECK: %4 = cir.load{{.*}} %0 : !cir.ptr<!cir.ptr<!u64i>>, !cir.ptr<!u64i> |
12 | | -// CHECK: %5 = cir.ptr_diff %3, %4 : !cir.ptr<!u64i> -> !s64i |
13 | | -// CHECK: %6 = cir.cast integral %5 : !s64i -> !u64i |
14 | | - |
15 | 21 | long add(char *a, char *b) { |
| 22 | + // CIR-LABEL: cir.func dso_local @_Z3addPcS_ |
| 23 | + // CIR: %[[D:.*]] = cir.ptr_diff {{.*}} : !cir.ptr<!s8i> -> !s64i |
| 24 | + // CIR: %[[C1:.*]] = cir.const #cir.int<1> : !s32i |
| 25 | + // CIR: %[[C1W:.*]] = cir.cast integral %[[C1]] : !s32i -> !s64i |
| 26 | + // CIR: %[[S:.*]] = cir.binop(add, %[[D]], %[[C1W]]) : !s64i |
| 27 | + // CIR: cir.return %[[S]] : !s64i |
| 28 | + |
| 29 | + // LLVM-LABEL: @_Z3addPcS_ |
| 30 | + // LLVM: ptrtoint ptr {{.*}} to i64 |
| 31 | + // LLVM: ptrtoint ptr {{.*}} to i64 |
| 32 | + // LLVM: %[[SUB:.*]] = sub i64 {{.*}}, {{.*}} |
| 33 | + // LLVM: %[[ADD1:.*]] = add i64 %[[SUB]], 1 |
| 34 | + // LLVM: ret i64 %[[ADD1]] |
16 | 35 | return a - b + 1; |
17 | 36 | } |
18 | | - |
19 | | -// CHECK: cir.func dso_local @_Z3addPcS_(%arg0: !cir.ptr<!s8i> |
20 | | -// %5 = cir.ptr_diff %3, %4 : !cir.ptr<!s8i> -> !s64i |
21 | | -// %6 = cir.const #cir.int<1> : !s32i |
22 | | -// %7 = cir.cast integral %6 : !s32i -> !s64i |
23 | | -// %8 = cir.binop(add, %5, %7) : !s64i |
|
0 commit comments