1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+v -target-abi=ilp32d \ 3; RUN: -verify-machineinstrs < %s | FileCheck %s 4; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+v -target-abi=lp64d \ 5; RUN: -verify-machineinstrs < %s | FileCheck %s 6 7declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half>, <vscale x 1 x half>, metadata, metadata) 8define <vscale x 1 x i1> @fcmps_oeq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 9; CHECK-LABEL: fcmps_oeq_vv_nxv1f16: 10; CHECK: # %bb.0: 11; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 12; CHECK-NEXT: vmfle.vv v10, v9, v8 13; CHECK-NEXT: vmfle.vv v8, v8, v9 14; CHECK-NEXT: vmand.mm v0, v8, v10 15; CHECK-NEXT: ret 16 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 17 ret <vscale x 1 x i1> %1 18} 19 20define <vscale x 1 x i1> @fcmps_oeq_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 21; CHECK-LABEL: fcmps_oeq_vf_nxv1f16: 22; CHECK: # %bb.0: 23; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 24; CHECK-NEXT: vmfge.vf v9, v8, fa0 25; CHECK-NEXT: vmfle.vf v8, v8, fa0 26; CHECK-NEXT: vmand.mm v0, v8, v9 27; CHECK-NEXT: ret 28 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 29 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 30 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 31 ret <vscale x 1 x i1> %1 32} 33 34define <vscale x 1 x i1> @fcmps_oeq_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 35; CHECK-LABEL: fcmps_oeq_fv_nxv1f16: 36; CHECK: # %bb.0: 37; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 38; CHECK-NEXT: vmfle.vf v9, v8, fa0 39; CHECK-NEXT: vmfge.vf v8, v8, fa0 40; CHECK-NEXT: vmand.mm v0, v8, v9 41; CHECK-NEXT: ret 42 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 43 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 44 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 45 ret <vscale x 1 x i1> %1 46} 47 48define <vscale x 1 x i1> @fcmps_ogt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 49; CHECK-LABEL: fcmps_ogt_vv_nxv1f16: 50; CHECK: # %bb.0: 51; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 52; CHECK-NEXT: vmflt.vv v0, v9, v8 53; CHECK-NEXT: ret 54 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 55 ret <vscale x 1 x i1> %1 56} 57 58define <vscale x 1 x i1> @fcmps_ogt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 59; CHECK-LABEL: fcmps_ogt_vf_nxv1f16: 60; CHECK: # %bb.0: 61; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 62; CHECK-NEXT: vmfgt.vf v0, v8, fa0 63; CHECK-NEXT: ret 64 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 65 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 66 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 67 ret <vscale x 1 x i1> %1 68} 69 70define <vscale x 1 x i1> @fcmps_ogt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 71; CHECK-LABEL: fcmps_ogt_fv_nxv1f16: 72; CHECK: # %bb.0: 73; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 74; CHECK-NEXT: vmflt.vf v0, v8, fa0 75; CHECK-NEXT: ret 76 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 77 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 78 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 79 ret <vscale x 1 x i1> %1 80} 81 82define <vscale x 1 x i1> @fcmps_oge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 83; CHECK-LABEL: fcmps_oge_vv_nxv1f16: 84; CHECK: # %bb.0: 85; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 86; CHECK-NEXT: vmfle.vv v0, v9, v8 87; CHECK-NEXT: ret 88 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 89 ret <vscale x 1 x i1> %1 90} 91 92define <vscale x 1 x i1> @fcmps_oge_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 93; CHECK-LABEL: fcmps_oge_vf_nxv1f16: 94; CHECK: # %bb.0: 95; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 96; CHECK-NEXT: vmfge.vf v0, v8, fa0 97; CHECK-NEXT: ret 98 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 99 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 100 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 101 ret <vscale x 1 x i1> %1 102} 103 104define <vscale x 1 x i1> @fcmps_oge_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 105; CHECK-LABEL: fcmps_oge_fv_nxv1f16: 106; CHECK: # %bb.0: 107; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 108; CHECK-NEXT: vmfle.vf v0, v8, fa0 109; CHECK-NEXT: ret 110 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 111 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 112 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 113 ret <vscale x 1 x i1> %1 114} 115 116define <vscale x 1 x i1> @fcmps_olt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 117; CHECK-LABEL: fcmps_olt_vv_nxv1f16: 118; CHECK: # %bb.0: 119; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 120; CHECK-NEXT: vmflt.vv v0, v8, v9 121; CHECK-NEXT: ret 122 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 123 ret <vscale x 1 x i1> %1 124} 125 126define <vscale x 1 x i1> @fcmps_olt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 127; CHECK-LABEL: fcmps_olt_vf_nxv1f16: 128; CHECK: # %bb.0: 129; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 130; CHECK-NEXT: vmflt.vf v0, v8, fa0 131; CHECK-NEXT: ret 132 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 133 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 134 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 135 ret <vscale x 1 x i1> %1 136} 137 138define <vscale x 1 x i1> @fcmps_olt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 139; CHECK-LABEL: fcmps_olt_fv_nxv1f16: 140; CHECK: # %bb.0: 141; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 142; CHECK-NEXT: vmfgt.vf v0, v8, fa0 143; CHECK-NEXT: ret 144 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 145 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 146 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 147 ret <vscale x 1 x i1> %1 148} 149 150define <vscale x 1 x i1> @fcmps_ole_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 151; CHECK-LABEL: fcmps_ole_vv_nxv1f16: 152; CHECK: # %bb.0: 153; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 154; CHECK-NEXT: vmfle.vv v0, v8, v9 155; CHECK-NEXT: ret 156 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 157 ret <vscale x 1 x i1> %1 158} 159 160define <vscale x 1 x i1> @fcmps_ole_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 161; CHECK-LABEL: fcmps_ole_vf_nxv1f16: 162; CHECK: # %bb.0: 163; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 164; CHECK-NEXT: vmfle.vf v0, v8, fa0 165; CHECK-NEXT: ret 166 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 167 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 168 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 169 ret <vscale x 1 x i1> %1 170} 171 172define <vscale x 1 x i1> @fcmps_ole_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 173; CHECK-LABEL: fcmps_ole_fv_nxv1f16: 174; CHECK: # %bb.0: 175; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 176; CHECK-NEXT: vmfge.vf v0, v8, fa0 177; CHECK-NEXT: ret 178 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 179 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 180 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 181 ret <vscale x 1 x i1> %1 182} 183 184define <vscale x 1 x i1> @fcmps_one_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 185; CHECK-LABEL: fcmps_one_vv_nxv1f16: 186; CHECK: # %bb.0: 187; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 188; CHECK-NEXT: vmflt.vv v10, v8, v9 189; CHECK-NEXT: vmflt.vv v8, v9, v8 190; CHECK-NEXT: vmor.mm v0, v8, v10 191; CHECK-NEXT: ret 192 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 193 ret <vscale x 1 x i1> %1 194} 195 196define <vscale x 1 x i1> @fcmps_one_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 197; CHECK-LABEL: fcmps_one_vf_nxv1f16: 198; CHECK: # %bb.0: 199; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 200; CHECK-NEXT: vmflt.vf v9, v8, fa0 201; CHECK-NEXT: vmfgt.vf v8, v8, fa0 202; CHECK-NEXT: vmor.mm v0, v8, v9 203; CHECK-NEXT: ret 204 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 205 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 206 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 207 ret <vscale x 1 x i1> %1 208} 209 210define <vscale x 1 x i1> @fcmps_one_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 211; CHECK-LABEL: fcmps_one_fv_nxv1f16: 212; CHECK: # %bb.0: 213; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 214; CHECK-NEXT: vmfgt.vf v9, v8, fa0 215; CHECK-NEXT: vmflt.vf v8, v8, fa0 216; CHECK-NEXT: vmor.mm v0, v8, v9 217; CHECK-NEXT: ret 218 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 219 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 220 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 221 ret <vscale x 1 x i1> %1 222} 223 224define <vscale x 1 x i1> @fcmps_ord_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 225; CHECK-LABEL: fcmps_ord_vv_nxv1f16: 226; CHECK: # %bb.0: 227; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 228; CHECK-NEXT: vmfle.vv v9, v9, v9 229; CHECK-NEXT: vmfle.vv v8, v8, v8 230; CHECK-NEXT: vmand.mm v0, v8, v9 231; CHECK-NEXT: ret 232 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 233 ret <vscale x 1 x i1> %1 234} 235 236define <vscale x 1 x i1> @fcmps_ord_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 237; CHECK-LABEL: fcmps_ord_vf_nxv1f16: 238; CHECK: # %bb.0: 239; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 240; CHECK-NEXT: vfmv.v.f v9, fa0 241; CHECK-NEXT: vmfle.vf v9, v9, fa0 242; CHECK-NEXT: vmfle.vv v8, v8, v8 243; CHECK-NEXT: vmand.mm v0, v8, v9 244; CHECK-NEXT: ret 245 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 246 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 247 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 248 ret <vscale x 1 x i1> %1 249} 250 251define <vscale x 1 x i1> @fcmps_ord_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 252; CHECK-LABEL: fcmps_ord_fv_nxv1f16: 253; CHECK: # %bb.0: 254; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 255; CHECK-NEXT: vfmv.v.f v9, fa0 256; CHECK-NEXT: vmfle.vf v9, v9, fa0 257; CHECK-NEXT: vmfle.vv v8, v8, v8 258; CHECK-NEXT: vmand.mm v0, v9, v8 259; CHECK-NEXT: ret 260 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 261 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 262 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 263 ret <vscale x 1 x i1> %1 264} 265 266define <vscale x 1 x i1> @fcmps_ueq_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 267; CHECK-LABEL: fcmps_ueq_vv_nxv1f16: 268; CHECK: # %bb.0: 269; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 270; CHECK-NEXT: vmflt.vv v10, v8, v9 271; CHECK-NEXT: vmflt.vv v8, v9, v8 272; CHECK-NEXT: vmnor.mm v0, v8, v10 273; CHECK-NEXT: ret 274 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 275 ret <vscale x 1 x i1> %1 276} 277 278define <vscale x 1 x i1> @fcmps_ueq_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 279; CHECK-LABEL: fcmps_ueq_vf_nxv1f16: 280; CHECK: # %bb.0: 281; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 282; CHECK-NEXT: vmflt.vf v9, v8, fa0 283; CHECK-NEXT: vmfgt.vf v8, v8, fa0 284; CHECK-NEXT: vmnor.mm v0, v8, v9 285; CHECK-NEXT: ret 286 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 287 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 288 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 289 ret <vscale x 1 x i1> %1 290} 291 292define <vscale x 1 x i1> @fcmps_ueq_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 293; CHECK-LABEL: fcmps_ueq_fv_nxv1f16: 294; CHECK: # %bb.0: 295; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 296; CHECK-NEXT: vmfgt.vf v9, v8, fa0 297; CHECK-NEXT: vmflt.vf v8, v8, fa0 298; CHECK-NEXT: vmnor.mm v0, v8, v9 299; CHECK-NEXT: ret 300 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 301 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 302 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 303 ret <vscale x 1 x i1> %1 304} 305 306define <vscale x 1 x i1> @fcmps_ugt_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 307; CHECK-LABEL: fcmps_ugt_vv_nxv1f16: 308; CHECK: # %bb.0: 309; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 310; CHECK-NEXT: vmfle.vv v8, v8, v9 311; CHECK-NEXT: vmnot.m v0, v8 312; CHECK-NEXT: ret 313 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 314 ret <vscale x 1 x i1> %1 315} 316 317define <vscale x 1 x i1> @fcmps_ugt_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 318; CHECK-LABEL: fcmps_ugt_vf_nxv1f16: 319; CHECK: # %bb.0: 320; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 321; CHECK-NEXT: vmfle.vf v8, v8, fa0 322; CHECK-NEXT: vmnot.m v0, v8 323; CHECK-NEXT: ret 324 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 325 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 326 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 327 ret <vscale x 1 x i1> %1 328} 329 330define <vscale x 1 x i1> @fcmps_ugt_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 331; CHECK-LABEL: fcmps_ugt_fv_nxv1f16: 332; CHECK: # %bb.0: 333; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 334; CHECK-NEXT: vmfge.vf v8, v8, fa0 335; CHECK-NEXT: vmnot.m v0, v8 336; CHECK-NEXT: ret 337 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 338 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 339 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 340 ret <vscale x 1 x i1> %1 341} 342 343define <vscale x 1 x i1> @fcmps_uge_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 344; CHECK-LABEL: fcmps_uge_vv_nxv1f16: 345; CHECK: # %bb.0: 346; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 347; CHECK-NEXT: vmflt.vv v8, v8, v9 348; CHECK-NEXT: vmnot.m v0, v8 349; CHECK-NEXT: ret 350 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 351 ret <vscale x 1 x i1> %1 352} 353 354define <vscale x 1 x i1> @fcmps_uge_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 355; CHECK-LABEL: fcmps_uge_vf_nxv1f16: 356; CHECK: # %bb.0: 357; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 358; CHECK-NEXT: vmflt.vf v8, v8, fa0 359; CHECK-NEXT: vmnot.m v0, v8 360; CHECK-NEXT: ret 361 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 362 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 363 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 364 ret <vscale x 1 x i1> %1 365} 366 367define <vscale x 1 x i1> @fcmps_uge_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 368; CHECK-LABEL: fcmps_uge_fv_nxv1f16: 369; CHECK: # %bb.0: 370; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 371; CHECK-NEXT: vmfgt.vf v8, v8, fa0 372; CHECK-NEXT: vmnot.m v0, v8 373; CHECK-NEXT: ret 374 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 375 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 376 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 377 ret <vscale x 1 x i1> %1 378} 379 380define <vscale x 1 x i1> @fcmps_ult_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 381; CHECK-LABEL: fcmps_ult_vv_nxv1f16: 382; CHECK: # %bb.0: 383; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 384; CHECK-NEXT: vmfle.vv v8, v9, v8 385; CHECK-NEXT: vmnot.m v0, v8 386; CHECK-NEXT: ret 387 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 388 ret <vscale x 1 x i1> %1 389} 390 391define <vscale x 1 x i1> @fcmps_ult_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 392; CHECK-LABEL: fcmps_ult_vf_nxv1f16: 393; CHECK: # %bb.0: 394; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 395; CHECK-NEXT: vmfge.vf v8, v8, fa0 396; CHECK-NEXT: vmnot.m v0, v8 397; CHECK-NEXT: ret 398 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 399 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 400 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 401 ret <vscale x 1 x i1> %1 402} 403 404define <vscale x 1 x i1> @fcmps_ult_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 405; CHECK-LABEL: fcmps_ult_fv_nxv1f16: 406; CHECK: # %bb.0: 407; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 408; CHECK-NEXT: vmfle.vf v8, v8, fa0 409; CHECK-NEXT: vmnot.m v0, v8 410; CHECK-NEXT: ret 411 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 412 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 413 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 414 ret <vscale x 1 x i1> %1 415} 416 417define <vscale x 1 x i1> @fcmps_ule_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 418; CHECK-LABEL: fcmps_ule_vv_nxv1f16: 419; CHECK: # %bb.0: 420; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 421; CHECK-NEXT: vmflt.vv v8, v9, v8 422; CHECK-NEXT: vmnot.m v0, v8 423; CHECK-NEXT: ret 424 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 425 ret <vscale x 1 x i1> %1 426} 427 428define <vscale x 1 x i1> @fcmps_ule_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 429; CHECK-LABEL: fcmps_ule_vf_nxv1f16: 430; CHECK: # %bb.0: 431; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 432; CHECK-NEXT: vmfgt.vf v8, v8, fa0 433; CHECK-NEXT: vmnot.m v0, v8 434; CHECK-NEXT: ret 435 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 436 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 437 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 438 ret <vscale x 1 x i1> %1 439} 440 441define <vscale x 1 x i1> @fcmps_ule_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 442; CHECK-LABEL: fcmps_ule_fv_nxv1f16: 443; CHECK: # %bb.0: 444; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 445; CHECK-NEXT: vmflt.vf v8, v8, fa0 446; CHECK-NEXT: vmnot.m v0, v8 447; CHECK-NEXT: ret 448 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 449 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 450 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 451 ret <vscale x 1 x i1> %1 452} 453 454define <vscale x 1 x i1> @fcmps_une_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 455; CHECK-LABEL: fcmps_une_vv_nxv1f16: 456; CHECK: # %bb.0: 457; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 458; CHECK-NEXT: vmfle.vv v10, v9, v8 459; CHECK-NEXT: vmfle.vv v8, v8, v9 460; CHECK-NEXT: vmnand.mm v0, v8, v10 461; CHECK-NEXT: ret 462 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 463 ret <vscale x 1 x i1> %1 464} 465 466define <vscale x 1 x i1> @fcmps_une_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 467; CHECK-LABEL: fcmps_une_vf_nxv1f16: 468; CHECK: # %bb.0: 469; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 470; CHECK-NEXT: vmfge.vf v9, v8, fa0 471; CHECK-NEXT: vmfle.vf v8, v8, fa0 472; CHECK-NEXT: vmnand.mm v0, v8, v9 473; CHECK-NEXT: ret 474 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 475 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 476 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 477 ret <vscale x 1 x i1> %1 478} 479 480define <vscale x 1 x i1> @fcmps_une_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 481; CHECK-LABEL: fcmps_une_fv_nxv1f16: 482; CHECK: # %bb.0: 483; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 484; CHECK-NEXT: vmfle.vf v9, v8, fa0 485; CHECK-NEXT: vmfge.vf v8, v8, fa0 486; CHECK-NEXT: vmnand.mm v0, v8, v9 487; CHECK-NEXT: ret 488 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 489 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 490 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 491 ret <vscale x 1 x i1> %1 492} 493 494define <vscale x 1 x i1> @fcmps_uno_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb) nounwind strictfp { 495; CHECK-LABEL: fcmps_uno_vv_nxv1f16: 496; CHECK: # %bb.0: 497; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 498; CHECK-NEXT: vmfle.vv v9, v9, v9 499; CHECK-NEXT: vmfle.vv v8, v8, v8 500; CHECK-NEXT: vmnot.m v8, v8 501; CHECK-NEXT: vmorn.mm v0, v8, v9 502; CHECK-NEXT: ret 503 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 504 ret <vscale x 1 x i1> %1 505} 506 507define <vscale x 1 x i1> @fcmps_uno_vf_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 508; CHECK-LABEL: fcmps_uno_vf_nxv1f16: 509; CHECK: # %bb.0: 510; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 511; CHECK-NEXT: vfmv.v.f v9, fa0 512; CHECK-NEXT: vmfle.vv v8, v8, v8 513; CHECK-NEXT: vmfle.vf v9, v9, fa0 514; CHECK-NEXT: vmnot.m v8, v8 515; CHECK-NEXT: vmorn.mm v0, v8, v9 516; CHECK-NEXT: ret 517 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 518 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 519 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %va, <vscale x 1 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 520 ret <vscale x 1 x i1> %1 521} 522 523define <vscale x 1 x i1> @fcmps_uno_fv_nxv1f16(<vscale x 1 x half> %va, half %b) nounwind strictfp { 524; CHECK-LABEL: fcmps_uno_fv_nxv1f16: 525; CHECK: # %bb.0: 526; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, ma 527; CHECK-NEXT: vfmv.v.f v9, fa0 528; CHECK-NEXT: vmfle.vf v9, v9, fa0 529; CHECK-NEXT: vmnot.m v9, v9 530; CHECK-NEXT: vmfle.vv v8, v8, v8 531; CHECK-NEXT: vmorn.mm v0, v9, v8 532; CHECK-NEXT: ret 533 %head = insertelement <vscale x 1 x half> poison, half %b, i32 0 534 %splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer 535 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f16(<vscale x 1 x half> %splat, <vscale x 1 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 536 ret <vscale x 1 x i1> %1 537} 538 539declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>, metadata, metadata) 540define <vscale x 2 x i1> @fcmps_oeq_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 541; CHECK-LABEL: fcmps_oeq_vv_nxv2f16: 542; CHECK: # %bb.0: 543; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 544; CHECK-NEXT: vmfle.vv v10, v9, v8 545; CHECK-NEXT: vmfle.vv v8, v8, v9 546; CHECK-NEXT: vmand.mm v0, v8, v10 547; CHECK-NEXT: ret 548 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 549 ret <vscale x 2 x i1> %1 550} 551 552define <vscale x 2 x i1> @fcmps_oeq_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 553; CHECK-LABEL: fcmps_oeq_vf_nxv2f16: 554; CHECK: # %bb.0: 555; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 556; CHECK-NEXT: vmfge.vf v9, v8, fa0 557; CHECK-NEXT: vmfle.vf v8, v8, fa0 558; CHECK-NEXT: vmand.mm v0, v8, v9 559; CHECK-NEXT: ret 560 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 561 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 562 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 563 ret <vscale x 2 x i1> %1 564} 565 566define <vscale x 2 x i1> @fcmps_oeq_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 567; CHECK-LABEL: fcmps_oeq_fv_nxv2f16: 568; CHECK: # %bb.0: 569; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 570; CHECK-NEXT: vmfle.vf v9, v8, fa0 571; CHECK-NEXT: vmfge.vf v8, v8, fa0 572; CHECK-NEXT: vmand.mm v0, v8, v9 573; CHECK-NEXT: ret 574 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 575 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 576 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 577 ret <vscale x 2 x i1> %1 578} 579 580define <vscale x 2 x i1> @fcmps_ogt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 581; CHECK-LABEL: fcmps_ogt_vv_nxv2f16: 582; CHECK: # %bb.0: 583; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 584; CHECK-NEXT: vmflt.vv v0, v9, v8 585; CHECK-NEXT: ret 586 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 587 ret <vscale x 2 x i1> %1 588} 589 590define <vscale x 2 x i1> @fcmps_ogt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 591; CHECK-LABEL: fcmps_ogt_vf_nxv2f16: 592; CHECK: # %bb.0: 593; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 594; CHECK-NEXT: vmfgt.vf v0, v8, fa0 595; CHECK-NEXT: ret 596 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 597 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 598 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 599 ret <vscale x 2 x i1> %1 600} 601 602define <vscale x 2 x i1> @fcmps_ogt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 603; CHECK-LABEL: fcmps_ogt_fv_nxv2f16: 604; CHECK: # %bb.0: 605; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 606; CHECK-NEXT: vmflt.vf v0, v8, fa0 607; CHECK-NEXT: ret 608 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 609 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 610 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 611 ret <vscale x 2 x i1> %1 612} 613 614define <vscale x 2 x i1> @fcmps_oge_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 615; CHECK-LABEL: fcmps_oge_vv_nxv2f16: 616; CHECK: # %bb.0: 617; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 618; CHECK-NEXT: vmfle.vv v0, v9, v8 619; CHECK-NEXT: ret 620 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 621 ret <vscale x 2 x i1> %1 622} 623 624define <vscale x 2 x i1> @fcmps_oge_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 625; CHECK-LABEL: fcmps_oge_vf_nxv2f16: 626; CHECK: # %bb.0: 627; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 628; CHECK-NEXT: vmfge.vf v0, v8, fa0 629; CHECK-NEXT: ret 630 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 631 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 632 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 633 ret <vscale x 2 x i1> %1 634} 635 636define <vscale x 2 x i1> @fcmps_oge_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 637; CHECK-LABEL: fcmps_oge_fv_nxv2f16: 638; CHECK: # %bb.0: 639; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 640; CHECK-NEXT: vmfle.vf v0, v8, fa0 641; CHECK-NEXT: ret 642 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 643 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 644 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 645 ret <vscale x 2 x i1> %1 646} 647 648define <vscale x 2 x i1> @fcmps_olt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 649; CHECK-LABEL: fcmps_olt_vv_nxv2f16: 650; CHECK: # %bb.0: 651; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 652; CHECK-NEXT: vmflt.vv v0, v8, v9 653; CHECK-NEXT: ret 654 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 655 ret <vscale x 2 x i1> %1 656} 657 658define <vscale x 2 x i1> @fcmps_olt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 659; CHECK-LABEL: fcmps_olt_vf_nxv2f16: 660; CHECK: # %bb.0: 661; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 662; CHECK-NEXT: vmflt.vf v0, v8, fa0 663; CHECK-NEXT: ret 664 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 665 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 666 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 667 ret <vscale x 2 x i1> %1 668} 669 670define <vscale x 2 x i1> @fcmps_olt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 671; CHECK-LABEL: fcmps_olt_fv_nxv2f16: 672; CHECK: # %bb.0: 673; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 674; CHECK-NEXT: vmfgt.vf v0, v8, fa0 675; CHECK-NEXT: ret 676 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 677 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 678 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 679 ret <vscale x 2 x i1> %1 680} 681 682define <vscale x 2 x i1> @fcmps_ole_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 683; CHECK-LABEL: fcmps_ole_vv_nxv2f16: 684; CHECK: # %bb.0: 685; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 686; CHECK-NEXT: vmfle.vv v0, v8, v9 687; CHECK-NEXT: ret 688 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 689 ret <vscale x 2 x i1> %1 690} 691 692define <vscale x 2 x i1> @fcmps_ole_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 693; CHECK-LABEL: fcmps_ole_vf_nxv2f16: 694; CHECK: # %bb.0: 695; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 696; CHECK-NEXT: vmfle.vf v0, v8, fa0 697; CHECK-NEXT: ret 698 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 699 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 700 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 701 ret <vscale x 2 x i1> %1 702} 703 704define <vscale x 2 x i1> @fcmps_ole_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 705; CHECK-LABEL: fcmps_ole_fv_nxv2f16: 706; CHECK: # %bb.0: 707; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 708; CHECK-NEXT: vmfge.vf v0, v8, fa0 709; CHECK-NEXT: ret 710 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 711 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 712 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 713 ret <vscale x 2 x i1> %1 714} 715 716define <vscale x 2 x i1> @fcmps_one_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 717; CHECK-LABEL: fcmps_one_vv_nxv2f16: 718; CHECK: # %bb.0: 719; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 720; CHECK-NEXT: vmflt.vv v10, v8, v9 721; CHECK-NEXT: vmflt.vv v8, v9, v8 722; CHECK-NEXT: vmor.mm v0, v8, v10 723; CHECK-NEXT: ret 724 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 725 ret <vscale x 2 x i1> %1 726} 727 728define <vscale x 2 x i1> @fcmps_one_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 729; CHECK-LABEL: fcmps_one_vf_nxv2f16: 730; CHECK: # %bb.0: 731; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 732; CHECK-NEXT: vmflt.vf v9, v8, fa0 733; CHECK-NEXT: vmfgt.vf v8, v8, fa0 734; CHECK-NEXT: vmor.mm v0, v8, v9 735; CHECK-NEXT: ret 736 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 737 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 738 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 739 ret <vscale x 2 x i1> %1 740} 741 742define <vscale x 2 x i1> @fcmps_one_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 743; CHECK-LABEL: fcmps_one_fv_nxv2f16: 744; CHECK: # %bb.0: 745; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 746; CHECK-NEXT: vmfgt.vf v9, v8, fa0 747; CHECK-NEXT: vmflt.vf v8, v8, fa0 748; CHECK-NEXT: vmor.mm v0, v8, v9 749; CHECK-NEXT: ret 750 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 751 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 752 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 753 ret <vscale x 2 x i1> %1 754} 755 756define <vscale x 2 x i1> @fcmps_ord_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 757; CHECK-LABEL: fcmps_ord_vv_nxv2f16: 758; CHECK: # %bb.0: 759; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 760; CHECK-NEXT: vmfle.vv v9, v9, v9 761; CHECK-NEXT: vmfle.vv v8, v8, v8 762; CHECK-NEXT: vmand.mm v0, v8, v9 763; CHECK-NEXT: ret 764 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 765 ret <vscale x 2 x i1> %1 766} 767 768define <vscale x 2 x i1> @fcmps_ord_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 769; CHECK-LABEL: fcmps_ord_vf_nxv2f16: 770; CHECK: # %bb.0: 771; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 772; CHECK-NEXT: vfmv.v.f v9, fa0 773; CHECK-NEXT: vmfle.vf v9, v9, fa0 774; CHECK-NEXT: vmfle.vv v8, v8, v8 775; CHECK-NEXT: vmand.mm v0, v8, v9 776; CHECK-NEXT: ret 777 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 778 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 779 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 780 ret <vscale x 2 x i1> %1 781} 782 783define <vscale x 2 x i1> @fcmps_ord_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 784; CHECK-LABEL: fcmps_ord_fv_nxv2f16: 785; CHECK: # %bb.0: 786; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 787; CHECK-NEXT: vfmv.v.f v9, fa0 788; CHECK-NEXT: vmfle.vf v9, v9, fa0 789; CHECK-NEXT: vmfle.vv v8, v8, v8 790; CHECK-NEXT: vmand.mm v0, v9, v8 791; CHECK-NEXT: ret 792 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 793 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 794 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 795 ret <vscale x 2 x i1> %1 796} 797 798define <vscale x 2 x i1> @fcmps_ueq_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 799; CHECK-LABEL: fcmps_ueq_vv_nxv2f16: 800; CHECK: # %bb.0: 801; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 802; CHECK-NEXT: vmflt.vv v10, v8, v9 803; CHECK-NEXT: vmflt.vv v8, v9, v8 804; CHECK-NEXT: vmnor.mm v0, v8, v10 805; CHECK-NEXT: ret 806 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 807 ret <vscale x 2 x i1> %1 808} 809 810define <vscale x 2 x i1> @fcmps_ueq_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 811; CHECK-LABEL: fcmps_ueq_vf_nxv2f16: 812; CHECK: # %bb.0: 813; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 814; CHECK-NEXT: vmflt.vf v9, v8, fa0 815; CHECK-NEXT: vmfgt.vf v8, v8, fa0 816; CHECK-NEXT: vmnor.mm v0, v8, v9 817; CHECK-NEXT: ret 818 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 819 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 820 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 821 ret <vscale x 2 x i1> %1 822} 823 824define <vscale x 2 x i1> @fcmps_ueq_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 825; CHECK-LABEL: fcmps_ueq_fv_nxv2f16: 826; CHECK: # %bb.0: 827; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 828; CHECK-NEXT: vmfgt.vf v9, v8, fa0 829; CHECK-NEXT: vmflt.vf v8, v8, fa0 830; CHECK-NEXT: vmnor.mm v0, v8, v9 831; CHECK-NEXT: ret 832 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 833 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 834 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 835 ret <vscale x 2 x i1> %1 836} 837 838define <vscale x 2 x i1> @fcmps_ugt_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 839; CHECK-LABEL: fcmps_ugt_vv_nxv2f16: 840; CHECK: # %bb.0: 841; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 842; CHECK-NEXT: vmfle.vv v8, v8, v9 843; CHECK-NEXT: vmnot.m v0, v8 844; CHECK-NEXT: ret 845 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 846 ret <vscale x 2 x i1> %1 847} 848 849define <vscale x 2 x i1> @fcmps_ugt_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 850; CHECK-LABEL: fcmps_ugt_vf_nxv2f16: 851; CHECK: # %bb.0: 852; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 853; CHECK-NEXT: vmfle.vf v8, v8, fa0 854; CHECK-NEXT: vmnot.m v0, v8 855; CHECK-NEXT: ret 856 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 857 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 858 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 859 ret <vscale x 2 x i1> %1 860} 861 862define <vscale x 2 x i1> @fcmps_ugt_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 863; CHECK-LABEL: fcmps_ugt_fv_nxv2f16: 864; CHECK: # %bb.0: 865; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 866; CHECK-NEXT: vmfge.vf v8, v8, fa0 867; CHECK-NEXT: vmnot.m v0, v8 868; CHECK-NEXT: ret 869 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 870 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 871 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 872 ret <vscale x 2 x i1> %1 873} 874 875define <vscale x 2 x i1> @fcmps_uge_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 876; CHECK-LABEL: fcmps_uge_vv_nxv2f16: 877; CHECK: # %bb.0: 878; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 879; CHECK-NEXT: vmflt.vv v8, v8, v9 880; CHECK-NEXT: vmnot.m v0, v8 881; CHECK-NEXT: ret 882 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 883 ret <vscale x 2 x i1> %1 884} 885 886define <vscale x 2 x i1> @fcmps_uge_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 887; CHECK-LABEL: fcmps_uge_vf_nxv2f16: 888; CHECK: # %bb.0: 889; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 890; CHECK-NEXT: vmflt.vf v8, v8, fa0 891; CHECK-NEXT: vmnot.m v0, v8 892; CHECK-NEXT: ret 893 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 894 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 895 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 896 ret <vscale x 2 x i1> %1 897} 898 899define <vscale x 2 x i1> @fcmps_uge_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 900; CHECK-LABEL: fcmps_uge_fv_nxv2f16: 901; CHECK: # %bb.0: 902; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 903; CHECK-NEXT: vmfgt.vf v8, v8, fa0 904; CHECK-NEXT: vmnot.m v0, v8 905; CHECK-NEXT: ret 906 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 907 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 908 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 909 ret <vscale x 2 x i1> %1 910} 911 912define <vscale x 2 x i1> @fcmps_ult_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 913; CHECK-LABEL: fcmps_ult_vv_nxv2f16: 914; CHECK: # %bb.0: 915; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 916; CHECK-NEXT: vmfle.vv v8, v9, v8 917; CHECK-NEXT: vmnot.m v0, v8 918; CHECK-NEXT: ret 919 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 920 ret <vscale x 2 x i1> %1 921} 922 923define <vscale x 2 x i1> @fcmps_ult_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 924; CHECK-LABEL: fcmps_ult_vf_nxv2f16: 925; CHECK: # %bb.0: 926; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 927; CHECK-NEXT: vmfge.vf v8, v8, fa0 928; CHECK-NEXT: vmnot.m v0, v8 929; CHECK-NEXT: ret 930 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 931 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 932 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 933 ret <vscale x 2 x i1> %1 934} 935 936define <vscale x 2 x i1> @fcmps_ult_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 937; CHECK-LABEL: fcmps_ult_fv_nxv2f16: 938; CHECK: # %bb.0: 939; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 940; CHECK-NEXT: vmfle.vf v8, v8, fa0 941; CHECK-NEXT: vmnot.m v0, v8 942; CHECK-NEXT: ret 943 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 944 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 945 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 946 ret <vscale x 2 x i1> %1 947} 948 949define <vscale x 2 x i1> @fcmps_ule_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 950; CHECK-LABEL: fcmps_ule_vv_nxv2f16: 951; CHECK: # %bb.0: 952; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 953; CHECK-NEXT: vmflt.vv v8, v9, v8 954; CHECK-NEXT: vmnot.m v0, v8 955; CHECK-NEXT: ret 956 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 957 ret <vscale x 2 x i1> %1 958} 959 960define <vscale x 2 x i1> @fcmps_ule_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 961; CHECK-LABEL: fcmps_ule_vf_nxv2f16: 962; CHECK: # %bb.0: 963; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 964; CHECK-NEXT: vmfgt.vf v8, v8, fa0 965; CHECK-NEXT: vmnot.m v0, v8 966; CHECK-NEXT: ret 967 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 968 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 969 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 970 ret <vscale x 2 x i1> %1 971} 972 973define <vscale x 2 x i1> @fcmps_ule_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 974; CHECK-LABEL: fcmps_ule_fv_nxv2f16: 975; CHECK: # %bb.0: 976; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 977; CHECK-NEXT: vmflt.vf v8, v8, fa0 978; CHECK-NEXT: vmnot.m v0, v8 979; CHECK-NEXT: ret 980 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 981 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 982 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 983 ret <vscale x 2 x i1> %1 984} 985 986define <vscale x 2 x i1> @fcmps_une_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 987; CHECK-LABEL: fcmps_une_vv_nxv2f16: 988; CHECK: # %bb.0: 989; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 990; CHECK-NEXT: vmfle.vv v10, v9, v8 991; CHECK-NEXT: vmfle.vv v8, v8, v9 992; CHECK-NEXT: vmnand.mm v0, v8, v10 993; CHECK-NEXT: ret 994 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 995 ret <vscale x 2 x i1> %1 996} 997 998define <vscale x 2 x i1> @fcmps_une_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 999; CHECK-LABEL: fcmps_une_vf_nxv2f16: 1000; CHECK: # %bb.0: 1001; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 1002; CHECK-NEXT: vmfge.vf v9, v8, fa0 1003; CHECK-NEXT: vmfle.vf v8, v8, fa0 1004; CHECK-NEXT: vmnand.mm v0, v8, v9 1005; CHECK-NEXT: ret 1006 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 1007 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 1008 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 1009 ret <vscale x 2 x i1> %1 1010} 1011 1012define <vscale x 2 x i1> @fcmps_une_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 1013; CHECK-LABEL: fcmps_une_fv_nxv2f16: 1014; CHECK: # %bb.0: 1015; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 1016; CHECK-NEXT: vmfle.vf v9, v8, fa0 1017; CHECK-NEXT: vmfge.vf v8, v8, fa0 1018; CHECK-NEXT: vmnand.mm v0, v8, v9 1019; CHECK-NEXT: ret 1020 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 1021 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 1022 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 1023 ret <vscale x 2 x i1> %1 1024} 1025 1026define <vscale x 2 x i1> @fcmps_uno_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb) nounwind strictfp { 1027; CHECK-LABEL: fcmps_uno_vv_nxv2f16: 1028; CHECK: # %bb.0: 1029; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 1030; CHECK-NEXT: vmfle.vv v9, v9, v9 1031; CHECK-NEXT: vmfle.vv v8, v8, v8 1032; CHECK-NEXT: vmnot.m v8, v8 1033; CHECK-NEXT: vmorn.mm v0, v8, v9 1034; CHECK-NEXT: ret 1035 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 1036 ret <vscale x 2 x i1> %1 1037} 1038 1039define <vscale x 2 x i1> @fcmps_uno_vf_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 1040; CHECK-LABEL: fcmps_uno_vf_nxv2f16: 1041; CHECK: # %bb.0: 1042; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 1043; CHECK-NEXT: vfmv.v.f v9, fa0 1044; CHECK-NEXT: vmfle.vv v8, v8, v8 1045; CHECK-NEXT: vmfle.vf v9, v9, fa0 1046; CHECK-NEXT: vmnot.m v8, v8 1047; CHECK-NEXT: vmorn.mm v0, v8, v9 1048; CHECK-NEXT: ret 1049 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 1050 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 1051 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %va, <vscale x 2 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 1052 ret <vscale x 2 x i1> %1 1053} 1054 1055define <vscale x 2 x i1> @fcmps_uno_fv_nxv2f16(<vscale x 2 x half> %va, half %b) nounwind strictfp { 1056; CHECK-LABEL: fcmps_uno_fv_nxv2f16: 1057; CHECK: # %bb.0: 1058; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, ma 1059; CHECK-NEXT: vfmv.v.f v9, fa0 1060; CHECK-NEXT: vmfle.vf v9, v9, fa0 1061; CHECK-NEXT: vmnot.m v9, v9 1062; CHECK-NEXT: vmfle.vv v8, v8, v8 1063; CHECK-NEXT: vmorn.mm v0, v9, v8 1064; CHECK-NEXT: ret 1065 %head = insertelement <vscale x 2 x half> poison, half %b, i32 0 1066 %splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer 1067 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f16(<vscale x 2 x half> %splat, <vscale x 2 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 1068 ret <vscale x 2 x i1> %1 1069} 1070 1071declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>, metadata, metadata) 1072define <vscale x 4 x i1> @fcmps_oeq_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1073; CHECK-LABEL: fcmps_oeq_vv_nxv4f16: 1074; CHECK: # %bb.0: 1075; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1076; CHECK-NEXT: vmfle.vv v10, v9, v8 1077; CHECK-NEXT: vmfle.vv v8, v8, v9 1078; CHECK-NEXT: vmand.mm v0, v8, v10 1079; CHECK-NEXT: ret 1080 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 1081 ret <vscale x 4 x i1> %1 1082} 1083 1084define <vscale x 4 x i1> @fcmps_oeq_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1085; CHECK-LABEL: fcmps_oeq_vf_nxv4f16: 1086; CHECK: # %bb.0: 1087; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1088; CHECK-NEXT: vmfge.vf v9, v8, fa0 1089; CHECK-NEXT: vmfle.vf v8, v8, fa0 1090; CHECK-NEXT: vmand.mm v0, v8, v9 1091; CHECK-NEXT: ret 1092 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1093 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1094 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 1095 ret <vscale x 4 x i1> %1 1096} 1097 1098define <vscale x 4 x i1> @fcmps_oeq_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1099; CHECK-LABEL: fcmps_oeq_fv_nxv4f16: 1100; CHECK: # %bb.0: 1101; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1102; CHECK-NEXT: vmfle.vf v9, v8, fa0 1103; CHECK-NEXT: vmfge.vf v8, v8, fa0 1104; CHECK-NEXT: vmand.mm v0, v8, v9 1105; CHECK-NEXT: ret 1106 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1107 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1108 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 1109 ret <vscale x 4 x i1> %1 1110} 1111 1112define <vscale x 4 x i1> @fcmps_ogt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1113; CHECK-LABEL: fcmps_ogt_vv_nxv4f16: 1114; CHECK: # %bb.0: 1115; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1116; CHECK-NEXT: vmflt.vv v0, v9, v8 1117; CHECK-NEXT: ret 1118 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 1119 ret <vscale x 4 x i1> %1 1120} 1121 1122define <vscale x 4 x i1> @fcmps_ogt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1123; CHECK-LABEL: fcmps_ogt_vf_nxv4f16: 1124; CHECK: # %bb.0: 1125; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1126; CHECK-NEXT: vmfgt.vf v0, v8, fa0 1127; CHECK-NEXT: ret 1128 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1129 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1130 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 1131 ret <vscale x 4 x i1> %1 1132} 1133 1134define <vscale x 4 x i1> @fcmps_ogt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1135; CHECK-LABEL: fcmps_ogt_fv_nxv4f16: 1136; CHECK: # %bb.0: 1137; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1138; CHECK-NEXT: vmflt.vf v0, v8, fa0 1139; CHECK-NEXT: ret 1140 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1141 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1142 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 1143 ret <vscale x 4 x i1> %1 1144} 1145 1146define <vscale x 4 x i1> @fcmps_oge_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1147; CHECK-LABEL: fcmps_oge_vv_nxv4f16: 1148; CHECK: # %bb.0: 1149; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1150; CHECK-NEXT: vmfle.vv v0, v9, v8 1151; CHECK-NEXT: ret 1152 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 1153 ret <vscale x 4 x i1> %1 1154} 1155 1156define <vscale x 4 x i1> @fcmps_oge_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1157; CHECK-LABEL: fcmps_oge_vf_nxv4f16: 1158; CHECK: # %bb.0: 1159; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1160; CHECK-NEXT: vmfge.vf v0, v8, fa0 1161; CHECK-NEXT: ret 1162 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1163 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1164 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 1165 ret <vscale x 4 x i1> %1 1166} 1167 1168define <vscale x 4 x i1> @fcmps_oge_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1169; CHECK-LABEL: fcmps_oge_fv_nxv4f16: 1170; CHECK: # %bb.0: 1171; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1172; CHECK-NEXT: vmfle.vf v0, v8, fa0 1173; CHECK-NEXT: ret 1174 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1175 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1176 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 1177 ret <vscale x 4 x i1> %1 1178} 1179 1180define <vscale x 4 x i1> @fcmps_olt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1181; CHECK-LABEL: fcmps_olt_vv_nxv4f16: 1182; CHECK: # %bb.0: 1183; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1184; CHECK-NEXT: vmflt.vv v0, v8, v9 1185; CHECK-NEXT: ret 1186 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 1187 ret <vscale x 4 x i1> %1 1188} 1189 1190define <vscale x 4 x i1> @fcmps_olt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1191; CHECK-LABEL: fcmps_olt_vf_nxv4f16: 1192; CHECK: # %bb.0: 1193; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1194; CHECK-NEXT: vmflt.vf v0, v8, fa0 1195; CHECK-NEXT: ret 1196 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1197 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1198 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 1199 ret <vscale x 4 x i1> %1 1200} 1201 1202define <vscale x 4 x i1> @fcmps_olt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1203; CHECK-LABEL: fcmps_olt_fv_nxv4f16: 1204; CHECK: # %bb.0: 1205; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1206; CHECK-NEXT: vmfgt.vf v0, v8, fa0 1207; CHECK-NEXT: ret 1208 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1209 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1210 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 1211 ret <vscale x 4 x i1> %1 1212} 1213 1214define <vscale x 4 x i1> @fcmps_ole_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1215; CHECK-LABEL: fcmps_ole_vv_nxv4f16: 1216; CHECK: # %bb.0: 1217; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1218; CHECK-NEXT: vmfle.vv v0, v8, v9 1219; CHECK-NEXT: ret 1220 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 1221 ret <vscale x 4 x i1> %1 1222} 1223 1224define <vscale x 4 x i1> @fcmps_ole_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1225; CHECK-LABEL: fcmps_ole_vf_nxv4f16: 1226; CHECK: # %bb.0: 1227; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1228; CHECK-NEXT: vmfle.vf v0, v8, fa0 1229; CHECK-NEXT: ret 1230 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1231 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1232 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 1233 ret <vscale x 4 x i1> %1 1234} 1235 1236define <vscale x 4 x i1> @fcmps_ole_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1237; CHECK-LABEL: fcmps_ole_fv_nxv4f16: 1238; CHECK: # %bb.0: 1239; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1240; CHECK-NEXT: vmfge.vf v0, v8, fa0 1241; CHECK-NEXT: ret 1242 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1243 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1244 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 1245 ret <vscale x 4 x i1> %1 1246} 1247 1248define <vscale x 4 x i1> @fcmps_one_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1249; CHECK-LABEL: fcmps_one_vv_nxv4f16: 1250; CHECK: # %bb.0: 1251; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1252; CHECK-NEXT: vmflt.vv v10, v8, v9 1253; CHECK-NEXT: vmflt.vv v8, v9, v8 1254; CHECK-NEXT: vmor.mm v0, v8, v10 1255; CHECK-NEXT: ret 1256 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 1257 ret <vscale x 4 x i1> %1 1258} 1259 1260define <vscale x 4 x i1> @fcmps_one_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1261; CHECK-LABEL: fcmps_one_vf_nxv4f16: 1262; CHECK: # %bb.0: 1263; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1264; CHECK-NEXT: vmflt.vf v9, v8, fa0 1265; CHECK-NEXT: vmfgt.vf v8, v8, fa0 1266; CHECK-NEXT: vmor.mm v0, v8, v9 1267; CHECK-NEXT: ret 1268 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1269 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1270 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 1271 ret <vscale x 4 x i1> %1 1272} 1273 1274define <vscale x 4 x i1> @fcmps_one_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1275; CHECK-LABEL: fcmps_one_fv_nxv4f16: 1276; CHECK: # %bb.0: 1277; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1278; CHECK-NEXT: vmfgt.vf v9, v8, fa0 1279; CHECK-NEXT: vmflt.vf v8, v8, fa0 1280; CHECK-NEXT: vmor.mm v0, v8, v9 1281; CHECK-NEXT: ret 1282 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1283 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1284 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 1285 ret <vscale x 4 x i1> %1 1286} 1287 1288define <vscale x 4 x i1> @fcmps_ord_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1289; CHECK-LABEL: fcmps_ord_vv_nxv4f16: 1290; CHECK: # %bb.0: 1291; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1292; CHECK-NEXT: vmfle.vv v9, v9, v9 1293; CHECK-NEXT: vmfle.vv v8, v8, v8 1294; CHECK-NEXT: vmand.mm v0, v8, v9 1295; CHECK-NEXT: ret 1296 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 1297 ret <vscale x 4 x i1> %1 1298} 1299 1300define <vscale x 4 x i1> @fcmps_ord_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1301; CHECK-LABEL: fcmps_ord_vf_nxv4f16: 1302; CHECK: # %bb.0: 1303; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1304; CHECK-NEXT: vfmv.v.f v9, fa0 1305; CHECK-NEXT: vmfle.vf v9, v9, fa0 1306; CHECK-NEXT: vmfle.vv v8, v8, v8 1307; CHECK-NEXT: vmand.mm v0, v8, v9 1308; CHECK-NEXT: ret 1309 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1310 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1311 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 1312 ret <vscale x 4 x i1> %1 1313} 1314 1315define <vscale x 4 x i1> @fcmps_ord_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1316; CHECK-LABEL: fcmps_ord_fv_nxv4f16: 1317; CHECK: # %bb.0: 1318; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1319; CHECK-NEXT: vfmv.v.f v9, fa0 1320; CHECK-NEXT: vmfle.vf v9, v9, fa0 1321; CHECK-NEXT: vmfle.vv v8, v8, v8 1322; CHECK-NEXT: vmand.mm v0, v9, v8 1323; CHECK-NEXT: ret 1324 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1325 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1326 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 1327 ret <vscale x 4 x i1> %1 1328} 1329 1330define <vscale x 4 x i1> @fcmps_ueq_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1331; CHECK-LABEL: fcmps_ueq_vv_nxv4f16: 1332; CHECK: # %bb.0: 1333; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1334; CHECK-NEXT: vmflt.vv v10, v8, v9 1335; CHECK-NEXT: vmflt.vv v8, v9, v8 1336; CHECK-NEXT: vmnor.mm v0, v8, v10 1337; CHECK-NEXT: ret 1338 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 1339 ret <vscale x 4 x i1> %1 1340} 1341 1342define <vscale x 4 x i1> @fcmps_ueq_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1343; CHECK-LABEL: fcmps_ueq_vf_nxv4f16: 1344; CHECK: # %bb.0: 1345; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1346; CHECK-NEXT: vmflt.vf v9, v8, fa0 1347; CHECK-NEXT: vmfgt.vf v8, v8, fa0 1348; CHECK-NEXT: vmnor.mm v0, v8, v9 1349; CHECK-NEXT: ret 1350 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1351 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1352 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 1353 ret <vscale x 4 x i1> %1 1354} 1355 1356define <vscale x 4 x i1> @fcmps_ueq_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1357; CHECK-LABEL: fcmps_ueq_fv_nxv4f16: 1358; CHECK: # %bb.0: 1359; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1360; CHECK-NEXT: vmfgt.vf v9, v8, fa0 1361; CHECK-NEXT: vmflt.vf v8, v8, fa0 1362; CHECK-NEXT: vmnor.mm v0, v8, v9 1363; CHECK-NEXT: ret 1364 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1365 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1366 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 1367 ret <vscale x 4 x i1> %1 1368} 1369 1370define <vscale x 4 x i1> @fcmps_ugt_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1371; CHECK-LABEL: fcmps_ugt_vv_nxv4f16: 1372; CHECK: # %bb.0: 1373; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1374; CHECK-NEXT: vmfle.vv v8, v8, v9 1375; CHECK-NEXT: vmnot.m v0, v8 1376; CHECK-NEXT: ret 1377 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 1378 ret <vscale x 4 x i1> %1 1379} 1380 1381define <vscale x 4 x i1> @fcmps_ugt_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1382; CHECK-LABEL: fcmps_ugt_vf_nxv4f16: 1383; CHECK: # %bb.0: 1384; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1385; CHECK-NEXT: vmfle.vf v8, v8, fa0 1386; CHECK-NEXT: vmnot.m v0, v8 1387; CHECK-NEXT: ret 1388 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1389 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1390 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 1391 ret <vscale x 4 x i1> %1 1392} 1393 1394define <vscale x 4 x i1> @fcmps_ugt_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1395; CHECK-LABEL: fcmps_ugt_fv_nxv4f16: 1396; CHECK: # %bb.0: 1397; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1398; CHECK-NEXT: vmfge.vf v8, v8, fa0 1399; CHECK-NEXT: vmnot.m v0, v8 1400; CHECK-NEXT: ret 1401 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1402 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1403 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 1404 ret <vscale x 4 x i1> %1 1405} 1406 1407define <vscale x 4 x i1> @fcmps_uge_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1408; CHECK-LABEL: fcmps_uge_vv_nxv4f16: 1409; CHECK: # %bb.0: 1410; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1411; CHECK-NEXT: vmflt.vv v8, v8, v9 1412; CHECK-NEXT: vmnot.m v0, v8 1413; CHECK-NEXT: ret 1414 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 1415 ret <vscale x 4 x i1> %1 1416} 1417 1418define <vscale x 4 x i1> @fcmps_uge_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1419; CHECK-LABEL: fcmps_uge_vf_nxv4f16: 1420; CHECK: # %bb.0: 1421; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1422; CHECK-NEXT: vmflt.vf v8, v8, fa0 1423; CHECK-NEXT: vmnot.m v0, v8 1424; CHECK-NEXT: ret 1425 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1426 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1427 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 1428 ret <vscale x 4 x i1> %1 1429} 1430 1431define <vscale x 4 x i1> @fcmps_uge_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1432; CHECK-LABEL: fcmps_uge_fv_nxv4f16: 1433; CHECK: # %bb.0: 1434; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1435; CHECK-NEXT: vmfgt.vf v8, v8, fa0 1436; CHECK-NEXT: vmnot.m v0, v8 1437; CHECK-NEXT: ret 1438 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1439 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1440 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 1441 ret <vscale x 4 x i1> %1 1442} 1443 1444define <vscale x 4 x i1> @fcmps_ult_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1445; CHECK-LABEL: fcmps_ult_vv_nxv4f16: 1446; CHECK: # %bb.0: 1447; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1448; CHECK-NEXT: vmfle.vv v8, v9, v8 1449; CHECK-NEXT: vmnot.m v0, v8 1450; CHECK-NEXT: ret 1451 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 1452 ret <vscale x 4 x i1> %1 1453} 1454 1455define <vscale x 4 x i1> @fcmps_ult_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1456; CHECK-LABEL: fcmps_ult_vf_nxv4f16: 1457; CHECK: # %bb.0: 1458; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1459; CHECK-NEXT: vmfge.vf v8, v8, fa0 1460; CHECK-NEXT: vmnot.m v0, v8 1461; CHECK-NEXT: ret 1462 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1463 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1464 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 1465 ret <vscale x 4 x i1> %1 1466} 1467 1468define <vscale x 4 x i1> @fcmps_ult_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1469; CHECK-LABEL: fcmps_ult_fv_nxv4f16: 1470; CHECK: # %bb.0: 1471; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1472; CHECK-NEXT: vmfle.vf v8, v8, fa0 1473; CHECK-NEXT: vmnot.m v0, v8 1474; CHECK-NEXT: ret 1475 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1476 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1477 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 1478 ret <vscale x 4 x i1> %1 1479} 1480 1481define <vscale x 4 x i1> @fcmps_ule_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1482; CHECK-LABEL: fcmps_ule_vv_nxv4f16: 1483; CHECK: # %bb.0: 1484; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1485; CHECK-NEXT: vmflt.vv v8, v9, v8 1486; CHECK-NEXT: vmnot.m v0, v8 1487; CHECK-NEXT: ret 1488 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 1489 ret <vscale x 4 x i1> %1 1490} 1491 1492define <vscale x 4 x i1> @fcmps_ule_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1493; CHECK-LABEL: fcmps_ule_vf_nxv4f16: 1494; CHECK: # %bb.0: 1495; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1496; CHECK-NEXT: vmfgt.vf v8, v8, fa0 1497; CHECK-NEXT: vmnot.m v0, v8 1498; CHECK-NEXT: ret 1499 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1500 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1501 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 1502 ret <vscale x 4 x i1> %1 1503} 1504 1505define <vscale x 4 x i1> @fcmps_ule_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1506; CHECK-LABEL: fcmps_ule_fv_nxv4f16: 1507; CHECK: # %bb.0: 1508; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1509; CHECK-NEXT: vmflt.vf v8, v8, fa0 1510; CHECK-NEXT: vmnot.m v0, v8 1511; CHECK-NEXT: ret 1512 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1513 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1514 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 1515 ret <vscale x 4 x i1> %1 1516} 1517 1518define <vscale x 4 x i1> @fcmps_une_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1519; CHECK-LABEL: fcmps_une_vv_nxv4f16: 1520; CHECK: # %bb.0: 1521; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1522; CHECK-NEXT: vmfle.vv v10, v9, v8 1523; CHECK-NEXT: vmfle.vv v8, v8, v9 1524; CHECK-NEXT: vmnand.mm v0, v8, v10 1525; CHECK-NEXT: ret 1526 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 1527 ret <vscale x 4 x i1> %1 1528} 1529 1530define <vscale x 4 x i1> @fcmps_une_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1531; CHECK-LABEL: fcmps_une_vf_nxv4f16: 1532; CHECK: # %bb.0: 1533; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1534; CHECK-NEXT: vmfge.vf v9, v8, fa0 1535; CHECK-NEXT: vmfle.vf v8, v8, fa0 1536; CHECK-NEXT: vmnand.mm v0, v8, v9 1537; CHECK-NEXT: ret 1538 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1539 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1540 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 1541 ret <vscale x 4 x i1> %1 1542} 1543 1544define <vscale x 4 x i1> @fcmps_une_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1545; CHECK-LABEL: fcmps_une_fv_nxv4f16: 1546; CHECK: # %bb.0: 1547; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1548; CHECK-NEXT: vmfle.vf v9, v8, fa0 1549; CHECK-NEXT: vmfge.vf v8, v8, fa0 1550; CHECK-NEXT: vmnand.mm v0, v8, v9 1551; CHECK-NEXT: ret 1552 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1553 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1554 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 1555 ret <vscale x 4 x i1> %1 1556} 1557 1558define <vscale x 4 x i1> @fcmps_uno_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb) nounwind strictfp { 1559; CHECK-LABEL: fcmps_uno_vv_nxv4f16: 1560; CHECK: # %bb.0: 1561; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1562; CHECK-NEXT: vmfle.vv v9, v9, v9 1563; CHECK-NEXT: vmfle.vv v8, v8, v8 1564; CHECK-NEXT: vmnot.m v8, v8 1565; CHECK-NEXT: vmorn.mm v0, v8, v9 1566; CHECK-NEXT: ret 1567 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 1568 ret <vscale x 4 x i1> %1 1569} 1570 1571define <vscale x 4 x i1> @fcmps_uno_vf_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1572; CHECK-LABEL: fcmps_uno_vf_nxv4f16: 1573; CHECK: # %bb.0: 1574; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1575; CHECK-NEXT: vfmv.v.f v9, fa0 1576; CHECK-NEXT: vmfle.vv v8, v8, v8 1577; CHECK-NEXT: vmfle.vf v9, v9, fa0 1578; CHECK-NEXT: vmnot.m v8, v8 1579; CHECK-NEXT: vmorn.mm v0, v8, v9 1580; CHECK-NEXT: ret 1581 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1582 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1583 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %va, <vscale x 4 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 1584 ret <vscale x 4 x i1> %1 1585} 1586 1587define <vscale x 4 x i1> @fcmps_uno_fv_nxv4f16(<vscale x 4 x half> %va, half %b) nounwind strictfp { 1588; CHECK-LABEL: fcmps_uno_fv_nxv4f16: 1589; CHECK: # %bb.0: 1590; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, ma 1591; CHECK-NEXT: vfmv.v.f v9, fa0 1592; CHECK-NEXT: vmfle.vf v9, v9, fa0 1593; CHECK-NEXT: vmnot.m v9, v9 1594; CHECK-NEXT: vmfle.vv v8, v8, v8 1595; CHECK-NEXT: vmorn.mm v0, v9, v8 1596; CHECK-NEXT: ret 1597 %head = insertelement <vscale x 4 x half> poison, half %b, i32 0 1598 %splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer 1599 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f16(<vscale x 4 x half> %splat, <vscale x 4 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 1600 ret <vscale x 4 x i1> %1 1601} 1602 1603declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>, metadata, metadata) 1604define <vscale x 8 x i1> @fcmps_oeq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 1605; CHECK-LABEL: fcmps_oeq_vv_nxv8f16: 1606; CHECK: # %bb.0: 1607; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1608; CHECK-NEXT: vmfle.vv v12, v10, v8 1609; CHECK-NEXT: vmfle.vv v13, v8, v10 1610; CHECK-NEXT: vmand.mm v0, v13, v12 1611; CHECK-NEXT: ret 1612 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 1613 ret <vscale x 8 x i1> %1 1614} 1615 1616define <vscale x 8 x i1> @fcmps_oeq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1617; CHECK-LABEL: fcmps_oeq_vf_nxv8f16: 1618; CHECK: # %bb.0: 1619; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1620; CHECK-NEXT: vmfge.vf v10, v8, fa0 1621; CHECK-NEXT: vmfle.vf v11, v8, fa0 1622; CHECK-NEXT: vmand.mm v0, v11, v10 1623; CHECK-NEXT: ret 1624 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1625 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1626 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 1627 ret <vscale x 8 x i1> %1 1628} 1629 1630define <vscale x 8 x i1> @fcmps_oeq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1631; CHECK-LABEL: fcmps_oeq_fv_nxv8f16: 1632; CHECK: # %bb.0: 1633; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1634; CHECK-NEXT: vmfle.vf v10, v8, fa0 1635; CHECK-NEXT: vmfge.vf v11, v8, fa0 1636; CHECK-NEXT: vmand.mm v0, v11, v10 1637; CHECK-NEXT: ret 1638 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1639 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1640 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 1641 ret <vscale x 8 x i1> %1 1642} 1643 1644define <vscale x 8 x i1> @fcmps_ogt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 1645; CHECK-LABEL: fcmps_ogt_vv_nxv8f16: 1646; CHECK: # %bb.0: 1647; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1648; CHECK-NEXT: vmflt.vv v0, v10, v8 1649; CHECK-NEXT: ret 1650 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 1651 ret <vscale x 8 x i1> %1 1652} 1653 1654define <vscale x 8 x i1> @fcmps_ogt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1655; CHECK-LABEL: fcmps_ogt_vf_nxv8f16: 1656; CHECK: # %bb.0: 1657; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1658; CHECK-NEXT: vmfgt.vf v0, v8, fa0 1659; CHECK-NEXT: ret 1660 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1661 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1662 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 1663 ret <vscale x 8 x i1> %1 1664} 1665 1666define <vscale x 8 x i1> @fcmps_ogt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1667; CHECK-LABEL: fcmps_ogt_fv_nxv8f16: 1668; CHECK: # %bb.0: 1669; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1670; CHECK-NEXT: vmflt.vf v0, v8, fa0 1671; CHECK-NEXT: ret 1672 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1673 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1674 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 1675 ret <vscale x 8 x i1> %1 1676} 1677 1678define <vscale x 8 x i1> @fcmps_oge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 1679; CHECK-LABEL: fcmps_oge_vv_nxv8f16: 1680; CHECK: # %bb.0: 1681; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1682; CHECK-NEXT: vmfle.vv v0, v10, v8 1683; CHECK-NEXT: ret 1684 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 1685 ret <vscale x 8 x i1> %1 1686} 1687 1688define <vscale x 8 x i1> @fcmps_oge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1689; CHECK-LABEL: fcmps_oge_vf_nxv8f16: 1690; CHECK: # %bb.0: 1691; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1692; CHECK-NEXT: vmfge.vf v0, v8, fa0 1693; CHECK-NEXT: ret 1694 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1695 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1696 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 1697 ret <vscale x 8 x i1> %1 1698} 1699 1700define <vscale x 8 x i1> @fcmps_oge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1701; CHECK-LABEL: fcmps_oge_fv_nxv8f16: 1702; CHECK: # %bb.0: 1703; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1704; CHECK-NEXT: vmfle.vf v0, v8, fa0 1705; CHECK-NEXT: ret 1706 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1707 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1708 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 1709 ret <vscale x 8 x i1> %1 1710} 1711 1712define <vscale x 8 x i1> @fcmps_olt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 1713; CHECK-LABEL: fcmps_olt_vv_nxv8f16: 1714; CHECK: # %bb.0: 1715; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1716; CHECK-NEXT: vmflt.vv v0, v8, v10 1717; CHECK-NEXT: ret 1718 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 1719 ret <vscale x 8 x i1> %1 1720} 1721 1722define <vscale x 8 x i1> @fcmps_olt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1723; CHECK-LABEL: fcmps_olt_vf_nxv8f16: 1724; CHECK: # %bb.0: 1725; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1726; CHECK-NEXT: vmflt.vf v0, v8, fa0 1727; CHECK-NEXT: ret 1728 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1729 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1730 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 1731 ret <vscale x 8 x i1> %1 1732} 1733 1734define <vscale x 8 x i1> @fcmps_olt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1735; CHECK-LABEL: fcmps_olt_fv_nxv8f16: 1736; CHECK: # %bb.0: 1737; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1738; CHECK-NEXT: vmfgt.vf v0, v8, fa0 1739; CHECK-NEXT: ret 1740 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1741 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1742 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 1743 ret <vscale x 8 x i1> %1 1744} 1745 1746define <vscale x 8 x i1> @fcmps_ole_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 1747; CHECK-LABEL: fcmps_ole_vv_nxv8f16: 1748; CHECK: # %bb.0: 1749; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1750; CHECK-NEXT: vmfle.vv v0, v8, v10 1751; CHECK-NEXT: ret 1752 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 1753 ret <vscale x 8 x i1> %1 1754} 1755 1756define <vscale x 8 x i1> @fcmps_ole_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1757; CHECK-LABEL: fcmps_ole_vf_nxv8f16: 1758; CHECK: # %bb.0: 1759; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1760; CHECK-NEXT: vmfle.vf v0, v8, fa0 1761; CHECK-NEXT: ret 1762 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1763 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1764 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 1765 ret <vscale x 8 x i1> %1 1766} 1767 1768define <vscale x 8 x i1> @fcmps_ole_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1769; CHECK-LABEL: fcmps_ole_fv_nxv8f16: 1770; CHECK: # %bb.0: 1771; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1772; CHECK-NEXT: vmfge.vf v0, v8, fa0 1773; CHECK-NEXT: ret 1774 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1775 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1776 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 1777 ret <vscale x 8 x i1> %1 1778} 1779 1780define <vscale x 8 x i1> @fcmps_one_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 1781; CHECK-LABEL: fcmps_one_vv_nxv8f16: 1782; CHECK: # %bb.0: 1783; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1784; CHECK-NEXT: vmflt.vv v12, v8, v10 1785; CHECK-NEXT: vmflt.vv v13, v10, v8 1786; CHECK-NEXT: vmor.mm v0, v13, v12 1787; CHECK-NEXT: ret 1788 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 1789 ret <vscale x 8 x i1> %1 1790} 1791 1792define <vscale x 8 x i1> @fcmps_one_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1793; CHECK-LABEL: fcmps_one_vf_nxv8f16: 1794; CHECK: # %bb.0: 1795; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1796; CHECK-NEXT: vmflt.vf v10, v8, fa0 1797; CHECK-NEXT: vmfgt.vf v11, v8, fa0 1798; CHECK-NEXT: vmor.mm v0, v11, v10 1799; CHECK-NEXT: ret 1800 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1801 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1802 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 1803 ret <vscale x 8 x i1> %1 1804} 1805 1806define <vscale x 8 x i1> @fcmps_one_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1807; CHECK-LABEL: fcmps_one_fv_nxv8f16: 1808; CHECK: # %bb.0: 1809; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1810; CHECK-NEXT: vmfgt.vf v10, v8, fa0 1811; CHECK-NEXT: vmflt.vf v11, v8, fa0 1812; CHECK-NEXT: vmor.mm v0, v11, v10 1813; CHECK-NEXT: ret 1814 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1815 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1816 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 1817 ret <vscale x 8 x i1> %1 1818} 1819 1820define <vscale x 8 x i1> @fcmps_ord_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 1821; CHECK-LABEL: fcmps_ord_vv_nxv8f16: 1822; CHECK: # %bb.0: 1823; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1824; CHECK-NEXT: vmfle.vv v12, v10, v10 1825; CHECK-NEXT: vmfle.vv v10, v8, v8 1826; CHECK-NEXT: vmand.mm v0, v10, v12 1827; CHECK-NEXT: ret 1828 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 1829 ret <vscale x 8 x i1> %1 1830} 1831 1832define <vscale x 8 x i1> @fcmps_ord_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1833; CHECK-LABEL: fcmps_ord_vf_nxv8f16: 1834; CHECK: # %bb.0: 1835; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1836; CHECK-NEXT: vfmv.v.f v10, fa0 1837; CHECK-NEXT: vmfle.vf v12, v10, fa0 1838; CHECK-NEXT: vmfle.vv v10, v8, v8 1839; CHECK-NEXT: vmand.mm v0, v10, v12 1840; CHECK-NEXT: ret 1841 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1842 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1843 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 1844 ret <vscale x 8 x i1> %1 1845} 1846 1847define <vscale x 8 x i1> @fcmps_ord_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1848; CHECK-LABEL: fcmps_ord_fv_nxv8f16: 1849; CHECK: # %bb.0: 1850; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1851; CHECK-NEXT: vfmv.v.f v10, fa0 1852; CHECK-NEXT: vmfle.vf v12, v10, fa0 1853; CHECK-NEXT: vmfle.vv v10, v8, v8 1854; CHECK-NEXT: vmand.mm v0, v12, v10 1855; CHECK-NEXT: ret 1856 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1857 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1858 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 1859 ret <vscale x 8 x i1> %1 1860} 1861 1862define <vscale x 8 x i1> @fcmps_ueq_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 1863; CHECK-LABEL: fcmps_ueq_vv_nxv8f16: 1864; CHECK: # %bb.0: 1865; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1866; CHECK-NEXT: vmflt.vv v12, v8, v10 1867; CHECK-NEXT: vmflt.vv v13, v10, v8 1868; CHECK-NEXT: vmnor.mm v0, v13, v12 1869; CHECK-NEXT: ret 1870 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 1871 ret <vscale x 8 x i1> %1 1872} 1873 1874define <vscale x 8 x i1> @fcmps_ueq_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1875; CHECK-LABEL: fcmps_ueq_vf_nxv8f16: 1876; CHECK: # %bb.0: 1877; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1878; CHECK-NEXT: vmflt.vf v10, v8, fa0 1879; CHECK-NEXT: vmfgt.vf v11, v8, fa0 1880; CHECK-NEXT: vmnor.mm v0, v11, v10 1881; CHECK-NEXT: ret 1882 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1883 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1884 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 1885 ret <vscale x 8 x i1> %1 1886} 1887 1888define <vscale x 8 x i1> @fcmps_ueq_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1889; CHECK-LABEL: fcmps_ueq_fv_nxv8f16: 1890; CHECK: # %bb.0: 1891; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1892; CHECK-NEXT: vmfgt.vf v10, v8, fa0 1893; CHECK-NEXT: vmflt.vf v11, v8, fa0 1894; CHECK-NEXT: vmnor.mm v0, v11, v10 1895; CHECK-NEXT: ret 1896 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1897 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1898 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 1899 ret <vscale x 8 x i1> %1 1900} 1901 1902define <vscale x 8 x i1> @fcmps_ugt_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 1903; CHECK-LABEL: fcmps_ugt_vv_nxv8f16: 1904; CHECK: # %bb.0: 1905; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1906; CHECK-NEXT: vmfle.vv v12, v8, v10 1907; CHECK-NEXT: vmnot.m v0, v12 1908; CHECK-NEXT: ret 1909 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 1910 ret <vscale x 8 x i1> %1 1911} 1912 1913define <vscale x 8 x i1> @fcmps_ugt_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1914; CHECK-LABEL: fcmps_ugt_vf_nxv8f16: 1915; CHECK: # %bb.0: 1916; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1917; CHECK-NEXT: vmfle.vf v10, v8, fa0 1918; CHECK-NEXT: vmnot.m v0, v10 1919; CHECK-NEXT: ret 1920 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1921 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1922 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 1923 ret <vscale x 8 x i1> %1 1924} 1925 1926define <vscale x 8 x i1> @fcmps_ugt_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1927; CHECK-LABEL: fcmps_ugt_fv_nxv8f16: 1928; CHECK: # %bb.0: 1929; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1930; CHECK-NEXT: vmfge.vf v10, v8, fa0 1931; CHECK-NEXT: vmnot.m v0, v10 1932; CHECK-NEXT: ret 1933 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1934 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1935 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 1936 ret <vscale x 8 x i1> %1 1937} 1938 1939define <vscale x 8 x i1> @fcmps_uge_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 1940; CHECK-LABEL: fcmps_uge_vv_nxv8f16: 1941; CHECK: # %bb.0: 1942; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1943; CHECK-NEXT: vmflt.vv v12, v8, v10 1944; CHECK-NEXT: vmnot.m v0, v12 1945; CHECK-NEXT: ret 1946 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 1947 ret <vscale x 8 x i1> %1 1948} 1949 1950define <vscale x 8 x i1> @fcmps_uge_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1951; CHECK-LABEL: fcmps_uge_vf_nxv8f16: 1952; CHECK: # %bb.0: 1953; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1954; CHECK-NEXT: vmflt.vf v10, v8, fa0 1955; CHECK-NEXT: vmnot.m v0, v10 1956; CHECK-NEXT: ret 1957 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1958 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1959 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 1960 ret <vscale x 8 x i1> %1 1961} 1962 1963define <vscale x 8 x i1> @fcmps_uge_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1964; CHECK-LABEL: fcmps_uge_fv_nxv8f16: 1965; CHECK: # %bb.0: 1966; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1967; CHECK-NEXT: vmfgt.vf v10, v8, fa0 1968; CHECK-NEXT: vmnot.m v0, v10 1969; CHECK-NEXT: ret 1970 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1971 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1972 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 1973 ret <vscale x 8 x i1> %1 1974} 1975 1976define <vscale x 8 x i1> @fcmps_ult_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 1977; CHECK-LABEL: fcmps_ult_vv_nxv8f16: 1978; CHECK: # %bb.0: 1979; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1980; CHECK-NEXT: vmfle.vv v12, v10, v8 1981; CHECK-NEXT: vmnot.m v0, v12 1982; CHECK-NEXT: ret 1983 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 1984 ret <vscale x 8 x i1> %1 1985} 1986 1987define <vscale x 8 x i1> @fcmps_ult_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 1988; CHECK-LABEL: fcmps_ult_vf_nxv8f16: 1989; CHECK: # %bb.0: 1990; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 1991; CHECK-NEXT: vmfge.vf v10, v8, fa0 1992; CHECK-NEXT: vmnot.m v0, v10 1993; CHECK-NEXT: ret 1994 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 1995 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 1996 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 1997 ret <vscale x 8 x i1> %1 1998} 1999 2000define <vscale x 8 x i1> @fcmps_ult_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 2001; CHECK-LABEL: fcmps_ult_fv_nxv8f16: 2002; CHECK: # %bb.0: 2003; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 2004; CHECK-NEXT: vmfle.vf v10, v8, fa0 2005; CHECK-NEXT: vmnot.m v0, v10 2006; CHECK-NEXT: ret 2007 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 2008 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 2009 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 2010 ret <vscale x 8 x i1> %1 2011} 2012 2013define <vscale x 8 x i1> @fcmps_ule_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 2014; CHECK-LABEL: fcmps_ule_vv_nxv8f16: 2015; CHECK: # %bb.0: 2016; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 2017; CHECK-NEXT: vmflt.vv v12, v10, v8 2018; CHECK-NEXT: vmnot.m v0, v12 2019; CHECK-NEXT: ret 2020 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 2021 ret <vscale x 8 x i1> %1 2022} 2023 2024define <vscale x 8 x i1> @fcmps_ule_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 2025; CHECK-LABEL: fcmps_ule_vf_nxv8f16: 2026; CHECK: # %bb.0: 2027; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 2028; CHECK-NEXT: vmfgt.vf v10, v8, fa0 2029; CHECK-NEXT: vmnot.m v0, v10 2030; CHECK-NEXT: ret 2031 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 2032 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 2033 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 2034 ret <vscale x 8 x i1> %1 2035} 2036 2037define <vscale x 8 x i1> @fcmps_ule_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 2038; CHECK-LABEL: fcmps_ule_fv_nxv8f16: 2039; CHECK: # %bb.0: 2040; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 2041; CHECK-NEXT: vmflt.vf v10, v8, fa0 2042; CHECK-NEXT: vmnot.m v0, v10 2043; CHECK-NEXT: ret 2044 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 2045 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 2046 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 2047 ret <vscale x 8 x i1> %1 2048} 2049 2050define <vscale x 8 x i1> @fcmps_une_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 2051; CHECK-LABEL: fcmps_une_vv_nxv8f16: 2052; CHECK: # %bb.0: 2053; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 2054; CHECK-NEXT: vmfle.vv v12, v10, v8 2055; CHECK-NEXT: vmfle.vv v13, v8, v10 2056; CHECK-NEXT: vmnand.mm v0, v13, v12 2057; CHECK-NEXT: ret 2058 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 2059 ret <vscale x 8 x i1> %1 2060} 2061 2062define <vscale x 8 x i1> @fcmps_une_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 2063; CHECK-LABEL: fcmps_une_vf_nxv8f16: 2064; CHECK: # %bb.0: 2065; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 2066; CHECK-NEXT: vmfge.vf v10, v8, fa0 2067; CHECK-NEXT: vmfle.vf v11, v8, fa0 2068; CHECK-NEXT: vmnand.mm v0, v11, v10 2069; CHECK-NEXT: ret 2070 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 2071 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 2072 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 2073 ret <vscale x 8 x i1> %1 2074} 2075 2076define <vscale x 8 x i1> @fcmps_une_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 2077; CHECK-LABEL: fcmps_une_fv_nxv8f16: 2078; CHECK: # %bb.0: 2079; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 2080; CHECK-NEXT: vmfle.vf v10, v8, fa0 2081; CHECK-NEXT: vmfge.vf v11, v8, fa0 2082; CHECK-NEXT: vmnand.mm v0, v11, v10 2083; CHECK-NEXT: ret 2084 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 2085 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 2086 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 2087 ret <vscale x 8 x i1> %1 2088} 2089 2090define <vscale x 8 x i1> @fcmps_uno_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb) nounwind strictfp { 2091; CHECK-LABEL: fcmps_uno_vv_nxv8f16: 2092; CHECK: # %bb.0: 2093; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 2094; CHECK-NEXT: vmfle.vv v12, v10, v10 2095; CHECK-NEXT: vmfle.vv v10, v8, v8 2096; CHECK-NEXT: vmnot.m v8, v10 2097; CHECK-NEXT: vmorn.mm v0, v8, v12 2098; CHECK-NEXT: ret 2099 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 2100 ret <vscale x 8 x i1> %1 2101} 2102 2103define <vscale x 8 x i1> @fcmps_uno_vf_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 2104; CHECK-LABEL: fcmps_uno_vf_nxv8f16: 2105; CHECK: # %bb.0: 2106; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 2107; CHECK-NEXT: vfmv.v.f v10, fa0 2108; CHECK-NEXT: vmfle.vv v12, v8, v8 2109; CHECK-NEXT: vmfle.vf v8, v10, fa0 2110; CHECK-NEXT: vmnot.m v9, v12 2111; CHECK-NEXT: vmorn.mm v0, v9, v8 2112; CHECK-NEXT: ret 2113 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 2114 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 2115 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %va, <vscale x 8 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 2116 ret <vscale x 8 x i1> %1 2117} 2118 2119define <vscale x 8 x i1> @fcmps_uno_fv_nxv8f16(<vscale x 8 x half> %va, half %b) nounwind strictfp { 2120; CHECK-LABEL: fcmps_uno_fv_nxv8f16: 2121; CHECK: # %bb.0: 2122; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, ma 2123; CHECK-NEXT: vfmv.v.f v10, fa0 2124; CHECK-NEXT: vmfle.vf v12, v10, fa0 2125; CHECK-NEXT: vmnot.m v10, v12 2126; CHECK-NEXT: vmfle.vv v11, v8, v8 2127; CHECK-NEXT: vmorn.mm v0, v10, v11 2128; CHECK-NEXT: ret 2129 %head = insertelement <vscale x 8 x half> poison, half %b, i32 0 2130 %splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer 2131 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f16(<vscale x 8 x half> %splat, <vscale x 8 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 2132 ret <vscale x 8 x i1> %1 2133} 2134 2135declare <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half>, <vscale x 16 x half>, metadata, metadata) 2136define <vscale x 16 x i1> @fcmps_oeq_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2137; CHECK-LABEL: fcmps_oeq_vv_nxv16f16: 2138; CHECK: # %bb.0: 2139; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2140; CHECK-NEXT: vmfle.vv v16, v12, v8 2141; CHECK-NEXT: vmfle.vv v17, v8, v12 2142; CHECK-NEXT: vmand.mm v0, v17, v16 2143; CHECK-NEXT: ret 2144 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 2145 ret <vscale x 16 x i1> %1 2146} 2147 2148define <vscale x 16 x i1> @fcmps_oeq_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2149; CHECK-LABEL: fcmps_oeq_vf_nxv16f16: 2150; CHECK: # %bb.0: 2151; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2152; CHECK-NEXT: vmfge.vf v12, v8, fa0 2153; CHECK-NEXT: vmfle.vf v13, v8, fa0 2154; CHECK-NEXT: vmand.mm v0, v13, v12 2155; CHECK-NEXT: ret 2156 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2157 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2158 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 2159 ret <vscale x 16 x i1> %1 2160} 2161 2162define <vscale x 16 x i1> @fcmps_oeq_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2163; CHECK-LABEL: fcmps_oeq_fv_nxv16f16: 2164; CHECK: # %bb.0: 2165; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2166; CHECK-NEXT: vmfle.vf v12, v8, fa0 2167; CHECK-NEXT: vmfge.vf v13, v8, fa0 2168; CHECK-NEXT: vmand.mm v0, v13, v12 2169; CHECK-NEXT: ret 2170 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2171 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2172 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 2173 ret <vscale x 16 x i1> %1 2174} 2175 2176define <vscale x 16 x i1> @fcmps_ogt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2177; CHECK-LABEL: fcmps_ogt_vv_nxv16f16: 2178; CHECK: # %bb.0: 2179; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2180; CHECK-NEXT: vmflt.vv v0, v12, v8 2181; CHECK-NEXT: ret 2182 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 2183 ret <vscale x 16 x i1> %1 2184} 2185 2186define <vscale x 16 x i1> @fcmps_ogt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2187; CHECK-LABEL: fcmps_ogt_vf_nxv16f16: 2188; CHECK: # %bb.0: 2189; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2190; CHECK-NEXT: vmfgt.vf v0, v8, fa0 2191; CHECK-NEXT: ret 2192 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2193 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2194 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 2195 ret <vscale x 16 x i1> %1 2196} 2197 2198define <vscale x 16 x i1> @fcmps_ogt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2199; CHECK-LABEL: fcmps_ogt_fv_nxv16f16: 2200; CHECK: # %bb.0: 2201; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2202; CHECK-NEXT: vmflt.vf v0, v8, fa0 2203; CHECK-NEXT: ret 2204 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2205 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2206 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 2207 ret <vscale x 16 x i1> %1 2208} 2209 2210define <vscale x 16 x i1> @fcmps_oge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2211; CHECK-LABEL: fcmps_oge_vv_nxv16f16: 2212; CHECK: # %bb.0: 2213; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2214; CHECK-NEXT: vmfle.vv v0, v12, v8 2215; CHECK-NEXT: ret 2216 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 2217 ret <vscale x 16 x i1> %1 2218} 2219 2220define <vscale x 16 x i1> @fcmps_oge_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2221; CHECK-LABEL: fcmps_oge_vf_nxv16f16: 2222; CHECK: # %bb.0: 2223; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2224; CHECK-NEXT: vmfge.vf v0, v8, fa0 2225; CHECK-NEXT: ret 2226 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2227 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2228 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 2229 ret <vscale x 16 x i1> %1 2230} 2231 2232define <vscale x 16 x i1> @fcmps_oge_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2233; CHECK-LABEL: fcmps_oge_fv_nxv16f16: 2234; CHECK: # %bb.0: 2235; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2236; CHECK-NEXT: vmfle.vf v0, v8, fa0 2237; CHECK-NEXT: ret 2238 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2239 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2240 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 2241 ret <vscale x 16 x i1> %1 2242} 2243 2244define <vscale x 16 x i1> @fcmps_olt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2245; CHECK-LABEL: fcmps_olt_vv_nxv16f16: 2246; CHECK: # %bb.0: 2247; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2248; CHECK-NEXT: vmflt.vv v0, v8, v12 2249; CHECK-NEXT: ret 2250 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 2251 ret <vscale x 16 x i1> %1 2252} 2253 2254define <vscale x 16 x i1> @fcmps_olt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2255; CHECK-LABEL: fcmps_olt_vf_nxv16f16: 2256; CHECK: # %bb.0: 2257; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2258; CHECK-NEXT: vmflt.vf v0, v8, fa0 2259; CHECK-NEXT: ret 2260 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2261 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2262 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 2263 ret <vscale x 16 x i1> %1 2264} 2265 2266define <vscale x 16 x i1> @fcmps_olt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2267; CHECK-LABEL: fcmps_olt_fv_nxv16f16: 2268; CHECK: # %bb.0: 2269; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2270; CHECK-NEXT: vmfgt.vf v0, v8, fa0 2271; CHECK-NEXT: ret 2272 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2273 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2274 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 2275 ret <vscale x 16 x i1> %1 2276} 2277 2278define <vscale x 16 x i1> @fcmps_ole_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2279; CHECK-LABEL: fcmps_ole_vv_nxv16f16: 2280; CHECK: # %bb.0: 2281; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2282; CHECK-NEXT: vmfle.vv v0, v8, v12 2283; CHECK-NEXT: ret 2284 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 2285 ret <vscale x 16 x i1> %1 2286} 2287 2288define <vscale x 16 x i1> @fcmps_ole_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2289; CHECK-LABEL: fcmps_ole_vf_nxv16f16: 2290; CHECK: # %bb.0: 2291; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2292; CHECK-NEXT: vmfle.vf v0, v8, fa0 2293; CHECK-NEXT: ret 2294 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2295 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2296 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 2297 ret <vscale x 16 x i1> %1 2298} 2299 2300define <vscale x 16 x i1> @fcmps_ole_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2301; CHECK-LABEL: fcmps_ole_fv_nxv16f16: 2302; CHECK: # %bb.0: 2303; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2304; CHECK-NEXT: vmfge.vf v0, v8, fa0 2305; CHECK-NEXT: ret 2306 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2307 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2308 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 2309 ret <vscale x 16 x i1> %1 2310} 2311 2312define <vscale x 16 x i1> @fcmps_one_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2313; CHECK-LABEL: fcmps_one_vv_nxv16f16: 2314; CHECK: # %bb.0: 2315; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2316; CHECK-NEXT: vmflt.vv v16, v8, v12 2317; CHECK-NEXT: vmflt.vv v17, v12, v8 2318; CHECK-NEXT: vmor.mm v0, v17, v16 2319; CHECK-NEXT: ret 2320 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 2321 ret <vscale x 16 x i1> %1 2322} 2323 2324define <vscale x 16 x i1> @fcmps_one_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2325; CHECK-LABEL: fcmps_one_vf_nxv16f16: 2326; CHECK: # %bb.0: 2327; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2328; CHECK-NEXT: vmflt.vf v12, v8, fa0 2329; CHECK-NEXT: vmfgt.vf v13, v8, fa0 2330; CHECK-NEXT: vmor.mm v0, v13, v12 2331; CHECK-NEXT: ret 2332 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2333 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2334 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 2335 ret <vscale x 16 x i1> %1 2336} 2337 2338define <vscale x 16 x i1> @fcmps_one_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2339; CHECK-LABEL: fcmps_one_fv_nxv16f16: 2340; CHECK: # %bb.0: 2341; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2342; CHECK-NEXT: vmfgt.vf v12, v8, fa0 2343; CHECK-NEXT: vmflt.vf v13, v8, fa0 2344; CHECK-NEXT: vmor.mm v0, v13, v12 2345; CHECK-NEXT: ret 2346 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2347 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2348 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 2349 ret <vscale x 16 x i1> %1 2350} 2351 2352define <vscale x 16 x i1> @fcmps_ord_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2353; CHECK-LABEL: fcmps_ord_vv_nxv16f16: 2354; CHECK: # %bb.0: 2355; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2356; CHECK-NEXT: vmfle.vv v16, v12, v12 2357; CHECK-NEXT: vmfle.vv v12, v8, v8 2358; CHECK-NEXT: vmand.mm v0, v12, v16 2359; CHECK-NEXT: ret 2360 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 2361 ret <vscale x 16 x i1> %1 2362} 2363 2364define <vscale x 16 x i1> @fcmps_ord_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2365; CHECK-LABEL: fcmps_ord_vf_nxv16f16: 2366; CHECK: # %bb.0: 2367; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2368; CHECK-NEXT: vfmv.v.f v12, fa0 2369; CHECK-NEXT: vmfle.vf v16, v12, fa0 2370; CHECK-NEXT: vmfle.vv v12, v8, v8 2371; CHECK-NEXT: vmand.mm v0, v12, v16 2372; CHECK-NEXT: ret 2373 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2374 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2375 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 2376 ret <vscale x 16 x i1> %1 2377} 2378 2379define <vscale x 16 x i1> @fcmps_ord_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2380; CHECK-LABEL: fcmps_ord_fv_nxv16f16: 2381; CHECK: # %bb.0: 2382; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2383; CHECK-NEXT: vfmv.v.f v12, fa0 2384; CHECK-NEXT: vmfle.vf v16, v12, fa0 2385; CHECK-NEXT: vmfle.vv v12, v8, v8 2386; CHECK-NEXT: vmand.mm v0, v16, v12 2387; CHECK-NEXT: ret 2388 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2389 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2390 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 2391 ret <vscale x 16 x i1> %1 2392} 2393 2394define <vscale x 16 x i1> @fcmps_ueq_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2395; CHECK-LABEL: fcmps_ueq_vv_nxv16f16: 2396; CHECK: # %bb.0: 2397; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2398; CHECK-NEXT: vmflt.vv v16, v8, v12 2399; CHECK-NEXT: vmflt.vv v17, v12, v8 2400; CHECK-NEXT: vmnor.mm v0, v17, v16 2401; CHECK-NEXT: ret 2402 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 2403 ret <vscale x 16 x i1> %1 2404} 2405 2406define <vscale x 16 x i1> @fcmps_ueq_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2407; CHECK-LABEL: fcmps_ueq_vf_nxv16f16: 2408; CHECK: # %bb.0: 2409; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2410; CHECK-NEXT: vmflt.vf v12, v8, fa0 2411; CHECK-NEXT: vmfgt.vf v13, v8, fa0 2412; CHECK-NEXT: vmnor.mm v0, v13, v12 2413; CHECK-NEXT: ret 2414 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2415 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2416 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 2417 ret <vscale x 16 x i1> %1 2418} 2419 2420define <vscale x 16 x i1> @fcmps_ueq_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2421; CHECK-LABEL: fcmps_ueq_fv_nxv16f16: 2422; CHECK: # %bb.0: 2423; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2424; CHECK-NEXT: vmfgt.vf v12, v8, fa0 2425; CHECK-NEXT: vmflt.vf v13, v8, fa0 2426; CHECK-NEXT: vmnor.mm v0, v13, v12 2427; CHECK-NEXT: ret 2428 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2429 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2430 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 2431 ret <vscale x 16 x i1> %1 2432} 2433 2434define <vscale x 16 x i1> @fcmps_ugt_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2435; CHECK-LABEL: fcmps_ugt_vv_nxv16f16: 2436; CHECK: # %bb.0: 2437; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2438; CHECK-NEXT: vmfle.vv v16, v8, v12 2439; CHECK-NEXT: vmnot.m v0, v16 2440; CHECK-NEXT: ret 2441 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 2442 ret <vscale x 16 x i1> %1 2443} 2444 2445define <vscale x 16 x i1> @fcmps_ugt_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2446; CHECK-LABEL: fcmps_ugt_vf_nxv16f16: 2447; CHECK: # %bb.0: 2448; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2449; CHECK-NEXT: vmfle.vf v12, v8, fa0 2450; CHECK-NEXT: vmnot.m v0, v12 2451; CHECK-NEXT: ret 2452 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2453 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2454 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 2455 ret <vscale x 16 x i1> %1 2456} 2457 2458define <vscale x 16 x i1> @fcmps_ugt_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2459; CHECK-LABEL: fcmps_ugt_fv_nxv16f16: 2460; CHECK: # %bb.0: 2461; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2462; CHECK-NEXT: vmfge.vf v12, v8, fa0 2463; CHECK-NEXT: vmnot.m v0, v12 2464; CHECK-NEXT: ret 2465 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2466 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2467 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 2468 ret <vscale x 16 x i1> %1 2469} 2470 2471define <vscale x 16 x i1> @fcmps_uge_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2472; CHECK-LABEL: fcmps_uge_vv_nxv16f16: 2473; CHECK: # %bb.0: 2474; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2475; CHECK-NEXT: vmflt.vv v16, v8, v12 2476; CHECK-NEXT: vmnot.m v0, v16 2477; CHECK-NEXT: ret 2478 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 2479 ret <vscale x 16 x i1> %1 2480} 2481 2482define <vscale x 16 x i1> @fcmps_uge_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2483; CHECK-LABEL: fcmps_uge_vf_nxv16f16: 2484; CHECK: # %bb.0: 2485; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2486; CHECK-NEXT: vmflt.vf v12, v8, fa0 2487; CHECK-NEXT: vmnot.m v0, v12 2488; CHECK-NEXT: ret 2489 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2490 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2491 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 2492 ret <vscale x 16 x i1> %1 2493} 2494 2495define <vscale x 16 x i1> @fcmps_uge_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2496; CHECK-LABEL: fcmps_uge_fv_nxv16f16: 2497; CHECK: # %bb.0: 2498; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2499; CHECK-NEXT: vmfgt.vf v12, v8, fa0 2500; CHECK-NEXT: vmnot.m v0, v12 2501; CHECK-NEXT: ret 2502 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2503 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2504 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 2505 ret <vscale x 16 x i1> %1 2506} 2507 2508define <vscale x 16 x i1> @fcmps_ult_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2509; CHECK-LABEL: fcmps_ult_vv_nxv16f16: 2510; CHECK: # %bb.0: 2511; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2512; CHECK-NEXT: vmfle.vv v16, v12, v8 2513; CHECK-NEXT: vmnot.m v0, v16 2514; CHECK-NEXT: ret 2515 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 2516 ret <vscale x 16 x i1> %1 2517} 2518 2519define <vscale x 16 x i1> @fcmps_ult_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2520; CHECK-LABEL: fcmps_ult_vf_nxv16f16: 2521; CHECK: # %bb.0: 2522; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2523; CHECK-NEXT: vmfge.vf v12, v8, fa0 2524; CHECK-NEXT: vmnot.m v0, v12 2525; CHECK-NEXT: ret 2526 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2527 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2528 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 2529 ret <vscale x 16 x i1> %1 2530} 2531 2532define <vscale x 16 x i1> @fcmps_ult_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2533; CHECK-LABEL: fcmps_ult_fv_nxv16f16: 2534; CHECK: # %bb.0: 2535; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2536; CHECK-NEXT: vmfle.vf v12, v8, fa0 2537; CHECK-NEXT: vmnot.m v0, v12 2538; CHECK-NEXT: ret 2539 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2540 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2541 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 2542 ret <vscale x 16 x i1> %1 2543} 2544 2545define <vscale x 16 x i1> @fcmps_ule_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2546; CHECK-LABEL: fcmps_ule_vv_nxv16f16: 2547; CHECK: # %bb.0: 2548; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2549; CHECK-NEXT: vmflt.vv v16, v12, v8 2550; CHECK-NEXT: vmnot.m v0, v16 2551; CHECK-NEXT: ret 2552 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 2553 ret <vscale x 16 x i1> %1 2554} 2555 2556define <vscale x 16 x i1> @fcmps_ule_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2557; CHECK-LABEL: fcmps_ule_vf_nxv16f16: 2558; CHECK: # %bb.0: 2559; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2560; CHECK-NEXT: vmfgt.vf v12, v8, fa0 2561; CHECK-NEXT: vmnot.m v0, v12 2562; CHECK-NEXT: ret 2563 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2564 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2565 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 2566 ret <vscale x 16 x i1> %1 2567} 2568 2569define <vscale x 16 x i1> @fcmps_ule_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2570; CHECK-LABEL: fcmps_ule_fv_nxv16f16: 2571; CHECK: # %bb.0: 2572; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2573; CHECK-NEXT: vmflt.vf v12, v8, fa0 2574; CHECK-NEXT: vmnot.m v0, v12 2575; CHECK-NEXT: ret 2576 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2577 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2578 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 2579 ret <vscale x 16 x i1> %1 2580} 2581 2582define <vscale x 16 x i1> @fcmps_une_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2583; CHECK-LABEL: fcmps_une_vv_nxv16f16: 2584; CHECK: # %bb.0: 2585; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2586; CHECK-NEXT: vmfle.vv v16, v12, v8 2587; CHECK-NEXT: vmfle.vv v17, v8, v12 2588; CHECK-NEXT: vmnand.mm v0, v17, v16 2589; CHECK-NEXT: ret 2590 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 2591 ret <vscale x 16 x i1> %1 2592} 2593 2594define <vscale x 16 x i1> @fcmps_une_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2595; CHECK-LABEL: fcmps_une_vf_nxv16f16: 2596; CHECK: # %bb.0: 2597; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2598; CHECK-NEXT: vmfge.vf v12, v8, fa0 2599; CHECK-NEXT: vmfle.vf v13, v8, fa0 2600; CHECK-NEXT: vmnand.mm v0, v13, v12 2601; CHECK-NEXT: ret 2602 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2603 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2604 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 2605 ret <vscale x 16 x i1> %1 2606} 2607 2608define <vscale x 16 x i1> @fcmps_une_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2609; CHECK-LABEL: fcmps_une_fv_nxv16f16: 2610; CHECK: # %bb.0: 2611; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2612; CHECK-NEXT: vmfle.vf v12, v8, fa0 2613; CHECK-NEXT: vmfge.vf v13, v8, fa0 2614; CHECK-NEXT: vmnand.mm v0, v13, v12 2615; CHECK-NEXT: ret 2616 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2617 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2618 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 2619 ret <vscale x 16 x i1> %1 2620} 2621 2622define <vscale x 16 x i1> @fcmps_uno_vv_nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb) nounwind strictfp { 2623; CHECK-LABEL: fcmps_uno_vv_nxv16f16: 2624; CHECK: # %bb.0: 2625; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2626; CHECK-NEXT: vmfle.vv v16, v12, v12 2627; CHECK-NEXT: vmfle.vv v12, v8, v8 2628; CHECK-NEXT: vmnot.m v8, v12 2629; CHECK-NEXT: vmorn.mm v0, v8, v16 2630; CHECK-NEXT: ret 2631 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 2632 ret <vscale x 16 x i1> %1 2633} 2634 2635define <vscale x 16 x i1> @fcmps_uno_vf_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2636; CHECK-LABEL: fcmps_uno_vf_nxv16f16: 2637; CHECK: # %bb.0: 2638; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2639; CHECK-NEXT: vfmv.v.f v12, fa0 2640; CHECK-NEXT: vmfle.vv v16, v8, v8 2641; CHECK-NEXT: vmfle.vf v8, v12, fa0 2642; CHECK-NEXT: vmnot.m v9, v16 2643; CHECK-NEXT: vmorn.mm v0, v9, v8 2644; CHECK-NEXT: ret 2645 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2646 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2647 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %va, <vscale x 16 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 2648 ret <vscale x 16 x i1> %1 2649} 2650 2651define <vscale x 16 x i1> @fcmps_uno_fv_nxv16f16(<vscale x 16 x half> %va, half %b) nounwind strictfp { 2652; CHECK-LABEL: fcmps_uno_fv_nxv16f16: 2653; CHECK: # %bb.0: 2654; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, ma 2655; CHECK-NEXT: vfmv.v.f v12, fa0 2656; CHECK-NEXT: vmfle.vf v16, v12, fa0 2657; CHECK-NEXT: vmnot.m v12, v16 2658; CHECK-NEXT: vmfle.vv v13, v8, v8 2659; CHECK-NEXT: vmorn.mm v0, v12, v13 2660; CHECK-NEXT: ret 2661 %head = insertelement <vscale x 16 x half> poison, half %b, i32 0 2662 %splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer 2663 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f16(<vscale x 16 x half> %splat, <vscale x 16 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 2664 ret <vscale x 16 x i1> %1 2665} 2666 2667declare <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half>, <vscale x 32 x half>, metadata, metadata) 2668define <vscale x 32 x i1> @fcmps_oeq_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 2669; CHECK-LABEL: fcmps_oeq_vv_nxv32f16: 2670; CHECK: # %bb.0: 2671; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2672; CHECK-NEXT: vmfle.vv v24, v16, v8 2673; CHECK-NEXT: vmfle.vv v25, v8, v16 2674; CHECK-NEXT: vmand.mm v0, v25, v24 2675; CHECK-NEXT: ret 2676 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 2677 ret <vscale x 32 x i1> %1 2678} 2679 2680define <vscale x 32 x i1> @fcmps_oeq_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2681; CHECK-LABEL: fcmps_oeq_vf_nxv32f16: 2682; CHECK: # %bb.0: 2683; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2684; CHECK-NEXT: vmfge.vf v16, v8, fa0 2685; CHECK-NEXT: vmfle.vf v17, v8, fa0 2686; CHECK-NEXT: vmand.mm v0, v17, v16 2687; CHECK-NEXT: ret 2688 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2689 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2690 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 2691 ret <vscale x 32 x i1> %1 2692} 2693 2694define <vscale x 32 x i1> @fcmps_oeq_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2695; CHECK-LABEL: fcmps_oeq_fv_nxv32f16: 2696; CHECK: # %bb.0: 2697; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2698; CHECK-NEXT: vmfle.vf v16, v8, fa0 2699; CHECK-NEXT: vmfge.vf v17, v8, fa0 2700; CHECK-NEXT: vmand.mm v0, v17, v16 2701; CHECK-NEXT: ret 2702 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2703 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2704 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 2705 ret <vscale x 32 x i1> %1 2706} 2707 2708define <vscale x 32 x i1> @fcmps_ogt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 2709; CHECK-LABEL: fcmps_ogt_vv_nxv32f16: 2710; CHECK: # %bb.0: 2711; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2712; CHECK-NEXT: vmflt.vv v0, v16, v8 2713; CHECK-NEXT: ret 2714 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 2715 ret <vscale x 32 x i1> %1 2716} 2717 2718define <vscale x 32 x i1> @fcmps_ogt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2719; CHECK-LABEL: fcmps_ogt_vf_nxv32f16: 2720; CHECK: # %bb.0: 2721; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2722; CHECK-NEXT: vmfgt.vf v0, v8, fa0 2723; CHECK-NEXT: ret 2724 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2725 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2726 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 2727 ret <vscale x 32 x i1> %1 2728} 2729 2730define <vscale x 32 x i1> @fcmps_ogt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2731; CHECK-LABEL: fcmps_ogt_fv_nxv32f16: 2732; CHECK: # %bb.0: 2733; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2734; CHECK-NEXT: vmflt.vf v0, v8, fa0 2735; CHECK-NEXT: ret 2736 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2737 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2738 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 2739 ret <vscale x 32 x i1> %1 2740} 2741 2742define <vscale x 32 x i1> @fcmps_oge_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 2743; CHECK-LABEL: fcmps_oge_vv_nxv32f16: 2744; CHECK: # %bb.0: 2745; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2746; CHECK-NEXT: vmfle.vv v0, v16, v8 2747; CHECK-NEXT: ret 2748 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 2749 ret <vscale x 32 x i1> %1 2750} 2751 2752define <vscale x 32 x i1> @fcmps_oge_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2753; CHECK-LABEL: fcmps_oge_vf_nxv32f16: 2754; CHECK: # %bb.0: 2755; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2756; CHECK-NEXT: vmfge.vf v0, v8, fa0 2757; CHECK-NEXT: ret 2758 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2759 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2760 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 2761 ret <vscale x 32 x i1> %1 2762} 2763 2764define <vscale x 32 x i1> @fcmps_oge_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2765; CHECK-LABEL: fcmps_oge_fv_nxv32f16: 2766; CHECK: # %bb.0: 2767; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2768; CHECK-NEXT: vmfle.vf v0, v8, fa0 2769; CHECK-NEXT: ret 2770 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2771 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2772 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 2773 ret <vscale x 32 x i1> %1 2774} 2775 2776define <vscale x 32 x i1> @fcmps_olt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 2777; CHECK-LABEL: fcmps_olt_vv_nxv32f16: 2778; CHECK: # %bb.0: 2779; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2780; CHECK-NEXT: vmflt.vv v0, v8, v16 2781; CHECK-NEXT: ret 2782 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 2783 ret <vscale x 32 x i1> %1 2784} 2785 2786define <vscale x 32 x i1> @fcmps_olt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2787; CHECK-LABEL: fcmps_olt_vf_nxv32f16: 2788; CHECK: # %bb.0: 2789; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2790; CHECK-NEXT: vmflt.vf v0, v8, fa0 2791; CHECK-NEXT: ret 2792 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2793 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2794 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 2795 ret <vscale x 32 x i1> %1 2796} 2797 2798define <vscale x 32 x i1> @fcmps_olt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2799; CHECK-LABEL: fcmps_olt_fv_nxv32f16: 2800; CHECK: # %bb.0: 2801; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2802; CHECK-NEXT: vmfgt.vf v0, v8, fa0 2803; CHECK-NEXT: ret 2804 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2805 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2806 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 2807 ret <vscale x 32 x i1> %1 2808} 2809 2810define <vscale x 32 x i1> @fcmps_ole_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 2811; CHECK-LABEL: fcmps_ole_vv_nxv32f16: 2812; CHECK: # %bb.0: 2813; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2814; CHECK-NEXT: vmfle.vv v0, v8, v16 2815; CHECK-NEXT: ret 2816 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 2817 ret <vscale x 32 x i1> %1 2818} 2819 2820define <vscale x 32 x i1> @fcmps_ole_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2821; CHECK-LABEL: fcmps_ole_vf_nxv32f16: 2822; CHECK: # %bb.0: 2823; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2824; CHECK-NEXT: vmfle.vf v0, v8, fa0 2825; CHECK-NEXT: ret 2826 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2827 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2828 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 2829 ret <vscale x 32 x i1> %1 2830} 2831 2832define <vscale x 32 x i1> @fcmps_ole_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2833; CHECK-LABEL: fcmps_ole_fv_nxv32f16: 2834; CHECK: # %bb.0: 2835; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2836; CHECK-NEXT: vmfge.vf v0, v8, fa0 2837; CHECK-NEXT: ret 2838 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2839 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2840 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 2841 ret <vscale x 32 x i1> %1 2842} 2843 2844define <vscale x 32 x i1> @fcmps_one_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 2845; CHECK-LABEL: fcmps_one_vv_nxv32f16: 2846; CHECK: # %bb.0: 2847; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2848; CHECK-NEXT: vmflt.vv v24, v8, v16 2849; CHECK-NEXT: vmflt.vv v25, v16, v8 2850; CHECK-NEXT: vmor.mm v0, v25, v24 2851; CHECK-NEXT: ret 2852 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 2853 ret <vscale x 32 x i1> %1 2854} 2855 2856define <vscale x 32 x i1> @fcmps_one_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2857; CHECK-LABEL: fcmps_one_vf_nxv32f16: 2858; CHECK: # %bb.0: 2859; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2860; CHECK-NEXT: vmflt.vf v16, v8, fa0 2861; CHECK-NEXT: vmfgt.vf v17, v8, fa0 2862; CHECK-NEXT: vmor.mm v0, v17, v16 2863; CHECK-NEXT: ret 2864 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2865 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2866 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 2867 ret <vscale x 32 x i1> %1 2868} 2869 2870define <vscale x 32 x i1> @fcmps_one_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2871; CHECK-LABEL: fcmps_one_fv_nxv32f16: 2872; CHECK: # %bb.0: 2873; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2874; CHECK-NEXT: vmfgt.vf v16, v8, fa0 2875; CHECK-NEXT: vmflt.vf v17, v8, fa0 2876; CHECK-NEXT: vmor.mm v0, v17, v16 2877; CHECK-NEXT: ret 2878 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2879 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2880 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 2881 ret <vscale x 32 x i1> %1 2882} 2883 2884define <vscale x 32 x i1> @fcmps_ord_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 2885; CHECK-LABEL: fcmps_ord_vv_nxv32f16: 2886; CHECK: # %bb.0: 2887; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2888; CHECK-NEXT: vmfle.vv v24, v16, v16 2889; CHECK-NEXT: vmfle.vv v16, v8, v8 2890; CHECK-NEXT: vmand.mm v0, v16, v24 2891; CHECK-NEXT: ret 2892 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 2893 ret <vscale x 32 x i1> %1 2894} 2895 2896define <vscale x 32 x i1> @fcmps_ord_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2897; CHECK-LABEL: fcmps_ord_vf_nxv32f16: 2898; CHECK: # %bb.0: 2899; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2900; CHECK-NEXT: vfmv.v.f v16, fa0 2901; CHECK-NEXT: vmfle.vf v24, v16, fa0 2902; CHECK-NEXT: vmfle.vv v16, v8, v8 2903; CHECK-NEXT: vmand.mm v0, v16, v24 2904; CHECK-NEXT: ret 2905 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2906 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2907 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 2908 ret <vscale x 32 x i1> %1 2909} 2910 2911define <vscale x 32 x i1> @fcmps_ord_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2912; CHECK-LABEL: fcmps_ord_fv_nxv32f16: 2913; CHECK: # %bb.0: 2914; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2915; CHECK-NEXT: vfmv.v.f v16, fa0 2916; CHECK-NEXT: vmfle.vf v24, v16, fa0 2917; CHECK-NEXT: vmfle.vv v16, v8, v8 2918; CHECK-NEXT: vmand.mm v0, v24, v16 2919; CHECK-NEXT: ret 2920 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2921 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2922 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 2923 ret <vscale x 32 x i1> %1 2924} 2925 2926define <vscale x 32 x i1> @fcmps_ueq_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 2927; CHECK-LABEL: fcmps_ueq_vv_nxv32f16: 2928; CHECK: # %bb.0: 2929; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2930; CHECK-NEXT: vmflt.vv v24, v8, v16 2931; CHECK-NEXT: vmflt.vv v25, v16, v8 2932; CHECK-NEXT: vmnor.mm v0, v25, v24 2933; CHECK-NEXT: ret 2934 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 2935 ret <vscale x 32 x i1> %1 2936} 2937 2938define <vscale x 32 x i1> @fcmps_ueq_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2939; CHECK-LABEL: fcmps_ueq_vf_nxv32f16: 2940; CHECK: # %bb.0: 2941; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2942; CHECK-NEXT: vmflt.vf v16, v8, fa0 2943; CHECK-NEXT: vmfgt.vf v17, v8, fa0 2944; CHECK-NEXT: vmnor.mm v0, v17, v16 2945; CHECK-NEXT: ret 2946 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2947 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2948 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 2949 ret <vscale x 32 x i1> %1 2950} 2951 2952define <vscale x 32 x i1> @fcmps_ueq_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2953; CHECK-LABEL: fcmps_ueq_fv_nxv32f16: 2954; CHECK: # %bb.0: 2955; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2956; CHECK-NEXT: vmfgt.vf v16, v8, fa0 2957; CHECK-NEXT: vmflt.vf v17, v8, fa0 2958; CHECK-NEXT: vmnor.mm v0, v17, v16 2959; CHECK-NEXT: ret 2960 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2961 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2962 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 2963 ret <vscale x 32 x i1> %1 2964} 2965 2966define <vscale x 32 x i1> @fcmps_ugt_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 2967; CHECK-LABEL: fcmps_ugt_vv_nxv32f16: 2968; CHECK: # %bb.0: 2969; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2970; CHECK-NEXT: vmfle.vv v24, v8, v16 2971; CHECK-NEXT: vmnot.m v0, v24 2972; CHECK-NEXT: ret 2973 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 2974 ret <vscale x 32 x i1> %1 2975} 2976 2977define <vscale x 32 x i1> @fcmps_ugt_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2978; CHECK-LABEL: fcmps_ugt_vf_nxv32f16: 2979; CHECK: # %bb.0: 2980; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2981; CHECK-NEXT: vmfle.vf v16, v8, fa0 2982; CHECK-NEXT: vmnot.m v0, v16 2983; CHECK-NEXT: ret 2984 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2985 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2986 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 2987 ret <vscale x 32 x i1> %1 2988} 2989 2990define <vscale x 32 x i1> @fcmps_ugt_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 2991; CHECK-LABEL: fcmps_ugt_fv_nxv32f16: 2992; CHECK: # %bb.0: 2993; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 2994; CHECK-NEXT: vmfge.vf v16, v8, fa0 2995; CHECK-NEXT: vmnot.m v0, v16 2996; CHECK-NEXT: ret 2997 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 2998 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 2999 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 3000 ret <vscale x 32 x i1> %1 3001} 3002 3003define <vscale x 32 x i1> @fcmps_uge_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 3004; CHECK-LABEL: fcmps_uge_vv_nxv32f16: 3005; CHECK: # %bb.0: 3006; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3007; CHECK-NEXT: vmflt.vv v24, v8, v16 3008; CHECK-NEXT: vmnot.m v0, v24 3009; CHECK-NEXT: ret 3010 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 3011 ret <vscale x 32 x i1> %1 3012} 3013 3014define <vscale x 32 x i1> @fcmps_uge_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 3015; CHECK-LABEL: fcmps_uge_vf_nxv32f16: 3016; CHECK: # %bb.0: 3017; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3018; CHECK-NEXT: vmflt.vf v16, v8, fa0 3019; CHECK-NEXT: vmnot.m v0, v16 3020; CHECK-NEXT: ret 3021 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 3022 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 3023 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 3024 ret <vscale x 32 x i1> %1 3025} 3026 3027define <vscale x 32 x i1> @fcmps_uge_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 3028; CHECK-LABEL: fcmps_uge_fv_nxv32f16: 3029; CHECK: # %bb.0: 3030; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3031; CHECK-NEXT: vmfgt.vf v16, v8, fa0 3032; CHECK-NEXT: vmnot.m v0, v16 3033; CHECK-NEXT: ret 3034 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 3035 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 3036 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 3037 ret <vscale x 32 x i1> %1 3038} 3039 3040define <vscale x 32 x i1> @fcmps_ult_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 3041; CHECK-LABEL: fcmps_ult_vv_nxv32f16: 3042; CHECK: # %bb.0: 3043; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3044; CHECK-NEXT: vmfle.vv v24, v16, v8 3045; CHECK-NEXT: vmnot.m v0, v24 3046; CHECK-NEXT: ret 3047 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 3048 ret <vscale x 32 x i1> %1 3049} 3050 3051define <vscale x 32 x i1> @fcmps_ult_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 3052; CHECK-LABEL: fcmps_ult_vf_nxv32f16: 3053; CHECK: # %bb.0: 3054; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3055; CHECK-NEXT: vmfge.vf v16, v8, fa0 3056; CHECK-NEXT: vmnot.m v0, v16 3057; CHECK-NEXT: ret 3058 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 3059 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 3060 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 3061 ret <vscale x 32 x i1> %1 3062} 3063 3064define <vscale x 32 x i1> @fcmps_ult_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 3065; CHECK-LABEL: fcmps_ult_fv_nxv32f16: 3066; CHECK: # %bb.0: 3067; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3068; CHECK-NEXT: vmfle.vf v16, v8, fa0 3069; CHECK-NEXT: vmnot.m v0, v16 3070; CHECK-NEXT: ret 3071 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 3072 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 3073 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 3074 ret <vscale x 32 x i1> %1 3075} 3076 3077define <vscale x 32 x i1> @fcmps_ule_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 3078; CHECK-LABEL: fcmps_ule_vv_nxv32f16: 3079; CHECK: # %bb.0: 3080; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3081; CHECK-NEXT: vmflt.vv v24, v16, v8 3082; CHECK-NEXT: vmnot.m v0, v24 3083; CHECK-NEXT: ret 3084 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 3085 ret <vscale x 32 x i1> %1 3086} 3087 3088define <vscale x 32 x i1> @fcmps_ule_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 3089; CHECK-LABEL: fcmps_ule_vf_nxv32f16: 3090; CHECK: # %bb.0: 3091; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3092; CHECK-NEXT: vmfgt.vf v16, v8, fa0 3093; CHECK-NEXT: vmnot.m v0, v16 3094; CHECK-NEXT: ret 3095 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 3096 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 3097 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 3098 ret <vscale x 32 x i1> %1 3099} 3100 3101define <vscale x 32 x i1> @fcmps_ule_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 3102; CHECK-LABEL: fcmps_ule_fv_nxv32f16: 3103; CHECK: # %bb.0: 3104; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3105; CHECK-NEXT: vmflt.vf v16, v8, fa0 3106; CHECK-NEXT: vmnot.m v0, v16 3107; CHECK-NEXT: ret 3108 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 3109 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 3110 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 3111 ret <vscale x 32 x i1> %1 3112} 3113 3114define <vscale x 32 x i1> @fcmps_une_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 3115; CHECK-LABEL: fcmps_une_vv_nxv32f16: 3116; CHECK: # %bb.0: 3117; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3118; CHECK-NEXT: vmfle.vv v24, v16, v8 3119; CHECK-NEXT: vmfle.vv v25, v8, v16 3120; CHECK-NEXT: vmnand.mm v0, v25, v24 3121; CHECK-NEXT: ret 3122 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 3123 ret <vscale x 32 x i1> %1 3124} 3125 3126define <vscale x 32 x i1> @fcmps_une_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 3127; CHECK-LABEL: fcmps_une_vf_nxv32f16: 3128; CHECK: # %bb.0: 3129; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3130; CHECK-NEXT: vmfge.vf v16, v8, fa0 3131; CHECK-NEXT: vmfle.vf v17, v8, fa0 3132; CHECK-NEXT: vmnand.mm v0, v17, v16 3133; CHECK-NEXT: ret 3134 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 3135 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 3136 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 3137 ret <vscale x 32 x i1> %1 3138} 3139 3140define <vscale x 32 x i1> @fcmps_une_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 3141; CHECK-LABEL: fcmps_une_fv_nxv32f16: 3142; CHECK: # %bb.0: 3143; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3144; CHECK-NEXT: vmfle.vf v16, v8, fa0 3145; CHECK-NEXT: vmfge.vf v17, v8, fa0 3146; CHECK-NEXT: vmnand.mm v0, v17, v16 3147; CHECK-NEXT: ret 3148 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 3149 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 3150 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 3151 ret <vscale x 32 x i1> %1 3152} 3153 3154define <vscale x 32 x i1> @fcmps_uno_vv_nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb) nounwind strictfp { 3155; CHECK-LABEL: fcmps_uno_vv_nxv32f16: 3156; CHECK: # %bb.0: 3157; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3158; CHECK-NEXT: vmfle.vv v24, v16, v16 3159; CHECK-NEXT: vmfle.vv v16, v8, v8 3160; CHECK-NEXT: vmnot.m v8, v16 3161; CHECK-NEXT: vmorn.mm v0, v8, v24 3162; CHECK-NEXT: ret 3163 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 3164 ret <vscale x 32 x i1> %1 3165} 3166 3167define <vscale x 32 x i1> @fcmps_uno_vf_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 3168; CHECK-LABEL: fcmps_uno_vf_nxv32f16: 3169; CHECK: # %bb.0: 3170; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3171; CHECK-NEXT: vfmv.v.f v16, fa0 3172; CHECK-NEXT: vmfle.vv v24, v8, v8 3173; CHECK-NEXT: vmfle.vf v8, v16, fa0 3174; CHECK-NEXT: vmnot.m v9, v24 3175; CHECK-NEXT: vmorn.mm v0, v9, v8 3176; CHECK-NEXT: ret 3177 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 3178 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 3179 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %va, <vscale x 32 x half> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 3180 ret <vscale x 32 x i1> %1 3181} 3182 3183define <vscale x 32 x i1> @fcmps_uno_fv_nxv32f16(<vscale x 32 x half> %va, half %b) nounwind strictfp { 3184; CHECK-LABEL: fcmps_uno_fv_nxv32f16: 3185; CHECK: # %bb.0: 3186; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, ma 3187; CHECK-NEXT: vfmv.v.f v16, fa0 3188; CHECK-NEXT: vmfle.vf v24, v16, fa0 3189; CHECK-NEXT: vmnot.m v16, v24 3190; CHECK-NEXT: vmfle.vv v17, v8, v8 3191; CHECK-NEXT: vmorn.mm v0, v16, v17 3192; CHECK-NEXT: ret 3193 %head = insertelement <vscale x 32 x half> poison, half %b, i32 0 3194 %splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer 3195 %1 = call <vscale x 32 x i1> @llvm.experimental.constrained.fcmps.nxv32f16(<vscale x 32 x half> %splat, <vscale x 32 x half> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 3196 ret <vscale x 32 x i1> %1 3197} 3198 3199declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float>, <vscale x 1 x float>, metadata, metadata) 3200define <vscale x 1 x i1> @fcmps_oeq_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3201; CHECK-LABEL: fcmps_oeq_vv_nxv1f32: 3202; CHECK: # %bb.0: 3203; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3204; CHECK-NEXT: vmfle.vv v10, v9, v8 3205; CHECK-NEXT: vmfle.vv v8, v8, v9 3206; CHECK-NEXT: vmand.mm v0, v8, v10 3207; CHECK-NEXT: ret 3208 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 3209 ret <vscale x 1 x i1> %1 3210} 3211 3212define <vscale x 1 x i1> @fcmps_oeq_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3213; CHECK-LABEL: fcmps_oeq_vf_nxv1f32: 3214; CHECK: # %bb.0: 3215; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3216; CHECK-NEXT: vmfge.vf v9, v8, fa0 3217; CHECK-NEXT: vmfle.vf v8, v8, fa0 3218; CHECK-NEXT: vmand.mm v0, v8, v9 3219; CHECK-NEXT: ret 3220 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3221 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3222 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 3223 ret <vscale x 1 x i1> %1 3224} 3225 3226define <vscale x 1 x i1> @fcmps_oeq_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3227; CHECK-LABEL: fcmps_oeq_fv_nxv1f32: 3228; CHECK: # %bb.0: 3229; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3230; CHECK-NEXT: vmfle.vf v9, v8, fa0 3231; CHECK-NEXT: vmfge.vf v8, v8, fa0 3232; CHECK-NEXT: vmand.mm v0, v8, v9 3233; CHECK-NEXT: ret 3234 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3235 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3236 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 3237 ret <vscale x 1 x i1> %1 3238} 3239 3240define <vscale x 1 x i1> @fcmps_ogt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3241; CHECK-LABEL: fcmps_ogt_vv_nxv1f32: 3242; CHECK: # %bb.0: 3243; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3244; CHECK-NEXT: vmflt.vv v0, v9, v8 3245; CHECK-NEXT: ret 3246 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 3247 ret <vscale x 1 x i1> %1 3248} 3249 3250define <vscale x 1 x i1> @fcmps_ogt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3251; CHECK-LABEL: fcmps_ogt_vf_nxv1f32: 3252; CHECK: # %bb.0: 3253; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3254; CHECK-NEXT: vmfgt.vf v0, v8, fa0 3255; CHECK-NEXT: ret 3256 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3257 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3258 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 3259 ret <vscale x 1 x i1> %1 3260} 3261 3262define <vscale x 1 x i1> @fcmps_ogt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3263; CHECK-LABEL: fcmps_ogt_fv_nxv1f32: 3264; CHECK: # %bb.0: 3265; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3266; CHECK-NEXT: vmflt.vf v0, v8, fa0 3267; CHECK-NEXT: ret 3268 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3269 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3270 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 3271 ret <vscale x 1 x i1> %1 3272} 3273 3274define <vscale x 1 x i1> @fcmps_oge_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3275; CHECK-LABEL: fcmps_oge_vv_nxv1f32: 3276; CHECK: # %bb.0: 3277; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3278; CHECK-NEXT: vmfle.vv v0, v9, v8 3279; CHECK-NEXT: ret 3280 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 3281 ret <vscale x 1 x i1> %1 3282} 3283 3284define <vscale x 1 x i1> @fcmps_oge_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3285; CHECK-LABEL: fcmps_oge_vf_nxv1f32: 3286; CHECK: # %bb.0: 3287; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3288; CHECK-NEXT: vmfge.vf v0, v8, fa0 3289; CHECK-NEXT: ret 3290 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3291 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3292 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 3293 ret <vscale x 1 x i1> %1 3294} 3295 3296define <vscale x 1 x i1> @fcmps_oge_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3297; CHECK-LABEL: fcmps_oge_fv_nxv1f32: 3298; CHECK: # %bb.0: 3299; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3300; CHECK-NEXT: vmfle.vf v0, v8, fa0 3301; CHECK-NEXT: ret 3302 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3303 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3304 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 3305 ret <vscale x 1 x i1> %1 3306} 3307 3308define <vscale x 1 x i1> @fcmps_olt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3309; CHECK-LABEL: fcmps_olt_vv_nxv1f32: 3310; CHECK: # %bb.0: 3311; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3312; CHECK-NEXT: vmflt.vv v0, v8, v9 3313; CHECK-NEXT: ret 3314 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 3315 ret <vscale x 1 x i1> %1 3316} 3317 3318define <vscale x 1 x i1> @fcmps_olt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3319; CHECK-LABEL: fcmps_olt_vf_nxv1f32: 3320; CHECK: # %bb.0: 3321; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3322; CHECK-NEXT: vmflt.vf v0, v8, fa0 3323; CHECK-NEXT: ret 3324 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3325 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3326 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 3327 ret <vscale x 1 x i1> %1 3328} 3329 3330define <vscale x 1 x i1> @fcmps_olt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3331; CHECK-LABEL: fcmps_olt_fv_nxv1f32: 3332; CHECK: # %bb.0: 3333; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3334; CHECK-NEXT: vmfgt.vf v0, v8, fa0 3335; CHECK-NEXT: ret 3336 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3337 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3338 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 3339 ret <vscale x 1 x i1> %1 3340} 3341 3342define <vscale x 1 x i1> @fcmps_ole_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3343; CHECK-LABEL: fcmps_ole_vv_nxv1f32: 3344; CHECK: # %bb.0: 3345; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3346; CHECK-NEXT: vmfle.vv v0, v8, v9 3347; CHECK-NEXT: ret 3348 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 3349 ret <vscale x 1 x i1> %1 3350} 3351 3352define <vscale x 1 x i1> @fcmps_ole_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3353; CHECK-LABEL: fcmps_ole_vf_nxv1f32: 3354; CHECK: # %bb.0: 3355; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3356; CHECK-NEXT: vmfle.vf v0, v8, fa0 3357; CHECK-NEXT: ret 3358 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3359 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3360 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 3361 ret <vscale x 1 x i1> %1 3362} 3363 3364define <vscale x 1 x i1> @fcmps_ole_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3365; CHECK-LABEL: fcmps_ole_fv_nxv1f32: 3366; CHECK: # %bb.0: 3367; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3368; CHECK-NEXT: vmfge.vf v0, v8, fa0 3369; CHECK-NEXT: ret 3370 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3371 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3372 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 3373 ret <vscale x 1 x i1> %1 3374} 3375 3376define <vscale x 1 x i1> @fcmps_one_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3377; CHECK-LABEL: fcmps_one_vv_nxv1f32: 3378; CHECK: # %bb.0: 3379; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3380; CHECK-NEXT: vmflt.vv v10, v8, v9 3381; CHECK-NEXT: vmflt.vv v8, v9, v8 3382; CHECK-NEXT: vmor.mm v0, v8, v10 3383; CHECK-NEXT: ret 3384 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 3385 ret <vscale x 1 x i1> %1 3386} 3387 3388define <vscale x 1 x i1> @fcmps_one_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3389; CHECK-LABEL: fcmps_one_vf_nxv1f32: 3390; CHECK: # %bb.0: 3391; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3392; CHECK-NEXT: vmflt.vf v9, v8, fa0 3393; CHECK-NEXT: vmfgt.vf v8, v8, fa0 3394; CHECK-NEXT: vmor.mm v0, v8, v9 3395; CHECK-NEXT: ret 3396 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3397 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3398 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 3399 ret <vscale x 1 x i1> %1 3400} 3401 3402define <vscale x 1 x i1> @fcmps_one_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3403; CHECK-LABEL: fcmps_one_fv_nxv1f32: 3404; CHECK: # %bb.0: 3405; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3406; CHECK-NEXT: vmfgt.vf v9, v8, fa0 3407; CHECK-NEXT: vmflt.vf v8, v8, fa0 3408; CHECK-NEXT: vmor.mm v0, v8, v9 3409; CHECK-NEXT: ret 3410 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3411 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3412 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 3413 ret <vscale x 1 x i1> %1 3414} 3415 3416define <vscale x 1 x i1> @fcmps_ord_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3417; CHECK-LABEL: fcmps_ord_vv_nxv1f32: 3418; CHECK: # %bb.0: 3419; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3420; CHECK-NEXT: vmfle.vv v9, v9, v9 3421; CHECK-NEXT: vmfle.vv v8, v8, v8 3422; CHECK-NEXT: vmand.mm v0, v8, v9 3423; CHECK-NEXT: ret 3424 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 3425 ret <vscale x 1 x i1> %1 3426} 3427 3428define <vscale x 1 x i1> @fcmps_ord_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3429; CHECK-LABEL: fcmps_ord_vf_nxv1f32: 3430; CHECK: # %bb.0: 3431; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3432; CHECK-NEXT: vfmv.v.f v9, fa0 3433; CHECK-NEXT: vmfle.vf v9, v9, fa0 3434; CHECK-NEXT: vmfle.vv v8, v8, v8 3435; CHECK-NEXT: vmand.mm v0, v8, v9 3436; CHECK-NEXT: ret 3437 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3438 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3439 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 3440 ret <vscale x 1 x i1> %1 3441} 3442 3443define <vscale x 1 x i1> @fcmps_ord_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3444; CHECK-LABEL: fcmps_ord_fv_nxv1f32: 3445; CHECK: # %bb.0: 3446; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3447; CHECK-NEXT: vfmv.v.f v9, fa0 3448; CHECK-NEXT: vmfle.vf v9, v9, fa0 3449; CHECK-NEXT: vmfle.vv v8, v8, v8 3450; CHECK-NEXT: vmand.mm v0, v9, v8 3451; CHECK-NEXT: ret 3452 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3453 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3454 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 3455 ret <vscale x 1 x i1> %1 3456} 3457 3458define <vscale x 1 x i1> @fcmps_ueq_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3459; CHECK-LABEL: fcmps_ueq_vv_nxv1f32: 3460; CHECK: # %bb.0: 3461; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3462; CHECK-NEXT: vmflt.vv v10, v8, v9 3463; CHECK-NEXT: vmflt.vv v8, v9, v8 3464; CHECK-NEXT: vmnor.mm v0, v8, v10 3465; CHECK-NEXT: ret 3466 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 3467 ret <vscale x 1 x i1> %1 3468} 3469 3470define <vscale x 1 x i1> @fcmps_ueq_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3471; CHECK-LABEL: fcmps_ueq_vf_nxv1f32: 3472; CHECK: # %bb.0: 3473; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3474; CHECK-NEXT: vmflt.vf v9, v8, fa0 3475; CHECK-NEXT: vmfgt.vf v8, v8, fa0 3476; CHECK-NEXT: vmnor.mm v0, v8, v9 3477; CHECK-NEXT: ret 3478 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3479 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3480 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 3481 ret <vscale x 1 x i1> %1 3482} 3483 3484define <vscale x 1 x i1> @fcmps_ueq_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3485; CHECK-LABEL: fcmps_ueq_fv_nxv1f32: 3486; CHECK: # %bb.0: 3487; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3488; CHECK-NEXT: vmfgt.vf v9, v8, fa0 3489; CHECK-NEXT: vmflt.vf v8, v8, fa0 3490; CHECK-NEXT: vmnor.mm v0, v8, v9 3491; CHECK-NEXT: ret 3492 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3493 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3494 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 3495 ret <vscale x 1 x i1> %1 3496} 3497 3498define <vscale x 1 x i1> @fcmps_ugt_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3499; CHECK-LABEL: fcmps_ugt_vv_nxv1f32: 3500; CHECK: # %bb.0: 3501; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3502; CHECK-NEXT: vmfle.vv v8, v8, v9 3503; CHECK-NEXT: vmnot.m v0, v8 3504; CHECK-NEXT: ret 3505 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 3506 ret <vscale x 1 x i1> %1 3507} 3508 3509define <vscale x 1 x i1> @fcmps_ugt_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3510; CHECK-LABEL: fcmps_ugt_vf_nxv1f32: 3511; CHECK: # %bb.0: 3512; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3513; CHECK-NEXT: vmfle.vf v8, v8, fa0 3514; CHECK-NEXT: vmnot.m v0, v8 3515; CHECK-NEXT: ret 3516 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3517 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3518 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 3519 ret <vscale x 1 x i1> %1 3520} 3521 3522define <vscale x 1 x i1> @fcmps_ugt_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3523; CHECK-LABEL: fcmps_ugt_fv_nxv1f32: 3524; CHECK: # %bb.0: 3525; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3526; CHECK-NEXT: vmfge.vf v8, v8, fa0 3527; CHECK-NEXT: vmnot.m v0, v8 3528; CHECK-NEXT: ret 3529 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3530 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3531 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 3532 ret <vscale x 1 x i1> %1 3533} 3534 3535define <vscale x 1 x i1> @fcmps_uge_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3536; CHECK-LABEL: fcmps_uge_vv_nxv1f32: 3537; CHECK: # %bb.0: 3538; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3539; CHECK-NEXT: vmflt.vv v8, v8, v9 3540; CHECK-NEXT: vmnot.m v0, v8 3541; CHECK-NEXT: ret 3542 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 3543 ret <vscale x 1 x i1> %1 3544} 3545 3546define <vscale x 1 x i1> @fcmps_uge_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3547; CHECK-LABEL: fcmps_uge_vf_nxv1f32: 3548; CHECK: # %bb.0: 3549; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3550; CHECK-NEXT: vmflt.vf v8, v8, fa0 3551; CHECK-NEXT: vmnot.m v0, v8 3552; CHECK-NEXT: ret 3553 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3554 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3555 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 3556 ret <vscale x 1 x i1> %1 3557} 3558 3559define <vscale x 1 x i1> @fcmps_uge_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3560; CHECK-LABEL: fcmps_uge_fv_nxv1f32: 3561; CHECK: # %bb.0: 3562; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3563; CHECK-NEXT: vmfgt.vf v8, v8, fa0 3564; CHECK-NEXT: vmnot.m v0, v8 3565; CHECK-NEXT: ret 3566 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3567 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3568 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 3569 ret <vscale x 1 x i1> %1 3570} 3571 3572define <vscale x 1 x i1> @fcmps_ult_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3573; CHECK-LABEL: fcmps_ult_vv_nxv1f32: 3574; CHECK: # %bb.0: 3575; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3576; CHECK-NEXT: vmfle.vv v8, v9, v8 3577; CHECK-NEXT: vmnot.m v0, v8 3578; CHECK-NEXT: ret 3579 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 3580 ret <vscale x 1 x i1> %1 3581} 3582 3583define <vscale x 1 x i1> @fcmps_ult_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3584; CHECK-LABEL: fcmps_ult_vf_nxv1f32: 3585; CHECK: # %bb.0: 3586; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3587; CHECK-NEXT: vmfge.vf v8, v8, fa0 3588; CHECK-NEXT: vmnot.m v0, v8 3589; CHECK-NEXT: ret 3590 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3591 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3592 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 3593 ret <vscale x 1 x i1> %1 3594} 3595 3596define <vscale x 1 x i1> @fcmps_ult_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3597; CHECK-LABEL: fcmps_ult_fv_nxv1f32: 3598; CHECK: # %bb.0: 3599; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3600; CHECK-NEXT: vmfle.vf v8, v8, fa0 3601; CHECK-NEXT: vmnot.m v0, v8 3602; CHECK-NEXT: ret 3603 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3604 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3605 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 3606 ret <vscale x 1 x i1> %1 3607} 3608 3609define <vscale x 1 x i1> @fcmps_ule_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3610; CHECK-LABEL: fcmps_ule_vv_nxv1f32: 3611; CHECK: # %bb.0: 3612; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3613; CHECK-NEXT: vmflt.vv v8, v9, v8 3614; CHECK-NEXT: vmnot.m v0, v8 3615; CHECK-NEXT: ret 3616 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 3617 ret <vscale x 1 x i1> %1 3618} 3619 3620define <vscale x 1 x i1> @fcmps_ule_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3621; CHECK-LABEL: fcmps_ule_vf_nxv1f32: 3622; CHECK: # %bb.0: 3623; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3624; CHECK-NEXT: vmfgt.vf v8, v8, fa0 3625; CHECK-NEXT: vmnot.m v0, v8 3626; CHECK-NEXT: ret 3627 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3628 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3629 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 3630 ret <vscale x 1 x i1> %1 3631} 3632 3633define <vscale x 1 x i1> @fcmps_ule_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3634; CHECK-LABEL: fcmps_ule_fv_nxv1f32: 3635; CHECK: # %bb.0: 3636; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3637; CHECK-NEXT: vmflt.vf v8, v8, fa0 3638; CHECK-NEXT: vmnot.m v0, v8 3639; CHECK-NEXT: ret 3640 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3641 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3642 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 3643 ret <vscale x 1 x i1> %1 3644} 3645 3646define <vscale x 1 x i1> @fcmps_une_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3647; CHECK-LABEL: fcmps_une_vv_nxv1f32: 3648; CHECK: # %bb.0: 3649; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3650; CHECK-NEXT: vmfle.vv v10, v9, v8 3651; CHECK-NEXT: vmfle.vv v8, v8, v9 3652; CHECK-NEXT: vmnand.mm v0, v8, v10 3653; CHECK-NEXT: ret 3654 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 3655 ret <vscale x 1 x i1> %1 3656} 3657 3658define <vscale x 1 x i1> @fcmps_une_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3659; CHECK-LABEL: fcmps_une_vf_nxv1f32: 3660; CHECK: # %bb.0: 3661; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3662; CHECK-NEXT: vmfge.vf v9, v8, fa0 3663; CHECK-NEXT: vmfle.vf v8, v8, fa0 3664; CHECK-NEXT: vmnand.mm v0, v8, v9 3665; CHECK-NEXT: ret 3666 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3667 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3668 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 3669 ret <vscale x 1 x i1> %1 3670} 3671 3672define <vscale x 1 x i1> @fcmps_une_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3673; CHECK-LABEL: fcmps_une_fv_nxv1f32: 3674; CHECK: # %bb.0: 3675; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3676; CHECK-NEXT: vmfle.vf v9, v8, fa0 3677; CHECK-NEXT: vmfge.vf v8, v8, fa0 3678; CHECK-NEXT: vmnand.mm v0, v8, v9 3679; CHECK-NEXT: ret 3680 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3681 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3682 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 3683 ret <vscale x 1 x i1> %1 3684} 3685 3686define <vscale x 1 x i1> @fcmps_uno_vv_nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb) nounwind strictfp { 3687; CHECK-LABEL: fcmps_uno_vv_nxv1f32: 3688; CHECK: # %bb.0: 3689; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3690; CHECK-NEXT: vmfle.vv v9, v9, v9 3691; CHECK-NEXT: vmfle.vv v8, v8, v8 3692; CHECK-NEXT: vmnot.m v8, v8 3693; CHECK-NEXT: vmorn.mm v0, v8, v9 3694; CHECK-NEXT: ret 3695 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 3696 ret <vscale x 1 x i1> %1 3697} 3698 3699define <vscale x 1 x i1> @fcmps_uno_vf_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3700; CHECK-LABEL: fcmps_uno_vf_nxv1f32: 3701; CHECK: # %bb.0: 3702; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3703; CHECK-NEXT: vfmv.v.f v9, fa0 3704; CHECK-NEXT: vmfle.vv v8, v8, v8 3705; CHECK-NEXT: vmfle.vf v9, v9, fa0 3706; CHECK-NEXT: vmnot.m v8, v8 3707; CHECK-NEXT: vmorn.mm v0, v8, v9 3708; CHECK-NEXT: ret 3709 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3710 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3711 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %va, <vscale x 1 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 3712 ret <vscale x 1 x i1> %1 3713} 3714 3715define <vscale x 1 x i1> @fcmps_uno_fv_nxv1f32(<vscale x 1 x float> %va, float %b) nounwind strictfp { 3716; CHECK-LABEL: fcmps_uno_fv_nxv1f32: 3717; CHECK: # %bb.0: 3718; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, ma 3719; CHECK-NEXT: vfmv.v.f v9, fa0 3720; CHECK-NEXT: vmfle.vf v9, v9, fa0 3721; CHECK-NEXT: vmnot.m v9, v9 3722; CHECK-NEXT: vmfle.vv v8, v8, v8 3723; CHECK-NEXT: vmorn.mm v0, v9, v8 3724; CHECK-NEXT: ret 3725 %head = insertelement <vscale x 1 x float> poison, float %b, i32 0 3726 %splat = shufflevector <vscale x 1 x float> %head, <vscale x 1 x float> poison, <vscale x 1 x i32> zeroinitializer 3727 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f32(<vscale x 1 x float> %splat, <vscale x 1 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 3728 ret <vscale x 1 x i1> %1 3729} 3730 3731declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>, metadata, metadata) 3732define <vscale x 2 x i1> @fcmps_oeq_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 3733; CHECK-LABEL: fcmps_oeq_vv_nxv2f32: 3734; CHECK: # %bb.0: 3735; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3736; CHECK-NEXT: vmfle.vv v10, v9, v8 3737; CHECK-NEXT: vmfle.vv v8, v8, v9 3738; CHECK-NEXT: vmand.mm v0, v8, v10 3739; CHECK-NEXT: ret 3740 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 3741 ret <vscale x 2 x i1> %1 3742} 3743 3744define <vscale x 2 x i1> @fcmps_oeq_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3745; CHECK-LABEL: fcmps_oeq_vf_nxv2f32: 3746; CHECK: # %bb.0: 3747; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3748; CHECK-NEXT: vmfge.vf v9, v8, fa0 3749; CHECK-NEXT: vmfle.vf v8, v8, fa0 3750; CHECK-NEXT: vmand.mm v0, v8, v9 3751; CHECK-NEXT: ret 3752 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3753 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3754 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 3755 ret <vscale x 2 x i1> %1 3756} 3757 3758define <vscale x 2 x i1> @fcmps_oeq_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3759; CHECK-LABEL: fcmps_oeq_fv_nxv2f32: 3760; CHECK: # %bb.0: 3761; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3762; CHECK-NEXT: vmfle.vf v9, v8, fa0 3763; CHECK-NEXT: vmfge.vf v8, v8, fa0 3764; CHECK-NEXT: vmand.mm v0, v8, v9 3765; CHECK-NEXT: ret 3766 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3767 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3768 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 3769 ret <vscale x 2 x i1> %1 3770} 3771 3772define <vscale x 2 x i1> @fcmps_ogt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 3773; CHECK-LABEL: fcmps_ogt_vv_nxv2f32: 3774; CHECK: # %bb.0: 3775; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3776; CHECK-NEXT: vmflt.vv v0, v9, v8 3777; CHECK-NEXT: ret 3778 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 3779 ret <vscale x 2 x i1> %1 3780} 3781 3782define <vscale x 2 x i1> @fcmps_ogt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3783; CHECK-LABEL: fcmps_ogt_vf_nxv2f32: 3784; CHECK: # %bb.0: 3785; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3786; CHECK-NEXT: vmfgt.vf v0, v8, fa0 3787; CHECK-NEXT: ret 3788 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3789 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3790 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 3791 ret <vscale x 2 x i1> %1 3792} 3793 3794define <vscale x 2 x i1> @fcmps_ogt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3795; CHECK-LABEL: fcmps_ogt_fv_nxv2f32: 3796; CHECK: # %bb.0: 3797; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3798; CHECK-NEXT: vmflt.vf v0, v8, fa0 3799; CHECK-NEXT: ret 3800 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3801 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3802 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 3803 ret <vscale x 2 x i1> %1 3804} 3805 3806define <vscale x 2 x i1> @fcmps_oge_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 3807; CHECK-LABEL: fcmps_oge_vv_nxv2f32: 3808; CHECK: # %bb.0: 3809; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3810; CHECK-NEXT: vmfle.vv v0, v9, v8 3811; CHECK-NEXT: ret 3812 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 3813 ret <vscale x 2 x i1> %1 3814} 3815 3816define <vscale x 2 x i1> @fcmps_oge_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3817; CHECK-LABEL: fcmps_oge_vf_nxv2f32: 3818; CHECK: # %bb.0: 3819; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3820; CHECK-NEXT: vmfge.vf v0, v8, fa0 3821; CHECK-NEXT: ret 3822 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3823 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3824 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 3825 ret <vscale x 2 x i1> %1 3826} 3827 3828define <vscale x 2 x i1> @fcmps_oge_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3829; CHECK-LABEL: fcmps_oge_fv_nxv2f32: 3830; CHECK: # %bb.0: 3831; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3832; CHECK-NEXT: vmfle.vf v0, v8, fa0 3833; CHECK-NEXT: ret 3834 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3835 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3836 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 3837 ret <vscale x 2 x i1> %1 3838} 3839 3840define <vscale x 2 x i1> @fcmps_olt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 3841; CHECK-LABEL: fcmps_olt_vv_nxv2f32: 3842; CHECK: # %bb.0: 3843; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3844; CHECK-NEXT: vmflt.vv v0, v8, v9 3845; CHECK-NEXT: ret 3846 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 3847 ret <vscale x 2 x i1> %1 3848} 3849 3850define <vscale x 2 x i1> @fcmps_olt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3851; CHECK-LABEL: fcmps_olt_vf_nxv2f32: 3852; CHECK: # %bb.0: 3853; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3854; CHECK-NEXT: vmflt.vf v0, v8, fa0 3855; CHECK-NEXT: ret 3856 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3857 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3858 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 3859 ret <vscale x 2 x i1> %1 3860} 3861 3862define <vscale x 2 x i1> @fcmps_olt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3863; CHECK-LABEL: fcmps_olt_fv_nxv2f32: 3864; CHECK: # %bb.0: 3865; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3866; CHECK-NEXT: vmfgt.vf v0, v8, fa0 3867; CHECK-NEXT: ret 3868 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3869 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3870 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 3871 ret <vscale x 2 x i1> %1 3872} 3873 3874define <vscale x 2 x i1> @fcmps_ole_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 3875; CHECK-LABEL: fcmps_ole_vv_nxv2f32: 3876; CHECK: # %bb.0: 3877; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3878; CHECK-NEXT: vmfle.vv v0, v8, v9 3879; CHECK-NEXT: ret 3880 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 3881 ret <vscale x 2 x i1> %1 3882} 3883 3884define <vscale x 2 x i1> @fcmps_ole_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3885; CHECK-LABEL: fcmps_ole_vf_nxv2f32: 3886; CHECK: # %bb.0: 3887; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3888; CHECK-NEXT: vmfle.vf v0, v8, fa0 3889; CHECK-NEXT: ret 3890 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3891 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3892 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 3893 ret <vscale x 2 x i1> %1 3894} 3895 3896define <vscale x 2 x i1> @fcmps_ole_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3897; CHECK-LABEL: fcmps_ole_fv_nxv2f32: 3898; CHECK: # %bb.0: 3899; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3900; CHECK-NEXT: vmfge.vf v0, v8, fa0 3901; CHECK-NEXT: ret 3902 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3903 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3904 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 3905 ret <vscale x 2 x i1> %1 3906} 3907 3908define <vscale x 2 x i1> @fcmps_one_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 3909; CHECK-LABEL: fcmps_one_vv_nxv2f32: 3910; CHECK: # %bb.0: 3911; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3912; CHECK-NEXT: vmflt.vv v10, v8, v9 3913; CHECK-NEXT: vmflt.vv v8, v9, v8 3914; CHECK-NEXT: vmor.mm v0, v8, v10 3915; CHECK-NEXT: ret 3916 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 3917 ret <vscale x 2 x i1> %1 3918} 3919 3920define <vscale x 2 x i1> @fcmps_one_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3921; CHECK-LABEL: fcmps_one_vf_nxv2f32: 3922; CHECK: # %bb.0: 3923; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3924; CHECK-NEXT: vmflt.vf v9, v8, fa0 3925; CHECK-NEXT: vmfgt.vf v8, v8, fa0 3926; CHECK-NEXT: vmor.mm v0, v8, v9 3927; CHECK-NEXT: ret 3928 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3929 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3930 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 3931 ret <vscale x 2 x i1> %1 3932} 3933 3934define <vscale x 2 x i1> @fcmps_one_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3935; CHECK-LABEL: fcmps_one_fv_nxv2f32: 3936; CHECK: # %bb.0: 3937; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3938; CHECK-NEXT: vmfgt.vf v9, v8, fa0 3939; CHECK-NEXT: vmflt.vf v8, v8, fa0 3940; CHECK-NEXT: vmor.mm v0, v8, v9 3941; CHECK-NEXT: ret 3942 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3943 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3944 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 3945 ret <vscale x 2 x i1> %1 3946} 3947 3948define <vscale x 2 x i1> @fcmps_ord_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 3949; CHECK-LABEL: fcmps_ord_vv_nxv2f32: 3950; CHECK: # %bb.0: 3951; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3952; CHECK-NEXT: vmfle.vv v9, v9, v9 3953; CHECK-NEXT: vmfle.vv v8, v8, v8 3954; CHECK-NEXT: vmand.mm v0, v8, v9 3955; CHECK-NEXT: ret 3956 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 3957 ret <vscale x 2 x i1> %1 3958} 3959 3960define <vscale x 2 x i1> @fcmps_ord_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3961; CHECK-LABEL: fcmps_ord_vf_nxv2f32: 3962; CHECK: # %bb.0: 3963; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3964; CHECK-NEXT: vfmv.v.f v9, fa0 3965; CHECK-NEXT: vmfle.vf v9, v9, fa0 3966; CHECK-NEXT: vmfle.vv v8, v8, v8 3967; CHECK-NEXT: vmand.mm v0, v8, v9 3968; CHECK-NEXT: ret 3969 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3970 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3971 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 3972 ret <vscale x 2 x i1> %1 3973} 3974 3975define <vscale x 2 x i1> @fcmps_ord_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 3976; CHECK-LABEL: fcmps_ord_fv_nxv2f32: 3977; CHECK: # %bb.0: 3978; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3979; CHECK-NEXT: vfmv.v.f v9, fa0 3980; CHECK-NEXT: vmfle.vf v9, v9, fa0 3981; CHECK-NEXT: vmfle.vv v8, v8, v8 3982; CHECK-NEXT: vmand.mm v0, v9, v8 3983; CHECK-NEXT: ret 3984 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 3985 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 3986 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 3987 ret <vscale x 2 x i1> %1 3988} 3989 3990define <vscale x 2 x i1> @fcmps_ueq_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 3991; CHECK-LABEL: fcmps_ueq_vv_nxv2f32: 3992; CHECK: # %bb.0: 3993; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 3994; CHECK-NEXT: vmflt.vv v10, v8, v9 3995; CHECK-NEXT: vmflt.vv v8, v9, v8 3996; CHECK-NEXT: vmnor.mm v0, v8, v10 3997; CHECK-NEXT: ret 3998 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 3999 ret <vscale x 2 x i1> %1 4000} 4001 4002define <vscale x 2 x i1> @fcmps_ueq_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4003; CHECK-LABEL: fcmps_ueq_vf_nxv2f32: 4004; CHECK: # %bb.0: 4005; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4006; CHECK-NEXT: vmflt.vf v9, v8, fa0 4007; CHECK-NEXT: vmfgt.vf v8, v8, fa0 4008; CHECK-NEXT: vmnor.mm v0, v8, v9 4009; CHECK-NEXT: ret 4010 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4011 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4012 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 4013 ret <vscale x 2 x i1> %1 4014} 4015 4016define <vscale x 2 x i1> @fcmps_ueq_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4017; CHECK-LABEL: fcmps_ueq_fv_nxv2f32: 4018; CHECK: # %bb.0: 4019; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4020; CHECK-NEXT: vmfgt.vf v9, v8, fa0 4021; CHECK-NEXT: vmflt.vf v8, v8, fa0 4022; CHECK-NEXT: vmnor.mm v0, v8, v9 4023; CHECK-NEXT: ret 4024 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4025 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4026 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 4027 ret <vscale x 2 x i1> %1 4028} 4029 4030define <vscale x 2 x i1> @fcmps_ugt_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 4031; CHECK-LABEL: fcmps_ugt_vv_nxv2f32: 4032; CHECK: # %bb.0: 4033; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4034; CHECK-NEXT: vmfle.vv v8, v8, v9 4035; CHECK-NEXT: vmnot.m v0, v8 4036; CHECK-NEXT: ret 4037 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 4038 ret <vscale x 2 x i1> %1 4039} 4040 4041define <vscale x 2 x i1> @fcmps_ugt_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4042; CHECK-LABEL: fcmps_ugt_vf_nxv2f32: 4043; CHECK: # %bb.0: 4044; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4045; CHECK-NEXT: vmfle.vf v8, v8, fa0 4046; CHECK-NEXT: vmnot.m v0, v8 4047; CHECK-NEXT: ret 4048 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4049 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4050 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 4051 ret <vscale x 2 x i1> %1 4052} 4053 4054define <vscale x 2 x i1> @fcmps_ugt_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4055; CHECK-LABEL: fcmps_ugt_fv_nxv2f32: 4056; CHECK: # %bb.0: 4057; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4058; CHECK-NEXT: vmfge.vf v8, v8, fa0 4059; CHECK-NEXT: vmnot.m v0, v8 4060; CHECK-NEXT: ret 4061 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4062 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4063 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 4064 ret <vscale x 2 x i1> %1 4065} 4066 4067define <vscale x 2 x i1> @fcmps_uge_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 4068; CHECK-LABEL: fcmps_uge_vv_nxv2f32: 4069; CHECK: # %bb.0: 4070; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4071; CHECK-NEXT: vmflt.vv v8, v8, v9 4072; CHECK-NEXT: vmnot.m v0, v8 4073; CHECK-NEXT: ret 4074 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 4075 ret <vscale x 2 x i1> %1 4076} 4077 4078define <vscale x 2 x i1> @fcmps_uge_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4079; CHECK-LABEL: fcmps_uge_vf_nxv2f32: 4080; CHECK: # %bb.0: 4081; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4082; CHECK-NEXT: vmflt.vf v8, v8, fa0 4083; CHECK-NEXT: vmnot.m v0, v8 4084; CHECK-NEXT: ret 4085 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4086 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4087 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 4088 ret <vscale x 2 x i1> %1 4089} 4090 4091define <vscale x 2 x i1> @fcmps_uge_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4092; CHECK-LABEL: fcmps_uge_fv_nxv2f32: 4093; CHECK: # %bb.0: 4094; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4095; CHECK-NEXT: vmfgt.vf v8, v8, fa0 4096; CHECK-NEXT: vmnot.m v0, v8 4097; CHECK-NEXT: ret 4098 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4099 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4100 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 4101 ret <vscale x 2 x i1> %1 4102} 4103 4104define <vscale x 2 x i1> @fcmps_ult_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 4105; CHECK-LABEL: fcmps_ult_vv_nxv2f32: 4106; CHECK: # %bb.0: 4107; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4108; CHECK-NEXT: vmfle.vv v8, v9, v8 4109; CHECK-NEXT: vmnot.m v0, v8 4110; CHECK-NEXT: ret 4111 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 4112 ret <vscale x 2 x i1> %1 4113} 4114 4115define <vscale x 2 x i1> @fcmps_ult_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4116; CHECK-LABEL: fcmps_ult_vf_nxv2f32: 4117; CHECK: # %bb.0: 4118; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4119; CHECK-NEXT: vmfge.vf v8, v8, fa0 4120; CHECK-NEXT: vmnot.m v0, v8 4121; CHECK-NEXT: ret 4122 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4123 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4124 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 4125 ret <vscale x 2 x i1> %1 4126} 4127 4128define <vscale x 2 x i1> @fcmps_ult_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4129; CHECK-LABEL: fcmps_ult_fv_nxv2f32: 4130; CHECK: # %bb.0: 4131; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4132; CHECK-NEXT: vmfle.vf v8, v8, fa0 4133; CHECK-NEXT: vmnot.m v0, v8 4134; CHECK-NEXT: ret 4135 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4136 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4137 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 4138 ret <vscale x 2 x i1> %1 4139} 4140 4141define <vscale x 2 x i1> @fcmps_ule_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 4142; CHECK-LABEL: fcmps_ule_vv_nxv2f32: 4143; CHECK: # %bb.0: 4144; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4145; CHECK-NEXT: vmflt.vv v8, v9, v8 4146; CHECK-NEXT: vmnot.m v0, v8 4147; CHECK-NEXT: ret 4148 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 4149 ret <vscale x 2 x i1> %1 4150} 4151 4152define <vscale x 2 x i1> @fcmps_ule_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4153; CHECK-LABEL: fcmps_ule_vf_nxv2f32: 4154; CHECK: # %bb.0: 4155; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4156; CHECK-NEXT: vmfgt.vf v8, v8, fa0 4157; CHECK-NEXT: vmnot.m v0, v8 4158; CHECK-NEXT: ret 4159 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4160 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4161 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 4162 ret <vscale x 2 x i1> %1 4163} 4164 4165define <vscale x 2 x i1> @fcmps_ule_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4166; CHECK-LABEL: fcmps_ule_fv_nxv2f32: 4167; CHECK: # %bb.0: 4168; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4169; CHECK-NEXT: vmflt.vf v8, v8, fa0 4170; CHECK-NEXT: vmnot.m v0, v8 4171; CHECK-NEXT: ret 4172 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4173 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4174 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 4175 ret <vscale x 2 x i1> %1 4176} 4177 4178define <vscale x 2 x i1> @fcmps_une_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 4179; CHECK-LABEL: fcmps_une_vv_nxv2f32: 4180; CHECK: # %bb.0: 4181; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4182; CHECK-NEXT: vmfle.vv v10, v9, v8 4183; CHECK-NEXT: vmfle.vv v8, v8, v9 4184; CHECK-NEXT: vmnand.mm v0, v8, v10 4185; CHECK-NEXT: ret 4186 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 4187 ret <vscale x 2 x i1> %1 4188} 4189 4190define <vscale x 2 x i1> @fcmps_une_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4191; CHECK-LABEL: fcmps_une_vf_nxv2f32: 4192; CHECK: # %bb.0: 4193; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4194; CHECK-NEXT: vmfge.vf v9, v8, fa0 4195; CHECK-NEXT: vmfle.vf v8, v8, fa0 4196; CHECK-NEXT: vmnand.mm v0, v8, v9 4197; CHECK-NEXT: ret 4198 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4199 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4200 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 4201 ret <vscale x 2 x i1> %1 4202} 4203 4204define <vscale x 2 x i1> @fcmps_une_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4205; CHECK-LABEL: fcmps_une_fv_nxv2f32: 4206; CHECK: # %bb.0: 4207; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4208; CHECK-NEXT: vmfle.vf v9, v8, fa0 4209; CHECK-NEXT: vmfge.vf v8, v8, fa0 4210; CHECK-NEXT: vmnand.mm v0, v8, v9 4211; CHECK-NEXT: ret 4212 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4213 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4214 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 4215 ret <vscale x 2 x i1> %1 4216} 4217 4218define <vscale x 2 x i1> @fcmps_uno_vv_nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb) nounwind strictfp { 4219; CHECK-LABEL: fcmps_uno_vv_nxv2f32: 4220; CHECK: # %bb.0: 4221; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4222; CHECK-NEXT: vmfle.vv v9, v9, v9 4223; CHECK-NEXT: vmfle.vv v8, v8, v8 4224; CHECK-NEXT: vmnot.m v8, v8 4225; CHECK-NEXT: vmorn.mm v0, v8, v9 4226; CHECK-NEXT: ret 4227 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 4228 ret <vscale x 2 x i1> %1 4229} 4230 4231define <vscale x 2 x i1> @fcmps_uno_vf_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4232; CHECK-LABEL: fcmps_uno_vf_nxv2f32: 4233; CHECK: # %bb.0: 4234; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4235; CHECK-NEXT: vfmv.v.f v9, fa0 4236; CHECK-NEXT: vmfle.vv v8, v8, v8 4237; CHECK-NEXT: vmfle.vf v9, v9, fa0 4238; CHECK-NEXT: vmnot.m v8, v8 4239; CHECK-NEXT: vmorn.mm v0, v8, v9 4240; CHECK-NEXT: ret 4241 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4242 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4243 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %va, <vscale x 2 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 4244 ret <vscale x 2 x i1> %1 4245} 4246 4247define <vscale x 2 x i1> @fcmps_uno_fv_nxv2f32(<vscale x 2 x float> %va, float %b) nounwind strictfp { 4248; CHECK-LABEL: fcmps_uno_fv_nxv2f32: 4249; CHECK: # %bb.0: 4250; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, ma 4251; CHECK-NEXT: vfmv.v.f v9, fa0 4252; CHECK-NEXT: vmfle.vf v9, v9, fa0 4253; CHECK-NEXT: vmnot.m v9, v9 4254; CHECK-NEXT: vmfle.vv v8, v8, v8 4255; CHECK-NEXT: vmorn.mm v0, v9, v8 4256; CHECK-NEXT: ret 4257 %head = insertelement <vscale x 2 x float> poison, float %b, i32 0 4258 %splat = shufflevector <vscale x 2 x float> %head, <vscale x 2 x float> poison, <vscale x 2 x i32> zeroinitializer 4259 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f32(<vscale x 2 x float> %splat, <vscale x 2 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 4260 ret <vscale x 2 x i1> %1 4261} 4262 4263declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, metadata, metadata) 4264define <vscale x 4 x i1> @fcmps_oeq_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4265; CHECK-LABEL: fcmps_oeq_vv_nxv4f32: 4266; CHECK: # %bb.0: 4267; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4268; CHECK-NEXT: vmfle.vv v12, v10, v8 4269; CHECK-NEXT: vmfle.vv v13, v8, v10 4270; CHECK-NEXT: vmand.mm v0, v13, v12 4271; CHECK-NEXT: ret 4272 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 4273 ret <vscale x 4 x i1> %1 4274} 4275 4276define <vscale x 4 x i1> @fcmps_oeq_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4277; CHECK-LABEL: fcmps_oeq_vf_nxv4f32: 4278; CHECK: # %bb.0: 4279; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4280; CHECK-NEXT: vmfge.vf v10, v8, fa0 4281; CHECK-NEXT: vmfle.vf v11, v8, fa0 4282; CHECK-NEXT: vmand.mm v0, v11, v10 4283; CHECK-NEXT: ret 4284 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4285 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4286 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 4287 ret <vscale x 4 x i1> %1 4288} 4289 4290define <vscale x 4 x i1> @fcmps_oeq_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4291; CHECK-LABEL: fcmps_oeq_fv_nxv4f32: 4292; CHECK: # %bb.0: 4293; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4294; CHECK-NEXT: vmfle.vf v10, v8, fa0 4295; CHECK-NEXT: vmfge.vf v11, v8, fa0 4296; CHECK-NEXT: vmand.mm v0, v11, v10 4297; CHECK-NEXT: ret 4298 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4299 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4300 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 4301 ret <vscale x 4 x i1> %1 4302} 4303 4304define <vscale x 4 x i1> @fcmps_ogt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4305; CHECK-LABEL: fcmps_ogt_vv_nxv4f32: 4306; CHECK: # %bb.0: 4307; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4308; CHECK-NEXT: vmflt.vv v0, v10, v8 4309; CHECK-NEXT: ret 4310 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 4311 ret <vscale x 4 x i1> %1 4312} 4313 4314define <vscale x 4 x i1> @fcmps_ogt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4315; CHECK-LABEL: fcmps_ogt_vf_nxv4f32: 4316; CHECK: # %bb.0: 4317; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4318; CHECK-NEXT: vmfgt.vf v0, v8, fa0 4319; CHECK-NEXT: ret 4320 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4321 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4322 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 4323 ret <vscale x 4 x i1> %1 4324} 4325 4326define <vscale x 4 x i1> @fcmps_ogt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4327; CHECK-LABEL: fcmps_ogt_fv_nxv4f32: 4328; CHECK: # %bb.0: 4329; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4330; CHECK-NEXT: vmflt.vf v0, v8, fa0 4331; CHECK-NEXT: ret 4332 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4333 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4334 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 4335 ret <vscale x 4 x i1> %1 4336} 4337 4338define <vscale x 4 x i1> @fcmps_oge_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4339; CHECK-LABEL: fcmps_oge_vv_nxv4f32: 4340; CHECK: # %bb.0: 4341; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4342; CHECK-NEXT: vmfle.vv v0, v10, v8 4343; CHECK-NEXT: ret 4344 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 4345 ret <vscale x 4 x i1> %1 4346} 4347 4348define <vscale x 4 x i1> @fcmps_oge_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4349; CHECK-LABEL: fcmps_oge_vf_nxv4f32: 4350; CHECK: # %bb.0: 4351; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4352; CHECK-NEXT: vmfge.vf v0, v8, fa0 4353; CHECK-NEXT: ret 4354 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4355 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4356 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 4357 ret <vscale x 4 x i1> %1 4358} 4359 4360define <vscale x 4 x i1> @fcmps_oge_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4361; CHECK-LABEL: fcmps_oge_fv_nxv4f32: 4362; CHECK: # %bb.0: 4363; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4364; CHECK-NEXT: vmfle.vf v0, v8, fa0 4365; CHECK-NEXT: ret 4366 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4367 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4368 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 4369 ret <vscale x 4 x i1> %1 4370} 4371 4372define <vscale x 4 x i1> @fcmps_olt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4373; CHECK-LABEL: fcmps_olt_vv_nxv4f32: 4374; CHECK: # %bb.0: 4375; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4376; CHECK-NEXT: vmflt.vv v0, v8, v10 4377; CHECK-NEXT: ret 4378 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 4379 ret <vscale x 4 x i1> %1 4380} 4381 4382define <vscale x 4 x i1> @fcmps_olt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4383; CHECK-LABEL: fcmps_olt_vf_nxv4f32: 4384; CHECK: # %bb.0: 4385; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4386; CHECK-NEXT: vmflt.vf v0, v8, fa0 4387; CHECK-NEXT: ret 4388 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4389 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4390 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 4391 ret <vscale x 4 x i1> %1 4392} 4393 4394define <vscale x 4 x i1> @fcmps_olt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4395; CHECK-LABEL: fcmps_olt_fv_nxv4f32: 4396; CHECK: # %bb.0: 4397; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4398; CHECK-NEXT: vmfgt.vf v0, v8, fa0 4399; CHECK-NEXT: ret 4400 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4401 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4402 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 4403 ret <vscale x 4 x i1> %1 4404} 4405 4406define <vscale x 4 x i1> @fcmps_ole_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4407; CHECK-LABEL: fcmps_ole_vv_nxv4f32: 4408; CHECK: # %bb.0: 4409; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4410; CHECK-NEXT: vmfle.vv v0, v8, v10 4411; CHECK-NEXT: ret 4412 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 4413 ret <vscale x 4 x i1> %1 4414} 4415 4416define <vscale x 4 x i1> @fcmps_ole_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4417; CHECK-LABEL: fcmps_ole_vf_nxv4f32: 4418; CHECK: # %bb.0: 4419; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4420; CHECK-NEXT: vmfle.vf v0, v8, fa0 4421; CHECK-NEXT: ret 4422 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4423 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4424 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 4425 ret <vscale x 4 x i1> %1 4426} 4427 4428define <vscale x 4 x i1> @fcmps_ole_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4429; CHECK-LABEL: fcmps_ole_fv_nxv4f32: 4430; CHECK: # %bb.0: 4431; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4432; CHECK-NEXT: vmfge.vf v0, v8, fa0 4433; CHECK-NEXT: ret 4434 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4435 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4436 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 4437 ret <vscale x 4 x i1> %1 4438} 4439 4440define <vscale x 4 x i1> @fcmps_one_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4441; CHECK-LABEL: fcmps_one_vv_nxv4f32: 4442; CHECK: # %bb.0: 4443; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4444; CHECK-NEXT: vmflt.vv v12, v8, v10 4445; CHECK-NEXT: vmflt.vv v13, v10, v8 4446; CHECK-NEXT: vmor.mm v0, v13, v12 4447; CHECK-NEXT: ret 4448 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 4449 ret <vscale x 4 x i1> %1 4450} 4451 4452define <vscale x 4 x i1> @fcmps_one_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4453; CHECK-LABEL: fcmps_one_vf_nxv4f32: 4454; CHECK: # %bb.0: 4455; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4456; CHECK-NEXT: vmflt.vf v10, v8, fa0 4457; CHECK-NEXT: vmfgt.vf v11, v8, fa0 4458; CHECK-NEXT: vmor.mm v0, v11, v10 4459; CHECK-NEXT: ret 4460 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4461 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4462 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 4463 ret <vscale x 4 x i1> %1 4464} 4465 4466define <vscale x 4 x i1> @fcmps_one_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4467; CHECK-LABEL: fcmps_one_fv_nxv4f32: 4468; CHECK: # %bb.0: 4469; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4470; CHECK-NEXT: vmfgt.vf v10, v8, fa0 4471; CHECK-NEXT: vmflt.vf v11, v8, fa0 4472; CHECK-NEXT: vmor.mm v0, v11, v10 4473; CHECK-NEXT: ret 4474 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4475 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4476 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 4477 ret <vscale x 4 x i1> %1 4478} 4479 4480define <vscale x 4 x i1> @fcmps_ord_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4481; CHECK-LABEL: fcmps_ord_vv_nxv4f32: 4482; CHECK: # %bb.0: 4483; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4484; CHECK-NEXT: vmfle.vv v12, v10, v10 4485; CHECK-NEXT: vmfle.vv v10, v8, v8 4486; CHECK-NEXT: vmand.mm v0, v10, v12 4487; CHECK-NEXT: ret 4488 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 4489 ret <vscale x 4 x i1> %1 4490} 4491 4492define <vscale x 4 x i1> @fcmps_ord_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4493; CHECK-LABEL: fcmps_ord_vf_nxv4f32: 4494; CHECK: # %bb.0: 4495; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4496; CHECK-NEXT: vfmv.v.f v10, fa0 4497; CHECK-NEXT: vmfle.vf v12, v10, fa0 4498; CHECK-NEXT: vmfle.vv v10, v8, v8 4499; CHECK-NEXT: vmand.mm v0, v10, v12 4500; CHECK-NEXT: ret 4501 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4502 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4503 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 4504 ret <vscale x 4 x i1> %1 4505} 4506 4507define <vscale x 4 x i1> @fcmps_ord_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4508; CHECK-LABEL: fcmps_ord_fv_nxv4f32: 4509; CHECK: # %bb.0: 4510; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4511; CHECK-NEXT: vfmv.v.f v10, fa0 4512; CHECK-NEXT: vmfle.vf v12, v10, fa0 4513; CHECK-NEXT: vmfle.vv v10, v8, v8 4514; CHECK-NEXT: vmand.mm v0, v12, v10 4515; CHECK-NEXT: ret 4516 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4517 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4518 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 4519 ret <vscale x 4 x i1> %1 4520} 4521 4522define <vscale x 4 x i1> @fcmps_ueq_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4523; CHECK-LABEL: fcmps_ueq_vv_nxv4f32: 4524; CHECK: # %bb.0: 4525; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4526; CHECK-NEXT: vmflt.vv v12, v8, v10 4527; CHECK-NEXT: vmflt.vv v13, v10, v8 4528; CHECK-NEXT: vmnor.mm v0, v13, v12 4529; CHECK-NEXT: ret 4530 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 4531 ret <vscale x 4 x i1> %1 4532} 4533 4534define <vscale x 4 x i1> @fcmps_ueq_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4535; CHECK-LABEL: fcmps_ueq_vf_nxv4f32: 4536; CHECK: # %bb.0: 4537; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4538; CHECK-NEXT: vmflt.vf v10, v8, fa0 4539; CHECK-NEXT: vmfgt.vf v11, v8, fa0 4540; CHECK-NEXT: vmnor.mm v0, v11, v10 4541; CHECK-NEXT: ret 4542 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4543 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4544 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 4545 ret <vscale x 4 x i1> %1 4546} 4547 4548define <vscale x 4 x i1> @fcmps_ueq_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4549; CHECK-LABEL: fcmps_ueq_fv_nxv4f32: 4550; CHECK: # %bb.0: 4551; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4552; CHECK-NEXT: vmfgt.vf v10, v8, fa0 4553; CHECK-NEXT: vmflt.vf v11, v8, fa0 4554; CHECK-NEXT: vmnor.mm v0, v11, v10 4555; CHECK-NEXT: ret 4556 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4557 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4558 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 4559 ret <vscale x 4 x i1> %1 4560} 4561 4562define <vscale x 4 x i1> @fcmps_ugt_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4563; CHECK-LABEL: fcmps_ugt_vv_nxv4f32: 4564; CHECK: # %bb.0: 4565; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4566; CHECK-NEXT: vmfle.vv v12, v8, v10 4567; CHECK-NEXT: vmnot.m v0, v12 4568; CHECK-NEXT: ret 4569 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 4570 ret <vscale x 4 x i1> %1 4571} 4572 4573define <vscale x 4 x i1> @fcmps_ugt_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4574; CHECK-LABEL: fcmps_ugt_vf_nxv4f32: 4575; CHECK: # %bb.0: 4576; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4577; CHECK-NEXT: vmfle.vf v10, v8, fa0 4578; CHECK-NEXT: vmnot.m v0, v10 4579; CHECK-NEXT: ret 4580 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4581 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4582 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 4583 ret <vscale x 4 x i1> %1 4584} 4585 4586define <vscale x 4 x i1> @fcmps_ugt_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4587; CHECK-LABEL: fcmps_ugt_fv_nxv4f32: 4588; CHECK: # %bb.0: 4589; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4590; CHECK-NEXT: vmfge.vf v10, v8, fa0 4591; CHECK-NEXT: vmnot.m v0, v10 4592; CHECK-NEXT: ret 4593 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4594 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4595 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 4596 ret <vscale x 4 x i1> %1 4597} 4598 4599define <vscale x 4 x i1> @fcmps_uge_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4600; CHECK-LABEL: fcmps_uge_vv_nxv4f32: 4601; CHECK: # %bb.0: 4602; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4603; CHECK-NEXT: vmflt.vv v12, v8, v10 4604; CHECK-NEXT: vmnot.m v0, v12 4605; CHECK-NEXT: ret 4606 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 4607 ret <vscale x 4 x i1> %1 4608} 4609 4610define <vscale x 4 x i1> @fcmps_uge_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4611; CHECK-LABEL: fcmps_uge_vf_nxv4f32: 4612; CHECK: # %bb.0: 4613; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4614; CHECK-NEXT: vmflt.vf v10, v8, fa0 4615; CHECK-NEXT: vmnot.m v0, v10 4616; CHECK-NEXT: ret 4617 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4618 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4619 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 4620 ret <vscale x 4 x i1> %1 4621} 4622 4623define <vscale x 4 x i1> @fcmps_uge_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4624; CHECK-LABEL: fcmps_uge_fv_nxv4f32: 4625; CHECK: # %bb.0: 4626; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4627; CHECK-NEXT: vmfgt.vf v10, v8, fa0 4628; CHECK-NEXT: vmnot.m v0, v10 4629; CHECK-NEXT: ret 4630 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4631 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4632 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 4633 ret <vscale x 4 x i1> %1 4634} 4635 4636define <vscale x 4 x i1> @fcmps_ult_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4637; CHECK-LABEL: fcmps_ult_vv_nxv4f32: 4638; CHECK: # %bb.0: 4639; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4640; CHECK-NEXT: vmfle.vv v12, v10, v8 4641; CHECK-NEXT: vmnot.m v0, v12 4642; CHECK-NEXT: ret 4643 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 4644 ret <vscale x 4 x i1> %1 4645} 4646 4647define <vscale x 4 x i1> @fcmps_ult_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4648; CHECK-LABEL: fcmps_ult_vf_nxv4f32: 4649; CHECK: # %bb.0: 4650; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4651; CHECK-NEXT: vmfge.vf v10, v8, fa0 4652; CHECK-NEXT: vmnot.m v0, v10 4653; CHECK-NEXT: ret 4654 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4655 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4656 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 4657 ret <vscale x 4 x i1> %1 4658} 4659 4660define <vscale x 4 x i1> @fcmps_ult_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4661; CHECK-LABEL: fcmps_ult_fv_nxv4f32: 4662; CHECK: # %bb.0: 4663; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4664; CHECK-NEXT: vmfle.vf v10, v8, fa0 4665; CHECK-NEXT: vmnot.m v0, v10 4666; CHECK-NEXT: ret 4667 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4668 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4669 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 4670 ret <vscale x 4 x i1> %1 4671} 4672 4673define <vscale x 4 x i1> @fcmps_ule_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4674; CHECK-LABEL: fcmps_ule_vv_nxv4f32: 4675; CHECK: # %bb.0: 4676; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4677; CHECK-NEXT: vmflt.vv v12, v10, v8 4678; CHECK-NEXT: vmnot.m v0, v12 4679; CHECK-NEXT: ret 4680 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 4681 ret <vscale x 4 x i1> %1 4682} 4683 4684define <vscale x 4 x i1> @fcmps_ule_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4685; CHECK-LABEL: fcmps_ule_vf_nxv4f32: 4686; CHECK: # %bb.0: 4687; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4688; CHECK-NEXT: vmfgt.vf v10, v8, fa0 4689; CHECK-NEXT: vmnot.m v0, v10 4690; CHECK-NEXT: ret 4691 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4692 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4693 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 4694 ret <vscale x 4 x i1> %1 4695} 4696 4697define <vscale x 4 x i1> @fcmps_ule_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4698; CHECK-LABEL: fcmps_ule_fv_nxv4f32: 4699; CHECK: # %bb.0: 4700; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4701; CHECK-NEXT: vmflt.vf v10, v8, fa0 4702; CHECK-NEXT: vmnot.m v0, v10 4703; CHECK-NEXT: ret 4704 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4705 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4706 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 4707 ret <vscale x 4 x i1> %1 4708} 4709 4710define <vscale x 4 x i1> @fcmps_une_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4711; CHECK-LABEL: fcmps_une_vv_nxv4f32: 4712; CHECK: # %bb.0: 4713; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4714; CHECK-NEXT: vmfle.vv v12, v10, v8 4715; CHECK-NEXT: vmfle.vv v13, v8, v10 4716; CHECK-NEXT: vmnand.mm v0, v13, v12 4717; CHECK-NEXT: ret 4718 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 4719 ret <vscale x 4 x i1> %1 4720} 4721 4722define <vscale x 4 x i1> @fcmps_une_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4723; CHECK-LABEL: fcmps_une_vf_nxv4f32: 4724; CHECK: # %bb.0: 4725; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4726; CHECK-NEXT: vmfge.vf v10, v8, fa0 4727; CHECK-NEXT: vmfle.vf v11, v8, fa0 4728; CHECK-NEXT: vmnand.mm v0, v11, v10 4729; CHECK-NEXT: ret 4730 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4731 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4732 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 4733 ret <vscale x 4 x i1> %1 4734} 4735 4736define <vscale x 4 x i1> @fcmps_une_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4737; CHECK-LABEL: fcmps_une_fv_nxv4f32: 4738; CHECK: # %bb.0: 4739; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4740; CHECK-NEXT: vmfle.vf v10, v8, fa0 4741; CHECK-NEXT: vmfge.vf v11, v8, fa0 4742; CHECK-NEXT: vmnand.mm v0, v11, v10 4743; CHECK-NEXT: ret 4744 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4745 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4746 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 4747 ret <vscale x 4 x i1> %1 4748} 4749 4750define <vscale x 4 x i1> @fcmps_uno_vv_nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb) nounwind strictfp { 4751; CHECK-LABEL: fcmps_uno_vv_nxv4f32: 4752; CHECK: # %bb.0: 4753; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4754; CHECK-NEXT: vmfle.vv v12, v10, v10 4755; CHECK-NEXT: vmfle.vv v10, v8, v8 4756; CHECK-NEXT: vmnot.m v8, v10 4757; CHECK-NEXT: vmorn.mm v0, v8, v12 4758; CHECK-NEXT: ret 4759 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 4760 ret <vscale x 4 x i1> %1 4761} 4762 4763define <vscale x 4 x i1> @fcmps_uno_vf_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4764; CHECK-LABEL: fcmps_uno_vf_nxv4f32: 4765; CHECK: # %bb.0: 4766; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4767; CHECK-NEXT: vfmv.v.f v10, fa0 4768; CHECK-NEXT: vmfle.vv v12, v8, v8 4769; CHECK-NEXT: vmfle.vf v8, v10, fa0 4770; CHECK-NEXT: vmnot.m v9, v12 4771; CHECK-NEXT: vmorn.mm v0, v9, v8 4772; CHECK-NEXT: ret 4773 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4774 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4775 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %va, <vscale x 4 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 4776 ret <vscale x 4 x i1> %1 4777} 4778 4779define <vscale x 4 x i1> @fcmps_uno_fv_nxv4f32(<vscale x 4 x float> %va, float %b) nounwind strictfp { 4780; CHECK-LABEL: fcmps_uno_fv_nxv4f32: 4781; CHECK: # %bb.0: 4782; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, ma 4783; CHECK-NEXT: vfmv.v.f v10, fa0 4784; CHECK-NEXT: vmfle.vf v12, v10, fa0 4785; CHECK-NEXT: vmnot.m v10, v12 4786; CHECK-NEXT: vmfle.vv v11, v8, v8 4787; CHECK-NEXT: vmorn.mm v0, v10, v11 4788; CHECK-NEXT: ret 4789 %head = insertelement <vscale x 4 x float> poison, float %b, i32 0 4790 %splat = shufflevector <vscale x 4 x float> %head, <vscale x 4 x float> poison, <vscale x 4 x i32> zeroinitializer 4791 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f32(<vscale x 4 x float> %splat, <vscale x 4 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 4792 ret <vscale x 4 x i1> %1 4793} 4794 4795declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float>, <vscale x 8 x float>, metadata, metadata) 4796define <vscale x 8 x i1> @fcmps_oeq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 4797; CHECK-LABEL: fcmps_oeq_vv_nxv8f32: 4798; CHECK: # %bb.0: 4799; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4800; CHECK-NEXT: vmfle.vv v16, v12, v8 4801; CHECK-NEXT: vmfle.vv v17, v8, v12 4802; CHECK-NEXT: vmand.mm v0, v17, v16 4803; CHECK-NEXT: ret 4804 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 4805 ret <vscale x 8 x i1> %1 4806} 4807 4808define <vscale x 8 x i1> @fcmps_oeq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4809; CHECK-LABEL: fcmps_oeq_vf_nxv8f32: 4810; CHECK: # %bb.0: 4811; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4812; CHECK-NEXT: vmfge.vf v12, v8, fa0 4813; CHECK-NEXT: vmfle.vf v13, v8, fa0 4814; CHECK-NEXT: vmand.mm v0, v13, v12 4815; CHECK-NEXT: ret 4816 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 4817 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 4818 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 4819 ret <vscale x 8 x i1> %1 4820} 4821 4822define <vscale x 8 x i1> @fcmps_oeq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4823; CHECK-LABEL: fcmps_oeq_fv_nxv8f32: 4824; CHECK: # %bb.0: 4825; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4826; CHECK-NEXT: vmfle.vf v12, v8, fa0 4827; CHECK-NEXT: vmfge.vf v13, v8, fa0 4828; CHECK-NEXT: vmand.mm v0, v13, v12 4829; CHECK-NEXT: ret 4830 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 4831 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 4832 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 4833 ret <vscale x 8 x i1> %1 4834} 4835 4836define <vscale x 8 x i1> @fcmps_ogt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 4837; CHECK-LABEL: fcmps_ogt_vv_nxv8f32: 4838; CHECK: # %bb.0: 4839; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4840; CHECK-NEXT: vmflt.vv v0, v12, v8 4841; CHECK-NEXT: ret 4842 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 4843 ret <vscale x 8 x i1> %1 4844} 4845 4846define <vscale x 8 x i1> @fcmps_ogt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4847; CHECK-LABEL: fcmps_ogt_vf_nxv8f32: 4848; CHECK: # %bb.0: 4849; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4850; CHECK-NEXT: vmfgt.vf v0, v8, fa0 4851; CHECK-NEXT: ret 4852 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 4853 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 4854 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 4855 ret <vscale x 8 x i1> %1 4856} 4857 4858define <vscale x 8 x i1> @fcmps_ogt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4859; CHECK-LABEL: fcmps_ogt_fv_nxv8f32: 4860; CHECK: # %bb.0: 4861; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4862; CHECK-NEXT: vmflt.vf v0, v8, fa0 4863; CHECK-NEXT: ret 4864 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 4865 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 4866 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 4867 ret <vscale x 8 x i1> %1 4868} 4869 4870define <vscale x 8 x i1> @fcmps_oge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 4871; CHECK-LABEL: fcmps_oge_vv_nxv8f32: 4872; CHECK: # %bb.0: 4873; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4874; CHECK-NEXT: vmfle.vv v0, v12, v8 4875; CHECK-NEXT: ret 4876 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 4877 ret <vscale x 8 x i1> %1 4878} 4879 4880define <vscale x 8 x i1> @fcmps_oge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4881; CHECK-LABEL: fcmps_oge_vf_nxv8f32: 4882; CHECK: # %bb.0: 4883; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4884; CHECK-NEXT: vmfge.vf v0, v8, fa0 4885; CHECK-NEXT: ret 4886 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 4887 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 4888 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 4889 ret <vscale x 8 x i1> %1 4890} 4891 4892define <vscale x 8 x i1> @fcmps_oge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4893; CHECK-LABEL: fcmps_oge_fv_nxv8f32: 4894; CHECK: # %bb.0: 4895; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4896; CHECK-NEXT: vmfle.vf v0, v8, fa0 4897; CHECK-NEXT: ret 4898 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 4899 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 4900 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 4901 ret <vscale x 8 x i1> %1 4902} 4903 4904define <vscale x 8 x i1> @fcmps_olt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 4905; CHECK-LABEL: fcmps_olt_vv_nxv8f32: 4906; CHECK: # %bb.0: 4907; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4908; CHECK-NEXT: vmflt.vv v0, v8, v12 4909; CHECK-NEXT: ret 4910 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 4911 ret <vscale x 8 x i1> %1 4912} 4913 4914define <vscale x 8 x i1> @fcmps_olt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4915; CHECK-LABEL: fcmps_olt_vf_nxv8f32: 4916; CHECK: # %bb.0: 4917; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4918; CHECK-NEXT: vmflt.vf v0, v8, fa0 4919; CHECK-NEXT: ret 4920 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 4921 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 4922 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 4923 ret <vscale x 8 x i1> %1 4924} 4925 4926define <vscale x 8 x i1> @fcmps_olt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4927; CHECK-LABEL: fcmps_olt_fv_nxv8f32: 4928; CHECK: # %bb.0: 4929; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4930; CHECK-NEXT: vmfgt.vf v0, v8, fa0 4931; CHECK-NEXT: ret 4932 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 4933 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 4934 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 4935 ret <vscale x 8 x i1> %1 4936} 4937 4938define <vscale x 8 x i1> @fcmps_ole_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 4939; CHECK-LABEL: fcmps_ole_vv_nxv8f32: 4940; CHECK: # %bb.0: 4941; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4942; CHECK-NEXT: vmfle.vv v0, v8, v12 4943; CHECK-NEXT: ret 4944 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 4945 ret <vscale x 8 x i1> %1 4946} 4947 4948define <vscale x 8 x i1> @fcmps_ole_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4949; CHECK-LABEL: fcmps_ole_vf_nxv8f32: 4950; CHECK: # %bb.0: 4951; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4952; CHECK-NEXT: vmfle.vf v0, v8, fa0 4953; CHECK-NEXT: ret 4954 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 4955 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 4956 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 4957 ret <vscale x 8 x i1> %1 4958} 4959 4960define <vscale x 8 x i1> @fcmps_ole_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4961; CHECK-LABEL: fcmps_ole_fv_nxv8f32: 4962; CHECK: # %bb.0: 4963; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4964; CHECK-NEXT: vmfge.vf v0, v8, fa0 4965; CHECK-NEXT: ret 4966 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 4967 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 4968 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 4969 ret <vscale x 8 x i1> %1 4970} 4971 4972define <vscale x 8 x i1> @fcmps_one_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 4973; CHECK-LABEL: fcmps_one_vv_nxv8f32: 4974; CHECK: # %bb.0: 4975; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4976; CHECK-NEXT: vmflt.vv v16, v8, v12 4977; CHECK-NEXT: vmflt.vv v17, v12, v8 4978; CHECK-NEXT: vmor.mm v0, v17, v16 4979; CHECK-NEXT: ret 4980 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 4981 ret <vscale x 8 x i1> %1 4982} 4983 4984define <vscale x 8 x i1> @fcmps_one_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4985; CHECK-LABEL: fcmps_one_vf_nxv8f32: 4986; CHECK: # %bb.0: 4987; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 4988; CHECK-NEXT: vmflt.vf v12, v8, fa0 4989; CHECK-NEXT: vmfgt.vf v13, v8, fa0 4990; CHECK-NEXT: vmor.mm v0, v13, v12 4991; CHECK-NEXT: ret 4992 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 4993 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 4994 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 4995 ret <vscale x 8 x i1> %1 4996} 4997 4998define <vscale x 8 x i1> @fcmps_one_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 4999; CHECK-LABEL: fcmps_one_fv_nxv8f32: 5000; CHECK: # %bb.0: 5001; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5002; CHECK-NEXT: vmfgt.vf v12, v8, fa0 5003; CHECK-NEXT: vmflt.vf v13, v8, fa0 5004; CHECK-NEXT: vmor.mm v0, v13, v12 5005; CHECK-NEXT: ret 5006 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5007 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5008 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 5009 ret <vscale x 8 x i1> %1 5010} 5011 5012define <vscale x 8 x i1> @fcmps_ord_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 5013; CHECK-LABEL: fcmps_ord_vv_nxv8f32: 5014; CHECK: # %bb.0: 5015; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5016; CHECK-NEXT: vmfle.vv v16, v12, v12 5017; CHECK-NEXT: vmfle.vv v12, v8, v8 5018; CHECK-NEXT: vmand.mm v0, v12, v16 5019; CHECK-NEXT: ret 5020 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 5021 ret <vscale x 8 x i1> %1 5022} 5023 5024define <vscale x 8 x i1> @fcmps_ord_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5025; CHECK-LABEL: fcmps_ord_vf_nxv8f32: 5026; CHECK: # %bb.0: 5027; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5028; CHECK-NEXT: vfmv.v.f v12, fa0 5029; CHECK-NEXT: vmfle.vf v16, v12, fa0 5030; CHECK-NEXT: vmfle.vv v12, v8, v8 5031; CHECK-NEXT: vmand.mm v0, v12, v16 5032; CHECK-NEXT: ret 5033 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5034 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5035 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 5036 ret <vscale x 8 x i1> %1 5037} 5038 5039define <vscale x 8 x i1> @fcmps_ord_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5040; CHECK-LABEL: fcmps_ord_fv_nxv8f32: 5041; CHECK: # %bb.0: 5042; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5043; CHECK-NEXT: vfmv.v.f v12, fa0 5044; CHECK-NEXT: vmfle.vf v16, v12, fa0 5045; CHECK-NEXT: vmfle.vv v12, v8, v8 5046; CHECK-NEXT: vmand.mm v0, v16, v12 5047; CHECK-NEXT: ret 5048 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5049 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5050 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 5051 ret <vscale x 8 x i1> %1 5052} 5053 5054define <vscale x 8 x i1> @fcmps_ueq_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 5055; CHECK-LABEL: fcmps_ueq_vv_nxv8f32: 5056; CHECK: # %bb.0: 5057; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5058; CHECK-NEXT: vmflt.vv v16, v8, v12 5059; CHECK-NEXT: vmflt.vv v17, v12, v8 5060; CHECK-NEXT: vmnor.mm v0, v17, v16 5061; CHECK-NEXT: ret 5062 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 5063 ret <vscale x 8 x i1> %1 5064} 5065 5066define <vscale x 8 x i1> @fcmps_ueq_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5067; CHECK-LABEL: fcmps_ueq_vf_nxv8f32: 5068; CHECK: # %bb.0: 5069; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5070; CHECK-NEXT: vmflt.vf v12, v8, fa0 5071; CHECK-NEXT: vmfgt.vf v13, v8, fa0 5072; CHECK-NEXT: vmnor.mm v0, v13, v12 5073; CHECK-NEXT: ret 5074 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5075 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5076 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 5077 ret <vscale x 8 x i1> %1 5078} 5079 5080define <vscale x 8 x i1> @fcmps_ueq_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5081; CHECK-LABEL: fcmps_ueq_fv_nxv8f32: 5082; CHECK: # %bb.0: 5083; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5084; CHECK-NEXT: vmfgt.vf v12, v8, fa0 5085; CHECK-NEXT: vmflt.vf v13, v8, fa0 5086; CHECK-NEXT: vmnor.mm v0, v13, v12 5087; CHECK-NEXT: ret 5088 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5089 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5090 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 5091 ret <vscale x 8 x i1> %1 5092} 5093 5094define <vscale x 8 x i1> @fcmps_ugt_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 5095; CHECK-LABEL: fcmps_ugt_vv_nxv8f32: 5096; CHECK: # %bb.0: 5097; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5098; CHECK-NEXT: vmfle.vv v16, v8, v12 5099; CHECK-NEXT: vmnot.m v0, v16 5100; CHECK-NEXT: ret 5101 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 5102 ret <vscale x 8 x i1> %1 5103} 5104 5105define <vscale x 8 x i1> @fcmps_ugt_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5106; CHECK-LABEL: fcmps_ugt_vf_nxv8f32: 5107; CHECK: # %bb.0: 5108; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5109; CHECK-NEXT: vmfle.vf v12, v8, fa0 5110; CHECK-NEXT: vmnot.m v0, v12 5111; CHECK-NEXT: ret 5112 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5113 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5114 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 5115 ret <vscale x 8 x i1> %1 5116} 5117 5118define <vscale x 8 x i1> @fcmps_ugt_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5119; CHECK-LABEL: fcmps_ugt_fv_nxv8f32: 5120; CHECK: # %bb.0: 5121; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5122; CHECK-NEXT: vmfge.vf v12, v8, fa0 5123; CHECK-NEXT: vmnot.m v0, v12 5124; CHECK-NEXT: ret 5125 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5126 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5127 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 5128 ret <vscale x 8 x i1> %1 5129} 5130 5131define <vscale x 8 x i1> @fcmps_uge_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 5132; CHECK-LABEL: fcmps_uge_vv_nxv8f32: 5133; CHECK: # %bb.0: 5134; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5135; CHECK-NEXT: vmflt.vv v16, v8, v12 5136; CHECK-NEXT: vmnot.m v0, v16 5137; CHECK-NEXT: ret 5138 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 5139 ret <vscale x 8 x i1> %1 5140} 5141 5142define <vscale x 8 x i1> @fcmps_uge_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5143; CHECK-LABEL: fcmps_uge_vf_nxv8f32: 5144; CHECK: # %bb.0: 5145; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5146; CHECK-NEXT: vmflt.vf v12, v8, fa0 5147; CHECK-NEXT: vmnot.m v0, v12 5148; CHECK-NEXT: ret 5149 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5150 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5151 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 5152 ret <vscale x 8 x i1> %1 5153} 5154 5155define <vscale x 8 x i1> @fcmps_uge_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5156; CHECK-LABEL: fcmps_uge_fv_nxv8f32: 5157; CHECK: # %bb.0: 5158; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5159; CHECK-NEXT: vmfgt.vf v12, v8, fa0 5160; CHECK-NEXT: vmnot.m v0, v12 5161; CHECK-NEXT: ret 5162 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5163 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5164 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 5165 ret <vscale x 8 x i1> %1 5166} 5167 5168define <vscale x 8 x i1> @fcmps_ult_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 5169; CHECK-LABEL: fcmps_ult_vv_nxv8f32: 5170; CHECK: # %bb.0: 5171; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5172; CHECK-NEXT: vmfle.vv v16, v12, v8 5173; CHECK-NEXT: vmnot.m v0, v16 5174; CHECK-NEXT: ret 5175 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 5176 ret <vscale x 8 x i1> %1 5177} 5178 5179define <vscale x 8 x i1> @fcmps_ult_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5180; CHECK-LABEL: fcmps_ult_vf_nxv8f32: 5181; CHECK: # %bb.0: 5182; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5183; CHECK-NEXT: vmfge.vf v12, v8, fa0 5184; CHECK-NEXT: vmnot.m v0, v12 5185; CHECK-NEXT: ret 5186 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5187 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5188 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 5189 ret <vscale x 8 x i1> %1 5190} 5191 5192define <vscale x 8 x i1> @fcmps_ult_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5193; CHECK-LABEL: fcmps_ult_fv_nxv8f32: 5194; CHECK: # %bb.0: 5195; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5196; CHECK-NEXT: vmfle.vf v12, v8, fa0 5197; CHECK-NEXT: vmnot.m v0, v12 5198; CHECK-NEXT: ret 5199 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5200 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5201 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 5202 ret <vscale x 8 x i1> %1 5203} 5204 5205define <vscale x 8 x i1> @fcmps_ule_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 5206; CHECK-LABEL: fcmps_ule_vv_nxv8f32: 5207; CHECK: # %bb.0: 5208; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5209; CHECK-NEXT: vmflt.vv v16, v12, v8 5210; CHECK-NEXT: vmnot.m v0, v16 5211; CHECK-NEXT: ret 5212 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 5213 ret <vscale x 8 x i1> %1 5214} 5215 5216define <vscale x 8 x i1> @fcmps_ule_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5217; CHECK-LABEL: fcmps_ule_vf_nxv8f32: 5218; CHECK: # %bb.0: 5219; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5220; CHECK-NEXT: vmfgt.vf v12, v8, fa0 5221; CHECK-NEXT: vmnot.m v0, v12 5222; CHECK-NEXT: ret 5223 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5224 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5225 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 5226 ret <vscale x 8 x i1> %1 5227} 5228 5229define <vscale x 8 x i1> @fcmps_ule_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5230; CHECK-LABEL: fcmps_ule_fv_nxv8f32: 5231; CHECK: # %bb.0: 5232; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5233; CHECK-NEXT: vmflt.vf v12, v8, fa0 5234; CHECK-NEXT: vmnot.m v0, v12 5235; CHECK-NEXT: ret 5236 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5237 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5238 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 5239 ret <vscale x 8 x i1> %1 5240} 5241 5242define <vscale x 8 x i1> @fcmps_une_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 5243; CHECK-LABEL: fcmps_une_vv_nxv8f32: 5244; CHECK: # %bb.0: 5245; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5246; CHECK-NEXT: vmfle.vv v16, v12, v8 5247; CHECK-NEXT: vmfle.vv v17, v8, v12 5248; CHECK-NEXT: vmnand.mm v0, v17, v16 5249; CHECK-NEXT: ret 5250 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 5251 ret <vscale x 8 x i1> %1 5252} 5253 5254define <vscale x 8 x i1> @fcmps_une_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5255; CHECK-LABEL: fcmps_une_vf_nxv8f32: 5256; CHECK: # %bb.0: 5257; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5258; CHECK-NEXT: vmfge.vf v12, v8, fa0 5259; CHECK-NEXT: vmfle.vf v13, v8, fa0 5260; CHECK-NEXT: vmnand.mm v0, v13, v12 5261; CHECK-NEXT: ret 5262 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5263 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5264 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 5265 ret <vscale x 8 x i1> %1 5266} 5267 5268define <vscale x 8 x i1> @fcmps_une_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5269; CHECK-LABEL: fcmps_une_fv_nxv8f32: 5270; CHECK: # %bb.0: 5271; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5272; CHECK-NEXT: vmfle.vf v12, v8, fa0 5273; CHECK-NEXT: vmfge.vf v13, v8, fa0 5274; CHECK-NEXT: vmnand.mm v0, v13, v12 5275; CHECK-NEXT: ret 5276 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5277 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5278 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 5279 ret <vscale x 8 x i1> %1 5280} 5281 5282define <vscale x 8 x i1> @fcmps_uno_vv_nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb) nounwind strictfp { 5283; CHECK-LABEL: fcmps_uno_vv_nxv8f32: 5284; CHECK: # %bb.0: 5285; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5286; CHECK-NEXT: vmfle.vv v16, v12, v12 5287; CHECK-NEXT: vmfle.vv v12, v8, v8 5288; CHECK-NEXT: vmnot.m v8, v12 5289; CHECK-NEXT: vmorn.mm v0, v8, v16 5290; CHECK-NEXT: ret 5291 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 5292 ret <vscale x 8 x i1> %1 5293} 5294 5295define <vscale x 8 x i1> @fcmps_uno_vf_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5296; CHECK-LABEL: fcmps_uno_vf_nxv8f32: 5297; CHECK: # %bb.0: 5298; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5299; CHECK-NEXT: vfmv.v.f v12, fa0 5300; CHECK-NEXT: vmfle.vv v16, v8, v8 5301; CHECK-NEXT: vmfle.vf v8, v12, fa0 5302; CHECK-NEXT: vmnot.m v9, v16 5303; CHECK-NEXT: vmorn.mm v0, v9, v8 5304; CHECK-NEXT: ret 5305 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5306 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5307 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %va, <vscale x 8 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 5308 ret <vscale x 8 x i1> %1 5309} 5310 5311define <vscale x 8 x i1> @fcmps_uno_fv_nxv8f32(<vscale x 8 x float> %va, float %b) nounwind strictfp { 5312; CHECK-LABEL: fcmps_uno_fv_nxv8f32: 5313; CHECK: # %bb.0: 5314; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, ma 5315; CHECK-NEXT: vfmv.v.f v12, fa0 5316; CHECK-NEXT: vmfle.vf v16, v12, fa0 5317; CHECK-NEXT: vmnot.m v12, v16 5318; CHECK-NEXT: vmfle.vv v13, v8, v8 5319; CHECK-NEXT: vmorn.mm v0, v12, v13 5320; CHECK-NEXT: ret 5321 %head = insertelement <vscale x 8 x float> poison, float %b, i32 0 5322 %splat = shufflevector <vscale x 8 x float> %head, <vscale x 8 x float> poison, <vscale x 8 x i32> zeroinitializer 5323 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f32(<vscale x 8 x float> %splat, <vscale x 8 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 5324 ret <vscale x 8 x i1> %1 5325} 5326 5327declare <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float>, <vscale x 16 x float>, metadata, metadata) 5328define <vscale x 16 x i1> @fcmps_oeq_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5329; CHECK-LABEL: fcmps_oeq_vv_nxv16f32: 5330; CHECK: # %bb.0: 5331; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5332; CHECK-NEXT: vmfle.vv v24, v16, v8 5333; CHECK-NEXT: vmfle.vv v25, v8, v16 5334; CHECK-NEXT: vmand.mm v0, v25, v24 5335; CHECK-NEXT: ret 5336 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 5337 ret <vscale x 16 x i1> %1 5338} 5339 5340define <vscale x 16 x i1> @fcmps_oeq_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5341; CHECK-LABEL: fcmps_oeq_vf_nxv16f32: 5342; CHECK: # %bb.0: 5343; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5344; CHECK-NEXT: vmfge.vf v16, v8, fa0 5345; CHECK-NEXT: vmfle.vf v17, v8, fa0 5346; CHECK-NEXT: vmand.mm v0, v17, v16 5347; CHECK-NEXT: ret 5348 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5349 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5350 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 5351 ret <vscale x 16 x i1> %1 5352} 5353 5354define <vscale x 16 x i1> @fcmps_oeq_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5355; CHECK-LABEL: fcmps_oeq_fv_nxv16f32: 5356; CHECK: # %bb.0: 5357; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5358; CHECK-NEXT: vmfle.vf v16, v8, fa0 5359; CHECK-NEXT: vmfge.vf v17, v8, fa0 5360; CHECK-NEXT: vmand.mm v0, v17, v16 5361; CHECK-NEXT: ret 5362 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5363 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5364 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 5365 ret <vscale x 16 x i1> %1 5366} 5367 5368define <vscale x 16 x i1> @fcmps_ogt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5369; CHECK-LABEL: fcmps_ogt_vv_nxv16f32: 5370; CHECK: # %bb.0: 5371; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5372; CHECK-NEXT: vmflt.vv v0, v16, v8 5373; CHECK-NEXT: ret 5374 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 5375 ret <vscale x 16 x i1> %1 5376} 5377 5378define <vscale x 16 x i1> @fcmps_ogt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5379; CHECK-LABEL: fcmps_ogt_vf_nxv16f32: 5380; CHECK: # %bb.0: 5381; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5382; CHECK-NEXT: vmfgt.vf v0, v8, fa0 5383; CHECK-NEXT: ret 5384 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5385 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5386 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 5387 ret <vscale x 16 x i1> %1 5388} 5389 5390define <vscale x 16 x i1> @fcmps_ogt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5391; CHECK-LABEL: fcmps_ogt_fv_nxv16f32: 5392; CHECK: # %bb.0: 5393; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5394; CHECK-NEXT: vmflt.vf v0, v8, fa0 5395; CHECK-NEXT: ret 5396 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5397 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5398 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 5399 ret <vscale x 16 x i1> %1 5400} 5401 5402define <vscale x 16 x i1> @fcmps_oge_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5403; CHECK-LABEL: fcmps_oge_vv_nxv16f32: 5404; CHECK: # %bb.0: 5405; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5406; CHECK-NEXT: vmfle.vv v0, v16, v8 5407; CHECK-NEXT: ret 5408 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 5409 ret <vscale x 16 x i1> %1 5410} 5411 5412define <vscale x 16 x i1> @fcmps_oge_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5413; CHECK-LABEL: fcmps_oge_vf_nxv16f32: 5414; CHECK: # %bb.0: 5415; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5416; CHECK-NEXT: vmfge.vf v0, v8, fa0 5417; CHECK-NEXT: ret 5418 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5419 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5420 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 5421 ret <vscale x 16 x i1> %1 5422} 5423 5424define <vscale x 16 x i1> @fcmps_oge_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5425; CHECK-LABEL: fcmps_oge_fv_nxv16f32: 5426; CHECK: # %bb.0: 5427; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5428; CHECK-NEXT: vmfle.vf v0, v8, fa0 5429; CHECK-NEXT: ret 5430 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5431 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5432 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 5433 ret <vscale x 16 x i1> %1 5434} 5435 5436define <vscale x 16 x i1> @fcmps_olt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5437; CHECK-LABEL: fcmps_olt_vv_nxv16f32: 5438; CHECK: # %bb.0: 5439; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5440; CHECK-NEXT: vmflt.vv v0, v8, v16 5441; CHECK-NEXT: ret 5442 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 5443 ret <vscale x 16 x i1> %1 5444} 5445 5446define <vscale x 16 x i1> @fcmps_olt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5447; CHECK-LABEL: fcmps_olt_vf_nxv16f32: 5448; CHECK: # %bb.0: 5449; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5450; CHECK-NEXT: vmflt.vf v0, v8, fa0 5451; CHECK-NEXT: ret 5452 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5453 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5454 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 5455 ret <vscale x 16 x i1> %1 5456} 5457 5458define <vscale x 16 x i1> @fcmps_olt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5459; CHECK-LABEL: fcmps_olt_fv_nxv16f32: 5460; CHECK: # %bb.0: 5461; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5462; CHECK-NEXT: vmfgt.vf v0, v8, fa0 5463; CHECK-NEXT: ret 5464 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5465 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5466 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 5467 ret <vscale x 16 x i1> %1 5468} 5469 5470define <vscale x 16 x i1> @fcmps_ole_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5471; CHECK-LABEL: fcmps_ole_vv_nxv16f32: 5472; CHECK: # %bb.0: 5473; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5474; CHECK-NEXT: vmfle.vv v0, v8, v16 5475; CHECK-NEXT: ret 5476 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 5477 ret <vscale x 16 x i1> %1 5478} 5479 5480define <vscale x 16 x i1> @fcmps_ole_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5481; CHECK-LABEL: fcmps_ole_vf_nxv16f32: 5482; CHECK: # %bb.0: 5483; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5484; CHECK-NEXT: vmfle.vf v0, v8, fa0 5485; CHECK-NEXT: ret 5486 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5487 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5488 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 5489 ret <vscale x 16 x i1> %1 5490} 5491 5492define <vscale x 16 x i1> @fcmps_ole_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5493; CHECK-LABEL: fcmps_ole_fv_nxv16f32: 5494; CHECK: # %bb.0: 5495; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5496; CHECK-NEXT: vmfge.vf v0, v8, fa0 5497; CHECK-NEXT: ret 5498 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5499 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5500 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 5501 ret <vscale x 16 x i1> %1 5502} 5503 5504define <vscale x 16 x i1> @fcmps_one_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5505; CHECK-LABEL: fcmps_one_vv_nxv16f32: 5506; CHECK: # %bb.0: 5507; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5508; CHECK-NEXT: vmflt.vv v24, v8, v16 5509; CHECK-NEXT: vmflt.vv v25, v16, v8 5510; CHECK-NEXT: vmor.mm v0, v25, v24 5511; CHECK-NEXT: ret 5512 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 5513 ret <vscale x 16 x i1> %1 5514} 5515 5516define <vscale x 16 x i1> @fcmps_one_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5517; CHECK-LABEL: fcmps_one_vf_nxv16f32: 5518; CHECK: # %bb.0: 5519; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5520; CHECK-NEXT: vmflt.vf v16, v8, fa0 5521; CHECK-NEXT: vmfgt.vf v17, v8, fa0 5522; CHECK-NEXT: vmor.mm v0, v17, v16 5523; CHECK-NEXT: ret 5524 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5525 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5526 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 5527 ret <vscale x 16 x i1> %1 5528} 5529 5530define <vscale x 16 x i1> @fcmps_one_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5531; CHECK-LABEL: fcmps_one_fv_nxv16f32: 5532; CHECK: # %bb.0: 5533; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5534; CHECK-NEXT: vmfgt.vf v16, v8, fa0 5535; CHECK-NEXT: vmflt.vf v17, v8, fa0 5536; CHECK-NEXT: vmor.mm v0, v17, v16 5537; CHECK-NEXT: ret 5538 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5539 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5540 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 5541 ret <vscale x 16 x i1> %1 5542} 5543 5544define <vscale x 16 x i1> @fcmps_ord_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5545; CHECK-LABEL: fcmps_ord_vv_nxv16f32: 5546; CHECK: # %bb.0: 5547; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5548; CHECK-NEXT: vmfle.vv v24, v16, v16 5549; CHECK-NEXT: vmfle.vv v16, v8, v8 5550; CHECK-NEXT: vmand.mm v0, v16, v24 5551; CHECK-NEXT: ret 5552 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 5553 ret <vscale x 16 x i1> %1 5554} 5555 5556define <vscale x 16 x i1> @fcmps_ord_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5557; CHECK-LABEL: fcmps_ord_vf_nxv16f32: 5558; CHECK: # %bb.0: 5559; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5560; CHECK-NEXT: vfmv.v.f v16, fa0 5561; CHECK-NEXT: vmfle.vf v24, v16, fa0 5562; CHECK-NEXT: vmfle.vv v16, v8, v8 5563; CHECK-NEXT: vmand.mm v0, v16, v24 5564; CHECK-NEXT: ret 5565 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5566 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5567 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 5568 ret <vscale x 16 x i1> %1 5569} 5570 5571define <vscale x 16 x i1> @fcmps_ord_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5572; CHECK-LABEL: fcmps_ord_fv_nxv16f32: 5573; CHECK: # %bb.0: 5574; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5575; CHECK-NEXT: vfmv.v.f v16, fa0 5576; CHECK-NEXT: vmfle.vf v24, v16, fa0 5577; CHECK-NEXT: vmfle.vv v16, v8, v8 5578; CHECK-NEXT: vmand.mm v0, v24, v16 5579; CHECK-NEXT: ret 5580 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5581 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5582 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 5583 ret <vscale x 16 x i1> %1 5584} 5585 5586define <vscale x 16 x i1> @fcmps_ueq_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5587; CHECK-LABEL: fcmps_ueq_vv_nxv16f32: 5588; CHECK: # %bb.0: 5589; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5590; CHECK-NEXT: vmflt.vv v24, v8, v16 5591; CHECK-NEXT: vmflt.vv v25, v16, v8 5592; CHECK-NEXT: vmnor.mm v0, v25, v24 5593; CHECK-NEXT: ret 5594 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 5595 ret <vscale x 16 x i1> %1 5596} 5597 5598define <vscale x 16 x i1> @fcmps_ueq_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5599; CHECK-LABEL: fcmps_ueq_vf_nxv16f32: 5600; CHECK: # %bb.0: 5601; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5602; CHECK-NEXT: vmflt.vf v16, v8, fa0 5603; CHECK-NEXT: vmfgt.vf v17, v8, fa0 5604; CHECK-NEXT: vmnor.mm v0, v17, v16 5605; CHECK-NEXT: ret 5606 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5607 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5608 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 5609 ret <vscale x 16 x i1> %1 5610} 5611 5612define <vscale x 16 x i1> @fcmps_ueq_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5613; CHECK-LABEL: fcmps_ueq_fv_nxv16f32: 5614; CHECK: # %bb.0: 5615; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5616; CHECK-NEXT: vmfgt.vf v16, v8, fa0 5617; CHECK-NEXT: vmflt.vf v17, v8, fa0 5618; CHECK-NEXT: vmnor.mm v0, v17, v16 5619; CHECK-NEXT: ret 5620 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5621 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5622 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 5623 ret <vscale x 16 x i1> %1 5624} 5625 5626define <vscale x 16 x i1> @fcmps_ugt_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5627; CHECK-LABEL: fcmps_ugt_vv_nxv16f32: 5628; CHECK: # %bb.0: 5629; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5630; CHECK-NEXT: vmfle.vv v24, v8, v16 5631; CHECK-NEXT: vmnot.m v0, v24 5632; CHECK-NEXT: ret 5633 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 5634 ret <vscale x 16 x i1> %1 5635} 5636 5637define <vscale x 16 x i1> @fcmps_ugt_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5638; CHECK-LABEL: fcmps_ugt_vf_nxv16f32: 5639; CHECK: # %bb.0: 5640; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5641; CHECK-NEXT: vmfle.vf v16, v8, fa0 5642; CHECK-NEXT: vmnot.m v0, v16 5643; CHECK-NEXT: ret 5644 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5645 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5646 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 5647 ret <vscale x 16 x i1> %1 5648} 5649 5650define <vscale x 16 x i1> @fcmps_ugt_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5651; CHECK-LABEL: fcmps_ugt_fv_nxv16f32: 5652; CHECK: # %bb.0: 5653; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5654; CHECK-NEXT: vmfge.vf v16, v8, fa0 5655; CHECK-NEXT: vmnot.m v0, v16 5656; CHECK-NEXT: ret 5657 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5658 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5659 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 5660 ret <vscale x 16 x i1> %1 5661} 5662 5663define <vscale x 16 x i1> @fcmps_uge_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5664; CHECK-LABEL: fcmps_uge_vv_nxv16f32: 5665; CHECK: # %bb.0: 5666; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5667; CHECK-NEXT: vmflt.vv v24, v8, v16 5668; CHECK-NEXT: vmnot.m v0, v24 5669; CHECK-NEXT: ret 5670 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 5671 ret <vscale x 16 x i1> %1 5672} 5673 5674define <vscale x 16 x i1> @fcmps_uge_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5675; CHECK-LABEL: fcmps_uge_vf_nxv16f32: 5676; CHECK: # %bb.0: 5677; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5678; CHECK-NEXT: vmflt.vf v16, v8, fa0 5679; CHECK-NEXT: vmnot.m v0, v16 5680; CHECK-NEXT: ret 5681 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5682 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5683 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 5684 ret <vscale x 16 x i1> %1 5685} 5686 5687define <vscale x 16 x i1> @fcmps_uge_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5688; CHECK-LABEL: fcmps_uge_fv_nxv16f32: 5689; CHECK: # %bb.0: 5690; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5691; CHECK-NEXT: vmfgt.vf v16, v8, fa0 5692; CHECK-NEXT: vmnot.m v0, v16 5693; CHECK-NEXT: ret 5694 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5695 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5696 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 5697 ret <vscale x 16 x i1> %1 5698} 5699 5700define <vscale x 16 x i1> @fcmps_ult_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5701; CHECK-LABEL: fcmps_ult_vv_nxv16f32: 5702; CHECK: # %bb.0: 5703; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5704; CHECK-NEXT: vmfle.vv v24, v16, v8 5705; CHECK-NEXT: vmnot.m v0, v24 5706; CHECK-NEXT: ret 5707 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 5708 ret <vscale x 16 x i1> %1 5709} 5710 5711define <vscale x 16 x i1> @fcmps_ult_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5712; CHECK-LABEL: fcmps_ult_vf_nxv16f32: 5713; CHECK: # %bb.0: 5714; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5715; CHECK-NEXT: vmfge.vf v16, v8, fa0 5716; CHECK-NEXT: vmnot.m v0, v16 5717; CHECK-NEXT: ret 5718 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5719 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5720 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 5721 ret <vscale x 16 x i1> %1 5722} 5723 5724define <vscale x 16 x i1> @fcmps_ult_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5725; CHECK-LABEL: fcmps_ult_fv_nxv16f32: 5726; CHECK: # %bb.0: 5727; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5728; CHECK-NEXT: vmfle.vf v16, v8, fa0 5729; CHECK-NEXT: vmnot.m v0, v16 5730; CHECK-NEXT: ret 5731 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5732 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5733 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 5734 ret <vscale x 16 x i1> %1 5735} 5736 5737define <vscale x 16 x i1> @fcmps_ule_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5738; CHECK-LABEL: fcmps_ule_vv_nxv16f32: 5739; CHECK: # %bb.0: 5740; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5741; CHECK-NEXT: vmflt.vv v24, v16, v8 5742; CHECK-NEXT: vmnot.m v0, v24 5743; CHECK-NEXT: ret 5744 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 5745 ret <vscale x 16 x i1> %1 5746} 5747 5748define <vscale x 16 x i1> @fcmps_ule_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5749; CHECK-LABEL: fcmps_ule_vf_nxv16f32: 5750; CHECK: # %bb.0: 5751; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5752; CHECK-NEXT: vmfgt.vf v16, v8, fa0 5753; CHECK-NEXT: vmnot.m v0, v16 5754; CHECK-NEXT: ret 5755 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5756 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5757 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 5758 ret <vscale x 16 x i1> %1 5759} 5760 5761define <vscale x 16 x i1> @fcmps_ule_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5762; CHECK-LABEL: fcmps_ule_fv_nxv16f32: 5763; CHECK: # %bb.0: 5764; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5765; CHECK-NEXT: vmflt.vf v16, v8, fa0 5766; CHECK-NEXT: vmnot.m v0, v16 5767; CHECK-NEXT: ret 5768 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5769 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5770 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 5771 ret <vscale x 16 x i1> %1 5772} 5773 5774define <vscale x 16 x i1> @fcmps_une_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5775; CHECK-LABEL: fcmps_une_vv_nxv16f32: 5776; CHECK: # %bb.0: 5777; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5778; CHECK-NEXT: vmfle.vv v24, v16, v8 5779; CHECK-NEXT: vmfle.vv v25, v8, v16 5780; CHECK-NEXT: vmnand.mm v0, v25, v24 5781; CHECK-NEXT: ret 5782 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 5783 ret <vscale x 16 x i1> %1 5784} 5785 5786define <vscale x 16 x i1> @fcmps_une_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5787; CHECK-LABEL: fcmps_une_vf_nxv16f32: 5788; CHECK: # %bb.0: 5789; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5790; CHECK-NEXT: vmfge.vf v16, v8, fa0 5791; CHECK-NEXT: vmfle.vf v17, v8, fa0 5792; CHECK-NEXT: vmnand.mm v0, v17, v16 5793; CHECK-NEXT: ret 5794 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5795 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5796 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 5797 ret <vscale x 16 x i1> %1 5798} 5799 5800define <vscale x 16 x i1> @fcmps_une_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5801; CHECK-LABEL: fcmps_une_fv_nxv16f32: 5802; CHECK: # %bb.0: 5803; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5804; CHECK-NEXT: vmfle.vf v16, v8, fa0 5805; CHECK-NEXT: vmfge.vf v17, v8, fa0 5806; CHECK-NEXT: vmnand.mm v0, v17, v16 5807; CHECK-NEXT: ret 5808 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5809 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5810 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 5811 ret <vscale x 16 x i1> %1 5812} 5813 5814define <vscale x 16 x i1> @fcmps_uno_vv_nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb) nounwind strictfp { 5815; CHECK-LABEL: fcmps_uno_vv_nxv16f32: 5816; CHECK: # %bb.0: 5817; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5818; CHECK-NEXT: vmfle.vv v24, v16, v16 5819; CHECK-NEXT: vmfle.vv v16, v8, v8 5820; CHECK-NEXT: vmnot.m v8, v16 5821; CHECK-NEXT: vmorn.mm v0, v8, v24 5822; CHECK-NEXT: ret 5823 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 5824 ret <vscale x 16 x i1> %1 5825} 5826 5827define <vscale x 16 x i1> @fcmps_uno_vf_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5828; CHECK-LABEL: fcmps_uno_vf_nxv16f32: 5829; CHECK: # %bb.0: 5830; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5831; CHECK-NEXT: vfmv.v.f v16, fa0 5832; CHECK-NEXT: vmfle.vv v24, v8, v8 5833; CHECK-NEXT: vmfle.vf v8, v16, fa0 5834; CHECK-NEXT: vmnot.m v9, v24 5835; CHECK-NEXT: vmorn.mm v0, v9, v8 5836; CHECK-NEXT: ret 5837 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5838 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5839 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %va, <vscale x 16 x float> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 5840 ret <vscale x 16 x i1> %1 5841} 5842 5843define <vscale x 16 x i1> @fcmps_uno_fv_nxv16f32(<vscale x 16 x float> %va, float %b) nounwind strictfp { 5844; CHECK-LABEL: fcmps_uno_fv_nxv16f32: 5845; CHECK: # %bb.0: 5846; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, ma 5847; CHECK-NEXT: vfmv.v.f v16, fa0 5848; CHECK-NEXT: vmfle.vf v24, v16, fa0 5849; CHECK-NEXT: vmnot.m v16, v24 5850; CHECK-NEXT: vmfle.vv v17, v8, v8 5851; CHECK-NEXT: vmorn.mm v0, v16, v17 5852; CHECK-NEXT: ret 5853 %head = insertelement <vscale x 16 x float> poison, float %b, i32 0 5854 %splat = shufflevector <vscale x 16 x float> %head, <vscale x 16 x float> poison, <vscale x 16 x i32> zeroinitializer 5855 %1 = call <vscale x 16 x i1> @llvm.experimental.constrained.fcmps.nxv16f32(<vscale x 16 x float> %splat, <vscale x 16 x float> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 5856 ret <vscale x 16 x i1> %1 5857} 5858 5859declare <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double>, <vscale x 1 x double>, metadata, metadata) 5860define <vscale x 1 x i1> @fcmps_oeq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 5861; CHECK-LABEL: fcmps_oeq_vv_nxv1f64: 5862; CHECK: # %bb.0: 5863; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5864; CHECK-NEXT: vmfle.vv v10, v9, v8 5865; CHECK-NEXT: vmfle.vv v8, v8, v9 5866; CHECK-NEXT: vmand.mm v0, v8, v10 5867; CHECK-NEXT: ret 5868 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 5869 ret <vscale x 1 x i1> %1 5870} 5871 5872define <vscale x 1 x i1> @fcmps_oeq_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 5873; CHECK-LABEL: fcmps_oeq_vf_nxv1f64: 5874; CHECK: # %bb.0: 5875; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5876; CHECK-NEXT: vmfge.vf v9, v8, fa0 5877; CHECK-NEXT: vmfle.vf v8, v8, fa0 5878; CHECK-NEXT: vmand.mm v0, v8, v9 5879; CHECK-NEXT: ret 5880 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 5881 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 5882 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 5883 ret <vscale x 1 x i1> %1 5884} 5885 5886define <vscale x 1 x i1> @fcmps_oeq_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 5887; CHECK-LABEL: fcmps_oeq_fv_nxv1f64: 5888; CHECK: # %bb.0: 5889; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5890; CHECK-NEXT: vmfle.vf v9, v8, fa0 5891; CHECK-NEXT: vmfge.vf v8, v8, fa0 5892; CHECK-NEXT: vmand.mm v0, v8, v9 5893; CHECK-NEXT: ret 5894 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 5895 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 5896 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 5897 ret <vscale x 1 x i1> %1 5898} 5899 5900define <vscale x 1 x i1> @fcmps_ogt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 5901; CHECK-LABEL: fcmps_ogt_vv_nxv1f64: 5902; CHECK: # %bb.0: 5903; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5904; CHECK-NEXT: vmflt.vv v0, v9, v8 5905; CHECK-NEXT: ret 5906 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 5907 ret <vscale x 1 x i1> %1 5908} 5909 5910define <vscale x 1 x i1> @fcmps_ogt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 5911; CHECK-LABEL: fcmps_ogt_vf_nxv1f64: 5912; CHECK: # %bb.0: 5913; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5914; CHECK-NEXT: vmfgt.vf v0, v8, fa0 5915; CHECK-NEXT: ret 5916 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 5917 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 5918 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 5919 ret <vscale x 1 x i1> %1 5920} 5921 5922define <vscale x 1 x i1> @fcmps_ogt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 5923; CHECK-LABEL: fcmps_ogt_fv_nxv1f64: 5924; CHECK: # %bb.0: 5925; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5926; CHECK-NEXT: vmflt.vf v0, v8, fa0 5927; CHECK-NEXT: ret 5928 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 5929 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 5930 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 5931 ret <vscale x 1 x i1> %1 5932} 5933 5934define <vscale x 1 x i1> @fcmps_oge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 5935; CHECK-LABEL: fcmps_oge_vv_nxv1f64: 5936; CHECK: # %bb.0: 5937; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5938; CHECK-NEXT: vmfle.vv v0, v9, v8 5939; CHECK-NEXT: ret 5940 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 5941 ret <vscale x 1 x i1> %1 5942} 5943 5944define <vscale x 1 x i1> @fcmps_oge_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 5945; CHECK-LABEL: fcmps_oge_vf_nxv1f64: 5946; CHECK: # %bb.0: 5947; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5948; CHECK-NEXT: vmfge.vf v0, v8, fa0 5949; CHECK-NEXT: ret 5950 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 5951 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 5952 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 5953 ret <vscale x 1 x i1> %1 5954} 5955 5956define <vscale x 1 x i1> @fcmps_oge_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 5957; CHECK-LABEL: fcmps_oge_fv_nxv1f64: 5958; CHECK: # %bb.0: 5959; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5960; CHECK-NEXT: vmfle.vf v0, v8, fa0 5961; CHECK-NEXT: ret 5962 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 5963 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 5964 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 5965 ret <vscale x 1 x i1> %1 5966} 5967 5968define <vscale x 1 x i1> @fcmps_olt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 5969; CHECK-LABEL: fcmps_olt_vv_nxv1f64: 5970; CHECK: # %bb.0: 5971; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5972; CHECK-NEXT: vmflt.vv v0, v8, v9 5973; CHECK-NEXT: ret 5974 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 5975 ret <vscale x 1 x i1> %1 5976} 5977 5978define <vscale x 1 x i1> @fcmps_olt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 5979; CHECK-LABEL: fcmps_olt_vf_nxv1f64: 5980; CHECK: # %bb.0: 5981; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5982; CHECK-NEXT: vmflt.vf v0, v8, fa0 5983; CHECK-NEXT: ret 5984 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 5985 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 5986 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 5987 ret <vscale x 1 x i1> %1 5988} 5989 5990define <vscale x 1 x i1> @fcmps_olt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 5991; CHECK-LABEL: fcmps_olt_fv_nxv1f64: 5992; CHECK: # %bb.0: 5993; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 5994; CHECK-NEXT: vmfgt.vf v0, v8, fa0 5995; CHECK-NEXT: ret 5996 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 5997 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 5998 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 5999 ret <vscale x 1 x i1> %1 6000} 6001 6002define <vscale x 1 x i1> @fcmps_ole_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 6003; CHECK-LABEL: fcmps_ole_vv_nxv1f64: 6004; CHECK: # %bb.0: 6005; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6006; CHECK-NEXT: vmfle.vv v0, v8, v9 6007; CHECK-NEXT: ret 6008 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 6009 ret <vscale x 1 x i1> %1 6010} 6011 6012define <vscale x 1 x i1> @fcmps_ole_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6013; CHECK-LABEL: fcmps_ole_vf_nxv1f64: 6014; CHECK: # %bb.0: 6015; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6016; CHECK-NEXT: vmfle.vf v0, v8, fa0 6017; CHECK-NEXT: ret 6018 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6019 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6020 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 6021 ret <vscale x 1 x i1> %1 6022} 6023 6024define <vscale x 1 x i1> @fcmps_ole_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6025; CHECK-LABEL: fcmps_ole_fv_nxv1f64: 6026; CHECK: # %bb.0: 6027; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6028; CHECK-NEXT: vmfge.vf v0, v8, fa0 6029; CHECK-NEXT: ret 6030 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6031 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6032 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 6033 ret <vscale x 1 x i1> %1 6034} 6035 6036define <vscale x 1 x i1> @fcmps_one_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 6037; CHECK-LABEL: fcmps_one_vv_nxv1f64: 6038; CHECK: # %bb.0: 6039; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6040; CHECK-NEXT: vmflt.vv v10, v8, v9 6041; CHECK-NEXT: vmflt.vv v8, v9, v8 6042; CHECK-NEXT: vmor.mm v0, v8, v10 6043; CHECK-NEXT: ret 6044 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 6045 ret <vscale x 1 x i1> %1 6046} 6047 6048define <vscale x 1 x i1> @fcmps_one_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6049; CHECK-LABEL: fcmps_one_vf_nxv1f64: 6050; CHECK: # %bb.0: 6051; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6052; CHECK-NEXT: vmflt.vf v9, v8, fa0 6053; CHECK-NEXT: vmfgt.vf v8, v8, fa0 6054; CHECK-NEXT: vmor.mm v0, v8, v9 6055; CHECK-NEXT: ret 6056 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6057 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6058 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 6059 ret <vscale x 1 x i1> %1 6060} 6061 6062define <vscale x 1 x i1> @fcmps_one_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6063; CHECK-LABEL: fcmps_one_fv_nxv1f64: 6064; CHECK: # %bb.0: 6065; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6066; CHECK-NEXT: vmfgt.vf v9, v8, fa0 6067; CHECK-NEXT: vmflt.vf v8, v8, fa0 6068; CHECK-NEXT: vmor.mm v0, v8, v9 6069; CHECK-NEXT: ret 6070 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6071 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6072 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 6073 ret <vscale x 1 x i1> %1 6074} 6075 6076define <vscale x 1 x i1> @fcmps_ord_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 6077; CHECK-LABEL: fcmps_ord_vv_nxv1f64: 6078; CHECK: # %bb.0: 6079; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6080; CHECK-NEXT: vmfle.vv v9, v9, v9 6081; CHECK-NEXT: vmfle.vv v8, v8, v8 6082; CHECK-NEXT: vmand.mm v0, v8, v9 6083; CHECK-NEXT: ret 6084 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 6085 ret <vscale x 1 x i1> %1 6086} 6087 6088define <vscale x 1 x i1> @fcmps_ord_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6089; CHECK-LABEL: fcmps_ord_vf_nxv1f64: 6090; CHECK: # %bb.0: 6091; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6092; CHECK-NEXT: vfmv.v.f v9, fa0 6093; CHECK-NEXT: vmfle.vf v9, v9, fa0 6094; CHECK-NEXT: vmfle.vv v8, v8, v8 6095; CHECK-NEXT: vmand.mm v0, v8, v9 6096; CHECK-NEXT: ret 6097 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6098 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6099 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 6100 ret <vscale x 1 x i1> %1 6101} 6102 6103define <vscale x 1 x i1> @fcmps_ord_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6104; CHECK-LABEL: fcmps_ord_fv_nxv1f64: 6105; CHECK: # %bb.0: 6106; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6107; CHECK-NEXT: vfmv.v.f v9, fa0 6108; CHECK-NEXT: vmfle.vf v9, v9, fa0 6109; CHECK-NEXT: vmfle.vv v8, v8, v8 6110; CHECK-NEXT: vmand.mm v0, v9, v8 6111; CHECK-NEXT: ret 6112 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6113 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6114 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 6115 ret <vscale x 1 x i1> %1 6116} 6117 6118define <vscale x 1 x i1> @fcmps_ueq_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 6119; CHECK-LABEL: fcmps_ueq_vv_nxv1f64: 6120; CHECK: # %bb.0: 6121; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6122; CHECK-NEXT: vmflt.vv v10, v8, v9 6123; CHECK-NEXT: vmflt.vv v8, v9, v8 6124; CHECK-NEXT: vmnor.mm v0, v8, v10 6125; CHECK-NEXT: ret 6126 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 6127 ret <vscale x 1 x i1> %1 6128} 6129 6130define <vscale x 1 x i1> @fcmps_ueq_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6131; CHECK-LABEL: fcmps_ueq_vf_nxv1f64: 6132; CHECK: # %bb.0: 6133; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6134; CHECK-NEXT: vmflt.vf v9, v8, fa0 6135; CHECK-NEXT: vmfgt.vf v8, v8, fa0 6136; CHECK-NEXT: vmnor.mm v0, v8, v9 6137; CHECK-NEXT: ret 6138 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6139 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6140 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 6141 ret <vscale x 1 x i1> %1 6142} 6143 6144define <vscale x 1 x i1> @fcmps_ueq_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6145; CHECK-LABEL: fcmps_ueq_fv_nxv1f64: 6146; CHECK: # %bb.0: 6147; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6148; CHECK-NEXT: vmfgt.vf v9, v8, fa0 6149; CHECK-NEXT: vmflt.vf v8, v8, fa0 6150; CHECK-NEXT: vmnor.mm v0, v8, v9 6151; CHECK-NEXT: ret 6152 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6153 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6154 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 6155 ret <vscale x 1 x i1> %1 6156} 6157 6158define <vscale x 1 x i1> @fcmps_ugt_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 6159; CHECK-LABEL: fcmps_ugt_vv_nxv1f64: 6160; CHECK: # %bb.0: 6161; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6162; CHECK-NEXT: vmfle.vv v8, v8, v9 6163; CHECK-NEXT: vmnot.m v0, v8 6164; CHECK-NEXT: ret 6165 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 6166 ret <vscale x 1 x i1> %1 6167} 6168 6169define <vscale x 1 x i1> @fcmps_ugt_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6170; CHECK-LABEL: fcmps_ugt_vf_nxv1f64: 6171; CHECK: # %bb.0: 6172; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6173; CHECK-NEXT: vmfle.vf v8, v8, fa0 6174; CHECK-NEXT: vmnot.m v0, v8 6175; CHECK-NEXT: ret 6176 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6177 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6178 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 6179 ret <vscale x 1 x i1> %1 6180} 6181 6182define <vscale x 1 x i1> @fcmps_ugt_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6183; CHECK-LABEL: fcmps_ugt_fv_nxv1f64: 6184; CHECK: # %bb.0: 6185; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6186; CHECK-NEXT: vmfge.vf v8, v8, fa0 6187; CHECK-NEXT: vmnot.m v0, v8 6188; CHECK-NEXT: ret 6189 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6190 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6191 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 6192 ret <vscale x 1 x i1> %1 6193} 6194 6195define <vscale x 1 x i1> @fcmps_uge_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 6196; CHECK-LABEL: fcmps_uge_vv_nxv1f64: 6197; CHECK: # %bb.0: 6198; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6199; CHECK-NEXT: vmflt.vv v8, v8, v9 6200; CHECK-NEXT: vmnot.m v0, v8 6201; CHECK-NEXT: ret 6202 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 6203 ret <vscale x 1 x i1> %1 6204} 6205 6206define <vscale x 1 x i1> @fcmps_uge_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6207; CHECK-LABEL: fcmps_uge_vf_nxv1f64: 6208; CHECK: # %bb.0: 6209; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6210; CHECK-NEXT: vmflt.vf v8, v8, fa0 6211; CHECK-NEXT: vmnot.m v0, v8 6212; CHECK-NEXT: ret 6213 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6214 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6215 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 6216 ret <vscale x 1 x i1> %1 6217} 6218 6219define <vscale x 1 x i1> @fcmps_uge_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6220; CHECK-LABEL: fcmps_uge_fv_nxv1f64: 6221; CHECK: # %bb.0: 6222; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6223; CHECK-NEXT: vmfgt.vf v8, v8, fa0 6224; CHECK-NEXT: vmnot.m v0, v8 6225; CHECK-NEXT: ret 6226 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6227 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6228 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 6229 ret <vscale x 1 x i1> %1 6230} 6231 6232define <vscale x 1 x i1> @fcmps_ult_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 6233; CHECK-LABEL: fcmps_ult_vv_nxv1f64: 6234; CHECK: # %bb.0: 6235; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6236; CHECK-NEXT: vmfle.vv v8, v9, v8 6237; CHECK-NEXT: vmnot.m v0, v8 6238; CHECK-NEXT: ret 6239 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 6240 ret <vscale x 1 x i1> %1 6241} 6242 6243define <vscale x 1 x i1> @fcmps_ult_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6244; CHECK-LABEL: fcmps_ult_vf_nxv1f64: 6245; CHECK: # %bb.0: 6246; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6247; CHECK-NEXT: vmfge.vf v8, v8, fa0 6248; CHECK-NEXT: vmnot.m v0, v8 6249; CHECK-NEXT: ret 6250 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6251 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6252 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 6253 ret <vscale x 1 x i1> %1 6254} 6255 6256define <vscale x 1 x i1> @fcmps_ult_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6257; CHECK-LABEL: fcmps_ult_fv_nxv1f64: 6258; CHECK: # %bb.0: 6259; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6260; CHECK-NEXT: vmfle.vf v8, v8, fa0 6261; CHECK-NEXT: vmnot.m v0, v8 6262; CHECK-NEXT: ret 6263 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6264 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6265 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 6266 ret <vscale x 1 x i1> %1 6267} 6268 6269define <vscale x 1 x i1> @fcmps_ule_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 6270; CHECK-LABEL: fcmps_ule_vv_nxv1f64: 6271; CHECK: # %bb.0: 6272; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6273; CHECK-NEXT: vmflt.vv v8, v9, v8 6274; CHECK-NEXT: vmnot.m v0, v8 6275; CHECK-NEXT: ret 6276 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 6277 ret <vscale x 1 x i1> %1 6278} 6279 6280define <vscale x 1 x i1> @fcmps_ule_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6281; CHECK-LABEL: fcmps_ule_vf_nxv1f64: 6282; CHECK: # %bb.0: 6283; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6284; CHECK-NEXT: vmfgt.vf v8, v8, fa0 6285; CHECK-NEXT: vmnot.m v0, v8 6286; CHECK-NEXT: ret 6287 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6288 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6289 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 6290 ret <vscale x 1 x i1> %1 6291} 6292 6293define <vscale x 1 x i1> @fcmps_ule_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6294; CHECK-LABEL: fcmps_ule_fv_nxv1f64: 6295; CHECK: # %bb.0: 6296; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6297; CHECK-NEXT: vmflt.vf v8, v8, fa0 6298; CHECK-NEXT: vmnot.m v0, v8 6299; CHECK-NEXT: ret 6300 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6301 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6302 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 6303 ret <vscale x 1 x i1> %1 6304} 6305 6306define <vscale x 1 x i1> @fcmps_une_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 6307; CHECK-LABEL: fcmps_une_vv_nxv1f64: 6308; CHECK: # %bb.0: 6309; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6310; CHECK-NEXT: vmfle.vv v10, v9, v8 6311; CHECK-NEXT: vmfle.vv v8, v8, v9 6312; CHECK-NEXT: vmnand.mm v0, v8, v10 6313; CHECK-NEXT: ret 6314 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 6315 ret <vscale x 1 x i1> %1 6316} 6317 6318define <vscale x 1 x i1> @fcmps_une_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6319; CHECK-LABEL: fcmps_une_vf_nxv1f64: 6320; CHECK: # %bb.0: 6321; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6322; CHECK-NEXT: vmfge.vf v9, v8, fa0 6323; CHECK-NEXT: vmfle.vf v8, v8, fa0 6324; CHECK-NEXT: vmnand.mm v0, v8, v9 6325; CHECK-NEXT: ret 6326 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6327 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6328 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 6329 ret <vscale x 1 x i1> %1 6330} 6331 6332define <vscale x 1 x i1> @fcmps_une_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6333; CHECK-LABEL: fcmps_une_fv_nxv1f64: 6334; CHECK: # %bb.0: 6335; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6336; CHECK-NEXT: vmfle.vf v9, v8, fa0 6337; CHECK-NEXT: vmfge.vf v8, v8, fa0 6338; CHECK-NEXT: vmnand.mm v0, v8, v9 6339; CHECK-NEXT: ret 6340 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6341 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6342 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 6343 ret <vscale x 1 x i1> %1 6344} 6345 6346define <vscale x 1 x i1> @fcmps_uno_vv_nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb) nounwind strictfp { 6347; CHECK-LABEL: fcmps_uno_vv_nxv1f64: 6348; CHECK: # %bb.0: 6349; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6350; CHECK-NEXT: vmfle.vv v9, v9, v9 6351; CHECK-NEXT: vmfle.vv v8, v8, v8 6352; CHECK-NEXT: vmnot.m v8, v8 6353; CHECK-NEXT: vmorn.mm v0, v8, v9 6354; CHECK-NEXT: ret 6355 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 6356 ret <vscale x 1 x i1> %1 6357} 6358 6359define <vscale x 1 x i1> @fcmps_uno_vf_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6360; CHECK-LABEL: fcmps_uno_vf_nxv1f64: 6361; CHECK: # %bb.0: 6362; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6363; CHECK-NEXT: vfmv.v.f v9, fa0 6364; CHECK-NEXT: vmfle.vv v8, v8, v8 6365; CHECK-NEXT: vmfle.vf v9, v9, fa0 6366; CHECK-NEXT: vmnot.m v8, v8 6367; CHECK-NEXT: vmorn.mm v0, v8, v9 6368; CHECK-NEXT: ret 6369 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6370 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6371 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %va, <vscale x 1 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 6372 ret <vscale x 1 x i1> %1 6373} 6374 6375define <vscale x 1 x i1> @fcmps_uno_fv_nxv1f64(<vscale x 1 x double> %va, double %b) nounwind strictfp { 6376; CHECK-LABEL: fcmps_uno_fv_nxv1f64: 6377; CHECK: # %bb.0: 6378; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, ma 6379; CHECK-NEXT: vfmv.v.f v9, fa0 6380; CHECK-NEXT: vmfle.vf v9, v9, fa0 6381; CHECK-NEXT: vmnot.m v9, v9 6382; CHECK-NEXT: vmfle.vv v8, v8, v8 6383; CHECK-NEXT: vmorn.mm v0, v9, v8 6384; CHECK-NEXT: ret 6385 %head = insertelement <vscale x 1 x double> poison, double %b, i32 0 6386 %splat = shufflevector <vscale x 1 x double> %head, <vscale x 1 x double> poison, <vscale x 1 x i32> zeroinitializer 6387 %1 = call <vscale x 1 x i1> @llvm.experimental.constrained.fcmps.nxv1f64(<vscale x 1 x double> %splat, <vscale x 1 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 6388 ret <vscale x 1 x i1> %1 6389} 6390 6391declare <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>, metadata, metadata) 6392define <vscale x 2 x i1> @fcmps_oeq_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6393; CHECK-LABEL: fcmps_oeq_vv_nxv2f64: 6394; CHECK: # %bb.0: 6395; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6396; CHECK-NEXT: vmfle.vv v12, v10, v8 6397; CHECK-NEXT: vmfle.vv v13, v8, v10 6398; CHECK-NEXT: vmand.mm v0, v13, v12 6399; CHECK-NEXT: ret 6400 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 6401 ret <vscale x 2 x i1> %1 6402} 6403 6404define <vscale x 2 x i1> @fcmps_oeq_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6405; CHECK-LABEL: fcmps_oeq_vf_nxv2f64: 6406; CHECK: # %bb.0: 6407; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6408; CHECK-NEXT: vmfge.vf v10, v8, fa0 6409; CHECK-NEXT: vmfle.vf v11, v8, fa0 6410; CHECK-NEXT: vmand.mm v0, v11, v10 6411; CHECK-NEXT: ret 6412 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6413 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6414 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 6415 ret <vscale x 2 x i1> %1 6416} 6417 6418define <vscale x 2 x i1> @fcmps_oeq_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6419; CHECK-LABEL: fcmps_oeq_fv_nxv2f64: 6420; CHECK: # %bb.0: 6421; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6422; CHECK-NEXT: vmfle.vf v10, v8, fa0 6423; CHECK-NEXT: vmfge.vf v11, v8, fa0 6424; CHECK-NEXT: vmand.mm v0, v11, v10 6425; CHECK-NEXT: ret 6426 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6427 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6428 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 6429 ret <vscale x 2 x i1> %1 6430} 6431 6432define <vscale x 2 x i1> @fcmps_ogt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6433; CHECK-LABEL: fcmps_ogt_vv_nxv2f64: 6434; CHECK: # %bb.0: 6435; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6436; CHECK-NEXT: vmflt.vv v0, v10, v8 6437; CHECK-NEXT: ret 6438 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 6439 ret <vscale x 2 x i1> %1 6440} 6441 6442define <vscale x 2 x i1> @fcmps_ogt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6443; CHECK-LABEL: fcmps_ogt_vf_nxv2f64: 6444; CHECK: # %bb.0: 6445; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6446; CHECK-NEXT: vmfgt.vf v0, v8, fa0 6447; CHECK-NEXT: ret 6448 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6449 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6450 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 6451 ret <vscale x 2 x i1> %1 6452} 6453 6454define <vscale x 2 x i1> @fcmps_ogt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6455; CHECK-LABEL: fcmps_ogt_fv_nxv2f64: 6456; CHECK: # %bb.0: 6457; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6458; CHECK-NEXT: vmflt.vf v0, v8, fa0 6459; CHECK-NEXT: ret 6460 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6461 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6462 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 6463 ret <vscale x 2 x i1> %1 6464} 6465 6466define <vscale x 2 x i1> @fcmps_oge_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6467; CHECK-LABEL: fcmps_oge_vv_nxv2f64: 6468; CHECK: # %bb.0: 6469; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6470; CHECK-NEXT: vmfle.vv v0, v10, v8 6471; CHECK-NEXT: ret 6472 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 6473 ret <vscale x 2 x i1> %1 6474} 6475 6476define <vscale x 2 x i1> @fcmps_oge_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6477; CHECK-LABEL: fcmps_oge_vf_nxv2f64: 6478; CHECK: # %bb.0: 6479; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6480; CHECK-NEXT: vmfge.vf v0, v8, fa0 6481; CHECK-NEXT: ret 6482 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6483 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6484 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 6485 ret <vscale x 2 x i1> %1 6486} 6487 6488define <vscale x 2 x i1> @fcmps_oge_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6489; CHECK-LABEL: fcmps_oge_fv_nxv2f64: 6490; CHECK: # %bb.0: 6491; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6492; CHECK-NEXT: vmfle.vf v0, v8, fa0 6493; CHECK-NEXT: ret 6494 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6495 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6496 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 6497 ret <vscale x 2 x i1> %1 6498} 6499 6500define <vscale x 2 x i1> @fcmps_olt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6501; CHECK-LABEL: fcmps_olt_vv_nxv2f64: 6502; CHECK: # %bb.0: 6503; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6504; CHECK-NEXT: vmflt.vv v0, v8, v10 6505; CHECK-NEXT: ret 6506 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 6507 ret <vscale x 2 x i1> %1 6508} 6509 6510define <vscale x 2 x i1> @fcmps_olt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6511; CHECK-LABEL: fcmps_olt_vf_nxv2f64: 6512; CHECK: # %bb.0: 6513; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6514; CHECK-NEXT: vmflt.vf v0, v8, fa0 6515; CHECK-NEXT: ret 6516 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6517 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6518 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 6519 ret <vscale x 2 x i1> %1 6520} 6521 6522define <vscale x 2 x i1> @fcmps_olt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6523; CHECK-LABEL: fcmps_olt_fv_nxv2f64: 6524; CHECK: # %bb.0: 6525; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6526; CHECK-NEXT: vmfgt.vf v0, v8, fa0 6527; CHECK-NEXT: ret 6528 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6529 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6530 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 6531 ret <vscale x 2 x i1> %1 6532} 6533 6534define <vscale x 2 x i1> @fcmps_ole_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6535; CHECK-LABEL: fcmps_ole_vv_nxv2f64: 6536; CHECK: # %bb.0: 6537; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6538; CHECK-NEXT: vmfle.vv v0, v8, v10 6539; CHECK-NEXT: ret 6540 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 6541 ret <vscale x 2 x i1> %1 6542} 6543 6544define <vscale x 2 x i1> @fcmps_ole_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6545; CHECK-LABEL: fcmps_ole_vf_nxv2f64: 6546; CHECK: # %bb.0: 6547; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6548; CHECK-NEXT: vmfle.vf v0, v8, fa0 6549; CHECK-NEXT: ret 6550 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6551 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6552 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 6553 ret <vscale x 2 x i1> %1 6554} 6555 6556define <vscale x 2 x i1> @fcmps_ole_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6557; CHECK-LABEL: fcmps_ole_fv_nxv2f64: 6558; CHECK: # %bb.0: 6559; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6560; CHECK-NEXT: vmfge.vf v0, v8, fa0 6561; CHECK-NEXT: ret 6562 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6563 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6564 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 6565 ret <vscale x 2 x i1> %1 6566} 6567 6568define <vscale x 2 x i1> @fcmps_one_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6569; CHECK-LABEL: fcmps_one_vv_nxv2f64: 6570; CHECK: # %bb.0: 6571; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6572; CHECK-NEXT: vmflt.vv v12, v8, v10 6573; CHECK-NEXT: vmflt.vv v13, v10, v8 6574; CHECK-NEXT: vmor.mm v0, v13, v12 6575; CHECK-NEXT: ret 6576 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 6577 ret <vscale x 2 x i1> %1 6578} 6579 6580define <vscale x 2 x i1> @fcmps_one_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6581; CHECK-LABEL: fcmps_one_vf_nxv2f64: 6582; CHECK: # %bb.0: 6583; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6584; CHECK-NEXT: vmflt.vf v10, v8, fa0 6585; CHECK-NEXT: vmfgt.vf v11, v8, fa0 6586; CHECK-NEXT: vmor.mm v0, v11, v10 6587; CHECK-NEXT: ret 6588 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6589 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6590 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 6591 ret <vscale x 2 x i1> %1 6592} 6593 6594define <vscale x 2 x i1> @fcmps_one_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6595; CHECK-LABEL: fcmps_one_fv_nxv2f64: 6596; CHECK: # %bb.0: 6597; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6598; CHECK-NEXT: vmfgt.vf v10, v8, fa0 6599; CHECK-NEXT: vmflt.vf v11, v8, fa0 6600; CHECK-NEXT: vmor.mm v0, v11, v10 6601; CHECK-NEXT: ret 6602 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6603 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6604 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 6605 ret <vscale x 2 x i1> %1 6606} 6607 6608define <vscale x 2 x i1> @fcmps_ord_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6609; CHECK-LABEL: fcmps_ord_vv_nxv2f64: 6610; CHECK: # %bb.0: 6611; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6612; CHECK-NEXT: vmfle.vv v12, v10, v10 6613; CHECK-NEXT: vmfle.vv v10, v8, v8 6614; CHECK-NEXT: vmand.mm v0, v10, v12 6615; CHECK-NEXT: ret 6616 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 6617 ret <vscale x 2 x i1> %1 6618} 6619 6620define <vscale x 2 x i1> @fcmps_ord_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6621; CHECK-LABEL: fcmps_ord_vf_nxv2f64: 6622; CHECK: # %bb.0: 6623; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6624; CHECK-NEXT: vfmv.v.f v10, fa0 6625; CHECK-NEXT: vmfle.vf v12, v10, fa0 6626; CHECK-NEXT: vmfle.vv v10, v8, v8 6627; CHECK-NEXT: vmand.mm v0, v10, v12 6628; CHECK-NEXT: ret 6629 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6630 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6631 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 6632 ret <vscale x 2 x i1> %1 6633} 6634 6635define <vscale x 2 x i1> @fcmps_ord_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6636; CHECK-LABEL: fcmps_ord_fv_nxv2f64: 6637; CHECK: # %bb.0: 6638; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6639; CHECK-NEXT: vfmv.v.f v10, fa0 6640; CHECK-NEXT: vmfle.vf v12, v10, fa0 6641; CHECK-NEXT: vmfle.vv v10, v8, v8 6642; CHECK-NEXT: vmand.mm v0, v12, v10 6643; CHECK-NEXT: ret 6644 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6645 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6646 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 6647 ret <vscale x 2 x i1> %1 6648} 6649 6650define <vscale x 2 x i1> @fcmps_ueq_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6651; CHECK-LABEL: fcmps_ueq_vv_nxv2f64: 6652; CHECK: # %bb.0: 6653; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6654; CHECK-NEXT: vmflt.vv v12, v8, v10 6655; CHECK-NEXT: vmflt.vv v13, v10, v8 6656; CHECK-NEXT: vmnor.mm v0, v13, v12 6657; CHECK-NEXT: ret 6658 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 6659 ret <vscale x 2 x i1> %1 6660} 6661 6662define <vscale x 2 x i1> @fcmps_ueq_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6663; CHECK-LABEL: fcmps_ueq_vf_nxv2f64: 6664; CHECK: # %bb.0: 6665; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6666; CHECK-NEXT: vmflt.vf v10, v8, fa0 6667; CHECK-NEXT: vmfgt.vf v11, v8, fa0 6668; CHECK-NEXT: vmnor.mm v0, v11, v10 6669; CHECK-NEXT: ret 6670 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6671 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6672 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 6673 ret <vscale x 2 x i1> %1 6674} 6675 6676define <vscale x 2 x i1> @fcmps_ueq_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6677; CHECK-LABEL: fcmps_ueq_fv_nxv2f64: 6678; CHECK: # %bb.0: 6679; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6680; CHECK-NEXT: vmfgt.vf v10, v8, fa0 6681; CHECK-NEXT: vmflt.vf v11, v8, fa0 6682; CHECK-NEXT: vmnor.mm v0, v11, v10 6683; CHECK-NEXT: ret 6684 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6685 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6686 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 6687 ret <vscale x 2 x i1> %1 6688} 6689 6690define <vscale x 2 x i1> @fcmps_ugt_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6691; CHECK-LABEL: fcmps_ugt_vv_nxv2f64: 6692; CHECK: # %bb.0: 6693; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6694; CHECK-NEXT: vmfle.vv v12, v8, v10 6695; CHECK-NEXT: vmnot.m v0, v12 6696; CHECK-NEXT: ret 6697 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 6698 ret <vscale x 2 x i1> %1 6699} 6700 6701define <vscale x 2 x i1> @fcmps_ugt_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6702; CHECK-LABEL: fcmps_ugt_vf_nxv2f64: 6703; CHECK: # %bb.0: 6704; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6705; CHECK-NEXT: vmfle.vf v10, v8, fa0 6706; CHECK-NEXT: vmnot.m v0, v10 6707; CHECK-NEXT: ret 6708 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6709 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6710 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 6711 ret <vscale x 2 x i1> %1 6712} 6713 6714define <vscale x 2 x i1> @fcmps_ugt_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6715; CHECK-LABEL: fcmps_ugt_fv_nxv2f64: 6716; CHECK: # %bb.0: 6717; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6718; CHECK-NEXT: vmfge.vf v10, v8, fa0 6719; CHECK-NEXT: vmnot.m v0, v10 6720; CHECK-NEXT: ret 6721 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6722 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6723 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 6724 ret <vscale x 2 x i1> %1 6725} 6726 6727define <vscale x 2 x i1> @fcmps_uge_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6728; CHECK-LABEL: fcmps_uge_vv_nxv2f64: 6729; CHECK: # %bb.0: 6730; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6731; CHECK-NEXT: vmflt.vv v12, v8, v10 6732; CHECK-NEXT: vmnot.m v0, v12 6733; CHECK-NEXT: ret 6734 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 6735 ret <vscale x 2 x i1> %1 6736} 6737 6738define <vscale x 2 x i1> @fcmps_uge_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6739; CHECK-LABEL: fcmps_uge_vf_nxv2f64: 6740; CHECK: # %bb.0: 6741; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6742; CHECK-NEXT: vmflt.vf v10, v8, fa0 6743; CHECK-NEXT: vmnot.m v0, v10 6744; CHECK-NEXT: ret 6745 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6746 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6747 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 6748 ret <vscale x 2 x i1> %1 6749} 6750 6751define <vscale x 2 x i1> @fcmps_uge_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6752; CHECK-LABEL: fcmps_uge_fv_nxv2f64: 6753; CHECK: # %bb.0: 6754; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6755; CHECK-NEXT: vmfgt.vf v10, v8, fa0 6756; CHECK-NEXT: vmnot.m v0, v10 6757; CHECK-NEXT: ret 6758 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6759 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6760 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 6761 ret <vscale x 2 x i1> %1 6762} 6763 6764define <vscale x 2 x i1> @fcmps_ult_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6765; CHECK-LABEL: fcmps_ult_vv_nxv2f64: 6766; CHECK: # %bb.0: 6767; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6768; CHECK-NEXT: vmfle.vv v12, v10, v8 6769; CHECK-NEXT: vmnot.m v0, v12 6770; CHECK-NEXT: ret 6771 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 6772 ret <vscale x 2 x i1> %1 6773} 6774 6775define <vscale x 2 x i1> @fcmps_ult_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6776; CHECK-LABEL: fcmps_ult_vf_nxv2f64: 6777; CHECK: # %bb.0: 6778; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6779; CHECK-NEXT: vmfge.vf v10, v8, fa0 6780; CHECK-NEXT: vmnot.m v0, v10 6781; CHECK-NEXT: ret 6782 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6783 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6784 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 6785 ret <vscale x 2 x i1> %1 6786} 6787 6788define <vscale x 2 x i1> @fcmps_ult_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6789; CHECK-LABEL: fcmps_ult_fv_nxv2f64: 6790; CHECK: # %bb.0: 6791; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6792; CHECK-NEXT: vmfle.vf v10, v8, fa0 6793; CHECK-NEXT: vmnot.m v0, v10 6794; CHECK-NEXT: ret 6795 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6796 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6797 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 6798 ret <vscale x 2 x i1> %1 6799} 6800 6801define <vscale x 2 x i1> @fcmps_ule_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6802; CHECK-LABEL: fcmps_ule_vv_nxv2f64: 6803; CHECK: # %bb.0: 6804; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6805; CHECK-NEXT: vmflt.vv v12, v10, v8 6806; CHECK-NEXT: vmnot.m v0, v12 6807; CHECK-NEXT: ret 6808 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 6809 ret <vscale x 2 x i1> %1 6810} 6811 6812define <vscale x 2 x i1> @fcmps_ule_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6813; CHECK-LABEL: fcmps_ule_vf_nxv2f64: 6814; CHECK: # %bb.0: 6815; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6816; CHECK-NEXT: vmfgt.vf v10, v8, fa0 6817; CHECK-NEXT: vmnot.m v0, v10 6818; CHECK-NEXT: ret 6819 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6820 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6821 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 6822 ret <vscale x 2 x i1> %1 6823} 6824 6825define <vscale x 2 x i1> @fcmps_ule_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6826; CHECK-LABEL: fcmps_ule_fv_nxv2f64: 6827; CHECK: # %bb.0: 6828; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6829; CHECK-NEXT: vmflt.vf v10, v8, fa0 6830; CHECK-NEXT: vmnot.m v0, v10 6831; CHECK-NEXT: ret 6832 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6833 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6834 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 6835 ret <vscale x 2 x i1> %1 6836} 6837 6838define <vscale x 2 x i1> @fcmps_une_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6839; CHECK-LABEL: fcmps_une_vv_nxv2f64: 6840; CHECK: # %bb.0: 6841; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6842; CHECK-NEXT: vmfle.vv v12, v10, v8 6843; CHECK-NEXT: vmfle.vv v13, v8, v10 6844; CHECK-NEXT: vmnand.mm v0, v13, v12 6845; CHECK-NEXT: ret 6846 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 6847 ret <vscale x 2 x i1> %1 6848} 6849 6850define <vscale x 2 x i1> @fcmps_une_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6851; CHECK-LABEL: fcmps_une_vf_nxv2f64: 6852; CHECK: # %bb.0: 6853; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6854; CHECK-NEXT: vmfge.vf v10, v8, fa0 6855; CHECK-NEXT: vmfle.vf v11, v8, fa0 6856; CHECK-NEXT: vmnand.mm v0, v11, v10 6857; CHECK-NEXT: ret 6858 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6859 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6860 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 6861 ret <vscale x 2 x i1> %1 6862} 6863 6864define <vscale x 2 x i1> @fcmps_une_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6865; CHECK-LABEL: fcmps_une_fv_nxv2f64: 6866; CHECK: # %bb.0: 6867; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6868; CHECK-NEXT: vmfle.vf v10, v8, fa0 6869; CHECK-NEXT: vmfge.vf v11, v8, fa0 6870; CHECK-NEXT: vmnand.mm v0, v11, v10 6871; CHECK-NEXT: ret 6872 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6873 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6874 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 6875 ret <vscale x 2 x i1> %1 6876} 6877 6878define <vscale x 2 x i1> @fcmps_uno_vv_nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb) nounwind strictfp { 6879; CHECK-LABEL: fcmps_uno_vv_nxv2f64: 6880; CHECK: # %bb.0: 6881; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6882; CHECK-NEXT: vmfle.vv v12, v10, v10 6883; CHECK-NEXT: vmfle.vv v10, v8, v8 6884; CHECK-NEXT: vmnot.m v8, v10 6885; CHECK-NEXT: vmorn.mm v0, v8, v12 6886; CHECK-NEXT: ret 6887 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 6888 ret <vscale x 2 x i1> %1 6889} 6890 6891define <vscale x 2 x i1> @fcmps_uno_vf_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6892; CHECK-LABEL: fcmps_uno_vf_nxv2f64: 6893; CHECK: # %bb.0: 6894; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6895; CHECK-NEXT: vfmv.v.f v10, fa0 6896; CHECK-NEXT: vmfle.vv v12, v8, v8 6897; CHECK-NEXT: vmfle.vf v8, v10, fa0 6898; CHECK-NEXT: vmnot.m v9, v12 6899; CHECK-NEXT: vmorn.mm v0, v9, v8 6900; CHECK-NEXT: ret 6901 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6902 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6903 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %va, <vscale x 2 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 6904 ret <vscale x 2 x i1> %1 6905} 6906 6907define <vscale x 2 x i1> @fcmps_uno_fv_nxv2f64(<vscale x 2 x double> %va, double %b) nounwind strictfp { 6908; CHECK-LABEL: fcmps_uno_fv_nxv2f64: 6909; CHECK: # %bb.0: 6910; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, ma 6911; CHECK-NEXT: vfmv.v.f v10, fa0 6912; CHECK-NEXT: vmfle.vf v12, v10, fa0 6913; CHECK-NEXT: vmnot.m v10, v12 6914; CHECK-NEXT: vmfle.vv v11, v8, v8 6915; CHECK-NEXT: vmorn.mm v0, v10, v11 6916; CHECK-NEXT: ret 6917 %head = insertelement <vscale x 2 x double> poison, double %b, i32 0 6918 %splat = shufflevector <vscale x 2 x double> %head, <vscale x 2 x double> poison, <vscale x 2 x i32> zeroinitializer 6919 %1 = call <vscale x 2 x i1> @llvm.experimental.constrained.fcmps.nxv2f64(<vscale x 2 x double> %splat, <vscale x 2 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 6920 ret <vscale x 2 x i1> %1 6921} 6922 6923declare <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double>, <vscale x 4 x double>, metadata, metadata) 6924define <vscale x 4 x i1> @fcmps_oeq_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 6925; CHECK-LABEL: fcmps_oeq_vv_nxv4f64: 6926; CHECK: # %bb.0: 6927; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 6928; CHECK-NEXT: vmfle.vv v16, v12, v8 6929; CHECK-NEXT: vmfle.vv v17, v8, v12 6930; CHECK-NEXT: vmand.mm v0, v17, v16 6931; CHECK-NEXT: ret 6932 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 6933 ret <vscale x 4 x i1> %1 6934} 6935 6936define <vscale x 4 x i1> @fcmps_oeq_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 6937; CHECK-LABEL: fcmps_oeq_vf_nxv4f64: 6938; CHECK: # %bb.0: 6939; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 6940; CHECK-NEXT: vmfge.vf v12, v8, fa0 6941; CHECK-NEXT: vmfle.vf v13, v8, fa0 6942; CHECK-NEXT: vmand.mm v0, v13, v12 6943; CHECK-NEXT: ret 6944 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 6945 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 6946 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 6947 ret <vscale x 4 x i1> %1 6948} 6949 6950define <vscale x 4 x i1> @fcmps_oeq_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 6951; CHECK-LABEL: fcmps_oeq_fv_nxv4f64: 6952; CHECK: # %bb.0: 6953; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 6954; CHECK-NEXT: vmfle.vf v12, v8, fa0 6955; CHECK-NEXT: vmfge.vf v13, v8, fa0 6956; CHECK-NEXT: vmand.mm v0, v13, v12 6957; CHECK-NEXT: ret 6958 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 6959 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 6960 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 6961 ret <vscale x 4 x i1> %1 6962} 6963 6964define <vscale x 4 x i1> @fcmps_ogt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 6965; CHECK-LABEL: fcmps_ogt_vv_nxv4f64: 6966; CHECK: # %bb.0: 6967; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 6968; CHECK-NEXT: vmflt.vv v0, v12, v8 6969; CHECK-NEXT: ret 6970 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 6971 ret <vscale x 4 x i1> %1 6972} 6973 6974define <vscale x 4 x i1> @fcmps_ogt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 6975; CHECK-LABEL: fcmps_ogt_vf_nxv4f64: 6976; CHECK: # %bb.0: 6977; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 6978; CHECK-NEXT: vmfgt.vf v0, v8, fa0 6979; CHECK-NEXT: ret 6980 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 6981 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 6982 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 6983 ret <vscale x 4 x i1> %1 6984} 6985 6986define <vscale x 4 x i1> @fcmps_ogt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 6987; CHECK-LABEL: fcmps_ogt_fv_nxv4f64: 6988; CHECK: # %bb.0: 6989; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 6990; CHECK-NEXT: vmflt.vf v0, v8, fa0 6991; CHECK-NEXT: ret 6992 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 6993 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 6994 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 6995 ret <vscale x 4 x i1> %1 6996} 6997 6998define <vscale x 4 x i1> @fcmps_oge_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 6999; CHECK-LABEL: fcmps_oge_vv_nxv4f64: 7000; CHECK: # %bb.0: 7001; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7002; CHECK-NEXT: vmfle.vv v0, v12, v8 7003; CHECK-NEXT: ret 7004 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 7005 ret <vscale x 4 x i1> %1 7006} 7007 7008define <vscale x 4 x i1> @fcmps_oge_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7009; CHECK-LABEL: fcmps_oge_vf_nxv4f64: 7010; CHECK: # %bb.0: 7011; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7012; CHECK-NEXT: vmfge.vf v0, v8, fa0 7013; CHECK-NEXT: ret 7014 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7015 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7016 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 7017 ret <vscale x 4 x i1> %1 7018} 7019 7020define <vscale x 4 x i1> @fcmps_oge_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7021; CHECK-LABEL: fcmps_oge_fv_nxv4f64: 7022; CHECK: # %bb.0: 7023; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7024; CHECK-NEXT: vmfle.vf v0, v8, fa0 7025; CHECK-NEXT: ret 7026 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7027 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7028 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 7029 ret <vscale x 4 x i1> %1 7030} 7031 7032define <vscale x 4 x i1> @fcmps_olt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 7033; CHECK-LABEL: fcmps_olt_vv_nxv4f64: 7034; CHECK: # %bb.0: 7035; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7036; CHECK-NEXT: vmflt.vv v0, v8, v12 7037; CHECK-NEXT: ret 7038 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 7039 ret <vscale x 4 x i1> %1 7040} 7041 7042define <vscale x 4 x i1> @fcmps_olt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7043; CHECK-LABEL: fcmps_olt_vf_nxv4f64: 7044; CHECK: # %bb.0: 7045; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7046; CHECK-NEXT: vmflt.vf v0, v8, fa0 7047; CHECK-NEXT: ret 7048 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7049 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7050 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 7051 ret <vscale x 4 x i1> %1 7052} 7053 7054define <vscale x 4 x i1> @fcmps_olt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7055; CHECK-LABEL: fcmps_olt_fv_nxv4f64: 7056; CHECK: # %bb.0: 7057; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7058; CHECK-NEXT: vmfgt.vf v0, v8, fa0 7059; CHECK-NEXT: ret 7060 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7061 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7062 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 7063 ret <vscale x 4 x i1> %1 7064} 7065 7066define <vscale x 4 x i1> @fcmps_ole_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 7067; CHECK-LABEL: fcmps_ole_vv_nxv4f64: 7068; CHECK: # %bb.0: 7069; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7070; CHECK-NEXT: vmfle.vv v0, v8, v12 7071; CHECK-NEXT: ret 7072 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 7073 ret <vscale x 4 x i1> %1 7074} 7075 7076define <vscale x 4 x i1> @fcmps_ole_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7077; CHECK-LABEL: fcmps_ole_vf_nxv4f64: 7078; CHECK: # %bb.0: 7079; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7080; CHECK-NEXT: vmfle.vf v0, v8, fa0 7081; CHECK-NEXT: ret 7082 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7083 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7084 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 7085 ret <vscale x 4 x i1> %1 7086} 7087 7088define <vscale x 4 x i1> @fcmps_ole_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7089; CHECK-LABEL: fcmps_ole_fv_nxv4f64: 7090; CHECK: # %bb.0: 7091; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7092; CHECK-NEXT: vmfge.vf v0, v8, fa0 7093; CHECK-NEXT: ret 7094 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7095 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7096 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 7097 ret <vscale x 4 x i1> %1 7098} 7099 7100define <vscale x 4 x i1> @fcmps_one_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 7101; CHECK-LABEL: fcmps_one_vv_nxv4f64: 7102; CHECK: # %bb.0: 7103; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7104; CHECK-NEXT: vmflt.vv v16, v8, v12 7105; CHECK-NEXT: vmflt.vv v17, v12, v8 7106; CHECK-NEXT: vmor.mm v0, v17, v16 7107; CHECK-NEXT: ret 7108 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 7109 ret <vscale x 4 x i1> %1 7110} 7111 7112define <vscale x 4 x i1> @fcmps_one_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7113; CHECK-LABEL: fcmps_one_vf_nxv4f64: 7114; CHECK: # %bb.0: 7115; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7116; CHECK-NEXT: vmflt.vf v12, v8, fa0 7117; CHECK-NEXT: vmfgt.vf v13, v8, fa0 7118; CHECK-NEXT: vmor.mm v0, v13, v12 7119; CHECK-NEXT: ret 7120 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7121 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7122 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 7123 ret <vscale x 4 x i1> %1 7124} 7125 7126define <vscale x 4 x i1> @fcmps_one_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7127; CHECK-LABEL: fcmps_one_fv_nxv4f64: 7128; CHECK: # %bb.0: 7129; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7130; CHECK-NEXT: vmfgt.vf v12, v8, fa0 7131; CHECK-NEXT: vmflt.vf v13, v8, fa0 7132; CHECK-NEXT: vmor.mm v0, v13, v12 7133; CHECK-NEXT: ret 7134 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7135 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7136 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 7137 ret <vscale x 4 x i1> %1 7138} 7139 7140define <vscale x 4 x i1> @fcmps_ord_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 7141; CHECK-LABEL: fcmps_ord_vv_nxv4f64: 7142; CHECK: # %bb.0: 7143; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7144; CHECK-NEXT: vmfle.vv v16, v12, v12 7145; CHECK-NEXT: vmfle.vv v12, v8, v8 7146; CHECK-NEXT: vmand.mm v0, v12, v16 7147; CHECK-NEXT: ret 7148 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 7149 ret <vscale x 4 x i1> %1 7150} 7151 7152define <vscale x 4 x i1> @fcmps_ord_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7153; CHECK-LABEL: fcmps_ord_vf_nxv4f64: 7154; CHECK: # %bb.0: 7155; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7156; CHECK-NEXT: vfmv.v.f v12, fa0 7157; CHECK-NEXT: vmfle.vf v16, v12, fa0 7158; CHECK-NEXT: vmfle.vv v12, v8, v8 7159; CHECK-NEXT: vmand.mm v0, v12, v16 7160; CHECK-NEXT: ret 7161 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7162 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7163 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 7164 ret <vscale x 4 x i1> %1 7165} 7166 7167define <vscale x 4 x i1> @fcmps_ord_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7168; CHECK-LABEL: fcmps_ord_fv_nxv4f64: 7169; CHECK: # %bb.0: 7170; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7171; CHECK-NEXT: vfmv.v.f v12, fa0 7172; CHECK-NEXT: vmfle.vf v16, v12, fa0 7173; CHECK-NEXT: vmfle.vv v12, v8, v8 7174; CHECK-NEXT: vmand.mm v0, v16, v12 7175; CHECK-NEXT: ret 7176 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7177 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7178 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 7179 ret <vscale x 4 x i1> %1 7180} 7181 7182define <vscale x 4 x i1> @fcmps_ueq_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 7183; CHECK-LABEL: fcmps_ueq_vv_nxv4f64: 7184; CHECK: # %bb.0: 7185; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7186; CHECK-NEXT: vmflt.vv v16, v8, v12 7187; CHECK-NEXT: vmflt.vv v17, v12, v8 7188; CHECK-NEXT: vmnor.mm v0, v17, v16 7189; CHECK-NEXT: ret 7190 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 7191 ret <vscale x 4 x i1> %1 7192} 7193 7194define <vscale x 4 x i1> @fcmps_ueq_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7195; CHECK-LABEL: fcmps_ueq_vf_nxv4f64: 7196; CHECK: # %bb.0: 7197; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7198; CHECK-NEXT: vmflt.vf v12, v8, fa0 7199; CHECK-NEXT: vmfgt.vf v13, v8, fa0 7200; CHECK-NEXT: vmnor.mm v0, v13, v12 7201; CHECK-NEXT: ret 7202 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7203 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7204 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 7205 ret <vscale x 4 x i1> %1 7206} 7207 7208define <vscale x 4 x i1> @fcmps_ueq_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7209; CHECK-LABEL: fcmps_ueq_fv_nxv4f64: 7210; CHECK: # %bb.0: 7211; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7212; CHECK-NEXT: vmfgt.vf v12, v8, fa0 7213; CHECK-NEXT: vmflt.vf v13, v8, fa0 7214; CHECK-NEXT: vmnor.mm v0, v13, v12 7215; CHECK-NEXT: ret 7216 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7217 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7218 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 7219 ret <vscale x 4 x i1> %1 7220} 7221 7222define <vscale x 4 x i1> @fcmps_ugt_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 7223; CHECK-LABEL: fcmps_ugt_vv_nxv4f64: 7224; CHECK: # %bb.0: 7225; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7226; CHECK-NEXT: vmfle.vv v16, v8, v12 7227; CHECK-NEXT: vmnot.m v0, v16 7228; CHECK-NEXT: ret 7229 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 7230 ret <vscale x 4 x i1> %1 7231} 7232 7233define <vscale x 4 x i1> @fcmps_ugt_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7234; CHECK-LABEL: fcmps_ugt_vf_nxv4f64: 7235; CHECK: # %bb.0: 7236; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7237; CHECK-NEXT: vmfle.vf v12, v8, fa0 7238; CHECK-NEXT: vmnot.m v0, v12 7239; CHECK-NEXT: ret 7240 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7241 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7242 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 7243 ret <vscale x 4 x i1> %1 7244} 7245 7246define <vscale x 4 x i1> @fcmps_ugt_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7247; CHECK-LABEL: fcmps_ugt_fv_nxv4f64: 7248; CHECK: # %bb.0: 7249; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7250; CHECK-NEXT: vmfge.vf v12, v8, fa0 7251; CHECK-NEXT: vmnot.m v0, v12 7252; CHECK-NEXT: ret 7253 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7254 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7255 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 7256 ret <vscale x 4 x i1> %1 7257} 7258 7259define <vscale x 4 x i1> @fcmps_uge_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 7260; CHECK-LABEL: fcmps_uge_vv_nxv4f64: 7261; CHECK: # %bb.0: 7262; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7263; CHECK-NEXT: vmflt.vv v16, v8, v12 7264; CHECK-NEXT: vmnot.m v0, v16 7265; CHECK-NEXT: ret 7266 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 7267 ret <vscale x 4 x i1> %1 7268} 7269 7270define <vscale x 4 x i1> @fcmps_uge_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7271; CHECK-LABEL: fcmps_uge_vf_nxv4f64: 7272; CHECK: # %bb.0: 7273; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7274; CHECK-NEXT: vmflt.vf v12, v8, fa0 7275; CHECK-NEXT: vmnot.m v0, v12 7276; CHECK-NEXT: ret 7277 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7278 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7279 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 7280 ret <vscale x 4 x i1> %1 7281} 7282 7283define <vscale x 4 x i1> @fcmps_uge_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7284; CHECK-LABEL: fcmps_uge_fv_nxv4f64: 7285; CHECK: # %bb.0: 7286; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7287; CHECK-NEXT: vmfgt.vf v12, v8, fa0 7288; CHECK-NEXT: vmnot.m v0, v12 7289; CHECK-NEXT: ret 7290 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7291 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7292 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 7293 ret <vscale x 4 x i1> %1 7294} 7295 7296define <vscale x 4 x i1> @fcmps_ult_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 7297; CHECK-LABEL: fcmps_ult_vv_nxv4f64: 7298; CHECK: # %bb.0: 7299; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7300; CHECK-NEXT: vmfle.vv v16, v12, v8 7301; CHECK-NEXT: vmnot.m v0, v16 7302; CHECK-NEXT: ret 7303 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 7304 ret <vscale x 4 x i1> %1 7305} 7306 7307define <vscale x 4 x i1> @fcmps_ult_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7308; CHECK-LABEL: fcmps_ult_vf_nxv4f64: 7309; CHECK: # %bb.0: 7310; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7311; CHECK-NEXT: vmfge.vf v12, v8, fa0 7312; CHECK-NEXT: vmnot.m v0, v12 7313; CHECK-NEXT: ret 7314 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7315 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7316 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 7317 ret <vscale x 4 x i1> %1 7318} 7319 7320define <vscale x 4 x i1> @fcmps_ult_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7321; CHECK-LABEL: fcmps_ult_fv_nxv4f64: 7322; CHECK: # %bb.0: 7323; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7324; CHECK-NEXT: vmfle.vf v12, v8, fa0 7325; CHECK-NEXT: vmnot.m v0, v12 7326; CHECK-NEXT: ret 7327 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7328 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7329 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 7330 ret <vscale x 4 x i1> %1 7331} 7332 7333define <vscale x 4 x i1> @fcmps_ule_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 7334; CHECK-LABEL: fcmps_ule_vv_nxv4f64: 7335; CHECK: # %bb.0: 7336; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7337; CHECK-NEXT: vmflt.vv v16, v12, v8 7338; CHECK-NEXT: vmnot.m v0, v16 7339; CHECK-NEXT: ret 7340 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 7341 ret <vscale x 4 x i1> %1 7342} 7343 7344define <vscale x 4 x i1> @fcmps_ule_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7345; CHECK-LABEL: fcmps_ule_vf_nxv4f64: 7346; CHECK: # %bb.0: 7347; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7348; CHECK-NEXT: vmfgt.vf v12, v8, fa0 7349; CHECK-NEXT: vmnot.m v0, v12 7350; CHECK-NEXT: ret 7351 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7352 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7353 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 7354 ret <vscale x 4 x i1> %1 7355} 7356 7357define <vscale x 4 x i1> @fcmps_ule_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7358; CHECK-LABEL: fcmps_ule_fv_nxv4f64: 7359; CHECK: # %bb.0: 7360; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7361; CHECK-NEXT: vmflt.vf v12, v8, fa0 7362; CHECK-NEXT: vmnot.m v0, v12 7363; CHECK-NEXT: ret 7364 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7365 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7366 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 7367 ret <vscale x 4 x i1> %1 7368} 7369 7370define <vscale x 4 x i1> @fcmps_une_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 7371; CHECK-LABEL: fcmps_une_vv_nxv4f64: 7372; CHECK: # %bb.0: 7373; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7374; CHECK-NEXT: vmfle.vv v16, v12, v8 7375; CHECK-NEXT: vmfle.vv v17, v8, v12 7376; CHECK-NEXT: vmnand.mm v0, v17, v16 7377; CHECK-NEXT: ret 7378 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 7379 ret <vscale x 4 x i1> %1 7380} 7381 7382define <vscale x 4 x i1> @fcmps_une_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7383; CHECK-LABEL: fcmps_une_vf_nxv4f64: 7384; CHECK: # %bb.0: 7385; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7386; CHECK-NEXT: vmfge.vf v12, v8, fa0 7387; CHECK-NEXT: vmfle.vf v13, v8, fa0 7388; CHECK-NEXT: vmnand.mm v0, v13, v12 7389; CHECK-NEXT: ret 7390 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7391 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7392 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 7393 ret <vscale x 4 x i1> %1 7394} 7395 7396define <vscale x 4 x i1> @fcmps_une_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7397; CHECK-LABEL: fcmps_une_fv_nxv4f64: 7398; CHECK: # %bb.0: 7399; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7400; CHECK-NEXT: vmfle.vf v12, v8, fa0 7401; CHECK-NEXT: vmfge.vf v13, v8, fa0 7402; CHECK-NEXT: vmnand.mm v0, v13, v12 7403; CHECK-NEXT: ret 7404 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7405 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7406 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 7407 ret <vscale x 4 x i1> %1 7408} 7409 7410define <vscale x 4 x i1> @fcmps_uno_vv_nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb) nounwind strictfp { 7411; CHECK-LABEL: fcmps_uno_vv_nxv4f64: 7412; CHECK: # %bb.0: 7413; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7414; CHECK-NEXT: vmfle.vv v16, v12, v12 7415; CHECK-NEXT: vmfle.vv v12, v8, v8 7416; CHECK-NEXT: vmnot.m v8, v12 7417; CHECK-NEXT: vmorn.mm v0, v8, v16 7418; CHECK-NEXT: ret 7419 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 7420 ret <vscale x 4 x i1> %1 7421} 7422 7423define <vscale x 4 x i1> @fcmps_uno_vf_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7424; CHECK-LABEL: fcmps_uno_vf_nxv4f64: 7425; CHECK: # %bb.0: 7426; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7427; CHECK-NEXT: vfmv.v.f v12, fa0 7428; CHECK-NEXT: vmfle.vv v16, v8, v8 7429; CHECK-NEXT: vmfle.vf v8, v12, fa0 7430; CHECK-NEXT: vmnot.m v9, v16 7431; CHECK-NEXT: vmorn.mm v0, v9, v8 7432; CHECK-NEXT: ret 7433 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7434 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7435 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %va, <vscale x 4 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 7436 ret <vscale x 4 x i1> %1 7437} 7438 7439define <vscale x 4 x i1> @fcmps_uno_fv_nxv4f64(<vscale x 4 x double> %va, double %b) nounwind strictfp { 7440; CHECK-LABEL: fcmps_uno_fv_nxv4f64: 7441; CHECK: # %bb.0: 7442; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, ma 7443; CHECK-NEXT: vfmv.v.f v12, fa0 7444; CHECK-NEXT: vmfle.vf v16, v12, fa0 7445; CHECK-NEXT: vmnot.m v12, v16 7446; CHECK-NEXT: vmfle.vv v13, v8, v8 7447; CHECK-NEXT: vmorn.mm v0, v12, v13 7448; CHECK-NEXT: ret 7449 %head = insertelement <vscale x 4 x double> poison, double %b, i32 0 7450 %splat = shufflevector <vscale x 4 x double> %head, <vscale x 4 x double> poison, <vscale x 4 x i32> zeroinitializer 7451 %1 = call <vscale x 4 x i1> @llvm.experimental.constrained.fcmps.nxv4f64(<vscale x 4 x double> %splat, <vscale x 4 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 7452 ret <vscale x 4 x i1> %1 7453} 7454 7455declare <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double>, <vscale x 8 x double>, metadata, metadata) 7456define <vscale x 8 x i1> @fcmps_oeq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7457; CHECK-LABEL: fcmps_oeq_vv_nxv8f64: 7458; CHECK: # %bb.0: 7459; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7460; CHECK-NEXT: vmfle.vv v24, v16, v8 7461; CHECK-NEXT: vmfle.vv v25, v8, v16 7462; CHECK-NEXT: vmand.mm v0, v25, v24 7463; CHECK-NEXT: ret 7464 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oeq", metadata !"fpexcept.strict") strictfp 7465 ret <vscale x 8 x i1> %1 7466} 7467 7468define <vscale x 8 x i1> @fcmps_oeq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7469; CHECK-LABEL: fcmps_oeq_vf_nxv8f64: 7470; CHECK: # %bb.0: 7471; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7472; CHECK-NEXT: vmfge.vf v16, v8, fa0 7473; CHECK-NEXT: vmfle.vf v17, v8, fa0 7474; CHECK-NEXT: vmand.mm v0, v17, v16 7475; CHECK-NEXT: ret 7476 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7477 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7478 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"oeq", metadata !"fpexcept.strict") strictfp 7479 ret <vscale x 8 x i1> %1 7480} 7481 7482define <vscale x 8 x i1> @fcmps_oeq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7483; CHECK-LABEL: fcmps_oeq_fv_nxv8f64: 7484; CHECK: # %bb.0: 7485; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7486; CHECK-NEXT: vmfle.vf v16, v8, fa0 7487; CHECK-NEXT: vmfge.vf v17, v8, fa0 7488; CHECK-NEXT: vmand.mm v0, v17, v16 7489; CHECK-NEXT: ret 7490 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7491 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7492 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"oeq", metadata !"fpexcept.strict") strictfp 7493 ret <vscale x 8 x i1> %1 7494} 7495 7496define <vscale x 8 x i1> @fcmps_ogt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7497; CHECK-LABEL: fcmps_ogt_vv_nxv8f64: 7498; CHECK: # %bb.0: 7499; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7500; CHECK-NEXT: vmflt.vv v0, v16, v8 7501; CHECK-NEXT: ret 7502 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ogt", metadata !"fpexcept.strict") strictfp 7503 ret <vscale x 8 x i1> %1 7504} 7505 7506define <vscale x 8 x i1> @fcmps_ogt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7507; CHECK-LABEL: fcmps_ogt_vf_nxv8f64: 7508; CHECK: # %bb.0: 7509; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7510; CHECK-NEXT: vmfgt.vf v0, v8, fa0 7511; CHECK-NEXT: ret 7512 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7513 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7514 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ogt", metadata !"fpexcept.strict") strictfp 7515 ret <vscale x 8 x i1> %1 7516} 7517 7518define <vscale x 8 x i1> @fcmps_ogt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7519; CHECK-LABEL: fcmps_ogt_fv_nxv8f64: 7520; CHECK: # %bb.0: 7521; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7522; CHECK-NEXT: vmflt.vf v0, v8, fa0 7523; CHECK-NEXT: ret 7524 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7525 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7526 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ogt", metadata !"fpexcept.strict") strictfp 7527 ret <vscale x 8 x i1> %1 7528} 7529 7530define <vscale x 8 x i1> @fcmps_oge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7531; CHECK-LABEL: fcmps_oge_vv_nxv8f64: 7532; CHECK: # %bb.0: 7533; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7534; CHECK-NEXT: vmfle.vv v0, v16, v8 7535; CHECK-NEXT: ret 7536 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"oge", metadata !"fpexcept.strict") strictfp 7537 ret <vscale x 8 x i1> %1 7538} 7539 7540define <vscale x 8 x i1> @fcmps_oge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7541; CHECK-LABEL: fcmps_oge_vf_nxv8f64: 7542; CHECK: # %bb.0: 7543; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7544; CHECK-NEXT: vmfge.vf v0, v8, fa0 7545; CHECK-NEXT: ret 7546 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7547 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7548 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"oge", metadata !"fpexcept.strict") strictfp 7549 ret <vscale x 8 x i1> %1 7550} 7551 7552define <vscale x 8 x i1> @fcmps_oge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7553; CHECK-LABEL: fcmps_oge_fv_nxv8f64: 7554; CHECK: # %bb.0: 7555; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7556; CHECK-NEXT: vmfle.vf v0, v8, fa0 7557; CHECK-NEXT: ret 7558 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7559 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7560 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"oge", metadata !"fpexcept.strict") strictfp 7561 ret <vscale x 8 x i1> %1 7562} 7563 7564define <vscale x 8 x i1> @fcmps_olt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7565; CHECK-LABEL: fcmps_olt_vv_nxv8f64: 7566; CHECK: # %bb.0: 7567; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7568; CHECK-NEXT: vmflt.vv v0, v8, v16 7569; CHECK-NEXT: ret 7570 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"olt", metadata !"fpexcept.strict") strictfp 7571 ret <vscale x 8 x i1> %1 7572} 7573 7574define <vscale x 8 x i1> @fcmps_olt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7575; CHECK-LABEL: fcmps_olt_vf_nxv8f64: 7576; CHECK: # %bb.0: 7577; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7578; CHECK-NEXT: vmflt.vf v0, v8, fa0 7579; CHECK-NEXT: ret 7580 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7581 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7582 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"olt", metadata !"fpexcept.strict") strictfp 7583 ret <vscale x 8 x i1> %1 7584} 7585 7586define <vscale x 8 x i1> @fcmps_olt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7587; CHECK-LABEL: fcmps_olt_fv_nxv8f64: 7588; CHECK: # %bb.0: 7589; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7590; CHECK-NEXT: vmfgt.vf v0, v8, fa0 7591; CHECK-NEXT: ret 7592 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7593 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7594 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"olt", metadata !"fpexcept.strict") strictfp 7595 ret <vscale x 8 x i1> %1 7596} 7597 7598define <vscale x 8 x i1> @fcmps_ole_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7599; CHECK-LABEL: fcmps_ole_vv_nxv8f64: 7600; CHECK: # %bb.0: 7601; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7602; CHECK-NEXT: vmfle.vv v0, v8, v16 7603; CHECK-NEXT: ret 7604 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ole", metadata !"fpexcept.strict") strictfp 7605 ret <vscale x 8 x i1> %1 7606} 7607 7608define <vscale x 8 x i1> @fcmps_ole_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7609; CHECK-LABEL: fcmps_ole_vf_nxv8f64: 7610; CHECK: # %bb.0: 7611; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7612; CHECK-NEXT: vmfle.vf v0, v8, fa0 7613; CHECK-NEXT: ret 7614 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7615 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7616 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ole", metadata !"fpexcept.strict") strictfp 7617 ret <vscale x 8 x i1> %1 7618} 7619 7620define <vscale x 8 x i1> @fcmps_ole_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7621; CHECK-LABEL: fcmps_ole_fv_nxv8f64: 7622; CHECK: # %bb.0: 7623; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7624; CHECK-NEXT: vmfge.vf v0, v8, fa0 7625; CHECK-NEXT: ret 7626 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7627 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7628 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ole", metadata !"fpexcept.strict") strictfp 7629 ret <vscale x 8 x i1> %1 7630} 7631 7632define <vscale x 8 x i1> @fcmps_one_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7633; CHECK-LABEL: fcmps_one_vv_nxv8f64: 7634; CHECK: # %bb.0: 7635; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7636; CHECK-NEXT: vmflt.vv v24, v8, v16 7637; CHECK-NEXT: vmflt.vv v25, v16, v8 7638; CHECK-NEXT: vmor.mm v0, v25, v24 7639; CHECK-NEXT: ret 7640 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"one", metadata !"fpexcept.strict") strictfp 7641 ret <vscale x 8 x i1> %1 7642} 7643 7644define <vscale x 8 x i1> @fcmps_one_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7645; CHECK-LABEL: fcmps_one_vf_nxv8f64: 7646; CHECK: # %bb.0: 7647; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7648; CHECK-NEXT: vmflt.vf v16, v8, fa0 7649; CHECK-NEXT: vmfgt.vf v17, v8, fa0 7650; CHECK-NEXT: vmor.mm v0, v17, v16 7651; CHECK-NEXT: ret 7652 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7653 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7654 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"one", metadata !"fpexcept.strict") strictfp 7655 ret <vscale x 8 x i1> %1 7656} 7657 7658define <vscale x 8 x i1> @fcmps_one_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7659; CHECK-LABEL: fcmps_one_fv_nxv8f64: 7660; CHECK: # %bb.0: 7661; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7662; CHECK-NEXT: vmfgt.vf v16, v8, fa0 7663; CHECK-NEXT: vmflt.vf v17, v8, fa0 7664; CHECK-NEXT: vmor.mm v0, v17, v16 7665; CHECK-NEXT: ret 7666 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7667 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7668 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"one", metadata !"fpexcept.strict") strictfp 7669 ret <vscale x 8 x i1> %1 7670} 7671 7672define <vscale x 8 x i1> @fcmps_ord_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7673; CHECK-LABEL: fcmps_ord_vv_nxv8f64: 7674; CHECK: # %bb.0: 7675; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7676; CHECK-NEXT: vmfle.vv v24, v16, v16 7677; CHECK-NEXT: vmfle.vv v16, v8, v8 7678; CHECK-NEXT: vmand.mm v0, v16, v24 7679; CHECK-NEXT: ret 7680 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ord", metadata !"fpexcept.strict") strictfp 7681 ret <vscale x 8 x i1> %1 7682} 7683 7684define <vscale x 8 x i1> @fcmps_ord_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7685; CHECK-LABEL: fcmps_ord_vf_nxv8f64: 7686; CHECK: # %bb.0: 7687; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7688; CHECK-NEXT: vfmv.v.f v16, fa0 7689; CHECK-NEXT: vmfle.vf v24, v16, fa0 7690; CHECK-NEXT: vmfle.vv v16, v8, v8 7691; CHECK-NEXT: vmand.mm v0, v16, v24 7692; CHECK-NEXT: ret 7693 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7694 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7695 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ord", metadata !"fpexcept.strict") strictfp 7696 ret <vscale x 8 x i1> %1 7697} 7698 7699define <vscale x 8 x i1> @fcmps_ord_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7700; CHECK-LABEL: fcmps_ord_fv_nxv8f64: 7701; CHECK: # %bb.0: 7702; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7703; CHECK-NEXT: vfmv.v.f v16, fa0 7704; CHECK-NEXT: vmfle.vf v24, v16, fa0 7705; CHECK-NEXT: vmfle.vv v16, v8, v8 7706; CHECK-NEXT: vmand.mm v0, v24, v16 7707; CHECK-NEXT: ret 7708 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7709 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7710 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ord", metadata !"fpexcept.strict") strictfp 7711 ret <vscale x 8 x i1> %1 7712} 7713 7714define <vscale x 8 x i1> @fcmps_ueq_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7715; CHECK-LABEL: fcmps_ueq_vv_nxv8f64: 7716; CHECK: # %bb.0: 7717; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7718; CHECK-NEXT: vmflt.vv v24, v8, v16 7719; CHECK-NEXT: vmflt.vv v25, v16, v8 7720; CHECK-NEXT: vmnor.mm v0, v25, v24 7721; CHECK-NEXT: ret 7722 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ueq", metadata !"fpexcept.strict") strictfp 7723 ret <vscale x 8 x i1> %1 7724} 7725 7726define <vscale x 8 x i1> @fcmps_ueq_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7727; CHECK-LABEL: fcmps_ueq_vf_nxv8f64: 7728; CHECK: # %bb.0: 7729; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7730; CHECK-NEXT: vmflt.vf v16, v8, fa0 7731; CHECK-NEXT: vmfgt.vf v17, v8, fa0 7732; CHECK-NEXT: vmnor.mm v0, v17, v16 7733; CHECK-NEXT: ret 7734 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7735 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7736 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ueq", metadata !"fpexcept.strict") strictfp 7737 ret <vscale x 8 x i1> %1 7738} 7739 7740define <vscale x 8 x i1> @fcmps_ueq_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7741; CHECK-LABEL: fcmps_ueq_fv_nxv8f64: 7742; CHECK: # %bb.0: 7743; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7744; CHECK-NEXT: vmfgt.vf v16, v8, fa0 7745; CHECK-NEXT: vmflt.vf v17, v8, fa0 7746; CHECK-NEXT: vmnor.mm v0, v17, v16 7747; CHECK-NEXT: ret 7748 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7749 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7750 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ueq", metadata !"fpexcept.strict") strictfp 7751 ret <vscale x 8 x i1> %1 7752} 7753 7754define <vscale x 8 x i1> @fcmps_ugt_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7755; CHECK-LABEL: fcmps_ugt_vv_nxv8f64: 7756; CHECK: # %bb.0: 7757; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7758; CHECK-NEXT: vmfle.vv v24, v8, v16 7759; CHECK-NEXT: vmnot.m v0, v24 7760; CHECK-NEXT: ret 7761 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ugt", metadata !"fpexcept.strict") strictfp 7762 ret <vscale x 8 x i1> %1 7763} 7764 7765define <vscale x 8 x i1> @fcmps_ugt_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7766; CHECK-LABEL: fcmps_ugt_vf_nxv8f64: 7767; CHECK: # %bb.0: 7768; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7769; CHECK-NEXT: vmfle.vf v16, v8, fa0 7770; CHECK-NEXT: vmnot.m v0, v16 7771; CHECK-NEXT: ret 7772 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7773 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7774 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ugt", metadata !"fpexcept.strict") strictfp 7775 ret <vscale x 8 x i1> %1 7776} 7777 7778define <vscale x 8 x i1> @fcmps_ugt_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7779; CHECK-LABEL: fcmps_ugt_fv_nxv8f64: 7780; CHECK: # %bb.0: 7781; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7782; CHECK-NEXT: vmfge.vf v16, v8, fa0 7783; CHECK-NEXT: vmnot.m v0, v16 7784; CHECK-NEXT: ret 7785 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7786 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7787 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ugt", metadata !"fpexcept.strict") strictfp 7788 ret <vscale x 8 x i1> %1 7789} 7790 7791define <vscale x 8 x i1> @fcmps_uge_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7792; CHECK-LABEL: fcmps_uge_vv_nxv8f64: 7793; CHECK: # %bb.0: 7794; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7795; CHECK-NEXT: vmflt.vv v24, v8, v16 7796; CHECK-NEXT: vmnot.m v0, v24 7797; CHECK-NEXT: ret 7798 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uge", metadata !"fpexcept.strict") strictfp 7799 ret <vscale x 8 x i1> %1 7800} 7801 7802define <vscale x 8 x i1> @fcmps_uge_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7803; CHECK-LABEL: fcmps_uge_vf_nxv8f64: 7804; CHECK: # %bb.0: 7805; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7806; CHECK-NEXT: vmflt.vf v16, v8, fa0 7807; CHECK-NEXT: vmnot.m v0, v16 7808; CHECK-NEXT: ret 7809 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7810 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7811 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"uge", metadata !"fpexcept.strict") strictfp 7812 ret <vscale x 8 x i1> %1 7813} 7814 7815define <vscale x 8 x i1> @fcmps_uge_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7816; CHECK-LABEL: fcmps_uge_fv_nxv8f64: 7817; CHECK: # %bb.0: 7818; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7819; CHECK-NEXT: vmfgt.vf v16, v8, fa0 7820; CHECK-NEXT: vmnot.m v0, v16 7821; CHECK-NEXT: ret 7822 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7823 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7824 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"uge", metadata !"fpexcept.strict") strictfp 7825 ret <vscale x 8 x i1> %1 7826} 7827 7828define <vscale x 8 x i1> @fcmps_ult_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7829; CHECK-LABEL: fcmps_ult_vv_nxv8f64: 7830; CHECK: # %bb.0: 7831; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7832; CHECK-NEXT: vmfle.vv v24, v16, v8 7833; CHECK-NEXT: vmnot.m v0, v24 7834; CHECK-NEXT: ret 7835 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ult", metadata !"fpexcept.strict") strictfp 7836 ret <vscale x 8 x i1> %1 7837} 7838 7839define <vscale x 8 x i1> @fcmps_ult_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7840; CHECK-LABEL: fcmps_ult_vf_nxv8f64: 7841; CHECK: # %bb.0: 7842; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7843; CHECK-NEXT: vmfge.vf v16, v8, fa0 7844; CHECK-NEXT: vmnot.m v0, v16 7845; CHECK-NEXT: ret 7846 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7847 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7848 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ult", metadata !"fpexcept.strict") strictfp 7849 ret <vscale x 8 x i1> %1 7850} 7851 7852define <vscale x 8 x i1> @fcmps_ult_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7853; CHECK-LABEL: fcmps_ult_fv_nxv8f64: 7854; CHECK: # %bb.0: 7855; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7856; CHECK-NEXT: vmfle.vf v16, v8, fa0 7857; CHECK-NEXT: vmnot.m v0, v16 7858; CHECK-NEXT: ret 7859 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7860 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7861 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ult", metadata !"fpexcept.strict") strictfp 7862 ret <vscale x 8 x i1> %1 7863} 7864 7865define <vscale x 8 x i1> @fcmps_ule_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7866; CHECK-LABEL: fcmps_ule_vv_nxv8f64: 7867; CHECK: # %bb.0: 7868; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7869; CHECK-NEXT: vmflt.vv v24, v16, v8 7870; CHECK-NEXT: vmnot.m v0, v24 7871; CHECK-NEXT: ret 7872 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"ule", metadata !"fpexcept.strict") strictfp 7873 ret <vscale x 8 x i1> %1 7874} 7875 7876define <vscale x 8 x i1> @fcmps_ule_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7877; CHECK-LABEL: fcmps_ule_vf_nxv8f64: 7878; CHECK: # %bb.0: 7879; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7880; CHECK-NEXT: vmfgt.vf v16, v8, fa0 7881; CHECK-NEXT: vmnot.m v0, v16 7882; CHECK-NEXT: ret 7883 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7884 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7885 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"ule", metadata !"fpexcept.strict") strictfp 7886 ret <vscale x 8 x i1> %1 7887} 7888 7889define <vscale x 8 x i1> @fcmps_ule_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7890; CHECK-LABEL: fcmps_ule_fv_nxv8f64: 7891; CHECK: # %bb.0: 7892; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7893; CHECK-NEXT: vmflt.vf v16, v8, fa0 7894; CHECK-NEXT: vmnot.m v0, v16 7895; CHECK-NEXT: ret 7896 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7897 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7898 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"ule", metadata !"fpexcept.strict") strictfp 7899 ret <vscale x 8 x i1> %1 7900} 7901 7902define <vscale x 8 x i1> @fcmps_une_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7903; CHECK-LABEL: fcmps_une_vv_nxv8f64: 7904; CHECK: # %bb.0: 7905; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7906; CHECK-NEXT: vmfle.vv v24, v16, v8 7907; CHECK-NEXT: vmfle.vv v25, v8, v16 7908; CHECK-NEXT: vmnand.mm v0, v25, v24 7909; CHECK-NEXT: ret 7910 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"une", metadata !"fpexcept.strict") strictfp 7911 ret <vscale x 8 x i1> %1 7912} 7913 7914define <vscale x 8 x i1> @fcmps_une_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7915; CHECK-LABEL: fcmps_une_vf_nxv8f64: 7916; CHECK: # %bb.0: 7917; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7918; CHECK-NEXT: vmfge.vf v16, v8, fa0 7919; CHECK-NEXT: vmfle.vf v17, v8, fa0 7920; CHECK-NEXT: vmnand.mm v0, v17, v16 7921; CHECK-NEXT: ret 7922 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7923 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7924 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"une", metadata !"fpexcept.strict") strictfp 7925 ret <vscale x 8 x i1> %1 7926} 7927 7928define <vscale x 8 x i1> @fcmps_une_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7929; CHECK-LABEL: fcmps_une_fv_nxv8f64: 7930; CHECK: # %bb.0: 7931; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7932; CHECK-NEXT: vmfle.vf v16, v8, fa0 7933; CHECK-NEXT: vmfge.vf v17, v8, fa0 7934; CHECK-NEXT: vmnand.mm v0, v17, v16 7935; CHECK-NEXT: ret 7936 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7937 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7938 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"une", metadata !"fpexcept.strict") strictfp 7939 ret <vscale x 8 x i1> %1 7940} 7941 7942define <vscale x 8 x i1> @fcmps_uno_vv_nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb) nounwind strictfp { 7943; CHECK-LABEL: fcmps_uno_vv_nxv8f64: 7944; CHECK: # %bb.0: 7945; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7946; CHECK-NEXT: vmfle.vv v24, v16, v16 7947; CHECK-NEXT: vmfle.vv v16, v8, v8 7948; CHECK-NEXT: vmnot.m v8, v16 7949; CHECK-NEXT: vmorn.mm v0, v8, v24 7950; CHECK-NEXT: ret 7951 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %vb, metadata !"uno", metadata !"fpexcept.strict") strictfp 7952 ret <vscale x 8 x i1> %1 7953} 7954 7955define <vscale x 8 x i1> @fcmps_uno_vf_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7956; CHECK-LABEL: fcmps_uno_vf_nxv8f64: 7957; CHECK: # %bb.0: 7958; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7959; CHECK-NEXT: vfmv.v.f v16, fa0 7960; CHECK-NEXT: vmfle.vv v24, v8, v8 7961; CHECK-NEXT: vmfle.vf v8, v16, fa0 7962; CHECK-NEXT: vmnot.m v9, v24 7963; CHECK-NEXT: vmorn.mm v0, v9, v8 7964; CHECK-NEXT: ret 7965 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7966 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7967 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %va, <vscale x 8 x double> %splat, metadata !"uno", metadata !"fpexcept.strict") strictfp 7968 ret <vscale x 8 x i1> %1 7969} 7970 7971define <vscale x 8 x i1> @fcmps_uno_fv_nxv8f64(<vscale x 8 x double> %va, double %b) nounwind strictfp { 7972; CHECK-LABEL: fcmps_uno_fv_nxv8f64: 7973; CHECK: # %bb.0: 7974; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, ma 7975; CHECK-NEXT: vfmv.v.f v16, fa0 7976; CHECK-NEXT: vmfle.vf v24, v16, fa0 7977; CHECK-NEXT: vmnot.m v16, v24 7978; CHECK-NEXT: vmfle.vv v17, v8, v8 7979; CHECK-NEXT: vmorn.mm v0, v16, v17 7980; CHECK-NEXT: ret 7981 %head = insertelement <vscale x 8 x double> poison, double %b, i32 0 7982 %splat = shufflevector <vscale x 8 x double> %head, <vscale x 8 x double> poison, <vscale x 8 x i32> zeroinitializer 7983 %1 = call <vscale x 8 x i1> @llvm.experimental.constrained.fcmps.nxv8f64(<vscale x 8 x double> %splat, <vscale x 8 x double> %va, metadata !"uno", metadata !"fpexcept.strict") strictfp 7984 ret <vscale x 8 x i1> %1 7985} 7986