Missing formatting
[oota-llvm.git] / test / CodeGen / WebAssembly / integer.ll
1 ; RUN: llc < %s -asm-verbose=false | FileCheck %s
2
3 target datalayout = "e-p:32:32-i64:64-v128:8:128-n32:64-S128"
4 target triple = "wasm32-unknown-unknown"
5
6 declare i32 @llvm.ctlz.i32(i32, i1)
7 declare i32 @llvm.cttz.i32(i32, i1)
8 declare i32 @llvm.ctpop.i32(i32)
9
10 ; CHECK-LABEL: add32:
11 ; CHECK-NEXT: (setlocal @0 (argument 1))
12 ; CHECK-NEXT: (setlocal @1 (argument 0))
13 ; CHECK-NEXT: (setlocal @2 (ADD_I32 @1 @0))
14 ; CHECK-NEXT: (RETURN @2)
15 define i32 @add32(i32 %x, i32 %y) {
16   %a = add i32 %x, %y
17   ret i32 %a
18 }
19
20 ; CHECK-LABEL: sub32:
21 ; CHECK-NEXT: (setlocal @0 (argument 1))
22 ; CHECK-NEXT: (setlocal @1 (argument 0))
23 ; CHECK-NEXT: (setlocal @2 (SUB_I32 @1 @0))
24 ; CHECK-NEXT: (RETURN @2)
25 define i32 @sub32(i32 %x, i32 %y) {
26   %a = sub i32 %x, %y
27   ret i32 %a
28 }
29
30 ; CHECK-LABEL: mul32:
31 ; CHECK-NEXT: (setlocal @0 (argument 1))
32 ; CHECK-NEXT: (setlocal @1 (argument 0))
33 ; CHECK-NEXT: (setlocal @2 (MUL_I32 @1 @0))
34 ; CHECK-NEXT: (RETURN @2)
35 define i32 @mul32(i32 %x, i32 %y) {
36   %a = mul i32 %x, %y
37   ret i32 %a
38 }
39
40 ; CHECK-LABEL: sdiv32:
41 ; CHECK-NEXT: (setlocal @0 (argument 1))
42 ; CHECK-NEXT: (setlocal @1 (argument 0))
43 ; CHECK-NEXT: (setlocal @2 (SDIV_I32 @1 @0))
44 ; CHECK-NEXT: (RETURN @2)
45 define i32 @sdiv32(i32 %x, i32 %y) {
46   %a = sdiv i32 %x, %y
47   ret i32 %a
48 }
49
50 ; CHECK-LABEL: udiv32:
51 ; CHECK-NEXT: (setlocal @0 (argument 1))
52 ; CHECK-NEXT: (setlocal @1 (argument 0))
53 ; CHECK-NEXT: (setlocal @2 (UDIV_I32 @1 @0))
54 ; CHECK-NEXT: (RETURN @2)
55 define i32 @udiv32(i32 %x, i32 %y) {
56   %a = udiv i32 %x, %y
57   ret i32 %a
58 }
59
60 ; CHECK-LABEL: srem32:
61 ; CHECK-NEXT: (setlocal @0 (argument 1))
62 ; CHECK-NEXT: (setlocal @1 (argument 0))
63 ; CHECK-NEXT: (setlocal @2 (SREM_I32 @1 @0))
64 ; CHECK-NEXT: (RETURN @2)
65 define i32 @srem32(i32 %x, i32 %y) {
66   %a = srem i32 %x, %y
67   ret i32 %a
68 }
69
70 ; CHECK-LABEL: urem32:
71 ; CHECK-NEXT: (setlocal @0 (argument 1))
72 ; CHECK-NEXT: (setlocal @1 (argument 0))
73 ; CHECK-NEXT: (setlocal @2 (UREM_I32 @1 @0))
74 ; CHECK-NEXT: (RETURN @2)
75 define i32 @urem32(i32 %x, i32 %y) {
76   %a = urem i32 %x, %y
77   ret i32 %a
78 }
79
80 ; CHECK-LABEL: and32:
81 ; CHECK-NEXT: (setlocal @0 (argument 1))
82 ; CHECK-NEXT: (setlocal @1 (argument 0))
83 ; CHECK-NEXT: (setlocal @2 (AND_I32 @1 @0))
84 ; CHECK-NEXT: (RETURN @2)
85 define i32 @and32(i32 %x, i32 %y) {
86   %a = and i32 %x, %y
87   ret i32 %a
88 }
89
90 ; CHECK-LABEL: ior32:
91 ; CHECK-NEXT: (setlocal @0 (argument 1))
92 ; CHECK-NEXT: (setlocal @1 (argument 0))
93 ; CHECK-NEXT: (setlocal @2 (IOR_I32 @1 @0))
94 ; CHECK-NEXT: (RETURN @2)
95 define i32 @ior32(i32 %x, i32 %y) {
96   %a = or i32 %x, %y
97   ret i32 %a
98 }
99
100 ; CHECK-LABEL: xor32:
101 ; CHECK-NEXT: (setlocal @0 (argument 1))
102 ; CHECK-NEXT: (setlocal @1 (argument 0))
103 ; CHECK-NEXT: (setlocal @2 (XOR_I32 @1 @0))
104 ; CHECK-NEXT: (RETURN @2)
105 define i32 @xor32(i32 %x, i32 %y) {
106   %a = xor i32 %x, %y
107   ret i32 %a
108 }
109
110 ; CHECK-LABEL: shl32:
111 ; CHECK-NEXT: (setlocal @0 (argument 1))
112 ; CHECK-NEXT: (setlocal @1 (argument 0))
113 ; CHECK-NEXT: (setlocal @2 (SHL_I32 @1 @0))
114 ; CHECK-NEXT: (RETURN @2)
115 define i32 @shl32(i32 %x, i32 %y) {
116   %a = shl i32 %x, %y
117   ret i32 %a
118 }
119
120 ; CHECK-LABEL: shr32:
121 ; CHECK-NEXT: (setlocal @0 (argument 1))
122 ; CHECK-NEXT: (setlocal @1 (argument 0))
123 ; CHECK-NEXT: (setlocal @2 (SHR_I32 @1 @0))
124 ; CHECK-NEXT: (RETURN @2)
125 define i32 @shr32(i32 %x, i32 %y) {
126   %a = lshr i32 %x, %y
127   ret i32 %a
128 }
129
130 ; CHECK-LABEL: sar32:
131 ; CHECK-NEXT: (setlocal @0 (argument 1))
132 ; CHECK-NEXT: (setlocal @1 (argument 0))
133 ; CHECK-NEXT: (setlocal @2 (SAR_I32 @1 @0))
134 ; CHECK-NEXT: (RETURN @2)
135 define i32 @sar32(i32 %x, i32 %y) {
136   %a = ashr i32 %x, %y
137   ret i32 %a
138 }
139
140 ; CHECK-LABEL: clz32:
141 ; CHECK-NEXT: (setlocal @0 (argument 0))
142 ; CHECK-NEXT: (setlocal @1 (CLZ_I32 @0))
143 ; CHECK-NEXT: (RETURN @1)
144 define i32 @clz32(i32 %x) {
145   %a = call i32 @llvm.ctlz.i32(i32 %x, i1 false)
146   ret i32 %a
147 }
148
149 ; CHECK-LABEL: ctz32:
150 ; CHECK-NEXT: (setlocal @0 (argument 0))
151 ; CHECK-NEXT: (setlocal @1 (CTZ_I32 @0))
152 ; CHECK-NEXT: (RETURN @1)
153 define i32 @ctz32(i32 %x) {
154   %a = call i32 @llvm.cttz.i32(i32 %x, i1 false)
155   ret i32 %a
156 }
157
158 ; CHECK-LABEL: popcnt32:
159 ; CHECK-NEXT: (setlocal @0 (argument 0))
160 ; CHECK-NEXT: (setlocal @1 (POPCNT_I32 @0))
161 ; CHECK-NEXT: (RETURN @1)
162 define i32 @popcnt32(i32 %x) {
163   %a = call i32 @llvm.ctpop.i32(i32 %x)
164   ret i32 %a
165 }