1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s 3 4 5; <256 x float> 6 7; Function Attrs: nounwind 8define 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, %vm0 12; CHECK-NEXT: b.l.t (, %s10) 13 %z = fcmp false <256 x float> %x, %y 14 ret <256 x i1> %z 15} 16 17; Function Attrs: nounwind 18define 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, %vm0 22; CHECK-NEXT: b.l.t (, %s10) 23 %xins = insertelement <256 x float> undef, float %x, i32 0 24 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 25 %z = fcmp false <256 x float> %vx, %y 26 ret <256 x i1> %z 27} 28 29; Function Attrs: nounwind 30define 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, %vm0 34; CHECK-NEXT: b.l.t (, %s10) 35 %yins = insertelement <256 x float> undef, float %y, i32 0 36 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 37 %z = fcmp false <256 x float> %x, %vy 38 ret <256 x i1> %z 39} 40 41; Function Attrs: nounwind 42define 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, 256 46; CHECK-NEXT: lvl %s0 47; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 48; CHECK-NEXT: vfmk.s.eq %vm1, %v0 49; CHECK-NEXT: b.l.t (, %s10) 50 %z = fcmp oeq <256 x float> %x, %y 51 ret <256 x i1> %z 52} 53 54; Function Attrs: nounwind 55define 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, 256 59; CHECK-NEXT: lvl %s1 60; CHECK-NEXT: vbrd %v1, %s0 61; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 62; CHECK-NEXT: vfmk.s.eq %vm1, %v0 63; CHECK-NEXT: b.l.t (, %s10) 64 %xins = insertelement <256 x float> undef, float %x, i32 0 65 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 66 %z = fcmp oeq <256 x float> %vx, %y 67 ret <256 x i1> %z 68} 69 70; Function Attrs: nounwind 71define 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, 256 75; CHECK-NEXT: lvl %s1 76; CHECK-NEXT: vbrd %v1, %s0 77; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 78; CHECK-NEXT: vfmk.s.eq %vm1, %v0 79; CHECK-NEXT: b.l.t (, %s10) 80 %yins = insertelement <256 x float> undef, float %y, i32 0 81 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 82 %z = fcmp oeq <256 x float> %x, %vy 83 ret <256 x i1> %z 84} 85 86; Function Attrs: nounwind 87define 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, 256 91; CHECK-NEXT: lvl %s0 92; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 93; CHECK-NEXT: vfmk.s.gt %vm1, %v0 94; CHECK-NEXT: b.l.t (, %s10) 95 %z = fcmp ogt <256 x float> %x, %y 96 ret <256 x i1> %z 97} 98 99; Function Attrs: nounwind 100define 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, 256 104; CHECK-NEXT: lvl %s1 105; CHECK-NEXT: vbrd %v1, %s0 106; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 107; CHECK-NEXT: vfmk.s.gt %vm1, %v0 108; CHECK-NEXT: b.l.t (, %s10) 109 %xins = insertelement <256 x float> undef, float %x, i32 0 110 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 111 %z = fcmp ogt <256 x float> %vx, %y 112 ret <256 x i1> %z 113} 114 115; Function Attrs: nounwind 116define 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, 256 120; CHECK-NEXT: lvl %s1 121; CHECK-NEXT: vbrd %v1, %s0 122; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 123; CHECK-NEXT: vfmk.s.gt %vm1, %v0 124; CHECK-NEXT: b.l.t (, %s10) 125 %yins = insertelement <256 x float> undef, float %y, i32 0 126 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 127 %z = fcmp ogt <256 x float> %x, %vy 128 ret <256 x i1> %z 129} 130 131; Function Attrs: nounwind 132define 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, 256 136; CHECK-NEXT: lvl %s0 137; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 138; CHECK-NEXT: vfmk.s.ge %vm1, %v0 139; CHECK-NEXT: b.l.t (, %s10) 140 %z = fcmp oge <256 x float> %x, %y 141 ret <256 x i1> %z 142} 143 144; Function Attrs: nounwind 145define 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, 256 149; CHECK-NEXT: lvl %s1 150; CHECK-NEXT: vbrd %v1, %s0 151; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 152; CHECK-NEXT: vfmk.s.ge %vm1, %v0 153; CHECK-NEXT: b.l.t (, %s10) 154 %xins = insertelement <256 x float> undef, float %x, i32 0 155 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 156 %z = fcmp oge <256 x float> %vx, %y 157 ret <256 x i1> %z 158} 159 160; Function Attrs: nounwind 161define 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, 256 165; CHECK-NEXT: lvl %s1 166; CHECK-NEXT: vbrd %v1, %s0 167; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 168; CHECK-NEXT: vfmk.s.ge %vm1, %v0 169; CHECK-NEXT: b.l.t (, %s10) 170 %yins = insertelement <256 x float> undef, float %y, i32 0 171 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 172 %z = fcmp oge <256 x float> %x, %vy 173 ret <256 x i1> %z 174} 175 176; Function Attrs: nounwind 177define 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, 256 181; CHECK-NEXT: lvl %s0 182; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 183; CHECK-NEXT: vfmk.s.lt %vm1, %v0 184; CHECK-NEXT: b.l.t (, %s10) 185 %z = fcmp olt <256 x float> %x, %y 186 ret <256 x i1> %z 187} 188 189; Function Attrs: nounwind 190define 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, 256 194; CHECK-NEXT: lvl %s1 195; CHECK-NEXT: vbrd %v1, %s0 196; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 197; CHECK-NEXT: vfmk.s.lt %vm1, %v0 198; CHECK-NEXT: b.l.t (, %s10) 199 %xins = insertelement <256 x float> undef, float %x, i32 0 200 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 201 %z = fcmp olt <256 x float> %vx, %y 202 ret <256 x i1> %z 203} 204 205; Function Attrs: nounwind 206define 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, 256 210; CHECK-NEXT: lvl %s1 211; CHECK-NEXT: vbrd %v1, %s0 212; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 213; CHECK-NEXT: vfmk.s.lt %vm1, %v0 214; CHECK-NEXT: b.l.t (, %s10) 215 %yins = insertelement <256 x float> undef, float %y, i32 0 216 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 217 %z = fcmp olt <256 x float> %x, %vy 218 ret <256 x i1> %z 219} 220 221; Function Attrs: nounwind 222define 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, 256 226; CHECK-NEXT: lvl %s0 227; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 228; CHECK-NEXT: vfmk.s.le %vm1, %v0 229; CHECK-NEXT: b.l.t (, %s10) 230 %z = fcmp ole <256 x float> %x, %y 231 ret <256 x i1> %z 232} 233 234; Function Attrs: nounwind 235define 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, 256 239; CHECK-NEXT: lvl %s1 240; CHECK-NEXT: vbrd %v1, %s0 241; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 242; CHECK-NEXT: vfmk.s.le %vm1, %v0 243; CHECK-NEXT: b.l.t (, %s10) 244 %xins = insertelement <256 x float> undef, float %x, i32 0 245 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 246 %z = fcmp ole <256 x float> %vx, %y 247 ret <256 x i1> %z 248} 249 250; Function Attrs: nounwind 251define 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, 256 255; CHECK-NEXT: lvl %s1 256; CHECK-NEXT: vbrd %v1, %s0 257; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 258; CHECK-NEXT: vfmk.s.le %vm1, %v0 259; CHECK-NEXT: b.l.t (, %s10) 260 %yins = insertelement <256 x float> undef, float %y, i32 0 261 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 262 %z = fcmp ole <256 x float> %x, %vy 263 ret <256 x i1> %z 264} 265 266; Function Attrs: nounwind 267define 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, 256 271; CHECK-NEXT: lvl %s0 272; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 273; CHECK-NEXT: vfmk.s.ne %vm1, %v0 274; CHECK-NEXT: b.l.t (, %s10) 275 %z = fcmp one <256 x float> %x, %y 276 ret <256 x i1> %z 277} 278 279; Function Attrs: nounwind 280define 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, 256 284; CHECK-NEXT: lvl %s1 285; CHECK-NEXT: vbrd %v1, %s0 286; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 287; CHECK-NEXT: vfmk.s.ne %vm1, %v0 288; CHECK-NEXT: b.l.t (, %s10) 289 %xins = insertelement <256 x float> undef, float %x, i32 0 290 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 291 %z = fcmp one <256 x float> %vx, %y 292 ret <256 x i1> %z 293} 294 295; Function Attrs: nounwind 296define 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, 256 300; CHECK-NEXT: lvl %s1 301; CHECK-NEXT: vbrd %v1, %s0 302; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 303; CHECK-NEXT: vfmk.s.ne %vm1, %v0 304; CHECK-NEXT: b.l.t (, %s10) 305 %yins = insertelement <256 x float> undef, float %y, i32 0 306 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 307 %z = fcmp one <256 x float> %x, %vy 308 ret <256 x i1> %z 309} 310 311; Function Attrs: nounwind 312define 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, 256 316; CHECK-NEXT: lvl %s0 317; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 318; CHECK-NEXT: vfmk.s.num %vm1, %v0 319; CHECK-NEXT: b.l.t (, %s10) 320 %z = fcmp ord <256 x float> %x, %y 321 ret <256 x i1> %z 322} 323 324; Function Attrs: nounwind 325define 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, 256 329; CHECK-NEXT: lvl %s1 330; CHECK-NEXT: vbrd %v1, %s0 331; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 332; CHECK-NEXT: vfmk.s.num %vm1, %v0 333; CHECK-NEXT: b.l.t (, %s10) 334 %xins = insertelement <256 x float> undef, float %x, i32 0 335 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 336 %z = fcmp ord <256 x float> %vx, %y 337 ret <256 x i1> %z 338} 339 340; Function Attrs: nounwind 341define 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, 256 345; CHECK-NEXT: lvl %s1 346; CHECK-NEXT: vbrd %v1, %s0 347; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 348; CHECK-NEXT: vfmk.s.num %vm1, %v0 349; CHECK-NEXT: b.l.t (, %s10) 350 %yins = insertelement <256 x float> undef, float %y, i32 0 351 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 352 %z = fcmp ord <256 x float> %x, %vy 353 ret <256 x i1> %z 354} 355 356; Function Attrs: nounwind 357define 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, 256 361; CHECK-NEXT: lvl %s0 362; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 363; CHECK-NEXT: vfmk.s.nan %vm1, %v0 364; CHECK-NEXT: b.l.t (, %s10) 365 %z = fcmp uno <256 x float> %x, %y 366 ret <256 x i1> %z 367} 368 369; Function Attrs: nounwind 370define 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, 256 374; CHECK-NEXT: lvl %s1 375; CHECK-NEXT: vbrd %v1, %s0 376; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 377; CHECK-NEXT: vfmk.s.nan %vm1, %v0 378; CHECK-NEXT: b.l.t (, %s10) 379 %xins = insertelement <256 x float> undef, float %x, i32 0 380 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 381 %z = fcmp uno <256 x float> %vx, %y 382 ret <256 x i1> %z 383} 384 385; Function Attrs: nounwind 386define 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, 256 390; CHECK-NEXT: lvl %s1 391; CHECK-NEXT: vbrd %v1, %s0 392; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 393; CHECK-NEXT: vfmk.s.nan %vm1, %v0 394; CHECK-NEXT: b.l.t (, %s10) 395 %yins = insertelement <256 x float> undef, float %y, i32 0 396 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 397 %z = fcmp uno <256 x float> %x, %vy 398 ret <256 x i1> %z 399} 400 401; Function Attrs: nounwind 402define 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, 256 406; CHECK-NEXT: lvl %s0 407; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 408; CHECK-NEXT: vfmk.s.eqnan %vm1, %v0 409; CHECK-NEXT: b.l.t (, %s10) 410 %z = fcmp ueq <256 x float> %x, %y 411 ret <256 x i1> %z 412} 413 414; Function Attrs: nounwind 415define 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, 256 419; CHECK-NEXT: lvl %s1 420; CHECK-NEXT: vbrd %v1, %s0 421; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 422; CHECK-NEXT: vfmk.s.eqnan %vm1, %v0 423; CHECK-NEXT: b.l.t (, %s10) 424 %xins = insertelement <256 x float> undef, float %x, i32 0 425 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 426 %z = fcmp ueq <256 x float> %vx, %y 427 ret <256 x i1> %z 428} 429 430; Function Attrs: nounwind 431define 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, 256 435; CHECK-NEXT: lvl %s1 436; CHECK-NEXT: vbrd %v1, %s0 437; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 438; CHECK-NEXT: vfmk.s.eqnan %vm1, %v0 439; CHECK-NEXT: b.l.t (, %s10) 440 %yins = insertelement <256 x float> undef, float %y, i32 0 441 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 442 %z = fcmp ueq <256 x float> %x, %vy 443 ret <256 x i1> %z 444} 445 446; Function Attrs: nounwind 447define 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, 256 451; CHECK-NEXT: lvl %s0 452; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 453; CHECK-NEXT: vfmk.s.gtnan %vm1, %v0 454; CHECK-NEXT: b.l.t (, %s10) 455 %z = fcmp ugt <256 x float> %x, %y 456 ret <256 x i1> %z 457} 458 459; Function Attrs: nounwind 460define 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, 256 464; CHECK-NEXT: lvl %s1 465; CHECK-NEXT: vbrd %v1, %s0 466; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 467; CHECK-NEXT: vfmk.s.gtnan %vm1, %v0 468; CHECK-NEXT: b.l.t (, %s10) 469 %xins = insertelement <256 x float> undef, float %x, i32 0 470 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 471 %z = fcmp ugt <256 x float> %vx, %y 472 ret <256 x i1> %z 473} 474 475; Function Attrs: nounwind 476define 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, 256 480; CHECK-NEXT: lvl %s1 481; CHECK-NEXT: vbrd %v1, %s0 482; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 483; CHECK-NEXT: vfmk.s.gtnan %vm1, %v0 484; CHECK-NEXT: b.l.t (, %s10) 485 %yins = insertelement <256 x float> undef, float %y, i32 0 486 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 487 %z = fcmp ugt <256 x float> %x, %vy 488 ret <256 x i1> %z 489} 490 491; Function Attrs: nounwind 492define 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, 256 496; CHECK-NEXT: lvl %s0 497; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 498; CHECK-NEXT: vfmk.s.genan %vm1, %v0 499; CHECK-NEXT: b.l.t (, %s10) 500 %z = fcmp uge <256 x float> %x, %y 501 ret <256 x i1> %z 502} 503 504; Function Attrs: nounwind 505define 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, 256 509; CHECK-NEXT: lvl %s1 510; CHECK-NEXT: vbrd %v1, %s0 511; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 512; CHECK-NEXT: vfmk.s.genan %vm1, %v0 513; CHECK-NEXT: b.l.t (, %s10) 514 %xins = insertelement <256 x float> undef, float %x, i32 0 515 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 516 %z = fcmp uge <256 x float> %vx, %y 517 ret <256 x i1> %z 518} 519 520; Function Attrs: nounwind 521define 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, 256 525; CHECK-NEXT: lvl %s1 526; CHECK-NEXT: vbrd %v1, %s0 527; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 528; CHECK-NEXT: vfmk.s.genan %vm1, %v0 529; CHECK-NEXT: b.l.t (, %s10) 530 %yins = insertelement <256 x float> undef, float %y, i32 0 531 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 532 %z = fcmp uge <256 x float> %x, %vy 533 ret <256 x i1> %z 534} 535 536; Function Attrs: nounwind 537define 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, 256 541; CHECK-NEXT: lvl %s0 542; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 543; CHECK-NEXT: vfmk.s.ltnan %vm1, %v0 544; CHECK-NEXT: b.l.t (, %s10) 545 %z = fcmp ult <256 x float> %x, %y 546 ret <256 x i1> %z 547} 548 549; Function Attrs: nounwind 550define 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, 256 554; CHECK-NEXT: lvl %s1 555; CHECK-NEXT: vbrd %v1, %s0 556; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 557; CHECK-NEXT: vfmk.s.ltnan %vm1, %v0 558; CHECK-NEXT: b.l.t (, %s10) 559 %xins = insertelement <256 x float> undef, float %x, i32 0 560 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 561 %z = fcmp ult <256 x float> %vx, %y 562 ret <256 x i1> %z 563} 564 565; Function Attrs: nounwind 566define 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, 256 570; CHECK-NEXT: lvl %s1 571; CHECK-NEXT: vbrd %v1, %s0 572; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 573; CHECK-NEXT: vfmk.s.ltnan %vm1, %v0 574; CHECK-NEXT: b.l.t (, %s10) 575 %yins = insertelement <256 x float> undef, float %y, i32 0 576 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 577 %z = fcmp ult <256 x float> %x, %vy 578 ret <256 x i1> %z 579} 580 581; Function Attrs: nounwind 582define 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, 256 586; CHECK-NEXT: lvl %s0 587; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 588; CHECK-NEXT: vfmk.s.lenan %vm1, %v0 589; CHECK-NEXT: b.l.t (, %s10) 590 %z = fcmp ule <256 x float> %x, %y 591 ret <256 x i1> %z 592} 593 594; Function Attrs: nounwind 595define 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, 256 599; CHECK-NEXT: lvl %s1 600; CHECK-NEXT: vbrd %v1, %s0 601; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 602; CHECK-NEXT: vfmk.s.lenan %vm1, %v0 603; CHECK-NEXT: b.l.t (, %s10) 604 %xins = insertelement <256 x float> undef, float %x, i32 0 605 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 606 %z = fcmp ule <256 x float> %vx, %y 607 ret <256 x i1> %z 608} 609 610; Function Attrs: nounwind 611define 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, 256 615; CHECK-NEXT: lvl %s1 616; CHECK-NEXT: vbrd %v1, %s0 617; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 618; CHECK-NEXT: vfmk.s.lenan %vm1, %v0 619; CHECK-NEXT: b.l.t (, %s10) 620 %yins = insertelement <256 x float> undef, float %y, i32 0 621 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 622 %z = fcmp ule <256 x float> %x, %vy 623 ret <256 x i1> %z 624} 625 626; Function Attrs: nounwind 627define 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, 256 631; CHECK-NEXT: lvl %s0 632; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 633; CHECK-NEXT: vfmk.s.nenan %vm1, %v0 634; CHECK-NEXT: b.l.t (, %s10) 635 %z = fcmp une <256 x float> %x, %y 636 ret <256 x i1> %z 637} 638 639; Function Attrs: nounwind 640define 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, 256 644; CHECK-NEXT: lvl %s1 645; CHECK-NEXT: vbrd %v1, %s0 646; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 647; CHECK-NEXT: vfmk.s.nenan %vm1, %v0 648; CHECK-NEXT: b.l.t (, %s10) 649 %xins = insertelement <256 x float> undef, float %x, i32 0 650 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 651 %z = fcmp une <256 x float> %vx, %y 652 ret <256 x i1> %z 653} 654 655; Function Attrs: nounwind 656define 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, 256 660; CHECK-NEXT: lvl %s1 661; CHECK-NEXT: vbrd %v1, %s0 662; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 663; CHECK-NEXT: vfmk.s.nenan %vm1, %v0 664; CHECK-NEXT: b.l.t (, %s10) 665 %yins = insertelement <256 x float> undef, float %y, i32 0 666 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 667 %z = fcmp une <256 x float> %x, %vy 668 ret <256 x i1> %z 669} 670 671; Function Attrs: nounwind 672define 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, %vm0 676; CHECK-NEXT: b.l.t (, %s10) 677 %z = fcmp true <256 x float> %x, %y 678 ret <256 x i1> %z 679} 680 681; Function Attrs: nounwind 682define 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, %vm0 686; CHECK-NEXT: b.l.t (, %s10) 687 %xins = insertelement <256 x float> undef, float %x, i32 0 688 %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 689 %z = fcmp true <256 x float> %vx, %y 690 ret <256 x i1> %z 691} 692 693; Function Attrs: nounwind 694define 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, %vm0 698; CHECK-NEXT: b.l.t (, %s10) 699 %yins = insertelement <256 x float> undef, float %y, i32 0 700 %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 701 %z = fcmp true <256 x float> %x, %vy 702 ret <256 x i1> %z 703} 704