694 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lasx < %s | FileCheck %s3; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s4 5;; TREU6define void @v8f32_fcmp_true(ptr %res, ptr %a0, ptr %a1) nounwind {7; CHECK-LABEL: v8f32_fcmp_true:8; CHECK: # %bb.0:9; CHECK-NEXT: xvrepli.b $xr0, -110; CHECK-NEXT: xvst $xr0, $a0, 011; CHECK-NEXT: ret12 %v0 = load <8 x float>, ptr %a013 %v1 = load <8 x float>, ptr %a114 %cmp = fcmp true <8 x float> %v0, %v115 %ext = sext <8 x i1> %cmp to <8 x i32>16 store <8 x i32> %ext, ptr %res17 ret void18}19 20;; FALSE21define void @v4f64_fcmp_false(ptr %res, ptr %a0, ptr %a1) nounwind {22; CHECK-LABEL: v4f64_fcmp_false:23; CHECK: # %bb.0:24; CHECK-NEXT: xvrepli.b $xr0, 025; CHECK-NEXT: xvst $xr0, $a0, 026; CHECK-NEXT: ret27 %v0 = load <4 x double>, ptr %a028 %v1 = load <4 x double>, ptr %a129 %cmp = fcmp false <4 x double> %v0, %v130 %ext = sext <4 x i1> %cmp to <4 x i64>31 store <4 x i64> %ext, ptr %res32 ret void33}34 35;; SETOEQ36define void @v8f32_fcmp_oeq(ptr %res, ptr %a0, ptr %a1) nounwind {37; CHECK-LABEL: v8f32_fcmp_oeq:38; CHECK: # %bb.0:39; CHECK-NEXT: xvld $xr0, $a1, 040; CHECK-NEXT: xvld $xr1, $a2, 041; CHECK-NEXT: xvfcmp.ceq.s $xr0, $xr0, $xr142; CHECK-NEXT: xvst $xr0, $a0, 043; CHECK-NEXT: ret44 %v0 = load <8 x float>, ptr %a045 %v1 = load <8 x float>, ptr %a146 %cmp = fcmp oeq <8 x float> %v0, %v147 %ext = sext <8 x i1> %cmp to <8 x i32>48 store <8 x i32> %ext, ptr %res49 ret void50}51 52define void @v4f64_fcmp_oeq(ptr %res, ptr %a0, ptr %a1) nounwind {53; CHECK-LABEL: v4f64_fcmp_oeq:54; CHECK: # %bb.0:55; CHECK-NEXT: xvld $xr0, $a1, 056; CHECK-NEXT: xvld $xr1, $a2, 057; CHECK-NEXT: xvfcmp.ceq.d $xr0, $xr0, $xr158; CHECK-NEXT: xvst $xr0, $a0, 059; CHECK-NEXT: ret60 %v0 = load <4 x double>, ptr %a061 %v1 = load <4 x double>, ptr %a162 %cmp = fcmp oeq <4 x double> %v0, %v163 %ext = sext <4 x i1> %cmp to <4 x i64>64 store <4 x i64> %ext, ptr %res65 ret void66}67 68;; SETUEQ69define void @v8f32_fcmp_ueq(ptr %res, ptr %a0, ptr %a1) nounwind {70; CHECK-LABEL: v8f32_fcmp_ueq:71; CHECK: # %bb.0:72; CHECK-NEXT: xvld $xr0, $a1, 073; CHECK-NEXT: xvld $xr1, $a2, 074; CHECK-NEXT: xvfcmp.cueq.s $xr0, $xr0, $xr175; CHECK-NEXT: xvst $xr0, $a0, 076; CHECK-NEXT: ret77 %v0 = load <8 x float>, ptr %a078 %v1 = load <8 x float>, ptr %a179 %cmp = fcmp ueq <8 x float> %v0, %v180 %ext = sext <8 x i1> %cmp to <8 x i32>81 store <8 x i32> %ext, ptr %res82 ret void83}84 85define void @v4f64_fcmp_ueq(ptr %res, ptr %a0, ptr %a1) nounwind {86; CHECK-LABEL: v4f64_fcmp_ueq:87; CHECK: # %bb.0:88; CHECK-NEXT: xvld $xr0, $a1, 089; CHECK-NEXT: xvld $xr1, $a2, 090; CHECK-NEXT: xvfcmp.cueq.d $xr0, $xr0, $xr191; CHECK-NEXT: xvst $xr0, $a0, 092; CHECK-NEXT: ret93 %v0 = load <4 x double>, ptr %a094 %v1 = load <4 x double>, ptr %a195 %cmp = fcmp ueq <4 x double> %v0, %v196 %ext = sext <4 x i1> %cmp to <4 x i64>97 store <4 x i64> %ext, ptr %res98 ret void99}100 101;; SETEQ102define void @v8f32_fcmp_eq(ptr %res, ptr %a0, ptr %a1) nounwind {103; CHECK-LABEL: v8f32_fcmp_eq:104; CHECK: # %bb.0:105; CHECK-NEXT: xvld $xr0, $a1, 0106; CHECK-NEXT: xvld $xr1, $a2, 0107; CHECK-NEXT: xvfcmp.ceq.s $xr0, $xr0, $xr1108; CHECK-NEXT: xvst $xr0, $a0, 0109; CHECK-NEXT: ret110 %v0 = load <8 x float>, ptr %a0111 %v1 = load <8 x float>, ptr %a1112 %cmp = fcmp fast oeq <8 x float> %v0, %v1113 %ext = sext <8 x i1> %cmp to <8 x i32>114 store <8 x i32> %ext, ptr %res115 ret void116}117 118define void @v4f64_fcmp_eq(ptr %res, ptr %a0, ptr %a1) nounwind {119; CHECK-LABEL: v4f64_fcmp_eq:120; CHECK: # %bb.0:121; CHECK-NEXT: xvld $xr0, $a1, 0122; CHECK-NEXT: xvld $xr1, $a2, 0123; CHECK-NEXT: xvfcmp.ceq.d $xr0, $xr0, $xr1124; CHECK-NEXT: xvst $xr0, $a0, 0125; CHECK-NEXT: ret126 %v0 = load <4 x double>, ptr %a0127 %v1 = load <4 x double>, ptr %a1128 %cmp = fcmp fast ueq <4 x double> %v0, %v1129 %ext = sext <4 x i1> %cmp to <4 x i64>130 store <4 x i64> %ext, ptr %res131 ret void132}133 134;; SETOLE135define void @v8f32_fcmp_ole(ptr %res, ptr %a0, ptr %a1) nounwind {136; CHECK-LABEL: v8f32_fcmp_ole:137; CHECK: # %bb.0:138; CHECK-NEXT: xvld $xr0, $a1, 0139; CHECK-NEXT: xvld $xr1, $a2, 0140; CHECK-NEXT: xvfcmp.cle.s $xr0, $xr0, $xr1141; CHECK-NEXT: xvst $xr0, $a0, 0142; CHECK-NEXT: ret143 %v0 = load <8 x float>, ptr %a0144 %v1 = load <8 x float>, ptr %a1145 %cmp = fcmp ole <8 x float> %v0, %v1146 %ext = sext <8 x i1> %cmp to <8 x i32>147 store <8 x i32> %ext, ptr %res148 ret void149}150 151define void @v4f64_fcmp_ole(ptr %res, ptr %a0, ptr %a1) nounwind {152; CHECK-LABEL: v4f64_fcmp_ole:153; CHECK: # %bb.0:154; CHECK-NEXT: xvld $xr0, $a1, 0155; CHECK-NEXT: xvld $xr1, $a2, 0156; CHECK-NEXT: xvfcmp.cle.d $xr0, $xr0, $xr1157; CHECK-NEXT: xvst $xr0, $a0, 0158; CHECK-NEXT: ret159 %v0 = load <4 x double>, ptr %a0160 %v1 = load <4 x double>, ptr %a1161 %cmp = fcmp ole <4 x double> %v0, %v1162 %ext = sext <4 x i1> %cmp to <4 x i64>163 store <4 x i64> %ext, ptr %res164 ret void165}166 167;; SETULE168define void @v8f32_fcmp_ule(ptr %res, ptr %a0, ptr %a1) nounwind {169; CHECK-LABEL: v8f32_fcmp_ule:170; CHECK: # %bb.0:171; CHECK-NEXT: xvld $xr0, $a1, 0172; CHECK-NEXT: xvld $xr1, $a2, 0173; CHECK-NEXT: xvfcmp.cule.s $xr0, $xr0, $xr1174; CHECK-NEXT: xvst $xr0, $a0, 0175; CHECK-NEXT: ret176 %v0 = load <8 x float>, ptr %a0177 %v1 = load <8 x float>, ptr %a1178 %cmp = fcmp ule <8 x float> %v0, %v1179 %ext = sext <8 x i1> %cmp to <8 x i32>180 store <8 x i32> %ext, ptr %res181 ret void182}183 184define void @v4f64_fcmp_ule(ptr %res, ptr %a0, ptr %a1) nounwind {185; CHECK-LABEL: v4f64_fcmp_ule:186; CHECK: # %bb.0:187; CHECK-NEXT: xvld $xr0, $a1, 0188; CHECK-NEXT: xvld $xr1, $a2, 0189; CHECK-NEXT: xvfcmp.cule.d $xr0, $xr0, $xr1190; CHECK-NEXT: xvst $xr0, $a0, 0191; CHECK-NEXT: ret192 %v0 = load <4 x double>, ptr %a0193 %v1 = load <4 x double>, ptr %a1194 %cmp = fcmp ule <4 x double> %v0, %v1195 %ext = sext <4 x i1> %cmp to <4 x i64>196 store <4 x i64> %ext, ptr %res197 ret void198}199 200;; SETLE201define void @v8f32_fcmp_le(ptr %res, ptr %a0, ptr %a1) nounwind {202; CHECK-LABEL: v8f32_fcmp_le:203; CHECK: # %bb.0:204; CHECK-NEXT: xvld $xr0, $a1, 0205; CHECK-NEXT: xvld $xr1, $a2, 0206; CHECK-NEXT: xvfcmp.cle.s $xr0, $xr0, $xr1207; CHECK-NEXT: xvst $xr0, $a0, 0208; CHECK-NEXT: ret209 %v0 = load <8 x float>, ptr %a0210 %v1 = load <8 x float>, ptr %a1211 %cmp = fcmp fast ole <8 x float> %v0, %v1212 %ext = sext <8 x i1> %cmp to <8 x i32>213 store <8 x i32> %ext, ptr %res214 ret void215}216 217define void @v4f64_fcmp_le(ptr %res, ptr %a0, ptr %a1) nounwind {218; CHECK-LABEL: v4f64_fcmp_le:219; CHECK: # %bb.0:220; CHECK-NEXT: xvld $xr0, $a1, 0221; CHECK-NEXT: xvld $xr1, $a2, 0222; CHECK-NEXT: xvfcmp.cle.d $xr0, $xr0, $xr1223; CHECK-NEXT: xvst $xr0, $a0, 0224; CHECK-NEXT: ret225 %v0 = load <4 x double>, ptr %a0226 %v1 = load <4 x double>, ptr %a1227 %cmp = fcmp fast ule <4 x double> %v0, %v1228 %ext = sext <4 x i1> %cmp to <4 x i64>229 store <4 x i64> %ext, ptr %res230 ret void231}232 233;; SETOLT234define void @v8f32_fcmp_olt(ptr %res, ptr %a0, ptr %a1) nounwind {235; CHECK-LABEL: v8f32_fcmp_olt:236; CHECK: # %bb.0:237; CHECK-NEXT: xvld $xr0, $a1, 0238; CHECK-NEXT: xvld $xr1, $a2, 0239; CHECK-NEXT: xvfcmp.clt.s $xr0, $xr0, $xr1240; CHECK-NEXT: xvst $xr0, $a0, 0241; CHECK-NEXT: ret242 %v0 = load <8 x float>, ptr %a0243 %v1 = load <8 x float>, ptr %a1244 %cmp = fcmp olt <8 x float> %v0, %v1245 %ext = sext <8 x i1> %cmp to <8 x i32>246 store <8 x i32> %ext, ptr %res247 ret void248}249 250define void @v4f64_fcmp_olt(ptr %res, ptr %a0, ptr %a1) nounwind {251; CHECK-LABEL: v4f64_fcmp_olt:252; CHECK: # %bb.0:253; CHECK-NEXT: xvld $xr0, $a1, 0254; CHECK-NEXT: xvld $xr1, $a2, 0255; CHECK-NEXT: xvfcmp.clt.d $xr0, $xr0, $xr1256; CHECK-NEXT: xvst $xr0, $a0, 0257; CHECK-NEXT: ret258 %v0 = load <4 x double>, ptr %a0259 %v1 = load <4 x double>, ptr %a1260 %cmp = fcmp olt <4 x double> %v0, %v1261 %ext = sext <4 x i1> %cmp to <4 x i64>262 store <4 x i64> %ext, ptr %res263 ret void264}265 266;; SETULT267define void @v8f32_fcmp_ult(ptr %res, ptr %a0, ptr %a1) nounwind {268; CHECK-LABEL: v8f32_fcmp_ult:269; CHECK: # %bb.0:270; CHECK-NEXT: xvld $xr0, $a1, 0271; CHECK-NEXT: xvld $xr1, $a2, 0272; CHECK-NEXT: xvfcmp.cult.s $xr0, $xr0, $xr1273; CHECK-NEXT: xvst $xr0, $a0, 0274; CHECK-NEXT: ret275 %v0 = load <8 x float>, ptr %a0276 %v1 = load <8 x float>, ptr %a1277 %cmp = fcmp ult <8 x float> %v0, %v1278 %ext = sext <8 x i1> %cmp to <8 x i32>279 store <8 x i32> %ext, ptr %res280 ret void281}282 283define void @v4f64_fcmp_ult(ptr %res, ptr %a0, ptr %a1) nounwind {284; CHECK-LABEL: v4f64_fcmp_ult:285; CHECK: # %bb.0:286; CHECK-NEXT: xvld $xr0, $a1, 0287; CHECK-NEXT: xvld $xr1, $a2, 0288; CHECK-NEXT: xvfcmp.cult.d $xr0, $xr0, $xr1289; CHECK-NEXT: xvst $xr0, $a0, 0290; CHECK-NEXT: ret291 %v0 = load <4 x double>, ptr %a0292 %v1 = load <4 x double>, ptr %a1293 %cmp = fcmp ult <4 x double> %v0, %v1294 %ext = sext <4 x i1> %cmp to <4 x i64>295 store <4 x i64> %ext, ptr %res296 ret void297}298 299;; SETLT300define void @v8f32_fcmp_lt(ptr %res, ptr %a0, ptr %a1) nounwind {301; CHECK-LABEL: v8f32_fcmp_lt:302; CHECK: # %bb.0:303; CHECK-NEXT: xvld $xr0, $a1, 0304; CHECK-NEXT: xvld $xr1, $a2, 0305; CHECK-NEXT: xvfcmp.clt.s $xr0, $xr0, $xr1306; CHECK-NEXT: xvst $xr0, $a0, 0307; CHECK-NEXT: ret308 %v0 = load <8 x float>, ptr %a0309 %v1 = load <8 x float>, ptr %a1310 %cmp = fcmp fast olt <8 x float> %v0, %v1311 %ext = sext <8 x i1> %cmp to <8 x i32>312 store <8 x i32> %ext, ptr %res313 ret void314}315 316define void @v4f64_fcmp_lt(ptr %res, ptr %a0, ptr %a1) nounwind {317; CHECK-LABEL: v4f64_fcmp_lt:318; CHECK: # %bb.0:319; CHECK-NEXT: xvld $xr0, $a1, 0320; CHECK-NEXT: xvld $xr1, $a2, 0321; CHECK-NEXT: xvfcmp.clt.d $xr0, $xr0, $xr1322; CHECK-NEXT: xvst $xr0, $a0, 0323; CHECK-NEXT: ret324 %v0 = load <4 x double>, ptr %a0325 %v1 = load <4 x double>, ptr %a1326 %cmp = fcmp fast ult <4 x double> %v0, %v1327 %ext = sext <4 x i1> %cmp to <4 x i64>328 store <4 x i64> %ext, ptr %res329 ret void330}331 332;; SETONE333define void @v8f32_fcmp_one(ptr %res, ptr %a0, ptr %a1) nounwind {334; CHECK-LABEL: v8f32_fcmp_one:335; CHECK: # %bb.0:336; CHECK-NEXT: xvld $xr0, $a1, 0337; CHECK-NEXT: xvld $xr1, $a2, 0338; CHECK-NEXT: xvfcmp.cne.s $xr0, $xr0, $xr1339; CHECK-NEXT: xvst $xr0, $a0, 0340; CHECK-NEXT: ret341 %v0 = load <8 x float>, ptr %a0342 %v1 = load <8 x float>, ptr %a1343 %cmp = fcmp one <8 x float> %v0, %v1344 %ext = sext <8 x i1> %cmp to <8 x i32>345 store <8 x i32> %ext, ptr %res346 ret void347}348 349define void @v4f64_fcmp_one(ptr %res, ptr %a0, ptr %a1) nounwind {350; CHECK-LABEL: v4f64_fcmp_one:351; CHECK: # %bb.0:352; CHECK-NEXT: xvld $xr0, $a1, 0353; CHECK-NEXT: xvld $xr1, $a2, 0354; CHECK-NEXT: xvfcmp.cne.d $xr0, $xr0, $xr1355; CHECK-NEXT: xvst $xr0, $a0, 0356; CHECK-NEXT: ret357 %v0 = load <4 x double>, ptr %a0358 %v1 = load <4 x double>, ptr %a1359 %cmp = fcmp one <4 x double> %v0, %v1360 %ext = sext <4 x i1> %cmp to <4 x i64>361 store <4 x i64> %ext, ptr %res362 ret void363}364 365;; SETUNE366define void @v8f32_fcmp_une(ptr %res, ptr %a0, ptr %a1) nounwind {367; CHECK-LABEL: v8f32_fcmp_une:368; CHECK: # %bb.0:369; CHECK-NEXT: xvld $xr0, $a1, 0370; CHECK-NEXT: xvld $xr1, $a2, 0371; CHECK-NEXT: xvfcmp.cune.s $xr0, $xr0, $xr1372; CHECK-NEXT: xvst $xr0, $a0, 0373; CHECK-NEXT: ret374 %v0 = load <8 x float>, ptr %a0375 %v1 = load <8 x float>, ptr %a1376 %cmp = fcmp une <8 x float> %v0, %v1377 %ext = sext <8 x i1> %cmp to <8 x i32>378 store <8 x i32> %ext, ptr %res379 ret void380}381 382define void @v4f64_fcmp_une(ptr %res, ptr %a0, ptr %a1) nounwind {383; CHECK-LABEL: v4f64_fcmp_une:384; CHECK: # %bb.0:385; CHECK-NEXT: xvld $xr0, $a1, 0386; CHECK-NEXT: xvld $xr1, $a2, 0387; CHECK-NEXT: xvfcmp.cune.d $xr0, $xr0, $xr1388; CHECK-NEXT: xvst $xr0, $a0, 0389; CHECK-NEXT: ret390 %v0 = load <4 x double>, ptr %a0391 %v1 = load <4 x double>, ptr %a1392 %cmp = fcmp une <4 x double> %v0, %v1393 %ext = sext <4 x i1> %cmp to <4 x i64>394 store <4 x i64> %ext, ptr %res395 ret void396}397 398;; SETNE399define void @v8f32_fcmp_ne(ptr %res, ptr %a0, ptr %a1) nounwind {400; CHECK-LABEL: v8f32_fcmp_ne:401; CHECK: # %bb.0:402; CHECK-NEXT: xvld $xr0, $a1, 0403; CHECK-NEXT: xvld $xr1, $a2, 0404; CHECK-NEXT: xvfcmp.cne.s $xr0, $xr0, $xr1405; CHECK-NEXT: xvst $xr0, $a0, 0406; CHECK-NEXT: ret407 %v0 = load <8 x float>, ptr %a0408 %v1 = load <8 x float>, ptr %a1409 %cmp = fcmp fast one <8 x float> %v0, %v1410 %ext = sext <8 x i1> %cmp to <8 x i32>411 store <8 x i32> %ext, ptr %res412 ret void413}414 415define void @v4f64_fcmp_ne(ptr %res, ptr %a0, ptr %a1) nounwind {416; CHECK-LABEL: v4f64_fcmp_ne:417; CHECK: # %bb.0:418; CHECK-NEXT: xvld $xr0, $a1, 0419; CHECK-NEXT: xvld $xr1, $a2, 0420; CHECK-NEXT: xvfcmp.cne.d $xr0, $xr0, $xr1421; CHECK-NEXT: xvst $xr0, $a0, 0422; CHECK-NEXT: ret423 %v0 = load <4 x double>, ptr %a0424 %v1 = load <4 x double>, ptr %a1425 %cmp = fcmp fast une <4 x double> %v0, %v1426 %ext = sext <4 x i1> %cmp to <4 x i64>427 store <4 x i64> %ext, ptr %res428 ret void429}430 431;; SETO432define void @v8f32_fcmp_ord(ptr %res, ptr %a0, ptr %a1) nounwind {433; CHECK-LABEL: v8f32_fcmp_ord:434; CHECK: # %bb.0:435; CHECK-NEXT: xvld $xr0, $a1, 0436; CHECK-NEXT: xvld $xr1, $a2, 0437; CHECK-NEXT: xvfcmp.cor.s $xr0, $xr0, $xr1438; CHECK-NEXT: xvst $xr0, $a0, 0439; CHECK-NEXT: ret440 %v0 = load <8 x float>, ptr %a0441 %v1 = load <8 x float>, ptr %a1442 %cmp = fcmp ord <8 x float> %v0, %v1443 %ext = sext <8 x i1> %cmp to <8 x i32>444 store <8 x i32> %ext, ptr %res445 ret void446}447 448define void @v4f64_fcmp_ord(ptr %res, ptr %a0, ptr %a1) nounwind {449; CHECK-LABEL: v4f64_fcmp_ord:450; CHECK: # %bb.0:451; CHECK-NEXT: xvld $xr0, $a1, 0452; CHECK-NEXT: xvld $xr1, $a2, 0453; CHECK-NEXT: xvfcmp.cor.d $xr0, $xr0, $xr1454; CHECK-NEXT: xvst $xr0, $a0, 0455; CHECK-NEXT: ret456 %v0 = load <4 x double>, ptr %a0457 %v1 = load <4 x double>, ptr %a1458 %cmp = fcmp ord <4 x double> %v0, %v1459 %ext = sext <4 x i1> %cmp to <4 x i64>460 store <4 x i64> %ext, ptr %res461 ret void462}463 464;; SETUO465define void @v8f32_fcmp_uno(ptr %res, ptr %a0, ptr %a1) nounwind {466; CHECK-LABEL: v8f32_fcmp_uno:467; CHECK: # %bb.0:468; CHECK-NEXT: xvld $xr0, $a1, 0469; CHECK-NEXT: xvld $xr1, $a2, 0470; CHECK-NEXT: xvfcmp.cun.s $xr0, $xr0, $xr1471; CHECK-NEXT: xvst $xr0, $a0, 0472; CHECK-NEXT: ret473 %v0 = load <8 x float>, ptr %a0474 %v1 = load <8 x float>, ptr %a1475 %cmp = fcmp uno <8 x float> %v0, %v1476 %ext = sext <8 x i1> %cmp to <8 x i32>477 store <8 x i32> %ext, ptr %res478 ret void479}480 481define void @v4f64_fcmp_uno(ptr %res, ptr %a0, ptr %a1) nounwind {482; CHECK-LABEL: v4f64_fcmp_uno:483; CHECK: # %bb.0:484; CHECK-NEXT: xvld $xr0, $a1, 0485; CHECK-NEXT: xvld $xr1, $a2, 0486; CHECK-NEXT: xvfcmp.cun.d $xr0, $xr0, $xr1487; CHECK-NEXT: xvst $xr0, $a0, 0488; CHECK-NEXT: ret489 %v0 = load <4 x double>, ptr %a0490 %v1 = load <4 x double>, ptr %a1491 %cmp = fcmp uno <4 x double> %v0, %v1492 %ext = sext <4 x i1> %cmp to <4 x i64>493 store <4 x i64> %ext, ptr %res494 ret void495}496 497;; Expand SETOGT498define void @v8f32_fcmp_ogt(ptr %res, ptr %a0, ptr %a1) nounwind {499; CHECK-LABEL: v8f32_fcmp_ogt:500; CHECK: # %bb.0:501; CHECK-NEXT: xvld $xr0, $a1, 0502; CHECK-NEXT: xvld $xr1, $a2, 0503; CHECK-NEXT: xvfcmp.clt.s $xr0, $xr1, $xr0504; CHECK-NEXT: xvst $xr0, $a0, 0505; CHECK-NEXT: ret506 %v0 = load <8 x float>, ptr %a0507 %v1 = load <8 x float>, ptr %a1508 %cmp = fcmp ogt <8 x float> %v0, %v1509 %ext = sext <8 x i1> %cmp to <8 x i32>510 store <8 x i32> %ext, ptr %res511 ret void512}513 514define void @v4f64_fcmp_ogt(ptr %res, ptr %a0, ptr %a1) nounwind {515; CHECK-LABEL: v4f64_fcmp_ogt:516; CHECK: # %bb.0:517; CHECK-NEXT: xvld $xr0, $a1, 0518; CHECK-NEXT: xvld $xr1, $a2, 0519; CHECK-NEXT: xvfcmp.clt.d $xr0, $xr1, $xr0520; CHECK-NEXT: xvst $xr0, $a0, 0521; CHECK-NEXT: ret522 %v0 = load <4 x double>, ptr %a0523 %v1 = load <4 x double>, ptr %a1524 %cmp = fcmp ogt <4 x double> %v0, %v1525 %ext = sext <4 x i1> %cmp to <4 x i64>526 store <4 x i64> %ext, ptr %res527 ret void528}529 530;; Expand SETUGT531define void @v8f32_fcmp_ugt(ptr %res, ptr %a0, ptr %a1) nounwind {532; CHECK-LABEL: v8f32_fcmp_ugt:533; CHECK: # %bb.0:534; CHECK-NEXT: xvld $xr0, $a1, 0535; CHECK-NEXT: xvld $xr1, $a2, 0536; CHECK-NEXT: xvfcmp.cult.s $xr0, $xr1, $xr0537; CHECK-NEXT: xvst $xr0, $a0, 0538; CHECK-NEXT: ret539 %v0 = load <8 x float>, ptr %a0540 %v1 = load <8 x float>, ptr %a1541 %cmp = fcmp ugt <8 x float> %v0, %v1542 %ext = sext <8 x i1> %cmp to <8 x i32>543 store <8 x i32> %ext, ptr %res544 ret void545}546 547define void @v4f64_fcmp_ugt(ptr %res, ptr %a0, ptr %a1) nounwind {548; CHECK-LABEL: v4f64_fcmp_ugt:549; CHECK: # %bb.0:550; CHECK-NEXT: xvld $xr0, $a1, 0551; CHECK-NEXT: xvld $xr1, $a2, 0552; CHECK-NEXT: xvfcmp.cult.d $xr0, $xr1, $xr0553; CHECK-NEXT: xvst $xr0, $a0, 0554; CHECK-NEXT: ret555 %v0 = load <4 x double>, ptr %a0556 %v1 = load <4 x double>, ptr %a1557 %cmp = fcmp ugt <4 x double> %v0, %v1558 %ext = sext <4 x i1> %cmp to <4 x i64>559 store <4 x i64> %ext, ptr %res560 ret void561}562 563;; Expand SETGT564define void @v8f32_fcmp_gt(ptr %res, ptr %a0, ptr %a1) nounwind {565; CHECK-LABEL: v8f32_fcmp_gt:566; CHECK: # %bb.0:567; CHECK-NEXT: xvld $xr0, $a1, 0568; CHECK-NEXT: xvld $xr1, $a2, 0569; CHECK-NEXT: xvfcmp.clt.s $xr0, $xr1, $xr0570; CHECK-NEXT: xvst $xr0, $a0, 0571; CHECK-NEXT: ret572 %v0 = load <8 x float>, ptr %a0573 %v1 = load <8 x float>, ptr %a1574 %cmp = fcmp fast ogt <8 x float> %v0, %v1575 %ext = sext <8 x i1> %cmp to <8 x i32>576 store <8 x i32> %ext, ptr %res577 ret void578}579 580define void @v4f64_fcmp_gt(ptr %res, ptr %a0, ptr %a1) nounwind {581; CHECK-LABEL: v4f64_fcmp_gt:582; CHECK: # %bb.0:583; CHECK-NEXT: xvld $xr0, $a1, 0584; CHECK-NEXT: xvld $xr1, $a2, 0585; CHECK-NEXT: xvfcmp.clt.d $xr0, $xr1, $xr0586; CHECK-NEXT: xvst $xr0, $a0, 0587; CHECK-NEXT: ret588 %v0 = load <4 x double>, ptr %a0589 %v1 = load <4 x double>, ptr %a1590 %cmp = fcmp fast ugt <4 x double> %v0, %v1591 %ext = sext <4 x i1> %cmp to <4 x i64>592 store <4 x i64> %ext, ptr %res593 ret void594}595 596;; Expand SETOGE597define void @v8f32_fcmp_oge(ptr %res, ptr %a0, ptr %a1) nounwind {598; CHECK-LABEL: v8f32_fcmp_oge:599; CHECK: # %bb.0:600; CHECK-NEXT: xvld $xr0, $a1, 0601; CHECK-NEXT: xvld $xr1, $a2, 0602; CHECK-NEXT: xvfcmp.cle.s $xr0, $xr1, $xr0603; CHECK-NEXT: xvst $xr0, $a0, 0604; CHECK-NEXT: ret605 %v0 = load <8 x float>, ptr %a0606 %v1 = load <8 x float>, ptr %a1607 %cmp = fcmp oge <8 x float> %v0, %v1608 %ext = sext <8 x i1> %cmp to <8 x i32>609 store <8 x i32> %ext, ptr %res610 ret void611}612 613define void @v4f64_fcmp_oge(ptr %res, ptr %a0, ptr %a1) nounwind {614; CHECK-LABEL: v4f64_fcmp_oge:615; CHECK: # %bb.0:616; CHECK-NEXT: xvld $xr0, $a1, 0617; CHECK-NEXT: xvld $xr1, $a2, 0618; CHECK-NEXT: xvfcmp.cle.d $xr0, $xr1, $xr0619; CHECK-NEXT: xvst $xr0, $a0, 0620; CHECK-NEXT: ret621 %v0 = load <4 x double>, ptr %a0622 %v1 = load <4 x double>, ptr %a1623 %cmp = fcmp oge <4 x double> %v0, %v1624 %ext = sext <4 x i1> %cmp to <4 x i64>625 store <4 x i64> %ext, ptr %res626 ret void627}628 629;; Expand SETUGE630define void @v8f32_fcmp_uge(ptr %res, ptr %a0, ptr %a1) nounwind {631; CHECK-LABEL: v8f32_fcmp_uge:632; CHECK: # %bb.0:633; CHECK-NEXT: xvld $xr0, $a1, 0634; CHECK-NEXT: xvld $xr1, $a2, 0635; CHECK-NEXT: xvfcmp.cule.s $xr0, $xr1, $xr0636; CHECK-NEXT: xvst $xr0, $a0, 0637; CHECK-NEXT: ret638 %v0 = load <8 x float>, ptr %a0639 %v1 = load <8 x float>, ptr %a1640 %cmp = fcmp uge <8 x float> %v0, %v1641 %ext = sext <8 x i1> %cmp to <8 x i32>642 store <8 x i32> %ext, ptr %res643 ret void644}645 646define void @v4f64_fcmp_uge(ptr %res, ptr %a0, ptr %a1) nounwind {647; CHECK-LABEL: v4f64_fcmp_uge:648; CHECK: # %bb.0:649; CHECK-NEXT: xvld $xr0, $a1, 0650; CHECK-NEXT: xvld $xr1, $a2, 0651; CHECK-NEXT: xvfcmp.cule.d $xr0, $xr1, $xr0652; CHECK-NEXT: xvst $xr0, $a0, 0653; CHECK-NEXT: ret654 %v0 = load <4 x double>, ptr %a0655 %v1 = load <4 x double>, ptr %a1656 %cmp = fcmp uge <4 x double> %v0, %v1657 %ext = sext <4 x i1> %cmp to <4 x i64>658 store <4 x i64> %ext, ptr %res659 ret void660}661 662;; Expand SETGE663define void @v8f32_fcmp_ge(ptr %res, ptr %a0, ptr %a1) nounwind {664; CHECK-LABEL: v8f32_fcmp_ge:665; CHECK: # %bb.0:666; CHECK-NEXT: xvld $xr0, $a1, 0667; CHECK-NEXT: xvld $xr1, $a2, 0668; CHECK-NEXT: xvfcmp.cle.s $xr0, $xr1, $xr0669; CHECK-NEXT: xvst $xr0, $a0, 0670; CHECK-NEXT: ret671 %v0 = load <8 x float>, ptr %a0672 %v1 = load <8 x float>, ptr %a1673 %cmp = fcmp fast oge <8 x float> %v0, %v1674 %ext = sext <8 x i1> %cmp to <8 x i32>675 store <8 x i32> %ext, ptr %res676 ret void677}678 679define void @v4f64_fcmp_ge(ptr %res, ptr %a0, ptr %a1) nounwind {680; CHECK-LABEL: v4f64_fcmp_ge:681; CHECK: # %bb.0:682; CHECK-NEXT: xvld $xr0, $a1, 0683; CHECK-NEXT: xvld $xr1, $a2, 0684; CHECK-NEXT: xvfcmp.cle.d $xr0, $xr1, $xr0685; CHECK-NEXT: xvst $xr0, $a0, 0686; CHECK-NEXT: ret687 %v0 = load <4 x double>, ptr %a0688 %v1 = load <4 x double>, ptr %a1689 %cmp = fcmp fast uge <4 x double> %v0, %v1690 %ext = sext <4 x i1> %cmp to <4 x i64>691 store <4 x i64> %ext, ptr %res692 ret void693}694