blob: 34088beb2246da901c1c8dce8ff8a7006a9a0608 [file] [log] [blame]
Vasileios Kalintirise741eb22015-03-02 12:47:32 +00001; RUN: llc < %s -march=mips -mcpu=mips32 | \
Daniel Sanders0d972702016-06-24 12:23:17 +00002; RUN: FileCheck %s -check-prefixes=ALL,32-C
Vasileios Kalintirise741eb22015-03-02 12:47:32 +00003; RUN: llc < %s -march=mips -mcpu=mips32r2 | \
Daniel Sanders0d972702016-06-24 12:23:17 +00004; RUN: FileCheck %s -check-prefixes=ALL,32-C
Vasileios Kalintirise741eb22015-03-02 12:47:32 +00005; RUN: llc < %s -march=mips -mcpu=mips32r6 | \
Daniel Sanders0d972702016-06-24 12:23:17 +00006; RUN: FileCheck %s -check-prefixes=ALL,32-CMP
Vasileios Kalintirise741eb22015-03-02 12:47:32 +00007; RUN: llc < %s -march=mips64 -mcpu=mips4 | \
Daniel Sanders0d972702016-06-24 12:23:17 +00008; RUN: FileCheck %s -check-prefixes=ALL,64-C
Vasileios Kalintirise741eb22015-03-02 12:47:32 +00009; RUN: llc < %s -march=mips64 -mcpu=mips64 | \
Daniel Sanders0d972702016-06-24 12:23:17 +000010; RUN: FileCheck %s -check-prefixes=ALL,64-C
Vasileios Kalintirise741eb22015-03-02 12:47:32 +000011; RUN: llc < %s -march=mips64 -mcpu=mips64r2 | \
Daniel Sanders0d972702016-06-24 12:23:17 +000012; RUN: FileCheck %s -check-prefixes=ALL,64-C
Vasileios Kalintirise741eb22015-03-02 12:47:32 +000013; RUN: llc < %s -march=mips64 -mcpu=mips64r6 | \
Daniel Sanders0d972702016-06-24 12:23:17 +000014; RUN: FileCheck %s -check-prefixes=ALL,64-CMP
Zlatko Buljancd242c12016-06-09 11:15:53 +000015; RUN: llc < %s -march=mips -mcpu=mips32r3 -mattr=+micromips | FileCheck %s \
Daniel Sanders0d972702016-06-24 12:23:17 +000016; RUN: -check-prefixes=ALL,MM,MM32R3
Zlatko Buljancd242c12016-06-09 11:15:53 +000017; RUN: llc < %s -march=mips -mcpu=mips32r6 -mattr=+micromips | FileCheck %s \
Daniel Sanders0d972702016-06-24 12:23:17 +000018; RUN: -check-prefixes=ALL,MM,MMR6,MM32R6
Daniel Sanders0fa60412014-06-12 13:39:06 +000019
20define i32 @false_f32(float %a, float %b) nounwind {
21; ALL-LABEL: false_f32:
Zlatko Buljancd242c12016-06-09 11:15:53 +000022; 32-C: addiu $2, $zero, 0
23
24; 32-CMP: addiu $2, $zero, 0
25
26; 64-C: addiu $2, $zero, 0
27
28; 64-CMP: addiu $2, $zero, 0
29
Simon Dardis61897522016-07-25 09:57:28 +000030; MM-DAG: li16 $2, 0
Daniel Sanders0fa60412014-06-12 13:39:06 +000031
32 %1 = fcmp false float %a, %b
33 %2 = zext i1 %1 to i32
34 ret i32 %2
35}
36
37define i32 @oeq_f32(float %a, float %b) nounwind {
38; ALL-LABEL: oeq_f32:
39
Vasileios Kalintirise741eb22015-03-02 12:47:32 +000040; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +000041; 32-C-DAG: c.eq.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +000042; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +000043
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +000044; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +000045; 64-C-DAG: c.eq.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +000046; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +000047
48; 32-CMP-DAG: cmp.eq.s $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +000049; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
50; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +000051
52; 64-CMP-DAG: cmp.eq.s $[[T0:f[0-9]+]], $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +000053; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
54; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +000055
Simon Dardisba92b032016-09-09 11:06:01 +000056; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
57; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +000058; MM32R3-DAG: c.eq.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +000059; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +000060
61; MM32R6-DAG: cmp.eq.s $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +000062; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
63; MMR6-DAG: andi16 $2, $[[T1]], 1
64
Daniel Sanders0fa60412014-06-12 13:39:06 +000065 %1 = fcmp oeq float %a, %b
66 %2 = zext i1 %1 to i32
67 ret i32 %2
68}
69
70define i32 @ogt_f32(float %a, float %b) nounwind {
71; ALL-LABEL: ogt_f32:
72
Vasileios Kalintirise741eb22015-03-02 12:47:32 +000073; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +000074; 32-C-DAG: c.ule.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +000075; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +000076
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +000077; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +000078; 64-C-DAG: c.ule.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +000079; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +000080
Daniel Sandersdc067182014-07-09 10:40:20 +000081; 32-CMP-DAG: cmp.lt.s $[[T0:f[0-9]+]], $f14, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +000082; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
83; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +000084
Daniel Sandersdc067182014-07-09 10:40:20 +000085; 64-CMP-DAG: cmp.lt.s $[[T0:f[0-9]+]], $f13, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +000086; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
87; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +000088
Simon Dardisba92b032016-09-09 11:06:01 +000089; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
90; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +000091; MM32R3-DAG: c.ule.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +000092; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +000093
94; MM32R6-DAG: cmp.lt.s $[[T0:f[0-9]+]], $f14, $f12
Zlatko Buljancd242c12016-06-09 11:15:53 +000095; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
96; MMR6-DAG: andi16 $2, $[[T1]], 1
97
Daniel Sanders0fa60412014-06-12 13:39:06 +000098 %1 = fcmp ogt float %a, %b
99 %2 = zext i1 %1 to i32
100 ret i32 %2
101}
102
103define i32 @oge_f32(float %a, float %b) nounwind {
104; ALL-LABEL: oge_f32:
105
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000106; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000107; 32-C-DAG: c.ult.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000108; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000109
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000110; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000111; 64-C-DAG: c.ult.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000112; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000113
Daniel Sandersdc067182014-07-09 10:40:20 +0000114; 32-CMP-DAG: cmp.le.s $[[T0:f[0-9]+]], $f14, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000115; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
116; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000117
Daniel Sandersdc067182014-07-09 10:40:20 +0000118; 64-CMP-DAG: cmp.le.s $[[T0:f[0-9]+]], $f13, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000119; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
120; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000121
Simon Dardisba92b032016-09-09 11:06:01 +0000122; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
123; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000124; MM32R3-DAG: c.ult.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000125; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000126
127; MM32R6-DAG: cmp.le.s $[[T0:f[0-9]+]], $f14, $f12
Zlatko Buljancd242c12016-06-09 11:15:53 +0000128; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
129; MMR6-DAG: andi16 $2, $[[T1]], 1
130
Daniel Sanders0fa60412014-06-12 13:39:06 +0000131 %1 = fcmp oge float %a, %b
132 %2 = zext i1 %1 to i32
133 ret i32 %2
134}
135
136define i32 @olt_f32(float %a, float %b) nounwind {
137; ALL-LABEL: olt_f32:
138
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000139; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000140; 32-C-DAG: c.olt.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000141; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000142
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000143; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000144; 64-C-DAG: c.olt.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000145; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000146
Daniel Sandersdc067182014-07-09 10:40:20 +0000147; 32-CMP-DAG: cmp.lt.s $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000148; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
149; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000150
Daniel Sandersdc067182014-07-09 10:40:20 +0000151; 64-CMP-DAG: cmp.lt.s $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000152; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
153; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000154
Simon Dardisba92b032016-09-09 11:06:01 +0000155; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
156; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000157; MM32R3-DAG: c.olt.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000158; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000159
160; MM32R6-DAG: cmp.lt.s $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000161; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
162; MMR6-DAG: andi16 $2, $[[T1]], 1
163
Daniel Sanders0fa60412014-06-12 13:39:06 +0000164 %1 = fcmp olt float %a, %b
165 %2 = zext i1 %1 to i32
166 ret i32 %2
167}
168
169define i32 @ole_f32(float %a, float %b) nounwind {
170; ALL-LABEL: ole_f32:
171
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000172; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000173; 32-C-DAG: c.ole.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000174; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000175
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000176; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000177; 64-C-DAG: c.ole.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000178; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000179
Daniel Sandersdc067182014-07-09 10:40:20 +0000180; 32-CMP-DAG: cmp.le.s $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000181; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
182; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000183
Daniel Sandersdc067182014-07-09 10:40:20 +0000184; 64-CMP-DAG: cmp.le.s $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000185; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
186; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000187
Simon Dardisba92b032016-09-09 11:06:01 +0000188; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
189; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000190; MM32R3-DAG: c.ole.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000191; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000192
193; MM32R6-DAG: cmp.le.s $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000194; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
195; MMR6-DAG: andi16 $2, $[[T1]], 1
196
Daniel Sanders0fa60412014-06-12 13:39:06 +0000197 %1 = fcmp ole float %a, %b
198 %2 = zext i1 %1 to i32
199 ret i32 %2
200}
201
202define i32 @one_f32(float %a, float %b) nounwind {
203; ALL-LABEL: one_f32:
204
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000205; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000206; 32-C-DAG: c.ueq.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000207; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000208
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000209; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000210; 64-C-DAG: c.ueq.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000211; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000212
213; 32-CMP-DAG: cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f14
214; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000215; 32-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
216; 32-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000217
218; 64-CMP-DAG: cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f13
219; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000220; 64-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
221; 64-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000222
Simon Dardisba92b032016-09-09 11:06:01 +0000223; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
224; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000225; MM32R3-DAG: c.ueq.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000226; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000227
228; MM32R6-DAG: cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000229; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Zlatko Buljand2ed9c62016-06-15 07:46:24 +0000230; MMR6-DAG: not $[[T2:[0-9]+]], $[[T1]]
Zlatko Buljancd242c12016-06-09 11:15:53 +0000231; MMR6-DAG: andi16 $2, $[[T2]], 1
232
Daniel Sanders0fa60412014-06-12 13:39:06 +0000233 %1 = fcmp one float %a, %b
234 %2 = zext i1 %1 to i32
235 ret i32 %2
236}
237
238define i32 @ord_f32(float %a, float %b) nounwind {
239; ALL-LABEL: ord_f32:
240
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000241; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000242; 32-C-DAG: c.un.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000243; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000244
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000245; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000246; 64-C-DAG: c.un.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000247; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000248
249; 32-CMP-DAG: cmp.un.s $[[T0:f[0-9]+]], $f12, $f14
250; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000251; 32-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
252; 32-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000253
254; 64-CMP-DAG: cmp.un.s $[[T0:f[0-9]+]], $f12, $f13
255; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000256; 64-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
257; 64-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000258
Simon Dardisba92b032016-09-09 11:06:01 +0000259; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
260; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000261; MM32R3-DAG: c.un.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000262; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000263
264; MM32R6-DAG: cmp.un.s $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000265; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Zlatko Buljand2ed9c62016-06-15 07:46:24 +0000266; MMR6-DAG: not $[[T2:[0-9]+]], $[[T1]]
Zlatko Buljancd242c12016-06-09 11:15:53 +0000267; MMR6-DAG: andi16 $2, $[[T2]], 1
268
Daniel Sanders0fa60412014-06-12 13:39:06 +0000269 %1 = fcmp ord float %a, %b
270 %2 = zext i1 %1 to i32
271 ret i32 %2
272}
273
274define i32 @ueq_f32(float %a, float %b) nounwind {
275; ALL-LABEL: ueq_f32:
276
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000277; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000278; 32-C-DAG: c.ueq.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000279; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000280
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000281; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000282; 64-C-DAG: c.ueq.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000283; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000284
285; 32-CMP-DAG: cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000286; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
287; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000288
289; 64-CMP-DAG: cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000290; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
291; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000292
Simon Dardisba92b032016-09-09 11:06:01 +0000293; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
294; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000295; MM32R3-DAG: c.ueq.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000296; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000297
298; MM32R6-DAG: cmp.ueq.s $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000299; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
300; MMR6-DAG: andi16 $2, $[[T1]], 1
301
Daniel Sanders0fa60412014-06-12 13:39:06 +0000302 %1 = fcmp ueq float %a, %b
303 %2 = zext i1 %1 to i32
304 ret i32 %2
305}
306
307define i32 @ugt_f32(float %a, float %b) nounwind {
308; ALL-LABEL: ugt_f32:
309
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000310; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000311; 32-C-DAG: c.ole.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000312; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000313
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000314; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000315; 64-C-DAG: c.ole.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000316; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000317
318; 32-CMP-DAG: cmp.ult.s $[[T0:f[0-9]+]], $f14, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000319; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
320; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000321
322; 64-CMP-DAG: cmp.ult.s $[[T0:f[0-9]+]], $f13, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000323; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
324; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000325
Simon Dardisba92b032016-09-09 11:06:01 +0000326; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
327; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000328; MM32R3-DAG: c.ole.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000329; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000330
331; MM32R6-DAG: cmp.ult.s $[[T0:f[0-9]+]], $f14, $f12
Zlatko Buljancd242c12016-06-09 11:15:53 +0000332; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
333; MMR6-DAG: andi16 $2, $[[T1]], 1
334
Daniel Sanders0fa60412014-06-12 13:39:06 +0000335 %1 = fcmp ugt float %a, %b
336 %2 = zext i1 %1 to i32
337 ret i32 %2
338}
339
340define i32 @uge_f32(float %a, float %b) nounwind {
341; ALL-LABEL: uge_f32:
342
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000343; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000344; 32-C-DAG: c.olt.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000345; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000346
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000347; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000348; 64-C-DAG: c.olt.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000349; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000350
351; 32-CMP-DAG: cmp.ule.s $[[T0:f[0-9]+]], $f14, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000352; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
353; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000354
355; 64-CMP-DAG: cmp.ule.s $[[T0:f[0-9]+]], $f13, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000356; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
357; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000358
Simon Dardisba92b032016-09-09 11:06:01 +0000359; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
360; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000361; MM32R3-DAG: c.olt.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000362; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000363
364; MM32R6-DAG: cmp.ule.s $[[T0:f[0-9]+]], $f14, $f12
Zlatko Buljancd242c12016-06-09 11:15:53 +0000365; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
366; MMR6-DAG: andi16 $2, $[[T1]], 1
367
Daniel Sanders0fa60412014-06-12 13:39:06 +0000368 %1 = fcmp uge float %a, %b
369 %2 = zext i1 %1 to i32
370 ret i32 %2
371}
372
373define i32 @ult_f32(float %a, float %b) nounwind {
374; ALL-LABEL: ult_f32:
375
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000376; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000377; 32-C-DAG: c.ult.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000378; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000379
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000380; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000381; 64-C-DAG: c.ult.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000382; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000383
384; 32-CMP-DAG: cmp.ult.s $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000385; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
386; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000387
388; 64-CMP-DAG: cmp.ult.s $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000389; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
390; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000391
Simon Dardisba92b032016-09-09 11:06:01 +0000392; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
393; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000394; MM32R3-DAG: c.ult.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000395; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000396
397; MM32R6-DAG: cmp.ult.s $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000398; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
399; MMR6-DAG: andi16 $2, $[[T1]], 1
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000400
Daniel Sanders0fa60412014-06-12 13:39:06 +0000401 %1 = fcmp ult float %a, %b
402 %2 = zext i1 %1 to i32
403 ret i32 %2
404}
405
406define i32 @ule_f32(float %a, float %b) nounwind {
407; ALL-LABEL: ule_f32:
408
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000409; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000410; 32-C-DAG: c.ule.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000411; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000412
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000413; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000414; 64-C-DAG: c.ule.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000415; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000416
417; 32-CMP-DAG: cmp.ule.s $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000418; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
419; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000420
421; 64-CMP-DAG: cmp.ule.s $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000422; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
423; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000424
Simon Dardisba92b032016-09-09 11:06:01 +0000425; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
426; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000427; MM32R3-DAG: c.ule.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000428; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000429
430; MM32R6-DAG: cmp.ule.s $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000431; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
432; MMR6-DAG: andi16 $2, $[[T1]], 1
433
Daniel Sanders0fa60412014-06-12 13:39:06 +0000434 %1 = fcmp ule float %a, %b
435 %2 = zext i1 %1 to i32
436 ret i32 %2
437}
438
439define i32 @une_f32(float %a, float %b) nounwind {
440; ALL-LABEL: une_f32:
441
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000442; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000443; 32-C-DAG: c.eq.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000444; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000445
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000446; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000447; 64-C-DAG: c.eq.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000448; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000449
450; 32-CMP-DAG: cmp.eq.s $[[T0:f[0-9]+]], $f12, $f14
451; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000452; 32-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
453; 32-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000454
455; 64-CMP-DAG: cmp.eq.s $[[T0:f[0-9]+]], $f12, $f13
456; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000457; 64-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
458; 64-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000459
Simon Dardisba92b032016-09-09 11:06:01 +0000460; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
461; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000462; MM32R3-DAG: c.eq.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000463; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000464
465; MM32R6-DAG: cmp.eq.s $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000466; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Zlatko Buljand2ed9c62016-06-15 07:46:24 +0000467; MMR6-DAG: not $[[T2:[0-9]+]], $[[T1]]
Zlatko Buljancd242c12016-06-09 11:15:53 +0000468; MMR6-DAG: andi16 $2, $[[T2]], 1
469
Daniel Sanders0fa60412014-06-12 13:39:06 +0000470 %1 = fcmp une float %a, %b
471 %2 = zext i1 %1 to i32
472 ret i32 %2
473}
474
475define i32 @uno_f32(float %a, float %b) nounwind {
476; ALL-LABEL: uno_f32:
477
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000478; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000479; 32-C-DAG: c.un.s $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000480; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000481
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000482; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000483; 64-C-DAG: c.un.s $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000484; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000485
486; 32-CMP-DAG: cmp.un.s $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000487; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
488; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000489
490; 64-CMP-DAG: cmp.un.s $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000491; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
492; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000493
Simon Dardisba92b032016-09-09 11:06:01 +0000494; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
495; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000496; MM32R3-DAG: c.un.s $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000497; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000498
499; MM32R6-DAG: cmp.un.s $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000500; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
501; MMR6-DAG: andi16 $2, $[[T1]], 1
502
Daniel Sanders0fa60412014-06-12 13:39:06 +0000503 %1 = fcmp uno float %a, %b
504 %2 = zext i1 %1 to i32
505 ret i32 %2
506}
507
508define i32 @true_f32(float %a, float %b) nounwind {
509; ALL-LABEL: true_f32:
Zlatko Buljancd242c12016-06-09 11:15:53 +0000510; 32-C: addiu $2, $zero, 1
511
512; 32-CMP: addiu $2, $zero, 1
513
514; 64-C: addiu $2, $zero, 1
515
516; 64-CMP: addiu $2, $zero, 1
517
518; MM-DAG: li16 $2, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000519
520 %1 = fcmp true float %a, %b
521 %2 = zext i1 %1 to i32
522 ret i32 %2
523}
524
525define i32 @false_f64(double %a, double %b) nounwind {
526; ALL-LABEL: false_f64:
Zlatko Buljancd242c12016-06-09 11:15:53 +0000527; 32-C: addiu $2, $zero, 0
528
529; 32-CMP: addiu $2, $zero, 0
530
531; 64-C: addiu $2, $zero, 0
532
533; 64-CMP: addiu $2, $zero, 0
534
Simon Dardis61897522016-07-25 09:57:28 +0000535; MM-DAG: li16 $2, 0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000536
537 %1 = fcmp false double %a, %b
538 %2 = zext i1 %1 to i32
539 ret i32 %2
540}
541
542define i32 @oeq_f64(double %a, double %b) nounwind {
543; ALL-LABEL: oeq_f64:
544
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000545; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000546; 32-C-DAG: c.eq.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000547; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000548
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000549; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000550; 64-C-DAG: c.eq.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000551; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000552
553; 32-CMP-DAG: cmp.eq.d $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000554; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
555; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000556
557; 64-CMP-DAG: cmp.eq.d $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000558; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
559; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000560
Simon Dardisba92b032016-09-09 11:06:01 +0000561; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
562; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000563; MM32R3-DAG: c.eq.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000564; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000565
566; MM32R6-DAG: cmp.eq.d $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000567; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
568; MMR6-DAG: andi16 $2, $[[T1]], 1
569
Daniel Sanders0fa60412014-06-12 13:39:06 +0000570 %1 = fcmp oeq double %a, %b
571 %2 = zext i1 %1 to i32
572 ret i32 %2
573}
574
575define i32 @ogt_f64(double %a, double %b) nounwind {
576; ALL-LABEL: ogt_f64:
577
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000578; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000579; 32-C-DAG: c.ule.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000580; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000581
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000582; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000583; 64-C-DAG: c.ule.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000584; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000585
Daniel Sandersdc067182014-07-09 10:40:20 +0000586; 32-CMP-DAG: cmp.lt.d $[[T0:f[0-9]+]], $f14, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000587; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
588; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000589
Daniel Sandersdc067182014-07-09 10:40:20 +0000590; 64-CMP-DAG: cmp.lt.d $[[T0:f[0-9]+]], $f13, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000591; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
592; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000593
Simon Dardisba92b032016-09-09 11:06:01 +0000594; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
595; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000596; MM32R3-DAG: c.ule.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000597; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000598
599; MM32R6-DAG: cmp.lt.d $[[T0:f[0-9]+]], $f14, $f12
Zlatko Buljancd242c12016-06-09 11:15:53 +0000600; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
601; MMR6-DAG: andi16 $2, $[[T1]], 1
602
Daniel Sanders0fa60412014-06-12 13:39:06 +0000603 %1 = fcmp ogt double %a, %b
604 %2 = zext i1 %1 to i32
605 ret i32 %2
606}
607
608define i32 @oge_f64(double %a, double %b) nounwind {
609; ALL-LABEL: oge_f64:
610
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000611; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000612; 32-C-DAG: c.ult.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000613; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000614
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000615; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000616; 64-C-DAG: c.ult.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000617; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000618
Daniel Sandersdc067182014-07-09 10:40:20 +0000619; 32-CMP-DAG: cmp.le.d $[[T0:f[0-9]+]], $f14, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000620; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
621; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000622
Daniel Sandersdc067182014-07-09 10:40:20 +0000623; 64-CMP-DAG: cmp.le.d $[[T0:f[0-9]+]], $f13, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000624; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
625; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000626
Simon Dardisba92b032016-09-09 11:06:01 +0000627; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
628; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000629; MM32R3-DAG: c.ult.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000630; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000631
632; MM32R6-DAG: cmp.le.d $[[T0:f[0-9]+]], $f14, $f12
Zlatko Buljancd242c12016-06-09 11:15:53 +0000633; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
634; MMR6-DAG: andi16 $2, $[[T1]], 1
635
Daniel Sanders0fa60412014-06-12 13:39:06 +0000636 %1 = fcmp oge double %a, %b
637 %2 = zext i1 %1 to i32
638 ret i32 %2
639}
640
641define i32 @olt_f64(double %a, double %b) nounwind {
642; ALL-LABEL: olt_f64:
643
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000644; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000645; 32-C-DAG: c.olt.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000646; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000647
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000648; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000649; 64-C-DAG: c.olt.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000650; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000651
Daniel Sandersdc067182014-07-09 10:40:20 +0000652; 32-CMP-DAG: cmp.lt.d $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000653; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
654; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000655
Daniel Sandersdc067182014-07-09 10:40:20 +0000656; 64-CMP-DAG: cmp.lt.d $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000657; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
658; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000659
Simon Dardisba92b032016-09-09 11:06:01 +0000660; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
661; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000662; MM32R3-DAG: c.olt.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000663; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000664
665; MM32R6-DAG: cmp.lt.d $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000666; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
667; MMR6-DAG: andi16 $2, $[[T1]], 1
668
Daniel Sanders0fa60412014-06-12 13:39:06 +0000669 %1 = fcmp olt double %a, %b
670 %2 = zext i1 %1 to i32
671 ret i32 %2
672}
673
674define i32 @ole_f64(double %a, double %b) nounwind {
675; ALL-LABEL: ole_f64:
676
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000677; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000678; 32-C-DAG: c.ole.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000679; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000680
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000681; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000682; 64-C-DAG: c.ole.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000683; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000684
Daniel Sandersdc067182014-07-09 10:40:20 +0000685; 32-CMP-DAG: cmp.le.d $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000686; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
687; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000688
Daniel Sandersdc067182014-07-09 10:40:20 +0000689; 64-CMP-DAG: cmp.le.d $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000690; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
691; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000692
Simon Dardisba92b032016-09-09 11:06:01 +0000693; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
694; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000695; MM32R3-DAG: c.ole.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000696; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000697
698; MM32R6-DAG: cmp.le.d $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000699; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
700; MMR6-DAG: andi16 $2, $[[T1]], 1
701
Daniel Sanders0fa60412014-06-12 13:39:06 +0000702 %1 = fcmp ole double %a, %b
703 %2 = zext i1 %1 to i32
704 ret i32 %2
705}
706
707define i32 @one_f64(double %a, double %b) nounwind {
708; ALL-LABEL: one_f64:
709
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000710; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000711; 32-C-DAG: c.ueq.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000712; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000713
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000714; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000715; 64-C-DAG: c.ueq.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000716; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000717
718; 32-CMP-DAG: cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f14
719; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000720; 32-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
721; 32-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000722
723; 64-CMP-DAG: cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f13
724; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000725; 64-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
726; 64-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000727
Simon Dardisba92b032016-09-09 11:06:01 +0000728; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
729; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000730; MM32R3-DAG: c.ueq.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000731; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000732
733; MM32R6-DAG: cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000734; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Zlatko Buljand2ed9c62016-06-15 07:46:24 +0000735; MMR6-DAG: not $[[T2:[0-9]+]], $[[T1]]
Zlatko Buljancd242c12016-06-09 11:15:53 +0000736; MMR6-DAG: andi16 $2, $[[T2]], 1
737
Daniel Sanders0fa60412014-06-12 13:39:06 +0000738 %1 = fcmp one double %a, %b
739 %2 = zext i1 %1 to i32
740 ret i32 %2
741}
742
743define i32 @ord_f64(double %a, double %b) nounwind {
744; ALL-LABEL: ord_f64:
745
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000746; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000747; 32-C-DAG: c.un.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000748; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000749
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000750; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000751; 64-C-DAG: c.un.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000752; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000753
754; 32-CMP-DAG: cmp.un.d $[[T0:f[0-9]+]], $f12, $f14
755; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000756; 32-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
757; 32-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000758
759; 64-CMP-DAG: cmp.un.d $[[T0:f[0-9]+]], $f12, $f13
760; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000761; 64-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
762; 64-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000763
Simon Dardisba92b032016-09-09 11:06:01 +0000764; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
765; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000766; MM32R3-DAG: c.un.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000767; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000768
769; MM32R6-DAG: cmp.un.d $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000770; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Zlatko Buljand2ed9c62016-06-15 07:46:24 +0000771; MMR6-DAG: not $[[T2:[0-9]+]], $[[T1]]
Zlatko Buljancd242c12016-06-09 11:15:53 +0000772; MMR6-DAG: andi16 $2, $[[T2]], 1
773
Daniel Sanders0fa60412014-06-12 13:39:06 +0000774 %1 = fcmp ord double %a, %b
775 %2 = zext i1 %1 to i32
776 ret i32 %2
777}
778
779define i32 @ueq_f64(double %a, double %b) nounwind {
780; ALL-LABEL: ueq_f64:
781
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000782; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000783; 32-C-DAG: c.ueq.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000784; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000785
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000786; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000787; 64-C-DAG: c.ueq.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000788; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000789
790; 32-CMP-DAG: cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000791; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
792; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000793
794; 64-CMP-DAG: cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000795; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
796; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000797
Simon Dardisba92b032016-09-09 11:06:01 +0000798; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
799; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000800; MM32R3-DAG: c.ueq.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000801; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000802
803; MM32R6-DAG: cmp.ueq.d $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000804; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
805; MMR6-DAG: andi16 $2, $[[T1]], 1
806
Daniel Sanders0fa60412014-06-12 13:39:06 +0000807 %1 = fcmp ueq double %a, %b
808 %2 = zext i1 %1 to i32
809 ret i32 %2
810}
811
812define i32 @ugt_f64(double %a, double %b) nounwind {
813; ALL-LABEL: ugt_f64:
814
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000815; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000816; 32-C-DAG: c.ole.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000817; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000818
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000819; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000820; 64-C-DAG: c.ole.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000821; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000822
823; 32-CMP-DAG: cmp.ult.d $[[T0:f[0-9]+]], $f14, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000824; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
825; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000826
827; 64-CMP-DAG: cmp.ult.d $[[T0:f[0-9]+]], $f13, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000828; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
829; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000830
Simon Dardisba92b032016-09-09 11:06:01 +0000831; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
832; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000833; MM32R3-DAG: c.ole.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000834; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000835
836; MM32R6-DAG: cmp.ult.d $[[T0:f[0-9]+]], $f14, $f12
Zlatko Buljancd242c12016-06-09 11:15:53 +0000837; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
838; MMR6-DAG: andi16 $2, $[[T1]], 1
839
Daniel Sanders0fa60412014-06-12 13:39:06 +0000840 %1 = fcmp ugt double %a, %b
841 %2 = zext i1 %1 to i32
842 ret i32 %2
843}
844
845define i32 @uge_f64(double %a, double %b) nounwind {
846; ALL-LABEL: uge_f64:
847
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000848; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000849; 32-C-DAG: c.olt.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000850; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000851
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000852; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000853; 64-C-DAG: c.olt.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000854; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000855
856; 32-CMP-DAG: cmp.ule.d $[[T0:f[0-9]+]], $f14, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000857; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
858; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000859
860; 64-CMP-DAG: cmp.ule.d $[[T0:f[0-9]+]], $f13, $f12
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000861; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
862; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000863
Simon Dardisba92b032016-09-09 11:06:01 +0000864; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
865; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000866; MM32R3-DAG: c.olt.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000867; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000868
869; MM32R6-DAG: cmp.ule.d $[[T0:f[0-9]+]], $f14, $f12
Zlatko Buljancd242c12016-06-09 11:15:53 +0000870; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
871; MMR6-DAG: andi16 $2, $[[T1]], 1
872
Daniel Sanders0fa60412014-06-12 13:39:06 +0000873 %1 = fcmp uge double %a, %b
874 %2 = zext i1 %1 to i32
875 ret i32 %2
876}
877
878define i32 @ult_f64(double %a, double %b) nounwind {
879; ALL-LABEL: ult_f64:
880
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000881; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000882; 32-C-DAG: c.ult.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000883; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000884
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000885; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000886; 64-C-DAG: c.ult.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000887; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000888
889; 32-CMP-DAG: cmp.ult.d $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000890; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
891; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000892
893; 64-CMP-DAG: cmp.ult.d $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000894; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
895; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000896
Simon Dardisba92b032016-09-09 11:06:01 +0000897; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
898; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000899; MM32R3-DAG: c.ult.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000900; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000901
902; MM32R6-DAG: cmp.ult.d $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000903; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
904; MMR6-DAG: andi16 $2, $[[T1]], 1
905
Daniel Sanders0fa60412014-06-12 13:39:06 +0000906 %1 = fcmp ult double %a, %b
907 %2 = zext i1 %1 to i32
908 ret i32 %2
909}
910
911define i32 @ule_f64(double %a, double %b) nounwind {
912; ALL-LABEL: ule_f64:
913
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000914; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000915; 32-C-DAG: c.ule.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000916; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000917
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000918; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000919; 64-C-DAG: c.ule.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000920; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000921
922; 32-CMP-DAG: cmp.ule.d $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000923; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
924; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000925
926; 64-CMP-DAG: cmp.ule.d $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000927; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
928; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000929
Simon Dardisba92b032016-09-09 11:06:01 +0000930; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
931; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000932; MM32R3-DAG: c.ule.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000933; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000934
935; MM32R6-DAG: cmp.ule.d $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000936; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
937; MMR6-DAG: andi16 $2, $[[T1]], 1
938
Daniel Sanders0fa60412014-06-12 13:39:06 +0000939 %1 = fcmp ule double %a, %b
940 %2 = zext i1 %1 to i32
941 ret i32 %2
942}
943
944define i32 @une_f64(double %a, double %b) nounwind {
945; ALL-LABEL: une_f64:
946
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000947; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000948; 32-C-DAG: c.eq.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000949; 32-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000950
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000951; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000952; 64-C-DAG: c.eq.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000953; 64-C: movt $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000954
955; 32-CMP-DAG: cmp.eq.d $[[T0:f[0-9]+]], $f12, $f14
956; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000957; 32-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
958; 32-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000959
960; 64-CMP-DAG: cmp.eq.d $[[T0:f[0-9]+]], $f12, $f13
961; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000962; 64-CMP-DAG: not $[[T2:[0-9]+]], $[[T1]]
963; 64-CMP-DAG: andi $2, $[[T2]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000964
Simon Dardisba92b032016-09-09 11:06:01 +0000965; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
966; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +0000967; MM32R3-DAG: c.eq.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +0000968; MM32R3-DAG: movt $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +0000969
970; MM32R6-DAG: cmp.eq.d $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +0000971; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
Zlatko Buljand2ed9c62016-06-15 07:46:24 +0000972; MMR6-DAG: not $[[T2:[0-9]+]], $[[T1]]
Zlatko Buljancd242c12016-06-09 11:15:53 +0000973; MMR6-DAG: andi16 $2, $[[T2]], 1
974
Daniel Sanders0fa60412014-06-12 13:39:06 +0000975 %1 = fcmp une double %a, %b
976 %2 = zext i1 %1 to i32
977 ret i32 %2
978}
979
980define i32 @uno_f64(double %a, double %b) nounwind {
981; ALL-LABEL: uno_f64:
982
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000983; 32-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000984; 32-C-DAG: c.un.d $f12, $f14
Vasileios Kalintirise741eb22015-03-02 12:47:32 +0000985; 32-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000986
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000987; 64-C-DAG: addiu $2, $zero, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000988; 64-C-DAG: c.un.d $f12, $f13
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +0000989; 64-C: movf $2, $zero, $fcc0
Daniel Sanders0fa60412014-06-12 13:39:06 +0000990
991; 32-CMP-DAG: cmp.un.d $[[T0:f[0-9]+]], $f12, $f14
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000992; 32-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
993; 32-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000994
995; 64-CMP-DAG: cmp.un.d $[[T0:f[0-9]+]], $f12, $f13
Daniel Sanderscbd44c52014-07-10 10:18:12 +0000996; 64-CMP-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
997; 64-CMP-DAG: andi $2, $[[T1]], 1
Daniel Sanders0fa60412014-06-12 13:39:06 +0000998
Simon Dardisba92b032016-09-09 11:06:01 +0000999; MM32R3-DAG: li16 $[[T0:[0-9]+]], 0
1000; MM32R3-DAG: li16 $[[T1:[0-9]+]], 1
Zlatko Buljancd242c12016-06-09 11:15:53 +00001001; MM32R3-DAG: c.un.d $f12, $f14
Simon Dardisba92b032016-09-09 11:06:01 +00001002; MM32R3-DAG: movf $[[T1]], $[[T0]], $fcc0
Zlatko Buljancd242c12016-06-09 11:15:53 +00001003
1004; MM32R6-DAG: cmp.un.d $[[T0:f[0-9]+]], $f12, $f14
Zlatko Buljancd242c12016-06-09 11:15:53 +00001005; MMR6-DAG: mfc1 $[[T1:[0-9]+]], $[[T0]]
1006; MMR6-DAG: andi16 $2, $[[T1]], 1
1007
Daniel Sanders0fa60412014-06-12 13:39:06 +00001008 %1 = fcmp uno double %a, %b
1009 %2 = zext i1 %1 to i32
1010 ret i32 %2
1011}
1012
1013define i32 @true_f64(double %a, double %b) nounwind {
1014; ALL-LABEL: true_f64:
Zlatko Buljancd242c12016-06-09 11:15:53 +00001015; 32-C: addiu $2, $zero, 1
1016
1017; 32-CMP: addiu $2, $zero, 1
1018
1019; 64-C: addiu $2, $zero, 1
1020
1021; 64-CMP: addiu $2, $zero, 1
1022
1023; MM-DAG: li16 $2, 1
Daniel Sanders0fa60412014-06-12 13:39:06 +00001024
1025 %1 = fcmp true double %a, %b
1026 %2 = zext i1 %1 to i32
1027 ret i32 %2
1028}
Daniel Sanders023c8062015-01-15 15:41:03 +00001029
1030; The optimizers sometimes produce setlt instead of setolt/setult.
1031define float @bug1_f32(float %angle, float %at) #0 {
1032entry:
1033; ALL-LABEL: bug1_f32:
1034
1035; 32-C-DAG: add.s $[[T0:f[0-9]+]], $f14, $f12
1036; 32-C-DAG: lwc1 $[[T1:f[0-9]+]], %lo($CPI32_0)(
1037; 32-C-DAG: c.ole.s $[[T0]], $[[T1]]
1038; 32-C-DAG: bc1t
1039
1040; 32-CMP-DAG: add.s $[[T0:f[0-9]+]], $f14, $f12
1041; 32-CMP-DAG: lwc1 $[[T1:f[0-9]+]], %lo($CPI32_0)(
1042; 32-CMP-DAG: cmp.le.s $[[T2:f[0-9]+]], $[[T0]], $[[T1]]
1043; 32-CMP-DAG: mfc1 $[[T3:[0-9]+]], $[[T2]]
1044; FIXME: This instruction is redundant.
1045; 32-CMP-DAG: andi $[[T4:[0-9]+]], $[[T3]], 1
Daniel Sanderse8efff32016-03-14 16:24:05 +00001046; 32-CMP-DAG: bnezc $[[T4]],
Daniel Sanders023c8062015-01-15 15:41:03 +00001047
1048; 64-C-DAG: add.s $[[T0:f[0-9]+]], $f13, $f12
Simon Dardisca74dd72017-01-27 11:36:52 +00001049; 64-C-DAG: lwc1 $[[T1:f[0-9]+]], %lo(.LCPI32_0)(
Daniel Sanders023c8062015-01-15 15:41:03 +00001050; 64-C-DAG: c.ole.s $[[T0]], $[[T1]]
1051; 64-C-DAG: bc1t
1052
1053; 64-CMP-DAG: add.s $[[T0:f[0-9]+]], $f13, $f12
Simon Dardisca74dd72017-01-27 11:36:52 +00001054; 64-CMP-DAG: lwc1 $[[T1:f[0-9]+]], %lo(.LCPI32_0)(
Daniel Sanders023c8062015-01-15 15:41:03 +00001055; 64-CMP-DAG: cmp.le.s $[[T2:f[0-9]+]], $[[T0]], $[[T1]]
1056; 64-CMP-DAG: mfc1 $[[T3:[0-9]+]], $[[T2]]
1057; FIXME: This instruction is redundant.
1058; 64-CMP-DAG: andi $[[T4:[0-9]+]], $[[T3]], 1
Daniel Sanderse8efff32016-03-14 16:24:05 +00001059; 64-CMP-DAG: bnezc $[[T4]],
Daniel Sanders023c8062015-01-15 15:41:03 +00001060
Zlatko Buljancd242c12016-06-09 11:15:53 +00001061; MM32R3-DAG: add.s $[[T0:f[0-9]+]], $f14, $f12
1062; MM32R3-DAG: lui $[[T1:[0-9]+]], %hi($CPI32_0)
1063; MM32R3-DAG: lwc1 $[[T2:f[0-9]+]], %lo($CPI32_0)($[[T1]])
1064; MM32R3-DAG: c.ole.s $[[T0]], $[[T2]]
1065; MM32R3-DAG: bc1t
1066
1067; MM32R6-DAG: add.s $[[T0:f[0-9]+]], $f14, $f12
1068; MM32R6-DAG: lui $[[T1:[0-9]+]], %hi($CPI32_0)
1069; MM32R6-DAG: lwc1 $[[T2:f[0-9]+]], %lo($CPI32_0)($[[T1]])
1070; MM32R6-DAG: cmp.le.s $[[T3:f[0-9]+]], $[[T0]], $[[T2]]
1071; MM32R6-DAG: mfc1 $[[T4:[0-9]+]], $[[T3:f[0-9]+]]
1072; MM32R6-DAG: andi16 $[[T5:[0-9]+]], $[[T4]], 1
Simon Dardiseb5bfd92017-11-23 12:38:04 +00001073; MM32R6-DAG: bnezc $[[T5]],
Zlatko Buljancd242c12016-06-09 11:15:53 +00001074
Daniel Sanders023c8062015-01-15 15:41:03 +00001075 %add = fadd fast float %at, %angle
1076 %cmp = fcmp ogt float %add, 1.000000e+00
1077 br i1 %cmp, label %if.then, label %if.end
1078
1079if.then:
1080 %sub = fadd fast float %add, -1.000000e+00
1081 br label %if.end
1082
1083if.end:
1084 %theta.0 = phi float [ %sub, %if.then ], [ %add, %entry ]
1085 ret float %theta.0
1086}
1087
1088; The optimizers sometimes produce setlt instead of setolt/setult.
1089define double @bug1_f64(double %angle, double %at) #0 {
1090entry:
1091; ALL-LABEL: bug1_f64:
1092
1093; 32-C-DAG: add.d $[[T0:f[0-9]+]], $f14, $f12
1094; 32-C-DAG: ldc1 $[[T1:f[0-9]+]], %lo($CPI33_0)(
1095; 32-C-DAG: c.ole.d $[[T0]], $[[T1]]
1096; 32-C-DAG: bc1t
1097
1098; 32-CMP-DAG: add.d $[[T0:f[0-9]+]], $f14, $f12
1099; 32-CMP-DAG: ldc1 $[[T1:f[0-9]+]], %lo($CPI33_0)(
1100; 32-CMP-DAG: cmp.le.d $[[T2:f[0-9]+]], $[[T0]], $[[T1]]
1101; 32-CMP-DAG: mfc1 $[[T3:[0-9]+]], $[[T2]]
1102; FIXME: This instruction is redundant.
1103; 32-CMP-DAG: andi $[[T4:[0-9]+]], $[[T3]], 1
Daniel Sanderse8efff32016-03-14 16:24:05 +00001104; 32-CMP-DAG: bnezc $[[T4]],
Daniel Sanders023c8062015-01-15 15:41:03 +00001105
1106; 64-C-DAG: add.d $[[T0:f[0-9]+]], $f13, $f12
Simon Dardisca74dd72017-01-27 11:36:52 +00001107; 64-C-DAG: ldc1 $[[T1:f[0-9]+]], %lo(.LCPI33_0)(
Daniel Sanders023c8062015-01-15 15:41:03 +00001108; 64-C-DAG: c.ole.d $[[T0]], $[[T1]]
1109; 64-C-DAG: bc1t
1110
1111; 64-CMP-DAG: add.d $[[T0:f[0-9]+]], $f13, $f12
Simon Dardisca74dd72017-01-27 11:36:52 +00001112; 64-CMP-DAG: ldc1 $[[T1:f[0-9]+]], %lo(.LCPI33_0)(
Daniel Sanders023c8062015-01-15 15:41:03 +00001113; 64-CMP-DAG: cmp.le.d $[[T2:f[0-9]+]], $[[T0]], $[[T1]]
1114; 64-CMP-DAG: mfc1 $[[T3:[0-9]+]], $[[T2]]
1115; FIXME: This instruction is redundant.
1116; 64-CMP-DAG: andi $[[T4:[0-9]+]], $[[T3]], 1
Daniel Sanderse8efff32016-03-14 16:24:05 +00001117; 64-CMP-DAG: bnezc $[[T4]],
Daniel Sanders023c8062015-01-15 15:41:03 +00001118
Zlatko Buljancd242c12016-06-09 11:15:53 +00001119; MM32R3-DAG: add.d $[[T0:f[0-9]+]], $f14, $f12
1120; MM32R3-DAG: lui $[[T1:[0-9]+]], %hi($CPI33_0)
1121; MM32R3-DAG: ldc1 $[[T2:f[0-9]+]], %lo($CPI33_0)($[[T1]])
1122; MM32R3-DAG: c.ole.d $[[T0]], $[[T2]]
1123; MM32R3-DAG: bc1t
1124
1125; MM32R6-DAG: add.d $[[T0:f[0-9]+]], $f14, $f12
1126; MM32R6-DAG: lui $[[T1:[0-9]+]], %hi($CPI33_0)
1127; MM32R6-DAG: ldc1 $[[T2:f[0-9]+]], %lo($CPI33_0)($[[T1]])
1128; MM32R6-DAG: cmp.le.d $[[T3:f[0-9]+]], $[[T0]], $[[T2]]
1129; MM32R6-DAG: mfc1 $[[T4:[0-9]+]], $[[T3]]
1130; MM32R6-DAG: andi16 $[[T5:[0-9]+]], $[[T4]], 1
Simon Dardiseb5bfd92017-11-23 12:38:04 +00001131; MM32R6-DAG: bnezc $[[T5]],
Zlatko Buljancd242c12016-06-09 11:15:53 +00001132
Daniel Sanders023c8062015-01-15 15:41:03 +00001133 %add = fadd fast double %at, %angle
1134 %cmp = fcmp ogt double %add, 1.000000e+00
1135 br i1 %cmp, label %if.then, label %if.end
1136
1137if.then:
1138 %sub = fadd fast double %add, -1.000000e+00
1139 br label %if.end
1140
1141if.end:
1142 %theta.0 = phi double [ %sub, %if.then ], [ %add, %entry ]
1143 ret double %theta.0
1144}
1145
1146attributes #0 = { nounwind readnone "no-nans-fp-math"="true" }