1 ; RUN: llc < %s -asm-verbose=false | FileCheck %s
3 ; Test that globals assemble as expected.
5 target datalayout = "e-p:32:32-i64:64-n32:64-S128"
6 target triple = "wasm32-unknown-unknown"
9 ; CHECK-NOT: llvm.metadata
10 @llvm.used = appending global [1 x i32*] [i32* @g], section "llvm.metadata"
13 ; CHECK: i32.const $push0=, answer{{$}}
14 ; CHECK-NEXT: i32.load $0=, $pop0{{$}}
15 ; CHECK-NEXT: return $0{{$}}
17 %a = load i32, i32* @answer
21 ; CHECK: .type g,@object
22 ; CHECK: .align 2{{$}}
24 ; CHECK-NEXT: .int32 1337{{$}}
25 ; CHECK-NEXT: .size g, 4{{$}}
26 @g = private global i32 1337
29 ; CHECK-NEXT: .zero 4{{$}}
30 ; CHECK-NEXT: .size ud, 4{{$}}
31 @ud = internal global i32 undef
33 ; CHECK: .type nil,@object
34 ; CHECK-NEXT: .lcomm nil,4,2{{$}}
35 @nil = internal global i32 zeroinitializer
37 ; CHECK: .type z,@object
38 ; CHECK-NEXT: .lcomm z,4,2{{$}}
39 @z = internal global i32 0
41 ; CHECK-NEXT: .type one,@object
42 ; CHECK-NEXT: .align 2{{$}}
44 ; CHECK-NEXT: .int32 1{{$}}
45 ; CHECK-NEXT: .size one, 4{{$}}
46 @one = internal global i32 1
48 ; CHECK: .type answer,@object
49 ; CHECK: .align 2{{$}}
51 ; CHECK-NEXT: .int32 42{{$}}
52 ; CHECK-NEXT: .size answer, 4{{$}}
53 @answer = internal global i32 42
55 ; CHECK: .type u32max,@object
56 ; CHECK: .align 2{{$}}
58 ; CHECK-NEXT: .int32 4294967295{{$}}
59 ; CHECK-NEXT: .size u32max, 4{{$}}
60 @u32max = internal global i32 -1
62 ; CHECK: .type ud64,@object
63 ; CHECK: .align 3{{$}}
65 ; CHECK-NEXT: .zero 8{{$}}
66 ; CHECK-NEXT: .size ud64, 8{{$}}
67 @ud64 = internal global i64 undef
69 ; CHECK: .type nil64,@object
70 ; CHECK: .lcomm nil64,8,3{{$}}
71 @nil64 = internal global i64 zeroinitializer
73 ; CHECK: .type z64,@object
74 ; CHECK: .lcomm z64,8,3{{$}}
75 @z64 = internal global i64 0
77 ; CHECK: .type twoP32,@object
78 ; CHECK: .align 3{{$}}
80 ; CHECK-NEXT: .int64 4294967296{{$}}
81 ; CHECK-NEXT: .size twoP32, 8{{$}}
82 @twoP32 = internal global i64 4294967296
84 ; CHECK: .type u64max,@object
85 ; CHECK: .align 3{{$}}
87 ; CHECK-NEXT: .int64 -1{{$}}
88 ; CHECK-NEXT: .size u64max, 8{{$}}
89 @u64max = internal global i64 -1
91 ; CHECK: .type f32ud,@object
92 ; CHECK: .align 2{{$}}
94 ; CHECK-NEXT: .zero 4{{$}}
95 ; CHECK-NEXT: .size f32ud, 4{{$}}
96 @f32ud = internal global float undef
98 ; CHECK: .type f32nil,@object
99 ; CHECK: .lcomm f32nil,4,2{{$}}
100 @f32nil = internal global float zeroinitializer
102 ; CHECK: .type f32z,@object
103 ; CHECK: .lcomm f32z,4,2{{$}}
104 @f32z = internal global float 0.0
106 ; CHECK: .type f32nz,@object
107 ; CHECK: .align 2{{$}}
109 ; CHECK: .int32 2147483648{{$}}
110 ; CHECK: .size f32nz, 4{{$}}
111 @f32nz = internal global float -0.0
113 ; CHECK: .type f32two,@object
114 ; CHECK: .align 2{{$}}
115 ; CHECK-NEXT: f32two:
116 ; CHECK-NEXT: .int32 1073741824{{$}}
117 ; CHECK-NEXT: .size f32two, 4{{$}}
118 @f32two = internal global float 2.0
120 ; CHECK: .type f64ud,@object
121 ; CHECK: .align 3{{$}}
123 ; CHECK-NEXT: .zero 8{{$}}
124 ; CHECK-NEXT: .size f64ud, 8{{$}}
125 @f64ud = internal global double undef
127 ; CHECK: .type f64nil,@object
128 ; CHECK: .lcomm f64nil,8,3{{$}}
129 @f64nil = internal global double zeroinitializer
131 ; CHECK: .type f64z,@object
132 ; CHECK: .lcomm f64z,8,3{{$}}
133 @f64z = internal global double 0.0
135 ; CHECK: .type f64nz,@object
136 ; CHECK: .align 3{{$}}
138 ; CHECK-NEXT: .int64 -9223372036854775808{{$}}
139 ; CHECK-NEXT: .size f64nz, 8{{$}}
140 @f64nz = internal global double -0.0
142 ; CHECK: .type f64two,@object
143 ; CHECK: .align 3{{$}}
144 ; CHECK-NEXT: f64two:
145 ; CHECK-NEXT: .int64 4611686018427387904{{$}}
146 ; CHECK-NEXT: .size f64two, 8{{$}}
147 @f64two = internal global double 2.0