forked from llvm/clangir
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathglobal.cir
55 lines (51 loc) · 2.3 KB
/
global.cir
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// RUN: cir-opt %s -cir-to-mlir | FileCheck %s -check-prefix=MLIR
// RUN: cir-opt %s -cir-to-mlir -cir-mlir-to-llvm | mlir-translate -mlir-to-llvmir | FileCheck %s -check-prefix=LLVM
!u32i = !cir.int<u, 32>
module {
cir.global external @i = #cir.int<2> : !u32i
cir.global external @f = #cir.fp<3.000000e+00> : !cir.float
cir.global external @b = #cir.bool<true> : !cir.bool
cir.global "private" external @a : !cir.array<!u32i x 100>
cir.global external @aa = #cir.zero : !cir.array<!cir.array<!u32i x 256> x 256>
cir.func @get_global_int_value() -> !u32i {
%0 = cir.get_global @i : cir.ptr <!u32i>
%1 = cir.load %0 : cir.ptr <!u32i>, !u32i
cir.return %1 : !u32i
}
cir.func @get_global_float_value() -> !cir.float {
%0 = cir.get_global @f : cir.ptr <!cir.float>
%1 = cir.load %0 : cir.ptr <!cir.float>, !cir.float
cir.return %1 : !cir.float
}
cir.func @get_global_bool_value() -> !cir.bool {
%0 = cir.get_global @b : cir.ptr <!cir.bool>
%1 = cir.load %0 : cir.ptr <!cir.bool>, !cir.bool
cir.return %1 : !cir.bool
}
cir.func @get_global_array_pointer() -> !cir.ptr<!cir.array<!u32i x 100>> {
%0 = cir.get_global @a : cir.ptr <!cir.array<!u32i x 100>>
cir.return %0 : !cir.ptr<!cir.array<!u32i x 100>>
}
cir.func @get_global_multi_array_pointer() -> !cir.ptr<!cir.array<!cir.array<!u32i x 256> x 256>> {
%0 = cir.get_global @aa : cir.ptr <!cir.array<!cir.array<!u32i x 256> x 256>>
cir.return %0 : !cir.ptr<!cir.array<!cir.array<!u32i x 256> x 256>>
}
}
// MLIR: memref.global "public" @i : memref<i32> = dense<2>
// MLIR: memref.global "public" @f : memref<f32> = dense<3.000000e+00>
// MLIR: memref.global "public" @b : memref<i8> = dense<1>
// MLIR: memref.global "private" @a : memref<100xi32>
// MLIR: memref.global "public" @aa : memref<256x256xi32> = dense<0>
// MLIR: memref.get_global @i : memref<i32>
// MLIR: memref.get_global @f : memref<f32>
// MLIR: memref.get_global @b : memref<i8>
// MLIR: memref.get_global @a : memref<100xi32>
// MLIR: memref.get_global @aa : memref<256x256xi32>
// LLVM: @i = global i32 2
// LLVM: @f = global float 3.000000e+00
// LLVM: @b = global i8 1
// LLVM: @a = private global [100 x i32] undef
// LLVM: @aa = global [256 x [256 x i32]] zeroinitializer
// LLVM: load i32, ptr @i
// LLVM: load float, ptr @f
// LLVM: load i8, ptr @b