brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.5 KiB · be60b75 Raw
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