brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.9 KiB · 7aaf00f Raw
328 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=mipsisa32r6 < %s | FileCheck %s --check-prefix=MIPS32R63; RUN: llc --mtriple=mips64 < %s | FileCheck %s --check-prefix=MIPS64R24 5declare float @llvm.maximumnum.f32(float, float)6declare double @llvm.maximumnum.f64(double, double)7declare float @llvm.minimumnum.f32(float, float)8declare double @llvm.minimumnum.f64(double, double)9 10define float @maximumnum_float(float %x, float %y) {11; MIPS32R6-LABEL: maximumnum_float:12; MIPS32R6:       # %bb.0:13; MIPS32R6-NEXT:    min.s $f0, $f14, $f1414; MIPS32R6-NEXT:    min.s $f1, $f12, $f1215; MIPS32R6-NEXT:    jr $ra16; MIPS32R6-NEXT:    max.s $f0, $f1, $f017;18; MIPS64R2-LABEL: maximumnum_float:19; MIPS64R2:       # %bb.0:20; MIPS64R2-NEXT:    c.un.s $f12, $f1221; MIPS64R2-NEXT:    movt.s $f12, $f13, $fcc022; MIPS64R2-NEXT:    c.un.s $f13, $f1323; MIPS64R2-NEXT:    movt.s $f13, $f12, $fcc024; MIPS64R2-NEXT:    c.ule.s $f12, $f1325; MIPS64R2-NEXT:    mov.s $f0, $f1326; MIPS64R2-NEXT:    movf.s $f0, $f12, $fcc027; MIPS64R2-NEXT:    mfc1 $1, $f1228; MIPS64R2-NEXT:    mov.s $f1, $f029; MIPS64R2-NEXT:    movz.s $f1, $f12, $130; MIPS64R2-NEXT:    mfc1 $1, $f1331; MIPS64R2-NEXT:    movz.s $f1, $f13, $132; MIPS64R2-NEXT:    mtc1 $zero, $f233; MIPS64R2-NEXT:    c.eq.s $f0, $f234; MIPS64R2-NEXT:    jr $ra35; MIPS64R2-NEXT:    movt.s $f0, $f1, $fcc036  %z = call float @llvm.maximumnum.f32(float %x, float %y)37  ret float %z38}39 40define float @maximumnum_float_nsz(float %x, float %y) {41; MIPS32R6-LABEL: maximumnum_float_nsz:42; MIPS32R6:       # %bb.0:43; MIPS32R6-NEXT:    min.s $f0, $f14, $f1444; MIPS32R6-NEXT:    min.s $f1, $f12, $f1245; MIPS32R6-NEXT:    jr $ra46; MIPS32R6-NEXT:    max.s $f0, $f1, $f047;48; MIPS64R2-LABEL: maximumnum_float_nsz:49; MIPS64R2:       # %bb.0:50; MIPS64R2-NEXT:    mov.s $f0, $f1351; MIPS64R2-NEXT:    c.un.s $f12, $f1252; MIPS64R2-NEXT:    movt.s $f12, $f13, $fcc053; MIPS64R2-NEXT:    c.un.s $f13, $f1354; MIPS64R2-NEXT:    movt.s $f0, $f12, $fcc055; MIPS64R2-NEXT:    c.ule.s $f12, $f056; MIPS64R2-NEXT:    jr $ra57; MIPS64R2-NEXT:    movf.s $f0, $f12, $fcc058  %z = call nsz float @llvm.maximumnum.f32(float %x, float %y)59  ret float %z60}61 62define float @maximumnum_float_nnan(float %x, float %y) {63; MIPS32R6-LABEL: maximumnum_float_nnan:64; MIPS32R6:       # %bb.0:65; MIPS32R6-NEXT:    jr $ra66; MIPS32R6-NEXT:    max.s $f0, $f12, $f1467;68; MIPS64R2-LABEL: maximumnum_float_nnan:69; MIPS64R2:       # %bb.0:70; MIPS64R2-NEXT:    c.ule.s $f12, $f1371; MIPS64R2-NEXT:    mov.s $f0, $f1372; MIPS64R2-NEXT:    movf.s $f0, $f12, $fcc073; MIPS64R2-NEXT:    mfc1 $1, $f1274; MIPS64R2-NEXT:    mov.s $f1, $f075; MIPS64R2-NEXT:    movz.s $f1, $f12, $176; MIPS64R2-NEXT:    mfc1 $1, $f1377; MIPS64R2-NEXT:    movz.s $f1, $f13, $178; MIPS64R2-NEXT:    mtc1 $zero, $f279; MIPS64R2-NEXT:    c.eq.s $f0, $f280; MIPS64R2-NEXT:    jr $ra81; MIPS64R2-NEXT:    movt.s $f0, $f1, $fcc082  %z = call nnan float @llvm.maximumnum.f32(float %x, float %y)83  ret float %z84}85 86 87define double @maximumnum_double(double %x, double %y) {88; MIPS32R6-LABEL: maximumnum_double:89; MIPS32R6:       # %bb.0:90; MIPS32R6-NEXT:    min.d $f0, $f14, $f1491; MIPS32R6-NEXT:    min.d $f1, $f12, $f1292; MIPS32R6-NEXT:    jr $ra93; MIPS32R6-NEXT:    max.d $f0, $f1, $f094;95; MIPS64R2-LABEL: maximumnum_double:96; MIPS64R2:       # %bb.0:97; MIPS64R2-NEXT:    c.un.d $f12, $f1298; MIPS64R2-NEXT:    movt.d $f12, $f13, $fcc099; MIPS64R2-NEXT:    c.un.d $f13, $f13100; MIPS64R2-NEXT:    movt.d $f13, $f12, $fcc0101; MIPS64R2-NEXT:    c.ule.d $f12, $f13102; MIPS64R2-NEXT:    mov.d $f0, $f13103; MIPS64R2-NEXT:    movf.d $f0, $f12, $fcc0104; MIPS64R2-NEXT:    dmfc1 $1, $f12105; MIPS64R2-NEXT:    mov.d $f1, $f0106; MIPS64R2-NEXT:    movz.d $f1, $f12, $1107; MIPS64R2-NEXT:    dmfc1 $1, $f13108; MIPS64R2-NEXT:    movz.d $f1, $f13, $1109; MIPS64R2-NEXT:    dmtc1 $zero, $f2110; MIPS64R2-NEXT:    c.eq.d $f0, $f2111; MIPS64R2-NEXT:    jr $ra112; MIPS64R2-NEXT:    movt.d $f0, $f1, $fcc0113  %z = call double @llvm.maximumnum.f64(double %x, double %y)114  ret double %z115}116 117define double @maximumnum_double_nsz(double %x, double %y) {118; MIPS32R6-LABEL: maximumnum_double_nsz:119; MIPS32R6:       # %bb.0:120; MIPS32R6-NEXT:    min.d $f0, $f14, $f14121; MIPS32R6-NEXT:    min.d $f1, $f12, $f12122; MIPS32R6-NEXT:    jr $ra123; MIPS32R6-NEXT:    max.d $f0, $f1, $f0124;125; MIPS64R2-LABEL: maximumnum_double_nsz:126; MIPS64R2:       # %bb.0:127; MIPS64R2-NEXT:    mov.d $f0, $f13128; MIPS64R2-NEXT:    c.un.d $f12, $f12129; MIPS64R2-NEXT:    movt.d $f12, $f13, $fcc0130; MIPS64R2-NEXT:    c.un.d $f13, $f13131; MIPS64R2-NEXT:    movt.d $f0, $f12, $fcc0132; MIPS64R2-NEXT:    c.ule.d $f12, $f0133; MIPS64R2-NEXT:    jr $ra134; MIPS64R2-NEXT:    movf.d $f0, $f12, $fcc0135  %z = call nsz double @llvm.maximumnum.f64(double %x, double %y)136  ret double %z137}138 139define double @maximumnum_double_nnan(double %x, double %y) {140; MIPS32R6-LABEL: maximumnum_double_nnan:141; MIPS32R6:       # %bb.0:142; MIPS32R6-NEXT:    jr $ra143; MIPS32R6-NEXT:    max.d $f0, $f12, $f14144;145; MIPS64R2-LABEL: maximumnum_double_nnan:146; MIPS64R2:       # %bb.0:147; MIPS64R2-NEXT:    c.ule.d $f12, $f13148; MIPS64R2-NEXT:    mov.d $f0, $f13149; MIPS64R2-NEXT:    movf.d $f0, $f12, $fcc0150; MIPS64R2-NEXT:    dmfc1 $1, $f12151; MIPS64R2-NEXT:    mov.d $f1, $f0152; MIPS64R2-NEXT:    movz.d $f1, $f12, $1153; MIPS64R2-NEXT:    dmfc1 $1, $f13154; MIPS64R2-NEXT:    movz.d $f1, $f13, $1155; MIPS64R2-NEXT:    dmtc1 $zero, $f2156; MIPS64R2-NEXT:    c.eq.d $f0, $f2157; MIPS64R2-NEXT:    jr $ra158; MIPS64R2-NEXT:    movt.d $f0, $f1, $fcc0159  %z = call nnan double @llvm.maximumnum.f64(double %x, double %y)160  ret double %z161}162 163define float @minimumnum_float(float %x, float %y) {164; MIPS32R6-LABEL: minimumnum_float:165; MIPS32R6:       # %bb.0:166; MIPS32R6-NEXT:    min.s $f0, $f14, $f14167; MIPS32R6-NEXT:    min.s $f1, $f12, $f12168; MIPS32R6-NEXT:    jr $ra169; MIPS32R6-NEXT:    min.s $f0, $f1, $f0170;171; MIPS64R2-LABEL: minimumnum_float:172; MIPS64R2:       # %bb.0:173; MIPS64R2-NEXT:    c.un.s $f12, $f12174; MIPS64R2-NEXT:    movt.s $f12, $f13, $fcc0175; MIPS64R2-NEXT:    c.un.s $f13, $f13176; MIPS64R2-NEXT:    movt.s $f13, $f12, $fcc0177; MIPS64R2-NEXT:    c.olt.s $f12, $f13178; MIPS64R2-NEXT:    mov.s $f0, $f13179; MIPS64R2-NEXT:    movt.s $f0, $f12, $fcc0180; MIPS64R2-NEXT:    mfc1 $1, $f12181; MIPS64R2-NEXT:    lui $2, 32768182; MIPS64R2-NEXT:    xor $1, $1, $2183; MIPS64R2-NEXT:    mov.s $f1, $f0184; MIPS64R2-NEXT:    movz.s $f1, $f12, $1185; MIPS64R2-NEXT:    mfc1 $1, $f13186; MIPS64R2-NEXT:    xor $1, $1, $2187; MIPS64R2-NEXT:    movz.s $f1, $f13, $1188; MIPS64R2-NEXT:    mtc1 $zero, $f2189; MIPS64R2-NEXT:    c.eq.s $f0, $f2190; MIPS64R2-NEXT:    jr $ra191; MIPS64R2-NEXT:    movt.s $f0, $f1, $fcc0192  %z = call float @llvm.minimumnum.f32(float %x, float %y)193  ret float %z194}195 196define float @minimumnum_float_nsz(float %x, float %y) {197; MIPS32R6-LABEL: minimumnum_float_nsz:198; MIPS32R6:       # %bb.0:199; MIPS32R6-NEXT:    min.s $f0, $f14, $f14200; MIPS32R6-NEXT:    min.s $f1, $f12, $f12201; MIPS32R6-NEXT:    jr $ra202; MIPS32R6-NEXT:    min.s $f0, $f1, $f0203;204; MIPS64R2-LABEL: minimumnum_float_nsz:205; MIPS64R2:       # %bb.0:206; MIPS64R2-NEXT:    mov.s $f0, $f13207; MIPS64R2-NEXT:    c.un.s $f12, $f12208; MIPS64R2-NEXT:    movt.s $f12, $f13, $fcc0209; MIPS64R2-NEXT:    c.un.s $f13, $f13210; MIPS64R2-NEXT:    movt.s $f0, $f12, $fcc0211; MIPS64R2-NEXT:    c.olt.s $f12, $f0212; MIPS64R2-NEXT:    jr $ra213; MIPS64R2-NEXT:    movt.s $f0, $f12, $fcc0214  %z = call nsz float @llvm.minimumnum.f32(float %x, float %y)215  ret float %z216}217 218define float @minimumnum_float_nnan(float %x, float %y) {219; MIPS32R6-LABEL: minimumnum_float_nnan:220; MIPS32R6:       # %bb.0:221; MIPS32R6-NEXT:    jr $ra222; MIPS32R6-NEXT:    min.s $f0, $f12, $f14223;224; MIPS64R2-LABEL: minimumnum_float_nnan:225; MIPS64R2:       # %bb.0:226; MIPS64R2-NEXT:    c.olt.s $f12, $f13227; MIPS64R2-NEXT:    mov.s $f0, $f13228; MIPS64R2-NEXT:    movt.s $f0, $f12, $fcc0229; MIPS64R2-NEXT:    mfc1 $1, $f12230; MIPS64R2-NEXT:    lui $2, 32768231; MIPS64R2-NEXT:    xor $1, $1, $2232; MIPS64R2-NEXT:    mov.s $f1, $f0233; MIPS64R2-NEXT:    movz.s $f1, $f12, $1234; MIPS64R2-NEXT:    mfc1 $1, $f13235; MIPS64R2-NEXT:    xor $1, $1, $2236; MIPS64R2-NEXT:    movz.s $f1, $f13, $1237; MIPS64R2-NEXT:    mtc1 $zero, $f2238; MIPS64R2-NEXT:    c.eq.s $f0, $f2239; MIPS64R2-NEXT:    jr $ra240; MIPS64R2-NEXT:    movt.s $f0, $f1, $fcc0241  %z = call nnan float @llvm.minimumnum.f32(float %x, float %y)242  ret float %z243}244 245define double @minimumnum_double(double %x, double %y) {246; MIPS32R6-LABEL: minimumnum_double:247; MIPS32R6:       # %bb.0:248; MIPS32R6-NEXT:    min.d $f0, $f14, $f14249; MIPS32R6-NEXT:    min.d $f1, $f12, $f12250; MIPS32R6-NEXT:    jr $ra251; MIPS32R6-NEXT:    min.d $f0, $f1, $f0252;253; MIPS64R2-LABEL: minimumnum_double:254; MIPS64R2:       # %bb.0:255; MIPS64R2-NEXT:    c.un.d $f12, $f12256; MIPS64R2-NEXT:    movt.d $f12, $f13, $fcc0257; MIPS64R2-NEXT:    c.un.d $f13, $f13258; MIPS64R2-NEXT:    movt.d $f13, $f12, $fcc0259; MIPS64R2-NEXT:    c.olt.d $f12, $f13260; MIPS64R2-NEXT:    mov.d $f0, $f13261; MIPS64R2-NEXT:    movt.d $f0, $f12, $fcc0262; MIPS64R2-NEXT:    dmfc1 $1, $f12263; MIPS64R2-NEXT:    daddiu $2, $zero, 1264; MIPS64R2-NEXT:    dsll $2, $2, 63265; MIPS64R2-NEXT:    xor $1, $1, $2266; MIPS64R2-NEXT:    mov.d $f1, $f0267; MIPS64R2-NEXT:    movz.d $f1, $f12, $1268; MIPS64R2-NEXT:    dmfc1 $1, $f13269; MIPS64R2-NEXT:    xor $1, $1, $2270; MIPS64R2-NEXT:    movz.d $f1, $f13, $1271; MIPS64R2-NEXT:    dmtc1 $zero, $f2272; MIPS64R2-NEXT:    c.eq.d $f0, $f2273; MIPS64R2-NEXT:    jr $ra274; MIPS64R2-NEXT:    movt.d $f0, $f1, $fcc0275  %z = call double @llvm.minimumnum.f64(double %x, double %y)276  ret double %z277}278 279define double @minimumnum_double_nsz(double %x, double %y) {280; MIPS32R6-LABEL: minimumnum_double_nsz:281; MIPS32R6:       # %bb.0:282; MIPS32R6-NEXT:    min.d $f0, $f14, $f14283; MIPS32R6-NEXT:    min.d $f1, $f12, $f12284; MIPS32R6-NEXT:    jr $ra285; MIPS32R6-NEXT:    min.d $f0, $f1, $f0286;287; MIPS64R2-LABEL: minimumnum_double_nsz:288; MIPS64R2:       # %bb.0:289; MIPS64R2-NEXT:    mov.d $f0, $f13290; MIPS64R2-NEXT:    c.un.d $f12, $f12291; MIPS64R2-NEXT:    movt.d $f12, $f13, $fcc0292; MIPS64R2-NEXT:    c.un.d $f13, $f13293; MIPS64R2-NEXT:    movt.d $f0, $f12, $fcc0294; MIPS64R2-NEXT:    c.olt.d $f12, $f0295; MIPS64R2-NEXT:    jr $ra296; MIPS64R2-NEXT:    movt.d $f0, $f12, $fcc0297  %z = call nsz double @llvm.minimumnum.f64(double %x, double %y)298  ret double %z299}300 301define double @minimumnum_double_nnan(double %x, double %y) {302; MIPS32R6-LABEL: minimumnum_double_nnan:303; MIPS32R6:       # %bb.0:304; MIPS32R6-NEXT:    jr $ra305; MIPS32R6-NEXT:    min.d $f0, $f12, $f14306;307; MIPS64R2-LABEL: minimumnum_double_nnan:308; MIPS64R2:       # %bb.0:309; MIPS64R2-NEXT:    c.olt.d $f12, $f13310; MIPS64R2-NEXT:    mov.d $f0, $f13311; MIPS64R2-NEXT:    movt.d $f0, $f12, $fcc0312; MIPS64R2-NEXT:    daddiu $1, $zero, 1313; MIPS64R2-NEXT:    dsll $1, $1, 63314; MIPS64R2-NEXT:    dmfc1 $2, $f12315; MIPS64R2-NEXT:    xor $2, $2, $1316; MIPS64R2-NEXT:    mov.d $f1, $f0317; MIPS64R2-NEXT:    movz.d $f1, $f12, $2318; MIPS64R2-NEXT:    dmfc1 $2, $f13319; MIPS64R2-NEXT:    xor $1, $2, $1320; MIPS64R2-NEXT:    movz.d $f1, $f13, $1321; MIPS64R2-NEXT:    dmtc1 $zero, $f2322; MIPS64R2-NEXT:    c.eq.d $f0, $f2323; MIPS64R2-NEXT:    jr $ra324; MIPS64R2-NEXT:    movt.d $f0, $f1, $fcc0325  %z = call nnan double @llvm.minimumnum.f64(double %x, double %y)326  ret double %z327}328