1 ; RUN: llc < %s -asm-verbose=false | FileCheck %s
3 ; Test that basic immediates assemble as expected.
5 target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
6 target triple = "wasm32-unknown-unknown"
8 ; CHECK-LABEL: zero_i32:
9 ; CHECK-NEXT: .result i32{{$}}
10 ; CHECK-NEXT: i32.const $push[[NUM:[0-9]+]]=, 0{{$}}
11 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
12 define i32 @zero_i32() {
16 ; CHECK-LABEL: one_i32:
17 ; CHECK-NEXT: .result i32{{$}}
18 ; CHECK-NEXT: i32.const $push[[NUM:[0-9]+]]=, 1{{$}}
19 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
20 define i32 @one_i32() {
24 ; CHECK-LABEL: max_i32:
25 ; CHECK-NEXT: .result i32{{$}}
26 ; CHECK-NEXT: i32.const $push[[NUM:[0-9]+]]=, 2147483647{{$}}
27 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
28 define i32 @max_i32() {
32 ; CHECK-LABEL: min_i32:
33 ; CHECK-NEXT: .result i32{{$}}
34 ; CHECK-NEXT: i32.const $push[[NUM:[0-9]+]]=, -2147483648{{$}}
35 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
36 define i32 @min_i32() {
40 ; CHECK-LABEL: zero_i64:
41 ; CHECK-NEXT: .result i64{{$}}
42 ; CHECK-NEXT: i64.const $push[[NUM:[0-9]+]]=, 0{{$}}
43 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
44 define i64 @zero_i64() {
48 ; CHECK-LABEL: one_i64:
49 ; CHECK-NEXT: .result i64{{$}}
50 ; CHECK-NEXT: i64.const $push[[NUM:[0-9]+]]=, 1{{$}}
51 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
52 define i64 @one_i64() {
56 ; CHECK-LABEL: max_i64:
57 ; CHECK-NEXT: .result i64{{$}}
58 ; CHECK-NEXT: i64.const $push[[NUM:[0-9]+]]=, 9223372036854775807{{$}}
59 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
60 define i64 @max_i64() {
61 ret i64 9223372036854775807
64 ; CHECK-LABEL: min_i64:
65 ; CHECK-NEXT: .result i64{{$}}
66 ; CHECK-NEXT: i64.const $push[[NUM:[0-9]+]]=, -9223372036854775808{{$}}
67 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
68 define i64 @min_i64() {
69 ret i64 -9223372036854775808
72 ; CHECK-LABEL: negzero_f32:
73 ; CHECK-NEXT: .result f32{{$}}
74 ; CHECK-NEXT: f32.const $push[[NUM:[0-9]+]]=, -0x0p0{{$}}
75 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
76 define float @negzero_f32() {
80 ; CHECK-LABEL: zero_f32:
81 ; CHECK-NEXT: .result f32{{$}}
82 ; CHECK-NEXT: f32.const $push[[NUM:[0-9]+]]=, 0x0p0{{$}}
83 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
84 define float @zero_f32() {
88 ; CHECK-LABEL: one_f32:
89 ; CHECK-NEXT: .result f32{{$}}
90 ; CHECK-NEXT: f32.const $push[[NUM:[0-9]+]]=, 0x1p0{{$}}
91 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
92 define float @one_f32() {
96 ; CHECK-LABEL: two_f32:
97 ; CHECK-NEXT: .result f32{{$}}
98 ; CHECK-NEXT: f32.const $push[[NUM:[0-9]+]]=, 0x1p1{{$}}
99 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
100 define float @two_f32() {
104 ; CHECK-LABEL: nan_f32:
105 ; CHECK-NEXT: .result f32{{$}}
106 ; CHECK-NEXT: f32.const $push[[NUM:[0-9]+]]=, nan{{$}}
107 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
108 define float @nan_f32() {
109 ret float 0x7FF8000000000000
112 ; CHECK-LABEL: negnan_f32:
113 ; CHECK-NEXT: .result f32{{$}}
114 ; CHECK-NEXT: f32.const $push[[NUM:[0-9]+]]=, -nan{{$}}
115 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
116 define float @negnan_f32() {
117 ret float 0xFFF8000000000000
120 ; CHECK-LABEL: inf_f32:
121 ; CHECK-NEXT: .result f32{{$}}
122 ; CHECK-NEXT: f32.const $push[[NUM:[0-9]+]]=, infinity{{$}}
123 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
124 define float @inf_f32() {
125 ret float 0x7FF0000000000000
128 ; CHECK-LABEL: neginf_f32:
129 ; CHECK-NEXT: .result f32{{$}}
130 ; CHECK-NEXT: f32.const $push[[NUM:[0-9]+]]=, -infinity{{$}}
131 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
132 define float @neginf_f32() {
133 ret float 0xFFF0000000000000
136 ; CHECK-LABEL: negzero_f64:
137 ; CHECK-NEXT: .result f64{{$}}
138 ; CHECK-NEXT: f64.const $push[[NUM:[0-9]+]]=, -0x0p0{{$}}
139 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
140 define double @negzero_f64() {
144 ; CHECK-LABEL: zero_f64:
145 ; CHECK-NEXT: .result f64{{$}}
146 ; CHECK-NEXT: f64.const $push[[NUM:[0-9]+]]=, 0x0p0{{$}}
147 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
148 define double @zero_f64() {
152 ; CHECK-LABEL: one_f64:
153 ; CHECK-NEXT: .result f64{{$}}
154 ; CHECK-NEXT: f64.const $push[[NUM:[0-9]+]]=, 0x1p0{{$}}
155 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
156 define double @one_f64() {
160 ; CHECK-LABEL: two_f64:
161 ; CHECK-NEXT: .result f64{{$}}
162 ; CHECK-NEXT: f64.const $push[[NUM:[0-9]+]]=, 0x1p1{{$}}
163 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
164 define double @two_f64() {
168 ; CHECK-LABEL: nan_f64:
169 ; CHECK-NEXT: .result f64{{$}}
170 ; CHECK-NEXT: f64.const $push[[NUM:[0-9]+]]=, nan{{$}}
171 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
172 define double @nan_f64() {
173 ret double 0x7FF8000000000000
176 ; CHECK-LABEL: negnan_f64:
177 ; CHECK-NEXT: .result f64{{$}}
178 ; CHECK-NEXT: f64.const $push[[NUM:[0-9]+]]=, -nan{{$}}
179 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
180 define double @negnan_f64() {
181 ret double 0xFFF8000000000000
184 ; CHECK-LABEL: inf_f64:
185 ; CHECK-NEXT: .result f64{{$}}
186 ; CHECK-NEXT: f64.const $push[[NUM:[0-9]+]]=, infinity{{$}}
187 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
188 define double @inf_f64() {
189 ret double 0x7FF0000000000000
192 ; CHECK-LABEL: neginf_f64:
193 ; CHECK-NEXT: .result f64{{$}}
194 ; CHECK-NEXT: f64.const $push[[NUM:[0-9]+]]=, -infinity{{$}}
195 ; CHECK-NEXT: return $pop[[NUM]]{{$}}
196 define double @neginf_f64() {
197 ret double 0xFFF0000000000000