• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips4 -mattr=+soft-float -O1 \
2; RUN:     -disable-mips-delay-filler < %s | FileCheck %s -check-prefixes=ALL,C_CC_FMT,PRER6
3; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips64 -mattr=+soft-float -O1 \
4; RUN:     -disable-mips-delay-filler < %s | FileCheck %s -check-prefixes=ALL,C_CC_FMT,PRER6
5; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips64r2 -mattr=+soft-float -O1 \
6; RUN:     -disable-mips-delay-filler < %s | FileCheck %s -check-prefixes=ALL,C_CC_FMT,PRER6
7; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips64r6 -mattr=+soft-float -O1 \
8; RUN:     -disable-mips-delay-filler < %s | FileCheck %s -check-prefixes=ALL,CMP_CC_FMT,R6
9
10@gld0 = external global fp128
11@gld1 = external global fp128
12@gld2 = external global fp128
13@gf1 = external global float
14@gd1 = external global double
15
16; ALL-LABEL: addLD:
17; ALL: ld $25, %call16(__addtf3)
18
19define fp128 @addLD() {
20entry:
21  %0 = load fp128, fp128* @gld0, align 16
22  %1 = load fp128, fp128* @gld1, align 16
23  %add = fadd fp128 %0, %1
24  ret fp128 %add
25}
26
27; ALL-LABEL: subLD:
28; ALL: ld $25, %call16(__subtf3)
29
30define fp128 @subLD() {
31entry:
32  %0 = load fp128, fp128* @gld0, align 16
33  %1 = load fp128, fp128* @gld1, align 16
34  %sub = fsub fp128 %0, %1
35  ret fp128 %sub
36}
37
38; ALL-LABEL: mulLD:
39; ALL: ld $25, %call16(__multf3)
40
41define fp128 @mulLD() {
42entry:
43  %0 = load fp128, fp128* @gld0, align 16
44  %1 = load fp128, fp128* @gld1, align 16
45  %mul = fmul fp128 %0, %1
46  ret fp128 %mul
47}
48
49; ALL-LABEL: divLD:
50; ALL: ld $25, %call16(__divtf3)
51
52define fp128 @divLD() {
53entry:
54  %0 = load fp128, fp128* @gld0, align 16
55  %1 = load fp128, fp128* @gld1, align 16
56  %div = fdiv fp128 %0, %1
57  ret fp128 %div
58}
59
60; ALL-LABEL: conv_LD_char:
61; ALL: ld $25, %call16(__floatsitf)
62
63define fp128 @conv_LD_char(i8 signext %a) {
64entry:
65  %conv = sitofp i8 %a to fp128
66  ret fp128 %conv
67}
68
69; ALL-LABEL: conv_LD_short:
70; ALL: ld $25, %call16(__floatsitf)
71
72define fp128 @conv_LD_short(i16 signext %a) {
73entry:
74  %conv = sitofp i16 %a to fp128
75  ret fp128 %conv
76}
77
78; ALL-LABEL: conv_LD_int:
79; ALL: ld $25, %call16(__floatsitf)
80
81define fp128 @conv_LD_int(i32 %a) {
82entry:
83  %conv = sitofp i32 %a to fp128
84  ret fp128 %conv
85}
86
87; ALL-LABEL: conv_LD_LL:
88; ALL: ld $25, %call16(__floatditf)
89
90define fp128 @conv_LD_LL(i64 %a) {
91entry:
92  %conv = sitofp i64 %a to fp128
93  ret fp128 %conv
94}
95
96; ALL-LABEL: conv_LD_UChar:
97; ALL: ld $25, %call16(__floatunsitf)
98
99define fp128 @conv_LD_UChar(i8 zeroext %a) {
100entry:
101  %conv = uitofp i8 %a to fp128
102  ret fp128 %conv
103}
104
105; ALL-LABEL: conv_LD_UShort:
106; ALL: ld $25, %call16(__floatunsitf)
107
108define fp128 @conv_LD_UShort(i16 zeroext %a) {
109entry:
110  %conv = uitofp i16 %a to fp128
111  ret fp128 %conv
112}
113
114; ALL-LABEL: conv_LD_UInt:
115; ALL: ld $25, %call16(__floatunsitf)
116
117define fp128 @conv_LD_UInt(i32 signext %a) {
118entry:
119  %conv = uitofp i32 %a to fp128
120  ret fp128 %conv
121}
122
123; ALL-LABEL: conv_LD_ULL:
124; ALL: ld $25, %call16(__floatunditf)
125
126define fp128 @conv_LD_ULL(i64 %a) {
127entry:
128  %conv = uitofp i64 %a to fp128
129  ret fp128 %conv
130}
131
132; ALL-LABEL: conv_char_LD:
133; ALL: ld $25, %call16(__fixtfsi)
134
135define signext i8 @conv_char_LD(fp128 %a) {
136entry:
137  %conv = fptosi fp128 %a to i8
138  ret i8 %conv
139}
140
141; ALL-LABEL: conv_short_LD:
142; ALL: ld $25, %call16(__fixtfsi)
143
144define signext i16 @conv_short_LD(fp128 %a) {
145entry:
146  %conv = fptosi fp128 %a to i16
147  ret i16 %conv
148}
149
150; ALL-LABEL: conv_int_LD:
151; ALL: ld $25, %call16(__fixtfsi)
152
153define i32 @conv_int_LD(fp128 %a) {
154entry:
155  %conv = fptosi fp128 %a to i32
156  ret i32 %conv
157}
158
159; ALL-LABEL: conv_LL_LD:
160; ALL: ld $25, %call16(__fixtfdi)
161
162define i64 @conv_LL_LD(fp128 %a) {
163entry:
164  %conv = fptosi fp128 %a to i64
165  ret i64 %conv
166}
167
168; ALL-LABEL: conv_UChar_LD:
169; ALL: ld $25, %call16(__fixtfsi)
170
171define zeroext i8 @conv_UChar_LD(fp128 %a) {
172entry:
173  %conv = fptoui fp128 %a to i8
174  ret i8 %conv
175}
176
177; ALL-LABEL: conv_UShort_LD:
178; ALL: ld $25, %call16(__fixtfsi)
179
180define zeroext i16 @conv_UShort_LD(fp128 %a) {
181entry:
182  %conv = fptoui fp128 %a to i16
183  ret i16 %conv
184}
185
186; ALL-LABEL: conv_UInt_LD:
187; ALL: ld $25, %call16(__fixunstfsi)
188
189define i32 @conv_UInt_LD(fp128 %a) {
190entry:
191  %conv = fptoui fp128 %a to i32
192  ret i32 %conv
193}
194
195; ALL-LABEL: conv_ULL_LD:
196; ALL: ld $25, %call16(__fixunstfdi)
197
198define i64 @conv_ULL_LD(fp128 %a) {
199entry:
200  %conv = fptoui fp128 %a to i64
201  ret i64 %conv
202}
203
204; ALL-LABEL: conv_LD_float:
205; ALL: ld $25, %call16(__extendsftf2)
206
207define fp128 @conv_LD_float(float %a) {
208entry:
209  %conv = fpext float %a to fp128
210  ret fp128 %conv
211}
212
213; ALL-LABEL: conv_LD_double:
214; ALL: ld $25, %call16(__extenddftf2)
215
216define fp128 @conv_LD_double(double %a) {
217entry:
218  %conv = fpext double %a to fp128
219  ret fp128 %conv
220}
221
222; ALL-LABEL: conv_float_LD:
223; ALL: ld $25, %call16(__trunctfsf2)
224
225define float @conv_float_LD(fp128 %a) {
226entry:
227  %conv = fptrunc fp128 %a to float
228  ret float %conv
229}
230
231; ALL-LABEL: conv_double_LD:
232; ALL: ld $25, %call16(__trunctfdf2)
233
234define double @conv_double_LD(fp128 %a) {
235entry:
236  %conv = fptrunc fp128 %a to double
237  ret double %conv
238}
239
240; ALL-LABEL:             libcall1_fabsl:
241; ALL-DAG: ld      $[[R0:[0-9]+]], 8($[[R4:[0-9]+]])
242; ALL-DAG: daddiu  $[[R1:[0-9]+]], $zero, 1
243; ALL-DAG: dsll    $[[R2:[0-9]+]], $[[R1]], 63
244; ALL-DAG: daddiu  $[[R3:[0-9]+]], $[[R2]], -1
245; ALL-DAG: and     $4, $[[R0]], $[[R3]]
246; ALL-DAG: ld      $2, 0($[[R4]])
247
248define fp128 @libcall1_fabsl() {
249entry:
250  %0 = load fp128, fp128* @gld0, align 16
251  %call = tail call fp128 @fabsl(fp128 %0) nounwind readnone
252  ret fp128 %call
253}
254
255declare fp128 @fabsl(fp128) #1
256
257; ALL-LABEL: libcall1_ceill:
258; ALL: ld $25, %call16(ceill)
259
260define fp128 @libcall1_ceill() {
261entry:
262  %0 = load fp128, fp128* @gld0, align 16
263  %call = tail call fp128 @ceill(fp128 %0) nounwind readnone
264  ret fp128 %call
265}
266
267declare fp128 @ceill(fp128) #1
268
269; ALL-LABEL: libcall1_sinl:
270; ALL: ld $25, %call16(sinl)
271
272define fp128 @libcall1_sinl() {
273entry:
274  %0 = load fp128, fp128* @gld0, align 16
275  %call = tail call fp128 @sinl(fp128 %0) nounwind
276  ret fp128 %call
277}
278
279declare fp128 @sinl(fp128) #2
280
281; ALL-LABEL: libcall1_cosl:
282; ALL: ld $25, %call16(cosl)
283
284define fp128 @libcall1_cosl() {
285entry:
286  %0 = load fp128, fp128* @gld0, align 16
287  %call = tail call fp128 @cosl(fp128 %0) nounwind
288  ret fp128 %call
289}
290
291declare fp128 @cosl(fp128) #2
292
293; ALL-LABEL: libcall1_expl:
294; ALL: ld $25, %call16(expl)
295
296define fp128 @libcall1_expl() {
297entry:
298  %0 = load fp128, fp128* @gld0, align 16
299  %call = tail call fp128 @expl(fp128 %0) nounwind
300  ret fp128 %call
301}
302
303declare fp128 @expl(fp128) #2
304
305; ALL-LABEL: libcall1_exp2l:
306; ALL: ld $25, %call16(exp2l)
307
308define fp128 @libcall1_exp2l() {
309entry:
310  %0 = load fp128, fp128* @gld0, align 16
311  %call = tail call fp128 @exp2l(fp128 %0) nounwind
312  ret fp128 %call
313}
314
315declare fp128 @exp2l(fp128) #2
316
317; ALL-LABEL: libcall1_logl:
318; ALL: ld $25, %call16(logl)
319
320define fp128 @libcall1_logl() {
321entry:
322  %0 = load fp128, fp128* @gld0, align 16
323  %call = tail call fp128 @logl(fp128 %0) nounwind
324  ret fp128 %call
325}
326
327declare fp128 @logl(fp128) #2
328
329; ALL-LABEL: libcall1_log2l:
330; ALL: ld $25, %call16(log2l)
331
332define fp128 @libcall1_log2l() {
333entry:
334  %0 = load fp128, fp128* @gld0, align 16
335  %call = tail call fp128 @log2l(fp128 %0) nounwind
336  ret fp128 %call
337}
338
339declare fp128 @log2l(fp128) #2
340
341; ALL-LABEL: libcall1_log10l:
342; ALL: ld $25, %call16(log10l)
343
344define fp128 @libcall1_log10l() {
345entry:
346  %0 = load fp128, fp128* @gld0, align 16
347  %call = tail call fp128 @log10l(fp128 %0) nounwind
348  ret fp128 %call
349}
350
351declare fp128 @log10l(fp128) #2
352
353; ALL-LABEL: libcall1_nearbyintl:
354; ALL: ld $25, %call16(nearbyintl)
355
356define fp128 @libcall1_nearbyintl() {
357entry:
358  %0 = load fp128, fp128* @gld0, align 16
359  %call = tail call fp128 @nearbyintl(fp128 %0) nounwind readnone
360  ret fp128 %call
361}
362
363declare fp128 @nearbyintl(fp128) #1
364
365; ALL-LABEL: libcall1_floorl:
366; ALL: ld $25, %call16(floorl)
367
368define fp128 @libcall1_floorl() {
369entry:
370  %0 = load fp128, fp128* @gld0, align 16
371  %call = tail call fp128 @floorl(fp128 %0) nounwind readnone
372  ret fp128 %call
373}
374
375declare fp128 @floorl(fp128) #1
376
377; ALL-LABEL: libcall1_sqrtl:
378; ALL: ld $25, %call16(sqrtl)
379
380define fp128 @libcall1_sqrtl() {
381entry:
382  %0 = load fp128, fp128* @gld0, align 16
383  %call = tail call fp128 @sqrtl(fp128 %0) nounwind
384  ret fp128 %call
385}
386
387declare fp128 @sqrtl(fp128) #2
388
389; ALL-LABEL: libcall1_rintl:
390; ALL: ld $25, %call16(rintl)
391
392define fp128 @libcall1_rintl() {
393entry:
394  %0 = load fp128, fp128* @gld0, align 16
395  %call = tail call fp128 @rintl(fp128 %0) nounwind readnone
396  ret fp128 %call
397}
398
399declare fp128 @rintl(fp128) #1
400
401; ALL-LABEL: libcall_powil:
402; ALL: ld $25, %call16(__powitf2)
403
404define fp128 @libcall_powil(fp128 %a, i32 %b) {
405entry:
406  %0 = tail call fp128 @llvm.powi.f128(fp128 %a, i32 %b)
407  ret fp128 %0
408}
409
410declare fp128 @llvm.powi.f128(fp128, i32) #3
411
412; ALL-LABEL:     libcall2_copysignl:
413; ALL-DAG: daddiu $[[R2:[0-9]+]], $zero, 1
414; ALL-DAG: dsll   $[[R3:[0-9]+]], $[[R2]], 63
415; ALL-DAG: ld     $[[R0:[0-9]+]], %got_disp(gld1)
416; ALL-DAG: ld     $[[R1:[0-9]+]], 8($[[R0]])
417; ALL-DAG: and    $[[R4:[0-9]+]], $[[R1]], $[[R3]]
418; ALL-DAG: ld     $[[R5:[0-9]+]], %got_disp(gld0)
419; ALL-DAG: ld     $[[R6:[0-9]+]], 8($[[R5]])
420; ALL-DAG: daddiu $[[R7:[0-9]+]], $[[R3]], -1
421; ALL-DAG: and    $[[R8:[0-9]+]], $[[R6]], $[[R7]]
422; ALL-DAG: or     $4, $[[R8]], $[[R4]]
423; ALL-DAG: ld     $2, 0($[[R5]])
424
425define fp128 @libcall2_copysignl() {
426entry:
427  %0 = load fp128, fp128* @gld0, align 16
428  %1 = load fp128, fp128* @gld1, align 16
429  %call = tail call fp128 @copysignl(fp128 %0, fp128 %1) nounwind readnone
430  ret fp128 %call
431}
432
433declare fp128 @copysignl(fp128, fp128) #1
434
435; ALL-LABEL: libcall2_powl:
436; ALL: ld $25, %call16(powl)
437
438define fp128 @libcall2_powl() {
439entry:
440  %0 = load fp128, fp128* @gld0, align 16
441  %1 = load fp128, fp128* @gld1, align 16
442  %call = tail call fp128 @powl(fp128 %0, fp128 %1) nounwind
443  ret fp128 %call
444}
445
446declare fp128 @powl(fp128, fp128) #2
447
448; ALL-LABEL: libcall2_fmodl:
449; ALL: ld $25, %call16(fmodl)
450
451define fp128 @libcall2_fmodl() {
452entry:
453  %0 = load fp128, fp128* @gld0, align 16
454  %1 = load fp128, fp128* @gld1, align 16
455  %call = tail call fp128 @fmodl(fp128 %0, fp128 %1) nounwind
456  ret fp128 %call
457}
458
459declare fp128 @fmodl(fp128, fp128) #2
460
461; ALL-LABEL: libcall3_fmal:
462; ALL: ld $25, %call16(fmal)
463
464define fp128 @libcall3_fmal() {
465entry:
466  %0 = load fp128, fp128* @gld0, align 16
467  %1 = load fp128, fp128* @gld2, align 16
468  %2 = load fp128, fp128* @gld1, align 16
469  %3 = tail call fp128 @llvm.fma.f128(fp128 %0, fp128 %2, fp128 %1)
470  ret fp128 %3
471}
472
473declare fp128 @llvm.fma.f128(fp128, fp128, fp128) #4
474
475; ALL-LABEL: cmp_lt:
476; ALL: ld $25, %call16(__lttf2)
477
478define i32 @cmp_lt(fp128 %a, fp128 %b) {
479entry:
480  %cmp = fcmp olt fp128 %a, %b
481  %conv = zext i1 %cmp to i32
482  ret i32 %conv
483}
484
485; ALL-LABEL: cmp_le:
486; ALL: ld $25, %call16(__letf2)
487
488define i32 @cmp_le(fp128 %a, fp128 %b) {
489entry:
490  %cmp = fcmp ole fp128 %a, %b
491  %conv = zext i1 %cmp to i32
492  ret i32 %conv
493}
494
495; ALL-LABEL: cmp_gt:
496; ALL: ld $25, %call16(__gttf2)
497
498define i32 @cmp_gt(fp128 %a, fp128 %b) {
499entry:
500  %cmp = fcmp ogt fp128 %a, %b
501  %conv = zext i1 %cmp to i32
502  ret i32 %conv
503}
504
505; ALL-LABEL: cmp_ge:
506; ALL: ld $25, %call16(__getf2)
507
508define i32 @cmp_ge(fp128 %a, fp128 %b) {
509entry:
510  %cmp = fcmp oge fp128 %a, %b
511  %conv = zext i1 %cmp to i32
512  ret i32 %conv
513}
514
515; ALL-LABEL: cmp_eq:
516; ALL: ld $25, %call16(__eqtf2)
517
518define i32 @cmp_eq(fp128 %a, fp128 %b) {
519entry:
520  %cmp = fcmp oeq fp128 %a, %b
521  %conv = zext i1 %cmp to i32
522  ret i32 %conv
523}
524
525; ALL-LABEL: cmp_ne:
526; ALL: ld $25, %call16(__netf2)
527
528define i32 @cmp_ne(fp128 %a, fp128 %b) {
529entry:
530  %cmp = fcmp une fp128 %a, %b
531  %conv = zext i1 %cmp to i32
532  ret i32 %conv
533}
534
535; ALL-LABEL: load_LD_LD:
536; ALL: ld $[[R0:[0-9]+]], %got_disp(gld1)
537; ALL: ld $2, 0($[[R0]])
538; ALL: ld $4, 8($[[R0]])
539
540define fp128 @load_LD_LD() {
541entry:
542  %0 = load fp128, fp128* @gld1, align 16
543  ret fp128 %0
544}
545
546; ALL-LABEL: load_LD_float:
547; ALL:   ld   $[[R0:[0-9]+]], %got_disp(gf1)
548; ALL:   lw   $4, 0($[[R0]])
549; ALL:   ld   $25, %call16(__extendsftf2)
550; PRER6: jalr $25
551; R6:    jalrc $25
552
553define fp128 @load_LD_float() {
554entry:
555  %0 = load float, float* @gf1, align 4
556  %conv = fpext float %0 to fp128
557  ret fp128 %conv
558}
559
560; ALL-LABEL: load_LD_double:
561; ALL:   ld   $[[R0:[0-9]+]], %got_disp(gd1)
562; ALL:   ld   $4, 0($[[R0]])
563; ALL:   ld   $25, %call16(__extenddftf2)
564; PRER6: jalr $25
565; R6:    jalrc $25
566
567define fp128 @load_LD_double() {
568entry:
569  %0 = load double, double* @gd1, align 8
570  %conv = fpext double %0 to fp128
571  ret fp128 %conv
572}
573
574; ALL-LABEL: store_LD_LD:
575; ALL: ld $[[R0:[0-9]+]], %got_disp(gld1)
576; ALL: ld $[[R1:[0-9]+]], 0($[[R0]])
577; ALL: ld $[[R2:[0-9]+]], 8($[[R0]])
578; ALL: ld $[[R3:[0-9]+]], %got_disp(gld0)
579; ALL: sd $[[R2]], 8($[[R3]])
580; ALL: sd $[[R1]], 0($[[R3]])
581
582define void @store_LD_LD() {
583entry:
584  %0 = load fp128, fp128* @gld1, align 16
585  store fp128 %0, fp128* @gld0, align 16
586  ret void
587}
588
589; ALL-LABEL: store_LD_float:
590; ALL:   ld   $[[R0:[0-9]+]], %got_disp(gld1)
591; ALL:   ld   $4, 0($[[R0]])
592; ALL:   ld   $5, 8($[[R0]])
593; ALL:   ld   $25, %call16(__trunctfsf2)
594; PRER6: jalr $25
595; R6:    jalrc $25
596; ALL:   ld   $[[R1:[0-9]+]], %got_disp(gf1)
597; ALL:   sw   $2, 0($[[R1]])
598
599define void @store_LD_float() {
600entry:
601  %0 = load fp128, fp128* @gld1, align 16
602  %conv = fptrunc fp128 %0 to float
603  store float %conv, float* @gf1, align 4
604  ret void
605}
606
607; ALL-LABEL: store_LD_double:
608; ALL:   ld   $[[R0:[0-9]+]], %got_disp(gld1)
609; ALL:   ld   $4, 0($[[R0]])
610; ALL:   ld   $5, 8($[[R0]])
611; ALL:   ld   $25, %call16(__trunctfdf2)
612; PRER6: jalr $25
613; R6:    jalrc $25
614; ALL:   ld   $[[R1:[0-9]+]], %got_disp(gd1)
615; ALL:   sd   $2, 0($[[R1]])
616
617define void @store_LD_double() {
618entry:
619  %0 = load fp128, fp128* @gld1, align 16
620  %conv = fptrunc fp128 %0 to double
621  store double %conv, double* @gd1, align 8
622  ret void
623}
624
625; ALL-LABEL: select_LD:
626; C_CC_FMT:      movn $8, $6, $4
627; C_CC_FMT:      movn $9, $7, $4
628; C_CC_FMT:      move $2, $8
629; C_CC_FMT:      move $4, $9
630
631; FIXME: This sll works around an implementation detail in the code generator
632;        (setcc's result is i32 so bits 32-63 are undefined). It's not really
633;        needed.
634; CMP_CC_FMT-DAG: sll $[[CC:[0-9]+]], $4, 0
635; CMP_CC_FMT-DAG: seleqz $[[EQ1:[0-9]+]], $8, $[[CC]]
636; CMP_CC_FMT-DAG: selnez $[[NE1:[0-9]+]], $6, $[[CC]]
637; CMP_CC_FMT-DAG: or $2, $[[NE1]], $[[EQ1]]
638; CMP_CC_FMT-DAG: seleqz $[[EQ2:[0-9]+]], $9, $[[CC]]
639; CMP_CC_FMT-DAG: selnez $[[NE2:[0-9]+]], $7, $[[CC]]
640; CMP_CC_FMT-DAG: or $4, $[[NE2]], $[[EQ2]]
641
642define fp128 @select_LD(i32 signext %a, i64, fp128 %b, fp128 %c) {
643entry:
644  %tobool = icmp ne i32 %a, 0
645  %cond = select i1 %tobool, fp128 %b, fp128 %c
646  ret fp128 %cond
647}
648
649; ALL-LABEL: selectCC_LD:
650; ALL:           move $[[R0:[0-9]+]], $11
651; ALL:           move $[[R1:[0-9]+]], $10
652; ALL:           move $[[R2:[0-9]+]], $9
653; ALL:           move $[[R3:[0-9]+]], $8
654; ALL:           ld   $25, %call16(__gttf2)($gp)
655; PRER6:         jalr $25
656; R6:            jalrc $25
657
658; C_CC_FMT:      slti $[[CC:[0-9]+]], $2, 1
659; C_CC_FMT:      movz $[[R1]], $[[R3]], $[[CC]]
660; C_CC_FMT:      movz $[[R0]], $[[R2]], $[[CC]]
661; C_CC_FMT:      move $2, $[[R1]]
662; C_CC_FMT:      move $4, $[[R0]]
663
664; CMP_CC_FMT:    slt $[[CC:[0-9]+]], $zero, $2
665; CMP_CC_FMT:    seleqz $[[EQ1:[0-9]+]], $[[R1]], $[[CC]]
666; CMP_CC_FMT:    selnez $[[NE1:[0-9]+]], $[[R3]], $[[CC]]
667; CMP_CC_FMT:    or $2, $[[NE1]], $[[EQ1]]
668; CMP_CC_FMT:    seleqz $[[EQ2:[0-9]+]], $[[R0]], $[[CC]]
669; CMP_CC_FMT:    selnez $[[NE2:[0-9]+]], $[[R2]], $[[CC]]
670; CMP_CC_FMT:    or $4, $[[NE2]], $[[EQ2]]
671
672define fp128 @selectCC_LD(fp128 %a, fp128 %b, fp128 %c, fp128 %d) {
673entry:
674  %cmp = fcmp ogt fp128 %a, %b
675  %cond = select i1 %cmp, fp128 %c, fp128 %d
676  ret fp128 %cond
677}
678