[WebAssembly] Switch to a more traditional assembly syntax
[oota-llvm.git] / test / CodeGen / WebAssembly / comparisons_i64.ll
1 ; RUN: llc < %s -asm-verbose=false | FileCheck %s
2
3 ; Test that basic 64-bit integer comparison operations assemble as expected.
4
5 target datalayout = "e-p:32:32-i64:64-n32:64-S128"
6 target triple = "wasm32-unknown-unknown"
7
8 ; 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{{$}}
19 define 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
25 ; CHECK-LABEL: ne_i64:
26 ; CHECK: ne @3, @2{{$}}
27 ; CHECK-NEXT: set_local @4, pop{{$}}
28 define 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
34 ; CHECK-LABEL: slt_i64:
35 ; CHECK: slt @3, @2{{$}}
36 ; CHECK-NEXT: set_local @4, pop{{$}}
37 define 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
43 ; CHECK-LABEL: sle_i64:
44 ; CHECK: sle @3, @2{{$}}
45 ; CHECK-NEXT: set_local @4, pop{{$}}
46 define 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
52 ; CHECK-LABEL: ult_i64:
53 ; CHECK: ult @3, @2{{$}}
54 ; CHECK-NEXT: set_local @4, pop{{$}}
55 define 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
61 ; CHECK-LABEL: ule_i64:
62 ; CHECK: ule @3, @2{{$}}
63 ; CHECK-NEXT: set_local @4, pop{{$}}
64 define 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
70 ; CHECK-LABEL: sgt_i64:
71 ; CHECK: sgt @3, @2{{$}}
72 ; CHECK-NEXT: set_local @4, pop{{$}}
73 define 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
79 ; CHECK-LABEL: sge_i64:
80 ; CHECK: sge @3, @2{{$}}
81 ; CHECK-NEXT: set_local @4, pop{{$}}
82 define 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
88 ; CHECK-LABEL: ugt_i64:
89 ; CHECK: ugt @3, @2{{$}}
90 ; CHECK-NEXT: set_local @4, pop{{$}}
91 define 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
97 ; CHECK-LABEL: uge_i64:
98 ; CHECK: uge @3, @2{{$}}
99 ; CHECK-NEXT: set_local @4, pop{{$}}
100 define 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 }