@@ -396,57 +396,103 @@ define void @uitofp(i32 %a) {
396396; MIPS32-NEXT: jr $ra
397397; MIPS32-NEXT: addiu $sp, $sp, 8
398398;
399- ; MIPS64 -N32-LABEL: uitofp:
400- ; MIPS64 -N32: # %bb.0: # %entry
401- ; MIPS64 -N32-NEXT: addiu $sp, $sp, -16
402- ; MIPS64 -N32-NEXT: .cfi_def_cfa_offset 16
403- ; MIPS64 -N32-NEXT: lui $1, %hi(%neg(%gp_rel(uitofp)))
404- ; MIPS64 -N32-NEXT: addu $1, $1, $25
405- ; MIPS64 -N32-NEXT: addiu $1, $1, %lo(%neg(%gp_rel(uitofp)))
406- ; MIPS64 -N32-NEXT: lui $2, 17200
407- ; MIPS64 -N32-NEXT: sw $2, 12($sp)
399+ ; MIPS64R5 -N32-LABEL: uitofp:
400+ ; MIPS64R5 -N32: # %bb.0: # %entry
401+ ; MIPS64R5 -N32-NEXT: addiu $sp, $sp, -16
402+ ; MIPS64R5 -N32-NEXT: .cfi_def_cfa_offset 16
403+ ; MIPS64R5 -N32-NEXT: lui $1, %hi(%neg(%gp_rel(uitofp)))
404+ ; MIPS64R5 -N32-NEXT: addu $1, $1, $25
405+ ; MIPS64R5 -N32-NEXT: addiu $1, $1, %lo(%neg(%gp_rel(uitofp)))
406+ ; MIPS64R5 -N32-NEXT: lui $2, 17200
407+ ; MIPS64R5 -N32-NEXT: sw $2, 12($sp)
408408; MIPS64R5-N32-NEXT: sll $2, $4, 0
409409; MIPS64R5-N32-NEXT: sw $2, 8($sp)
410- ; MIPSR6-N32-NEXT: sw $4, 8($sp)
411- ; MIPS64-N32-NEXT: lw $2, %got_page(.LCPI5_0)($1)
412- ; MIPS64-N32-NEXT: ldc1 $f0, %got_ofst(.LCPI5_0)($2)
413- ; MIPS64-N32-NEXT: ldc1 $f1, 8($sp)
414- ; MIPS64-N32-NEXT: sub.d $f0, $f1, $f0
415- ; MIPS64-N32-NEXT: dmfc1 $2, $f0
416- ; MIPS64-N32-NEXT: fill.d $w0, $2
417- ; MIPS64-N32-NEXT: fexdo.w $w0, $w0, $w0
418- ; MIPS64-N32-NEXT: fexdo.h $w0, $w0, $w0
419- ; MIPS64-N32-NEXT: lw $1, %got_disp(h)($1)
420- ; MIPS64-N32-NEXT: copy_u.h $2, $w0[0]
421- ; MIPS64-N32-NEXT: sh $2, 0($1)
422- ; MIPS64-N32-NEXT: jr $ra
423- ; MIPS64-N32-NEXT: addiu $sp, $sp, 16
410+ ; MIPS64R5-N32-NEXT: lw $2, %got_page(.LCPI5_0)($1)
411+ ; MIPS64R5-N32-NEXT: ldc1 $f0, %got_ofst(.LCPI5_0)($2)
412+ ; MIPS64R5-N32-NEXT: ldc1 $f1, 8($sp)
413+ ; MIPS64R5-N32-NEXT: sub.d $f0, $f1, $f0
414+ ; MIPS64R5-N32-NEXT: dmfc1 $2, $f0
415+ ; MIPS64R5-N32-NEXT: fill.d $w0, $2
416+ ; MIPS64R5-N32-NEXT: fexdo.w $w0, $w0, $w0
417+ ; MIPS64R5-N32-NEXT: fexdo.h $w0, $w0, $w0
418+ ; MIPS64R5-N32-NEXT: lw $1, %got_disp(h)($1)
419+ ; MIPS64R5-N32-NEXT: copy_u.h $2, $w0[0]
420+ ; MIPS64R5-N32-NEXT: sh $2, 0($1)
421+ ; MIPS64R5-N32-NEXT: jr $ra
422+ ; MIPS64R5-N32-NEXT: addiu $sp, $sp, 16
424423;
425- ; MIPS64 -N64-LABEL: uitofp:
426- ; MIPS64 -N64: # %bb.0: # %entry
427- ; MIPS64 -N64-NEXT: daddiu $sp, $sp, -16
428- ; MIPS64 -N64-NEXT: .cfi_def_cfa_offset 16
429- ; MIPS64 -N64-NEXT: lui $1, %hi(%neg(%gp_rel(uitofp)))
430- ; MIPS64 -N64-NEXT: daddu $1, $1, $25
431- ; MIPS64 -N64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(uitofp)))
432- ; MIPS64 -N64-NEXT: lui $2, 17200
433- ; MIPS64 -N64-NEXT: sw $2, 12($sp)
424+ ; MIPS64R5 -N64-LABEL: uitofp:
425+ ; MIPS64R5 -N64: # %bb.0: # %entry
426+ ; MIPS64R5 -N64-NEXT: daddiu $sp, $sp, -16
427+ ; MIPS64R5 -N64-NEXT: .cfi_def_cfa_offset 16
428+ ; MIPS64R5 -N64-NEXT: lui $1, %hi(%neg(%gp_rel(uitofp)))
429+ ; MIPS64R5 -N64-NEXT: daddu $1, $1, $25
430+ ; MIPS64R5 -N64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(uitofp)))
431+ ; MIPS64R5 -N64-NEXT: lui $2, 17200
432+ ; MIPS64R5 -N64-NEXT: sw $2, 12($sp)
434433; MIPS64R5-N64-NEXT: sll $2, $4, 0
435434; MIPS64R5-N64-NEXT: sw $2, 8($sp)
435+ ; MIPS64R5-N64-NEXT: ld $2, %got_page(.LCPI5_0)($1)
436+ ; MIPS64R5-N64-NEXT: ldc1 $f0, %got_ofst(.LCPI5_0)($2)
437+ ; MIPS64R5-N64-NEXT: ldc1 $f1, 8($sp)
438+ ; MIPS64R5-N64-NEXT: sub.d $f0, $f1, $f0
439+ ; MIPS64R5-N64-NEXT: dmfc1 $2, $f0
440+ ; MIPS64R5-N64-NEXT: fill.d $w0, $2
441+ ; MIPS64R5-N64-NEXT: fexdo.w $w0, $w0, $w0
442+ ; MIPS64R5-N64-NEXT: fexdo.h $w0, $w0, $w0
443+ ; MIPS64R5-N64-NEXT: ld $1, %got_disp(h)($1)
444+ ; MIPS64R5-N64-NEXT: copy_u.h $2, $w0[0]
445+ ; MIPS64R5-N64-NEXT: sh $2, 0($1)
446+ ; MIPS64R5-N64-NEXT: jr $ra
447+ ; MIPS64R5-N64-NEXT: daddiu $sp, $sp, 16
448+ ;
449+ ; MIPSR6-N32-LABEL: uitofp:
450+ ; MIPSR6-N32: # %bb.0: # %entry
451+ ; MIPSR6-N32-NEXT: addiu $sp, $sp, -16
452+ ; MIPSR6-N32-NEXT: .cfi_def_cfa_offset 16
453+ ; MIPSR6-N32-NEXT: lui $1, %hi(%neg(%gp_rel(uitofp)))
454+ ; MIPSR6-N32-NEXT: addu $1, $1, $25
455+ ; MIPSR6-N32-NEXT: addiu $1, $1, %lo(%neg(%gp_rel(uitofp)))
456+ ; MIPSR6-N32-NEXT: lui $2, 17200
457+ ; MIPSR6-N32-NEXT: sw $2, 12($sp)
458+ ; MIPSR6-N32-NEXT: sw $4, 8($sp)
459+ ; MIPSR6-N32-NEXT: lw $2, %got_page(.LCPI5_0)($1)
460+ ; MIPSR6-N32-NEXT: ldc1 $f0, %got_ofst(.LCPI5_0)($2)
461+ ; MIPSR6-N32-NEXT: ldc1 $f1, 8($sp)
462+ ; MIPSR6-N32-NEXT: sub.d $f0, $f1, $f0
463+ ; MIPSR6-N32-NEXT: dmfc1 $2, $f0
464+ ; MIPSR6-N32-NEXT: fill.d $w0, $2
465+ ; MIPSR6-N32-NEXT: fexdo.w $w0, $w0, $w0
466+ ; MIPSR6-N32-NEXT: fexdo.h $w0, $w0, $w0
467+ ; MIPSR6-N32-NEXT: lw $1, %got_disp(h)($1)
468+ ; MIPSR6-N32-NEXT: copy_u.h $2, $w0[0]
469+ ; MIPSR6-N32-NEXT: sh $2, 0($1)
470+ ; MIPSR6-N32-NEXT: jr $ra
471+ ; MIPSR6-N32-NEXT: addiu $sp, $sp, 16
472+ ;
473+ ; MIPSR6-N64-LABEL: uitofp:
474+ ; MIPSR6-N64: # %bb.0: # %entry
475+ ; MIPSR6-N64-NEXT: daddiu $sp, $sp, -16
476+ ; MIPSR6-N64-NEXT: .cfi_def_cfa_offset 16
477+ ; MIPSR6-N64-NEXT: lui $1, %hi(%neg(%gp_rel(uitofp)))
478+ ; MIPSR6-N64-NEXT: daddu $1, $1, $25
479+ ; MIPSR6-N64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(uitofp)))
480+ ; MIPSR6-N64-NEXT: lui $2, 17200
481+ ; MIPSR6-N64-NEXT: sw $2, 12($sp)
436482; MIPSR6-N64-NEXT: sw $4, 8($sp)
437- ; MIPS64 -N64-NEXT: ld $2, %got_page(.LCPI5_0)($1)
438- ; MIPS64 -N64-NEXT: ldc1 $f0, %got_ofst(.LCPI5_0)($2)
439- ; MIPS64 -N64-NEXT: ldc1 $f1, 8($sp)
440- ; MIPS64 -N64-NEXT: sub.d $f0, $f1, $f0
441- ; MIPS64 -N64-NEXT: dmfc1 $2, $f0
442- ; MIPS64 -N64-NEXT: fill.d $w0, $2
443- ; MIPS64 -N64-NEXT: fexdo.w $w0, $w0, $w0
444- ; MIPS64 -N64-NEXT: fexdo.h $w0, $w0, $w0
445- ; MIPS64 -N64-NEXT: ld $1, %got_disp(h)($1)
446- ; MIPS64 -N64-NEXT: copy_u.h $2, $w0[0]
447- ; MIPS64 -N64-NEXT: sh $2, 0($1)
448- ; MIPS64 -N64-NEXT: jr $ra
449- ; MIPS64 -N64-NEXT: daddiu $sp, $sp, 16
483+ ; MIPSR6 -N64-NEXT: ld $2, %got_page(.LCPI5_0)($1)
484+ ; MIPSR6 -N64-NEXT: ldc1 $f0, %got_ofst(.LCPI5_0)($2)
485+ ; MIPSR6 -N64-NEXT: ldc1 $f1, 8($sp)
486+ ; MIPSR6 -N64-NEXT: sub.d $f0, $f1, $f0
487+ ; MIPSR6 -N64-NEXT: dmfc1 $2, $f0
488+ ; MIPSR6 -N64-NEXT: fill.d $w0, $2
489+ ; MIPSR6 -N64-NEXT: fexdo.w $w0, $w0, $w0
490+ ; MIPSR6 -N64-NEXT: fexdo.h $w0, $w0, $w0
491+ ; MIPSR6 -N64-NEXT: ld $1, %got_disp(h)($1)
492+ ; MIPSR6 -N64-NEXT: copy_u.h $2, $w0[0]
493+ ; MIPSR6 -N64-NEXT: sh $2, 0($1)
494+ ; MIPSR6 -N64-NEXT: jr $ra
495+ ; MIPSR6 -N64-NEXT: daddiu $sp, $sp, 16
450496entry:
451497
452498
@@ -2466,14 +2512,13 @@ define void @fminnum(float %b) {
24662512; MIPSR6-O32-NEXT: lui $2, %hi(_gp_disp)
24672513; MIPSR6-O32-NEXT: addiu $2, $2, %lo(_gp_disp)
24682514; MIPSR6-O32-NEXT: addu $1, $2, $25
2469- ; MIPSR6-O32-NEXT: min.s $f0, $f12, $f12
24702515; MIPSR6-O32-NEXT: lw $1, %got(g)($1)
24712516; MIPSR6-O32-NEXT: lh $2, 0($1)
2472- ; MIPSR6-O32-NEXT: fill.h $w1 , $2
2473- ; MIPSR6-O32-NEXT: fexupr.w $w1 , $w1
2474- ; MIPSR6-O32-NEXT: copy_s.w $2, $w1 [0]
2475- ; MIPSR6-O32-NEXT: mtc1 $2, $f1
2476- ; MIPSR6-O32-NEXT: min.s $f0, $f1 , $f0
2517+ ; MIPSR6-O32-NEXT: fill.h $w0 , $2
2518+ ; MIPSR6-O32-NEXT: fexupr.w $w0 , $w0
2519+ ; MIPSR6-O32-NEXT: copy_s.w $2, $w0 [0]
2520+ ; MIPSR6-O32-NEXT: mtc1 $2, $f0
2521+ ; MIPSR6-O32-NEXT: min.s $f0, $f0 , $f12
24772522; MIPSR6-O32-NEXT: mfc1 $2, $f0
24782523; MIPSR6-O32-NEXT: fill.w $w0, $2
24792524; MIPSR6-O32-NEXT: fexdo.h $w0, $w0, $w0
@@ -2486,14 +2531,13 @@ define void @fminnum(float %b) {
24862531; MIPSR6-N32-NEXT: lui $1, %hi(%neg(%gp_rel(fminnum)))
24872532; MIPSR6-N32-NEXT: addu $1, $1, $25
24882533; MIPSR6-N32-NEXT: addiu $1, $1, %lo(%neg(%gp_rel(fminnum)))
2489- ; MIPSR6-N32-NEXT: min.s $f0, $f12, $f12
24902534; MIPSR6-N32-NEXT: lw $1, %got_disp(g)($1)
24912535; MIPSR6-N32-NEXT: lh $2, 0($1)
2492- ; MIPSR6-N32-NEXT: fill.h $w1 , $2
2493- ; MIPSR6-N32-NEXT: fexupr.w $w1 , $w1
2494- ; MIPSR6-N32-NEXT: copy_s.w $2, $w1 [0]
2495- ; MIPSR6-N32-NEXT: mtc1 $2, $f1
2496- ; MIPSR6-N32-NEXT: min.s $f0, $f1 , $f0
2536+ ; MIPSR6-N32-NEXT: fill.h $w0 , $2
2537+ ; MIPSR6-N32-NEXT: fexupr.w $w0 , $w0
2538+ ; MIPSR6-N32-NEXT: copy_s.w $2, $w0 [0]
2539+ ; MIPSR6-N32-NEXT: mtc1 $2, $f0
2540+ ; MIPSR6-N32-NEXT: min.s $f0, $f0 , $f12
24972541; MIPSR6-N32-NEXT: mfc1 $2, $f0
24982542; MIPSR6-N32-NEXT: fill.w $w0, $2
24992543; MIPSR6-N32-NEXT: fexdo.h $w0, $w0, $w0
@@ -2506,14 +2550,13 @@ define void @fminnum(float %b) {
25062550; MIPSR6-N64-NEXT: lui $1, %hi(%neg(%gp_rel(fminnum)))
25072551; MIPSR6-N64-NEXT: daddu $1, $1, $25
25082552; MIPSR6-N64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(fminnum)))
2509- ; MIPSR6-N64-NEXT: min.s $f0, $f12, $f12
25102553; MIPSR6-N64-NEXT: ld $1, %got_disp(g)($1)
25112554; MIPSR6-N64-NEXT: lh $2, 0($1)
2512- ; MIPSR6-N64-NEXT: fill.h $w1 , $2
2513- ; MIPSR6-N64-NEXT: fexupr.w $w1 , $w1
2514- ; MIPSR6-N64-NEXT: copy_s.w $2, $w1 [0]
2515- ; MIPSR6-N64-NEXT: mtc1 $2, $f1
2516- ; MIPSR6-N64-NEXT: min.s $f0, $f1 , $f0
2555+ ; MIPSR6-N64-NEXT: fill.h $w0 , $2
2556+ ; MIPSR6-N64-NEXT: fexupr.w $w0 , $w0
2557+ ; MIPSR6-N64-NEXT: copy_s.w $2, $w0 [0]
2558+ ; MIPSR6-N64-NEXT: mtc1 $2, $f0
2559+ ; MIPSR6-N64-NEXT: min.s $f0, $f0 , $f12
25172560; MIPSR6-N64-NEXT: mfc1 $2, $f0
25182561; MIPSR6-N64-NEXT: fill.w $w0, $2
25192562; MIPSR6-N64-NEXT: fexdo.h $w0, $w0, $w0
@@ -2638,14 +2681,13 @@ define void @fmaxnum(float %b) {
26382681; MIPSR6-O32-NEXT: lui $2, %hi(_gp_disp)
26392682; MIPSR6-O32-NEXT: addiu $2, $2, %lo(_gp_disp)
26402683; MIPSR6-O32-NEXT: addu $1, $2, $25
2641- ; MIPSR6-O32-NEXT: min.s $f0, $f12, $f12
26422684; MIPSR6-O32-NEXT: lw $1, %got(g)($1)
26432685; MIPSR6-O32-NEXT: lh $2, 0($1)
2644- ; MIPSR6-O32-NEXT: fill.h $w1 , $2
2645- ; MIPSR6-O32-NEXT: fexupr.w $w1 , $w1
2646- ; MIPSR6-O32-NEXT: copy_s.w $2, $w1 [0]
2647- ; MIPSR6-O32-NEXT: mtc1 $2, $f1
2648- ; MIPSR6-O32-NEXT: max.s $f0, $f1 , $f0
2686+ ; MIPSR6-O32-NEXT: fill.h $w0 , $2
2687+ ; MIPSR6-O32-NEXT: fexupr.w $w0 , $w0
2688+ ; MIPSR6-O32-NEXT: copy_s.w $2, $w0 [0]
2689+ ; MIPSR6-O32-NEXT: mtc1 $2, $f0
2690+ ; MIPSR6-O32-NEXT: max.s $f0, $f0 , $f12
26492691; MIPSR6-O32-NEXT: mfc1 $2, $f0
26502692; MIPSR6-O32-NEXT: fill.w $w0, $2
26512693; MIPSR6-O32-NEXT: fexdo.h $w0, $w0, $w0
@@ -2658,14 +2700,13 @@ define void @fmaxnum(float %b) {
26582700; MIPSR6-N32-NEXT: lui $1, %hi(%neg(%gp_rel(fmaxnum)))
26592701; MIPSR6-N32-NEXT: addu $1, $1, $25
26602702; MIPSR6-N32-NEXT: addiu $1, $1, %lo(%neg(%gp_rel(fmaxnum)))
2661- ; MIPSR6-N32-NEXT: min.s $f0, $f12, $f12
26622703; MIPSR6-N32-NEXT: lw $1, %got_disp(g)($1)
26632704; MIPSR6-N32-NEXT: lh $2, 0($1)
2664- ; MIPSR6-N32-NEXT: fill.h $w1 , $2
2665- ; MIPSR6-N32-NEXT: fexupr.w $w1 , $w1
2666- ; MIPSR6-N32-NEXT: copy_s.w $2, $w1 [0]
2667- ; MIPSR6-N32-NEXT: mtc1 $2, $f1
2668- ; MIPSR6-N32-NEXT: max.s $f0, $f1 , $f0
2705+ ; MIPSR6-N32-NEXT: fill.h $w0 , $2
2706+ ; MIPSR6-N32-NEXT: fexupr.w $w0 , $w0
2707+ ; MIPSR6-N32-NEXT: copy_s.w $2, $w0 [0]
2708+ ; MIPSR6-N32-NEXT: mtc1 $2, $f0
2709+ ; MIPSR6-N32-NEXT: max.s $f0, $f0 , $f12
26692710; MIPSR6-N32-NEXT: mfc1 $2, $f0
26702711; MIPSR6-N32-NEXT: fill.w $w0, $2
26712712; MIPSR6-N32-NEXT: fexdo.h $w0, $w0, $w0
@@ -2678,14 +2719,13 @@ define void @fmaxnum(float %b) {
26782719; MIPSR6-N64-NEXT: lui $1, %hi(%neg(%gp_rel(fmaxnum)))
26792720; MIPSR6-N64-NEXT: daddu $1, $1, $25
26802721; MIPSR6-N64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(fmaxnum)))
2681- ; MIPSR6-N64-NEXT: min.s $f0, $f12, $f12
26822722; MIPSR6-N64-NEXT: ld $1, %got_disp(g)($1)
26832723; MIPSR6-N64-NEXT: lh $2, 0($1)
2684- ; MIPSR6-N64-NEXT: fill.h $w1 , $2
2685- ; MIPSR6-N64-NEXT: fexupr.w $w1 , $w1
2686- ; MIPSR6-N64-NEXT: copy_s.w $2, $w1 [0]
2687- ; MIPSR6-N64-NEXT: mtc1 $2, $f1
2688- ; MIPSR6-N64-NEXT: max.s $f0, $f1 , $f0
2724+ ; MIPSR6-N64-NEXT: fill.h $w0 , $2
2725+ ; MIPSR6-N64-NEXT: fexupr.w $w0 , $w0
2726+ ; MIPSR6-N64-NEXT: copy_s.w $2, $w0 [0]
2727+ ; MIPSR6-N64-NEXT: mtc1 $2, $f0
2728+ ; MIPSR6-N64-NEXT: max.s $f0, $f0 , $f12
26892729; MIPSR6-N64-NEXT: mfc1 $2, $f0
26902730; MIPSR6-N64-NEXT: fill.w $w0, $2
26912731; MIPSR6-N64-NEXT: fexdo.h $w0, $w0, $w0
0 commit comments