142 lines · plain
1// RUN: mlir-opt %s -split-input-file --verify-roundtrip | FileCheck %s2 3llvm.func internal @callee() -> !llvm.ptr attributes {dso_local} {4 %0 = llvm.mlir.zero : !llvm.ptr5 llvm.return %0 : !llvm.ptr6}7 8llvm.mlir.alias external @foo_alias : !llvm.ptr {9 %0 = llvm.mlir.addressof @callee : !llvm.ptr10 llvm.return %0 : !llvm.ptr11}12 13llvm.mlir.alias external @_ZTV1D : !llvm.struct<(array<3 x ptr>)> {14 %0 = llvm.mlir.addressof @callee : !llvm.ptr15 llvm.return %0 : !llvm.ptr16}17 18// CHECK: llvm.mlir.alias external @foo_alias : !llvm.ptr {19// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @callee : !llvm.ptr20// CHECK: llvm.return %[[ADDR]] : !llvm.ptr21// CHECK: }22// CHECK: llvm.mlir.alias external @_ZTV1D : !llvm.struct<(array<3 x ptr>)> {23// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @callee : !llvm.ptr24// CHECK: llvm.return %[[ADDR]] : !llvm.ptr25// CHECK: }26 27// -----28 29llvm.mlir.global weak_odr @zed(42 : i32) : i3230 31llvm.mlir.alias weak_odr @foo : i32 {32 %0 = llvm.mlir.addressof @zed : !llvm.ptr33 llvm.return %0 : !llvm.ptr34}35 36llvm.mlir.alias weak_odr @foo2 : i16 {37 %0 = llvm.mlir.addressof @zed : !llvm.ptr38 llvm.return %0 : !llvm.ptr39}40 41// CHECK: llvm.mlir.alias weak_odr @foo : i32 {42// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @zed : !llvm.ptr43// CHECK: llvm.return %[[ADDR]] : !llvm.ptr44// CHECK: }45// CHECK: llvm.mlir.alias weak_odr @foo2 : i16 {46// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @zed : !llvm.ptr47// CHECK: llvm.return %[[ADDR]] : !llvm.ptr48// CHECK: }49 50// -----51 52llvm.mlir.global private constant @glob.private(dense<0> : tensor<32xi32>) : !llvm.array<32 x i32>53 54llvm.mlir.alias linkonce_odr hidden @glob {dso_local} : !llvm.array<32 x i32> {55 %0 = llvm.mlir.constant(1234 : i64) : i6456 %1 = llvm.mlir.addressof @glob.private : !llvm.ptr57 %2 = llvm.ptrtoint %1 : !llvm.ptr to i6458 %3 = llvm.add %2, %0 : i6459 %4 = llvm.inttoptr %3 : i64 to !llvm.ptr60 llvm.return %4 : !llvm.ptr61}62 63// CHECK: llvm.mlir.global private constant @glob.private(dense<0> : tensor<32xi32>)64// CHECK: llvm.mlir.alias linkonce_odr hidden @glob {dso_local} : !llvm.array<32 x i32> {65// CHECK: %[[CST:.*]] = llvm.mlir.constant(1234 : i64) : i6466// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @glob.private : !llvm.ptr67// CHECK: %[[INTADDR:.*]] = llvm.ptrtoint %[[ADDR]] : !llvm.ptr to i6468// CHECK: %[[BACKTOPTR:.*]] = llvm.add %[[INTADDR]], %[[CST]] : i6469// CHECK: %[[RET_ADDR:.*]] = llvm.inttoptr %[[BACKTOPTR]] : i64 to !llvm.ptr70// CHECK: llvm.return %[[RET_ADDR]] : !llvm.ptr71// CHECK: }72 73// -----74 75llvm.mlir.global external @v1(0 : i32) : i3276llvm.mlir.alias external @a3 : i32 {77 %0 = llvm.mlir.addressof @v1 : !llvm.ptr78 %1 = llvm.addrspacecast %0 : !llvm.ptr to !llvm.ptr<2>79 llvm.return %1 : !llvm.ptr<2>80}81 82// CHECK: llvm.mlir.alias external @a3 : i32 {83// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @v1 : !llvm.ptr84// CHECK: %1 = llvm.addrspacecast %[[ADDR]] : !llvm.ptr to !llvm.ptr<2>85// CHECK: llvm.return %1 : !llvm.ptr<2>86// CHECK: }87 88// -----89 90llvm.mlir.global private @g1(0 : i32) {dso_local} : i3291 92llvm.mlir.alias private @a1 {dso_local} : i32 {93 %0 = llvm.mlir.addressof @g1 : !llvm.ptr94 llvm.return %0 : !llvm.ptr95}96 97llvm.mlir.global internal constant @g2() : !llvm.ptr {98 %0 = llvm.mlir.addressof @a1 : !llvm.ptr99 llvm.return %0 : !llvm.ptr100}101 102llvm.mlir.alias private @a2 {dso_local} : !llvm.ptr {103 %0 = llvm.mlir.addressof @a1 : !llvm.ptr104 llvm.return %0 : !llvm.ptr105}106 107llvm.mlir.global internal constant @g3() : !llvm.ptr {108 %0 = llvm.mlir.addressof @a2 : !llvm.ptr109 llvm.return %0 : !llvm.ptr110}111 112// CHECK: llvm.mlir.alias private @a1 {dso_local} : i32 {113// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @g1 : !llvm.ptr114// CHECK: llvm.return %[[ADDR]] : !llvm.ptr115// CHECK: }116// CHECK: llvm.mlir.global internal constant @g2()117// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @a1 : !llvm.ptr118// CHECK: llvm.return %[[ADDR]] : !llvm.ptr119// CHECK: }120// CHECK: llvm.mlir.alias private @a2 {dso_local} : !llvm.ptr {121// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @a1 : !llvm.ptr122// CHECK: llvm.return %[[ADDR]] : !llvm.ptr123// CHECK: }124// CHECK: llvm.mlir.global internal constant @g3()125// CHECK: %[[ADDR:.*]] = llvm.mlir.addressof @a2 : !llvm.ptr126// CHECK: llvm.return %[[ADDR]] : !llvm.ptr127// CHECK: }128 129// -----130 131llvm.mlir.global private @g30(0 : i32) {dso_local} : i32132 133llvm.mlir.alias private thread_local unnamed_addr @a30 {dso_local} : i32 {134 %0 = llvm.mlir.addressof @g30 : !llvm.ptr135 llvm.return %0 : !llvm.ptr136}137 138// CHECK: llvm.mlir.alias private thread_local unnamed_addr @a30 {dso_local} : i32 {139// CHECK: %0 = llvm.mlir.addressof @g30 : !llvm.ptr140// CHECK: llvm.return %0 : !llvm.ptr141// CHECK: }142