935 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 i32>6 7; Function Attrs: nounwind8define fastcc <256 x i1> @icmp_sgt_vv_v256i32(<256 x i32> %x, <256 x i32> %y) {9; CHECK-LABEL: icmp_sgt_vv_v256i32:10; CHECK: # %bb.0:11; CHECK-NEXT: lea %s0, 25612; CHECK-NEXT: lvl %s013; CHECK-NEXT: vcmps.w.zx %v0, %v0, %v114; CHECK-NEXT: vfmk.w.gt %vm1, %v015; CHECK-NEXT: b.l.t (, %s10)16 %z = icmp sgt <256 x i32> %x, %y17 ret <256 x i1> %z18}19 20; Function Attrs: nounwind21define fastcc <256 x i1> @icmp_sgt_sv_v256i32(i32 %x, <256 x i32> %y) {22; CHECK-LABEL: icmp_sgt_sv_v256i32:23; CHECK: # %bb.0:24; CHECK-NEXT: and %s0, %s0, (32)025; CHECK-NEXT: lea %s1, 25626; CHECK-NEXT: lvl %s127; CHECK-NEXT: vbrd %v1, %s028; CHECK-NEXT: vcmps.w.zx %v0, %v1, %v029; CHECK-NEXT: vfmk.w.gt %vm1, %v030; CHECK-NEXT: b.l.t (, %s10)31 %xins = insertelement <256 x i32> undef, i32 %x, i32 032 %vx = shufflevector <256 x i32> %xins, <256 x i32> undef, <256 x i32> zeroinitializer33 %z = icmp sgt <256 x i32> %vx, %y34 ret <256 x i1> %z35}36 37; Function Attrs: nounwind38define fastcc <256 x i1> @icmp_sgt_vs_v256i32(<256 x i32> %x, i32 %y) {39; CHECK-LABEL: icmp_sgt_vs_v256i32:40; CHECK: # %bb.0:41; CHECK-NEXT: and %s0, %s0, (32)042; CHECK-NEXT: lea %s1, 25643; CHECK-NEXT: lvl %s144; CHECK-NEXT: vbrd %v1, %s045; CHECK-NEXT: vcmps.w.zx %v0, %v0, %v146; CHECK-NEXT: vfmk.w.gt %vm1, %v047; CHECK-NEXT: b.l.t (, %s10)48 %yins = insertelement <256 x i32> undef, i32 %y, i32 049 %vy = shufflevector <256 x i32> %yins, <256 x i32> undef, <256 x i32> zeroinitializer50 %z = icmp sgt <256 x i32> %x, %vy51 ret <256 x i1> %z52}53 54; Function Attrs: nounwind55define fastcc <256 x i1> @icmp_sge_vv_v256i32(<256 x i32> %x, <256 x i32> %y) {56; CHECK-LABEL: icmp_sge_vv_v256i32:57; CHECK: # %bb.0:58; CHECK-NEXT: lea %s0, 25659; CHECK-NEXT: lvl %s060; CHECK-NEXT: vcmps.w.zx %v0, %v0, %v161; CHECK-NEXT: vfmk.w.ge %vm1, %v062; CHECK-NEXT: b.l.t (, %s10)63 %z = icmp sge <256 x i32> %x, %y64 ret <256 x i1> %z65}66 67; Function Attrs: nounwind68define fastcc <256 x i1> @icmp_sge_sv_v256i32(i32 %x, <256 x i32> %y) {69; CHECK-LABEL: icmp_sge_sv_v256i32:70; CHECK: # %bb.0:71; CHECK-NEXT: and %s0, %s0, (32)072; CHECK-NEXT: lea %s1, 25673; CHECK-NEXT: lvl %s174; CHECK-NEXT: vbrd %v1, %s075; CHECK-NEXT: vcmps.w.zx %v0, %v1, %v076; CHECK-NEXT: vfmk.w.ge %vm1, %v077; CHECK-NEXT: b.l.t (, %s10)78 %xins = insertelement <256 x i32> undef, i32 %x, i32 079 %vx = shufflevector <256 x i32> %xins, <256 x i32> undef, <256 x i32> zeroinitializer80 %z = icmp sge <256 x i32> %vx, %y81 ret <256 x i1> %z82}83 84; Function Attrs: nounwind85define fastcc <256 x i1> @icmp_sge_vs_v256i32(<256 x i32> %x, i32 %y) {86; CHECK-LABEL: icmp_sge_vs_v256i32:87; CHECK: # %bb.0:88; CHECK-NEXT: and %s0, %s0, (32)089; CHECK-NEXT: lea %s1, 25690; CHECK-NEXT: lvl %s191; CHECK-NEXT: vbrd %v1, %s092; CHECK-NEXT: vcmps.w.zx %v0, %v0, %v193; CHECK-NEXT: vfmk.w.ge %vm1, %v094; CHECK-NEXT: b.l.t (, %s10)95 %yins = insertelement <256 x i32> undef, i32 %y, i32 096 %vy = shufflevector <256 x i32> %yins, <256 x i32> undef, <256 x i32> zeroinitializer97 %z = icmp sge <256 x i32> %x, %vy98 ret <256 x i1> %z99}100 101; Function Attrs: nounwind102define fastcc <256 x i1> @icmp_eq_vv_v256i32(<256 x i32> %x, <256 x i32> %y) {103; CHECK-LABEL: icmp_eq_vv_v256i32:104; CHECK: # %bb.0:105; CHECK-NEXT: lea %s0, 256106; CHECK-NEXT: lvl %s0107; CHECK-NEXT: vcmpu.w %v0, %v0, %v1108; CHECK-NEXT: vfmk.w.eq %vm1, %v0109; CHECK-NEXT: b.l.t (, %s10)110 %z = icmp eq <256 x i32> %x, %y111 ret <256 x i1> %z112}113 114; Function Attrs: nounwind115define fastcc <256 x i1> @icmp_eq_sv_v256i32(i32 %x, <256 x i32> %y) {116; CHECK-LABEL: icmp_eq_sv_v256i32:117; CHECK: # %bb.0:118; CHECK-NEXT: and %s0, %s0, (32)0119; CHECK-NEXT: lea %s1, 256120; CHECK-NEXT: lvl %s1121; CHECK-NEXT: vbrd %v1, %s0122; CHECK-NEXT: vcmpu.w %v0, %v1, %v0123; CHECK-NEXT: vfmk.w.eq %vm1, %v0124; CHECK-NEXT: b.l.t (, %s10)125 %xins = insertelement <256 x i32> undef, i32 %x, i32 0126 %vx = shufflevector <256 x i32> %xins, <256 x i32> undef, <256 x i32> zeroinitializer127 %z = icmp eq <256 x i32> %vx, %y128 ret <256 x i1> %z129}130 131; Function Attrs: nounwind132define fastcc <256 x i1> @icmp_eq_vs_v256i32(<256 x i32> %x, i32 %y) {133; CHECK-LABEL: icmp_eq_vs_v256i32:134; CHECK: # %bb.0:135; CHECK-NEXT: and %s0, %s0, (32)0136; CHECK-NEXT: lea %s1, 256137; CHECK-NEXT: lvl %s1138; CHECK-NEXT: vbrd %v1, %s0139; CHECK-NEXT: vcmpu.w %v0, %v0, %v1140; CHECK-NEXT: vfmk.w.eq %vm1, %v0141; CHECK-NEXT: b.l.t (, %s10)142 %yins = insertelement <256 x i32> undef, i32 %y, i32 0143 %vy = shufflevector <256 x i32> %yins, <256 x i32> undef, <256 x i32> zeroinitializer144 %z = icmp eq <256 x i32> %x, %vy145 ret <256 x i1> %z146}147 148; Function Attrs: nounwind149define fastcc <256 x i1> @icmp_ne_vv_v256i32(<256 x i32> %x, <256 x i32> %y) {150; CHECK-LABEL: icmp_ne_vv_v256i32:151; CHECK: # %bb.0:152; CHECK-NEXT: lea %s0, 256153; CHECK-NEXT: lvl %s0154; CHECK-NEXT: vcmpu.w %v0, %v0, %v1155; CHECK-NEXT: vfmk.w.ne %vm1, %v0156; CHECK-NEXT: b.l.t (, %s10)157 %z = icmp ne <256 x i32> %x, %y158 ret <256 x i1> %z159}160 161; Function Attrs: nounwind162define fastcc <256 x i1> @icmp_ne_sv_v256i32(i32 %x, <256 x i32> %y) {163; CHECK-LABEL: icmp_ne_sv_v256i32:164; CHECK: # %bb.0:165; CHECK-NEXT: and %s0, %s0, (32)0166; CHECK-NEXT: lea %s1, 256167; CHECK-NEXT: lvl %s1168; CHECK-NEXT: vbrd %v1, %s0169; CHECK-NEXT: vcmpu.w %v0, %v1, %v0170; CHECK-NEXT: vfmk.w.ne %vm1, %v0171; CHECK-NEXT: b.l.t (, %s10)172 %xins = insertelement <256 x i32> undef, i32 %x, i32 0173 %vx = shufflevector <256 x i32> %xins, <256 x i32> undef, <256 x i32> zeroinitializer174 %z = icmp ne <256 x i32> %vx, %y175 ret <256 x i1> %z176}177 178; Function Attrs: nounwind179define fastcc <256 x i1> @icmp_ne_vs_v256i32(<256 x i32> %x, i32 %y) {180; CHECK-LABEL: icmp_ne_vs_v256i32:181; CHECK: # %bb.0:182; CHECK-NEXT: and %s0, %s0, (32)0183; CHECK-NEXT: lea %s1, 256184; CHECK-NEXT: lvl %s1185; CHECK-NEXT: vbrd %v1, %s0186; CHECK-NEXT: vcmpu.w %v0, %v0, %v1187; CHECK-NEXT: vfmk.w.ne %vm1, %v0188; CHECK-NEXT: b.l.t (, %s10)189 %yins = insertelement <256 x i32> undef, i32 %y, i32 0190 %vy = shufflevector <256 x i32> %yins, <256 x i32> undef, <256 x i32> zeroinitializer191 %z = icmp ne <256 x i32> %x, %vy192 ret <256 x i1> %z193}194 195; Function Attrs: nounwind196define fastcc <256 x i1> @icmp_sle_vv_v256i32(<256 x i32> %x, <256 x i32> %y) {197; CHECK-LABEL: icmp_sle_vv_v256i32:198; CHECK: # %bb.0:199; CHECK-NEXT: lea %s0, 256200; CHECK-NEXT: lvl %s0201; CHECK-NEXT: vcmps.w.zx %v0, %v0, %v1202; CHECK-NEXT: vfmk.w.le %vm1, %v0203; CHECK-NEXT: b.l.t (, %s10)204 %z = icmp sle <256 x i32> %x, %y205 ret <256 x i1> %z206}207 208; Function Attrs: nounwind209define fastcc <256 x i1> @icmp_sle_sv_v256i32(i32 %x, <256 x i32> %y) {210; CHECK-LABEL: icmp_sle_sv_v256i32:211; CHECK: # %bb.0:212; CHECK-NEXT: and %s0, %s0, (32)0213; CHECK-NEXT: lea %s1, 256214; CHECK-NEXT: lvl %s1215; CHECK-NEXT: vbrd %v1, %s0216; CHECK-NEXT: vcmps.w.zx %v0, %v1, %v0217; CHECK-NEXT: vfmk.w.le %vm1, %v0218; CHECK-NEXT: b.l.t (, %s10)219 %xins = insertelement <256 x i32> undef, i32 %x, i32 0220 %vx = shufflevector <256 x i32> %xins, <256 x i32> undef, <256 x i32> zeroinitializer221 %z = icmp sle <256 x i32> %vx, %y222 ret <256 x i1> %z223}224 225; Function Attrs: nounwind226define fastcc <256 x i1> @icmp_sle_vs_v256i32(<256 x i32> %x, i32 %y) {227; CHECK-LABEL: icmp_sle_vs_v256i32:228; CHECK: # %bb.0:229; CHECK-NEXT: and %s0, %s0, (32)0230; CHECK-NEXT: lea %s1, 256231; CHECK-NEXT: lvl %s1232; CHECK-NEXT: vbrd %v1, %s0233; CHECK-NEXT: vcmps.w.zx %v0, %v0, %v1234; CHECK-NEXT: vfmk.w.le %vm1, %v0235; CHECK-NEXT: b.l.t (, %s10)236 %yins = insertelement <256 x i32> undef, i32 %y, i32 0237 %vy = shufflevector <256 x i32> %yins, <256 x i32> undef, <256 x i32> zeroinitializer238 %z = icmp sle <256 x i32> %x, %vy239 ret <256 x i1> %z240}241 242; Function Attrs: nounwind243define fastcc <256 x i1> @icmp_slt_vv_v256i32(<256 x i32> %x, <256 x i32> %y) {244; CHECK-LABEL: icmp_slt_vv_v256i32:245; CHECK: # %bb.0:246; CHECK-NEXT: lea %s0, 256247; CHECK-NEXT: lvl %s0248; CHECK-NEXT: vcmps.w.zx %v0, %v0, %v1249; CHECK-NEXT: vfmk.w.lt %vm1, %v0250; CHECK-NEXT: b.l.t (, %s10)251 %z = icmp slt <256 x i32> %x, %y252 ret <256 x i1> %z253}254 255; Function Attrs: nounwind256define fastcc <256 x i1> @icmp_slt_sv_v256i32(i32 %x, <256 x i32> %y) {257; CHECK-LABEL: icmp_slt_sv_v256i32:258; CHECK: # %bb.0:259; CHECK-NEXT: and %s0, %s0, (32)0260; CHECK-NEXT: lea %s1, 256261; CHECK-NEXT: lvl %s1262; CHECK-NEXT: vbrd %v1, %s0263; CHECK-NEXT: vcmps.w.zx %v0, %v1, %v0264; CHECK-NEXT: vfmk.w.lt %vm1, %v0265; CHECK-NEXT: b.l.t (, %s10)266 %xins = insertelement <256 x i32> undef, i32 %x, i32 0267 %vx = shufflevector <256 x i32> %xins, <256 x i32> undef, <256 x i32> zeroinitializer268 %z = icmp slt <256 x i32> %vx, %y269 ret <256 x i1> %z270}271 272; Function Attrs: nounwind273define fastcc <256 x i1> @icmp_slt_vs_v256i32(<256 x i32> %x, i32 %y) {274; CHECK-LABEL: icmp_slt_vs_v256i32:275; CHECK: # %bb.0:276; CHECK-NEXT: and %s0, %s0, (32)0277; CHECK-NEXT: lea %s1, 256278; CHECK-NEXT: lvl %s1279; CHECK-NEXT: vbrd %v1, %s0280; CHECK-NEXT: vcmps.w.zx %v0, %v0, %v1281; CHECK-NEXT: vfmk.w.lt %vm1, %v0282; CHECK-NEXT: b.l.t (, %s10)283 %yins = insertelement <256 x i32> undef, i32 %y, i32 0284 %vy = shufflevector <256 x i32> %yins, <256 x i32> undef, <256 x i32> zeroinitializer285 %z = icmp slt <256 x i32> %x, %vy286 ret <256 x i1> %z287}288 289 290 291 292; Function Attrs: nounwind293define fastcc <256 x i1> @icmp_ugt_vv_v256i32(<256 x i32> %x, <256 x i32> %y) {294; CHECK-LABEL: icmp_ugt_vv_v256i32:295; CHECK: # %bb.0:296; CHECK-NEXT: lea %s0, 256297; CHECK-NEXT: lvl %s0298; CHECK-NEXT: vcmpu.w %v0, %v0, %v1299; CHECK-NEXT: vfmk.w.gt %vm1, %v0300; CHECK-NEXT: b.l.t (, %s10)301 %z = icmp ugt <256 x i32> %x, %y302 ret <256 x i1> %z303}304 305; Function Attrs: nounwind306define fastcc <256 x i1> @icmp_ugt_sv_v256i32(i32 %x, <256 x i32> %y) {307; CHECK-LABEL: icmp_ugt_sv_v256i32:308; CHECK: # %bb.0:309; CHECK-NEXT: and %s0, %s0, (32)0310; CHECK-NEXT: lea %s1, 256311; CHECK-NEXT: lvl %s1312; CHECK-NEXT: vbrd %v1, %s0313; CHECK-NEXT: vcmpu.w %v0, %v1, %v0314; CHECK-NEXT: vfmk.w.gt %vm1, %v0315; CHECK-NEXT: b.l.t (, %s10)316 %xins = insertelement <256 x i32> undef, i32 %x, i32 0317 %vx = shufflevector <256 x i32> %xins, <256 x i32> undef, <256 x i32> zeroinitializer318 %z = icmp ugt <256 x i32> %vx, %y319 ret <256 x i1> %z320}321 322; Function Attrs: nounwind323define fastcc <256 x i1> @icmp_ugt_vs_v256i32(<256 x i32> %x, i32 %y) {324; CHECK-LABEL: icmp_ugt_vs_v256i32:325; CHECK: # %bb.0:326; CHECK-NEXT: and %s0, %s0, (32)0327; CHECK-NEXT: lea %s1, 256328; CHECK-NEXT: lvl %s1329; CHECK-NEXT: vbrd %v1, %s0330; CHECK-NEXT: vcmpu.w %v0, %v0, %v1331; CHECK-NEXT: vfmk.w.gt %vm1, %v0332; CHECK-NEXT: b.l.t (, %s10)333 %yins = insertelement <256 x i32> undef, i32 %y, i32 0334 %vy = shufflevector <256 x i32> %yins, <256 x i32> undef, <256 x i32> zeroinitializer335 %z = icmp ugt <256 x i32> %x, %vy336 ret <256 x i1> %z337}338 339; Function Attrs: nounwind340define fastcc <256 x i1> @icmp_uge_vv_v256i32(<256 x i32> %x, <256 x i32> %y) {341; CHECK-LABEL: icmp_uge_vv_v256i32:342; CHECK: # %bb.0:343; CHECK-NEXT: lea %s0, 256344; CHECK-NEXT: lvl %s0345; CHECK-NEXT: vcmpu.w %v0, %v0, %v1346; CHECK-NEXT: vfmk.w.ge %vm1, %v0347; CHECK-NEXT: b.l.t (, %s10)348 %z = icmp uge <256 x i32> %x, %y349 ret <256 x i1> %z350}351 352; Function Attrs: nounwind353define fastcc <256 x i1> @icmp_uge_sv_v256i32(i32 %x, <256 x i32> %y) {354; CHECK-LABEL: icmp_uge_sv_v256i32:355; CHECK: # %bb.0:356; CHECK-NEXT: and %s0, %s0, (32)0357; CHECK-NEXT: lea %s1, 256358; CHECK-NEXT: lvl %s1359; CHECK-NEXT: vbrd %v1, %s0360; CHECK-NEXT: vcmpu.w %v0, %v1, %v0361; CHECK-NEXT: vfmk.w.ge %vm1, %v0362; CHECK-NEXT: b.l.t (, %s10)363 %xins = insertelement <256 x i32> undef, i32 %x, i32 0364 %vx = shufflevector <256 x i32> %xins, <256 x i32> undef, <256 x i32> zeroinitializer365 %z = icmp uge <256 x i32> %vx, %y366 ret <256 x i1> %z367}368 369; Function Attrs: nounwind370define fastcc <256 x i1> @icmp_uge_vs_v256i32(<256 x i32> %x, i32 %y) {371; CHECK-LABEL: icmp_uge_vs_v256i32:372; CHECK: # %bb.0:373; CHECK-NEXT: and %s0, %s0, (32)0374; CHECK-NEXT: lea %s1, 256375; CHECK-NEXT: lvl %s1376; CHECK-NEXT: vbrd %v1, %s0377; CHECK-NEXT: vcmpu.w %v0, %v0, %v1378; CHECK-NEXT: vfmk.w.ge %vm1, %v0379; CHECK-NEXT: b.l.t (, %s10)380 %yins = insertelement <256 x i32> undef, i32 %y, i32 0381 %vy = shufflevector <256 x i32> %yins, <256 x i32> undef, <256 x i32> zeroinitializer382 %z = icmp uge <256 x i32> %x, %vy383 ret <256 x i1> %z384}385 386; Function Attrs: nounwind387define fastcc <256 x i1> @icmp_ule_vv_v256i32(<256 x i32> %x, <256 x i32> %y) {388; CHECK-LABEL: icmp_ule_vv_v256i32:389; CHECK: # %bb.0:390; CHECK-NEXT: lea %s0, 256391; CHECK-NEXT: lvl %s0392; CHECK-NEXT: vcmpu.w %v0, %v0, %v1393; CHECK-NEXT: vfmk.w.le %vm1, %v0394; CHECK-NEXT: b.l.t (, %s10)395 %z = icmp ule <256 x i32> %x, %y396 ret <256 x i1> %z397}398 399; Function Attrs: nounwind400define fastcc <256 x i1> @icmp_ule_sv_v256i32(i32 %x, <256 x i32> %y) {401; CHECK-LABEL: icmp_ule_sv_v256i32:402; CHECK: # %bb.0:403; CHECK-NEXT: and %s0, %s0, (32)0404; CHECK-NEXT: lea %s1, 256405; CHECK-NEXT: lvl %s1406; CHECK-NEXT: vbrd %v1, %s0407; CHECK-NEXT: vcmpu.w %v0, %v1, %v0408; CHECK-NEXT: vfmk.w.le %vm1, %v0409; CHECK-NEXT: b.l.t (, %s10)410 %xins = insertelement <256 x i32> undef, i32 %x, i32 0411 %vx = shufflevector <256 x i32> %xins, <256 x i32> undef, <256 x i32> zeroinitializer412 %z = icmp ule <256 x i32> %vx, %y413 ret <256 x i1> %z414}415 416; Function Attrs: nounwind417define fastcc <256 x i1> @icmp_ule_vs_v256i32(<256 x i32> %x, i32 %y) {418; CHECK-LABEL: icmp_ule_vs_v256i32:419; CHECK: # %bb.0:420; CHECK-NEXT: and %s0, %s0, (32)0421; CHECK-NEXT: lea %s1, 256422; CHECK-NEXT: lvl %s1423; CHECK-NEXT: vbrd %v1, %s0424; CHECK-NEXT: vcmpu.w %v0, %v0, %v1425; CHECK-NEXT: vfmk.w.le %vm1, %v0426; CHECK-NEXT: b.l.t (, %s10)427 %yins = insertelement <256 x i32> undef, i32 %y, i32 0428 %vy = shufflevector <256 x i32> %yins, <256 x i32> undef, <256 x i32> zeroinitializer429 %z = icmp ule <256 x i32> %x, %vy430 ret <256 x i1> %z431}432 433; Function Attrs: nounwind434define fastcc <256 x i1> @icmp_ult_vv_v256i32(<256 x i32> %x, <256 x i32> %y) {435; CHECK-LABEL: icmp_ult_vv_v256i32:436; CHECK: # %bb.0:437; CHECK-NEXT: lea %s0, 256438; CHECK-NEXT: lvl %s0439; CHECK-NEXT: vcmpu.w %v0, %v0, %v1440; CHECK-NEXT: vfmk.w.lt %vm1, %v0441; CHECK-NEXT: b.l.t (, %s10)442 %z = icmp ult <256 x i32> %x, %y443 ret <256 x i1> %z444}445 446; Function Attrs: nounwind447define fastcc <256 x i1> @icmp_ult_sv_v256i32(i32 %x, <256 x i32> %y) {448; CHECK-LABEL: icmp_ult_sv_v256i32:449; CHECK: # %bb.0:450; CHECK-NEXT: and %s0, %s0, (32)0451; CHECK-NEXT: lea %s1, 256452; CHECK-NEXT: lvl %s1453; CHECK-NEXT: vbrd %v1, %s0454; CHECK-NEXT: vcmpu.w %v0, %v1, %v0455; CHECK-NEXT: vfmk.w.lt %vm1, %v0456; CHECK-NEXT: b.l.t (, %s10)457 %xins = insertelement <256 x i32> undef, i32 %x, i32 0458 %vx = shufflevector <256 x i32> %xins, <256 x i32> undef, <256 x i32> zeroinitializer459 %z = icmp ult <256 x i32> %vx, %y460 ret <256 x i1> %z461}462 463; Function Attrs: nounwind464define fastcc <256 x i1> @icmp_ult_vs_v256i32(<256 x i32> %x, i32 %y) {465; CHECK-LABEL: icmp_ult_vs_v256i32:466; CHECK: # %bb.0:467; CHECK-NEXT: and %s0, %s0, (32)0468; CHECK-NEXT: lea %s1, 256469; CHECK-NEXT: lvl %s1470; CHECK-NEXT: vbrd %v1, %s0471; CHECK-NEXT: vcmpu.w %v0, %v0, %v1472; CHECK-NEXT: vfmk.w.lt %vm1, %v0473; CHECK-NEXT: b.l.t (, %s10)474 %yins = insertelement <256 x i32> undef, i32 %y, i32 0475 %vy = shufflevector <256 x i32> %yins, <256 x i32> undef, <256 x i32> zeroinitializer476 %z = icmp ult <256 x i32> %x, %vy477 ret <256 x i1> %z478}479 480 481 482; <256 x i64>483 484; Function Attrs: nounwind485define fastcc <256 x i1> @icmp_sgt_vv_v256i64(<256 x i64> %x, <256 x i64> %y) {486; CHECK-LABEL: icmp_sgt_vv_v256i64:487; CHECK: # %bb.0:488; CHECK-NEXT: lea %s0, 256489; CHECK-NEXT: lvl %s0490; CHECK-NEXT: vcmps.l %v0, %v0, %v1491; CHECK-NEXT: vfmk.l.gt %vm1, %v0492; CHECK-NEXT: b.l.t (, %s10)493 %z = icmp sgt <256 x i64> %x, %y494 ret <256 x i1> %z495}496 497; Function Attrs: nounwind498define fastcc <256 x i1> @icmp_sgt_sv_v256i64(i64 %x, <256 x i64> %y) {499; CHECK-LABEL: icmp_sgt_sv_v256i64:500; CHECK: # %bb.0:501; CHECK-NEXT: lea %s1, 256502; CHECK-NEXT: lvl %s1503; CHECK-NEXT: vbrd %v1, %s0504; CHECK-NEXT: vcmps.l %v0, %v1, %v0505; CHECK-NEXT: vfmk.l.gt %vm1, %v0506; CHECK-NEXT: b.l.t (, %s10)507 %xins = insertelement <256 x i64> undef, i64 %x, i32 0508 %vx = shufflevector <256 x i64> %xins, <256 x i64> undef, <256 x i32> zeroinitializer509 %z = icmp sgt <256 x i64> %vx, %y510 ret <256 x i1> %z511}512 513; Function Attrs: nounwind514define fastcc <256 x i1> @icmp_sgt_vs_v256i64(<256 x i64> %x, i64 %y) {515; CHECK-LABEL: icmp_sgt_vs_v256i64:516; CHECK: # %bb.0:517; CHECK-NEXT: lea %s1, 256518; CHECK-NEXT: lvl %s1519; CHECK-NEXT: vbrd %v1, %s0520; CHECK-NEXT: vcmps.l %v0, %v0, %v1521; CHECK-NEXT: vfmk.l.gt %vm1, %v0522; CHECK-NEXT: b.l.t (, %s10)523 %yins = insertelement <256 x i64> undef, i64 %y, i32 0524 %vy = shufflevector <256 x i64> %yins, <256 x i64> undef, <256 x i32> zeroinitializer525 %z = icmp sgt <256 x i64> %x, %vy526 ret <256 x i1> %z527}528 529; Function Attrs: nounwind530define fastcc <256 x i1> @icmp_sge_vv_v256i64(<256 x i64> %x, <256 x i64> %y) {531; CHECK-LABEL: icmp_sge_vv_v256i64:532; CHECK: # %bb.0:533; CHECK-NEXT: lea %s0, 256534; CHECK-NEXT: lvl %s0535; CHECK-NEXT: vcmps.l %v0, %v0, %v1536; CHECK-NEXT: vfmk.l.ge %vm1, %v0537; CHECK-NEXT: b.l.t (, %s10)538 %z = icmp sge <256 x i64> %x, %y539 ret <256 x i1> %z540}541 542; Function Attrs: nounwind543define fastcc <256 x i1> @icmp_sge_sv_v256i64(i64 %x, <256 x i64> %y) {544; CHECK-LABEL: icmp_sge_sv_v256i64:545; CHECK: # %bb.0:546; CHECK-NEXT: lea %s1, 256547; CHECK-NEXT: lvl %s1548; CHECK-NEXT: vbrd %v1, %s0549; CHECK-NEXT: vcmps.l %v0, %v1, %v0550; CHECK-NEXT: vfmk.l.ge %vm1, %v0551; CHECK-NEXT: b.l.t (, %s10)552 %xins = insertelement <256 x i64> undef, i64 %x, i32 0553 %vx = shufflevector <256 x i64> %xins, <256 x i64> undef, <256 x i32> zeroinitializer554 %z = icmp sge <256 x i64> %vx, %y555 ret <256 x i1> %z556}557 558; Function Attrs: nounwind559define fastcc <256 x i1> @icmp_sge_vs_v256i64(<256 x i64> %x, i64 %y) {560; CHECK-LABEL: icmp_sge_vs_v256i64:561; CHECK: # %bb.0:562; CHECK-NEXT: lea %s1, 256563; CHECK-NEXT: lvl %s1564; CHECK-NEXT: vbrd %v1, %s0565; CHECK-NEXT: vcmps.l %v0, %v0, %v1566; CHECK-NEXT: vfmk.l.ge %vm1, %v0567; CHECK-NEXT: b.l.t (, %s10)568 %yins = insertelement <256 x i64> undef, i64 %y, i32 0569 %vy = shufflevector <256 x i64> %yins, <256 x i64> undef, <256 x i32> zeroinitializer570 %z = icmp sge <256 x i64> %x, %vy571 ret <256 x i1> %z572}573 574; Function Attrs: nounwind575define fastcc <256 x i1> @icmp_eq_vv_v256i64(<256 x i64> %x, <256 x i64> %y) {576; CHECK-LABEL: icmp_eq_vv_v256i64:577; CHECK: # %bb.0:578; CHECK-NEXT: lea %s0, 256579; CHECK-NEXT: lvl %s0580; CHECK-NEXT: vcmpu.l %v0, %v0, %v1581; CHECK-NEXT: vfmk.l.eq %vm1, %v0582; CHECK-NEXT: b.l.t (, %s10)583 %z = icmp eq <256 x i64> %x, %y584 ret <256 x i1> %z585}586 587; Function Attrs: nounwind588define fastcc <256 x i1> @icmp_eq_sv_v256i64(i64 %x, <256 x i64> %y) {589; CHECK-LABEL: icmp_eq_sv_v256i64:590; CHECK: # %bb.0:591; CHECK-NEXT: lea %s1, 256592; CHECK-NEXT: lvl %s1593; CHECK-NEXT: vbrd %v1, %s0594; CHECK-NEXT: vcmpu.l %v0, %v1, %v0595; CHECK-NEXT: vfmk.l.eq %vm1, %v0596; CHECK-NEXT: b.l.t (, %s10)597 %xins = insertelement <256 x i64> undef, i64 %x, i32 0598 %vx = shufflevector <256 x i64> %xins, <256 x i64> undef, <256 x i32> zeroinitializer599 %z = icmp eq <256 x i64> %vx, %y600 ret <256 x i1> %z601}602 603; Function Attrs: nounwind604define fastcc <256 x i1> @icmp_eq_vs_v256i64(<256 x i64> %x, i64 %y) {605; CHECK-LABEL: icmp_eq_vs_v256i64:606; CHECK: # %bb.0:607; CHECK-NEXT: lea %s1, 256608; CHECK-NEXT: lvl %s1609; CHECK-NEXT: vbrd %v1, %s0610; CHECK-NEXT: vcmpu.l %v0, %v0, %v1611; CHECK-NEXT: vfmk.l.eq %vm1, %v0612; CHECK-NEXT: b.l.t (, %s10)613 %yins = insertelement <256 x i64> undef, i64 %y, i32 0614 %vy = shufflevector <256 x i64> %yins, <256 x i64> undef, <256 x i32> zeroinitializer615 %z = icmp eq <256 x i64> %x, %vy616 ret <256 x i1> %z617}618 619define fastcc <256 x i1> @icmp_ne_vv_v256i64(<256 x i64> %x, <256 x i64> %y) {620; CHECK-LABEL: icmp_ne_vv_v256i64:621; CHECK: # %bb.0:622; CHECK-NEXT: lea %s0, 256623; CHECK-NEXT: lvl %s0624; CHECK-NEXT: vcmpu.l %v0, %v0, %v1625; CHECK-NEXT: vfmk.l.ne %vm1, %v0626; CHECK-NEXT: b.l.t (, %s10)627 %z = icmp ne <256 x i64> %x, %y628 ret <256 x i1> %z629}630 631; Function Attrs: nounwind632define fastcc <256 x i1> @icmp_ne_sv_v256i64(i64 %x, <256 x i64> %y) {633; CHECK-LABEL: icmp_ne_sv_v256i64:634; CHECK: # %bb.0:635; CHECK-NEXT: lea %s1, 256636; CHECK-NEXT: lvl %s1637; CHECK-NEXT: vbrd %v1, %s0638; CHECK-NEXT: vcmpu.l %v0, %v1, %v0639; CHECK-NEXT: vfmk.l.ne %vm1, %v0640; CHECK-NEXT: b.l.t (, %s10)641 %xins = insertelement <256 x i64> undef, i64 %x, i32 0642 %vx = shufflevector <256 x i64> %xins, <256 x i64> undef, <256 x i32> zeroinitializer643 %z = icmp ne <256 x i64> %vx, %y644 ret <256 x i1> %z645}646 647; Function Attrs: nounwind648define fastcc <256 x i1> @icmp_ne_vs_v256i64(<256 x i64> %x, i64 %y) {649; CHECK-LABEL: icmp_ne_vs_v256i64:650; CHECK: # %bb.0:651; CHECK-NEXT: lea %s1, 256652; CHECK-NEXT: lvl %s1653; CHECK-NEXT: vbrd %v1, %s0654; CHECK-NEXT: vcmpu.l %v0, %v0, %v1655; CHECK-NEXT: vfmk.l.ne %vm1, %v0656; CHECK-NEXT: b.l.t (, %s10)657 %yins = insertelement <256 x i64> undef, i64 %y, i32 0658 %vy = shufflevector <256 x i64> %yins, <256 x i64> undef, <256 x i32> zeroinitializer659 %z = icmp ne <256 x i64> %x, %vy660 ret <256 x i1> %z661}662 663; Function Attrs: nounwind664define fastcc <256 x i1> @icmp_sle_vv_v256i64(<256 x i64> %x, <256 x i64> %y) {665; CHECK-LABEL: icmp_sle_vv_v256i64:666; CHECK: # %bb.0:667; CHECK-NEXT: lea %s0, 256668; CHECK-NEXT: lvl %s0669; CHECK-NEXT: vcmps.l %v0, %v0, %v1670; CHECK-NEXT: vfmk.l.le %vm1, %v0671; CHECK-NEXT: b.l.t (, %s10)672 %z = icmp sle <256 x i64> %x, %y673 ret <256 x i1> %z674}675 676; Function Attrs: nounwind677define fastcc <256 x i1> @icmp_sle_sv_v256i64(i64 %x, <256 x i64> %y) {678; CHECK-LABEL: icmp_sle_sv_v256i64:679; CHECK: # %bb.0:680; CHECK-NEXT: lea %s1, 256681; CHECK-NEXT: lvl %s1682; CHECK-NEXT: vbrd %v1, %s0683; CHECK-NEXT: vcmps.l %v0, %v1, %v0684; CHECK-NEXT: vfmk.l.le %vm1, %v0685; CHECK-NEXT: b.l.t (, %s10)686 %xins = insertelement <256 x i64> undef, i64 %x, i32 0687 %vx = shufflevector <256 x i64> %xins, <256 x i64> undef, <256 x i32> zeroinitializer688 %z = icmp sle <256 x i64> %vx, %y689 ret <256 x i1> %z690}691 692; Function Attrs: nounwind693define fastcc <256 x i1> @icmp_sle_vs_v256i64(<256 x i64> %x, i64 %y) {694; CHECK-LABEL: icmp_sle_vs_v256i64:695; CHECK: # %bb.0:696; CHECK-NEXT: lea %s1, 256697; CHECK-NEXT: lvl %s1698; CHECK-NEXT: vbrd %v1, %s0699; CHECK-NEXT: vcmps.l %v0, %v0, %v1700; CHECK-NEXT: vfmk.l.le %vm1, %v0701; CHECK-NEXT: b.l.t (, %s10)702 %yins = insertelement <256 x i64> undef, i64 %y, i32 0703 %vy = shufflevector <256 x i64> %yins, <256 x i64> undef, <256 x i32> zeroinitializer704 %z = icmp sle <256 x i64> %x, %vy705 ret <256 x i1> %z706}707 708; Function Attrs: nounwind709define fastcc <256 x i1> @icmp_slt_vv_v256i64(<256 x i64> %x, <256 x i64> %y) {710; CHECK-LABEL: icmp_slt_vv_v256i64:711; CHECK: # %bb.0:712; CHECK-NEXT: lea %s0, 256713; CHECK-NEXT: lvl %s0714; CHECK-NEXT: vcmps.l %v0, %v0, %v1715; CHECK-NEXT: vfmk.l.lt %vm1, %v0716; CHECK-NEXT: b.l.t (, %s10)717 %z = icmp slt <256 x i64> %x, %y718 ret <256 x i1> %z719}720 721; Function Attrs: nounwind722define fastcc <256 x i1> @icmp_slt_sv_v256i64(i64 %x, <256 x i64> %y) {723; CHECK-LABEL: icmp_slt_sv_v256i64:724; CHECK: # %bb.0:725; CHECK-NEXT: lea %s1, 256726; CHECK-NEXT: lvl %s1727; CHECK-NEXT: vbrd %v1, %s0728; CHECK-NEXT: vcmps.l %v0, %v1, %v0729; CHECK-NEXT: vfmk.l.lt %vm1, %v0730; CHECK-NEXT: b.l.t (, %s10)731 %xins = insertelement <256 x i64> undef, i64 %x, i32 0732 %vx = shufflevector <256 x i64> %xins, <256 x i64> undef, <256 x i32> zeroinitializer733 %z = icmp slt <256 x i64> %vx, %y734 ret <256 x i1> %z735}736 737; Function Attrs: nounwind738define fastcc <256 x i1> @icmp_slt_vs_v256i64(<256 x i64> %x, i64 %y) {739; CHECK-LABEL: icmp_slt_vs_v256i64:740; CHECK: # %bb.0:741; CHECK-NEXT: lea %s1, 256742; CHECK-NEXT: lvl %s1743; CHECK-NEXT: vbrd %v1, %s0744; CHECK-NEXT: vcmps.l %v0, %v0, %v1745; CHECK-NEXT: vfmk.l.lt %vm1, %v0746; CHECK-NEXT: b.l.t (, %s10)747 %yins = insertelement <256 x i64> undef, i64 %y, i32 0748 %vy = shufflevector <256 x i64> %yins, <256 x i64> undef, <256 x i32> zeroinitializer749 %z = icmp slt <256 x i64> %x, %vy750 ret <256 x i1> %z751}752 753 754 755 756; Function Attrs: nounwind757define fastcc <256 x i1> @icmp_ugt_vv_v256i64(<256 x i64> %x, <256 x i64> %y) {758; CHECK-LABEL: icmp_ugt_vv_v256i64:759; CHECK: # %bb.0:760; CHECK-NEXT: lea %s0, 256761; CHECK-NEXT: lvl %s0762; CHECK-NEXT: vcmpu.l %v0, %v0, %v1763; CHECK-NEXT: vfmk.l.gt %vm1, %v0764; CHECK-NEXT: b.l.t (, %s10)765 %z = icmp ugt <256 x i64> %x, %y766 ret <256 x i1> %z767}768 769; Function Attrs: nounwind770define fastcc <256 x i1> @icmp_ugt_sv_v256i64(i64 %x, <256 x i64> %y) {771; CHECK-LABEL: icmp_ugt_sv_v256i64:772; CHECK: # %bb.0:773; CHECK-NEXT: lea %s1, 256774; CHECK-NEXT: lvl %s1775; CHECK-NEXT: vbrd %v1, %s0776; CHECK-NEXT: vcmpu.l %v0, %v1, %v0777; CHECK-NEXT: vfmk.l.gt %vm1, %v0778; CHECK-NEXT: b.l.t (, %s10)779 %xins = insertelement <256 x i64> undef, i64 %x, i32 0780 %vx = shufflevector <256 x i64> %xins, <256 x i64> undef, <256 x i32> zeroinitializer781 %z = icmp ugt <256 x i64> %vx, %y782 ret <256 x i1> %z783}784 785; Function Attrs: nounwind786define fastcc <256 x i1> @icmp_ugt_vs_v256i64(<256 x i64> %x, i64 %y) {787; CHECK-LABEL: icmp_ugt_vs_v256i64:788; CHECK: # %bb.0:789; CHECK-NEXT: lea %s1, 256790; CHECK-NEXT: lvl %s1791; CHECK-NEXT: vbrd %v1, %s0792; CHECK-NEXT: vcmpu.l %v0, %v0, %v1793; CHECK-NEXT: vfmk.l.gt %vm1, %v0794; CHECK-NEXT: b.l.t (, %s10)795 %yins = insertelement <256 x i64> undef, i64 %y, i32 0796 %vy = shufflevector <256 x i64> %yins, <256 x i64> undef, <256 x i32> zeroinitializer797 %z = icmp ugt <256 x i64> %x, %vy798 ret <256 x i1> %z799}800 801; Function Attrs: nounwind802define fastcc <256 x i1> @icmp_uge_vv_v256i64(<256 x i64> %x, <256 x i64> %y) {803; CHECK-LABEL: icmp_uge_vv_v256i64:804; CHECK: # %bb.0:805; CHECK-NEXT: lea %s0, 256806; CHECK-NEXT: lvl %s0807; CHECK-NEXT: vcmpu.l %v0, %v0, %v1808; CHECK-NEXT: vfmk.l.ge %vm1, %v0809; CHECK-NEXT: b.l.t (, %s10)810 %z = icmp uge <256 x i64> %x, %y811 ret <256 x i1> %z812}813 814; Function Attrs: nounwind815define fastcc <256 x i1> @icmp_uge_sv_v256i64(i64 %x, <256 x i64> %y) {816; CHECK-LABEL: icmp_uge_sv_v256i64:817; CHECK: # %bb.0:818; CHECK-NEXT: lea %s1, 256819; CHECK-NEXT: lvl %s1820; CHECK-NEXT: vbrd %v1, %s0821; CHECK-NEXT: vcmpu.l %v0, %v1, %v0822; CHECK-NEXT: vfmk.l.ge %vm1, %v0823; CHECK-NEXT: b.l.t (, %s10)824 %xins = insertelement <256 x i64> undef, i64 %x, i32 0825 %vx = shufflevector <256 x i64> %xins, <256 x i64> undef, <256 x i32> zeroinitializer826 %z = icmp uge <256 x i64> %vx, %y827 ret <256 x i1> %z828}829 830; Function Attrs: nounwind831define fastcc <256 x i1> @icmp_uge_vs_v256i64(<256 x i64> %x, i64 %y) {832; CHECK-LABEL: icmp_uge_vs_v256i64:833; CHECK: # %bb.0:834; CHECK-NEXT: lea %s1, 256835; CHECK-NEXT: lvl %s1836; CHECK-NEXT: vbrd %v1, %s0837; CHECK-NEXT: vcmpu.l %v0, %v0, %v1838; CHECK-NEXT: vfmk.l.ge %vm1, %v0839; CHECK-NEXT: b.l.t (, %s10)840 %yins = insertelement <256 x i64> undef, i64 %y, i32 0841 %vy = shufflevector <256 x i64> %yins, <256 x i64> undef, <256 x i32> zeroinitializer842 %z = icmp uge <256 x i64> %x, %vy843 ret <256 x i1> %z844}845 846; Function Attrs: nounwind847define fastcc <256 x i1> @icmp_ule_vv_v256i64(<256 x i64> %x, <256 x i64> %y) {848; CHECK-LABEL: icmp_ule_vv_v256i64:849; CHECK: # %bb.0:850; CHECK-NEXT: lea %s0, 256851; CHECK-NEXT: lvl %s0852; CHECK-NEXT: vcmpu.l %v0, %v0, %v1853; CHECK-NEXT: vfmk.l.le %vm1, %v0854; CHECK-NEXT: b.l.t (, %s10)855 %z = icmp ule <256 x i64> %x, %y856 ret <256 x i1> %z857}858 859; Function Attrs: nounwind860define fastcc <256 x i1> @icmp_ule_sv_v256i64(i64 %x, <256 x i64> %y) {861; CHECK-LABEL: icmp_ule_sv_v256i64:862; CHECK: # %bb.0:863; CHECK-NEXT: lea %s1, 256864; CHECK-NEXT: lvl %s1865; CHECK-NEXT: vbrd %v1, %s0866; CHECK-NEXT: vcmpu.l %v0, %v1, %v0867; CHECK-NEXT: vfmk.l.le %vm1, %v0868; CHECK-NEXT: b.l.t (, %s10)869 %xins = insertelement <256 x i64> undef, i64 %x, i32 0870 %vx = shufflevector <256 x i64> %xins, <256 x i64> undef, <256 x i32> zeroinitializer871 %z = icmp ule <256 x i64> %vx, %y872 ret <256 x i1> %z873}874 875; Function Attrs: nounwind876define fastcc <256 x i1> @icmp_ule_vs_v256i64(<256 x i64> %x, i64 %y) {877; CHECK-LABEL: icmp_ule_vs_v256i64:878; CHECK: # %bb.0:879; CHECK-NEXT: lea %s1, 256880; CHECK-NEXT: lvl %s1881; CHECK-NEXT: vbrd %v1, %s0882; CHECK-NEXT: vcmpu.l %v0, %v0, %v1883; CHECK-NEXT: vfmk.l.le %vm1, %v0884; CHECK-NEXT: b.l.t (, %s10)885 %yins = insertelement <256 x i64> undef, i64 %y, i32 0886 %vy = shufflevector <256 x i64> %yins, <256 x i64> undef, <256 x i32> zeroinitializer887 %z = icmp ule <256 x i64> %x, %vy888 ret <256 x i1> %z889}890 891; Function Attrs: nounwind892define fastcc <256 x i1> @icmp_ult_vv_v256i64(<256 x i64> %x, <256 x i64> %y) {893; CHECK-LABEL: icmp_ult_vv_v256i64:894; CHECK: # %bb.0:895; CHECK-NEXT: lea %s0, 256896; CHECK-NEXT: lvl %s0897; CHECK-NEXT: vcmpu.l %v0, %v0, %v1898; CHECK-NEXT: vfmk.l.lt %vm1, %v0899; CHECK-NEXT: b.l.t (, %s10)900 %z = icmp ult <256 x i64> %x, %y901 ret <256 x i1> %z902}903 904; Function Attrs: nounwind905define fastcc <256 x i1> @icmp_ult_sv_v256i64(i64 %x, <256 x i64> %y) {906; CHECK-LABEL: icmp_ult_sv_v256i64:907; CHECK: # %bb.0:908; CHECK-NEXT: lea %s1, 256909; CHECK-NEXT: lvl %s1910; CHECK-NEXT: vbrd %v1, %s0911; CHECK-NEXT: vcmpu.l %v0, %v1, %v0912; CHECK-NEXT: vfmk.l.lt %vm1, %v0913; CHECK-NEXT: b.l.t (, %s10)914 %xins = insertelement <256 x i64> undef, i64 %x, i32 0915 %vx = shufflevector <256 x i64> %xins, <256 x i64> undef, <256 x i32> zeroinitializer916 %z = icmp ult <256 x i64> %vx, %y917 ret <256 x i1> %z918}919 920; Function Attrs: nounwind921define fastcc <256 x i1> @icmp_ult_vs_v256i64(<256 x i64> %x, i64 %y) {922; CHECK-LABEL: icmp_ult_vs_v256i64:923; CHECK: # %bb.0:924; CHECK-NEXT: lea %s1, 256925; CHECK-NEXT: lvl %s1926; CHECK-NEXT: vbrd %v1, %s0927; CHECK-NEXT: vcmpu.l %v0, %v0, %v1928; CHECK-NEXT: vfmk.l.lt %vm1, %v0929; CHECK-NEXT: b.l.t (, %s10)930 %yins = insertelement <256 x i64> undef, i64 %y, i32 0931 %vy = shufflevector <256 x i64> %yins, <256 x i64> undef, <256 x i32> zeroinitializer932 %z = icmp ult <256 x i64> %x, %vy933 ret <256 x i1> %z934}935