blob: 22497ce8eea0a183466fe17942b8a2b43e87668b [file] [log] [blame]
JF Bastienda06bce2015-08-11 21:02:46 +00001; RUN: llc < %s -asm-verbose=false | FileCheck %s
2
3; Test that basic 32-bit floating-point comparison operations assemble as
4; expected.
5
Dan Gohmandde8dce2015-08-19 20:30:20 +00006target datalayout = "e-p:32:32-i64:64-n32:64-S128"
JF Bastienda06bce2015-08-11 21:02:46 +00007target triple = "wasm32-unknown-unknown"
8
JF Bastien71d29ac2015-08-12 17:53:29 +00009; CHECK-LABEL: ord_f32:
10; CHECK-NEXT: (setlocal @0 (argument 0))
11; CHECK-NEXT: (setlocal @1 (argument 1))
12; CHECK-NEXT: (setlocal @2 (eq @1 @1))
13; CHECK-NEXT: (setlocal @3 (eq @0 @0))
14; CHECK-NEXT: (setlocal @4 (and @3 @2))
15; CHECK-NEXT: (return @4)
16define i32 @ord_f32(float %x, float %y) {
17 %a = fcmp ord float %x, %y
18 %b = zext i1 %a to i32
19 ret i32 %b
20}
21
22; CHECK-LABEL: uno_f32:
23; CHECK-NEXT: (setlocal @0 (argument 0))
24; CHECK-NEXT: (setlocal @1 (argument 1))
25; CHECK-NEXT: (setlocal @2 (ne @1 @1))
26; CHECK-NEXT: (setlocal @3 (ne @0 @0))
27; CHECK-NEXT: (setlocal @4 (ior @3 @2))
28; CHECK-NEXT: (return @4)
29define i32 @uno_f32(float %x, float %y) {
30 %a = fcmp uno float %x, %y
31 %b = zext i1 %a to i32
32 ret i32 %b
33}
JF Bastienda06bce2015-08-11 21:02:46 +000034
35; CHECK-LABEL: oeq_f32:
36; CHECK-NEXT: (setlocal @0 (argument 1))
37; CHECK-NEXT: (setlocal @1 (argument 0))
38; CHECK-NEXT: (setlocal @2 (eq @1 @0))
JF Bastien71d29ac2015-08-12 17:53:29 +000039; CHECK-NEXT: (return @2)
JF Bastienda06bce2015-08-11 21:02:46 +000040define i32 @oeq_f32(float %x, float %y) {
41 %a = fcmp oeq float %x, %y
42 %b = zext i1 %a to i32
43 ret i32 %b
44}
45
46; CHECK-LABEL: une_f32:
47; CHECK: (setlocal @2 (ne @1 @0))
48define i32 @une_f32(float %x, float %y) {
49 %a = fcmp une float %x, %y
50 %b = zext i1 %a to i32
51 ret i32 %b
52}
53
54; CHECK-LABEL: olt_f32:
55; CHECK: (setlocal @2 (lt @1 @0))
56define i32 @olt_f32(float %x, float %y) {
57 %a = fcmp olt float %x, %y
58 %b = zext i1 %a to i32
59 ret i32 %b
60}
61
62; CHECK-LABEL: ole_f32:
63; CHECK: (setlocal @2 (le @1 @0))
64define i32 @ole_f32(float %x, float %y) {
65 %a = fcmp ole float %x, %y
66 %b = zext i1 %a to i32
67 ret i32 %b
68}
69
70; CHECK-LABEL: ogt_f32:
71; CHECK: (setlocal @2 (gt @1 @0))
72define i32 @ogt_f32(float %x, float %y) {
73 %a = fcmp ogt float %x, %y
74 %b = zext i1 %a to i32
75 ret i32 %b
76}
77
78; CHECK-LABEL: oge_f32:
79; CHECK: (setlocal @2 (ge @1 @0))
80define i32 @oge_f32(float %x, float %y) {
81 %a = fcmp oge float %x, %y
82 %b = zext i1 %a to i32
83 ret i32 %b
84}
85
JF Bastien71d29ac2015-08-12 17:53:29 +000086; Expanded comparisons, which also check for NaN.
87
88; CHECK-LABEL: ueq_f32:
89; CHECK-NEXT: (setlocal @0 (argument 1))
90; CHECK-NEXT: (setlocal @1 (argument 0))
91; CHECK-NEXT: (setlocal @2 (eq @1 @0))
92; CHECK-NEXT: (setlocal @3 (ne @0 @0))
93; CHECK-NEXT: (setlocal @4 (ne @1 @1))
94; CHECK-NEXT: (setlocal @5 (ior @4 @3))
95; CHECK-NEXT: (setlocal @6 (ior @2 @5))
96; CHECK-NEXT: (return @6)
97define i32 @ueq_f32(float %x, float %y) {
98 %a = fcmp ueq float %x, %y
99 %b = zext i1 %a to i32
100 ret i32 %b
101}
102
103; CHECK-LABEL: one_f32:
104; CHECK: (setlocal @2 (ne @1 @0))
105define i32 @one_f32(float %x, float %y) {
106 %a = fcmp one float %x, %y
107 %b = zext i1 %a to i32
108 ret i32 %b
109}
110
111; CHECK-LABEL: ult_f32:
112; CHECK: (setlocal @2 (lt @1 @0))
113define i32 @ult_f32(float %x, float %y) {
114 %a = fcmp ult float %x, %y
115 %b = zext i1 %a to i32
116 ret i32 %b
117}
118
119; CHECK-LABEL: ule_f32:
120; CHECK: (setlocal @2 (le @1 @0))
121define i32 @ule_f32(float %x, float %y) {
122 %a = fcmp ule float %x, %y
123 %b = zext i1 %a to i32
124 ret i32 %b
125}
126
127; CHECK-LABEL: ugt_f32:
128; CHECK: (setlocal @2 (gt @1 @0))
129define i32 @ugt_f32(float %x, float %y) {
130 %a = fcmp ugt float %x, %y
131 %b = zext i1 %a to i32
132 ret i32 %b
133}
134
135; CHECK-LABEL: uge_f32:
136; CHECK: (setlocal @2 (ge @1 @0))
137define i32 @uge_f32(float %x, float %y) {
138 %a = fcmp uge float %x, %y
139 %b = zext i1 %a to i32
140 ret i32 %b
141}