704 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s3 4 5; <256 x float>6 7; Function Attrs: nounwind8define fastcc <256 x i1> @fcmp_false_vv_v256f32(<256 x float> %x, <256 x float> %y) {9; CHECK-LABEL: fcmp_false_vv_v256f32:10; CHECK: # %bb.0:11; CHECK-NEXT: xorm %vm1, %vm0, %vm012; CHECK-NEXT: b.l.t (, %s10)13 %z = fcmp false <256 x float> %x, %y14 ret <256 x i1> %z15}16 17; Function Attrs: nounwind18define fastcc <256 x i1> @fcmp_false_sv_v256f32(float %x, <256 x float> %y) {19; CHECK-LABEL: fcmp_false_sv_v256f32:20; CHECK: # %bb.0:21; CHECK-NEXT: xorm %vm1, %vm0, %vm022; CHECK-NEXT: b.l.t (, %s10)23 %xins = insertelement <256 x float> undef, float %x, i32 024 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer25 %z = fcmp false <256 x float> %vx, %y26 ret <256 x i1> %z27}28 29; Function Attrs: nounwind30define fastcc <256 x i1> @fcmp_false_vs_v256f32(<256 x float> %x, float %y) {31; CHECK-LABEL: fcmp_false_vs_v256f32:32; CHECK: # %bb.0:33; CHECK-NEXT: xorm %vm1, %vm0, %vm034; CHECK-NEXT: b.l.t (, %s10)35 %yins = insertelement <256 x float> undef, float %y, i32 036 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer37 %z = fcmp false <256 x float> %x, %vy38 ret <256 x i1> %z39}40 41; Function Attrs: nounwind42define fastcc <256 x i1> @fcmp_oeq_vv_v256f32(<256 x float> %x, <256 x float> %y) {43; CHECK-LABEL: fcmp_oeq_vv_v256f32:44; CHECK: # %bb.0:45; CHECK-NEXT: lea %s0, 25646; CHECK-NEXT: lvl %s047; CHECK-NEXT: vfcmp.s %v0, %v0, %v148; CHECK-NEXT: vfmk.s.eq %vm1, %v049; CHECK-NEXT: b.l.t (, %s10)50 %z = fcmp oeq <256 x float> %x, %y51 ret <256 x i1> %z52}53 54; Function Attrs: nounwind55define fastcc <256 x i1> @fcmp_oeq_sv_v256f32(float %x, <256 x float> %y) {56; CHECK-LABEL: fcmp_oeq_sv_v256f32:57; CHECK: # %bb.0:58; CHECK-NEXT: lea %s1, 25659; CHECK-NEXT: lvl %s160; CHECK-NEXT: vbrd %v1, %s061; CHECK-NEXT: vfcmp.s %v0, %v1, %v062; CHECK-NEXT: vfmk.s.eq %vm1, %v063; CHECK-NEXT: b.l.t (, %s10)64 %xins = insertelement <256 x float> undef, float %x, i32 065 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer66 %z = fcmp oeq <256 x float> %vx, %y67 ret <256 x i1> %z68}69 70; Function Attrs: nounwind71define fastcc <256 x i1> @fcmp_oeq_vs_v256f32(<256 x float> %x, float %y) {72; CHECK-LABEL: fcmp_oeq_vs_v256f32:73; CHECK: # %bb.0:74; CHECK-NEXT: lea %s1, 25675; CHECK-NEXT: lvl %s176; CHECK-NEXT: vbrd %v1, %s077; CHECK-NEXT: vfcmp.s %v0, %v0, %v178; CHECK-NEXT: vfmk.s.eq %vm1, %v079; CHECK-NEXT: b.l.t (, %s10)80 %yins = insertelement <256 x float> undef, float %y, i32 081 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer82 %z = fcmp oeq <256 x float> %x, %vy83 ret <256 x i1> %z84}85 86; Function Attrs: nounwind87define fastcc <256 x i1> @fcmp_ogt_vv_v256f32(<256 x float> %x, <256 x float> %y) {88; CHECK-LABEL: fcmp_ogt_vv_v256f32:89; CHECK: # %bb.0:90; CHECK-NEXT: lea %s0, 25691; CHECK-NEXT: lvl %s092; CHECK-NEXT: vfcmp.s %v0, %v0, %v193; CHECK-NEXT: vfmk.s.gt %vm1, %v094; CHECK-NEXT: b.l.t (, %s10)95 %z = fcmp ogt <256 x float> %x, %y96 ret <256 x i1> %z97}98 99; Function Attrs: nounwind100define fastcc <256 x i1> @fcmp_ogt_sv_v256f32(float %x, <256 x float> %y) {101; CHECK-LABEL: fcmp_ogt_sv_v256f32:102; CHECK: # %bb.0:103; CHECK-NEXT: lea %s1, 256104; CHECK-NEXT: lvl %s1105; CHECK-NEXT: vbrd %v1, %s0106; CHECK-NEXT: vfcmp.s %v0, %v1, %v0107; CHECK-NEXT: vfmk.s.gt %vm1, %v0108; CHECK-NEXT: b.l.t (, %s10)109 %xins = insertelement <256 x float> undef, float %x, i32 0110 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer111 %z = fcmp ogt <256 x float> %vx, %y112 ret <256 x i1> %z113}114 115; Function Attrs: nounwind116define fastcc <256 x i1> @fcmp_ogt_vs_v256f32(<256 x float> %x, float %y) {117; CHECK-LABEL: fcmp_ogt_vs_v256f32:118; CHECK: # %bb.0:119; CHECK-NEXT: lea %s1, 256120; CHECK-NEXT: lvl %s1121; CHECK-NEXT: vbrd %v1, %s0122; CHECK-NEXT: vfcmp.s %v0, %v0, %v1123; CHECK-NEXT: vfmk.s.gt %vm1, %v0124; CHECK-NEXT: b.l.t (, %s10)125 %yins = insertelement <256 x float> undef, float %y, i32 0126 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer127 %z = fcmp ogt <256 x float> %x, %vy128 ret <256 x i1> %z129}130 131; Function Attrs: nounwind132define fastcc <256 x i1> @fcmp_oge_vv_v256f32(<256 x float> %x, <256 x float> %y) {133; CHECK-LABEL: fcmp_oge_vv_v256f32:134; CHECK: # %bb.0:135; CHECK-NEXT: lea %s0, 256136; CHECK-NEXT: lvl %s0137; CHECK-NEXT: vfcmp.s %v0, %v0, %v1138; CHECK-NEXT: vfmk.s.ge %vm1, %v0139; CHECK-NEXT: b.l.t (, %s10)140 %z = fcmp oge <256 x float> %x, %y141 ret <256 x i1> %z142}143 144; Function Attrs: nounwind145define fastcc <256 x i1> @fcmp_oge_sv_v256f32(float %x, <256 x float> %y) {146; CHECK-LABEL: fcmp_oge_sv_v256f32:147; CHECK: # %bb.0:148; CHECK-NEXT: lea %s1, 256149; CHECK-NEXT: lvl %s1150; CHECK-NEXT: vbrd %v1, %s0151; CHECK-NEXT: vfcmp.s %v0, %v1, %v0152; CHECK-NEXT: vfmk.s.ge %vm1, %v0153; CHECK-NEXT: b.l.t (, %s10)154 %xins = insertelement <256 x float> undef, float %x, i32 0155 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer156 %z = fcmp oge <256 x float> %vx, %y157 ret <256 x i1> %z158}159 160; Function Attrs: nounwind161define fastcc <256 x i1> @fcmp_oge_vs_v256f32(<256 x float> %x, float %y) {162; CHECK-LABEL: fcmp_oge_vs_v256f32:163; CHECK: # %bb.0:164; CHECK-NEXT: lea %s1, 256165; CHECK-NEXT: lvl %s1166; CHECK-NEXT: vbrd %v1, %s0167; CHECK-NEXT: vfcmp.s %v0, %v0, %v1168; CHECK-NEXT: vfmk.s.ge %vm1, %v0169; CHECK-NEXT: b.l.t (, %s10)170 %yins = insertelement <256 x float> undef, float %y, i32 0171 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer172 %z = fcmp oge <256 x float> %x, %vy173 ret <256 x i1> %z174}175 176; Function Attrs: nounwind177define fastcc <256 x i1> @fcmp_olt_vv_v256f32(<256 x float> %x, <256 x float> %y) {178; CHECK-LABEL: fcmp_olt_vv_v256f32:179; CHECK: # %bb.0:180; CHECK-NEXT: lea %s0, 256181; CHECK-NEXT: lvl %s0182; CHECK-NEXT: vfcmp.s %v0, %v0, %v1183; CHECK-NEXT: vfmk.s.lt %vm1, %v0184; CHECK-NEXT: b.l.t (, %s10)185 %z = fcmp olt <256 x float> %x, %y186 ret <256 x i1> %z187}188 189; Function Attrs: nounwind190define fastcc <256 x i1> @fcmp_olt_sv_v256f32(float %x, <256 x float> %y) {191; CHECK-LABEL: fcmp_olt_sv_v256f32:192; CHECK: # %bb.0:193; CHECK-NEXT: lea %s1, 256194; CHECK-NEXT: lvl %s1195; CHECK-NEXT: vbrd %v1, %s0196; CHECK-NEXT: vfcmp.s %v0, %v1, %v0197; CHECK-NEXT: vfmk.s.lt %vm1, %v0198; CHECK-NEXT: b.l.t (, %s10)199 %xins = insertelement <256 x float> undef, float %x, i32 0200 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer201 %z = fcmp olt <256 x float> %vx, %y202 ret <256 x i1> %z203}204 205; Function Attrs: nounwind206define fastcc <256 x i1> @fcmp_olt_vs_v256f32(<256 x float> %x, float %y) {207; CHECK-LABEL: fcmp_olt_vs_v256f32:208; CHECK: # %bb.0:209; CHECK-NEXT: lea %s1, 256210; CHECK-NEXT: lvl %s1211; CHECK-NEXT: vbrd %v1, %s0212; CHECK-NEXT: vfcmp.s %v0, %v0, %v1213; CHECK-NEXT: vfmk.s.lt %vm1, %v0214; CHECK-NEXT: b.l.t (, %s10)215 %yins = insertelement <256 x float> undef, float %y, i32 0216 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer217 %z = fcmp olt <256 x float> %x, %vy218 ret <256 x i1> %z219}220 221; Function Attrs: nounwind222define fastcc <256 x i1> @fcmp_ole_vv_v256f32(<256 x float> %x, <256 x float> %y) {223; CHECK-LABEL: fcmp_ole_vv_v256f32:224; CHECK: # %bb.0:225; CHECK-NEXT: lea %s0, 256226; CHECK-NEXT: lvl %s0227; CHECK-NEXT: vfcmp.s %v0, %v0, %v1228; CHECK-NEXT: vfmk.s.le %vm1, %v0229; CHECK-NEXT: b.l.t (, %s10)230 %z = fcmp ole <256 x float> %x, %y231 ret <256 x i1> %z232}233 234; Function Attrs: nounwind235define fastcc <256 x i1> @fcmp_ole_sv_v256f32(float %x, <256 x float> %y) {236; CHECK-LABEL: fcmp_ole_sv_v256f32:237; CHECK: # %bb.0:238; CHECK-NEXT: lea %s1, 256239; CHECK-NEXT: lvl %s1240; CHECK-NEXT: vbrd %v1, %s0241; CHECK-NEXT: vfcmp.s %v0, %v1, %v0242; CHECK-NEXT: vfmk.s.le %vm1, %v0243; CHECK-NEXT: b.l.t (, %s10)244 %xins = insertelement <256 x float> undef, float %x, i32 0245 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer246 %z = fcmp ole <256 x float> %vx, %y247 ret <256 x i1> %z248}249 250; Function Attrs: nounwind251define fastcc <256 x i1> @fcmp_ole_vs_v256f32(<256 x float> %x, float %y) {252; CHECK-LABEL: fcmp_ole_vs_v256f32:253; CHECK: # %bb.0:254; CHECK-NEXT: lea %s1, 256255; CHECK-NEXT: lvl %s1256; CHECK-NEXT: vbrd %v1, %s0257; CHECK-NEXT: vfcmp.s %v0, %v0, %v1258; CHECK-NEXT: vfmk.s.le %vm1, %v0259; CHECK-NEXT: b.l.t (, %s10)260 %yins = insertelement <256 x float> undef, float %y, i32 0261 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer262 %z = fcmp ole <256 x float> %x, %vy263 ret <256 x i1> %z264}265 266; Function Attrs: nounwind267define fastcc <256 x i1> @fcmp_one_vv_v256f32(<256 x float> %x, <256 x float> %y) {268; CHECK-LABEL: fcmp_one_vv_v256f32:269; CHECK: # %bb.0:270; CHECK-NEXT: lea %s0, 256271; CHECK-NEXT: lvl %s0272; CHECK-NEXT: vfcmp.s %v0, %v0, %v1273; CHECK-NEXT: vfmk.s.ne %vm1, %v0274; CHECK-NEXT: b.l.t (, %s10)275 %z = fcmp one <256 x float> %x, %y276 ret <256 x i1> %z277}278 279; Function Attrs: nounwind280define fastcc <256 x i1> @fcmp_one_sv_v256f32(float %x, <256 x float> %y) {281; CHECK-LABEL: fcmp_one_sv_v256f32:282; CHECK: # %bb.0:283; CHECK-NEXT: lea %s1, 256284; CHECK-NEXT: lvl %s1285; CHECK-NEXT: vbrd %v1, %s0286; CHECK-NEXT: vfcmp.s %v0, %v1, %v0287; CHECK-NEXT: vfmk.s.ne %vm1, %v0288; CHECK-NEXT: b.l.t (, %s10)289 %xins = insertelement <256 x float> undef, float %x, i32 0290 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer291 %z = fcmp one <256 x float> %vx, %y292 ret <256 x i1> %z293}294 295; Function Attrs: nounwind296define fastcc <256 x i1> @fcmp_one_vs_v256f32(<256 x float> %x, float %y) {297; CHECK-LABEL: fcmp_one_vs_v256f32:298; CHECK: # %bb.0:299; CHECK-NEXT: lea %s1, 256300; CHECK-NEXT: lvl %s1301; CHECK-NEXT: vbrd %v1, %s0302; CHECK-NEXT: vfcmp.s %v0, %v0, %v1303; CHECK-NEXT: vfmk.s.ne %vm1, %v0304; CHECK-NEXT: b.l.t (, %s10)305 %yins = insertelement <256 x float> undef, float %y, i32 0306 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer307 %z = fcmp one <256 x float> %x, %vy308 ret <256 x i1> %z309}310 311; Function Attrs: nounwind312define fastcc <256 x i1> @fcmp_ord_vv_v256f32(<256 x float> %x, <256 x float> %y) {313; CHECK-LABEL: fcmp_ord_vv_v256f32:314; CHECK: # %bb.0:315; CHECK-NEXT: lea %s0, 256316; CHECK-NEXT: lvl %s0317; CHECK-NEXT: vfcmp.s %v0, %v0, %v1318; CHECK-NEXT: vfmk.s.num %vm1, %v0319; CHECK-NEXT: b.l.t (, %s10)320 %z = fcmp ord <256 x float> %x, %y321 ret <256 x i1> %z322}323 324; Function Attrs: nounwind325define fastcc <256 x i1> @fcmp_ord_sv_v256f32(float %x, <256 x float> %y) {326; CHECK-LABEL: fcmp_ord_sv_v256f32:327; CHECK: # %bb.0:328; CHECK-NEXT: lea %s1, 256329; CHECK-NEXT: lvl %s1330; CHECK-NEXT: vbrd %v1, %s0331; CHECK-NEXT: vfcmp.s %v0, %v1, %v0332; CHECK-NEXT: vfmk.s.num %vm1, %v0333; CHECK-NEXT: b.l.t (, %s10)334 %xins = insertelement <256 x float> undef, float %x, i32 0335 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer336 %z = fcmp ord <256 x float> %vx, %y337 ret <256 x i1> %z338}339 340; Function Attrs: nounwind341define fastcc <256 x i1> @fcmp_ord_vs_v256f32(<256 x float> %x, float %y) {342; CHECK-LABEL: fcmp_ord_vs_v256f32:343; CHECK: # %bb.0:344; CHECK-NEXT: lea %s1, 256345; CHECK-NEXT: lvl %s1346; CHECK-NEXT: vbrd %v1, %s0347; CHECK-NEXT: vfcmp.s %v0, %v0, %v1348; CHECK-NEXT: vfmk.s.num %vm1, %v0349; CHECK-NEXT: b.l.t (, %s10)350 %yins = insertelement <256 x float> undef, float %y, i32 0351 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer352 %z = fcmp ord <256 x float> %x, %vy353 ret <256 x i1> %z354}355 356; Function Attrs: nounwind357define fastcc <256 x i1> @fcmp_uno_vv_v256f32(<256 x float> %x, <256 x float> %y) {358; CHECK-LABEL: fcmp_uno_vv_v256f32:359; CHECK: # %bb.0:360; CHECK-NEXT: lea %s0, 256361; CHECK-NEXT: lvl %s0362; CHECK-NEXT: vfcmp.s %v0, %v0, %v1363; CHECK-NEXT: vfmk.s.nan %vm1, %v0364; CHECK-NEXT: b.l.t (, %s10)365 %z = fcmp uno <256 x float> %x, %y366 ret <256 x i1> %z367}368 369; Function Attrs: nounwind370define fastcc <256 x i1> @fcmp_uno_sv_v256f32(float %x, <256 x float> %y) {371; CHECK-LABEL: fcmp_uno_sv_v256f32:372; CHECK: # %bb.0:373; CHECK-NEXT: lea %s1, 256374; CHECK-NEXT: lvl %s1375; CHECK-NEXT: vbrd %v1, %s0376; CHECK-NEXT: vfcmp.s %v0, %v1, %v0377; CHECK-NEXT: vfmk.s.nan %vm1, %v0378; CHECK-NEXT: b.l.t (, %s10)379 %xins = insertelement <256 x float> undef, float %x, i32 0380 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer381 %z = fcmp uno <256 x float> %vx, %y382 ret <256 x i1> %z383}384 385; Function Attrs: nounwind386define fastcc <256 x i1> @fcmp_uno_vs_v256f32(<256 x float> %x, float %y) {387; CHECK-LABEL: fcmp_uno_vs_v256f32:388; CHECK: # %bb.0:389; CHECK-NEXT: lea %s1, 256390; CHECK-NEXT: lvl %s1391; CHECK-NEXT: vbrd %v1, %s0392; CHECK-NEXT: vfcmp.s %v0, %v0, %v1393; CHECK-NEXT: vfmk.s.nan %vm1, %v0394; CHECK-NEXT: b.l.t (, %s10)395 %yins = insertelement <256 x float> undef, float %y, i32 0396 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer397 %z = fcmp uno <256 x float> %x, %vy398 ret <256 x i1> %z399}400 401; Function Attrs: nounwind402define fastcc <256 x i1> @fcmp_ueq_vv_v256f32(<256 x float> %x, <256 x float> %y) {403; CHECK-LABEL: fcmp_ueq_vv_v256f32:404; CHECK: # %bb.0:405; CHECK-NEXT: lea %s0, 256406; CHECK-NEXT: lvl %s0407; CHECK-NEXT: vfcmp.s %v0, %v0, %v1408; CHECK-NEXT: vfmk.s.eqnan %vm1, %v0409; CHECK-NEXT: b.l.t (, %s10)410 %z = fcmp ueq <256 x float> %x, %y411 ret <256 x i1> %z412}413 414; Function Attrs: nounwind415define fastcc <256 x i1> @fcmp_ueq_sv_v256f32(float %x, <256 x float> %y) {416; CHECK-LABEL: fcmp_ueq_sv_v256f32:417; CHECK: # %bb.0:418; CHECK-NEXT: lea %s1, 256419; CHECK-NEXT: lvl %s1420; CHECK-NEXT: vbrd %v1, %s0421; CHECK-NEXT: vfcmp.s %v0, %v1, %v0422; CHECK-NEXT: vfmk.s.eqnan %vm1, %v0423; CHECK-NEXT: b.l.t (, %s10)424 %xins = insertelement <256 x float> undef, float %x, i32 0425 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer426 %z = fcmp ueq <256 x float> %vx, %y427 ret <256 x i1> %z428}429 430; Function Attrs: nounwind431define fastcc <256 x i1> @fcmp_ueq_vs_v256f32(<256 x float> %x, float %y) {432; CHECK-LABEL: fcmp_ueq_vs_v256f32:433; CHECK: # %bb.0:434; CHECK-NEXT: lea %s1, 256435; CHECK-NEXT: lvl %s1436; CHECK-NEXT: vbrd %v1, %s0437; CHECK-NEXT: vfcmp.s %v0, %v0, %v1438; CHECK-NEXT: vfmk.s.eqnan %vm1, %v0439; CHECK-NEXT: b.l.t (, %s10)440 %yins = insertelement <256 x float> undef, float %y, i32 0441 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer442 %z = fcmp ueq <256 x float> %x, %vy443 ret <256 x i1> %z444}445 446; Function Attrs: nounwind447define fastcc <256 x i1> @fcmp_ugt_vv_v256f32(<256 x float> %x, <256 x float> %y) {448; CHECK-LABEL: fcmp_ugt_vv_v256f32:449; CHECK: # %bb.0:450; CHECK-NEXT: lea %s0, 256451; CHECK-NEXT: lvl %s0452; CHECK-NEXT: vfcmp.s %v0, %v0, %v1453; CHECK-NEXT: vfmk.s.gtnan %vm1, %v0454; CHECK-NEXT: b.l.t (, %s10)455 %z = fcmp ugt <256 x float> %x, %y456 ret <256 x i1> %z457}458 459; Function Attrs: nounwind460define fastcc <256 x i1> @fcmp_ugt_sv_v256f32(float %x, <256 x float> %y) {461; CHECK-LABEL: fcmp_ugt_sv_v256f32:462; CHECK: # %bb.0:463; CHECK-NEXT: lea %s1, 256464; CHECK-NEXT: lvl %s1465; CHECK-NEXT: vbrd %v1, %s0466; CHECK-NEXT: vfcmp.s %v0, %v1, %v0467; CHECK-NEXT: vfmk.s.gtnan %vm1, %v0468; CHECK-NEXT: b.l.t (, %s10)469 %xins = insertelement <256 x float> undef, float %x, i32 0470 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer471 %z = fcmp ugt <256 x float> %vx, %y472 ret <256 x i1> %z473}474 475; Function Attrs: nounwind476define fastcc <256 x i1> @fcmp_ugt_vs_v256f32(<256 x float> %x, float %y) {477; CHECK-LABEL: fcmp_ugt_vs_v256f32:478; CHECK: # %bb.0:479; CHECK-NEXT: lea %s1, 256480; CHECK-NEXT: lvl %s1481; CHECK-NEXT: vbrd %v1, %s0482; CHECK-NEXT: vfcmp.s %v0, %v0, %v1483; CHECK-NEXT: vfmk.s.gtnan %vm1, %v0484; CHECK-NEXT: b.l.t (, %s10)485 %yins = insertelement <256 x float> undef, float %y, i32 0486 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer487 %z = fcmp ugt <256 x float> %x, %vy488 ret <256 x i1> %z489}490 491; Function Attrs: nounwind492define fastcc <256 x i1> @fcmp_uge_vv_v256f32(<256 x float> %x, <256 x float> %y) {493; CHECK-LABEL: fcmp_uge_vv_v256f32:494; CHECK: # %bb.0:495; CHECK-NEXT: lea %s0, 256496; CHECK-NEXT: lvl %s0497; CHECK-NEXT: vfcmp.s %v0, %v0, %v1498; CHECK-NEXT: vfmk.s.genan %vm1, %v0499; CHECK-NEXT: b.l.t (, %s10)500 %z = fcmp uge <256 x float> %x, %y501 ret <256 x i1> %z502}503 504; Function Attrs: nounwind505define fastcc <256 x i1> @fcmp_uge_sv_v256f32(float %x, <256 x float> %y) {506; CHECK-LABEL: fcmp_uge_sv_v256f32:507; CHECK: # %bb.0:508; CHECK-NEXT: lea %s1, 256509; CHECK-NEXT: lvl %s1510; CHECK-NEXT: vbrd %v1, %s0511; CHECK-NEXT: vfcmp.s %v0, %v1, %v0512; CHECK-NEXT: vfmk.s.genan %vm1, %v0513; CHECK-NEXT: b.l.t (, %s10)514 %xins = insertelement <256 x float> undef, float %x, i32 0515 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer516 %z = fcmp uge <256 x float> %vx, %y517 ret <256 x i1> %z518}519 520; Function Attrs: nounwind521define fastcc <256 x i1> @fcmp_uge_vs_v256f32(<256 x float> %x, float %y) {522; CHECK-LABEL: fcmp_uge_vs_v256f32:523; CHECK: # %bb.0:524; CHECK-NEXT: lea %s1, 256525; CHECK-NEXT: lvl %s1526; CHECK-NEXT: vbrd %v1, %s0527; CHECK-NEXT: vfcmp.s %v0, %v0, %v1528; CHECK-NEXT: vfmk.s.genan %vm1, %v0529; CHECK-NEXT: b.l.t (, %s10)530 %yins = insertelement <256 x float> undef, float %y, i32 0531 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer532 %z = fcmp uge <256 x float> %x, %vy533 ret <256 x i1> %z534}535 536; Function Attrs: nounwind537define fastcc <256 x i1> @fcmp_ult_vv_v256f32(<256 x float> %x, <256 x float> %y) {538; CHECK-LABEL: fcmp_ult_vv_v256f32:539; CHECK: # %bb.0:540; CHECK-NEXT: lea %s0, 256541; CHECK-NEXT: lvl %s0542; CHECK-NEXT: vfcmp.s %v0, %v0, %v1543; CHECK-NEXT: vfmk.s.ltnan %vm1, %v0544; CHECK-NEXT: b.l.t (, %s10)545 %z = fcmp ult <256 x float> %x, %y546 ret <256 x i1> %z547}548 549; Function Attrs: nounwind550define fastcc <256 x i1> @fcmp_ult_sv_v256f32(float %x, <256 x float> %y) {551; CHECK-LABEL: fcmp_ult_sv_v256f32:552; CHECK: # %bb.0:553; CHECK-NEXT: lea %s1, 256554; CHECK-NEXT: lvl %s1555; CHECK-NEXT: vbrd %v1, %s0556; CHECK-NEXT: vfcmp.s %v0, %v1, %v0557; CHECK-NEXT: vfmk.s.ltnan %vm1, %v0558; CHECK-NEXT: b.l.t (, %s10)559 %xins = insertelement <256 x float> undef, float %x, i32 0560 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer561 %z = fcmp ult <256 x float> %vx, %y562 ret <256 x i1> %z563}564 565; Function Attrs: nounwind566define fastcc <256 x i1> @fcmp_ult_vs_v256f32(<256 x float> %x, float %y) {567; CHECK-LABEL: fcmp_ult_vs_v256f32:568; CHECK: # %bb.0:569; CHECK-NEXT: lea %s1, 256570; CHECK-NEXT: lvl %s1571; CHECK-NEXT: vbrd %v1, %s0572; CHECK-NEXT: vfcmp.s %v0, %v0, %v1573; CHECK-NEXT: vfmk.s.ltnan %vm1, %v0574; CHECK-NEXT: b.l.t (, %s10)575 %yins = insertelement <256 x float> undef, float %y, i32 0576 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer577 %z = fcmp ult <256 x float> %x, %vy578 ret <256 x i1> %z579}580 581; Function Attrs: nounwind582define fastcc <256 x i1> @fcmp_ule_vv_v256f32(<256 x float> %x, <256 x float> %y) {583; CHECK-LABEL: fcmp_ule_vv_v256f32:584; CHECK: # %bb.0:585; CHECK-NEXT: lea %s0, 256586; CHECK-NEXT: lvl %s0587; CHECK-NEXT: vfcmp.s %v0, %v0, %v1588; CHECK-NEXT: vfmk.s.lenan %vm1, %v0589; CHECK-NEXT: b.l.t (, %s10)590 %z = fcmp ule <256 x float> %x, %y591 ret <256 x i1> %z592}593 594; Function Attrs: nounwind595define fastcc <256 x i1> @fcmp_ule_sv_v256f32(float %x, <256 x float> %y) {596; CHECK-LABEL: fcmp_ule_sv_v256f32:597; CHECK: # %bb.0:598; CHECK-NEXT: lea %s1, 256599; CHECK-NEXT: lvl %s1600; CHECK-NEXT: vbrd %v1, %s0601; CHECK-NEXT: vfcmp.s %v0, %v1, %v0602; CHECK-NEXT: vfmk.s.lenan %vm1, %v0603; CHECK-NEXT: b.l.t (, %s10)604 %xins = insertelement <256 x float> undef, float %x, i32 0605 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer606 %z = fcmp ule <256 x float> %vx, %y607 ret <256 x i1> %z608}609 610; Function Attrs: nounwind611define fastcc <256 x i1> @fcmp_ule_vs_v256f32(<256 x float> %x, float %y) {612; CHECK-LABEL: fcmp_ule_vs_v256f32:613; CHECK: # %bb.0:614; CHECK-NEXT: lea %s1, 256615; CHECK-NEXT: lvl %s1616; CHECK-NEXT: vbrd %v1, %s0617; CHECK-NEXT: vfcmp.s %v0, %v0, %v1618; CHECK-NEXT: vfmk.s.lenan %vm1, %v0619; CHECK-NEXT: b.l.t (, %s10)620 %yins = insertelement <256 x float> undef, float %y, i32 0621 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer622 %z = fcmp ule <256 x float> %x, %vy623 ret <256 x i1> %z624}625 626; Function Attrs: nounwind627define fastcc <256 x i1> @fcmp_une_vv_v256f32(<256 x float> %x, <256 x float> %y) {628; CHECK-LABEL: fcmp_une_vv_v256f32:629; CHECK: # %bb.0:630; CHECK-NEXT: lea %s0, 256631; CHECK-NEXT: lvl %s0632; CHECK-NEXT: vfcmp.s %v0, %v0, %v1633; CHECK-NEXT: vfmk.s.nenan %vm1, %v0634; CHECK-NEXT: b.l.t (, %s10)635 %z = fcmp une <256 x float> %x, %y636 ret <256 x i1> %z637}638 639; Function Attrs: nounwind640define fastcc <256 x i1> @fcmp_une_sv_v256f32(float %x, <256 x float> %y) {641; CHECK-LABEL: fcmp_une_sv_v256f32:642; CHECK: # %bb.0:643; CHECK-NEXT: lea %s1, 256644; CHECK-NEXT: lvl %s1645; CHECK-NEXT: vbrd %v1, %s0646; CHECK-NEXT: vfcmp.s %v0, %v1, %v0647; CHECK-NEXT: vfmk.s.nenan %vm1, %v0648; CHECK-NEXT: b.l.t (, %s10)649 %xins = insertelement <256 x float> undef, float %x, i32 0650 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer651 %z = fcmp une <256 x float> %vx, %y652 ret <256 x i1> %z653}654 655; Function Attrs: nounwind656define fastcc <256 x i1> @fcmp_une_vs_v256f32(<256 x float> %x, float %y) {657; CHECK-LABEL: fcmp_une_vs_v256f32:658; CHECK: # %bb.0:659; CHECK-NEXT: lea %s1, 256660; CHECK-NEXT: lvl %s1661; CHECK-NEXT: vbrd %v1, %s0662; CHECK-NEXT: vfcmp.s %v0, %v0, %v1663; CHECK-NEXT: vfmk.s.nenan %vm1, %v0664; CHECK-NEXT: b.l.t (, %s10)665 %yins = insertelement <256 x float> undef, float %y, i32 0666 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer667 %z = fcmp une <256 x float> %x, %vy668 ret <256 x i1> %z669}670 671; Function Attrs: nounwind672define fastcc <256 x i1> @fcmp_true_vv_v256f32(<256 x float> %x, <256 x float> %y) {673; CHECK-LABEL: fcmp_true_vv_v256f32:674; CHECK: # %bb.0:675; CHECK-NEXT: andm %vm1, %vm0, %vm0676; CHECK-NEXT: b.l.t (, %s10)677 %z = fcmp true <256 x float> %x, %y678 ret <256 x i1> %z679}680 681; Function Attrs: nounwind682define fastcc <256 x i1> @fcmp_true_sv_v256f32(float %x, <256 x float> %y) {683; CHECK-LABEL: fcmp_true_sv_v256f32:684; CHECK: # %bb.0:685; CHECK-NEXT: andm %vm1, %vm0, %vm0686; CHECK-NEXT: b.l.t (, %s10)687 %xins = insertelement <256 x float> undef, float %x, i32 0688 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer689 %z = fcmp true <256 x float> %vx, %y690 ret <256 x i1> %z691}692 693; Function Attrs: nounwind694define fastcc <256 x i1> @fcmp_true_vs_v256f32(<256 x float> %x, float %y) {695; CHECK-LABEL: fcmp_true_vs_v256f32:696; CHECK: # %bb.0:697; CHECK-NEXT: andm %vm1, %vm0, %vm0698; CHECK-NEXT: b.l.t (, %s10)699 %yins = insertelement <256 x float> undef, float %y, i32 0700 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer701 %z = fcmp true <256 x float> %x, %vy702 ret <256 x i1> %z703}704