brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 290616d Raw
95 lines · plain
1; RUN: llc < %s --mtriple=wasm32-unknown-unknown -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s2; RUN: llc < %s --mtriple=wasm64-unknown-unknown -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-disable-explicit-locals -wasm-keep-registers | FileCheck %s3 4; Test that extending loads are assembled properly.5 6; CHECK-LABEL: sext_i8_i32:7; CHECK: i32.load8_s $push0=, 0($0){{$}}8; CHECK-NEXT: return $pop0{{$}}9define i32 @sext_i8_i32(ptr %p) {10  %v = load i8, ptr %p11  %e = sext i8 %v to i3212  ret i32 %e13}14 15; CHECK-LABEL: zext_i8_i32:16; CHECK: i32.load8_u $push0=, 0($0){{$}}17; CHECK-NEXT: return $pop0{{$}}18define i32 @zext_i8_i32(ptr %p) {19  %v = load i8, ptr %p20  %e = zext i8 %v to i3221  ret i32 %e22}23 24; CHECK-LABEL: sext_i16_i32:25; CHECK: i32.load16_s $push0=, 0($0){{$}}26; CHECK-NEXT: return $pop0{{$}}27define i32 @sext_i16_i32(ptr %p) {28  %v = load i16, ptr %p29  %e = sext i16 %v to i3230  ret i32 %e31}32 33; CHECK-LABEL: zext_i16_i32:34; CHECK: i32.load16_u $push0=, 0($0){{$}}35; CHECK-NEXT: return $pop0{{$}}36define i32 @zext_i16_i32(ptr %p) {37  %v = load i16, ptr %p38  %e = zext i16 %v to i3239  ret i32 %e40}41 42; CHECK-LABEL: sext_i8_i64:43; CHECK: i64.load8_s $push0=, 0($0){{$}}44; CHECK-NEXT: return $pop0{{$}}45define i64 @sext_i8_i64(ptr %p) {46  %v = load i8, ptr %p47  %e = sext i8 %v to i6448  ret i64 %e49}50 51; CHECK-LABEL: zext_i8_i64:52; CHECK: i64.load8_u $push0=, 0($0){{$}}53; CHECK-NEXT: return $pop0{{$}}54define i64 @zext_i8_i64(ptr %p) {55  %v = load i8, ptr %p56  %e = zext i8 %v to i6457  ret i64 %e58}59 60; CHECK-LABEL: sext_i16_i64:61; CHECK: i64.load16_s $push0=, 0($0){{$}}62; CHECK-NEXT: return $pop0{{$}}63define i64 @sext_i16_i64(ptr %p) {64  %v = load i16, ptr %p65  %e = sext i16 %v to i6466  ret i64 %e67}68 69; CHECK-LABEL: zext_i16_i64:70; CHECK: i64.load16_u $push0=, 0($0){{$}}71; CHECK-NEXT: return $pop0{{$}}72define i64 @zext_i16_i64(ptr %p) {73  %v = load i16, ptr %p74  %e = zext i16 %v to i6475  ret i64 %e76}77 78; CHECK-LABEL: sext_i32_i64:79; CHECK: i64.load32_s $push0=, 0($0){{$}}80; CHECK-NEXT: return $pop0{{$}}81define i64 @sext_i32_i64(ptr %p) {82  %v = load i32, ptr %p83  %e = sext i32 %v to i6484  ret i64 %e85}86 87; CHECK-LABEL: zext_i32_i64:88; CHECK: i64.load32_u $push0=, 0($0){{$}}89; CHECK: return $pop0{{$}}90define i64 @zext_i32_i64(ptr %p) {91  %v = load i32, ptr %p92  %e = zext i32 %v to i6493  ret i64 %e94}95