1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; Check that cmp's of scalable vector splats are simplified 3 4; RUN: opt -instsimplify -S < %s | FileCheck %s 5 6define <2 x i1> @i32cmp_eq_fixed_zero() { 7; CHECK-LABEL: @i32cmp_eq_fixed_zero( 8; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 9; 10 %res = icmp eq <2 x i32> zeroinitializer, zeroinitializer 11 ret <2 x i1> %res 12} 13 14define <vscale x 2 x i1> @i32cmp_eq_scalable_zero() { 15; CHECK-LABEL: @i32cmp_eq_scalable_zero( 16; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 17; 18 %res = icmp eq <vscale x 2 x i32> zeroinitializer, zeroinitializer 19 ret <vscale x 2 x i1> %res 20} 21 22define <2 x i1> @i32cmp_eq_fixed_one() { 23; CHECK-LABEL: @i32cmp_eq_fixed_one( 24; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 25; 26 %res = icmp eq <2 x i32> <i32 1, i32 1>, <i32 1, i32 1> 27 ret <2 x i1> %res 28} 29 30define <vscale x 2 x i1> @i32cmp_eq_scalable_one() { 31; CHECK-LABEL: @i32cmp_eq_scalable_one( 32; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 33; 34 %res = icmp eq <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer) 35 ret <vscale x 2 x i1> %res 36} 37 38define <2 x i1> @i32cmp_ne_fixed_zero() { 39; CHECK-LABEL: @i32cmp_ne_fixed_zero( 40; CHECK-NEXT: ret <2 x i1> zeroinitializer 41; 42 %res = icmp ne <2 x i32> zeroinitializer, zeroinitializer 43 ret <2 x i1> %res 44} 45 46define <vscale x 2 x i1> @i32cmp_ne_scalable_zero() { 47; CHECK-LABEL: @i32cmp_ne_scalable_zero( 48; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 49; 50 %res = icmp ne <vscale x 2 x i32> zeroinitializer, zeroinitializer 51 ret <vscale x 2 x i1> %res 52} 53 54define <2 x i1> @i32cmp_ne_fixed_one() { 55; CHECK-LABEL: @i32cmp_ne_fixed_one( 56; CHECK-NEXT: ret <2 x i1> zeroinitializer 57; 58 %res = icmp ne <2 x i32> <i32 1, i32 1>, <i32 1, i32 1> 59 ret <2 x i1> %res 60} 61 62define <vscale x 2 x i1> @i32cmp_ne_scalable_one() { 63; CHECK-LABEL: @i32cmp_ne_scalable_one( 64; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 65; 66 %res = icmp ne <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer) 67 ret <vscale x 2 x i1> %res 68} 69 70define <2 x i1> @i32cmp_ugt_fixed_zero() { 71; CHECK-LABEL: @i32cmp_ugt_fixed_zero( 72; CHECK-NEXT: ret <2 x i1> zeroinitializer 73; 74 %res = icmp ugt <2 x i32> zeroinitializer, zeroinitializer 75 ret <2 x i1> %res 76} 77 78define <vscale x 2 x i1> @i32cmp_ugt_scalable_zero() { 79; CHECK-LABEL: @i32cmp_ugt_scalable_zero( 80; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 81; 82 %res = icmp ugt <vscale x 2 x i32> zeroinitializer, zeroinitializer 83 ret <vscale x 2 x i1> %res 84} 85 86define <2 x i1> @i32cmp_ugt_fixed_one() { 87; CHECK-LABEL: @i32cmp_ugt_fixed_one( 88; CHECK-NEXT: ret <2 x i1> zeroinitializer 89; 90 %res = icmp ugt <2 x i32> <i32 1, i32 1>, <i32 1, i32 1> 91 ret <2 x i1> %res 92} 93 94define <vscale x 2 x i1> @i32cmp_ugt_scalable_one() { 95; CHECK-LABEL: @i32cmp_ugt_scalable_one( 96; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 97; 98 %res = icmp ugt <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer) 99 ret <vscale x 2 x i1> %res 100} 101 102define <2 x i1> @i32cmp_uge_fixed_zero() { 103; CHECK-LABEL: @i32cmp_uge_fixed_zero( 104; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 105; 106 %res = icmp uge <2 x i32> zeroinitializer, zeroinitializer 107 ret <2 x i1> %res 108} 109 110define <vscale x 2 x i1> @i32cmp_uge_scalable_zero() { 111; CHECK-LABEL: @i32cmp_uge_scalable_zero( 112; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 113; 114 %res = icmp uge <vscale x 2 x i32> zeroinitializer, zeroinitializer 115 ret <vscale x 2 x i1> %res 116} 117 118define <2 x i1> @i32cmp_uge_fixed_one() { 119; CHECK-LABEL: @i32cmp_uge_fixed_one( 120; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 121; 122 %res = icmp uge <2 x i32> <i32 1, i32 1>, <i32 1, i32 1> 123 ret <2 x i1> %res 124} 125 126define <vscale x 2 x i1> @i32cmp_uge_scalable_one() { 127; CHECK-LABEL: @i32cmp_uge_scalable_one( 128; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 129; 130 %res = icmp uge <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer) 131 ret <vscale x 2 x i1> %res 132} 133 134define <2 x i1> @i32cmp_ult_fixed_zero() { 135; CHECK-LABEL: @i32cmp_ult_fixed_zero( 136; CHECK-NEXT: ret <2 x i1> zeroinitializer 137; 138 %res = icmp ult <2 x i32> zeroinitializer, zeroinitializer 139 ret <2 x i1> %res 140} 141 142define <vscale x 2 x i1> @i32cmp_ult_scalable_zero() { 143; CHECK-LABEL: @i32cmp_ult_scalable_zero( 144; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 145; 146 %res = icmp ult <vscale x 2 x i32> zeroinitializer, zeroinitializer 147 ret <vscale x 2 x i1> %res 148} 149 150define <2 x i1> @i32cmp_ult_fixed_one() { 151; CHECK-LABEL: @i32cmp_ult_fixed_one( 152; CHECK-NEXT: ret <2 x i1> zeroinitializer 153; 154 %res = icmp ult <2 x i32> <i32 1, i32 1>, <i32 1, i32 1> 155 ret <2 x i1> %res 156} 157 158define <vscale x 2 x i1> @i32cmp_ult_scalable_one() { 159; CHECK-LABEL: @i32cmp_ult_scalable_one( 160; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 161; 162 %res = icmp ult <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer) 163 ret <vscale x 2 x i1> %res 164} 165 166define <2 x i1> @i32cmp_ule_fixed_zero() { 167; CHECK-LABEL: @i32cmp_ule_fixed_zero( 168; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 169; 170 %res = icmp ule <2 x i32> zeroinitializer, zeroinitializer 171 ret <2 x i1> %res 172} 173 174define <vscale x 2 x i1> @i32cmp_ule_scalable_zero() { 175; CHECK-LABEL: @i32cmp_ule_scalable_zero( 176; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 177; 178 %res = icmp ule <vscale x 2 x i32> zeroinitializer, zeroinitializer 179 ret <vscale x 2 x i1> %res 180} 181 182define <2 x i1> @i32cmp_ule_fixed_one() { 183; CHECK-LABEL: @i32cmp_ule_fixed_one( 184; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 185; 186 %res = icmp ule <2 x i32> <i32 1, i32 1>, <i32 1, i32 1> 187 ret <2 x i1> %res 188} 189 190define <vscale x 2 x i1> @i32cmp_ule_scalable_one() { 191; CHECK-LABEL: @i32cmp_ule_scalable_one( 192; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 193; 194 %res = icmp ule <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer) 195 ret <vscale x 2 x i1> %res 196} 197 198define <2 x i1> @i32cmp_sgt_fixed_zero() { 199; CHECK-LABEL: @i32cmp_sgt_fixed_zero( 200; CHECK-NEXT: ret <2 x i1> zeroinitializer 201; 202 %res = icmp sgt <2 x i32> zeroinitializer, zeroinitializer 203 ret <2 x i1> %res 204} 205 206define <vscale x 2 x i1> @i32cmp_sgt_scalable_zero() { 207; CHECK-LABEL: @i32cmp_sgt_scalable_zero( 208; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 209; 210 %res = icmp sgt <vscale x 2 x i32> zeroinitializer, zeroinitializer 211 ret <vscale x 2 x i1> %res 212} 213 214define <2 x i1> @i32cmp_sgt_fixed_one() { 215; CHECK-LABEL: @i32cmp_sgt_fixed_one( 216; CHECK-NEXT: ret <2 x i1> zeroinitializer 217; 218 %res = icmp sgt <2 x i32> <i32 1, i32 1>, <i32 1, i32 1> 219 ret <2 x i1> %res 220} 221 222define <vscale x 2 x i1> @i32cmp_sgt_scalable_one() { 223; CHECK-LABEL: @i32cmp_sgt_scalable_one( 224; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 225; 226 %res = icmp sgt <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer) 227 ret <vscale x 2 x i1> %res 228} 229 230define <2 x i1> @i32cmp_sge_fixed_zero() { 231; CHECK-LABEL: @i32cmp_sge_fixed_zero( 232; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 233; 234 %res = icmp sge <2 x i32> zeroinitializer, zeroinitializer 235 ret <2 x i1> %res 236} 237 238define <vscale x 2 x i1> @i32cmp_sge_scalable_zero() { 239; CHECK-LABEL: @i32cmp_sge_scalable_zero( 240; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 241; 242 %res = icmp sge <vscale x 2 x i32> zeroinitializer, zeroinitializer 243 ret <vscale x 2 x i1> %res 244} 245 246define <2 x i1> @i32cmp_sge_fixed_one() { 247; CHECK-LABEL: @i32cmp_sge_fixed_one( 248; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 249; 250 %res = icmp sge <2 x i32> <i32 1, i32 1>, <i32 1, i32 1> 251 ret <2 x i1> %res 252} 253 254define <vscale x 2 x i1> @i32cmp_sge_scalable_one() { 255; CHECK-LABEL: @i32cmp_sge_scalable_one( 256; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 257; 258 %res = icmp sge <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer) 259 ret <vscale x 2 x i1> %res 260} 261 262define <2 x i1> @i32cmp_slt_fixed_zero() { 263; CHECK-LABEL: @i32cmp_slt_fixed_zero( 264; CHECK-NEXT: ret <2 x i1> zeroinitializer 265; 266 %res = icmp slt <2 x i32> zeroinitializer, zeroinitializer 267 ret <2 x i1> %res 268} 269 270define <vscale x 2 x i1> @i32cmp_slt_scalable_zero() { 271; CHECK-LABEL: @i32cmp_slt_scalable_zero( 272; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 273; 274 %res = icmp slt <vscale x 2 x i32> zeroinitializer, zeroinitializer 275 ret <vscale x 2 x i1> %res 276} 277 278define <2 x i1> @i32cmp_slt_fixed_one() { 279; CHECK-LABEL: @i32cmp_slt_fixed_one( 280; CHECK-NEXT: ret <2 x i1> zeroinitializer 281; 282 %res = icmp slt <2 x i32> <i32 1, i32 1>, <i32 1, i32 1> 283 ret <2 x i1> %res 284} 285 286define <vscale x 2 x i1> @i32cmp_slt_scalable_one() { 287; CHECK-LABEL: @i32cmp_slt_scalable_one( 288; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 289; 290 %res = icmp slt <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer) 291 ret <vscale x 2 x i1> %res 292} 293 294define <2 x i1> @i32cmp_sle_fixed_zero() { 295; CHECK-LABEL: @i32cmp_sle_fixed_zero( 296; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 297; 298 %res = icmp sle <2 x i32> zeroinitializer, zeroinitializer 299 ret <2 x i1> %res 300} 301 302define <vscale x 2 x i1> @i32cmp_sle_scalable_zero() { 303; CHECK-LABEL: @i32cmp_sle_scalable_zero( 304; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 305; 306 %res = icmp sle <vscale x 2 x i32> zeroinitializer, zeroinitializer 307 ret <vscale x 2 x i1> %res 308} 309 310define <2 x i1> @i32cmp_sle_fixed_one() { 311; CHECK-LABEL: @i32cmp_sle_fixed_one( 312; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 313; 314 %res = icmp sle <2 x i32> <i32 1, i32 1>, <i32 1, i32 1> 315 ret <2 x i1> %res 316} 317 318define <vscale x 2 x i1> @i32cmp_sle_scalable_one() { 319; CHECK-LABEL: @i32cmp_sle_scalable_one( 320; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 321; 322 %res = icmp sle <vscale x 2 x i32> shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x i32> insertelement (<vscale x 2 x i32> undef, i32 1, i32 0), <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer) 323 ret <vscale x 2 x i1> %res 324} 325 326define <2 x i1> @floatcmp_false_fixed_zero() { 327; CHECK-LABEL: @floatcmp_false_fixed_zero( 328; CHECK-NEXT: ret <2 x i1> zeroinitializer 329; 330 %res = fcmp false <2 x float> zeroinitializer, zeroinitializer 331 ret <2 x i1> %res 332} 333 334define <vscale x 2 x i1> @floatcmp_false_scalable_zero() { 335; CHECK-LABEL: @floatcmp_false_scalable_zero( 336; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 337; 338 %res = fcmp false <vscale x 2 x float> zeroinitializer, zeroinitializer 339 ret <vscale x 2 x i1> %res 340} 341 342define <2 x i1> @floatcmp_false_fixed_one() { 343; CHECK-LABEL: @floatcmp_false_fixed_one( 344; CHECK-NEXT: ret <2 x i1> zeroinitializer 345; 346 %res = fcmp false <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 347 ret <2 x i1> %res 348} 349 350define <vscale x 2 x i1> @floatcmp_false_scalable_one() { 351; CHECK-LABEL: @floatcmp_false_scalable_one( 352; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 353; 354 %res = fcmp false <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 355 ret <vscale x 2 x i1> %res 356} 357 358define <2 x i1> @floatcmp_oeq_fixed_zero() { 359; CHECK-LABEL: @floatcmp_oeq_fixed_zero( 360; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 361; 362 %res = fcmp oeq <2 x float> zeroinitializer, zeroinitializer 363 ret <2 x i1> %res 364} 365 366define <vscale x 2 x i1> @floatcmp_oeq_scalable_zero() { 367; CHECK-LABEL: @floatcmp_oeq_scalable_zero( 368; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 369; 370 %res = fcmp oeq <vscale x 2 x float> zeroinitializer, zeroinitializer 371 ret <vscale x 2 x i1> %res 372} 373 374define <2 x i1> @floatcmp_oeq_fixed_one() { 375; CHECK-LABEL: @floatcmp_oeq_fixed_one( 376; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 377; 378 %res = fcmp oeq <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 379 ret <2 x i1> %res 380} 381 382define <vscale x 2 x i1> @floatcmp_oeq_scalable_one() { 383; CHECK-LABEL: @floatcmp_oeq_scalable_one( 384; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 385; 386 %res = fcmp oeq <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 387 ret <vscale x 2 x i1> %res 388} 389 390define <2 x i1> @floatcmp_ogt_fixed_zero() { 391; CHECK-LABEL: @floatcmp_ogt_fixed_zero( 392; CHECK-NEXT: ret <2 x i1> zeroinitializer 393; 394 %res = fcmp ogt <2 x float> zeroinitializer, zeroinitializer 395 ret <2 x i1> %res 396} 397 398define <vscale x 2 x i1> @floatcmp_ogt_scalable_zero() { 399; CHECK-LABEL: @floatcmp_ogt_scalable_zero( 400; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 401; 402 %res = fcmp ogt <vscale x 2 x float> zeroinitializer, zeroinitializer 403 ret <vscale x 2 x i1> %res 404} 405 406define <2 x i1> @floatcmp_ogt_fixed_one() { 407; CHECK-LABEL: @floatcmp_ogt_fixed_one( 408; CHECK-NEXT: ret <2 x i1> zeroinitializer 409; 410 %res = fcmp ogt <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 411 ret <2 x i1> %res 412} 413 414define <vscale x 2 x i1> @floatcmp_ogt_scalable_one() { 415; CHECK-LABEL: @floatcmp_ogt_scalable_one( 416; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 417; 418 %res = fcmp ogt <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 419 ret <vscale x 2 x i1> %res 420} 421 422define <2 x i1> @floatcmp_oge_fixed_zero() { 423; CHECK-LABEL: @floatcmp_oge_fixed_zero( 424; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 425; 426 %res = fcmp oge <2 x float> zeroinitializer, zeroinitializer 427 ret <2 x i1> %res 428} 429 430define <vscale x 2 x i1> @floatcmp_oge_scalable_zero() { 431; CHECK-LABEL: @floatcmp_oge_scalable_zero( 432; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 433; 434 %res = fcmp oge <vscale x 2 x float> zeroinitializer, zeroinitializer 435 ret <vscale x 2 x i1> %res 436} 437 438define <2 x i1> @floatcmp_oge_fixed_one() { 439; CHECK-LABEL: @floatcmp_oge_fixed_one( 440; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 441; 442 %res = fcmp oge <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 443 ret <2 x i1> %res 444} 445 446define <vscale x 2 x i1> @floatcmp_oge_scalable_one() { 447; CHECK-LABEL: @floatcmp_oge_scalable_one( 448; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 449; 450 %res = fcmp oge <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 451 ret <vscale x 2 x i1> %res 452} 453 454define <2 x i1> @floatcmp_olt_fixed_zero() { 455; CHECK-LABEL: @floatcmp_olt_fixed_zero( 456; CHECK-NEXT: ret <2 x i1> zeroinitializer 457; 458 %res = fcmp olt <2 x float> zeroinitializer, zeroinitializer 459 ret <2 x i1> %res 460} 461 462define <vscale x 2 x i1> @floatcmp_olt_scalable_zero() { 463; CHECK-LABEL: @floatcmp_olt_scalable_zero( 464; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 465; 466 %res = fcmp olt <vscale x 2 x float> zeroinitializer, zeroinitializer 467 ret <vscale x 2 x i1> %res 468} 469 470define <2 x i1> @floatcmp_olt_fixed_one() { 471; CHECK-LABEL: @floatcmp_olt_fixed_one( 472; CHECK-NEXT: ret <2 x i1> zeroinitializer 473; 474 %res = fcmp olt <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 475 ret <2 x i1> %res 476} 477 478define <vscale x 2 x i1> @floatcmp_olt_scalable_one() { 479; CHECK-LABEL: @floatcmp_olt_scalable_one( 480; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 481; 482 %res = fcmp olt <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 483 ret <vscale x 2 x i1> %res 484} 485 486define <2 x i1> @floatcmp_ole_fixed_zero() { 487; CHECK-LABEL: @floatcmp_ole_fixed_zero( 488; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 489; 490 %res = fcmp ole <2 x float> zeroinitializer, zeroinitializer 491 ret <2 x i1> %res 492} 493 494define <vscale x 2 x i1> @floatcmp_ole_scalable_zero() { 495; CHECK-LABEL: @floatcmp_ole_scalable_zero( 496; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 497; 498 %res = fcmp ole <vscale x 2 x float> zeroinitializer, zeroinitializer 499 ret <vscale x 2 x i1> %res 500} 501 502define <2 x i1> @floatcmp_ole_fixed_one() { 503; CHECK-LABEL: @floatcmp_ole_fixed_one( 504; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 505; 506 %res = fcmp ole <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 507 ret <2 x i1> %res 508} 509 510define <vscale x 2 x i1> @floatcmp_ole_scalable_one() { 511; CHECK-LABEL: @floatcmp_ole_scalable_one( 512; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 513; 514 %res = fcmp ole <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 515 ret <vscale x 2 x i1> %res 516} 517 518define <2 x i1> @floatcmp_one_fixed_zero() { 519; CHECK-LABEL: @floatcmp_one_fixed_zero( 520; CHECK-NEXT: ret <2 x i1> zeroinitializer 521; 522 %res = fcmp one <2 x float> zeroinitializer, zeroinitializer 523 ret <2 x i1> %res 524} 525 526define <vscale x 2 x i1> @floatcmp_one_scalable_zero() { 527; CHECK-LABEL: @floatcmp_one_scalable_zero( 528; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 529; 530 %res = fcmp one <vscale x 2 x float> zeroinitializer, zeroinitializer 531 ret <vscale x 2 x i1> %res 532} 533 534define <2 x i1> @floatcmp_one_fixed_one() { 535; CHECK-LABEL: @floatcmp_one_fixed_one( 536; CHECK-NEXT: ret <2 x i1> zeroinitializer 537; 538 %res = fcmp one <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 539 ret <2 x i1> %res 540} 541 542define <vscale x 2 x i1> @floatcmp_one_scalable_one() { 543; CHECK-LABEL: @floatcmp_one_scalable_one( 544; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 545; 546 %res = fcmp one <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 547 ret <vscale x 2 x i1> %res 548} 549 550define <2 x i1> @floatcmp_ord_fixed_zero() { 551; CHECK-LABEL: @floatcmp_ord_fixed_zero( 552; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 553; 554 %res = fcmp ord <2 x float> zeroinitializer, zeroinitializer 555 ret <2 x i1> %res 556} 557 558define <vscale x 2 x i1> @floatcmp_ord_scalable_zero() { 559; CHECK-LABEL: @floatcmp_ord_scalable_zero( 560; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 561; 562 %res = fcmp ord <vscale x 2 x float> zeroinitializer, zeroinitializer 563 ret <vscale x 2 x i1> %res 564} 565 566define <2 x i1> @floatcmp_ord_fixed_one() { 567; CHECK-LABEL: @floatcmp_ord_fixed_one( 568; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 569; 570 %res = fcmp ord <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 571 ret <2 x i1> %res 572} 573 574define <vscale x 2 x i1> @floatcmp_ord_scalable_one() { 575; CHECK-LABEL: @floatcmp_ord_scalable_one( 576; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 577; 578 %res = fcmp ord <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 579 ret <vscale x 2 x i1> %res 580} 581 582define <2 x i1> @floatcmp_ueq_fixed_zero() { 583; CHECK-LABEL: @floatcmp_ueq_fixed_zero( 584; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 585; 586 %res = fcmp ueq <2 x float> zeroinitializer, zeroinitializer 587 ret <2 x i1> %res 588} 589 590define <vscale x 2 x i1> @floatcmp_ueq_scalable_zero() { 591; CHECK-LABEL: @floatcmp_ueq_scalable_zero( 592; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 593; 594 %res = fcmp ueq <vscale x 2 x float> zeroinitializer, zeroinitializer 595 ret <vscale x 2 x i1> %res 596} 597 598define <2 x i1> @floatcmp_ueq_fixed_one() { 599; CHECK-LABEL: @floatcmp_ueq_fixed_one( 600; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 601; 602 %res = fcmp ueq <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 603 ret <2 x i1> %res 604} 605 606define <vscale x 2 x i1> @floatcmp_ueq_scalable_one() { 607; CHECK-LABEL: @floatcmp_ueq_scalable_one( 608; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 609; 610 %res = fcmp ueq <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 611 ret <vscale x 2 x i1> %res 612} 613 614define <2 x i1> @floatcmp_ugt_fixed_zero() { 615; CHECK-LABEL: @floatcmp_ugt_fixed_zero( 616; CHECK-NEXT: ret <2 x i1> zeroinitializer 617; 618 %res = fcmp ugt <2 x float> zeroinitializer, zeroinitializer 619 ret <2 x i1> %res 620} 621 622define <vscale x 2 x i1> @floatcmp_ugt_scalable_zero() { 623; CHECK-LABEL: @floatcmp_ugt_scalable_zero( 624; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 625; 626 %res = fcmp ugt <vscale x 2 x float> zeroinitializer, zeroinitializer 627 ret <vscale x 2 x i1> %res 628} 629 630define <2 x i1> @floatcmp_ugt_fixed_one() { 631; CHECK-LABEL: @floatcmp_ugt_fixed_one( 632; CHECK-NEXT: ret <2 x i1> zeroinitializer 633; 634 %res = fcmp ugt <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 635 ret <2 x i1> %res 636} 637 638define <vscale x 2 x i1> @floatcmp_ugt_scalable_one() { 639; CHECK-LABEL: @floatcmp_ugt_scalable_one( 640; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 641; 642 %res = fcmp ugt <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 643 ret <vscale x 2 x i1> %res 644} 645 646define <2 x i1> @floatcmp_uge_fixed_zero() { 647; CHECK-LABEL: @floatcmp_uge_fixed_zero( 648; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 649; 650 %res = fcmp uge <2 x float> zeroinitializer, zeroinitializer 651 ret <2 x i1> %res 652} 653 654define <vscale x 2 x i1> @floatcmp_uge_scalable_zero() { 655; CHECK-LABEL: @floatcmp_uge_scalable_zero( 656; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 657; 658 %res = fcmp uge <vscale x 2 x float> zeroinitializer, zeroinitializer 659 ret <vscale x 2 x i1> %res 660} 661 662define <2 x i1> @floatcmp_uge_fixed_one() { 663; CHECK-LABEL: @floatcmp_uge_fixed_one( 664; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 665; 666 %res = fcmp uge <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 667 ret <2 x i1> %res 668} 669 670define <vscale x 2 x i1> @floatcmp_uge_scalable_one() { 671; CHECK-LABEL: @floatcmp_uge_scalable_one( 672; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 673; 674 %res = fcmp uge <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 675 ret <vscale x 2 x i1> %res 676} 677 678define <2 x i1> @floatcmp_ult_fixed_zero() { 679; CHECK-LABEL: @floatcmp_ult_fixed_zero( 680; CHECK-NEXT: ret <2 x i1> zeroinitializer 681; 682 %res = fcmp ult <2 x float> zeroinitializer, zeroinitializer 683 ret <2 x i1> %res 684} 685 686define <vscale x 2 x i1> @floatcmp_ult_scalable_zero() { 687; CHECK-LABEL: @floatcmp_ult_scalable_zero( 688; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 689; 690 %res = fcmp ult <vscale x 2 x float> zeroinitializer, zeroinitializer 691 ret <vscale x 2 x i1> %res 692} 693 694define <2 x i1> @floatcmp_ult_fixed_one() { 695; CHECK-LABEL: @floatcmp_ult_fixed_one( 696; CHECK-NEXT: ret <2 x i1> zeroinitializer 697; 698 %res = fcmp ult <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 699 ret <2 x i1> %res 700} 701 702define <vscale x 2 x i1> @floatcmp_ult_scalable_one() { 703; CHECK-LABEL: @floatcmp_ult_scalable_one( 704; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 705; 706 %res = fcmp ult <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 707 ret <vscale x 2 x i1> %res 708} 709 710define <2 x i1> @floatcmp_ule_fixed_zero() { 711; CHECK-LABEL: @floatcmp_ule_fixed_zero( 712; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 713; 714 %res = fcmp ule <2 x float> zeroinitializer, zeroinitializer 715 ret <2 x i1> %res 716} 717 718define <vscale x 2 x i1> @floatcmp_ule_scalable_zero() { 719; CHECK-LABEL: @floatcmp_ule_scalable_zero( 720; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 721; 722 %res = fcmp ule <vscale x 2 x float> zeroinitializer, zeroinitializer 723 ret <vscale x 2 x i1> %res 724} 725 726define <2 x i1> @floatcmp_ule_fixed_one() { 727; CHECK-LABEL: @floatcmp_ule_fixed_one( 728; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 729; 730 %res = fcmp ule <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 731 ret <2 x i1> %res 732} 733 734define <vscale x 2 x i1> @floatcmp_ule_scalable_one() { 735; CHECK-LABEL: @floatcmp_ule_scalable_one( 736; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 737; 738 %res = fcmp ule <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 739 ret <vscale x 2 x i1> %res 740} 741 742define <2 x i1> @floatcmp_une_fixed_zero() { 743; CHECK-LABEL: @floatcmp_une_fixed_zero( 744; CHECK-NEXT: ret <2 x i1> zeroinitializer 745; 746 %res = fcmp une <2 x float> zeroinitializer, zeroinitializer 747 ret <2 x i1> %res 748} 749 750define <vscale x 2 x i1> @floatcmp_une_scalable_zero() { 751; CHECK-LABEL: @floatcmp_une_scalable_zero( 752; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 753; 754 %res = fcmp une <vscale x 2 x float> zeroinitializer, zeroinitializer 755 ret <vscale x 2 x i1> %res 756} 757 758define <2 x i1> @floatcmp_une_fixed_one() { 759; CHECK-LABEL: @floatcmp_une_fixed_one( 760; CHECK-NEXT: ret <2 x i1> zeroinitializer 761; 762 %res = fcmp une <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 763 ret <2 x i1> %res 764} 765 766define <vscale x 2 x i1> @floatcmp_une_scalable_one() { 767; CHECK-LABEL: @floatcmp_une_scalable_one( 768; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 769; 770 %res = fcmp une <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 771 ret <vscale x 2 x i1> %res 772} 773 774define <2 x i1> @floatcmp_uno_fixed_zero() { 775; CHECK-LABEL: @floatcmp_uno_fixed_zero( 776; CHECK-NEXT: ret <2 x i1> zeroinitializer 777; 778 %res = fcmp uno <2 x float> zeroinitializer, zeroinitializer 779 ret <2 x i1> %res 780} 781 782define <vscale x 2 x i1> @floatcmp_uno_scalable_zero() { 783; CHECK-LABEL: @floatcmp_uno_scalable_zero( 784; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 785; 786 %res = fcmp uno <vscale x 2 x float> zeroinitializer, zeroinitializer 787 ret <vscale x 2 x i1> %res 788} 789 790define <2 x i1> @floatcmp_uno_fixed_one() { 791; CHECK-LABEL: @floatcmp_uno_fixed_one( 792; CHECK-NEXT: ret <2 x i1> zeroinitializer 793; 794 %res = fcmp uno <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 795 ret <2 x i1> %res 796} 797 798define <vscale x 2 x i1> @floatcmp_uno_scalable_one() { 799; CHECK-LABEL: @floatcmp_uno_scalable_one( 800; CHECK-NEXT: ret <vscale x 2 x i1> zeroinitializer 801; 802 %res = fcmp uno <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 803 ret <vscale x 2 x i1> %res 804} 805 806define <2 x i1> @floatcmp_true_fixed_zero() { 807; CHECK-LABEL: @floatcmp_true_fixed_zero( 808; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 809; 810 %res = fcmp true <2 x float> zeroinitializer, zeroinitializer 811 ret <2 x i1> %res 812} 813 814define <vscale x 2 x i1> @floatcmp_true_scalable_zero() { 815; CHECK-LABEL: @floatcmp_true_scalable_zero( 816; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 817; 818 %res = fcmp true <vscale x 2 x float> zeroinitializer, zeroinitializer 819 ret <vscale x 2 x i1> %res 820} 821 822define <2 x i1> @floatcmp_true_fixed_one() { 823; CHECK-LABEL: @floatcmp_true_fixed_one( 824; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> 825; 826 %res = fcmp true <2 x float> <float 1.0, float 1.0>, <float 1.0, float 1.0> 827 ret <2 x i1> %res 828} 829 830define <vscale x 2 x i1> @floatcmp_true_scalable_one() { 831; CHECK-LABEL: @floatcmp_true_scalable_one( 832; CHECK-NEXT: ret <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> undef, i1 true, i32 0), <vscale x 2 x i1> undef, <vscale x 2 x i32> zeroinitializer) 833; 834 %res = fcmp true <vscale x 2 x float> shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer), shufflevector (<vscale x 2 x float> insertelement (<vscale x 2 x float> undef, float 1.0, i32 0), <vscale x 2 x float> undef, <vscale x 2 x i32> zeroinitializer) 835 ret <vscale x 2 x i1> %res 836} 837 838