1; RUN: llc < %s -asm-verbose=false | FileCheck %s 2 3; Test that basic loads are assembled properly. 4 5target datalayout = "e-p:32:32-i64:64-n32:64-S128" 6target triple = "wasm32-unknown-unknown" 7 8; CHECK-LABEL: ldi32: 9; CHECK-NEXT: .param i32{{$}} 10; CHECK-NEXT: .result i32{{$}} 11; CHECK-NEXT: .local i32, i32{{$}} 12; CHECK-NEXT: get_local 0{{$}} 13; CHECK-NEXT: set_local 1, pop{{$}} 14; CHECK-NEXT: i32.load (get_local 1){{$}} 15; CHECK-NEXT: set_local 2, pop{{$}} 16; CHECK-NEXT: return (get_local 2){{$}} 17define i32 @ldi32(i32 *%p) { 18 %v = load i32, i32* %p 19 ret i32 %v 20} 21 22; CHECK-LABEL: ldi64: 23; CHECK-NEXT: .param i32{{$}} 24; CHECK-NEXT: .result i64{{$}} 25; CHECK-NEXT: .local i32, i64{{$}} 26; CHECK-NEXT: get_local 0{{$}} 27; CHECK-NEXT: set_local 1, pop{{$}} 28; CHECK-NEXT: i64.load (get_local 1){{$}} 29; CHECK-NEXT: set_local 2, pop{{$}} 30; CHECK-NEXT: return (get_local 2){{$}} 31define i64 @ldi64(i64 *%p) { 32 %v = load i64, i64* %p 33 ret i64 %v 34} 35 36; CHECK-LABEL: ldf32: 37; CHECK-NEXT: .param i32{{$}} 38; CHECK-NEXT: .result f32{{$}} 39; CHECK-NEXT: .local i32, f32{{$}} 40; CHECK-NEXT: get_local 0{{$}} 41; CHECK-NEXT: set_local 1, pop{{$}} 42; CHECK-NEXT: f32.load (get_local 1){{$}} 43; CHECK-NEXT: set_local 2, pop{{$}} 44; CHECK-NEXT: return (get_local 2){{$}} 45define float @ldf32(float *%p) { 46 %v = load float, float* %p 47 ret float %v 48} 49 50; CHECK-LABEL: ldf64: 51; CHECK-NEXT: .param i32{{$}} 52; CHECK-NEXT: .result f64{{$}} 53; CHECK-NEXT: .local i32, f64{{$}} 54; CHECK-NEXT: get_local 0{{$}} 55; CHECK-NEXT: set_local 1, pop{{$}} 56; CHECK-NEXT: f64.load (get_local 1){{$}} 57; CHECK-NEXT: set_local 2, pop{{$}} 58; CHECK-NEXT: return (get_local 2){{$}} 59define double @ldf64(double *%p) { 60 %v = load double, double* %p 61 ret double %v 62} 63