brintos

brintos / llvm-project-archived public Read only

0
0
Text · 35.0 KiB · 12067e1 Raw
1189 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=mipsel-unknown-linux-gnu   -mcpu=mips32   -relocation-model=pic -verify-machineinstrs | FileCheck %s -check-prefix=323; RUN: llc < %s -mtriple=mipsel-unknown-linux-gnu   -mcpu=mips32r2 -relocation-model=pic -verify-machineinstrs | FileCheck %s -check-prefix=32R24; RUN: llc < %s -mtriple=mipsel-unknown-linux-gnu   -mcpu=mips32r6 -relocation-model=pic -verify-machineinstrs | FileCheck %s -check-prefix=32R65; RUN: llc < %s -mtriple=mips64el-unknown-linux-gnu -mcpu=mips64   -relocation-model=pic -verify-machineinstrs | FileCheck %s -check-prefix=646; RUN: llc < %s -mtriple=mips64el-unknown-linux-gnu -mcpu=mips64r2 -relocation-model=pic -verify-machineinstrs | FileCheck %s -check-prefix=64R27; RUN: llc < %s -mtriple=mips64el-unknown-linux-gnu -mcpu=mips64r6 -relocation-model=pic -verify-machineinstrs | FileCheck %s -check-prefix=64R68 9@d2 = external global double10@d3 = external global double11 12define i32 @i32_icmp_ne_i32_val(i32 signext %s, i32 signext %f0, i32 signext %f1) nounwind readnone {13; 32-LABEL: i32_icmp_ne_i32_val:14; 32:       # %bb.0: # %entry15; 32-NEXT:    movn $5, $6, $416; 32-NEXT:    jr $ra17; 32-NEXT:    move $2, $518;19; 32R2-LABEL: i32_icmp_ne_i32_val:20; 32R2:       # %bb.0: # %entry21; 32R2-NEXT:    movn $5, $6, $422; 32R2-NEXT:    jr $ra23; 32R2-NEXT:    move $2, $524;25; 32R6-LABEL: i32_icmp_ne_i32_val:26; 32R6:       # %bb.0: # %entry27; 32R6-NEXT:    seleqz $1, $5, $428; 32R6-NEXT:    selnez $2, $6, $429; 32R6-NEXT:    jr $ra30; 32R6-NEXT:    or $2, $2, $131;32; 64-LABEL: i32_icmp_ne_i32_val:33; 64:       # %bb.0: # %entry34; 64-NEXT:    movn $5, $6, $435; 64-NEXT:    jr $ra36; 64-NEXT:    move $2, $537;38; 64R2-LABEL: i32_icmp_ne_i32_val:39; 64R2:       # %bb.0: # %entry40; 64R2-NEXT:    movn $5, $6, $441; 64R2-NEXT:    jr $ra42; 64R2-NEXT:    move $2, $543;44; 64R6-LABEL: i32_icmp_ne_i32_val:45; 64R6:       # %bb.0: # %entry46; 64R6-NEXT:    seleqz $1, $5, $447; 64R6-NEXT:    selnez $2, $6, $448; 64R6-NEXT:    jr $ra49; 64R6-NEXT:    or $2, $2, $150entry:51  %tobool = icmp ne i32 %s, 052  %cond = select i1 %tobool, i32 %f1, i32 %f053  ret i32 %cond54}55 56; FIXME: The sll works around an implementation detail in the code generator57;        (setcc's result is i32 so bits 32-63 are undefined). It's not really58;        needed.59 60define i64 @i32_icmp_ne_i64_val(i32 signext %s, i64 %f0, i64 %f1) nounwind readnone {61; 32-LABEL: i32_icmp_ne_i64_val:62; 32:       # %bb.0: # %entry63; 32-NEXT:    lw $1, 16($sp)64; 32-NEXT:    movn $6, $1, $465; 32-NEXT:    lw $1, 20($sp)66; 32-NEXT:    movn $7, $1, $467; 32-NEXT:    move $2, $668; 32-NEXT:    jr $ra69; 32-NEXT:    move $3, $770;71; 32R2-LABEL: i32_icmp_ne_i64_val:72; 32R2:       # %bb.0: # %entry73; 32R2-NEXT:    lw $1, 16($sp)74; 32R2-NEXT:    movn $6, $1, $475; 32R2-NEXT:    lw $1, 20($sp)76; 32R2-NEXT:    movn $7, $1, $477; 32R2-NEXT:    move $2, $678; 32R2-NEXT:    jr $ra79; 32R2-NEXT:    move $3, $780;81; 32R6-LABEL: i32_icmp_ne_i64_val:82; 32R6:       # %bb.0: # %entry83; 32R6-NEXT:    seleqz $1, $6, $484; 32R6-NEXT:    lw $2, 16($sp)85; 32R6-NEXT:    selnez $2, $2, $486; 32R6-NEXT:    or $2, $2, $187; 32R6-NEXT:    seleqz $1, $7, $488; 32R6-NEXT:    lw $3, 20($sp)89; 32R6-NEXT:    selnez $3, $3, $490; 32R6-NEXT:    jr $ra91; 32R6-NEXT:    or $3, $3, $192;93; 64-LABEL: i32_icmp_ne_i64_val:94; 64:       # %bb.0: # %entry95; 64-NEXT:    movn $5, $6, $496; 64-NEXT:    jr $ra97; 64-NEXT:    move $2, $598;99; 64R2-LABEL: i32_icmp_ne_i64_val:100; 64R2:       # %bb.0: # %entry101; 64R2-NEXT:    movn $5, $6, $4102; 64R2-NEXT:    jr $ra103; 64R2-NEXT:    move $2, $5104;105; 64R6-LABEL: i32_icmp_ne_i64_val:106; 64R6:       # %bb.0: # %entry107; 64R6-NEXT:    sll $1, $4, 0108; 64R6-NEXT:    seleqz $2, $5, $1109; 64R6-NEXT:    selnez $1, $6, $1110; 64R6-NEXT:    jr $ra111; 64R6-NEXT:    or $2, $1, $2112entry:113  %tobool = icmp ne i32 %s, 0114  %cond = select i1 %tobool, i64 %f1, i64 %f0115  ret i64 %cond116}117 118define i64 @i64_icmp_ne_i64_val(i64 %s, i64 %f0, i64 %f1) nounwind readnone {119; 32-LABEL: i64_icmp_ne_i64_val:120; 32:       # %bb.0: # %entry121; 32-NEXT:    or $1, $4, $5122; 32-NEXT:    lw $2, 16($sp)123; 32-NEXT:    movn $6, $2, $1124; 32-NEXT:    lw $2, 20($sp)125; 32-NEXT:    movn $7, $2, $1126; 32-NEXT:    move $2, $6127; 32-NEXT:    jr $ra128; 32-NEXT:    move $3, $7129;130; 32R2-LABEL: i64_icmp_ne_i64_val:131; 32R2:       # %bb.0: # %entry132; 32R2-NEXT:    or $1, $4, $5133; 32R2-NEXT:    lw $2, 16($sp)134; 32R2-NEXT:    movn $6, $2, $1135; 32R2-NEXT:    lw $2, 20($sp)136; 32R2-NEXT:    movn $7, $2, $1137; 32R2-NEXT:    move $2, $6138; 32R2-NEXT:    jr $ra139; 32R2-NEXT:    move $3, $7140;141; 32R6-LABEL: i64_icmp_ne_i64_val:142; 32R6:       # %bb.0: # %entry143; 32R6-NEXT:    or $1, $4, $5144; 32R6-NEXT:    seleqz $2, $6, $1145; 32R6-NEXT:    lw $3, 16($sp)146; 32R6-NEXT:    selnez $3, $3, $1147; 32R6-NEXT:    or $2, $3, $2148; 32R6-NEXT:    seleqz $3, $7, $1149; 32R6-NEXT:    lw $4, 20($sp)150; 32R6-NEXT:    selnez $1, $4, $1151; 32R6-NEXT:    jr $ra152; 32R6-NEXT:    or $3, $1, $3153;154; 64-LABEL: i64_icmp_ne_i64_val:155; 64:       # %bb.0: # %entry156; 64-NEXT:    movn $5, $6, $4157; 64-NEXT:    jr $ra158; 64-NEXT:    move $2, $5159;160; 64R2-LABEL: i64_icmp_ne_i64_val:161; 64R2:       # %bb.0: # %entry162; 64R2-NEXT:    movn $5, $6, $4163; 64R2-NEXT:    jr $ra164; 64R2-NEXT:    move $2, $5165;166; 64R6-LABEL: i64_icmp_ne_i64_val:167; 64R6:       # %bb.0: # %entry168; 64R6-NEXT:    seleqz $1, $5, $4169; 64R6-NEXT:    selnez $2, $6, $4170; 64R6-NEXT:    jr $ra171; 64R6-NEXT:    or $2, $2, $1172entry:173  %tobool = icmp ne i64 %s, 0174  %cond = select i1 %tobool, i64 %f1, i64 %f0175  ret i64 %cond176}177 178define float @i32_icmp_ne_f32_val(i32 signext %s, float %f0, float %f1) nounwind readnone {179; 32-LABEL: i32_icmp_ne_f32_val:180; 32:       # %bb.0: # %entry181; 32-NEXT:    mtc1 $6, $f0182; 32-NEXT:    mtc1 $5, $f1183; 32-NEXT:    jr $ra184; 32-NEXT:    movn.s $f0, $f1, $4185;186; 32R2-LABEL: i32_icmp_ne_f32_val:187; 32R2:       # %bb.0: # %entry188; 32R2-NEXT:    mtc1 $6, $f0189; 32R2-NEXT:    mtc1 $5, $f1190; 32R2-NEXT:    jr $ra191; 32R2-NEXT:    movn.s $f0, $f1, $4192;193; 32R6-LABEL: i32_icmp_ne_f32_val:194; 32R6:       # %bb.0: # %entry195; 32R6-NEXT:    sltu $1, $zero, $4196; 32R6-NEXT:    negu $1, $1197; 32R6-NEXT:    mtc1 $5, $f1198; 32R6-NEXT:    mtc1 $6, $f2199; 32R6-NEXT:    mtc1 $1, $f0200; 32R6-NEXT:    jr $ra201; 32R6-NEXT:    sel.s $f0, $f2, $f1202;203; 64-LABEL: i32_icmp_ne_f32_val:204; 64:       # %bb.0: # %entry205; 64-NEXT:    mov.s $f0, $f14206; 64-NEXT:    jr $ra207; 64-NEXT:    movn.s $f0, $f13, $4208;209; 64R2-LABEL: i32_icmp_ne_f32_val:210; 64R2:       # %bb.0: # %entry211; 64R2-NEXT:    mov.s $f0, $f14212; 64R2-NEXT:    jr $ra213; 64R2-NEXT:    movn.s $f0, $f13, $4214;215; 64R6-LABEL: i32_icmp_ne_f32_val:216; 64R6:       # %bb.0: # %entry217; 64R6-NEXT:    sltu $1, $zero, $4218; 64R6-NEXT:    negu $1, $1219; 64R6-NEXT:    mtc1 $1, $f0220; 64R6-NEXT:    jr $ra221; 64R6-NEXT:    sel.s $f0, $f14, $f13222entry:223  %tobool = icmp ne i32 %s, 0224  %cond = select i1 %tobool, float %f0, float %f1225  ret float %cond226}227 228define double @i32_icmp_ne_f64_val(i32 signext %s, double %f0, double %f1) nounwind readnone {229; 32-LABEL: i32_icmp_ne_f64_val:230; 32:       # %bb.0: # %entry231; 32-NEXT:    mtc1 $6, $f2232; 32-NEXT:    mtc1 $7, $f3233; 32-NEXT:    ldc1 $f0, 16($sp)234; 32-NEXT:    jr $ra235; 32-NEXT:    movn.d $f0, $f2, $4236;237; 32R2-LABEL: i32_icmp_ne_f64_val:238; 32R2:       # %bb.0: # %entry239; 32R2-NEXT:    mtc1 $6, $f2240; 32R2-NEXT:    mthc1 $7, $f2241; 32R2-NEXT:    ldc1 $f0, 16($sp)242; 32R2-NEXT:    jr $ra243; 32R2-NEXT:    movn.d $f0, $f2, $4244;245; 32R6-LABEL: i32_icmp_ne_f64_val:246; 32R6:       # %bb.0: # %entry247; 32R6-NEXT:    mtc1 $6, $f1248; 32R6-NEXT:    mthc1 $7, $f1249; 32R6-NEXT:    sltu $1, $zero, $4250; 32R6-NEXT:    negu $1, $1251; 32R6-NEXT:    mtc1 $1, $f0252; 32R6-NEXT:    ldc1 $f2, 16($sp)253; 32R6-NEXT:    jr $ra254; 32R6-NEXT:    sel.d $f0, $f2, $f1255;256; 64-LABEL: i32_icmp_ne_f64_val:257; 64:       # %bb.0: # %entry258; 64-NEXT:    mov.d $f0, $f14259; 64-NEXT:    jr $ra260; 64-NEXT:    movn.d $f0, $f13, $4261;262; 64R2-LABEL: i32_icmp_ne_f64_val:263; 64R2:       # %bb.0: # %entry264; 64R2-NEXT:    mov.d $f0, $f14265; 64R2-NEXT:    jr $ra266; 64R2-NEXT:    movn.d $f0, $f13, $4267;268; 64R6-LABEL: i32_icmp_ne_f64_val:269; 64R6:       # %bb.0: # %entry270; 64R6-NEXT:    sltu $1, $zero, $4271; 64R6-NEXT:    negu $1, $1272; 64R6-NEXT:    mtc1 $1, $f0273; 64R6-NEXT:    jr $ra274; 64R6-NEXT:    sel.d $f0, $f14, $f13275entry:276  %tobool = icmp ne i32 %s, 0277  %cond = select i1 %tobool, double %f0, double %f1278  ret double %cond279}280 281define float @f32_fcmp_oeq_f32_val(float %f0, float %f1, float %f2, float %f3) nounwind readnone {282; 32-LABEL: f32_fcmp_oeq_f32_val:283; 32:       # %bb.0: # %entry284; 32-NEXT:    mov.s $f0, $f14285; 32-NEXT:    mtc1 $7, $f1286; 32-NEXT:    mtc1 $6, $f2287; 32-NEXT:    c.eq.s $f2, $f1288; 32-NEXT:    jr $ra289; 32-NEXT:    movt.s $f0, $f12, $fcc0290;291; 32R2-LABEL: f32_fcmp_oeq_f32_val:292; 32R2:       # %bb.0: # %entry293; 32R2-NEXT:    mov.s $f0, $f14294; 32R2-NEXT:    mtc1 $7, $f1295; 32R2-NEXT:    mtc1 $6, $f2296; 32R2-NEXT:    c.eq.s $f2, $f1297; 32R2-NEXT:    jr $ra298; 32R2-NEXT:    movt.s $f0, $f12, $fcc0299;300; 32R6-LABEL: f32_fcmp_oeq_f32_val:301; 32R6:       # %bb.0: # %entry302; 32R6-NEXT:    mtc1 $7, $f0303; 32R6-NEXT:    mtc1 $6, $f1304; 32R6-NEXT:    cmp.eq.s $f0, $f1, $f0305; 32R6-NEXT:    jr $ra306; 32R6-NEXT:    sel.s $f0, $f14, $f12307;308; 64-LABEL: f32_fcmp_oeq_f32_val:309; 64:       # %bb.0: # %entry310; 64-NEXT:    mov.s $f0, $f13311; 64-NEXT:    c.eq.s $f14, $f15312; 64-NEXT:    jr $ra313; 64-NEXT:    movt.s $f0, $f12, $fcc0314;315; 64R2-LABEL: f32_fcmp_oeq_f32_val:316; 64R2:       # %bb.0: # %entry317; 64R2-NEXT:    mov.s $f0, $f13318; 64R2-NEXT:    c.eq.s $f14, $f15319; 64R2-NEXT:    jr $ra320; 64R2-NEXT:    movt.s $f0, $f12, $fcc0321;322; 64R6-LABEL: f32_fcmp_oeq_f32_val:323; 64R6:       # %bb.0: # %entry324; 64R6-NEXT:    cmp.eq.s $f0, $f14, $f15325; 64R6-NEXT:    jr $ra326; 64R6-NEXT:    sel.s $f0, $f13, $f12327entry:328  %cmp = fcmp oeq float %f2, %f3329  %cond = select i1 %cmp, float %f0, float %f1330  ret float %cond331}332 333define float @f32_fcmp_olt_f32_val(float %f0, float %f1, float %f2, float %f3) nounwind readnone {334; 32-LABEL: f32_fcmp_olt_f32_val:335; 32:       # %bb.0: # %entry336; 32-NEXT:    mov.s $f0, $f14337; 32-NEXT:    mtc1 $7, $f1338; 32-NEXT:    mtc1 $6, $f2339; 32-NEXT:    c.olt.s $f2, $f1340; 32-NEXT:    jr $ra341; 32-NEXT:    movt.s $f0, $f12, $fcc0342;343; 32R2-LABEL: f32_fcmp_olt_f32_val:344; 32R2:       # %bb.0: # %entry345; 32R2-NEXT:    mov.s $f0, $f14346; 32R2-NEXT:    mtc1 $7, $f1347; 32R2-NEXT:    mtc1 $6, $f2348; 32R2-NEXT:    c.olt.s $f2, $f1349; 32R2-NEXT:    jr $ra350; 32R2-NEXT:    movt.s $f0, $f12, $fcc0351;352; 32R6-LABEL: f32_fcmp_olt_f32_val:353; 32R6:       # %bb.0: # %entry354; 32R6-NEXT:    mtc1 $7, $f0355; 32R6-NEXT:    mtc1 $6, $f1356; 32R6-NEXT:    cmp.lt.s $f0, $f1, $f0357; 32R6-NEXT:    jr $ra358; 32R6-NEXT:    sel.s $f0, $f14, $f12359;360; 64-LABEL: f32_fcmp_olt_f32_val:361; 64:       # %bb.0: # %entry362; 64-NEXT:    mov.s $f0, $f13363; 64-NEXT:    c.olt.s $f14, $f15364; 64-NEXT:    jr $ra365; 64-NEXT:    movt.s $f0, $f12, $fcc0366;367; 64R2-LABEL: f32_fcmp_olt_f32_val:368; 64R2:       # %bb.0: # %entry369; 64R2-NEXT:    mov.s $f0, $f13370; 64R2-NEXT:    c.olt.s $f14, $f15371; 64R2-NEXT:    jr $ra372; 64R2-NEXT:    movt.s $f0, $f12, $fcc0373;374; 64R6-LABEL: f32_fcmp_olt_f32_val:375; 64R6:       # %bb.0: # %entry376; 64R6-NEXT:    cmp.lt.s $f0, $f14, $f15377; 64R6-NEXT:    jr $ra378; 64R6-NEXT:    sel.s $f0, $f13, $f12379entry:380  %cmp = fcmp olt float %f2, %f3381  %cond = select i1 %cmp, float %f0, float %f1382  ret float %cond383}384 385define float @f32_fcmp_ogt_f32_val(float %f0, float %f1, float %f2, float %f3) nounwind readnone {386; 32-LABEL: f32_fcmp_ogt_f32_val:387; 32:       # %bb.0: # %entry388; 32-NEXT:    mov.s $f0, $f14389; 32-NEXT:    mtc1 $7, $f1390; 32-NEXT:    mtc1 $6, $f2391; 32-NEXT:    c.ule.s $f2, $f1392; 32-NEXT:    jr $ra393; 32-NEXT:    movf.s $f0, $f12, $fcc0394;395; 32R2-LABEL: f32_fcmp_ogt_f32_val:396; 32R2:       # %bb.0: # %entry397; 32R2-NEXT:    mov.s $f0, $f14398; 32R2-NEXT:    mtc1 $7, $f1399; 32R2-NEXT:    mtc1 $6, $f2400; 32R2-NEXT:    c.ule.s $f2, $f1401; 32R2-NEXT:    jr $ra402; 32R2-NEXT:    movf.s $f0, $f12, $fcc0403;404; 32R6-LABEL: f32_fcmp_ogt_f32_val:405; 32R6:       # %bb.0: # %entry406; 32R6-NEXT:    mtc1 $6, $f0407; 32R6-NEXT:    mtc1 $7, $f1408; 32R6-NEXT:    cmp.lt.s $f0, $f1, $f0409; 32R6-NEXT:    jr $ra410; 32R6-NEXT:    sel.s $f0, $f14, $f12411;412; 64-LABEL: f32_fcmp_ogt_f32_val:413; 64:       # %bb.0: # %entry414; 64-NEXT:    mov.s $f0, $f13415; 64-NEXT:    c.ule.s $f14, $f15416; 64-NEXT:    jr $ra417; 64-NEXT:    movf.s $f0, $f12, $fcc0418;419; 64R2-LABEL: f32_fcmp_ogt_f32_val:420; 64R2:       # %bb.0: # %entry421; 64R2-NEXT:    mov.s $f0, $f13422; 64R2-NEXT:    c.ule.s $f14, $f15423; 64R2-NEXT:    jr $ra424; 64R2-NEXT:    movf.s $f0, $f12, $fcc0425;426; 64R6-LABEL: f32_fcmp_ogt_f32_val:427; 64R6:       # %bb.0: # %entry428; 64R6-NEXT:    cmp.lt.s $f0, $f15, $f14429; 64R6-NEXT:    jr $ra430; 64R6-NEXT:    sel.s $f0, $f13, $f12431entry:432  %cmp = fcmp ogt float %f2, %f3433  %cond = select i1 %cmp, float %f0, float %f1434  ret float %cond435}436 437define double @f32_fcmp_ogt_f64_val(double %f0, double %f1, float %f2, float %f3) nounwind readnone {438; 32-LABEL: f32_fcmp_ogt_f64_val:439; 32:       # %bb.0: # %entry440; 32-NEXT:    mov.d $f0, $f14441; 32-NEXT:    lwc1 $f2, 20($sp)442; 32-NEXT:    lwc1 $f3, 16($sp)443; 32-NEXT:    c.ule.s $f3, $f2444; 32-NEXT:    jr $ra445; 32-NEXT:    movf.d $f0, $f12, $fcc0446;447; 32R2-LABEL: f32_fcmp_ogt_f64_val:448; 32R2:       # %bb.0: # %entry449; 32R2-NEXT:    mov.d $f0, $f14450; 32R2-NEXT:    lwc1 $f2, 20($sp)451; 32R2-NEXT:    lwc1 $f3, 16($sp)452; 32R2-NEXT:    c.ule.s $f3, $f2453; 32R2-NEXT:    jr $ra454; 32R2-NEXT:    movf.d $f0, $f12, $fcc0455;456; 32R6-LABEL: f32_fcmp_ogt_f64_val:457; 32R6:       # %bb.0: # %entry458; 32R6-NEXT:    lwc1 $f0, 16($sp)459; 32R6-NEXT:    lwc1 $f1, 20($sp)460; 32R6-NEXT:    cmp.lt.s $f0, $f1, $f0461; 32R6-NEXT:    mfc1 $1, $f0462; 32R6-NEXT:    mtc1 $1, $f0463; 32R6-NEXT:    jr $ra464; 32R6-NEXT:    sel.d $f0, $f14, $f12465;466; 64-LABEL: f32_fcmp_ogt_f64_val:467; 64:       # %bb.0: # %entry468; 64-NEXT:    mov.d $f0, $f13469; 64-NEXT:    c.ule.s $f14, $f15470; 64-NEXT:    jr $ra471; 64-NEXT:    movf.d $f0, $f12, $fcc0472;473; 64R2-LABEL: f32_fcmp_ogt_f64_val:474; 64R2:       # %bb.0: # %entry475; 64R2-NEXT:    mov.d $f0, $f13476; 64R2-NEXT:    c.ule.s $f14, $f15477; 64R2-NEXT:    jr $ra478; 64R2-NEXT:    movf.d $f0, $f12, $fcc0479;480; 64R6-LABEL: f32_fcmp_ogt_f64_val:481; 64R6:       # %bb.0: # %entry482; 64R6-NEXT:    cmp.lt.s $f0, $f15, $f14483; 64R6-NEXT:    mfc1 $1, $f0484; 64R6-NEXT:    mtc1 $1, $f0485; 64R6-NEXT:    jr $ra486; 64R6-NEXT:    sel.d $f0, $f13, $f12487entry:488  %cmp = fcmp ogt float %f2, %f3489  %cond = select i1 %cmp, double %f0, double %f1490  ret double %cond491}492 493define double @f64_fcmp_oeq_f64_val(double %f0, double %f1, double %f2, double %f3) nounwind readnone {494; 32-LABEL: f64_fcmp_oeq_f64_val:495; 32:       # %bb.0: # %entry496; 32-NEXT:    mov.d $f0, $f14497; 32-NEXT:    ldc1 $f2, 24($sp)498; 32-NEXT:    ldc1 $f4, 16($sp)499; 32-NEXT:    c.eq.d $f4, $f2500; 32-NEXT:    jr $ra501; 32-NEXT:    movt.d $f0, $f12, $fcc0502;503; 32R2-LABEL: f64_fcmp_oeq_f64_val:504; 32R2:       # %bb.0: # %entry505; 32R2-NEXT:    mov.d $f0, $f14506; 32R2-NEXT:    ldc1 $f2, 24($sp)507; 32R2-NEXT:    ldc1 $f4, 16($sp)508; 32R2-NEXT:    c.eq.d $f4, $f2509; 32R2-NEXT:    jr $ra510; 32R2-NEXT:    movt.d $f0, $f12, $fcc0511;512; 32R6-LABEL: f64_fcmp_oeq_f64_val:513; 32R6:       # %bb.0: # %entry514; 32R6-NEXT:    ldc1 $f0, 24($sp)515; 32R6-NEXT:    ldc1 $f1, 16($sp)516; 32R6-NEXT:    cmp.eq.d $f0, $f1, $f0517; 32R6-NEXT:    mfc1 $1, $f0518; 32R6-NEXT:    mtc1 $1, $f0519; 32R6-NEXT:    jr $ra520; 32R6-NEXT:    sel.d $f0, $f14, $f12521;522; 64-LABEL: f64_fcmp_oeq_f64_val:523; 64:       # %bb.0: # %entry524; 64-NEXT:    mov.d $f0, $f13525; 64-NEXT:    c.eq.d $f14, $f15526; 64-NEXT:    jr $ra527; 64-NEXT:    movt.d $f0, $f12, $fcc0528;529; 64R2-LABEL: f64_fcmp_oeq_f64_val:530; 64R2:       # %bb.0: # %entry531; 64R2-NEXT:    mov.d $f0, $f13532; 64R2-NEXT:    c.eq.d $f14, $f15533; 64R2-NEXT:    jr $ra534; 64R2-NEXT:    movt.d $f0, $f12, $fcc0535;536; 64R6-LABEL: f64_fcmp_oeq_f64_val:537; 64R6:       # %bb.0: # %entry538; 64R6-NEXT:    cmp.eq.d $f0, $f14, $f15539; 64R6-NEXT:    mfc1 $1, $f0540; 64R6-NEXT:    mtc1 $1, $f0541; 64R6-NEXT:    jr $ra542; 64R6-NEXT:    sel.d $f0, $f13, $f12543entry:544  %cmp = fcmp oeq double %f2, %f3545  %cond = select i1 %cmp, double %f0, double %f1546  ret double %cond547}548 549define double @f64_fcmp_olt_f64_val(double %f0, double %f1, double %f2, double %f3) nounwind readnone {550; 32-LABEL: f64_fcmp_olt_f64_val:551; 32:       # %bb.0: # %entry552; 32-NEXT:    mov.d $f0, $f14553; 32-NEXT:    ldc1 $f2, 24($sp)554; 32-NEXT:    ldc1 $f4, 16($sp)555; 32-NEXT:    c.olt.d $f4, $f2556; 32-NEXT:    jr $ra557; 32-NEXT:    movt.d $f0, $f12, $fcc0558;559; 32R2-LABEL: f64_fcmp_olt_f64_val:560; 32R2:       # %bb.0: # %entry561; 32R2-NEXT:    mov.d $f0, $f14562; 32R2-NEXT:    ldc1 $f2, 24($sp)563; 32R2-NEXT:    ldc1 $f4, 16($sp)564; 32R2-NEXT:    c.olt.d $f4, $f2565; 32R2-NEXT:    jr $ra566; 32R2-NEXT:    movt.d $f0, $f12, $fcc0567;568; 32R6-LABEL: f64_fcmp_olt_f64_val:569; 32R6:       # %bb.0: # %entry570; 32R6-NEXT:    ldc1 $f0, 24($sp)571; 32R6-NEXT:    ldc1 $f1, 16($sp)572; 32R6-NEXT:    cmp.lt.d $f0, $f1, $f0573; 32R6-NEXT:    mfc1 $1, $f0574; 32R6-NEXT:    mtc1 $1, $f0575; 32R6-NEXT:    jr $ra576; 32R6-NEXT:    sel.d $f0, $f14, $f12577;578; 64-LABEL: f64_fcmp_olt_f64_val:579; 64:       # %bb.0: # %entry580; 64-NEXT:    mov.d $f0, $f13581; 64-NEXT:    c.olt.d $f14, $f15582; 64-NEXT:    jr $ra583; 64-NEXT:    movt.d $f0, $f12, $fcc0584;585; 64R2-LABEL: f64_fcmp_olt_f64_val:586; 64R2:       # %bb.0: # %entry587; 64R2-NEXT:    mov.d $f0, $f13588; 64R2-NEXT:    c.olt.d $f14, $f15589; 64R2-NEXT:    jr $ra590; 64R2-NEXT:    movt.d $f0, $f12, $fcc0591;592; 64R6-LABEL: f64_fcmp_olt_f64_val:593; 64R6:       # %bb.0: # %entry594; 64R6-NEXT:    cmp.lt.d $f0, $f14, $f15595; 64R6-NEXT:    mfc1 $1, $f0596; 64R6-NEXT:    mtc1 $1, $f0597; 64R6-NEXT:    jr $ra598; 64R6-NEXT:    sel.d $f0, $f13, $f12599entry:600  %cmp = fcmp olt double %f2, %f3601  %cond = select i1 %cmp, double %f0, double %f1602  ret double %cond603}604 605define double @f64_fcmp_ogt_f64_val(double %f0, double %f1, double %f2, double %f3) nounwind readnone {606; 32-LABEL: f64_fcmp_ogt_f64_val:607; 32:       # %bb.0: # %entry608; 32-NEXT:    mov.d $f0, $f14609; 32-NEXT:    ldc1 $f2, 24($sp)610; 32-NEXT:    ldc1 $f4, 16($sp)611; 32-NEXT:    c.ule.d $f4, $f2612; 32-NEXT:    jr $ra613; 32-NEXT:    movf.d $f0, $f12, $fcc0614;615; 32R2-LABEL: f64_fcmp_ogt_f64_val:616; 32R2:       # %bb.0: # %entry617; 32R2-NEXT:    mov.d $f0, $f14618; 32R2-NEXT:    ldc1 $f2, 24($sp)619; 32R2-NEXT:    ldc1 $f4, 16($sp)620; 32R2-NEXT:    c.ule.d $f4, $f2621; 32R2-NEXT:    jr $ra622; 32R2-NEXT:    movf.d $f0, $f12, $fcc0623;624; 32R6-LABEL: f64_fcmp_ogt_f64_val:625; 32R6:       # %bb.0: # %entry626; 32R6-NEXT:    ldc1 $f0, 16($sp)627; 32R6-NEXT:    ldc1 $f1, 24($sp)628; 32R6-NEXT:    cmp.lt.d $f0, $f1, $f0629; 32R6-NEXT:    mfc1 $1, $f0630; 32R6-NEXT:    mtc1 $1, $f0631; 32R6-NEXT:    jr $ra632; 32R6-NEXT:    sel.d $f0, $f14, $f12633;634; 64-LABEL: f64_fcmp_ogt_f64_val:635; 64:       # %bb.0: # %entry636; 64-NEXT:    mov.d $f0, $f13637; 64-NEXT:    c.ule.d $f14, $f15638; 64-NEXT:    jr $ra639; 64-NEXT:    movf.d $f0, $f12, $fcc0640;641; 64R2-LABEL: f64_fcmp_ogt_f64_val:642; 64R2:       # %bb.0: # %entry643; 64R2-NEXT:    mov.d $f0, $f13644; 64R2-NEXT:    c.ule.d $f14, $f15645; 64R2-NEXT:    jr $ra646; 64R2-NEXT:    movf.d $f0, $f12, $fcc0647;648; 64R6-LABEL: f64_fcmp_ogt_f64_val:649; 64R6:       # %bb.0: # %entry650; 64R6-NEXT:    cmp.lt.d $f0, $f15, $f14651; 64R6-NEXT:    mfc1 $1, $f0652; 64R6-NEXT:    mtc1 $1, $f0653; 64R6-NEXT:    jr $ra654; 64R6-NEXT:    sel.d $f0, $f13, $f12655entry:656  %cmp = fcmp ogt double %f2, %f3657  %cond = select i1 %cmp, double %f0, double %f1658  ret double %cond659}660 661define float @f64_fcmp_ogt_f32_val(float %f0, float %f1, double %f2, double %f3) nounwind readnone {662; 32-LABEL: f64_fcmp_ogt_f32_val:663; 32:       # %bb.0: # %entry664; 32-NEXT:    mov.s $f0, $f14665; 32-NEXT:    mtc1 $6, $f2666; 32-NEXT:    mtc1 $7, $f3667; 32-NEXT:    ldc1 $f4, 16($sp)668; 32-NEXT:    c.ule.d $f2, $f4669; 32-NEXT:    jr $ra670; 32-NEXT:    movf.s $f0, $f12, $fcc0671;672; 32R2-LABEL: f64_fcmp_ogt_f32_val:673; 32R2:       # %bb.0: # %entry674; 32R2-NEXT:    mov.s $f0, $f14675; 32R2-NEXT:    mtc1 $6, $f2676; 32R2-NEXT:    mthc1 $7, $f2677; 32R2-NEXT:    ldc1 $f4, 16($sp)678; 32R2-NEXT:    c.ule.d $f2, $f4679; 32R2-NEXT:    jr $ra680; 32R2-NEXT:    movf.s $f0, $f12, $fcc0681;682; 32R6-LABEL: f64_fcmp_ogt_f32_val:683; 32R6:       # %bb.0: # %entry684; 32R6-NEXT:    mtc1 $6, $f0685; 32R6-NEXT:    mthc1 $7, $f0686; 32R6-NEXT:    ldc1 $f1, 16($sp)687; 32R6-NEXT:    cmp.lt.d $f0, $f1, $f0688; 32R6-NEXT:    jr $ra689; 32R6-NEXT:    sel.s $f0, $f14, $f12690;691; 64-LABEL: f64_fcmp_ogt_f32_val:692; 64:       # %bb.0: # %entry693; 64-NEXT:    mov.s $f0, $f13694; 64-NEXT:    c.ule.d $f14, $f15695; 64-NEXT:    jr $ra696; 64-NEXT:    movf.s $f0, $f12, $fcc0697;698; 64R2-LABEL: f64_fcmp_ogt_f32_val:699; 64R2:       # %bb.0: # %entry700; 64R2-NEXT:    mov.s $f0, $f13701; 64R2-NEXT:    c.ule.d $f14, $f15702; 64R2-NEXT:    jr $ra703; 64R2-NEXT:    movf.s $f0, $f12, $fcc0704;705; 64R6-LABEL: f64_fcmp_ogt_f32_val:706; 64R6:       # %bb.0: # %entry707; 64R6-NEXT:    cmp.lt.d $f0, $f15, $f14708; 64R6-NEXT:    jr $ra709; 64R6-NEXT:    sel.s $f0, $f13, $f12710entry:711  %cmp = fcmp ogt double %f2, %f3712  %cond = select i1 %cmp, float %f0, float %f1713  ret float %cond714}715 716define i32 @f32_fcmp_oeq_i32_val(i32 signext %f0, i32 signext %f1, float %f2, float %f3) nounwind readnone {717; 32-LABEL: f32_fcmp_oeq_i32_val:718; 32:       # %bb.0: # %entry719; 32-NEXT:    mtc1 $7, $f0720; 32-NEXT:    mtc1 $6, $f1721; 32-NEXT:    c.eq.s $f1, $f0722; 32-NEXT:    movt $5, $4, $fcc0723; 32-NEXT:    jr $ra724; 32-NEXT:    move $2, $5725;726; 32R2-LABEL: f32_fcmp_oeq_i32_val:727; 32R2:       # %bb.0: # %entry728; 32R2-NEXT:    mtc1 $7, $f0729; 32R2-NEXT:    mtc1 $6, $f1730; 32R2-NEXT:    c.eq.s $f1, $f0731; 32R2-NEXT:    movt $5, $4, $fcc0732; 32R2-NEXT:    jr $ra733; 32R2-NEXT:    move $2, $5734;735; 32R6-LABEL: f32_fcmp_oeq_i32_val:736; 32R6:       # %bb.0: # %entry737; 32R6-NEXT:    mtc1 $7, $f0738; 32R6-NEXT:    mtc1 $6, $f1739; 32R6-NEXT:    cmp.eq.s $f0, $f1, $f0740; 32R6-NEXT:    mfc1 $1, $f0741; 32R6-NEXT:    andi $1, $1, 1742; 32R6-NEXT:    seleqz $2, $5, $1743; 32R6-NEXT:    selnez $1, $4, $1744; 32R6-NEXT:    jr $ra745; 32R6-NEXT:    or $2, $1, $2746;747; 64-LABEL: f32_fcmp_oeq_i32_val:748; 64:       # %bb.0: # %entry749; 64-NEXT:    c.eq.s $f14, $f15750; 64-NEXT:    movt $5, $4, $fcc0751; 64-NEXT:    jr $ra752; 64-NEXT:    move $2, $5753;754; 64R2-LABEL: f32_fcmp_oeq_i32_val:755; 64R2:       # %bb.0: # %entry756; 64R2-NEXT:    c.eq.s $f14, $f15757; 64R2-NEXT:    movt $5, $4, $fcc0758; 64R2-NEXT:    jr $ra759; 64R2-NEXT:    move $2, $5760;761; 64R6-LABEL: f32_fcmp_oeq_i32_val:762; 64R6:       # %bb.0: # %entry763; 64R6-NEXT:    cmp.eq.s $f0, $f14, $f15764; 64R6-NEXT:    mfc1 $1, $f0765; 64R6-NEXT:    andi $1, $1, 1766; 64R6-NEXT:    seleqz $2, $5, $1767; 64R6-NEXT:    selnez $1, $4, $1768; 64R6-NEXT:    jr $ra769; 64R6-NEXT:    or $2, $1, $2770entry:771  %cmp = fcmp oeq float %f2, %f3772  %cond = select i1 %cmp, i32 %f0, i32 %f1773  ret i32 %cond774}775 776define i32 @f32_fcmp_olt_i32_val(i32 signext %f0, i32 signext %f1, float %f2, float %f3) nounwind readnone {777; 32-LABEL: f32_fcmp_olt_i32_val:778; 32:       # %bb.0: # %entry779; 32-NEXT:    mtc1 $7, $f0780; 32-NEXT:    mtc1 $6, $f1781; 32-NEXT:    c.olt.s $f1, $f0782; 32-NEXT:    movt $5, $4, $fcc0783; 32-NEXT:    jr $ra784; 32-NEXT:    move $2, $5785;786; 32R2-LABEL: f32_fcmp_olt_i32_val:787; 32R2:       # %bb.0: # %entry788; 32R2-NEXT:    mtc1 $7, $f0789; 32R2-NEXT:    mtc1 $6, $f1790; 32R2-NEXT:    c.olt.s $f1, $f0791; 32R2-NEXT:    movt $5, $4, $fcc0792; 32R2-NEXT:    jr $ra793; 32R2-NEXT:    move $2, $5794;795; 32R6-LABEL: f32_fcmp_olt_i32_val:796; 32R6:       # %bb.0: # %entry797; 32R6-NEXT:    mtc1 $7, $f0798; 32R6-NEXT:    mtc1 $6, $f1799; 32R6-NEXT:    cmp.lt.s $f0, $f1, $f0800; 32R6-NEXT:    mfc1 $1, $f0801; 32R6-NEXT:    andi $1, $1, 1802; 32R6-NEXT:    seleqz $2, $5, $1803; 32R6-NEXT:    selnez $1, $4, $1804; 32R6-NEXT:    jr $ra805; 32R6-NEXT:    or $2, $1, $2806;807; 64-LABEL: f32_fcmp_olt_i32_val:808; 64:       # %bb.0: # %entry809; 64-NEXT:    c.olt.s $f14, $f15810; 64-NEXT:    movt $5, $4, $fcc0811; 64-NEXT:    jr $ra812; 64-NEXT:    move $2, $5813;814; 64R2-LABEL: f32_fcmp_olt_i32_val:815; 64R2:       # %bb.0: # %entry816; 64R2-NEXT:    c.olt.s $f14, $f15817; 64R2-NEXT:    movt $5, $4, $fcc0818; 64R2-NEXT:    jr $ra819; 64R2-NEXT:    move $2, $5820;821; 64R6-LABEL: f32_fcmp_olt_i32_val:822; 64R6:       # %bb.0: # %entry823; 64R6-NEXT:    cmp.lt.s $f0, $f14, $f15824; 64R6-NEXT:    mfc1 $1, $f0825; 64R6-NEXT:    andi $1, $1, 1826; 64R6-NEXT:    seleqz $2, $5, $1827; 64R6-NEXT:    selnez $1, $4, $1828; 64R6-NEXT:    jr $ra829; 64R6-NEXT:    or $2, $1, $2830entry:831  %cmp = fcmp olt float %f2, %f3832  %cond = select i1 %cmp, i32 %f0, i32 %f1833  ret i32 %cond834}835 836define i32 @f32_fcmp_ogt_i32_val(i32 signext %f0, i32 signext %f1, float %f2, float %f3) nounwind readnone {837; 32-LABEL: f32_fcmp_ogt_i32_val:838; 32:       # %bb.0: # %entry839; 32-NEXT:    mtc1 $7, $f0840; 32-NEXT:    mtc1 $6, $f1841; 32-NEXT:    c.ule.s $f1, $f0842; 32-NEXT:    movf $5, $4, $fcc0843; 32-NEXT:    jr $ra844; 32-NEXT:    move $2, $5845;846; 32R2-LABEL: f32_fcmp_ogt_i32_val:847; 32R2:       # %bb.0: # %entry848; 32R2-NEXT:    mtc1 $7, $f0849; 32R2-NEXT:    mtc1 $6, $f1850; 32R2-NEXT:    c.ule.s $f1, $f0851; 32R2-NEXT:    movf $5, $4, $fcc0852; 32R2-NEXT:    jr $ra853; 32R2-NEXT:    move $2, $5854;855; 32R6-LABEL: f32_fcmp_ogt_i32_val:856; 32R6:       # %bb.0: # %entry857; 32R6-NEXT:    mtc1 $6, $f0858; 32R6-NEXT:    mtc1 $7, $f1859; 32R6-NEXT:    cmp.lt.s $f0, $f1, $f0860; 32R6-NEXT:    mfc1 $1, $f0861; 32R6-NEXT:    andi $1, $1, 1862; 32R6-NEXT:    seleqz $2, $5, $1863; 32R6-NEXT:    selnez $1, $4, $1864; 32R6-NEXT:    jr $ra865; 32R6-NEXT:    or $2, $1, $2866;867; 64-LABEL: f32_fcmp_ogt_i32_val:868; 64:       # %bb.0: # %entry869; 64-NEXT:    c.ule.s $f14, $f15870; 64-NEXT:    movf $5, $4, $fcc0871; 64-NEXT:    jr $ra872; 64-NEXT:    move $2, $5873;874; 64R2-LABEL: f32_fcmp_ogt_i32_val:875; 64R2:       # %bb.0: # %entry876; 64R2-NEXT:    c.ule.s $f14, $f15877; 64R2-NEXT:    movf $5, $4, $fcc0878; 64R2-NEXT:    jr $ra879; 64R2-NEXT:    move $2, $5880;881; 64R6-LABEL: f32_fcmp_ogt_i32_val:882; 64R6:       # %bb.0: # %entry883; 64R6-NEXT:    cmp.lt.s $f0, $f15, $f14884; 64R6-NEXT:    mfc1 $1, $f0885; 64R6-NEXT:    andi $1, $1, 1886; 64R6-NEXT:    seleqz $2, $5, $1887; 64R6-NEXT:    selnez $1, $4, $1888; 64R6-NEXT:    jr $ra889; 64R6-NEXT:    or $2, $1, $2890entry:891  %cmp = fcmp ogt float %f2, %f3892  %cond = select i1 %cmp, i32 %f0, i32 %f1893  ret i32 %cond894}895 896define i32 @f64_fcmp_oeq_i32_val(i32 signext %f0, i32 signext %f1) nounwind readonly {897; 32-LABEL: f64_fcmp_oeq_i32_val:898; 32:       # %bb.0: # %entry899; 32-NEXT:    lui $2, %hi(_gp_disp)900; 32-NEXT:    addiu $2, $2, %lo(_gp_disp)901; 32-NEXT:    addu $1, $2, $25902; 32-NEXT:    lw $2, %got(d3)($1)903; 32-NEXT:    ldc1 $f0, 0($2)904; 32-NEXT:    lw $1, %got(d2)($1)905; 32-NEXT:    ldc1 $f2, 0($1)906; 32-NEXT:    c.eq.d $f2, $f0907; 32-NEXT:    movt $5, $4, $fcc0908; 32-NEXT:    jr $ra909; 32-NEXT:    move $2, $5910;911; 32R2-LABEL: f64_fcmp_oeq_i32_val:912; 32R2:       # %bb.0: # %entry913; 32R2-NEXT:    lui $2, %hi(_gp_disp)914; 32R2-NEXT:    addiu $2, $2, %lo(_gp_disp)915; 32R2-NEXT:    addu $1, $2, $25916; 32R2-NEXT:    lw $2, %got(d3)($1)917; 32R2-NEXT:    ldc1 $f0, 0($2)918; 32R2-NEXT:    lw $1, %got(d2)($1)919; 32R2-NEXT:    ldc1 $f2, 0($1)920; 32R2-NEXT:    c.eq.d $f2, $f0921; 32R2-NEXT:    movt $5, $4, $fcc0922; 32R2-NEXT:    jr $ra923; 32R2-NEXT:    move $2, $5924;925; 32R6-LABEL: f64_fcmp_oeq_i32_val:926; 32R6:       # %bb.0: # %entry927; 32R6-NEXT:    lui $2, %hi(_gp_disp)928; 32R6-NEXT:    addiu $2, $2, %lo(_gp_disp)929; 32R6-NEXT:    addu $1, $2, $25930; 32R6-NEXT:    lw $2, %got(d3)($1)931; 32R6-NEXT:    ldc1 $f0, 0($2)932; 32R6-NEXT:    lw $1, %got(d2)($1)933; 32R6-NEXT:    ldc1 $f1, 0($1)934; 32R6-NEXT:    cmp.eq.d $f0, $f1, $f0935; 32R6-NEXT:    mfc1 $1, $f0936; 32R6-NEXT:    andi $1, $1, 1937; 32R6-NEXT:    seleqz $2, $5, $1938; 32R6-NEXT:    selnez $1, $4, $1939; 32R6-NEXT:    jr $ra940; 32R6-NEXT:    or $2, $1, $2941;942; 64-LABEL: f64_fcmp_oeq_i32_val:943; 64:       # %bb.0: # %entry944; 64-NEXT:    lui $1, %hi(%neg(%gp_rel(f64_fcmp_oeq_i32_val)))945; 64-NEXT:    daddu $1, $1, $25946; 64-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(f64_fcmp_oeq_i32_val)))947; 64-NEXT:    ld $2, %got_disp(d3)($1)948; 64-NEXT:    ldc1 $f0, 0($2)949; 64-NEXT:    ld $1, %got_disp(d2)($1)950; 64-NEXT:    ldc1 $f1, 0($1)951; 64-NEXT:    c.eq.d $f1, $f0952; 64-NEXT:    movt $5, $4, $fcc0953; 64-NEXT:    jr $ra954; 64-NEXT:    move $2, $5955;956; 64R2-LABEL: f64_fcmp_oeq_i32_val:957; 64R2:       # %bb.0: # %entry958; 64R2-NEXT:    lui $1, %hi(%neg(%gp_rel(f64_fcmp_oeq_i32_val)))959; 64R2-NEXT:    daddu $1, $1, $25960; 64R2-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(f64_fcmp_oeq_i32_val)))961; 64R2-NEXT:    ld $2, %got_disp(d3)($1)962; 64R2-NEXT:    ldc1 $f0, 0($2)963; 64R2-NEXT:    ld $1, %got_disp(d2)($1)964; 64R2-NEXT:    ldc1 $f1, 0($1)965; 64R2-NEXT:    c.eq.d $f1, $f0966; 64R2-NEXT:    movt $5, $4, $fcc0967; 64R2-NEXT:    jr $ra968; 64R2-NEXT:    move $2, $5969;970; 64R6-LABEL: f64_fcmp_oeq_i32_val:971; 64R6:       # %bb.0: # %entry972; 64R6-NEXT:    lui $1, %hi(%neg(%gp_rel(f64_fcmp_oeq_i32_val)))973; 64R6-NEXT:    daddu $1, $1, $25974; 64R6-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(f64_fcmp_oeq_i32_val)))975; 64R6-NEXT:    ld $2, %got_disp(d3)($1)976; 64R6-NEXT:    ldc1 $f0, 0($2)977; 64R6-NEXT:    ld $1, %got_disp(d2)($1)978; 64R6-NEXT:    ldc1 $f1, 0($1)979; 64R6-NEXT:    cmp.eq.d $f0, $f1, $f0980; 64R6-NEXT:    mfc1 $1, $f0981; 64R6-NEXT:    andi $1, $1, 1982; 64R6-NEXT:    seleqz $2, $5, $1983; 64R6-NEXT:    selnez $1, $4, $1984; 64R6-NEXT:    jr $ra985; 64R6-NEXT:    or $2, $1, $2986entry:987  %tmp = load double, ptr @d2, align 8988  %tmp1 = load double, ptr @d3, align 8989  %cmp = fcmp oeq double %tmp, %tmp1990  %cond = select i1 %cmp, i32 %f0, i32 %f1991  ret i32 %cond992}993 994define i32 @f64_fcmp_olt_i32_val(i32 signext %f0, i32 signext %f1) nounwind readonly {995; 32-LABEL: f64_fcmp_olt_i32_val:996; 32:       # %bb.0: # %entry997; 32-NEXT:    lui $2, %hi(_gp_disp)998; 32-NEXT:    addiu $2, $2, %lo(_gp_disp)999; 32-NEXT:    addu $1, $2, $251000; 32-NEXT:    lw $2, %got(d3)($1)1001; 32-NEXT:    ldc1 $f0, 0($2)1002; 32-NEXT:    lw $1, %got(d2)($1)1003; 32-NEXT:    ldc1 $f2, 0($1)1004; 32-NEXT:    c.olt.d $f2, $f01005; 32-NEXT:    movt $5, $4, $fcc01006; 32-NEXT:    jr $ra1007; 32-NEXT:    move $2, $51008;1009; 32R2-LABEL: f64_fcmp_olt_i32_val:1010; 32R2:       # %bb.0: # %entry1011; 32R2-NEXT:    lui $2, %hi(_gp_disp)1012; 32R2-NEXT:    addiu $2, $2, %lo(_gp_disp)1013; 32R2-NEXT:    addu $1, $2, $251014; 32R2-NEXT:    lw $2, %got(d3)($1)1015; 32R2-NEXT:    ldc1 $f0, 0($2)1016; 32R2-NEXT:    lw $1, %got(d2)($1)1017; 32R2-NEXT:    ldc1 $f2, 0($1)1018; 32R2-NEXT:    c.olt.d $f2, $f01019; 32R2-NEXT:    movt $5, $4, $fcc01020; 32R2-NEXT:    jr $ra1021; 32R2-NEXT:    move $2, $51022;1023; 32R6-LABEL: f64_fcmp_olt_i32_val:1024; 32R6:       # %bb.0: # %entry1025; 32R6-NEXT:    lui $2, %hi(_gp_disp)1026; 32R6-NEXT:    addiu $2, $2, %lo(_gp_disp)1027; 32R6-NEXT:    addu $1, $2, $251028; 32R6-NEXT:    lw $2, %got(d3)($1)1029; 32R6-NEXT:    ldc1 $f0, 0($2)1030; 32R6-NEXT:    lw $1, %got(d2)($1)1031; 32R6-NEXT:    ldc1 $f1, 0($1)1032; 32R6-NEXT:    cmp.lt.d $f0, $f1, $f01033; 32R6-NEXT:    mfc1 $1, $f01034; 32R6-NEXT:    andi $1, $1, 11035; 32R6-NEXT:    seleqz $2, $5, $11036; 32R6-NEXT:    selnez $1, $4, $11037; 32R6-NEXT:    jr $ra1038; 32R6-NEXT:    or $2, $1, $21039;1040; 64-LABEL: f64_fcmp_olt_i32_val:1041; 64:       # %bb.0: # %entry1042; 64-NEXT:    lui $1, %hi(%neg(%gp_rel(f64_fcmp_olt_i32_val)))1043; 64-NEXT:    daddu $1, $1, $251044; 64-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(f64_fcmp_olt_i32_val)))1045; 64-NEXT:    ld $2, %got_disp(d3)($1)1046; 64-NEXT:    ldc1 $f0, 0($2)1047; 64-NEXT:    ld $1, %got_disp(d2)($1)1048; 64-NEXT:    ldc1 $f1, 0($1)1049; 64-NEXT:    c.olt.d $f1, $f01050; 64-NEXT:    movt $5, $4, $fcc01051; 64-NEXT:    jr $ra1052; 64-NEXT:    move $2, $51053;1054; 64R2-LABEL: f64_fcmp_olt_i32_val:1055; 64R2:       # %bb.0: # %entry1056; 64R2-NEXT:    lui $1, %hi(%neg(%gp_rel(f64_fcmp_olt_i32_val)))1057; 64R2-NEXT:    daddu $1, $1, $251058; 64R2-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(f64_fcmp_olt_i32_val)))1059; 64R2-NEXT:    ld $2, %got_disp(d3)($1)1060; 64R2-NEXT:    ldc1 $f0, 0($2)1061; 64R2-NEXT:    ld $1, %got_disp(d2)($1)1062; 64R2-NEXT:    ldc1 $f1, 0($1)1063; 64R2-NEXT:    c.olt.d $f1, $f01064; 64R2-NEXT:    movt $5, $4, $fcc01065; 64R2-NEXT:    jr $ra1066; 64R2-NEXT:    move $2, $51067;1068; 64R6-LABEL: f64_fcmp_olt_i32_val:1069; 64R6:       # %bb.0: # %entry1070; 64R6-NEXT:    lui $1, %hi(%neg(%gp_rel(f64_fcmp_olt_i32_val)))1071; 64R6-NEXT:    daddu $1, $1, $251072; 64R6-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(f64_fcmp_olt_i32_val)))1073; 64R6-NEXT:    ld $2, %got_disp(d3)($1)1074; 64R6-NEXT:    ldc1 $f0, 0($2)1075; 64R6-NEXT:    ld $1, %got_disp(d2)($1)1076; 64R6-NEXT:    ldc1 $f1, 0($1)1077; 64R6-NEXT:    cmp.lt.d $f0, $f1, $f01078; 64R6-NEXT:    mfc1 $1, $f01079; 64R6-NEXT:    andi $1, $1, 11080; 64R6-NEXT:    seleqz $2, $5, $11081; 64R6-NEXT:    selnez $1, $4, $11082; 64R6-NEXT:    jr $ra1083; 64R6-NEXT:    or $2, $1, $21084entry:1085  %tmp = load double, ptr @d2, align 81086  %tmp1 = load double, ptr @d3, align 81087  %cmp = fcmp olt double %tmp, %tmp11088  %cond = select i1 %cmp, i32 %f0, i32 %f11089  ret i32 %cond1090}1091 1092define i32 @f64_fcmp_ogt_i32_val(i32 signext %f0, i32 signext %f1) nounwind readonly {1093; 32-LABEL: f64_fcmp_ogt_i32_val:1094; 32:       # %bb.0: # %entry1095; 32-NEXT:    lui $2, %hi(_gp_disp)1096; 32-NEXT:    addiu $2, $2, %lo(_gp_disp)1097; 32-NEXT:    addu $1, $2, $251098; 32-NEXT:    lw $2, %got(d3)($1)1099; 32-NEXT:    ldc1 $f0, 0($2)1100; 32-NEXT:    lw $1, %got(d2)($1)1101; 32-NEXT:    ldc1 $f2, 0($1)1102; 32-NEXT:    c.ule.d $f2, $f01103; 32-NEXT:    movf $5, $4, $fcc01104; 32-NEXT:    jr $ra1105; 32-NEXT:    move $2, $51106;1107; 32R2-LABEL: f64_fcmp_ogt_i32_val:1108; 32R2:       # %bb.0: # %entry1109; 32R2-NEXT:    lui $2, %hi(_gp_disp)1110; 32R2-NEXT:    addiu $2, $2, %lo(_gp_disp)1111; 32R2-NEXT:    addu $1, $2, $251112; 32R2-NEXT:    lw $2, %got(d3)($1)1113; 32R2-NEXT:    ldc1 $f0, 0($2)1114; 32R2-NEXT:    lw $1, %got(d2)($1)1115; 32R2-NEXT:    ldc1 $f2, 0($1)1116; 32R2-NEXT:    c.ule.d $f2, $f01117; 32R2-NEXT:    movf $5, $4, $fcc01118; 32R2-NEXT:    jr $ra1119; 32R2-NEXT:    move $2, $51120;1121; 32R6-LABEL: f64_fcmp_ogt_i32_val:1122; 32R6:       # %bb.0: # %entry1123; 32R6-NEXT:    lui $2, %hi(_gp_disp)1124; 32R6-NEXT:    addiu $2, $2, %lo(_gp_disp)1125; 32R6-NEXT:    addu $1, $2, $251126; 32R6-NEXT:    lw $2, %got(d2)($1)1127; 32R6-NEXT:    ldc1 $f0, 0($2)1128; 32R6-NEXT:    lw $1, %got(d3)($1)1129; 32R6-NEXT:    ldc1 $f1, 0($1)1130; 32R6-NEXT:    cmp.lt.d $f0, $f1, $f01131; 32R6-NEXT:    mfc1 $1, $f01132; 32R6-NEXT:    andi $1, $1, 11133; 32R6-NEXT:    seleqz $2, $5, $11134; 32R6-NEXT:    selnez $1, $4, $11135; 32R6-NEXT:    jr $ra1136; 32R6-NEXT:    or $2, $1, $21137;1138; 64-LABEL: f64_fcmp_ogt_i32_val:1139; 64:       # %bb.0: # %entry1140; 64-NEXT:    lui $1, %hi(%neg(%gp_rel(f64_fcmp_ogt_i32_val)))1141; 64-NEXT:    daddu $1, $1, $251142; 64-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(f64_fcmp_ogt_i32_val)))1143; 64-NEXT:    ld $2, %got_disp(d3)($1)1144; 64-NEXT:    ldc1 $f0, 0($2)1145; 64-NEXT:    ld $1, %got_disp(d2)($1)1146; 64-NEXT:    ldc1 $f1, 0($1)1147; 64-NEXT:    c.ule.d $f1, $f01148; 64-NEXT:    movf $5, $4, $fcc01149; 64-NEXT:    jr $ra1150; 64-NEXT:    move $2, $51151;1152; 64R2-LABEL: f64_fcmp_ogt_i32_val:1153; 64R2:       # %bb.0: # %entry1154; 64R2-NEXT:    lui $1, %hi(%neg(%gp_rel(f64_fcmp_ogt_i32_val)))1155; 64R2-NEXT:    daddu $1, $1, $251156; 64R2-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(f64_fcmp_ogt_i32_val)))1157; 64R2-NEXT:    ld $2, %got_disp(d3)($1)1158; 64R2-NEXT:    ldc1 $f0, 0($2)1159; 64R2-NEXT:    ld $1, %got_disp(d2)($1)1160; 64R2-NEXT:    ldc1 $f1, 0($1)1161; 64R2-NEXT:    c.ule.d $f1, $f01162; 64R2-NEXT:    movf $5, $4, $fcc01163; 64R2-NEXT:    jr $ra1164; 64R2-NEXT:    move $2, $51165;1166; 64R6-LABEL: f64_fcmp_ogt_i32_val:1167; 64R6:       # %bb.0: # %entry1168; 64R6-NEXT:    lui $1, %hi(%neg(%gp_rel(f64_fcmp_ogt_i32_val)))1169; 64R6-NEXT:    daddu $1, $1, $251170; 64R6-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(f64_fcmp_ogt_i32_val)))1171; 64R6-NEXT:    ld $2, %got_disp(d2)($1)1172; 64R6-NEXT:    ldc1 $f0, 0($2)1173; 64R6-NEXT:    ld $1, %got_disp(d3)($1)1174; 64R6-NEXT:    ldc1 $f1, 0($1)1175; 64R6-NEXT:    cmp.lt.d $f0, $f1, $f01176; 64R6-NEXT:    mfc1 $1, $f01177; 64R6-NEXT:    andi $1, $1, 11178; 64R6-NEXT:    seleqz $2, $5, $11179; 64R6-NEXT:    selnez $1, $4, $11180; 64R6-NEXT:    jr $ra1181; 64R6-NEXT:    or $2, $1, $21182entry:1183  %tmp = load double, ptr @d2, align 81184  %tmp1 = load double, ptr @d3, align 81185  %cmp = fcmp ogt double %tmp, %tmp11186  %cond = select i1 %cmp, i32 %f0, i32 %f11187  ret i32 %cond1188}1189