1 ; RUN: llc < %s -asm-verbose=false | FileCheck %s
3 ; Test that basic 32-bit integer comparison operations assemble as expected.
5 target datalayout = "e-p:32:32-i64:64-n32:64-S128"
6 target triple = "wasm32-unknown-unknown"
9 ; CHECK-NEXT: .param i32{{$}}
10 ; CHECK-NEXT: .param i32{{$}}
11 ; CHECK-NEXT: .result i32{{$}}
13 ; CHECK-NEXT: set_local @2, pop{{$}}
15 ; CHECK-NEXT: set_local @3, pop{{$}}
16 ; CHECK-NEXT: eq @3, @2{{$}}
17 ; CHECK-NEXT: set_local @4, pop{{$}}
18 ; CHECK-NEXT: return @4{{$}}
19 define i32 @eq_i32(i32 %x, i32 %y) {
20 %a = icmp eq i32 %x, %y
21 %b = zext i1 %a to i32
25 ; CHECK-LABEL: ne_i32:
26 ; CHECK: ne @3, @2{{$}}
27 ; CHECK-NEXT: set_local @4, pop{{$}}
28 define i32 @ne_i32(i32 %x, i32 %y) {
29 %a = icmp ne i32 %x, %y
30 %b = zext i1 %a to i32
34 ; CHECK-LABEL: slt_i32:
35 ; CHECK: slt @3, @2{{$}}
36 ; CHECK-NEXT: set_local @4, pop{{$}}
37 define i32 @slt_i32(i32 %x, i32 %y) {
38 %a = icmp slt i32 %x, %y
39 %b = zext i1 %a to i32
43 ; CHECK-LABEL: sle_i32:
44 ; CHECK: sle @3, @2{{$}}
45 ; CHECK-NEXT: set_local @4, pop{{$}}
46 define i32 @sle_i32(i32 %x, i32 %y) {
47 %a = icmp sle i32 %x, %y
48 %b = zext i1 %a to i32
52 ; CHECK-LABEL: ult_i32:
53 ; CHECK: ult @3, @2{{$}}
54 ; CHECK-NEXT: set_local @4, pop{{$}}
55 define i32 @ult_i32(i32 %x, i32 %y) {
56 %a = icmp ult i32 %x, %y
57 %b = zext i1 %a to i32
61 ; CHECK-LABEL: ule_i32:
62 ; CHECK: ule @3, @2{{$}}
63 ; CHECK-NEXT: set_local @4, pop{{$}}
64 define i32 @ule_i32(i32 %x, i32 %y) {
65 %a = icmp ule i32 %x, %y
66 %b = zext i1 %a to i32
70 ; CHECK-LABEL: sgt_i32:
71 ; CHECK: sgt @3, @2{{$}}
72 ; CHECK-NEXT: set_local @4, pop{{$}}
73 define i32 @sgt_i32(i32 %x, i32 %y) {
74 %a = icmp sgt i32 %x, %y
75 %b = zext i1 %a to i32
79 ; CHECK-LABEL: sge_i32:
80 ; CHECK: sge @3, @2{{$}}
81 ; CHECK-NEXT: set_local @4, pop{{$}}
82 define i32 @sge_i32(i32 %x, i32 %y) {
83 %a = icmp sge i32 %x, %y
84 %b = zext i1 %a to i32
88 ; CHECK-LABEL: ugt_i32:
89 ; CHECK: ugt @3, @2{{$}}
90 ; CHECK-NEXT: set_local @4, pop{{$}}
91 define i32 @ugt_i32(i32 %x, i32 %y) {
92 %a = icmp ugt i32 %x, %y
93 %b = zext i1 %a to i32
97 ; CHECK-LABEL: uge_i32:
98 ; CHECK: uge @3, @2{{$}}
99 ; CHECK-NEXT: set_local @4, pop{{$}}
100 define i32 @uge_i32(i32 %x, i32 %y) {
101 %a = icmp uge i32 %x, %y
102 %b = zext i1 %a to i32