1ae1bb44eSSimon Moll; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2ae1bb44eSSimon Moll; RUN: llc < %s -mtriple=ve -mattr=+vpu | FileCheck %s 3ae1bb44eSSimon Moll 4ae1bb44eSSimon Moll 5ae1bb44eSSimon Moll; <256 x float> 6ae1bb44eSSimon Moll 7*f2742302SSimon Moll; Function Attrs: nounwind 8*f2742302SSimon Molldefine fastcc <256 x i1> @fcmp_false_vv_v256f32(<256 x float> %x, <256 x float> %y) { 9*f2742302SSimon Moll; CHECK-LABEL: fcmp_false_vv_v256f32: 10*f2742302SSimon Moll; CHECK: # %bb.0: 11*f2742302SSimon Moll; CHECK-NEXT: xorm %vm1, %vm0, %vm0 12*f2742302SSimon Moll; CHECK-NEXT: b.l.t (, %s10) 13*f2742302SSimon Moll %z = fcmp false <256 x float> %x, %y 14*f2742302SSimon Moll ret <256 x i1> %z 15*f2742302SSimon Moll} 16*f2742302SSimon Moll 17*f2742302SSimon Moll; Function Attrs: nounwind 18*f2742302SSimon Molldefine fastcc <256 x i1> @fcmp_false_sv_v256f32(float %x, <256 x float> %y) { 19*f2742302SSimon Moll; CHECK-LABEL: fcmp_false_sv_v256f32: 20*f2742302SSimon Moll; CHECK: # %bb.0: 21*f2742302SSimon Moll; CHECK-NEXT: xorm %vm1, %vm0, %vm0 22*f2742302SSimon Moll; CHECK-NEXT: b.l.t (, %s10) 23*f2742302SSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 24*f2742302SSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 25*f2742302SSimon Moll %z = fcmp false <256 x float> %vx, %y 26*f2742302SSimon Moll ret <256 x i1> %z 27*f2742302SSimon Moll} 28*f2742302SSimon Moll 29*f2742302SSimon Moll; Function Attrs: nounwind 30*f2742302SSimon Molldefine fastcc <256 x i1> @fcmp_false_vs_v256f32(<256 x float> %x, float %y) { 31*f2742302SSimon Moll; CHECK-LABEL: fcmp_false_vs_v256f32: 32*f2742302SSimon Moll; CHECK: # %bb.0: 33*f2742302SSimon Moll; CHECK-NEXT: xorm %vm1, %vm0, %vm0 34*f2742302SSimon Moll; CHECK-NEXT: b.l.t (, %s10) 35*f2742302SSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 36*f2742302SSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 37*f2742302SSimon Moll %z = fcmp false <256 x float> %x, %vy 38*f2742302SSimon Moll ret <256 x i1> %z 39*f2742302SSimon Moll} 40ae1bb44eSSimon Moll 41ae1bb44eSSimon Moll; Function Attrs: nounwind 42ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_oeq_vv_v256f32(<256 x float> %x, <256 x float> %y) { 43ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_oeq_vv_v256f32: 44ae1bb44eSSimon Moll; CHECK: # %bb.0: 45ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 46ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 47ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 48ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.eq %vm1, %v0 49ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 50ae1bb44eSSimon Moll %z = fcmp oeq <256 x float> %x, %y 51ae1bb44eSSimon Moll ret <256 x i1> %z 52ae1bb44eSSimon Moll} 53ae1bb44eSSimon Moll 54ae1bb44eSSimon Moll; Function Attrs: nounwind 55ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_oeq_sv_v256f32(float %x, <256 x float> %y) { 56ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_oeq_sv_v256f32: 57ae1bb44eSSimon Moll; CHECK: # %bb.0: 58ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 59ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 60ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 61ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 62ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.eq %vm1, %v0 63ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 64ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 65ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 66ae1bb44eSSimon Moll %z = fcmp oeq <256 x float> %vx, %y 67ae1bb44eSSimon Moll ret <256 x i1> %z 68ae1bb44eSSimon Moll} 69ae1bb44eSSimon Moll 70ae1bb44eSSimon Moll; Function Attrs: nounwind 71ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_oeq_vs_v256f32(<256 x float> %x, float %y) { 72ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_oeq_vs_v256f32: 73ae1bb44eSSimon Moll; CHECK: # %bb.0: 74ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 75ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 76ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 77ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 78ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.eq %vm1, %v0 79ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 80ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 81ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 82ae1bb44eSSimon Moll %z = fcmp oeq <256 x float> %x, %vy 83ae1bb44eSSimon Moll ret <256 x i1> %z 84ae1bb44eSSimon Moll} 85ae1bb44eSSimon Moll 86ae1bb44eSSimon Moll; Function Attrs: nounwind 87ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ogt_vv_v256f32(<256 x float> %x, <256 x float> %y) { 88ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ogt_vv_v256f32: 89ae1bb44eSSimon Moll; CHECK: # %bb.0: 90ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 91ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 92ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 93ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.gt %vm1, %v0 94ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 95ae1bb44eSSimon Moll %z = fcmp ogt <256 x float> %x, %y 96ae1bb44eSSimon Moll ret <256 x i1> %z 97ae1bb44eSSimon Moll} 98ae1bb44eSSimon Moll 99ae1bb44eSSimon Moll; Function Attrs: nounwind 100ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ogt_sv_v256f32(float %x, <256 x float> %y) { 101ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ogt_sv_v256f32: 102ae1bb44eSSimon Moll; CHECK: # %bb.0: 103ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 104ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 105ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 106ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 107ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.gt %vm1, %v0 108ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 109ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 110ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 111ae1bb44eSSimon Moll %z = fcmp ogt <256 x float> %vx, %y 112ae1bb44eSSimon Moll ret <256 x i1> %z 113ae1bb44eSSimon Moll} 114ae1bb44eSSimon Moll 115ae1bb44eSSimon Moll; Function Attrs: nounwind 116ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ogt_vs_v256f32(<256 x float> %x, float %y) { 117ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ogt_vs_v256f32: 118ae1bb44eSSimon Moll; CHECK: # %bb.0: 119ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 120ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 121ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 122ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 123ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.gt %vm1, %v0 124ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 125ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 126ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 127ae1bb44eSSimon Moll %z = fcmp ogt <256 x float> %x, %vy 128ae1bb44eSSimon Moll ret <256 x i1> %z 129ae1bb44eSSimon Moll} 130ae1bb44eSSimon Moll 131ae1bb44eSSimon Moll; Function Attrs: nounwind 132ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_oge_vv_v256f32(<256 x float> %x, <256 x float> %y) { 133ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_oge_vv_v256f32: 134ae1bb44eSSimon Moll; CHECK: # %bb.0: 135ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 136ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 137ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 138ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.ge %vm1, %v0 139ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 140ae1bb44eSSimon Moll %z = fcmp oge <256 x float> %x, %y 141ae1bb44eSSimon Moll ret <256 x i1> %z 142ae1bb44eSSimon Moll} 143ae1bb44eSSimon Moll 144ae1bb44eSSimon Moll; Function Attrs: nounwind 145ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_oge_sv_v256f32(float %x, <256 x float> %y) { 146ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_oge_sv_v256f32: 147ae1bb44eSSimon Moll; CHECK: # %bb.0: 148ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 149ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 150ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 151ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 152ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.ge %vm1, %v0 153ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 154ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 155ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 156ae1bb44eSSimon Moll %z = fcmp oge <256 x float> %vx, %y 157ae1bb44eSSimon Moll ret <256 x i1> %z 158ae1bb44eSSimon Moll} 159ae1bb44eSSimon Moll 160ae1bb44eSSimon Moll; Function Attrs: nounwind 161ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_oge_vs_v256f32(<256 x float> %x, float %y) { 162ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_oge_vs_v256f32: 163ae1bb44eSSimon Moll; CHECK: # %bb.0: 164ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 165ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 166ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 167ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 168ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.ge %vm1, %v0 169ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 170ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 171ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 172ae1bb44eSSimon Moll %z = fcmp oge <256 x float> %x, %vy 173ae1bb44eSSimon Moll ret <256 x i1> %z 174ae1bb44eSSimon Moll} 175ae1bb44eSSimon Moll 176ae1bb44eSSimon Moll; Function Attrs: nounwind 177ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_olt_vv_v256f32(<256 x float> %x, <256 x float> %y) { 178ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_olt_vv_v256f32: 179ae1bb44eSSimon Moll; CHECK: # %bb.0: 180ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 181ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 182ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 183ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.lt %vm1, %v0 184ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 185ae1bb44eSSimon Moll %z = fcmp olt <256 x float> %x, %y 186ae1bb44eSSimon Moll ret <256 x i1> %z 187ae1bb44eSSimon Moll} 188ae1bb44eSSimon Moll 189ae1bb44eSSimon Moll; Function Attrs: nounwind 190ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_olt_sv_v256f32(float %x, <256 x float> %y) { 191ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_olt_sv_v256f32: 192ae1bb44eSSimon Moll; CHECK: # %bb.0: 193ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 194ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 195ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 196ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 197ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.lt %vm1, %v0 198ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 199ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 200ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 201ae1bb44eSSimon Moll %z = fcmp olt <256 x float> %vx, %y 202ae1bb44eSSimon Moll ret <256 x i1> %z 203ae1bb44eSSimon Moll} 204ae1bb44eSSimon Moll 205ae1bb44eSSimon Moll; Function Attrs: nounwind 206ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_olt_vs_v256f32(<256 x float> %x, float %y) { 207ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_olt_vs_v256f32: 208ae1bb44eSSimon Moll; CHECK: # %bb.0: 209ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 210ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 211ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 212ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 213ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.lt %vm1, %v0 214ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 215ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 216ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 217ae1bb44eSSimon Moll %z = fcmp olt <256 x float> %x, %vy 218ae1bb44eSSimon Moll ret <256 x i1> %z 219ae1bb44eSSimon Moll} 220ae1bb44eSSimon Moll 221ae1bb44eSSimon Moll; Function Attrs: nounwind 222ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ole_vv_v256f32(<256 x float> %x, <256 x float> %y) { 223ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ole_vv_v256f32: 224ae1bb44eSSimon Moll; CHECK: # %bb.0: 225ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 226ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 227ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 228ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.le %vm1, %v0 229ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 230ae1bb44eSSimon Moll %z = fcmp ole <256 x float> %x, %y 231ae1bb44eSSimon Moll ret <256 x i1> %z 232ae1bb44eSSimon Moll} 233ae1bb44eSSimon Moll 234ae1bb44eSSimon Moll; Function Attrs: nounwind 235ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ole_sv_v256f32(float %x, <256 x float> %y) { 236ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ole_sv_v256f32: 237ae1bb44eSSimon Moll; CHECK: # %bb.0: 238ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 239ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 240ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 241ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 242ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.le %vm1, %v0 243ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 244ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 245ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 246ae1bb44eSSimon Moll %z = fcmp ole <256 x float> %vx, %y 247ae1bb44eSSimon Moll ret <256 x i1> %z 248ae1bb44eSSimon Moll} 249ae1bb44eSSimon Moll 250ae1bb44eSSimon Moll; Function Attrs: nounwind 251ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ole_vs_v256f32(<256 x float> %x, float %y) { 252ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ole_vs_v256f32: 253ae1bb44eSSimon Moll; CHECK: # %bb.0: 254ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 255ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 256ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 257ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 258ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.le %vm1, %v0 259ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 260ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 261ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 262ae1bb44eSSimon Moll %z = fcmp ole <256 x float> %x, %vy 263ae1bb44eSSimon Moll ret <256 x i1> %z 264ae1bb44eSSimon Moll} 265ae1bb44eSSimon Moll 266ae1bb44eSSimon Moll; Function Attrs: nounwind 267ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_one_vv_v256f32(<256 x float> %x, <256 x float> %y) { 268ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_one_vv_v256f32: 269ae1bb44eSSimon Moll; CHECK: # %bb.0: 270ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 271ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 272ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 273ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.ne %vm1, %v0 274ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 275ae1bb44eSSimon Moll %z = fcmp one <256 x float> %x, %y 276ae1bb44eSSimon Moll ret <256 x i1> %z 277ae1bb44eSSimon Moll} 278ae1bb44eSSimon Moll 279ae1bb44eSSimon Moll; Function Attrs: nounwind 280ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_one_sv_v256f32(float %x, <256 x float> %y) { 281ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_one_sv_v256f32: 282ae1bb44eSSimon Moll; CHECK: # %bb.0: 283ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 284ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 285ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 286ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 287ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.ne %vm1, %v0 288ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 289ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 290ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 291ae1bb44eSSimon Moll %z = fcmp one <256 x float> %vx, %y 292ae1bb44eSSimon Moll ret <256 x i1> %z 293ae1bb44eSSimon Moll} 294ae1bb44eSSimon Moll 295ae1bb44eSSimon Moll; Function Attrs: nounwind 296ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_one_vs_v256f32(<256 x float> %x, float %y) { 297ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_one_vs_v256f32: 298ae1bb44eSSimon Moll; CHECK: # %bb.0: 299ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 300ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 301ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 302ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 303ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.ne %vm1, %v0 304ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 305ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 306ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 307ae1bb44eSSimon Moll %z = fcmp one <256 x float> %x, %vy 308ae1bb44eSSimon Moll ret <256 x i1> %z 309ae1bb44eSSimon Moll} 310ae1bb44eSSimon Moll 311ae1bb44eSSimon Moll; Function Attrs: nounwind 312ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ord_vv_v256f32(<256 x float> %x, <256 x float> %y) { 313ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ord_vv_v256f32: 314ae1bb44eSSimon Moll; CHECK: # %bb.0: 315ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 316ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 317ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 318ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.num %vm1, %v0 319ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 320ae1bb44eSSimon Moll %z = fcmp ord <256 x float> %x, %y 321ae1bb44eSSimon Moll ret <256 x i1> %z 322ae1bb44eSSimon Moll} 323ae1bb44eSSimon Moll 324ae1bb44eSSimon Moll; Function Attrs: nounwind 325ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ord_sv_v256f32(float %x, <256 x float> %y) { 326ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ord_sv_v256f32: 327ae1bb44eSSimon Moll; CHECK: # %bb.0: 328ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 329ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 330ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 331ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 332ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.num %vm1, %v0 333ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 334ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 335ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 336ae1bb44eSSimon Moll %z = fcmp ord <256 x float> %vx, %y 337ae1bb44eSSimon Moll ret <256 x i1> %z 338ae1bb44eSSimon Moll} 339ae1bb44eSSimon Moll 340ae1bb44eSSimon Moll; Function Attrs: nounwind 341ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ord_vs_v256f32(<256 x float> %x, float %y) { 342ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ord_vs_v256f32: 343ae1bb44eSSimon Moll; CHECK: # %bb.0: 344ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 345ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 346ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 347ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 348ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.num %vm1, %v0 349ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 350ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 351ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 352ae1bb44eSSimon Moll %z = fcmp ord <256 x float> %x, %vy 353ae1bb44eSSimon Moll ret <256 x i1> %z 354ae1bb44eSSimon Moll} 355ae1bb44eSSimon Moll 356ae1bb44eSSimon Moll; Function Attrs: nounwind 357ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_uno_vv_v256f32(<256 x float> %x, <256 x float> %y) { 358ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_uno_vv_v256f32: 359ae1bb44eSSimon Moll; CHECK: # %bb.0: 360ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 361ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 362ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 363ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.nan %vm1, %v0 364ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 365ae1bb44eSSimon Moll %z = fcmp uno <256 x float> %x, %y 366ae1bb44eSSimon Moll ret <256 x i1> %z 367ae1bb44eSSimon Moll} 368ae1bb44eSSimon Moll 369ae1bb44eSSimon Moll; Function Attrs: nounwind 370ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_uno_sv_v256f32(float %x, <256 x float> %y) { 371ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_uno_sv_v256f32: 372ae1bb44eSSimon Moll; CHECK: # %bb.0: 373ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 374ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 375ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 376ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 377ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.nan %vm1, %v0 378ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 379ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 380ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 381ae1bb44eSSimon Moll %z = fcmp uno <256 x float> %vx, %y 382ae1bb44eSSimon Moll ret <256 x i1> %z 383ae1bb44eSSimon Moll} 384ae1bb44eSSimon Moll 385ae1bb44eSSimon Moll; Function Attrs: nounwind 386ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_uno_vs_v256f32(<256 x float> %x, float %y) { 387ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_uno_vs_v256f32: 388ae1bb44eSSimon Moll; CHECK: # %bb.0: 389ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 390ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 391ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 392ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 393ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.nan %vm1, %v0 394ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 395ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 396ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 397ae1bb44eSSimon Moll %z = fcmp uno <256 x float> %x, %vy 398ae1bb44eSSimon Moll ret <256 x i1> %z 399ae1bb44eSSimon Moll} 400ae1bb44eSSimon Moll 401ae1bb44eSSimon Moll; Function Attrs: nounwind 402ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ueq_vv_v256f32(<256 x float> %x, <256 x float> %y) { 403ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ueq_vv_v256f32: 404ae1bb44eSSimon Moll; CHECK: # %bb.0: 405ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 406ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 407ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 408ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.eqnan %vm1, %v0 409ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 410ae1bb44eSSimon Moll %z = fcmp ueq <256 x float> %x, %y 411ae1bb44eSSimon Moll ret <256 x i1> %z 412ae1bb44eSSimon Moll} 413ae1bb44eSSimon Moll 414ae1bb44eSSimon Moll; Function Attrs: nounwind 415ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ueq_sv_v256f32(float %x, <256 x float> %y) { 416ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ueq_sv_v256f32: 417ae1bb44eSSimon Moll; CHECK: # %bb.0: 418ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 419ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 420ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 421ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 422ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.eqnan %vm1, %v0 423ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 424ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 425ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 426ae1bb44eSSimon Moll %z = fcmp ueq <256 x float> %vx, %y 427ae1bb44eSSimon Moll ret <256 x i1> %z 428ae1bb44eSSimon Moll} 429ae1bb44eSSimon Moll 430ae1bb44eSSimon Moll; Function Attrs: nounwind 431ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ueq_vs_v256f32(<256 x float> %x, float %y) { 432ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ueq_vs_v256f32: 433ae1bb44eSSimon Moll; CHECK: # %bb.0: 434ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 435ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 436ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 437ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 438ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.eqnan %vm1, %v0 439ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 440ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 441ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 442ae1bb44eSSimon Moll %z = fcmp ueq <256 x float> %x, %vy 443ae1bb44eSSimon Moll ret <256 x i1> %z 444ae1bb44eSSimon Moll} 445ae1bb44eSSimon Moll 446ae1bb44eSSimon Moll; Function Attrs: nounwind 447ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ugt_vv_v256f32(<256 x float> %x, <256 x float> %y) { 448ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ugt_vv_v256f32: 449ae1bb44eSSimon Moll; CHECK: # %bb.0: 450ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 451ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 452ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 453ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.gtnan %vm1, %v0 454ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 455ae1bb44eSSimon Moll %z = fcmp ugt <256 x float> %x, %y 456ae1bb44eSSimon Moll ret <256 x i1> %z 457ae1bb44eSSimon Moll} 458ae1bb44eSSimon Moll 459ae1bb44eSSimon Moll; Function Attrs: nounwind 460ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ugt_sv_v256f32(float %x, <256 x float> %y) { 461ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ugt_sv_v256f32: 462ae1bb44eSSimon Moll; CHECK: # %bb.0: 463ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 464ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 465ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 466ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 467ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.gtnan %vm1, %v0 468ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 469ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 470ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 471ae1bb44eSSimon Moll %z = fcmp ugt <256 x float> %vx, %y 472ae1bb44eSSimon Moll ret <256 x i1> %z 473ae1bb44eSSimon Moll} 474ae1bb44eSSimon Moll 475ae1bb44eSSimon Moll; Function Attrs: nounwind 476ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ugt_vs_v256f32(<256 x float> %x, float %y) { 477ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ugt_vs_v256f32: 478ae1bb44eSSimon Moll; CHECK: # %bb.0: 479ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 480ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 481ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 482ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 483ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.gtnan %vm1, %v0 484ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 485ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 486ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 487ae1bb44eSSimon Moll %z = fcmp ugt <256 x float> %x, %vy 488ae1bb44eSSimon Moll ret <256 x i1> %z 489ae1bb44eSSimon Moll} 490ae1bb44eSSimon Moll 491ae1bb44eSSimon Moll; Function Attrs: nounwind 492ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_uge_vv_v256f32(<256 x float> %x, <256 x float> %y) { 493ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_uge_vv_v256f32: 494ae1bb44eSSimon Moll; CHECK: # %bb.0: 495ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 496ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 497ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 498ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.genan %vm1, %v0 499ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 500ae1bb44eSSimon Moll %z = fcmp uge <256 x float> %x, %y 501ae1bb44eSSimon Moll ret <256 x i1> %z 502ae1bb44eSSimon Moll} 503ae1bb44eSSimon Moll 504ae1bb44eSSimon Moll; Function Attrs: nounwind 505ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_uge_sv_v256f32(float %x, <256 x float> %y) { 506ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_uge_sv_v256f32: 507ae1bb44eSSimon Moll; CHECK: # %bb.0: 508ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 509ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 510ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 511ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 512ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.genan %vm1, %v0 513ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 514ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 515ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 516ae1bb44eSSimon Moll %z = fcmp uge <256 x float> %vx, %y 517ae1bb44eSSimon Moll ret <256 x i1> %z 518ae1bb44eSSimon Moll} 519ae1bb44eSSimon Moll 520ae1bb44eSSimon Moll; Function Attrs: nounwind 521ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_uge_vs_v256f32(<256 x float> %x, float %y) { 522ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_uge_vs_v256f32: 523ae1bb44eSSimon Moll; CHECK: # %bb.0: 524ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 525ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 526ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 527ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 528ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.genan %vm1, %v0 529ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 530ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 531ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 532ae1bb44eSSimon Moll %z = fcmp uge <256 x float> %x, %vy 533ae1bb44eSSimon Moll ret <256 x i1> %z 534ae1bb44eSSimon Moll} 535ae1bb44eSSimon Moll 536ae1bb44eSSimon Moll; Function Attrs: nounwind 537ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ult_vv_v256f32(<256 x float> %x, <256 x float> %y) { 538ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ult_vv_v256f32: 539ae1bb44eSSimon Moll; CHECK: # %bb.0: 540ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 541ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 542ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 543ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.ltnan %vm1, %v0 544ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 545ae1bb44eSSimon Moll %z = fcmp ult <256 x float> %x, %y 546ae1bb44eSSimon Moll ret <256 x i1> %z 547ae1bb44eSSimon Moll} 548ae1bb44eSSimon Moll 549ae1bb44eSSimon Moll; Function Attrs: nounwind 550ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ult_sv_v256f32(float %x, <256 x float> %y) { 551ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ult_sv_v256f32: 552ae1bb44eSSimon Moll; CHECK: # %bb.0: 553ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 554ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 555ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 556ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 557ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.ltnan %vm1, %v0 558ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 559ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 560ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 561ae1bb44eSSimon Moll %z = fcmp ult <256 x float> %vx, %y 562ae1bb44eSSimon Moll ret <256 x i1> %z 563ae1bb44eSSimon Moll} 564ae1bb44eSSimon Moll 565ae1bb44eSSimon Moll; Function Attrs: nounwind 566ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ult_vs_v256f32(<256 x float> %x, float %y) { 567ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ult_vs_v256f32: 568ae1bb44eSSimon Moll; CHECK: # %bb.0: 569ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 570ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 571ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 572ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 573ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.ltnan %vm1, %v0 574ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 575ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 576ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 577ae1bb44eSSimon Moll %z = fcmp ult <256 x float> %x, %vy 578ae1bb44eSSimon Moll ret <256 x i1> %z 579ae1bb44eSSimon Moll} 580ae1bb44eSSimon Moll 581ae1bb44eSSimon Moll; Function Attrs: nounwind 582ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ule_vv_v256f32(<256 x float> %x, <256 x float> %y) { 583ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ule_vv_v256f32: 584ae1bb44eSSimon Moll; CHECK: # %bb.0: 585ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 586ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 587ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 588ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.lenan %vm1, %v0 589ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 590ae1bb44eSSimon Moll %z = fcmp ule <256 x float> %x, %y 591ae1bb44eSSimon Moll ret <256 x i1> %z 592ae1bb44eSSimon Moll} 593ae1bb44eSSimon Moll 594ae1bb44eSSimon Moll; Function Attrs: nounwind 595ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ule_sv_v256f32(float %x, <256 x float> %y) { 596ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ule_sv_v256f32: 597ae1bb44eSSimon Moll; CHECK: # %bb.0: 598ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 599ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 600ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 601ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 602ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.lenan %vm1, %v0 603ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 604ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 605ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 606ae1bb44eSSimon Moll %z = fcmp ule <256 x float> %vx, %y 607ae1bb44eSSimon Moll ret <256 x i1> %z 608ae1bb44eSSimon Moll} 609ae1bb44eSSimon Moll 610ae1bb44eSSimon Moll; Function Attrs: nounwind 611ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_ule_vs_v256f32(<256 x float> %x, float %y) { 612ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_ule_vs_v256f32: 613ae1bb44eSSimon Moll; CHECK: # %bb.0: 614ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 615ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 616ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 617ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 618ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.lenan %vm1, %v0 619ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 620ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 621ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 622ae1bb44eSSimon Moll %z = fcmp ule <256 x float> %x, %vy 623ae1bb44eSSimon Moll ret <256 x i1> %z 624ae1bb44eSSimon Moll} 625ae1bb44eSSimon Moll 626ae1bb44eSSimon Moll; Function Attrs: nounwind 627ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_une_vv_v256f32(<256 x float> %x, <256 x float> %y) { 628ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_une_vv_v256f32: 629ae1bb44eSSimon Moll; CHECK: # %bb.0: 630ae1bb44eSSimon Moll; CHECK-NEXT: lea %s0, 256 631ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s0 632ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 633ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.nenan %vm1, %v0 634ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 635ae1bb44eSSimon Moll %z = fcmp une <256 x float> %x, %y 636ae1bb44eSSimon Moll ret <256 x i1> %z 637ae1bb44eSSimon Moll} 638ae1bb44eSSimon Moll 639ae1bb44eSSimon Moll; Function Attrs: nounwind 640ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_une_sv_v256f32(float %x, <256 x float> %y) { 641ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_une_sv_v256f32: 642ae1bb44eSSimon Moll; CHECK: # %bb.0: 643ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 644ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 645ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 646ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v1, %v0 647ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.nenan %vm1, %v0 648ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 649ae1bb44eSSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 650ae1bb44eSSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 651ae1bb44eSSimon Moll %z = fcmp une <256 x float> %vx, %y 652ae1bb44eSSimon Moll ret <256 x i1> %z 653ae1bb44eSSimon Moll} 654ae1bb44eSSimon Moll 655ae1bb44eSSimon Moll; Function Attrs: nounwind 656ae1bb44eSSimon Molldefine fastcc <256 x i1> @fcmp_une_vs_v256f32(<256 x float> %x, float %y) { 657ae1bb44eSSimon Moll; CHECK-LABEL: fcmp_une_vs_v256f32: 658ae1bb44eSSimon Moll; CHECK: # %bb.0: 659ae1bb44eSSimon Moll; CHECK-NEXT: lea %s1, 256 660ae1bb44eSSimon Moll; CHECK-NEXT: lvl %s1 661ae1bb44eSSimon Moll; CHECK-NEXT: vbrd %v1, %s0 662ae1bb44eSSimon Moll; CHECK-NEXT: vfcmp.s %v0, %v0, %v1 663ae1bb44eSSimon Moll; CHECK-NEXT: vfmk.s.nenan %vm1, %v0 664ae1bb44eSSimon Moll; CHECK-NEXT: b.l.t (, %s10) 665ae1bb44eSSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 666ae1bb44eSSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 667ae1bb44eSSimon Moll %z = fcmp une <256 x float> %x, %vy 668ae1bb44eSSimon Moll ret <256 x i1> %z 669ae1bb44eSSimon Moll} 670ae1bb44eSSimon Moll 671*f2742302SSimon Moll; Function Attrs: nounwind 672*f2742302SSimon Molldefine fastcc <256 x i1> @fcmp_true_vv_v256f32(<256 x float> %x, <256 x float> %y) { 673*f2742302SSimon Moll; CHECK-LABEL: fcmp_true_vv_v256f32: 674*f2742302SSimon Moll; CHECK: # %bb.0: 675*f2742302SSimon Moll; CHECK-NEXT: andm %vm1, %vm0, %vm0 676*f2742302SSimon Moll; CHECK-NEXT: b.l.t (, %s10) 677*f2742302SSimon Moll %z = fcmp true <256 x float> %x, %y 678*f2742302SSimon Moll ret <256 x i1> %z 679*f2742302SSimon Moll} 680*f2742302SSimon Moll 681*f2742302SSimon Moll; Function Attrs: nounwind 682*f2742302SSimon Molldefine fastcc <256 x i1> @fcmp_true_sv_v256f32(float %x, <256 x float> %y) { 683*f2742302SSimon Moll; CHECK-LABEL: fcmp_true_sv_v256f32: 684*f2742302SSimon Moll; CHECK: # %bb.0: 685*f2742302SSimon Moll; CHECK-NEXT: andm %vm1, %vm0, %vm0 686*f2742302SSimon Moll; CHECK-NEXT: b.l.t (, %s10) 687*f2742302SSimon Moll %xins = insertelement <256 x float> undef, float %x, i32 0 688*f2742302SSimon Moll %vx = shufflevector <256 x float> %xins, <256 x float> undef, <256 x i32> zeroinitializer 689*f2742302SSimon Moll %z = fcmp true <256 x float> %vx, %y 690*f2742302SSimon Moll ret <256 x i1> %z 691*f2742302SSimon Moll} 692*f2742302SSimon Moll 693*f2742302SSimon Moll; Function Attrs: nounwind 694*f2742302SSimon Molldefine fastcc <256 x i1> @fcmp_true_vs_v256f32(<256 x float> %x, float %y) { 695*f2742302SSimon Moll; CHECK-LABEL: fcmp_true_vs_v256f32: 696*f2742302SSimon Moll; CHECK: # %bb.0: 697*f2742302SSimon Moll; CHECK-NEXT: andm %vm1, %vm0, %vm0 698*f2742302SSimon Moll; CHECK-NEXT: b.l.t (, %s10) 699*f2742302SSimon Moll %yins = insertelement <256 x float> undef, float %y, i32 0 700*f2742302SSimon Moll %vy = shufflevector <256 x float> %yins, <256 x float> undef, <256 x i32> zeroinitializer 701*f2742302SSimon Moll %z = fcmp true <256 x float> %x, %vy 702*f2742302SSimon Moll ret <256 x i1> %z 703*f2742302SSimon Moll} 704