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: (func $zero_i32 9; CHECK-NEXT: (result i32) 10; CHECK-NEXT: (set_local @0 (immediate 0)) 11; CHECK-NEXT: (return @0) 12define i32 @zero_i32() { 13 ret i32 0 14} 15 16; CHECK-LABEL: (func $one_i32 17; CHECK-NEXT: (result i32) 18; CHECK-NEXT: (set_local @0 (immediate 1)) 19; CHECK-NEXT: (return @0) 20define i32 @one_i32() { 21 ret i32 1 22} 23 24; CHECK-LABEL: (func $max_i32 25; CHECK-NEXT: (result i32) 26; CHECK-NEXT: (set_local @0 (immediate 2147483647)) 27; CHECK-NEXT: (return @0) 28define i32 @max_i32() { 29 ret i32 2147483647 30} 31 32; CHECK-LABEL: (func $min_i32 33; CHECK-NEXT: (result i32) 34; CHECK-NEXT: (set_local @0 (immediate -2147483648)) 35; CHECK-NEXT: (return @0) 36define i32 @min_i32() { 37 ret i32 -2147483648 38} 39 40; CHECK-LABEL: (func $zero_i64 41; CHECK-NEXT: (result i64) 42; CHECK-NEXT: (set_local @0 (immediate 0)) 43; CHECK-NEXT: (return @0) 44define i64 @zero_i64() { 45 ret i64 0 46} 47 48; CHECK-LABEL: (func $one_i64 49; CHECK-NEXT: (result i64) 50; CHECK-NEXT: (set_local @0 (immediate 1)) 51; CHECK-NEXT: (return @0) 52define i64 @one_i64() { 53 ret i64 1 54} 55 56; CHECK-LABEL: (func $max_i64 57; CHECK-NEXT: (result i64) 58; CHECK-NEXT: (set_local @0 (immediate 9223372036854775807)) 59; CHECK-NEXT: (return @0) 60define i64 @max_i64() { 61 ret i64 9223372036854775807 62} 63 64; CHECK-LABEL: (func $min_i64 65; CHECK-NEXT: (result i64) 66; CHECK-NEXT: (set_local @0 (immediate -9223372036854775808)) 67; CHECK-NEXT: (return @0) 68define i64 @min_i64() { 69 ret i64 -9223372036854775808 70} 71 72; CHECK-LABEL: (func $negzero_f32 73; CHECK-NEXT: (result f32) 74; CHECK-NEXT: (set_local @0 (immediate -0x0p0)) 75; CHECK-NEXT: (return @0) 76define float @negzero_f32() { 77 ret float -0.0 78} 79 80; CHECK-LABEL: (func $zero_f32 81; CHECK-NEXT: (result f32) 82; CHECK-NEXT: (set_local @0 (immediate 0x0p0)) 83; CHECK-NEXT: (return @0) 84define float @zero_f32() { 85 ret float 0.0 86} 87 88; CHECK-LABEL: (func $one_f32 89; CHECK-NEXT: (result f32) 90; CHECK-NEXT: (set_local @0 (immediate 0x1p0)) 91; CHECK-NEXT: (return @0) 92define float @one_f32() { 93 ret float 1.0 94} 95 96; CHECK-LABEL: (func $two_f32 97; CHECK-NEXT: (result f32) 98; CHECK-NEXT: (set_local @0 (immediate 0x1p1)) 99; CHECK-NEXT: (return @0) 100define float @two_f32() { 101 ret float 2.0 102} 103 104; CHECK-LABEL: (func $nan_f32 105; CHECK-NEXT: (result f32) 106; CHECK-NEXT: (set_local @0 (immediate nan)) 107; CHECK-NEXT: (return @0) 108define float @nan_f32() { 109 ret float 0x7FF8000000000000 110} 111 112; CHECK-LABEL: (func $negnan_f32 113; CHECK-NEXT: (result f32) 114; CHECK-NEXT: (set_local @0 (immediate -nan)) 115; CHECK-NEXT: (return @0) 116define float @negnan_f32() { 117 ret float 0xFFF8000000000000 118} 119 120; CHECK-LABEL: (func $inf_f32 121; CHECK-NEXT: (result f32) 122; CHECK-NEXT: (set_local @0 (immediate infinity)) 123; CHECK-NEXT: (return @0) 124define float @inf_f32() { 125 ret float 0x7FF0000000000000 126} 127 128; CHECK-LABEL: (func $neginf_f32 129; CHECK-NEXT: (result f32) 130; CHECK-NEXT: (set_local @0 (immediate -infinity)) 131; CHECK-NEXT: (return @0) 132define float @neginf_f32() { 133 ret float 0xFFF0000000000000 134} 135 136; CHECK-LABEL: (func $negzero_f64 137; CHECK-NEXT: (result f64) 138; CHECK-NEXT: (set_local @0 (immediate -0x0p0)) 139; CHECK-NEXT: (return @0) 140define double @negzero_f64() { 141 ret double -0.0 142} 143 144; CHECK-LABEL: (func $zero_f64 145; CHECK-NEXT: (result f64) 146; CHECK-NEXT: (set_local @0 (immediate 0x0p0)) 147; CHECK-NEXT: (return @0) 148define double @zero_f64() { 149 ret double 0.0 150} 151 152; CHECK-LABEL: (func $one_f64 153; CHECK-NEXT: (result f64) 154; CHECK-NEXT: (set_local @0 (immediate 0x1p0)) 155; CHECK-NEXT: (return @0) 156define double @one_f64() { 157 ret double 1.0 158} 159 160; CHECK-LABEL: (func $two_f64 161; CHECK-NEXT: (result f64) 162; CHECK-NEXT: (set_local @0 (immediate 0x1p1)) 163; CHECK-NEXT: (return @0) 164define double @two_f64() { 165 ret double 2.0 166} 167 168; CHECK-LABEL: (func $nan_f64 169; CHECK-NEXT: (result f64) 170; CHECK-NEXT: (set_local @0 (immediate nan)) 171; CHECK-NEXT: (return @0) 172define double @nan_f64() { 173 ret double 0x7FF8000000000000 174} 175 176; CHECK-LABEL: (func $negnan_f64 177; CHECK-NEXT: (result f64) 178; CHECK-NEXT: (set_local @0 (immediate -nan)) 179; CHECK-NEXT: (return @0) 180define double @negnan_f64() { 181 ret double 0xFFF8000000000000 182} 183 184; CHECK-LABEL: (func $inf_f64 185; CHECK-NEXT: (result f64) 186; CHECK-NEXT: (set_local @0 (immediate infinity)) 187; CHECK-NEXT: (return @0) 188define double @inf_f64() { 189 ret double 0x7FF0000000000000 190} 191 192; CHECK-LABEL: (func $neginf_f64 193; CHECK-NEXT: (result f64) 194; CHECK-NEXT: (set_local @0 (immediate -infinity)) 195; CHECK-NEXT: (return @0) 196define double @neginf_f64() { 197 ret double 0xFFF0000000000000 198} 199