19ff7d0ebSwanglei; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 29ff7d0ebSwanglei; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s 39ff7d0ebSwanglei 49ff7d0ebSwanglei;; TREU 59ff7d0ebSwangleidefine void @v4f32_fcmp_true(ptr %res, ptr %a0, ptr %a1) nounwind { 69ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_true: 79ff7d0ebSwanglei; CHECK: # %bb.0: 89ff7d0ebSwanglei; CHECK-NEXT: vrepli.b $vr0, -1 99ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 109ff7d0ebSwanglei; CHECK-NEXT: ret 119ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 129ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 139ff7d0ebSwanglei %cmp = fcmp true <4 x float> %v0, %v1 149ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 159ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 169ff7d0ebSwanglei ret void 179ff7d0ebSwanglei} 189ff7d0ebSwanglei 199ff7d0ebSwanglei;; FALSE 209ff7d0ebSwangleidefine void @v2f64_fcmp_false(ptr %res, ptr %a0, ptr %a1) nounwind { 219ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_false: 229ff7d0ebSwanglei; CHECK: # %bb.0: 239ff7d0ebSwanglei; CHECK-NEXT: vrepli.b $vr0, 0 249ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 259ff7d0ebSwanglei; CHECK-NEXT: ret 269ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 279ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 289ff7d0ebSwanglei %cmp = fcmp false <2 x double> %v0, %v1 299ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 309ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 319ff7d0ebSwanglei ret void 329ff7d0ebSwanglei} 339ff7d0ebSwanglei 349ff7d0ebSwanglei;; SETOEQ 359ff7d0ebSwangleidefine void @v4f32_fcmp_oeq(ptr %res, ptr %a0, ptr %a1) nounwind { 369ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_oeq: 379ff7d0ebSwanglei; CHECK: # %bb.0: 38*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 39*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 40*a5c90e48Swanglei; CHECK-NEXT: vfcmp.ceq.s $vr0, $vr0, $vr1 419ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 429ff7d0ebSwanglei; CHECK-NEXT: ret 439ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 449ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 459ff7d0ebSwanglei %cmp = fcmp oeq <4 x float> %v0, %v1 469ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 479ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 489ff7d0ebSwanglei ret void 499ff7d0ebSwanglei} 509ff7d0ebSwanglei 519ff7d0ebSwangleidefine void @v2f64_fcmp_oeq(ptr %res, ptr %a0, ptr %a1) nounwind { 529ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_oeq: 539ff7d0ebSwanglei; CHECK: # %bb.0: 54*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 55*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 56*a5c90e48Swanglei; CHECK-NEXT: vfcmp.ceq.d $vr0, $vr0, $vr1 579ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 589ff7d0ebSwanglei; CHECK-NEXT: ret 599ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 609ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 619ff7d0ebSwanglei %cmp = fcmp oeq <2 x double> %v0, %v1 629ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 639ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 649ff7d0ebSwanglei ret void 659ff7d0ebSwanglei} 669ff7d0ebSwanglei 679ff7d0ebSwanglei;; SETUEQ 689ff7d0ebSwangleidefine void @v4f32_fcmp_ueq(ptr %res, ptr %a0, ptr %a1) nounwind { 699ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ueq: 709ff7d0ebSwanglei; CHECK: # %bb.0: 71*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 72*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 73*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cueq.s $vr0, $vr0, $vr1 749ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 759ff7d0ebSwanglei; CHECK-NEXT: ret 769ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 779ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 789ff7d0ebSwanglei %cmp = fcmp ueq <4 x float> %v0, %v1 799ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 809ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 819ff7d0ebSwanglei ret void 829ff7d0ebSwanglei} 839ff7d0ebSwanglei 849ff7d0ebSwangleidefine void @v2f64_fcmp_ueq(ptr %res, ptr %a0, ptr %a1) nounwind { 859ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ueq: 869ff7d0ebSwanglei; CHECK: # %bb.0: 87*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 88*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 89*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cueq.d $vr0, $vr0, $vr1 909ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 919ff7d0ebSwanglei; CHECK-NEXT: ret 929ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 939ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 949ff7d0ebSwanglei %cmp = fcmp ueq <2 x double> %v0, %v1 959ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 969ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 979ff7d0ebSwanglei ret void 989ff7d0ebSwanglei} 999ff7d0ebSwanglei 1009ff7d0ebSwanglei;; SETEQ 1019ff7d0ebSwangleidefine void @v4f32_fcmp_eq(ptr %res, ptr %a0, ptr %a1) nounwind { 1029ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_eq: 1039ff7d0ebSwanglei; CHECK: # %bb.0: 104*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 105*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 106*a5c90e48Swanglei; CHECK-NEXT: vfcmp.ceq.s $vr0, $vr0, $vr1 1079ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 1089ff7d0ebSwanglei; CHECK-NEXT: ret 1099ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 1109ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 1119ff7d0ebSwanglei %cmp = fcmp fast oeq <4 x float> %v0, %v1 1129ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 1139ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 1149ff7d0ebSwanglei ret void 1159ff7d0ebSwanglei} 1169ff7d0ebSwanglei 1179ff7d0ebSwangleidefine void @v2f64_fcmp_eq(ptr %res, ptr %a0, ptr %a1) nounwind { 1189ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_eq: 1199ff7d0ebSwanglei; CHECK: # %bb.0: 120*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 121*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 122*a5c90e48Swanglei; CHECK-NEXT: vfcmp.ceq.d $vr0, $vr0, $vr1 1239ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 1249ff7d0ebSwanglei; CHECK-NEXT: ret 1259ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 1269ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 1279ff7d0ebSwanglei %cmp = fcmp fast ueq <2 x double> %v0, %v1 1289ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 1299ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 1309ff7d0ebSwanglei ret void 1319ff7d0ebSwanglei} 1329ff7d0ebSwanglei 1339ff7d0ebSwanglei;; SETOLE 1349ff7d0ebSwangleidefine void @v4f32_fcmp_ole(ptr %res, ptr %a0, ptr %a1) nounwind { 1359ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ole: 1369ff7d0ebSwanglei; CHECK: # %bb.0: 137*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 138*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 139*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cle.s $vr0, $vr0, $vr1 1409ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 1419ff7d0ebSwanglei; CHECK-NEXT: ret 1429ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 1439ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 1449ff7d0ebSwanglei %cmp = fcmp ole <4 x float> %v0, %v1 1459ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 1469ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 1479ff7d0ebSwanglei ret void 1489ff7d0ebSwanglei} 1499ff7d0ebSwanglei 1509ff7d0ebSwangleidefine void @v2f64_fcmp_ole(ptr %res, ptr %a0, ptr %a1) nounwind { 1519ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ole: 1529ff7d0ebSwanglei; CHECK: # %bb.0: 153*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 154*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 155*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cle.d $vr0, $vr0, $vr1 1569ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 1579ff7d0ebSwanglei; CHECK-NEXT: ret 1589ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 1599ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 1609ff7d0ebSwanglei %cmp = fcmp ole <2 x double> %v0, %v1 1619ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 1629ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 1639ff7d0ebSwanglei ret void 1649ff7d0ebSwanglei} 1659ff7d0ebSwanglei 1669ff7d0ebSwanglei;; SETULE 1679ff7d0ebSwangleidefine void @v4f32_fcmp_ule(ptr %res, ptr %a0, ptr %a1) nounwind { 1689ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ule: 1699ff7d0ebSwanglei; CHECK: # %bb.0: 170*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 171*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 172*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cule.s $vr0, $vr0, $vr1 1739ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 1749ff7d0ebSwanglei; CHECK-NEXT: ret 1759ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 1769ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 1779ff7d0ebSwanglei %cmp = fcmp ule <4 x float> %v0, %v1 1789ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 1799ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 1809ff7d0ebSwanglei ret void 1819ff7d0ebSwanglei} 1829ff7d0ebSwanglei 1839ff7d0ebSwangleidefine void @v2f64_fcmp_ule(ptr %res, ptr %a0, ptr %a1) nounwind { 1849ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ule: 1859ff7d0ebSwanglei; CHECK: # %bb.0: 186*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 187*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 188*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cule.d $vr0, $vr0, $vr1 1899ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 1909ff7d0ebSwanglei; CHECK-NEXT: ret 1919ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 1929ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 1939ff7d0ebSwanglei %cmp = fcmp ule <2 x double> %v0, %v1 1949ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 1959ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 1969ff7d0ebSwanglei ret void 1979ff7d0ebSwanglei} 1989ff7d0ebSwanglei 1999ff7d0ebSwanglei;; SETLE 2009ff7d0ebSwangleidefine void @v4f32_fcmp_le(ptr %res, ptr %a0, ptr %a1) nounwind { 2019ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_le: 2029ff7d0ebSwanglei; CHECK: # %bb.0: 203*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 204*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 205*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cle.s $vr0, $vr0, $vr1 2069ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 2079ff7d0ebSwanglei; CHECK-NEXT: ret 2089ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 2099ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 2109ff7d0ebSwanglei %cmp = fcmp fast ole <4 x float> %v0, %v1 2119ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 2129ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 2139ff7d0ebSwanglei ret void 2149ff7d0ebSwanglei} 2159ff7d0ebSwanglei 2169ff7d0ebSwangleidefine void @v2f64_fcmp_le(ptr %res, ptr %a0, ptr %a1) nounwind { 2179ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_le: 2189ff7d0ebSwanglei; CHECK: # %bb.0: 219*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 220*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 221*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cle.d $vr0, $vr0, $vr1 2229ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 2239ff7d0ebSwanglei; CHECK-NEXT: ret 2249ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 2259ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 2269ff7d0ebSwanglei %cmp = fcmp fast ule <2 x double> %v0, %v1 2279ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 2289ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 2299ff7d0ebSwanglei ret void 2309ff7d0ebSwanglei} 2319ff7d0ebSwanglei 2329ff7d0ebSwanglei;; SETOLT 2339ff7d0ebSwangleidefine void @v4f32_fcmp_olt(ptr %res, ptr %a0, ptr %a1) nounwind { 2349ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_olt: 2359ff7d0ebSwanglei; CHECK: # %bb.0: 236*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 237*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 238*a5c90e48Swanglei; CHECK-NEXT: vfcmp.clt.s $vr0, $vr0, $vr1 2399ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 2409ff7d0ebSwanglei; CHECK-NEXT: ret 2419ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 2429ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 2439ff7d0ebSwanglei %cmp = fcmp olt <4 x float> %v0, %v1 2449ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 2459ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 2469ff7d0ebSwanglei ret void 2479ff7d0ebSwanglei} 2489ff7d0ebSwanglei 2499ff7d0ebSwangleidefine void @v2f64_fcmp_olt(ptr %res, ptr %a0, ptr %a1) nounwind { 2509ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_olt: 2519ff7d0ebSwanglei; CHECK: # %bb.0: 252*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 253*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 254*a5c90e48Swanglei; CHECK-NEXT: vfcmp.clt.d $vr0, $vr0, $vr1 2559ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 2569ff7d0ebSwanglei; CHECK-NEXT: ret 2579ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 2589ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 2599ff7d0ebSwanglei %cmp = fcmp olt <2 x double> %v0, %v1 2609ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 2619ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 2629ff7d0ebSwanglei ret void 2639ff7d0ebSwanglei} 2649ff7d0ebSwanglei 2659ff7d0ebSwanglei;; SETULT 2669ff7d0ebSwangleidefine void @v4f32_fcmp_ult(ptr %res, ptr %a0, ptr %a1) nounwind { 2679ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ult: 2689ff7d0ebSwanglei; CHECK: # %bb.0: 269*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 270*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 271*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cult.s $vr0, $vr0, $vr1 2729ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 2739ff7d0ebSwanglei; CHECK-NEXT: ret 2749ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 2759ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 2769ff7d0ebSwanglei %cmp = fcmp ult <4 x float> %v0, %v1 2779ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 2789ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 2799ff7d0ebSwanglei ret void 2809ff7d0ebSwanglei} 2819ff7d0ebSwanglei 2829ff7d0ebSwangleidefine void @v2f64_fcmp_ult(ptr %res, ptr %a0, ptr %a1) nounwind { 2839ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ult: 2849ff7d0ebSwanglei; CHECK: # %bb.0: 285*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 286*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 287*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cult.d $vr0, $vr0, $vr1 2889ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 2899ff7d0ebSwanglei; CHECK-NEXT: ret 2909ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 2919ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 2929ff7d0ebSwanglei %cmp = fcmp ult <2 x double> %v0, %v1 2939ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 2949ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 2959ff7d0ebSwanglei ret void 2969ff7d0ebSwanglei} 2979ff7d0ebSwanglei 2989ff7d0ebSwanglei;; SETLT 2999ff7d0ebSwangleidefine void @v4f32_fcmp_lt(ptr %res, ptr %a0, ptr %a1) nounwind { 3009ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_lt: 3019ff7d0ebSwanglei; CHECK: # %bb.0: 302*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 303*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 304*a5c90e48Swanglei; CHECK-NEXT: vfcmp.clt.s $vr0, $vr0, $vr1 3059ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 3069ff7d0ebSwanglei; CHECK-NEXT: ret 3079ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 3089ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 3099ff7d0ebSwanglei %cmp = fcmp fast olt <4 x float> %v0, %v1 3109ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 3119ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 3129ff7d0ebSwanglei ret void 3139ff7d0ebSwanglei} 3149ff7d0ebSwanglei 3159ff7d0ebSwangleidefine void @v2f64_fcmp_lt(ptr %res, ptr %a0, ptr %a1) nounwind { 3169ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_lt: 3179ff7d0ebSwanglei; CHECK: # %bb.0: 318*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 319*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 320*a5c90e48Swanglei; CHECK-NEXT: vfcmp.clt.d $vr0, $vr0, $vr1 3219ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 3229ff7d0ebSwanglei; CHECK-NEXT: ret 3239ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 3249ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 3259ff7d0ebSwanglei %cmp = fcmp fast ult <2 x double> %v0, %v1 3269ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 3279ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 3289ff7d0ebSwanglei ret void 3299ff7d0ebSwanglei} 3309ff7d0ebSwanglei 3319ff7d0ebSwanglei;; SETONE 3329ff7d0ebSwangleidefine void @v4f32_fcmp_one(ptr %res, ptr %a0, ptr %a1) nounwind { 3339ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_one: 3349ff7d0ebSwanglei; CHECK: # %bb.0: 335*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 336*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 337*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cne.s $vr0, $vr0, $vr1 3389ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 3399ff7d0ebSwanglei; CHECK-NEXT: ret 3409ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 3419ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 3429ff7d0ebSwanglei %cmp = fcmp one <4 x float> %v0, %v1 3439ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 3449ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 3459ff7d0ebSwanglei ret void 3469ff7d0ebSwanglei} 3479ff7d0ebSwanglei 3489ff7d0ebSwangleidefine void @v2f64_fcmp_one(ptr %res, ptr %a0, ptr %a1) nounwind { 3499ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_one: 3509ff7d0ebSwanglei; CHECK: # %bb.0: 351*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 352*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 353*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cne.d $vr0, $vr0, $vr1 3549ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 3559ff7d0ebSwanglei; CHECK-NEXT: ret 3569ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 3579ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 3589ff7d0ebSwanglei %cmp = fcmp one <2 x double> %v0, %v1 3599ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 3609ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 3619ff7d0ebSwanglei ret void 3629ff7d0ebSwanglei} 3639ff7d0ebSwanglei 3649ff7d0ebSwanglei;; SETUNE 3659ff7d0ebSwangleidefine void @v4f32_fcmp_une(ptr %res, ptr %a0, ptr %a1) nounwind { 3669ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_une: 3679ff7d0ebSwanglei; CHECK: # %bb.0: 368*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 369*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 370*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cune.s $vr0, $vr0, $vr1 3719ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 3729ff7d0ebSwanglei; CHECK-NEXT: ret 3739ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 3749ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 3759ff7d0ebSwanglei %cmp = fcmp une <4 x float> %v0, %v1 3769ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 3779ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 3789ff7d0ebSwanglei ret void 3799ff7d0ebSwanglei} 3809ff7d0ebSwanglei 3819ff7d0ebSwangleidefine void @v2f64_fcmp_une(ptr %res, ptr %a0, ptr %a1) nounwind { 3829ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_une: 3839ff7d0ebSwanglei; CHECK: # %bb.0: 384*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 385*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 386*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cune.d $vr0, $vr0, $vr1 3879ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 3889ff7d0ebSwanglei; CHECK-NEXT: ret 3899ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 3909ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 3919ff7d0ebSwanglei %cmp = fcmp une <2 x double> %v0, %v1 3929ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 3939ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 3949ff7d0ebSwanglei ret void 3959ff7d0ebSwanglei} 3969ff7d0ebSwanglei 3979ff7d0ebSwanglei;; SETNE 3989ff7d0ebSwangleidefine void @v4f32_fcmp_ne(ptr %res, ptr %a0, ptr %a1) nounwind { 3999ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ne: 4009ff7d0ebSwanglei; CHECK: # %bb.0: 401*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 402*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 403*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cne.s $vr0, $vr0, $vr1 4049ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 4059ff7d0ebSwanglei; CHECK-NEXT: ret 4069ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 4079ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 4089ff7d0ebSwanglei %cmp = fcmp fast one <4 x float> %v0, %v1 4099ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 4109ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 4119ff7d0ebSwanglei ret void 4129ff7d0ebSwanglei} 4139ff7d0ebSwanglei 4149ff7d0ebSwangleidefine void @v2f64_fcmp_ne(ptr %res, ptr %a0, ptr %a1) nounwind { 4159ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ne: 4169ff7d0ebSwanglei; CHECK: # %bb.0: 417*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 418*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 419*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cne.d $vr0, $vr0, $vr1 4209ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 4219ff7d0ebSwanglei; CHECK-NEXT: ret 4229ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 4239ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 4249ff7d0ebSwanglei %cmp = fcmp fast une <2 x double> %v0, %v1 4259ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 4269ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 4279ff7d0ebSwanglei ret void 4289ff7d0ebSwanglei} 4299ff7d0ebSwanglei 4309ff7d0ebSwanglei;; SETO 4319ff7d0ebSwangleidefine void @v4f32_fcmp_ord(ptr %res, ptr %a0, ptr %a1) nounwind { 4329ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ord: 4339ff7d0ebSwanglei; CHECK: # %bb.0: 434*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 435*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 436*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cor.s $vr0, $vr0, $vr1 4379ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 4389ff7d0ebSwanglei; CHECK-NEXT: ret 4399ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 4409ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 4419ff7d0ebSwanglei %cmp = fcmp ord <4 x float> %v0, %v1 4429ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 4439ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 4449ff7d0ebSwanglei ret void 4459ff7d0ebSwanglei} 4469ff7d0ebSwanglei 4479ff7d0ebSwangleidefine void @v2f64_fcmp_ord(ptr %res, ptr %a0, ptr %a1) nounwind { 4489ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ord: 4499ff7d0ebSwanglei; CHECK: # %bb.0: 450*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 451*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 452*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cor.d $vr0, $vr0, $vr1 4539ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 4549ff7d0ebSwanglei; CHECK-NEXT: ret 4559ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 4569ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 4579ff7d0ebSwanglei %cmp = fcmp ord <2 x double> %v0, %v1 4589ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 4599ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 4609ff7d0ebSwanglei ret void 4619ff7d0ebSwanglei} 4629ff7d0ebSwanglei 4639ff7d0ebSwanglei;; SETUO 4649ff7d0ebSwangleidefine void @v4f32_fcmp_uno(ptr %res, ptr %a0, ptr %a1) nounwind { 4659ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_uno: 4669ff7d0ebSwanglei; CHECK: # %bb.0: 467*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 468*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 469*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cun.s $vr0, $vr0, $vr1 4709ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 4719ff7d0ebSwanglei; CHECK-NEXT: ret 4729ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 4739ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 4749ff7d0ebSwanglei %cmp = fcmp uno <4 x float> %v0, %v1 4759ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 4769ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 4779ff7d0ebSwanglei ret void 4789ff7d0ebSwanglei} 4799ff7d0ebSwanglei 4809ff7d0ebSwangleidefine void @v2f64_fcmp_uno(ptr %res, ptr %a0, ptr %a1) nounwind { 4819ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_uno: 4829ff7d0ebSwanglei; CHECK: # %bb.0: 483*a5c90e48Swanglei; CHECK-NEXT: vld $vr0, $a1, 0 484*a5c90e48Swanglei; CHECK-NEXT: vld $vr1, $a2, 0 485*a5c90e48Swanglei; CHECK-NEXT: vfcmp.cun.d $vr0, $vr0, $vr1 4869ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 4879ff7d0ebSwanglei; CHECK-NEXT: ret 4889ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 4899ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 4909ff7d0ebSwanglei %cmp = fcmp uno <2 x double> %v0, %v1 4919ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 4929ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 4939ff7d0ebSwanglei ret void 4949ff7d0ebSwanglei} 4959ff7d0ebSwanglei 4969ff7d0ebSwanglei;; Expand SETOGT 4979ff7d0ebSwangleidefine void @v4f32_fcmp_ogt(ptr %res, ptr %a0, ptr %a1) nounwind { 4989ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ogt: 4999ff7d0ebSwanglei; CHECK: # %bb.0: 5009ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 5019ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 5029ff7d0ebSwanglei; CHECK-NEXT: vfcmp.clt.s $vr0, $vr1, $vr0 5039ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 5049ff7d0ebSwanglei; CHECK-NEXT: ret 5059ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 5069ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 5079ff7d0ebSwanglei %cmp = fcmp ogt <4 x float> %v0, %v1 5089ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 5099ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 5109ff7d0ebSwanglei ret void 5119ff7d0ebSwanglei} 5129ff7d0ebSwanglei 5139ff7d0ebSwangleidefine void @v2f64_fcmp_ogt(ptr %res, ptr %a0, ptr %a1) nounwind { 5149ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ogt: 5159ff7d0ebSwanglei; CHECK: # %bb.0: 5169ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 5179ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 5189ff7d0ebSwanglei; CHECK-NEXT: vfcmp.clt.d $vr0, $vr1, $vr0 5199ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 5209ff7d0ebSwanglei; CHECK-NEXT: ret 5219ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 5229ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 5239ff7d0ebSwanglei %cmp = fcmp ogt <2 x double> %v0, %v1 5249ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 5259ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 5269ff7d0ebSwanglei ret void 5279ff7d0ebSwanglei} 5289ff7d0ebSwanglei 5299ff7d0ebSwanglei;; Expand SETUGT 5309ff7d0ebSwangleidefine void @v4f32_fcmp_ugt(ptr %res, ptr %a0, ptr %a1) nounwind { 5319ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ugt: 5329ff7d0ebSwanglei; CHECK: # %bb.0: 5339ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 5349ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 5359ff7d0ebSwanglei; CHECK-NEXT: vfcmp.cult.s $vr0, $vr1, $vr0 5369ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 5379ff7d0ebSwanglei; CHECK-NEXT: ret 5389ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 5399ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 5409ff7d0ebSwanglei %cmp = fcmp ugt <4 x float> %v0, %v1 5419ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 5429ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 5439ff7d0ebSwanglei ret void 5449ff7d0ebSwanglei} 5459ff7d0ebSwanglei 5469ff7d0ebSwangleidefine void @v2f64_fcmp_ugt(ptr %res, ptr %a0, ptr %a1) nounwind { 5479ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ugt: 5489ff7d0ebSwanglei; CHECK: # %bb.0: 5499ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 5509ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 5519ff7d0ebSwanglei; CHECK-NEXT: vfcmp.cult.d $vr0, $vr1, $vr0 5529ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 5539ff7d0ebSwanglei; CHECK-NEXT: ret 5549ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 5559ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 5569ff7d0ebSwanglei %cmp = fcmp ugt <2 x double> %v0, %v1 5579ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 5589ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 5599ff7d0ebSwanglei ret void 5609ff7d0ebSwanglei} 5619ff7d0ebSwanglei 5629ff7d0ebSwanglei;; Expand SETGT 5639ff7d0ebSwangleidefine void @v4f32_fcmp_gt(ptr %res, ptr %a0, ptr %a1) nounwind { 5649ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_gt: 5659ff7d0ebSwanglei; CHECK: # %bb.0: 5669ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 5679ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 5689ff7d0ebSwanglei; CHECK-NEXT: vfcmp.clt.s $vr0, $vr1, $vr0 5699ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 5709ff7d0ebSwanglei; CHECK-NEXT: ret 5719ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 5729ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 5739ff7d0ebSwanglei %cmp = fcmp fast ogt <4 x float> %v0, %v1 5749ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 5759ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 5769ff7d0ebSwanglei ret void 5779ff7d0ebSwanglei} 5789ff7d0ebSwanglei 5799ff7d0ebSwangleidefine void @v2f64_fcmp_gt(ptr %res, ptr %a0, ptr %a1) nounwind { 5809ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_gt: 5819ff7d0ebSwanglei; CHECK: # %bb.0: 5829ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 5839ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 5849ff7d0ebSwanglei; CHECK-NEXT: vfcmp.clt.d $vr0, $vr1, $vr0 5859ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 5869ff7d0ebSwanglei; CHECK-NEXT: ret 5879ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 5889ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 5899ff7d0ebSwanglei %cmp = fcmp fast ugt <2 x double> %v0, %v1 5909ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 5919ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 5929ff7d0ebSwanglei ret void 5939ff7d0ebSwanglei} 5949ff7d0ebSwanglei 5959ff7d0ebSwanglei;; Expand SETOGE 5969ff7d0ebSwangleidefine void @v4f32_fcmp_oge(ptr %res, ptr %a0, ptr %a1) nounwind { 5979ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_oge: 5989ff7d0ebSwanglei; CHECK: # %bb.0: 5999ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 6009ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 6019ff7d0ebSwanglei; CHECK-NEXT: vfcmp.cle.s $vr0, $vr1, $vr0 6029ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 6039ff7d0ebSwanglei; CHECK-NEXT: ret 6049ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 6059ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 6069ff7d0ebSwanglei %cmp = fcmp oge <4 x float> %v0, %v1 6079ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 6089ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 6099ff7d0ebSwanglei ret void 6109ff7d0ebSwanglei} 6119ff7d0ebSwanglei 6129ff7d0ebSwangleidefine void @v2f64_fcmp_oge(ptr %res, ptr %a0, ptr %a1) nounwind { 6139ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_oge: 6149ff7d0ebSwanglei; CHECK: # %bb.0: 6159ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 6169ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 6179ff7d0ebSwanglei; CHECK-NEXT: vfcmp.cle.d $vr0, $vr1, $vr0 6189ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 6199ff7d0ebSwanglei; CHECK-NEXT: ret 6209ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 6219ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 6229ff7d0ebSwanglei %cmp = fcmp oge <2 x double> %v0, %v1 6239ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 6249ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 6259ff7d0ebSwanglei ret void 6269ff7d0ebSwanglei} 6279ff7d0ebSwanglei 6289ff7d0ebSwanglei;; Expand SETUGE 6299ff7d0ebSwangleidefine void @v4f32_fcmp_uge(ptr %res, ptr %a0, ptr %a1) nounwind { 6309ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_uge: 6319ff7d0ebSwanglei; CHECK: # %bb.0: 6329ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 6339ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 6349ff7d0ebSwanglei; CHECK-NEXT: vfcmp.cule.s $vr0, $vr1, $vr0 6359ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 6369ff7d0ebSwanglei; CHECK-NEXT: ret 6379ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 6389ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 6399ff7d0ebSwanglei %cmp = fcmp uge <4 x float> %v0, %v1 6409ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 6419ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 6429ff7d0ebSwanglei ret void 6439ff7d0ebSwanglei} 6449ff7d0ebSwanglei 6459ff7d0ebSwangleidefine void @v2f64_fcmp_uge(ptr %res, ptr %a0, ptr %a1) nounwind { 6469ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_uge: 6479ff7d0ebSwanglei; CHECK: # %bb.0: 6489ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 6499ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 6509ff7d0ebSwanglei; CHECK-NEXT: vfcmp.cule.d $vr0, $vr1, $vr0 6519ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 6529ff7d0ebSwanglei; CHECK-NEXT: ret 6539ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 6549ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 6559ff7d0ebSwanglei %cmp = fcmp uge <2 x double> %v0, %v1 6569ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 6579ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 6589ff7d0ebSwanglei ret void 6599ff7d0ebSwanglei} 6609ff7d0ebSwanglei 6619ff7d0ebSwanglei;; Expand SETGE 6629ff7d0ebSwangleidefine void @v4f32_fcmp_ge(ptr %res, ptr %a0, ptr %a1) nounwind { 6639ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ge: 6649ff7d0ebSwanglei; CHECK: # %bb.0: 6659ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 6669ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 6679ff7d0ebSwanglei; CHECK-NEXT: vfcmp.cle.s $vr0, $vr1, $vr0 6689ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 6699ff7d0ebSwanglei; CHECK-NEXT: ret 6709ff7d0ebSwanglei %v0 = load <4 x float>, ptr %a0 6719ff7d0ebSwanglei %v1 = load <4 x float>, ptr %a1 6729ff7d0ebSwanglei %cmp = fcmp fast oge <4 x float> %v0, %v1 6739ff7d0ebSwanglei %ext = sext <4 x i1> %cmp to <4 x i32> 6749ff7d0ebSwanglei store <4 x i32> %ext, ptr %res 6759ff7d0ebSwanglei ret void 6769ff7d0ebSwanglei} 6779ff7d0ebSwanglei 6789ff7d0ebSwangleidefine void @v2f64_fcmp_ge(ptr %res, ptr %a0, ptr %a1) nounwind { 6799ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ge: 6809ff7d0ebSwanglei; CHECK: # %bb.0: 6819ff7d0ebSwanglei; CHECK-NEXT: vld $vr0, $a1, 0 6829ff7d0ebSwanglei; CHECK-NEXT: vld $vr1, $a2, 0 6839ff7d0ebSwanglei; CHECK-NEXT: vfcmp.cle.d $vr0, $vr1, $vr0 6849ff7d0ebSwanglei; CHECK-NEXT: vst $vr0, $a0, 0 6859ff7d0ebSwanglei; CHECK-NEXT: ret 6869ff7d0ebSwanglei %v0 = load <2 x double>, ptr %a0 6879ff7d0ebSwanglei %v1 = load <2 x double>, ptr %a1 6889ff7d0ebSwanglei %cmp = fcmp fast uge <2 x double> %v0, %v1 6899ff7d0ebSwanglei %ext = sext <2 x i1> %cmp to <2 x i64> 6909ff7d0ebSwanglei store <2 x i64> %ext, ptr %res 6919ff7d0ebSwanglei ret void 6929ff7d0ebSwanglei} 693