1; RUN: llc < %s -asm-verbose=false | FileCheck %s 2 3; Test that basic immediates assemble as expected. 4 5target datalayout = "e-p:32:32-i64:64-n32:64-S128" 6target triple = "wasm32-unknown-unknown" 7 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]]{{$}} 12define i32 @zero_i32() { 13 ret i32 0 14} 15 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]]{{$}} 20define i32 @one_i32() { 21 ret i32 1 22} 23 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]]{{$}} 28define i32 @max_i32() { 29 ret i32 2147483647 30} 31 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]]{{$}} 36define i32 @min_i32() { 37 ret i32 -2147483648 38} 39 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]]{{$}} 44define i64 @zero_i64() { 45 ret i64 0 46} 47 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]]{{$}} 52define i64 @one_i64() { 53 ret i64 1 54} 55 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]]{{$}} 60define i64 @max_i64() { 61 ret i64 9223372036854775807 62} 63 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]]{{$}} 68define i64 @min_i64() { 69 ret i64 -9223372036854775808 70} 71 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]]{{$}} 76define float @negzero_f32() { 77 ret float -0.0 78} 79 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]]{{$}} 84define float @zero_f32() { 85 ret float 0.0 86} 87 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]]{{$}} 92define float @one_f32() { 93 ret float 1.0 94} 95 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]]{{$}} 100define float @two_f32() { 101 ret float 2.0 102} 103 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]]{{$}} 108define float @nan_f32() { 109 ret float 0x7FF8000000000000 110} 111 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]]{{$}} 116define float @negnan_f32() { 117 ret float 0xFFF8000000000000 118} 119 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]]{{$}} 124define float @inf_f32() { 125 ret float 0x7FF0000000000000 126} 127 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]]{{$}} 132define float @neginf_f32() { 133 ret float 0xFFF0000000000000 134} 135 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]]{{$}} 140define double @negzero_f64() { 141 ret double -0.0 142} 143 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]]{{$}} 148define double @zero_f64() { 149 ret double 0.0 150} 151 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]]{{$}} 156define double @one_f64() { 157 ret double 1.0 158} 159 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]]{{$}} 164define double @two_f64() { 165 ret double 2.0 166} 167 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]]{{$}} 172define double @nan_f64() { 173 ret double 0x7FF8000000000000 174} 175 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]]{{$}} 180define double @negnan_f64() { 181 ret double 0xFFF8000000000000 182} 183 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]]{{$}} 188define double @inf_f64() { 189 ret double 0x7FF0000000000000 190} 191 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]]{{$}} 196define double @neginf_f64() { 197 ret double 0xFFF0000000000000 198} 199