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: (setlocal @0 (argument 1))
10 ; CHECK-NEXT: (setlocal @1 (argument 0))
11 ; CHECK-NEXT: (setlocal @2 (eq @1 @0))
12 ; CHECK-NEXT: (return @2)
13 define i32 @eq_i32(i32 %x, i32 %y) {
14 %a = icmp eq i32 %x, %y
15 %b = zext i1 %a to i32
19 ; CHECK-LABEL: ne_i32:
20 ; CHECK: (setlocal @2 (ne @1 @0))
21 define i32 @ne_i32(i32 %x, i32 %y) {
22 %a = icmp ne i32 %x, %y
23 %b = zext i1 %a to i32
27 ; CHECK-LABEL: slt_i32:
28 ; CHECK: (setlocal @2 (slt @1 @0))
29 define i32 @slt_i32(i32 %x, i32 %y) {
30 %a = icmp slt i32 %x, %y
31 %b = zext i1 %a to i32
35 ; CHECK-LABEL: sle_i32:
36 ; CHECK: (setlocal @2 (sle @1 @0))
37 define i32 @sle_i32(i32 %x, i32 %y) {
38 %a = icmp sle i32 %x, %y
39 %b = zext i1 %a to i32
43 ; CHECK-LABEL: ult_i32:
44 ; CHECK: (setlocal @2 (ult @1 @0))
45 define i32 @ult_i32(i32 %x, i32 %y) {
46 %a = icmp ult i32 %x, %y
47 %b = zext i1 %a to i32
51 ; CHECK-LABEL: ule_i32:
52 ; CHECK: (setlocal @2 (ule @1 @0))
53 define i32 @ule_i32(i32 %x, i32 %y) {
54 %a = icmp ule i32 %x, %y
55 %b = zext i1 %a to i32
59 ; CHECK-LABEL: sgt_i32:
60 ; CHECK: (setlocal @2 (sgt @1 @0))
61 define i32 @sgt_i32(i32 %x, i32 %y) {
62 %a = icmp sgt i32 %x, %y
63 %b = zext i1 %a to i32
67 ; CHECK-LABEL: sge_i32:
68 ; CHECK: (setlocal @2 (sge @1 @0))
69 define i32 @sge_i32(i32 %x, i32 %y) {
70 %a = icmp sge i32 %x, %y
71 %b = zext i1 %a to i32
75 ; CHECK-LABEL: ugt_i32:
76 ; CHECK: (setlocal @2 (ugt @1 @0))
77 define i32 @ugt_i32(i32 %x, i32 %y) {
78 %a = icmp ugt i32 %x, %y
79 %b = zext i1 %a to i32
83 ; CHECK-LABEL: uge_i32:
84 ; CHECK: (setlocal @2 (uge @1 @0))
85 define i32 @uge_i32(i32 %x, i32 %y) {
86 %a = icmp uge i32 %x, %y
87 %b = zext i1 %a to i32