xref: /llvm-project/llvm/test/CodeGen/LoongArch/lsx/ir-instruction/fcmp.ll (revision a5c90e48b6f11bc6db7344503589648f76b16d80)
19ff7d0ebSwanglei; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
29ff7d0ebSwanglei; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s
39ff7d0ebSwanglei
49ff7d0ebSwanglei;; TREU
59ff7d0ebSwangleidefine void @v4f32_fcmp_true(ptr %res, ptr %a0, ptr %a1) nounwind {
69ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_true:
79ff7d0ebSwanglei; CHECK:       # %bb.0:
89ff7d0ebSwanglei; CHECK-NEXT:    vrepli.b $vr0, -1
99ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
109ff7d0ebSwanglei; CHECK-NEXT:    ret
119ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
129ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
139ff7d0ebSwanglei  %cmp = fcmp true <4 x float> %v0, %v1
149ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
159ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
169ff7d0ebSwanglei  ret void
179ff7d0ebSwanglei}
189ff7d0ebSwanglei
199ff7d0ebSwanglei;; FALSE
209ff7d0ebSwangleidefine void @v2f64_fcmp_false(ptr %res, ptr %a0, ptr %a1) nounwind {
219ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_false:
229ff7d0ebSwanglei; CHECK:       # %bb.0:
239ff7d0ebSwanglei; CHECK-NEXT:    vrepli.b $vr0, 0
249ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
259ff7d0ebSwanglei; CHECK-NEXT:    ret
269ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
279ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
289ff7d0ebSwanglei  %cmp = fcmp false <2 x double> %v0, %v1
299ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
309ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
319ff7d0ebSwanglei  ret void
329ff7d0ebSwanglei}
339ff7d0ebSwanglei
349ff7d0ebSwanglei;; SETOEQ
359ff7d0ebSwangleidefine void @v4f32_fcmp_oeq(ptr %res, ptr %a0, ptr %a1) nounwind {
369ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_oeq:
379ff7d0ebSwanglei; CHECK:       # %bb.0:
38*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
39*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
40*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.ceq.s $vr0, $vr0, $vr1
419ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
429ff7d0ebSwanglei; CHECK-NEXT:    ret
439ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
449ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
459ff7d0ebSwanglei  %cmp = fcmp oeq <4 x float> %v0, %v1
469ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
479ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
489ff7d0ebSwanglei  ret void
499ff7d0ebSwanglei}
509ff7d0ebSwanglei
519ff7d0ebSwangleidefine void @v2f64_fcmp_oeq(ptr %res, ptr %a0, ptr %a1) nounwind {
529ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_oeq:
539ff7d0ebSwanglei; CHECK:       # %bb.0:
54*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
55*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
56*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.ceq.d $vr0, $vr0, $vr1
579ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
589ff7d0ebSwanglei; CHECK-NEXT:    ret
599ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
609ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
619ff7d0ebSwanglei  %cmp = fcmp oeq <2 x double> %v0, %v1
629ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
639ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
649ff7d0ebSwanglei  ret void
659ff7d0ebSwanglei}
669ff7d0ebSwanglei
679ff7d0ebSwanglei;; SETUEQ
689ff7d0ebSwangleidefine void @v4f32_fcmp_ueq(ptr %res, ptr %a0, ptr %a1) nounwind {
699ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ueq:
709ff7d0ebSwanglei; CHECK:       # %bb.0:
71*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
72*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
73*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cueq.s $vr0, $vr0, $vr1
749ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
759ff7d0ebSwanglei; CHECK-NEXT:    ret
769ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
779ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
789ff7d0ebSwanglei  %cmp = fcmp ueq <4 x float> %v0, %v1
799ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
809ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
819ff7d0ebSwanglei  ret void
829ff7d0ebSwanglei}
839ff7d0ebSwanglei
849ff7d0ebSwangleidefine void @v2f64_fcmp_ueq(ptr %res, ptr %a0, ptr %a1) nounwind {
859ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ueq:
869ff7d0ebSwanglei; CHECK:       # %bb.0:
87*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
88*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
89*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cueq.d $vr0, $vr0, $vr1
909ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
919ff7d0ebSwanglei; CHECK-NEXT:    ret
929ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
939ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
949ff7d0ebSwanglei  %cmp = fcmp ueq <2 x double> %v0, %v1
959ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
969ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
979ff7d0ebSwanglei  ret void
989ff7d0ebSwanglei}
999ff7d0ebSwanglei
1009ff7d0ebSwanglei;; SETEQ
1019ff7d0ebSwangleidefine void @v4f32_fcmp_eq(ptr %res, ptr %a0, ptr %a1) nounwind {
1029ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_eq:
1039ff7d0ebSwanglei; CHECK:       # %bb.0:
104*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
105*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
106*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.ceq.s $vr0, $vr0, $vr1
1079ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
1089ff7d0ebSwanglei; CHECK-NEXT:    ret
1099ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
1109ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
1119ff7d0ebSwanglei  %cmp = fcmp fast oeq <4 x float> %v0, %v1
1129ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
1139ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
1149ff7d0ebSwanglei  ret void
1159ff7d0ebSwanglei}
1169ff7d0ebSwanglei
1179ff7d0ebSwangleidefine void @v2f64_fcmp_eq(ptr %res, ptr %a0, ptr %a1) nounwind {
1189ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_eq:
1199ff7d0ebSwanglei; CHECK:       # %bb.0:
120*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
121*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
122*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.ceq.d $vr0, $vr0, $vr1
1239ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
1249ff7d0ebSwanglei; CHECK-NEXT:    ret
1259ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
1269ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
1279ff7d0ebSwanglei  %cmp = fcmp fast ueq <2 x double> %v0, %v1
1289ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
1299ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
1309ff7d0ebSwanglei  ret void
1319ff7d0ebSwanglei}
1329ff7d0ebSwanglei
1339ff7d0ebSwanglei;; SETOLE
1349ff7d0ebSwangleidefine void @v4f32_fcmp_ole(ptr %res, ptr %a0, ptr %a1) nounwind {
1359ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ole:
1369ff7d0ebSwanglei; CHECK:       # %bb.0:
137*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
138*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
139*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cle.s $vr0, $vr0, $vr1
1409ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
1419ff7d0ebSwanglei; CHECK-NEXT:    ret
1429ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
1439ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
1449ff7d0ebSwanglei  %cmp = fcmp ole <4 x float> %v0, %v1
1459ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
1469ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
1479ff7d0ebSwanglei  ret void
1489ff7d0ebSwanglei}
1499ff7d0ebSwanglei
1509ff7d0ebSwangleidefine void @v2f64_fcmp_ole(ptr %res, ptr %a0, ptr %a1) nounwind {
1519ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ole:
1529ff7d0ebSwanglei; CHECK:       # %bb.0:
153*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
154*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
155*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cle.d $vr0, $vr0, $vr1
1569ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
1579ff7d0ebSwanglei; CHECK-NEXT:    ret
1589ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
1599ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
1609ff7d0ebSwanglei  %cmp = fcmp ole <2 x double> %v0, %v1
1619ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
1629ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
1639ff7d0ebSwanglei  ret void
1649ff7d0ebSwanglei}
1659ff7d0ebSwanglei
1669ff7d0ebSwanglei;; SETULE
1679ff7d0ebSwangleidefine void @v4f32_fcmp_ule(ptr %res, ptr %a0, ptr %a1) nounwind {
1689ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ule:
1699ff7d0ebSwanglei; CHECK:       # %bb.0:
170*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
171*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
172*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cule.s $vr0, $vr0, $vr1
1739ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
1749ff7d0ebSwanglei; CHECK-NEXT:    ret
1759ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
1769ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
1779ff7d0ebSwanglei  %cmp = fcmp ule <4 x float> %v0, %v1
1789ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
1799ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
1809ff7d0ebSwanglei  ret void
1819ff7d0ebSwanglei}
1829ff7d0ebSwanglei
1839ff7d0ebSwangleidefine void @v2f64_fcmp_ule(ptr %res, ptr %a0, ptr %a1) nounwind {
1849ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ule:
1859ff7d0ebSwanglei; CHECK:       # %bb.0:
186*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
187*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
188*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cule.d $vr0, $vr0, $vr1
1899ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
1909ff7d0ebSwanglei; CHECK-NEXT:    ret
1919ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
1929ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
1939ff7d0ebSwanglei  %cmp = fcmp ule <2 x double> %v0, %v1
1949ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
1959ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
1969ff7d0ebSwanglei  ret void
1979ff7d0ebSwanglei}
1989ff7d0ebSwanglei
1999ff7d0ebSwanglei;; SETLE
2009ff7d0ebSwangleidefine void @v4f32_fcmp_le(ptr %res, ptr %a0, ptr %a1) nounwind {
2019ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_le:
2029ff7d0ebSwanglei; CHECK:       # %bb.0:
203*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
204*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
205*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cle.s $vr0, $vr0, $vr1
2069ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
2079ff7d0ebSwanglei; CHECK-NEXT:    ret
2089ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
2099ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
2109ff7d0ebSwanglei  %cmp = fcmp fast ole <4 x float> %v0, %v1
2119ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
2129ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
2139ff7d0ebSwanglei  ret void
2149ff7d0ebSwanglei}
2159ff7d0ebSwanglei
2169ff7d0ebSwangleidefine void @v2f64_fcmp_le(ptr %res, ptr %a0, ptr %a1) nounwind {
2179ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_le:
2189ff7d0ebSwanglei; CHECK:       # %bb.0:
219*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
220*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
221*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cle.d $vr0, $vr0, $vr1
2229ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
2239ff7d0ebSwanglei; CHECK-NEXT:    ret
2249ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
2259ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
2269ff7d0ebSwanglei  %cmp = fcmp fast ule <2 x double> %v0, %v1
2279ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
2289ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
2299ff7d0ebSwanglei  ret void
2309ff7d0ebSwanglei}
2319ff7d0ebSwanglei
2329ff7d0ebSwanglei;; SETOLT
2339ff7d0ebSwangleidefine void @v4f32_fcmp_olt(ptr %res, ptr %a0, ptr %a1) nounwind {
2349ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_olt:
2359ff7d0ebSwanglei; CHECK:       # %bb.0:
236*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
237*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
238*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.clt.s $vr0, $vr0, $vr1
2399ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
2409ff7d0ebSwanglei; CHECK-NEXT:    ret
2419ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
2429ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
2439ff7d0ebSwanglei  %cmp = fcmp olt <4 x float> %v0, %v1
2449ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
2459ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
2469ff7d0ebSwanglei  ret void
2479ff7d0ebSwanglei}
2489ff7d0ebSwanglei
2499ff7d0ebSwangleidefine void @v2f64_fcmp_olt(ptr %res, ptr %a0, ptr %a1) nounwind {
2509ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_olt:
2519ff7d0ebSwanglei; CHECK:       # %bb.0:
252*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
253*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
254*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.clt.d $vr0, $vr0, $vr1
2559ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
2569ff7d0ebSwanglei; CHECK-NEXT:    ret
2579ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
2589ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
2599ff7d0ebSwanglei  %cmp = fcmp olt <2 x double> %v0, %v1
2609ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
2619ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
2629ff7d0ebSwanglei  ret void
2639ff7d0ebSwanglei}
2649ff7d0ebSwanglei
2659ff7d0ebSwanglei;; SETULT
2669ff7d0ebSwangleidefine void @v4f32_fcmp_ult(ptr %res, ptr %a0, ptr %a1) nounwind {
2679ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ult:
2689ff7d0ebSwanglei; CHECK:       # %bb.0:
269*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
270*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
271*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cult.s $vr0, $vr0, $vr1
2729ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
2739ff7d0ebSwanglei; CHECK-NEXT:    ret
2749ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
2759ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
2769ff7d0ebSwanglei  %cmp = fcmp ult <4 x float> %v0, %v1
2779ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
2789ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
2799ff7d0ebSwanglei  ret void
2809ff7d0ebSwanglei}
2819ff7d0ebSwanglei
2829ff7d0ebSwangleidefine void @v2f64_fcmp_ult(ptr %res, ptr %a0, ptr %a1) nounwind {
2839ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ult:
2849ff7d0ebSwanglei; CHECK:       # %bb.0:
285*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
286*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
287*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cult.d $vr0, $vr0, $vr1
2889ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
2899ff7d0ebSwanglei; CHECK-NEXT:    ret
2909ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
2919ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
2929ff7d0ebSwanglei  %cmp = fcmp ult <2 x double> %v0, %v1
2939ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
2949ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
2959ff7d0ebSwanglei  ret void
2969ff7d0ebSwanglei}
2979ff7d0ebSwanglei
2989ff7d0ebSwanglei;; SETLT
2999ff7d0ebSwangleidefine void @v4f32_fcmp_lt(ptr %res, ptr %a0, ptr %a1) nounwind {
3009ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_lt:
3019ff7d0ebSwanglei; CHECK:       # %bb.0:
302*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
303*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
304*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.clt.s $vr0, $vr0, $vr1
3059ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
3069ff7d0ebSwanglei; CHECK-NEXT:    ret
3079ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
3089ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
3099ff7d0ebSwanglei  %cmp = fcmp fast olt <4 x float> %v0, %v1
3109ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
3119ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
3129ff7d0ebSwanglei  ret void
3139ff7d0ebSwanglei}
3149ff7d0ebSwanglei
3159ff7d0ebSwangleidefine void @v2f64_fcmp_lt(ptr %res, ptr %a0, ptr %a1) nounwind {
3169ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_lt:
3179ff7d0ebSwanglei; CHECK:       # %bb.0:
318*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
319*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
320*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.clt.d $vr0, $vr0, $vr1
3219ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
3229ff7d0ebSwanglei; CHECK-NEXT:    ret
3239ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
3249ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
3259ff7d0ebSwanglei  %cmp = fcmp fast ult <2 x double> %v0, %v1
3269ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
3279ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
3289ff7d0ebSwanglei  ret void
3299ff7d0ebSwanglei}
3309ff7d0ebSwanglei
3319ff7d0ebSwanglei;; SETONE
3329ff7d0ebSwangleidefine void @v4f32_fcmp_one(ptr %res, ptr %a0, ptr %a1) nounwind {
3339ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_one:
3349ff7d0ebSwanglei; CHECK:       # %bb.0:
335*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
336*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
337*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cne.s $vr0, $vr0, $vr1
3389ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
3399ff7d0ebSwanglei; CHECK-NEXT:    ret
3409ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
3419ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
3429ff7d0ebSwanglei  %cmp = fcmp one <4 x float> %v0, %v1
3439ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
3449ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
3459ff7d0ebSwanglei  ret void
3469ff7d0ebSwanglei}
3479ff7d0ebSwanglei
3489ff7d0ebSwangleidefine void @v2f64_fcmp_one(ptr %res, ptr %a0, ptr %a1) nounwind {
3499ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_one:
3509ff7d0ebSwanglei; CHECK:       # %bb.0:
351*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
352*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
353*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cne.d $vr0, $vr0, $vr1
3549ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
3559ff7d0ebSwanglei; CHECK-NEXT:    ret
3569ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
3579ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
3589ff7d0ebSwanglei  %cmp = fcmp one <2 x double> %v0, %v1
3599ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
3609ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
3619ff7d0ebSwanglei  ret void
3629ff7d0ebSwanglei}
3639ff7d0ebSwanglei
3649ff7d0ebSwanglei;; SETUNE
3659ff7d0ebSwangleidefine void @v4f32_fcmp_une(ptr %res, ptr %a0, ptr %a1) nounwind {
3669ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_une:
3679ff7d0ebSwanglei; CHECK:       # %bb.0:
368*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
369*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
370*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cune.s $vr0, $vr0, $vr1
3719ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
3729ff7d0ebSwanglei; CHECK-NEXT:    ret
3739ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
3749ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
3759ff7d0ebSwanglei  %cmp = fcmp une <4 x float> %v0, %v1
3769ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
3779ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
3789ff7d0ebSwanglei  ret void
3799ff7d0ebSwanglei}
3809ff7d0ebSwanglei
3819ff7d0ebSwangleidefine void @v2f64_fcmp_une(ptr %res, ptr %a0, ptr %a1) nounwind {
3829ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_une:
3839ff7d0ebSwanglei; CHECK:       # %bb.0:
384*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
385*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
386*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cune.d $vr0, $vr0, $vr1
3879ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
3889ff7d0ebSwanglei; CHECK-NEXT:    ret
3899ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
3909ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
3919ff7d0ebSwanglei  %cmp = fcmp une <2 x double> %v0, %v1
3929ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
3939ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
3949ff7d0ebSwanglei  ret void
3959ff7d0ebSwanglei}
3969ff7d0ebSwanglei
3979ff7d0ebSwanglei;; SETNE
3989ff7d0ebSwangleidefine void @v4f32_fcmp_ne(ptr %res, ptr %a0, ptr %a1) nounwind {
3999ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ne:
4009ff7d0ebSwanglei; CHECK:       # %bb.0:
401*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
402*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
403*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cne.s $vr0, $vr0, $vr1
4049ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
4059ff7d0ebSwanglei; CHECK-NEXT:    ret
4069ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
4079ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
4089ff7d0ebSwanglei  %cmp = fcmp fast one <4 x float> %v0, %v1
4099ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
4109ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
4119ff7d0ebSwanglei  ret void
4129ff7d0ebSwanglei}
4139ff7d0ebSwanglei
4149ff7d0ebSwangleidefine void @v2f64_fcmp_ne(ptr %res, ptr %a0, ptr %a1) nounwind {
4159ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ne:
4169ff7d0ebSwanglei; CHECK:       # %bb.0:
417*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
418*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
419*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cne.d $vr0, $vr0, $vr1
4209ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
4219ff7d0ebSwanglei; CHECK-NEXT:    ret
4229ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
4239ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
4249ff7d0ebSwanglei  %cmp = fcmp fast une <2 x double> %v0, %v1
4259ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
4269ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
4279ff7d0ebSwanglei  ret void
4289ff7d0ebSwanglei}
4299ff7d0ebSwanglei
4309ff7d0ebSwanglei;; SETO
4319ff7d0ebSwangleidefine void @v4f32_fcmp_ord(ptr %res, ptr %a0, ptr %a1) nounwind {
4329ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ord:
4339ff7d0ebSwanglei; CHECK:       # %bb.0:
434*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
435*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
436*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cor.s $vr0, $vr0, $vr1
4379ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
4389ff7d0ebSwanglei; CHECK-NEXT:    ret
4399ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
4409ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
4419ff7d0ebSwanglei  %cmp = fcmp ord <4 x float> %v0, %v1
4429ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
4439ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
4449ff7d0ebSwanglei  ret void
4459ff7d0ebSwanglei}
4469ff7d0ebSwanglei
4479ff7d0ebSwangleidefine void @v2f64_fcmp_ord(ptr %res, ptr %a0, ptr %a1) nounwind {
4489ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ord:
4499ff7d0ebSwanglei; CHECK:       # %bb.0:
450*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
451*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
452*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cor.d $vr0, $vr0, $vr1
4539ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
4549ff7d0ebSwanglei; CHECK-NEXT:    ret
4559ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
4569ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
4579ff7d0ebSwanglei  %cmp = fcmp ord <2 x double> %v0, %v1
4589ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
4599ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
4609ff7d0ebSwanglei  ret void
4619ff7d0ebSwanglei}
4629ff7d0ebSwanglei
4639ff7d0ebSwanglei;; SETUO
4649ff7d0ebSwangleidefine void @v4f32_fcmp_uno(ptr %res, ptr %a0, ptr %a1) nounwind {
4659ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_uno:
4669ff7d0ebSwanglei; CHECK:       # %bb.0:
467*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
468*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
469*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cun.s $vr0, $vr0, $vr1
4709ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
4719ff7d0ebSwanglei; CHECK-NEXT:    ret
4729ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
4739ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
4749ff7d0ebSwanglei  %cmp = fcmp uno <4 x float> %v0, %v1
4759ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
4769ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
4779ff7d0ebSwanglei  ret void
4789ff7d0ebSwanglei}
4799ff7d0ebSwanglei
4809ff7d0ebSwangleidefine void @v2f64_fcmp_uno(ptr %res, ptr %a0, ptr %a1) nounwind {
4819ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_uno:
4829ff7d0ebSwanglei; CHECK:       # %bb.0:
483*a5c90e48Swanglei; CHECK-NEXT:    vld $vr0, $a1, 0
484*a5c90e48Swanglei; CHECK-NEXT:    vld $vr1, $a2, 0
485*a5c90e48Swanglei; CHECK-NEXT:    vfcmp.cun.d $vr0, $vr0, $vr1
4869ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
4879ff7d0ebSwanglei; CHECK-NEXT:    ret
4889ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
4899ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
4909ff7d0ebSwanglei  %cmp = fcmp uno <2 x double> %v0, %v1
4919ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
4929ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
4939ff7d0ebSwanglei  ret void
4949ff7d0ebSwanglei}
4959ff7d0ebSwanglei
4969ff7d0ebSwanglei;; Expand SETOGT
4979ff7d0ebSwangleidefine void @v4f32_fcmp_ogt(ptr %res, ptr %a0, ptr %a1) nounwind {
4989ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ogt:
4999ff7d0ebSwanglei; CHECK:       # %bb.0:
5009ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
5019ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
5029ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.clt.s $vr0, $vr1, $vr0
5039ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
5049ff7d0ebSwanglei; CHECK-NEXT:    ret
5059ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
5069ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
5079ff7d0ebSwanglei  %cmp = fcmp ogt <4 x float> %v0, %v1
5089ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
5099ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
5109ff7d0ebSwanglei  ret void
5119ff7d0ebSwanglei}
5129ff7d0ebSwanglei
5139ff7d0ebSwangleidefine void @v2f64_fcmp_ogt(ptr %res, ptr %a0, ptr %a1) nounwind {
5149ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ogt:
5159ff7d0ebSwanglei; CHECK:       # %bb.0:
5169ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
5179ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
5189ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.clt.d $vr0, $vr1, $vr0
5199ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
5209ff7d0ebSwanglei; CHECK-NEXT:    ret
5219ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
5229ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
5239ff7d0ebSwanglei  %cmp = fcmp ogt <2 x double> %v0, %v1
5249ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
5259ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
5269ff7d0ebSwanglei  ret void
5279ff7d0ebSwanglei}
5289ff7d0ebSwanglei
5299ff7d0ebSwanglei;; Expand SETUGT
5309ff7d0ebSwangleidefine void @v4f32_fcmp_ugt(ptr %res, ptr %a0, ptr %a1) nounwind {
5319ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ugt:
5329ff7d0ebSwanglei; CHECK:       # %bb.0:
5339ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
5349ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
5359ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.cult.s $vr0, $vr1, $vr0
5369ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
5379ff7d0ebSwanglei; CHECK-NEXT:    ret
5389ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
5399ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
5409ff7d0ebSwanglei  %cmp = fcmp ugt <4 x float> %v0, %v1
5419ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
5429ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
5439ff7d0ebSwanglei  ret void
5449ff7d0ebSwanglei}
5459ff7d0ebSwanglei
5469ff7d0ebSwangleidefine void @v2f64_fcmp_ugt(ptr %res, ptr %a0, ptr %a1) nounwind {
5479ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ugt:
5489ff7d0ebSwanglei; CHECK:       # %bb.0:
5499ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
5509ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
5519ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.cult.d $vr0, $vr1, $vr0
5529ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
5539ff7d0ebSwanglei; CHECK-NEXT:    ret
5549ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
5559ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
5569ff7d0ebSwanglei  %cmp = fcmp ugt <2 x double> %v0, %v1
5579ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
5589ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
5599ff7d0ebSwanglei  ret void
5609ff7d0ebSwanglei}
5619ff7d0ebSwanglei
5629ff7d0ebSwanglei;; Expand SETGT
5639ff7d0ebSwangleidefine void @v4f32_fcmp_gt(ptr %res, ptr %a0, ptr %a1) nounwind {
5649ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_gt:
5659ff7d0ebSwanglei; CHECK:       # %bb.0:
5669ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
5679ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
5689ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.clt.s $vr0, $vr1, $vr0
5699ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
5709ff7d0ebSwanglei; CHECK-NEXT:    ret
5719ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
5729ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
5739ff7d0ebSwanglei  %cmp = fcmp fast ogt <4 x float> %v0, %v1
5749ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
5759ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
5769ff7d0ebSwanglei  ret void
5779ff7d0ebSwanglei}
5789ff7d0ebSwanglei
5799ff7d0ebSwangleidefine void @v2f64_fcmp_gt(ptr %res, ptr %a0, ptr %a1) nounwind {
5809ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_gt:
5819ff7d0ebSwanglei; CHECK:       # %bb.0:
5829ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
5839ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
5849ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.clt.d $vr0, $vr1, $vr0
5859ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
5869ff7d0ebSwanglei; CHECK-NEXT:    ret
5879ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
5889ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
5899ff7d0ebSwanglei  %cmp = fcmp fast ugt <2 x double> %v0, %v1
5909ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
5919ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
5929ff7d0ebSwanglei  ret void
5939ff7d0ebSwanglei}
5949ff7d0ebSwanglei
5959ff7d0ebSwanglei;; Expand SETOGE
5969ff7d0ebSwangleidefine void @v4f32_fcmp_oge(ptr %res, ptr %a0, ptr %a1) nounwind {
5979ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_oge:
5989ff7d0ebSwanglei; CHECK:       # %bb.0:
5999ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
6009ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
6019ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.cle.s $vr0, $vr1, $vr0
6029ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
6039ff7d0ebSwanglei; CHECK-NEXT:    ret
6049ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
6059ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
6069ff7d0ebSwanglei  %cmp = fcmp oge <4 x float> %v0, %v1
6079ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
6089ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
6099ff7d0ebSwanglei  ret void
6109ff7d0ebSwanglei}
6119ff7d0ebSwanglei
6129ff7d0ebSwangleidefine void @v2f64_fcmp_oge(ptr %res, ptr %a0, ptr %a1) nounwind {
6139ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_oge:
6149ff7d0ebSwanglei; CHECK:       # %bb.0:
6159ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
6169ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
6179ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.cle.d $vr0, $vr1, $vr0
6189ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
6199ff7d0ebSwanglei; CHECK-NEXT:    ret
6209ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
6219ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
6229ff7d0ebSwanglei  %cmp = fcmp oge <2 x double> %v0, %v1
6239ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
6249ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
6259ff7d0ebSwanglei  ret void
6269ff7d0ebSwanglei}
6279ff7d0ebSwanglei
6289ff7d0ebSwanglei;; Expand SETUGE
6299ff7d0ebSwangleidefine void @v4f32_fcmp_uge(ptr %res, ptr %a0, ptr %a1) nounwind {
6309ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_uge:
6319ff7d0ebSwanglei; CHECK:       # %bb.0:
6329ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
6339ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
6349ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.cule.s $vr0, $vr1, $vr0
6359ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
6369ff7d0ebSwanglei; CHECK-NEXT:    ret
6379ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
6389ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
6399ff7d0ebSwanglei  %cmp = fcmp uge <4 x float> %v0, %v1
6409ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
6419ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
6429ff7d0ebSwanglei  ret void
6439ff7d0ebSwanglei}
6449ff7d0ebSwanglei
6459ff7d0ebSwangleidefine void @v2f64_fcmp_uge(ptr %res, ptr %a0, ptr %a1) nounwind {
6469ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_uge:
6479ff7d0ebSwanglei; CHECK:       # %bb.0:
6489ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
6499ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
6509ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.cule.d $vr0, $vr1, $vr0
6519ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
6529ff7d0ebSwanglei; CHECK-NEXT:    ret
6539ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
6549ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
6559ff7d0ebSwanglei  %cmp = fcmp uge <2 x double> %v0, %v1
6569ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
6579ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
6589ff7d0ebSwanglei  ret void
6599ff7d0ebSwanglei}
6609ff7d0ebSwanglei
6619ff7d0ebSwanglei;; Expand SETGE
6629ff7d0ebSwangleidefine void @v4f32_fcmp_ge(ptr %res, ptr %a0, ptr %a1) nounwind {
6639ff7d0ebSwanglei; CHECK-LABEL: v4f32_fcmp_ge:
6649ff7d0ebSwanglei; CHECK:       # %bb.0:
6659ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
6669ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
6679ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.cle.s $vr0, $vr1, $vr0
6689ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
6699ff7d0ebSwanglei; CHECK-NEXT:    ret
6709ff7d0ebSwanglei  %v0 = load <4 x float>, ptr %a0
6719ff7d0ebSwanglei  %v1 = load <4 x float>, ptr %a1
6729ff7d0ebSwanglei  %cmp = fcmp fast oge <4 x float> %v0, %v1
6739ff7d0ebSwanglei  %ext = sext <4 x i1> %cmp to <4 x i32>
6749ff7d0ebSwanglei  store <4 x i32> %ext, ptr %res
6759ff7d0ebSwanglei  ret void
6769ff7d0ebSwanglei}
6779ff7d0ebSwanglei
6789ff7d0ebSwangleidefine void @v2f64_fcmp_ge(ptr %res, ptr %a0, ptr %a1) nounwind {
6799ff7d0ebSwanglei; CHECK-LABEL: v2f64_fcmp_ge:
6809ff7d0ebSwanglei; CHECK:       # %bb.0:
6819ff7d0ebSwanglei; CHECK-NEXT:    vld $vr0, $a1, 0
6829ff7d0ebSwanglei; CHECK-NEXT:    vld $vr1, $a2, 0
6839ff7d0ebSwanglei; CHECK-NEXT:    vfcmp.cle.d $vr0, $vr1, $vr0
6849ff7d0ebSwanglei; CHECK-NEXT:    vst $vr0, $a0, 0
6859ff7d0ebSwanglei; CHECK-NEXT:    ret
6869ff7d0ebSwanglei  %v0 = load <2 x double>, ptr %a0
6879ff7d0ebSwanglei  %v1 = load <2 x double>, ptr %a1
6889ff7d0ebSwanglei  %cmp = fcmp fast uge <2 x double> %v0, %v1
6899ff7d0ebSwanglei  %ext = sext <2 x i1> %cmp to <2 x i64>
6909ff7d0ebSwanglei  store <2 x i64> %ext, ptr %res
6919ff7d0ebSwanglei  ret void
6929ff7d0ebSwanglei}
693