blob: 81d65dbece996fd6a5fcd70085be9975d420b046 [file] [log] [blame]
JF Bastien73ff6af2015-08-31 22:24:11 +00001; RUN: llc < %s -asm-verbose=false | FileCheck %s
2
3; Test that extending loads are assembled properly.
4
Dan Gohman5e066842015-09-09 20:54:31 +00005target datalayout = "e-p:32:32-i64:64-n32:64-S128"
JF Bastien73ff6af2015-08-31 22:24:11 +00006target triple = "wasm32-unknown-unknown"
7
8; CHECK-LABEL: (func $sext_i8_i32
Dan Gohman6a050f32015-10-03 00:01:53 +00009; CHECK: (set_local @1 (load_s_i8_i32 @0))
JF Bastien73ff6af2015-08-31 22:24:11 +000010define i32 @sext_i8_i32(i8 *%p) {
11 %v = load i8, i8* %p
12 %e = sext i8 %v to i32
13 ret i32 %e
14}
15
16; CHECK-LABEL: (func $zext_i8_i32
Dan Gohman6a050f32015-10-03 00:01:53 +000017; CHECK: (set_local @1 (load_u_i8_i32 @0))
JF Bastien73ff6af2015-08-31 22:24:11 +000018define i32 @zext_i8_i32(i8 *%p) {
19 %v = load i8, i8* %p
20 %e = zext i8 %v to i32
21 ret i32 %e
22}
23
24; CHECK-LABEL: (func $sext_i16_i32
Dan Gohman6a050f32015-10-03 00:01:53 +000025; CHECK: (set_local @1 (load_s_i16_i32 @0))
JF Bastien73ff6af2015-08-31 22:24:11 +000026define i32 @sext_i16_i32(i16 *%p) {
27 %v = load i16, i16* %p
28 %e = sext i16 %v to i32
29 ret i32 %e
30}
31
32; CHECK-LABEL: (func $zext_i16_i32
Dan Gohman6a050f32015-10-03 00:01:53 +000033; CHECK: (set_local @1 (load_u_i16_i32 @0))
JF Bastien73ff6af2015-08-31 22:24:11 +000034define i32 @zext_i16_i32(i16 *%p) {
35 %v = load i16, i16* %p
36 %e = zext i16 %v to i32
37 ret i32 %e
38}
39
40; CHECK-LABEL: (func $sext_i8_i64
Dan Gohman6a050f32015-10-03 00:01:53 +000041; CHECK: (set_local @1 (load_s_i8_i64 @0))
JF Bastien73ff6af2015-08-31 22:24:11 +000042define i64 @sext_i8_i64(i8 *%p) {
43 %v = load i8, i8* %p
44 %e = sext i8 %v to i64
45 ret i64 %e
46}
47
48; CHECK-LABEL: (func $zext_i8_i64
Dan Gohman6a050f32015-10-03 00:01:53 +000049; CHECK: (set_local @1 (load_u_i8_i64 @0))
JF Bastien73ff6af2015-08-31 22:24:11 +000050define i64 @zext_i8_i64(i8 *%p) {
51 %v = load i8, i8* %p
52 %e = zext i8 %v to i64
53 ret i64 %e
54}
55
56; CHECK-LABEL: (func $sext_i16_i64
Dan Gohman6a050f32015-10-03 00:01:53 +000057; CHECK: (set_local @1 (load_s_i16_i64 @0))
JF Bastien73ff6af2015-08-31 22:24:11 +000058define i64 @sext_i16_i64(i16 *%p) {
59 %v = load i16, i16* %p
60 %e = sext i16 %v to i64
61 ret i64 %e
62}
63
64; CHECK-LABEL: (func $zext_i16_i64
Dan Gohman6a050f32015-10-03 00:01:53 +000065; CHECK: (set_local @1 (load_u_i16_i64 @0))
JF Bastien73ff6af2015-08-31 22:24:11 +000066define i64 @zext_i16_i64(i16 *%p) {
67 %v = load i16, i16* %p
68 %e = zext i16 %v to i64
69 ret i64 %e
70}
71
72; CHECK-LABEL: (func $sext_i32_i64
Dan Gohman6a050f32015-10-03 00:01:53 +000073; CHECK: (set_local @1 (load_s_i32_i64 @0))
JF Bastien73ff6af2015-08-31 22:24:11 +000074define i64 @sext_i32_i64(i32 *%p) {
75 %v = load i32, i32* %p
76 %e = sext i32 %v to i64
77 ret i64 %e
78}
79
80; CHECK-LABEL: (func $zext_i32_i64
Dan Gohman6a050f32015-10-03 00:01:53 +000081; CHECK: (set_local @1 (load_u_i32_i64 @0))
JF Bastien73ff6af2015-08-31 22:24:11 +000082define i64 @zext_i32_i64(i32 *%p) {
83 %v = load i32, i32* %p
84 %e = zext i32 %v to i64
85 ret i64 %e
86}