Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / WebAssembly / fast-isel-noreg.ll
blob0ebc7b20446a8680dc5bec1615720f2e4e1ce4f1
1 ; RUN: llc < %s -asm-verbose=false -mcpu=mvp -disable-wasm-fallthrough-return-opt -wasm-keep-registers -verify-machineinstrs | FileCheck %s
2 ; RUN: llc < %s -asm-verbose=false -mcpu=mvp -wasm-keep-registers -fast-isel -verify-machineinstrs | FileCheck %s
4 ; Test that FastISel does not generate instructions with NoReg
6 target triple = "wasm32-unknown-unknown"
8 ; CHECK: i32.const {{.*}}, addr
9 ; CHECK: i32.const {{.*}}, 24
10 ; CHECK: i32.shl
11 ; CHECK: i32.const {{.*}}, 24
12 ; CHECK: i32.shr_s
13 ; CHECK: i32.const {{.*}}, 64
14 ; CHECK: i32.lt_s
15 ; CHECK: i32.const {{.*}}, 1
16 ; CHECK: i32.and
17 ; CHECK: i32.eqz
18 ; CHECK: br_if 0, $pop{{[0-9]+}}
19 define hidden i32 @d() #0 {
20 entry:
21   %t = icmp slt i8 ptrtoint (ptr @addr to i8), 64
22   br i1 %t, label %a, label %b
24   unreachable
26   ret i32 0
29 ; CHECK: i32.const {{.*}}, addr
30 ; CHECK: i32.const {{.*}}, 255
31 ; CHECK: i32.and
32 ; CHECK: i32.const {{.*}}, 64
33 ; CHECK: i32.lt_u
34 ; CHECK: i32.const {{.*}}, 1
35 ; CHECK: i32.and
36 ; CHECK: i32.eqz
37 ; CHECK: br_if 0, $pop{{[0-9]+}}
38 define hidden i32 @e() #0 {
39 entry:
40   %t = icmp ult i8 ptrtoint (ptr @addr to i8), 64
41   br i1 %t, label %a, label %b
43   unreachable
45   ret i32 0
48 ; CHECK: i32.const {{.*}}, addr
49 ; CHECK: i32.const {{.*}}, 24
50 ; CHECK: i32.shl
51 ; CHECK: i32.const {{.*}}, 24
52 ; CHECK: i32.shr_s
53 define hidden i32 @f() #0 {
54 entry:
55   %t = sext i8 ptrtoint (ptr @addr to i8) to i32
56   ret i32 %t
59 ; CHECK: i32.const {{.*}}, addr
60 ; CHECK: i32.const {{.*}}, 255
61 ; CHECK: i32.and
62 define hidden i32 @g() #0 {
63 entry:
64   %t = zext i8 ptrtoint (ptr @addr to i8) to i32
65   ret i32 %t
68 declare void @addr()
70 attributes #0 = { noinline optnone }