1b5caa68fSDavid Green; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2b5caa68fSDavid Green; RUN: llc < %s -mtriple=armv8-eabi -mattr=+neon | FileCheck %s 3b5caa68fSDavid Green 4b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_eq(<4 x i32> %0, <4 x i32> %b) { 5b5caa68fSDavid Green; CHECK-LABEL: vcmpz_eq: 6b5caa68fSDavid Green; CHECK: @ %bb.0: 7b5caa68fSDavid Green; CHECK-NEXT: vceq.i32 q0, q0, q1 8b5caa68fSDavid Green; CHECK-NEXT: bx lr 9b5caa68fSDavid Green %2 = icmp eq <4 x i32> %0, %b 10b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 11b5caa68fSDavid Green ret <4 x i32> %3 12b5caa68fSDavid Green} 13b5caa68fSDavid Green 14b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_ne(<4 x i32> %0, <4 x i32> %b) { 15b5caa68fSDavid Green; CHECK-LABEL: vcmpz_ne: 16b5caa68fSDavid Green; CHECK: @ %bb.0: 17b5caa68fSDavid Green; CHECK-NEXT: vceq.i32 q8, q0, q1 18b5caa68fSDavid Green; CHECK-NEXT: vmvn q0, q8 19b5caa68fSDavid Green; CHECK-NEXT: bx lr 20b5caa68fSDavid Green %2 = icmp ne <4 x i32> %0, %b 21b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 22b5caa68fSDavid Green ret <4 x i32> %3 23b5caa68fSDavid Green} 24b5caa68fSDavid Green 25b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_slt(<4 x i32> %0, <4 x i32> %b) { 26b5caa68fSDavid Green; CHECK-LABEL: vcmpz_slt: 27b5caa68fSDavid Green; CHECK: @ %bb.0: 28b5caa68fSDavid Green; CHECK-NEXT: vcgt.s32 q0, q1, q0 29b5caa68fSDavid Green; CHECK-NEXT: bx lr 30b5caa68fSDavid Green %2 = icmp slt <4 x i32> %0, %b 31b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 32b5caa68fSDavid Green ret <4 x i32> %3 33b5caa68fSDavid Green} 34b5caa68fSDavid Green 35b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_sle(<4 x i32> %0, <4 x i32> %b) { 36b5caa68fSDavid Green; CHECK-LABEL: vcmpz_sle: 37b5caa68fSDavid Green; CHECK: @ %bb.0: 38b5caa68fSDavid Green; CHECK-NEXT: vcge.s32 q0, q1, q0 39b5caa68fSDavid Green; CHECK-NEXT: bx lr 40b5caa68fSDavid Green %2 = icmp sle <4 x i32> %0, %b 41b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 42b5caa68fSDavid Green ret <4 x i32> %3 43b5caa68fSDavid Green} 44b5caa68fSDavid Green 45b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_sgt(<4 x i32> %0, <4 x i32> %b) { 46b5caa68fSDavid Green; CHECK-LABEL: vcmpz_sgt: 47b5caa68fSDavid Green; CHECK: @ %bb.0: 48b5caa68fSDavid Green; CHECK-NEXT: vcgt.s32 q0, q0, q1 49b5caa68fSDavid Green; CHECK-NEXT: bx lr 50b5caa68fSDavid Green %2 = icmp sgt <4 x i32> %0, %b 51b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 52b5caa68fSDavid Green ret <4 x i32> %3 53b5caa68fSDavid Green} 54b5caa68fSDavid Green 55b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_sge(<4 x i32> %0, <4 x i32> %b) { 56b5caa68fSDavid Green; CHECK-LABEL: vcmpz_sge: 57b5caa68fSDavid Green; CHECK: @ %bb.0: 58b5caa68fSDavid Green; CHECK-NEXT: vcge.s32 q0, q0, q1 59b5caa68fSDavid Green; CHECK-NEXT: bx lr 60b5caa68fSDavid Green %2 = icmp sge <4 x i32> %0, %b 61b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 62b5caa68fSDavid Green ret <4 x i32> %3 63b5caa68fSDavid Green} 64b5caa68fSDavid Green 65b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_ult(<4 x i32> %0, <4 x i32> %b) { 66b5caa68fSDavid Green; CHECK-LABEL: vcmpz_ult: 67b5caa68fSDavid Green; CHECK: @ %bb.0: 68b5caa68fSDavid Green; CHECK-NEXT: vcgt.u32 q0, q1, q0 69b5caa68fSDavid Green; CHECK-NEXT: bx lr 70b5caa68fSDavid Green %2 = icmp ult <4 x i32> %0, %b 71b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 72b5caa68fSDavid Green ret <4 x i32> %3 73b5caa68fSDavid Green} 74b5caa68fSDavid Green 75b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_ule(<4 x i32> %0, <4 x i32> %b) { 76b5caa68fSDavid Green; CHECK-LABEL: vcmpz_ule: 77b5caa68fSDavid Green; CHECK: @ %bb.0: 78b5caa68fSDavid Green; CHECK-NEXT: vcge.u32 q0, q1, q0 79b5caa68fSDavid Green; CHECK-NEXT: bx lr 80b5caa68fSDavid Green %2 = icmp ule <4 x i32> %0, %b 81b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 82b5caa68fSDavid Green ret <4 x i32> %3 83b5caa68fSDavid Green} 84b5caa68fSDavid Green 85b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_ugt(<4 x i32> %0, <4 x i32> %b) { 86b5caa68fSDavid Green; CHECK-LABEL: vcmpz_ugt: 87b5caa68fSDavid Green; CHECK: @ %bb.0: 88b5caa68fSDavid Green; CHECK-NEXT: vcgt.u32 q0, q0, q1 89b5caa68fSDavid Green; CHECK-NEXT: bx lr 90b5caa68fSDavid Green %2 = icmp ugt <4 x i32> %0, %b 91b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 92b5caa68fSDavid Green ret <4 x i32> %3 93b5caa68fSDavid Green} 94b5caa68fSDavid Green 95b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_uge(<4 x i32> %0, <4 x i32> %b) { 96b5caa68fSDavid Green; CHECK-LABEL: vcmpz_uge: 97b5caa68fSDavid Green; CHECK: @ %bb.0: 98b5caa68fSDavid Green; CHECK-NEXT: vcge.u32 q0, q0, q1 99b5caa68fSDavid Green; CHECK-NEXT: bx lr 100b5caa68fSDavid Green %2 = icmp uge <4 x i32> %0, %b 101b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 102b5caa68fSDavid Green ret <4 x i32> %3 103b5caa68fSDavid Green} 104b5caa68fSDavid Green 105b5caa68fSDavid Green 106b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zr_eq(<4 x i32> %0) { 107b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zr_eq: 108b5caa68fSDavid Green; CHECK: @ %bb.0: 109b5caa68fSDavid Green; CHECK-NEXT: vceq.i32 q0, q0, #0 110b5caa68fSDavid Green; CHECK-NEXT: bx lr 111b5caa68fSDavid Green %2 = icmp eq <4 x i32> %0, zeroinitializer 112b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 113b5caa68fSDavid Green ret <4 x i32> %3 114b5caa68fSDavid Green} 115b5caa68fSDavid Green 116b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zr_ne(<4 x i32> %0) { 117b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zr_ne: 118b5caa68fSDavid Green; CHECK: @ %bb.0: 119b5caa68fSDavid Green; CHECK-NEXT: vceq.i32 q8, q0, #0 120b5caa68fSDavid Green; CHECK-NEXT: vmvn q0, q8 121b5caa68fSDavid Green; CHECK-NEXT: bx lr 122b5caa68fSDavid Green %2 = icmp ne <4 x i32> %0, zeroinitializer 123b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 124b5caa68fSDavid Green ret <4 x i32> %3 125b5caa68fSDavid Green} 126b5caa68fSDavid Green 127b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zr_slt(<4 x i32> %0) { 128b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zr_slt: 129b5caa68fSDavid Green; CHECK: @ %bb.0: 130b5caa68fSDavid Green; CHECK-NEXT: vclt.s32 q0, q0, #0 131b5caa68fSDavid Green; CHECK-NEXT: bx lr 132b5caa68fSDavid Green %2 = icmp slt <4 x i32> %0, zeroinitializer 133b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 134b5caa68fSDavid Green ret <4 x i32> %3 135b5caa68fSDavid Green} 136b5caa68fSDavid Green 137b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zr_sle(<4 x i32> %0) { 138b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zr_sle: 139b5caa68fSDavid Green; CHECK: @ %bb.0: 140b5caa68fSDavid Green; CHECK-NEXT: vcle.s32 q0, q0, #0 141b5caa68fSDavid Green; CHECK-NEXT: bx lr 142b5caa68fSDavid Green %2 = icmp sle <4 x i32> %0, zeroinitializer 143b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 144b5caa68fSDavid Green ret <4 x i32> %3 145b5caa68fSDavid Green} 146b5caa68fSDavid Green 147b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zr_sgt(<4 x i32> %0) { 148b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zr_sgt: 149b5caa68fSDavid Green; CHECK: @ %bb.0: 150b5caa68fSDavid Green; CHECK-NEXT: vcgt.s32 q0, q0, #0 151b5caa68fSDavid Green; CHECK-NEXT: bx lr 152b5caa68fSDavid Green %2 = icmp sgt <4 x i32> %0, zeroinitializer 153b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 154b5caa68fSDavid Green ret <4 x i32> %3 155b5caa68fSDavid Green} 156b5caa68fSDavid Green 157b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zr_sge(<4 x i32> %0) { 158b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zr_sge: 159b5caa68fSDavid Green; CHECK: @ %bb.0: 160b5caa68fSDavid Green; CHECK-NEXT: vcge.s32 q0, q0, #0 161b5caa68fSDavid Green; CHECK-NEXT: bx lr 162b5caa68fSDavid Green %2 = icmp sge <4 x i32> %0, zeroinitializer 163b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 164b5caa68fSDavid Green ret <4 x i32> %3 165b5caa68fSDavid Green} 166b5caa68fSDavid Green 167b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zr_ult(<4 x i32> %0) { 168b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zr_ult: 169b5caa68fSDavid Green; CHECK: @ %bb.0: 170b5caa68fSDavid Green; CHECK-NEXT: vmov.i32 q0, #0x0 171b5caa68fSDavid Green; CHECK-NEXT: bx lr 172b5caa68fSDavid Green %2 = icmp ult <4 x i32> %0, zeroinitializer 173b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 174b5caa68fSDavid Green ret <4 x i32> %3 175b5caa68fSDavid Green} 176b5caa68fSDavid Green 177*f970b007SDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zr_ule(<4 x i32> %0) { 178*f970b007SDavid Green; CHECK-LABEL: vcmpz_zr_ule: 179*f970b007SDavid Green; CHECK: @ %bb.0: 180*f970b007SDavid Green; CHECK-NEXT: vmov.i32 q8, #0x0 181*f970b007SDavid Green; CHECK-NEXT: vcge.u32 q0, q8, q0 182*f970b007SDavid Green; CHECK-NEXT: bx lr 183*f970b007SDavid Green %2 = icmp ule <4 x i32> %0, zeroinitializer 184*f970b007SDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 185*f970b007SDavid Green ret <4 x i32> %3 186*f970b007SDavid Green} 187b5caa68fSDavid Green 188b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zr_ugt(<4 x i32> %0) { 189b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zr_ugt: 190b5caa68fSDavid Green; CHECK: @ %bb.0: 191b5caa68fSDavid Green; CHECK-NEXT: vceq.i32 q8, q0, #0 192b5caa68fSDavid Green; CHECK-NEXT: vmvn q0, q8 193b5caa68fSDavid Green; CHECK-NEXT: bx lr 194b5caa68fSDavid Green %2 = icmp ugt <4 x i32> %0, zeroinitializer 195b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 196b5caa68fSDavid Green ret <4 x i32> %3 197b5caa68fSDavid Green} 198b5caa68fSDavid Green 199b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zr_uge(<4 x i32> %0) { 200b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zr_uge: 201b5caa68fSDavid Green; CHECK: @ %bb.0: 202b5caa68fSDavid Green; CHECK-NEXT: vmov.i8 q0, #0xff 203b5caa68fSDavid Green; CHECK-NEXT: bx lr 204b5caa68fSDavid Green %2 = icmp uge <4 x i32> %0, zeroinitializer 205b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 206b5caa68fSDavid Green ret <4 x i32> %3 207b5caa68fSDavid Green} 208b5caa68fSDavid Green 209b5caa68fSDavid Green 210b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zl_eq(<4 x i32> %0) { 211b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zl_eq: 212b5caa68fSDavid Green; CHECK: @ %bb.0: 213b5caa68fSDavid Green; CHECK-NEXT: vceq.i32 q0, q0, #0 214b5caa68fSDavid Green; CHECK-NEXT: bx lr 215b5caa68fSDavid Green %2 = icmp eq <4 x i32> zeroinitializer, %0 216b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 217b5caa68fSDavid Green ret <4 x i32> %3 218b5caa68fSDavid Green} 219b5caa68fSDavid Green 220b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zl_ne(<4 x i32> %0) { 221b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zl_ne: 222b5caa68fSDavid Green; CHECK: @ %bb.0: 223b5caa68fSDavid Green; CHECK-NEXT: vceq.i32 q8, q0, #0 224b5caa68fSDavid Green; CHECK-NEXT: vmvn q0, q8 225b5caa68fSDavid Green; CHECK-NEXT: bx lr 226b5caa68fSDavid Green %2 = icmp ne <4 x i32> zeroinitializer, %0 227b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 228b5caa68fSDavid Green ret <4 x i32> %3 229b5caa68fSDavid Green} 230b5caa68fSDavid Green 231b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zl_slt(<4 x i32> %0) { 232b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zl_slt: 233b5caa68fSDavid Green; CHECK: @ %bb.0: 234b5caa68fSDavid Green; CHECK-NEXT: vcgt.s32 q0, q0, #0 235b5caa68fSDavid Green; CHECK-NEXT: bx lr 236b5caa68fSDavid Green %2 = icmp slt <4 x i32> zeroinitializer, %0 237b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 238b5caa68fSDavid Green ret <4 x i32> %3 239b5caa68fSDavid Green} 240b5caa68fSDavid Green 241b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zl_sle(<4 x i32> %0) { 242b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zl_sle: 243b5caa68fSDavid Green; CHECK: @ %bb.0: 244b5caa68fSDavid Green; CHECK-NEXT: vcge.s32 q0, q0, #0 245b5caa68fSDavid Green; CHECK-NEXT: bx lr 246b5caa68fSDavid Green %2 = icmp sle <4 x i32> zeroinitializer, %0 247b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 248b5caa68fSDavid Green ret <4 x i32> %3 249b5caa68fSDavid Green} 250b5caa68fSDavid Green 251b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zl_sgt(<4 x i32> %0) { 252b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zl_sgt: 253b5caa68fSDavid Green; CHECK: @ %bb.0: 254b5caa68fSDavid Green; CHECK-NEXT: vclt.s32 q0, q0, #0 255b5caa68fSDavid Green; CHECK-NEXT: bx lr 256b5caa68fSDavid Green %2 = icmp sgt <4 x i32> zeroinitializer, %0 257b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 258b5caa68fSDavid Green ret <4 x i32> %3 259b5caa68fSDavid Green} 260b5caa68fSDavid Green 261b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zl_sge(<4 x i32> %0) { 262b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zl_sge: 263b5caa68fSDavid Green; CHECK: @ %bb.0: 264b5caa68fSDavid Green; CHECK-NEXT: vcle.s32 q0, q0, #0 265b5caa68fSDavid Green; CHECK-NEXT: bx lr 266b5caa68fSDavid Green %2 = icmp sge <4 x i32> zeroinitializer, %0 267b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 268b5caa68fSDavid Green ret <4 x i32> %3 269b5caa68fSDavid Green} 270b5caa68fSDavid Green 271b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zl_ult(<4 x i32> %0) { 272b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zl_ult: 273b5caa68fSDavid Green; CHECK: @ %bb.0: 274b5caa68fSDavid Green; CHECK-NEXT: vceq.i32 q8, q0, #0 275b5caa68fSDavid Green; CHECK-NEXT: vmvn q0, q8 276b5caa68fSDavid Green; CHECK-NEXT: bx lr 277b5caa68fSDavid Green %2 = icmp ult <4 x i32> zeroinitializer, %0 278b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 279b5caa68fSDavid Green ret <4 x i32> %3 280b5caa68fSDavid Green} 281b5caa68fSDavid Green 282b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zl_ule(<4 x i32> %0) { 283b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zl_ule: 284b5caa68fSDavid Green; CHECK: @ %bb.0: 285b5caa68fSDavid Green; CHECK-NEXT: vmov.i8 q0, #0xff 286b5caa68fSDavid Green; CHECK-NEXT: bx lr 287b5caa68fSDavid Green %2 = icmp ule <4 x i32> zeroinitializer, %0 288b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 289b5caa68fSDavid Green ret <4 x i32> %3 290b5caa68fSDavid Green} 291b5caa68fSDavid Green 292b5caa68fSDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zl_ugt(<4 x i32> %0) { 293b5caa68fSDavid Green; CHECK-LABEL: vcmpz_zl_ugt: 294b5caa68fSDavid Green; CHECK: @ %bb.0: 295b5caa68fSDavid Green; CHECK-NEXT: vmov.i32 q0, #0x0 296b5caa68fSDavid Green; CHECK-NEXT: bx lr 297b5caa68fSDavid Green %2 = icmp ugt <4 x i32> zeroinitializer, %0 298b5caa68fSDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 299b5caa68fSDavid Green ret <4 x i32> %3 300b5caa68fSDavid Green} 301b5caa68fSDavid Green 302*f970b007SDavid Greendefine arm_aapcs_vfpcc <4 x i32> @vcmpz_zl_uge(<4 x i32> %0) { 303*f970b007SDavid Green; CHECK-LABEL: vcmpz_zl_uge: 304*f970b007SDavid Green; CHECK: @ %bb.0: 305*f970b007SDavid Green; CHECK-NEXT: vmov.i32 q8, #0x0 306*f970b007SDavid Green; CHECK-NEXT: vcge.u32 q0, q8, q0 307*f970b007SDavid Green; CHECK-NEXT: bx lr 308*f970b007SDavid Green %2 = icmp uge <4 x i32> zeroinitializer, %0 309*f970b007SDavid Green %3 = sext <4 x i1> %2 to <4 x i32> 310*f970b007SDavid Green ret <4 x i32> %3 311*f970b007SDavid Green} 312