blob: 930fe2e5a6a0e008c98dd3830d0dfb03f4ad7bef [file] [log] [blame]
JF Bastienda06bce2015-08-11 21:02:46 +00001; RUN: llc < %s -asm-verbose=false | FileCheck %s
2
3; Test that basic 64-bit integer comparison operations assemble as expected.
4
Dan Gohmandde8dce2015-08-19 20:30:20 +00005target datalayout = "e-p:32:32-i64:64-n32:64-S128"
JF Bastienda06bce2015-08-11 21:02:46 +00006target triple = "wasm32-unknown-unknown"
7
Dan Gohmane51c0582015-10-06 00:27:55 +00008; CHECK-LABEL: eq_i64:
9; CHECK-NEXT: .param i64{{$}}
10; CHECK-NEXT: .param i64{{$}}
11; CHECK-NEXT: .result i32{{$}}
12; CHECK-NEXT: @1{{$}}
13; CHECK-NEXT: set_local @2, pop{{$}}
14; CHECK-NEXT: @0{{$}}
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{{$}}
JF Bastienda06bce2015-08-11 21:02:46 +000019define i32 @eq_i64(i64 %x, i64 %y) {
20 %a = icmp eq i64 %x, %y
21 %b = zext i1 %a to i32
22 ret i32 %b
23}
24
Dan Gohmane51c0582015-10-06 00:27:55 +000025; CHECK-LABEL: ne_i64:
26; CHECK: ne @3, @2{{$}}
27; CHECK-NEXT: set_local @4, pop{{$}}
JF Bastienda06bce2015-08-11 21:02:46 +000028define i32 @ne_i64(i64 %x, i64 %y) {
29 %a = icmp ne i64 %x, %y
30 %b = zext i1 %a to i32
31 ret i32 %b
32}
33
Dan Gohmane51c0582015-10-06 00:27:55 +000034; CHECK-LABEL: slt_i64:
35; CHECK: slt @3, @2{{$}}
36; CHECK-NEXT: set_local @4, pop{{$}}
JF Bastienda06bce2015-08-11 21:02:46 +000037define i32 @slt_i64(i64 %x, i64 %y) {
38 %a = icmp slt i64 %x, %y
39 %b = zext i1 %a to i32
40 ret i32 %b
41}
42
Dan Gohmane51c0582015-10-06 00:27:55 +000043; CHECK-LABEL: sle_i64:
44; CHECK: sle @3, @2{{$}}
45; CHECK-NEXT: set_local @4, pop{{$}}
JF Bastienda06bce2015-08-11 21:02:46 +000046define i32 @sle_i64(i64 %x, i64 %y) {
47 %a = icmp sle i64 %x, %y
48 %b = zext i1 %a to i32
49 ret i32 %b
50}
51
Dan Gohmane51c0582015-10-06 00:27:55 +000052; CHECK-LABEL: ult_i64:
53; CHECK: ult @3, @2{{$}}
54; CHECK-NEXT: set_local @4, pop{{$}}
JF Bastienda06bce2015-08-11 21:02:46 +000055define i32 @ult_i64(i64 %x, i64 %y) {
56 %a = icmp ult i64 %x, %y
57 %b = zext i1 %a to i32
58 ret i32 %b
59}
60
Dan Gohmane51c0582015-10-06 00:27:55 +000061; CHECK-LABEL: ule_i64:
62; CHECK: ule @3, @2{{$}}
63; CHECK-NEXT: set_local @4, pop{{$}}
JF Bastienda06bce2015-08-11 21:02:46 +000064define i32 @ule_i64(i64 %x, i64 %y) {
65 %a = icmp ule i64 %x, %y
66 %b = zext i1 %a to i32
67 ret i32 %b
68}
69
Dan Gohmane51c0582015-10-06 00:27:55 +000070; CHECK-LABEL: sgt_i64:
71; CHECK: sgt @3, @2{{$}}
72; CHECK-NEXT: set_local @4, pop{{$}}
JF Bastienda06bce2015-08-11 21:02:46 +000073define i32 @sgt_i64(i64 %x, i64 %y) {
74 %a = icmp sgt i64 %x, %y
75 %b = zext i1 %a to i32
76 ret i32 %b
77}
78
Dan Gohmane51c0582015-10-06 00:27:55 +000079; CHECK-LABEL: sge_i64:
80; CHECK: sge @3, @2{{$}}
81; CHECK-NEXT: set_local @4, pop{{$}}
JF Bastienda06bce2015-08-11 21:02:46 +000082define i32 @sge_i64(i64 %x, i64 %y) {
83 %a = icmp sge i64 %x, %y
84 %b = zext i1 %a to i32
85 ret i32 %b
86}
87
Dan Gohmane51c0582015-10-06 00:27:55 +000088; CHECK-LABEL: ugt_i64:
89; CHECK: ugt @3, @2{{$}}
90; CHECK-NEXT: set_local @4, pop{{$}}
JF Bastienda06bce2015-08-11 21:02:46 +000091define i32 @ugt_i64(i64 %x, i64 %y) {
92 %a = icmp ugt i64 %x, %y
93 %b = zext i1 %a to i32
94 ret i32 %b
95}
96
Dan Gohmane51c0582015-10-06 00:27:55 +000097; CHECK-LABEL: uge_i64:
98; CHECK: uge @3, @2{{$}}
99; CHECK-NEXT: set_local @4, pop{{$}}
JF Bastienda06bce2015-08-11 21:02:46 +0000100define i32 @uge_i64(i64 %x, i64 %y) {
101 %a = icmp uge i64 %x, %y
102 %b = zext i1 %a to i32
103 ret i32 %b
104}