brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.3 KiB · 8718d61 Raw
438 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA32F3; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32D4; RUN: llc --mtriple=loongarch64 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA64F5; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64D6 7declare float @llvm.maximumnum.f32(float, float)8declare double @llvm.maximumnum.f64(double, double)9declare float @llvm.minimumnum.f32(float, float)10declare double @llvm.minimumnum.f64(double, double)11 12define float @maximumnum_float(float %x, float %y) {13;14; LA32F-LABEL: maximumnum_float:15; LA32F:       # %bb.0:16; LA32F-NEXT:    fmax.s $fa1, $fa1, $fa117; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa018; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa119; LA32F-NEXT:    ret20;21; LA32D-LABEL: maximumnum_float:22; LA32D:       # %bb.0:23; LA32D-NEXT:    fmax.s $fa1, $fa1, $fa124; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa025; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa126; LA32D-NEXT:    ret27;28; LA64F-LABEL: maximumnum_float:29; LA64F:       # %bb.0:30; LA64F-NEXT:    fmax.s $fa1, $fa1, $fa131; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa032; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa133; LA64F-NEXT:    ret34;35; LA64D-LABEL: maximumnum_float:36; LA64D:       # %bb.0:37; LA64D-NEXT:    fmax.s $fa1, $fa1, $fa138; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa039; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa140; LA64D-NEXT:    ret41  %z = call float @llvm.maximumnum.f32(float %x, float %y)42  ret float %z43}44 45define float @maximumnum_float_nsz(float %x, float %y) {46;47; LA32F-LABEL: maximumnum_float_nsz:48; LA32F:       # %bb.0:49; LA32F-NEXT:    fmax.s $fa1, $fa1, $fa150; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa051; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa152; LA32F-NEXT:    ret53;54; LA32D-LABEL: maximumnum_float_nsz:55; LA32D:       # %bb.0:56; LA32D-NEXT:    fmax.s $fa1, $fa1, $fa157; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa058; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa159; LA32D-NEXT:    ret60;61; LA64F-LABEL: maximumnum_float_nsz:62; LA64F:       # %bb.0:63; LA64F-NEXT:    fmax.s $fa1, $fa1, $fa164; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa065; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa166; LA64F-NEXT:    ret67;68; LA64D-LABEL: maximumnum_float_nsz:69; LA64D:       # %bb.0:70; LA64D-NEXT:    fmax.s $fa1, $fa1, $fa171; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa072; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa173; LA64D-NEXT:    ret74  %z = call nsz float @llvm.maximumnum.f32(float %x, float %y)75  ret float %z76}77 78define float @maximumnum_float_nnan(float %x, float %y) {79;80; LA32F-LABEL: maximumnum_float_nnan:81; LA32F:       # %bb.0:82; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa183; LA32F-NEXT:    ret84;85; LA32D-LABEL: maximumnum_float_nnan:86; LA32D:       # %bb.0:87; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa188; LA32D-NEXT:    ret89;90; LA64F-LABEL: maximumnum_float_nnan:91; LA64F:       # %bb.0:92; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa193; LA64F-NEXT:    ret94;95; LA64D-LABEL: maximumnum_float_nnan:96; LA64D:       # %bb.0:97; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa198; LA64D-NEXT:    ret99  %z = call nnan float @llvm.maximumnum.f32(float %x, float %y)100  ret float %z101}102 103 104define double @maximumnum_double(double %x, double %y) {105;106; LA32F-LABEL: maximumnum_double:107; LA32F:       # %bb.0:108; LA32F-NEXT:    addi.w $sp, $sp, -16109; LA32F-NEXT:    .cfi_def_cfa_offset 16110; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill111; LA32F-NEXT:    .cfi_offset 1, -4112; LA32F-NEXT:    bl fmaximum_num113; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload114; LA32F-NEXT:    addi.w $sp, $sp, 16115; LA32F-NEXT:    ret116;117; LA32D-LABEL: maximumnum_double:118; LA32D:       # %bb.0:119; LA32D-NEXT:    fmax.d $fa1, $fa1, $fa1120; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa0121; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa1122; LA32D-NEXT:    ret123;124; LA64F-LABEL: maximumnum_double:125; LA64F:       # %bb.0:126; LA64F-NEXT:    addi.d $sp, $sp, -16127; LA64F-NEXT:    .cfi_def_cfa_offset 16128; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill129; LA64F-NEXT:    .cfi_offset 1, -8130; LA64F-NEXT:    pcaddu18i $ra, %call36(fmaximum_num)131; LA64F-NEXT:    jirl $ra, $ra, 0132; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload133; LA64F-NEXT:    addi.d $sp, $sp, 16134; LA64F-NEXT:    ret135;136; LA64D-LABEL: maximumnum_double:137; LA64D:       # %bb.0:138; LA64D-NEXT:    fmax.d $fa1, $fa1, $fa1139; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa0140; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa1141; LA64D-NEXT:    ret142  %z = call double @llvm.maximumnum.f64(double %x, double %y)143  ret double %z144}145 146define double @maximumnum_double_nsz(double %x, double %y) {147;148; LA32F-LABEL: maximumnum_double_nsz:149; LA32F:       # %bb.0:150; LA32F-NEXT:    addi.w $sp, $sp, -16151; LA32F-NEXT:    .cfi_def_cfa_offset 16152; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill153; LA32F-NEXT:    .cfi_offset 1, -4154; LA32F-NEXT:    bl fmaximum_num155; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload156; LA32F-NEXT:    addi.w $sp, $sp, 16157; LA32F-NEXT:    ret158;159; LA32D-LABEL: maximumnum_double_nsz:160; LA32D:       # %bb.0:161; LA32D-NEXT:    fmax.d $fa1, $fa1, $fa1162; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa0163; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa1164; LA32D-NEXT:    ret165;166; LA64F-LABEL: maximumnum_double_nsz:167; LA64F:       # %bb.0:168; LA64F-NEXT:    addi.d $sp, $sp, -16169; LA64F-NEXT:    .cfi_def_cfa_offset 16170; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill171; LA64F-NEXT:    .cfi_offset 1, -8172; LA64F-NEXT:    pcaddu18i $ra, %call36(fmaximum_num)173; LA64F-NEXT:    jirl $ra, $ra, 0174; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload175; LA64F-NEXT:    addi.d $sp, $sp, 16176; LA64F-NEXT:    ret177;178; LA64D-LABEL: maximumnum_double_nsz:179; LA64D:       # %bb.0:180; LA64D-NEXT:    fmax.d $fa1, $fa1, $fa1181; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa0182; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa1183; LA64D-NEXT:    ret184  %z = call nsz double @llvm.maximumnum.f64(double %x, double %y)185  ret double %z186}187 188define double @maximumnum_double_nnan(double %x, double %y) {189;190; LA32F-LABEL: maximumnum_double_nnan:191; LA32F:       # %bb.0:192; LA32F-NEXT:    addi.w $sp, $sp, -16193; LA32F-NEXT:    .cfi_def_cfa_offset 16194; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill195; LA32F-NEXT:    .cfi_offset 1, -4196; LA32F-NEXT:    bl fmaximum_num197; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload198; LA32F-NEXT:    addi.w $sp, $sp, 16199; LA32F-NEXT:    ret200;201; LA32D-LABEL: maximumnum_double_nnan:202; LA32D:       # %bb.0:203; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa1204; LA32D-NEXT:    ret205;206; LA64F-LABEL: maximumnum_double_nnan:207; LA64F:       # %bb.0:208; LA64F-NEXT:    addi.d $sp, $sp, -16209; LA64F-NEXT:    .cfi_def_cfa_offset 16210; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill211; LA64F-NEXT:    .cfi_offset 1, -8212; LA64F-NEXT:    pcaddu18i $ra, %call36(fmaximum_num)213; LA64F-NEXT:    jirl $ra, $ra, 0214; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload215; LA64F-NEXT:    addi.d $sp, $sp, 16216; LA64F-NEXT:    ret217;218; LA64D-LABEL: maximumnum_double_nnan:219; LA64D:       # %bb.0:220; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa1221; LA64D-NEXT:    ret222  %z = call nnan double @llvm.maximumnum.f64(double %x, double %y)223  ret double %z224}225 226define float @minimumnum_float(float %x, float %y) {227;228; LA32F-LABEL: minimumnum_float:229; LA32F:       # %bb.0:230; LA32F-NEXT:    fmax.s $fa1, $fa1, $fa1231; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa0232; LA32F-NEXT:    fmin.s $fa0, $fa0, $fa1233; LA32F-NEXT:    ret234;235; LA32D-LABEL: minimumnum_float:236; LA32D:       # %bb.0:237; LA32D-NEXT:    fmax.s $fa1, $fa1, $fa1238; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa0239; LA32D-NEXT:    fmin.s $fa0, $fa0, $fa1240; LA32D-NEXT:    ret241;242; LA64F-LABEL: minimumnum_float:243; LA64F:       # %bb.0:244; LA64F-NEXT:    fmax.s $fa1, $fa1, $fa1245; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa0246; LA64F-NEXT:    fmin.s $fa0, $fa0, $fa1247; LA64F-NEXT:    ret248;249; LA64D-LABEL: minimumnum_float:250; LA64D:       # %bb.0:251; LA64D-NEXT:    fmax.s $fa1, $fa1, $fa1252; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa0253; LA64D-NEXT:    fmin.s $fa0, $fa0, $fa1254; LA64D-NEXT:    ret255  %z = call float @llvm.minimumnum.f32(float %x, float %y)256  ret float %z257}258 259define float @minimumnum_float_nsz(float %x, float %y) {260;261; LA32F-LABEL: minimumnum_float_nsz:262; LA32F:       # %bb.0:263; LA32F-NEXT:    fmax.s $fa1, $fa1, $fa1264; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa0265; LA32F-NEXT:    fmin.s $fa0, $fa0, $fa1266; LA32F-NEXT:    ret267;268; LA32D-LABEL: minimumnum_float_nsz:269; LA32D:       # %bb.0:270; LA32D-NEXT:    fmax.s $fa1, $fa1, $fa1271; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa0272; LA32D-NEXT:    fmin.s $fa0, $fa0, $fa1273; LA32D-NEXT:    ret274;275; LA64F-LABEL: minimumnum_float_nsz:276; LA64F:       # %bb.0:277; LA64F-NEXT:    fmax.s $fa1, $fa1, $fa1278; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa0279; LA64F-NEXT:    fmin.s $fa0, $fa0, $fa1280; LA64F-NEXT:    ret281;282; LA64D-LABEL: minimumnum_float_nsz:283; LA64D:       # %bb.0:284; LA64D-NEXT:    fmax.s $fa1, $fa1, $fa1285; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa0286; LA64D-NEXT:    fmin.s $fa0, $fa0, $fa1287; LA64D-NEXT:    ret288  %z = call nsz float @llvm.minimumnum.f32(float %x, float %y)289  ret float %z290}291 292define float @minimumnum_float_nnan(float %x, float %y) {293;294; LA32F-LABEL: minimumnum_float_nnan:295; LA32F:       # %bb.0:296; LA32F-NEXT:    fmin.s $fa0, $fa0, $fa1297; LA32F-NEXT:    ret298;299; LA32D-LABEL: minimumnum_float_nnan:300; LA32D:       # %bb.0:301; LA32D-NEXT:    fmin.s $fa0, $fa0, $fa1302; LA32D-NEXT:    ret303;304; LA64F-LABEL: minimumnum_float_nnan:305; LA64F:       # %bb.0:306; LA64F-NEXT:    fmin.s $fa0, $fa0, $fa1307; LA64F-NEXT:    ret308;309; LA64D-LABEL: minimumnum_float_nnan:310; LA64D:       # %bb.0:311; LA64D-NEXT:    fmin.s $fa0, $fa0, $fa1312; LA64D-NEXT:    ret313  %z = call nnan float @llvm.minimumnum.f32(float %x, float %y)314  ret float %z315}316 317define double @minimumnum_double(double %x, double %y) {318;319; LA32F-LABEL: minimumnum_double:320; LA32F:       # %bb.0:321; LA32F-NEXT:    addi.w $sp, $sp, -16322; LA32F-NEXT:    .cfi_def_cfa_offset 16323; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill324; LA32F-NEXT:    .cfi_offset 1, -4325; LA32F-NEXT:    bl fminimum_num326; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload327; LA32F-NEXT:    addi.w $sp, $sp, 16328; LA32F-NEXT:    ret329;330; LA32D-LABEL: minimumnum_double:331; LA32D:       # %bb.0:332; LA32D-NEXT:    fmax.d $fa1, $fa1, $fa1333; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa0334; LA32D-NEXT:    fmin.d $fa0, $fa0, $fa1335; LA32D-NEXT:    ret336;337; LA64F-LABEL: minimumnum_double:338; LA64F:       # %bb.0:339; LA64F-NEXT:    addi.d $sp, $sp, -16340; LA64F-NEXT:    .cfi_def_cfa_offset 16341; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill342; LA64F-NEXT:    .cfi_offset 1, -8343; LA64F-NEXT:    pcaddu18i $ra, %call36(fminimum_num)344; LA64F-NEXT:    jirl $ra, $ra, 0345; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload346; LA64F-NEXT:    addi.d $sp, $sp, 16347; LA64F-NEXT:    ret348;349; LA64D-LABEL: minimumnum_double:350; LA64D:       # %bb.0:351; LA64D-NEXT:    fmax.d $fa1, $fa1, $fa1352; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa0353; LA64D-NEXT:    fmin.d $fa0, $fa0, $fa1354; LA64D-NEXT:    ret355  %z = call double @llvm.minimumnum.f64(double %x, double %y)356  ret double %z357}358 359define double @minimumnum_double_nsz(double %x, double %y) {360;361; LA32F-LABEL: minimumnum_double_nsz:362; LA32F:       # %bb.0:363; LA32F-NEXT:    addi.w $sp, $sp, -16364; LA32F-NEXT:    .cfi_def_cfa_offset 16365; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill366; LA32F-NEXT:    .cfi_offset 1, -4367; LA32F-NEXT:    bl fminimum_num368; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload369; LA32F-NEXT:    addi.w $sp, $sp, 16370; LA32F-NEXT:    ret371;372; LA32D-LABEL: minimumnum_double_nsz:373; LA32D:       # %bb.0:374; LA32D-NEXT:    fmax.d $fa1, $fa1, $fa1375; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa0376; LA32D-NEXT:    fmin.d $fa0, $fa0, $fa1377; LA32D-NEXT:    ret378;379; LA64F-LABEL: minimumnum_double_nsz:380; LA64F:       # %bb.0:381; LA64F-NEXT:    addi.d $sp, $sp, -16382; LA64F-NEXT:    .cfi_def_cfa_offset 16383; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill384; LA64F-NEXT:    .cfi_offset 1, -8385; LA64F-NEXT:    pcaddu18i $ra, %call36(fminimum_num)386; LA64F-NEXT:    jirl $ra, $ra, 0387; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload388; LA64F-NEXT:    addi.d $sp, $sp, 16389; LA64F-NEXT:    ret390;391; LA64D-LABEL: minimumnum_double_nsz:392; LA64D:       # %bb.0:393; LA64D-NEXT:    fmax.d $fa1, $fa1, $fa1394; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa0395; LA64D-NEXT:    fmin.d $fa0, $fa0, $fa1396; LA64D-NEXT:    ret397  %z = call nsz double @llvm.minimumnum.f64(double %x, double %y)398  ret double %z399}400 401define double @minimumnum_double_nnan(double %x, double %y) {402;403; LA32F-LABEL: minimumnum_double_nnan:404; LA32F:       # %bb.0:405; LA32F-NEXT:    addi.w $sp, $sp, -16406; LA32F-NEXT:    .cfi_def_cfa_offset 16407; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill408; LA32F-NEXT:    .cfi_offset 1, -4409; LA32F-NEXT:    bl fminimum_num410; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload411; LA32F-NEXT:    addi.w $sp, $sp, 16412; LA32F-NEXT:    ret413;414; LA32D-LABEL: minimumnum_double_nnan:415; LA32D:       # %bb.0:416; LA32D-NEXT:    fmin.d $fa0, $fa0, $fa1417; LA32D-NEXT:    ret418;419; LA64F-LABEL: minimumnum_double_nnan:420; LA64F:       # %bb.0:421; LA64F-NEXT:    addi.d $sp, $sp, -16422; LA64F-NEXT:    .cfi_def_cfa_offset 16423; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill424; LA64F-NEXT:    .cfi_offset 1, -8425; LA64F-NEXT:    pcaddu18i $ra, %call36(fminimum_num)426; LA64F-NEXT:    jirl $ra, $ra, 0427; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload428; LA64F-NEXT:    addi.d $sp, $sp, 16429; LA64F-NEXT:    ret430;431; LA64D-LABEL: minimumnum_double_nnan:432; LA64D:       # %bb.0:433; LA64D-NEXT:    fmin.d $fa0, $fa0, $fa1434; LA64D-NEXT:    ret435  %z = call nnan double @llvm.minimumnum.f64(double %x, double %y)436  ret double %z437}438