1 ; RUN: llc < %s -asm-verbose=false | FileCheck %s
3 ; Test that extending loads are assembled properly.
5 target datalayout = "e-p:32:32-i64:64-n32:64-S128"
6 target triple = "wasm32-unknown-unknown"
8 ; CHECK-LABEL: (func $sext_i8_i32
9 ; CHECK: (setlocal @1 (load_sx_i8_i32 @0))
10 define i32 @sext_i8_i32(i8 *%p) {
12 %e = sext i8 %v to i32
16 ; CHECK-LABEL: (func $zext_i8_i32
17 ; CHECK: (setlocal @1 (load_zx_i8_i32 @0))
18 define i32 @zext_i8_i32(i8 *%p) {
20 %e = zext i8 %v to i32
24 ; CHECK-LABEL: (func $sext_i16_i32
25 ; CHECK: (setlocal @1 (load_sx_i16_i32 @0))
26 define i32 @sext_i16_i32(i16 *%p) {
27 %v = load i16, i16* %p
28 %e = sext i16 %v to i32
32 ; CHECK-LABEL: (func $zext_i16_i32
33 ; CHECK: (setlocal @1 (load_zx_i16_i32 @0))
34 define i32 @zext_i16_i32(i16 *%p) {
35 %v = load i16, i16* %p
36 %e = zext i16 %v to i32
40 ; CHECK-LABEL: (func $sext_i8_i64
41 ; CHECK: (setlocal @1 (load_sx_i8_i64 @0))
42 define i64 @sext_i8_i64(i8 *%p) {
44 %e = sext i8 %v to i64
48 ; CHECK-LABEL: (func $zext_i8_i64
49 ; CHECK: (setlocal @1 (load_zx_i8_i64 @0))
50 define i64 @zext_i8_i64(i8 *%p) {
52 %e = zext i8 %v to i64
56 ; CHECK-LABEL: (func $sext_i16_i64
57 ; CHECK: (setlocal @1 (load_sx_i16_i64 @0))
58 define i64 @sext_i16_i64(i16 *%p) {
59 %v = load i16, i16* %p
60 %e = sext i16 %v to i64
64 ; CHECK-LABEL: (func $zext_i16_i64
65 ; CHECK: (setlocal @1 (load_zx_i16_i64 @0))
66 define i64 @zext_i16_i64(i16 *%p) {
67 %v = load i16, i16* %p
68 %e = zext i16 %v to i64
72 ; CHECK-LABEL: (func $sext_i32_i64
73 ; CHECK: (setlocal @1 (load_sx_i32_i64 @0))
74 define i64 @sext_i32_i64(i32 *%p) {
75 %v = load i32, i32* %p
76 %e = sext i32 %v to i64
80 ; CHECK-LABEL: (func $zext_i32_i64
81 ; CHECK: (setlocal @1 (load_zx_i32_i64 @0))
82 define i64 @zext_i32_i64(i32 *%p) {
83 %v = load i32, i32* %p
84 %e = zext i32 %v to i64