1; Test if we can read compare instructions. 2 3; RUN: %p2i -i %s --insts | FileCheck %s 4; RUN: %p2i -i %s --args -notranslate -timing | \ 5; RUN: FileCheck --check-prefix=NOIR %s 6 7define internal void @IcmpI1(i32 %p1, i32 %p2) { 8entry: 9 %a1 = trunc i32 %p1 to i1 10 %a2 = trunc i32 %p2 to i1 11 %veq = icmp eq i1 %a1, %a2 12 %vne = icmp ne i1 %a1, %a2 13 %vugt = icmp ugt i1 %a1, %a2 14 %vuge = icmp uge i1 %a1, %a2 15 %vult = icmp ult i1 %a1, %a2 16 %vule = icmp ule i1 %a1, %a2 17 %vsgt = icmp sgt i1 %a1, %a2 18 %vsge = icmp sge i1 %a1, %a2 19 %vslt = icmp slt i1 %a1, %a2 20 %vsle = icmp sle i1 %a1, %a2 21 ret void 22} 23 24; CHECK: define internal void @IcmpI1(i32 %p1, i32 %p2) { 25; CHECK-NEXT: entry: 26; CHECK-NEXT: %a1 = trunc i32 %p1 to i1 27; CHECK-NEXT: %a2 = trunc i32 %p2 to i1 28; CHECK-NEXT: %veq = icmp eq i1 %a1, %a2 29; CHECK-NEXT: %vne = icmp ne i1 %a1, %a2 30; CHECK-NEXT: %vugt = icmp ugt i1 %a1, %a2 31; CHECK-NEXT: %vuge = icmp uge i1 %a1, %a2 32; CHECK-NEXT: %vult = icmp ult i1 %a1, %a2 33; CHECK-NEXT: %vule = icmp ule i1 %a1, %a2 34; CHECK-NEXT: %vsgt = icmp sgt i1 %a1, %a2 35; CHECK-NEXT: %vsge = icmp sge i1 %a1, %a2 36; CHECK-NEXT: %vslt = icmp slt i1 %a1, %a2 37; CHECK-NEXT: %vsle = icmp sle i1 %a1, %a2 38; CHECK-NEXT: ret void 39; CHECK-NEXT: } 40 41define internal void @IcmpI8(i32 %p1, i32 %p2) { 42entry: 43 %a1 = trunc i32 %p1 to i8 44 %a2 = trunc i32 %p2 to i8 45 %veq = icmp eq i8 %a1, %a2 46 %vne = icmp ne i8 %a1, %a2 47 %vugt = icmp ugt i8 %a1, %a2 48 %vuge = icmp uge i8 %a1, %a2 49 %vult = icmp ult i8 %a1, %a2 50 %vule = icmp ule i8 %a1, %a2 51 %vsgt = icmp sgt i8 %a1, %a2 52 %vsge = icmp sge i8 %a1, %a2 53 %vslt = icmp slt i8 %a1, %a2 54 %vsle = icmp sle i8 %a1, %a2 55 ret void 56} 57 58; CHECK-NEXT: define internal void @IcmpI8(i32 %p1, i32 %p2) { 59; CHECK-NEXT: entry: 60; CHECK-NEXT: %a1 = trunc i32 %p1 to i8 61; CHECK-NEXT: %a2 = trunc i32 %p2 to i8 62; CHECK-NEXT: %veq = icmp eq i8 %a1, %a2 63; CHECK-NEXT: %vne = icmp ne i8 %a1, %a2 64; CHECK-NEXT: %vugt = icmp ugt i8 %a1, %a2 65; CHECK-NEXT: %vuge = icmp uge i8 %a1, %a2 66; CHECK-NEXT: %vult = icmp ult i8 %a1, %a2 67; CHECK-NEXT: %vule = icmp ule i8 %a1, %a2 68; CHECK-NEXT: %vsgt = icmp sgt i8 %a1, %a2 69; CHECK-NEXT: %vsge = icmp sge i8 %a1, %a2 70; CHECK-NEXT: %vslt = icmp slt i8 %a1, %a2 71; CHECK-NEXT: %vsle = icmp sle i8 %a1, %a2 72; CHECK-NEXT: ret void 73; CHECK-NEXT: } 74 75define internal void @IcmpI16(i32 %p1, i32 %p2) { 76entry: 77 %a1 = trunc i32 %p1 to i16 78 %a2 = trunc i32 %p2 to i16 79 %veq = icmp eq i16 %a1, %a2 80 %vne = icmp ne i16 %a1, %a2 81 %vugt = icmp ugt i16 %a1, %a2 82 %vuge = icmp uge i16 %a1, %a2 83 %vult = icmp ult i16 %a1, %a2 84 %vule = icmp ule i16 %a1, %a2 85 %vsgt = icmp sgt i16 %a1, %a2 86 %vsge = icmp sge i16 %a1, %a2 87 %vslt = icmp slt i16 %a1, %a2 88 %vsle = icmp sle i16 %a1, %a2 89 ret void 90} 91 92; CHECK-NEXT: define internal void @IcmpI16(i32 %p1, i32 %p2) { 93; CHECK-NEXT: entry: 94; CHECK-NEXT: %a1 = trunc i32 %p1 to i16 95; CHECK-NEXT: %a2 = trunc i32 %p2 to i16 96; CHECK-NEXT: %veq = icmp eq i16 %a1, %a2 97; CHECK-NEXT: %vne = icmp ne i16 %a1, %a2 98; CHECK-NEXT: %vugt = icmp ugt i16 %a1, %a2 99; CHECK-NEXT: %vuge = icmp uge i16 %a1, %a2 100; CHECK-NEXT: %vult = icmp ult i16 %a1, %a2 101; CHECK-NEXT: %vule = icmp ule i16 %a1, %a2 102; CHECK-NEXT: %vsgt = icmp sgt i16 %a1, %a2 103; CHECK-NEXT: %vsge = icmp sge i16 %a1, %a2 104; CHECK-NEXT: %vslt = icmp slt i16 %a1, %a2 105; CHECK-NEXT: %vsle = icmp sle i16 %a1, %a2 106; CHECK-NEXT: ret void 107; CHECK-NEXT: } 108 109define internal void @IcmpI32(i32 %a1, i32 %a2) { 110entry: 111 %veq = icmp eq i32 %a1, %a2 112 %vne = icmp ne i32 %a1, %a2 113 %vugt = icmp ugt i32 %a1, %a2 114 %vuge = icmp uge i32 %a1, %a2 115 %vult = icmp ult i32 %a1, %a2 116 %vule = icmp ule i32 %a1, %a2 117 %vsgt = icmp sgt i32 %a1, %a2 118 %vsge = icmp sge i32 %a1, %a2 119 %vslt = icmp slt i32 %a1, %a2 120 %vsle = icmp sle i32 %a1, %a2 121 ret void 122} 123 124; CHECK-NEXT: define internal void @IcmpI32(i32 %a1, i32 %a2) { 125; CHECK-NEXT: entry: 126; CHECK-NEXT: %veq = icmp eq i32 %a1, %a2 127; CHECK-NEXT: %vne = icmp ne i32 %a1, %a2 128; CHECK-NEXT: %vugt = icmp ugt i32 %a1, %a2 129; CHECK-NEXT: %vuge = icmp uge i32 %a1, %a2 130; CHECK-NEXT: %vult = icmp ult i32 %a1, %a2 131; CHECK-NEXT: %vule = icmp ule i32 %a1, %a2 132; CHECK-NEXT: %vsgt = icmp sgt i32 %a1, %a2 133; CHECK-NEXT: %vsge = icmp sge i32 %a1, %a2 134; CHECK-NEXT: %vslt = icmp slt i32 %a1, %a2 135; CHECK-NEXT: %vsle = icmp sle i32 %a1, %a2 136; CHECK-NEXT: ret void 137; CHECK-NEXT: } 138 139define internal void @IcmpI64(i64 %a1, i64 %a2) { 140entry: 141 %veq = icmp eq i64 %a1, %a2 142 %vne = icmp ne i64 %a1, %a2 143 %vugt = icmp ugt i64 %a1, %a2 144 %vuge = icmp uge i64 %a1, %a2 145 %vult = icmp ult i64 %a1, %a2 146 %vule = icmp ule i64 %a1, %a2 147 %vsgt = icmp sgt i64 %a1, %a2 148 %vsge = icmp sge i64 %a1, %a2 149 %vslt = icmp slt i64 %a1, %a2 150 %vsle = icmp sle i64 %a1, %a2 151 ret void 152} 153 154; CHECK-NEXT: define internal void @IcmpI64(i64 %a1, i64 %a2) { 155; CHECK-NEXT: entry: 156; CHECK-NEXT: %veq = icmp eq i64 %a1, %a2 157; CHECK-NEXT: %vne = icmp ne i64 %a1, %a2 158; CHECK-NEXT: %vugt = icmp ugt i64 %a1, %a2 159; CHECK-NEXT: %vuge = icmp uge i64 %a1, %a2 160; CHECK-NEXT: %vult = icmp ult i64 %a1, %a2 161; CHECK-NEXT: %vule = icmp ule i64 %a1, %a2 162; CHECK-NEXT: %vsgt = icmp sgt i64 %a1, %a2 163; CHECK-NEXT: %vsge = icmp sge i64 %a1, %a2 164; CHECK-NEXT: %vslt = icmp slt i64 %a1, %a2 165; CHECK-NEXT: %vsle = icmp sle i64 %a1, %a2 166; CHECK-NEXT: ret void 167; CHECK-NEXT: } 168 169define internal <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) { 170entry: 171 %veq = icmp eq <4 x i1> %a1, %a2 172 %vne = icmp ne <4 x i1> %a1, %a2 173 %vugt = icmp ugt <4 x i1> %a1, %a2 174 %vuge = icmp uge <4 x i1> %a1, %a2 175 %vult = icmp ult <4 x i1> %a1, %a2 176 %vule = icmp ule <4 x i1> %a1, %a2 177 %vsgt = icmp sgt <4 x i1> %a1, %a2 178 %vsge = icmp sge <4 x i1> %a1, %a2 179 %vslt = icmp slt <4 x i1> %a1, %a2 180 %vsle = icmp sle <4 x i1> %a1, %a2 181 ret <4 x i1> %veq 182} 183 184; CHECK-NEXT: define internal <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) { 185; CHECK-NEXT: entry: 186; CHECK-NEXT: %veq = icmp eq <4 x i1> %a1, %a2 187; CHECK-NEXT: %vne = icmp ne <4 x i1> %a1, %a2 188; CHECK-NEXT: %vugt = icmp ugt <4 x i1> %a1, %a2 189; CHECK-NEXT: %vuge = icmp uge <4 x i1> %a1, %a2 190; CHECK-NEXT: %vult = icmp ult <4 x i1> %a1, %a2 191; CHECK-NEXT: %vule = icmp ule <4 x i1> %a1, %a2 192; CHECK-NEXT: %vsgt = icmp sgt <4 x i1> %a1, %a2 193; CHECK-NEXT: %vsge = icmp sge <4 x i1> %a1, %a2 194; CHECK-NEXT: %vslt = icmp slt <4 x i1> %a1, %a2 195; CHECK-NEXT: %vsle = icmp sle <4 x i1> %a1, %a2 196; CHECK-NEXT: ret <4 x i1> %veq 197; CHECK-NEXT: } 198 199define internal <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) { 200entry: 201 %veq = icmp eq <8 x i1> %a1, %a2 202 %vne = icmp ne <8 x i1> %a1, %a2 203 %vugt = icmp ugt <8 x i1> %a1, %a2 204 %vuge = icmp uge <8 x i1> %a1, %a2 205 %vult = icmp ult <8 x i1> %a1, %a2 206 %vule = icmp ule <8 x i1> %a1, %a2 207 %vsgt = icmp sgt <8 x i1> %a1, %a2 208 %vsge = icmp sge <8 x i1> %a1, %a2 209 %vslt = icmp slt <8 x i1> %a1, %a2 210 %vsle = icmp sle <8 x i1> %a1, %a2 211 ret <8 x i1> %veq 212} 213 214; CHECK-NEXT: define internal <8 x i1> @IcmpV8xI1(<8 x i1> %a1, <8 x i1> %a2) { 215; CHECK-NEXT: entry: 216; CHECK-NEXT: %veq = icmp eq <8 x i1> %a1, %a2 217; CHECK-NEXT: %vne = icmp ne <8 x i1> %a1, %a2 218; CHECK-NEXT: %vugt = icmp ugt <8 x i1> %a1, %a2 219; CHECK-NEXT: %vuge = icmp uge <8 x i1> %a1, %a2 220; CHECK-NEXT: %vult = icmp ult <8 x i1> %a1, %a2 221; CHECK-NEXT: %vule = icmp ule <8 x i1> %a1, %a2 222; CHECK-NEXT: %vsgt = icmp sgt <8 x i1> %a1, %a2 223; CHECK-NEXT: %vsge = icmp sge <8 x i1> %a1, %a2 224; CHECK-NEXT: %vslt = icmp slt <8 x i1> %a1, %a2 225; CHECK-NEXT: %vsle = icmp sle <8 x i1> %a1, %a2 226; CHECK-NEXT: ret <8 x i1> %veq 227; CHECK-NEXT: } 228 229define internal <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2) { 230entry: 231 %veq = icmp eq <16 x i1> %a1, %a2 232 %vne = icmp ne <16 x i1> %a1, %a2 233 %vugt = icmp ugt <16 x i1> %a1, %a2 234 %vuge = icmp uge <16 x i1> %a1, %a2 235 %vult = icmp ult <16 x i1> %a1, %a2 236 %vule = icmp ule <16 x i1> %a1, %a2 237 %vsgt = icmp sgt <16 x i1> %a1, %a2 238 %vsge = icmp sge <16 x i1> %a1, %a2 239 %vslt = icmp slt <16 x i1> %a1, %a2 240 %vsle = icmp sle <16 x i1> %a1, %a2 241 ret <16 x i1> %veq 242} 243 244; CHECK-NEXT: define internal <16 x i1> @IcmpV16xI1(<16 x i1> %a1, <16 x i1> %a2) { 245; CHECK-NEXT: entry: 246; CHECK-NEXT: %veq = icmp eq <16 x i1> %a1, %a2 247; CHECK-NEXT: %vne = icmp ne <16 x i1> %a1, %a2 248; CHECK-NEXT: %vugt = icmp ugt <16 x i1> %a1, %a2 249; CHECK-NEXT: %vuge = icmp uge <16 x i1> %a1, %a2 250; CHECK-NEXT: %vult = icmp ult <16 x i1> %a1, %a2 251; CHECK-NEXT: %vule = icmp ule <16 x i1> %a1, %a2 252; CHECK-NEXT: %vsgt = icmp sgt <16 x i1> %a1, %a2 253; CHECK-NEXT: %vsge = icmp sge <16 x i1> %a1, %a2 254; CHECK-NEXT: %vslt = icmp slt <16 x i1> %a1, %a2 255; CHECK-NEXT: %vsle = icmp sle <16 x i1> %a1, %a2 256; CHECK-NEXT: ret <16 x i1> %veq 257; CHECK-NEXT: } 258 259define internal <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2) { 260entry: 261 %veq = icmp eq <16 x i8> %a1, %a2 262 %vne = icmp ne <16 x i8> %a1, %a2 263 %vugt = icmp ugt <16 x i8> %a1, %a2 264 %vuge = icmp uge <16 x i8> %a1, %a2 265 %vult = icmp ult <16 x i8> %a1, %a2 266 %vule = icmp ule <16 x i8> %a1, %a2 267 %vsgt = icmp sgt <16 x i8> %a1, %a2 268 %vsge = icmp sge <16 x i8> %a1, %a2 269 %vslt = icmp slt <16 x i8> %a1, %a2 270 %vsle = icmp sle <16 x i8> %a1, %a2 271 ret <16 x i1> %veq 272} 273 274; CHECK-NEXT: define internal <16 x i1> @IcmpV16xI8(<16 x i8> %a1, <16 x i8> %a2) { 275; CHECK-NEXT: entry: 276; CHECK-NEXT: %veq = icmp eq <16 x i8> %a1, %a2 277; CHECK-NEXT: %vne = icmp ne <16 x i8> %a1, %a2 278; CHECK-NEXT: %vugt = icmp ugt <16 x i8> %a1, %a2 279; CHECK-NEXT: %vuge = icmp uge <16 x i8> %a1, %a2 280; CHECK-NEXT: %vult = icmp ult <16 x i8> %a1, %a2 281; CHECK-NEXT: %vule = icmp ule <16 x i8> %a1, %a2 282; CHECK-NEXT: %vsgt = icmp sgt <16 x i8> %a1, %a2 283; CHECK-NEXT: %vsge = icmp sge <16 x i8> %a1, %a2 284; CHECK-NEXT: %vslt = icmp slt <16 x i8> %a1, %a2 285; CHECK-NEXT: %vsle = icmp sle <16 x i8> %a1, %a2 286; CHECK-NEXT: ret <16 x i1> %veq 287; CHECK-NEXT: } 288 289define internal <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2) { 290entry: 291 %veq = icmp eq <8 x i16> %a1, %a2 292 %vne = icmp ne <8 x i16> %a1, %a2 293 %vugt = icmp ugt <8 x i16> %a1, %a2 294 %vuge = icmp uge <8 x i16> %a1, %a2 295 %vult = icmp ult <8 x i16> %a1, %a2 296 %vule = icmp ule <8 x i16> %a1, %a2 297 %vsgt = icmp sgt <8 x i16> %a1, %a2 298 %vsge = icmp sge <8 x i16> %a1, %a2 299 %vslt = icmp slt <8 x i16> %a1, %a2 300 %vsle = icmp sle <8 x i16> %a1, %a2 301 ret <8 x i1> %veq 302} 303 304; CHECK-NEXT: define internal <8 x i1> @IcmpV8xI16(<8 x i16> %a1, <8 x i16> %a2) { 305; CHECK-NEXT: entry: 306; CHECK-NEXT: %veq = icmp eq <8 x i16> %a1, %a2 307; CHECK-NEXT: %vne = icmp ne <8 x i16> %a1, %a2 308; CHECK-NEXT: %vugt = icmp ugt <8 x i16> %a1, %a2 309; CHECK-NEXT: %vuge = icmp uge <8 x i16> %a1, %a2 310; CHECK-NEXT: %vult = icmp ult <8 x i16> %a1, %a2 311; CHECK-NEXT: %vule = icmp ule <8 x i16> %a1, %a2 312; CHECK-NEXT: %vsgt = icmp sgt <8 x i16> %a1, %a2 313; CHECK-NEXT: %vsge = icmp sge <8 x i16> %a1, %a2 314; CHECK-NEXT: %vslt = icmp slt <8 x i16> %a1, %a2 315; CHECK-NEXT: %vsle = icmp sle <8 x i16> %a1, %a2 316; CHECK-NEXT: ret <8 x i1> %veq 317; CHECK-NEXT: } 318 319define internal <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2) { 320entry: 321 %veq = icmp eq <4 x i32> %a1, %a2 322 %vne = icmp ne <4 x i32> %a1, %a2 323 %vugt = icmp ugt <4 x i32> %a1, %a2 324 %vuge = icmp uge <4 x i32> %a1, %a2 325 %vult = icmp ult <4 x i32> %a1, %a2 326 %vule = icmp ule <4 x i32> %a1, %a2 327 %vsgt = icmp sgt <4 x i32> %a1, %a2 328 %vsge = icmp sge <4 x i32> %a1, %a2 329 %vslt = icmp slt <4 x i32> %a1, %a2 330 %vsle = icmp sle <4 x i32> %a1, %a2 331 ret <4 x i1> %veq 332} 333 334; CHECK-NEXT: define internal <4 x i1> @IcmpV4xI32(<4 x i32> %a1, <4 x i32> %a2) { 335; CHECK-NEXT: entry: 336; CHECK-NEXT: %veq = icmp eq <4 x i32> %a1, %a2 337; CHECK-NEXT: %vne = icmp ne <4 x i32> %a1, %a2 338; CHECK-NEXT: %vugt = icmp ugt <4 x i32> %a1, %a2 339; CHECK-NEXT: %vuge = icmp uge <4 x i32> %a1, %a2 340; CHECK-NEXT: %vult = icmp ult <4 x i32> %a1, %a2 341; CHECK-NEXT: %vule = icmp ule <4 x i32> %a1, %a2 342; CHECK-NEXT: %vsgt = icmp sgt <4 x i32> %a1, %a2 343; CHECK-NEXT: %vsge = icmp sge <4 x i32> %a1, %a2 344; CHECK-NEXT: %vslt = icmp slt <4 x i32> %a1, %a2 345; CHECK-NEXT: %vsle = icmp sle <4 x i32> %a1, %a2 346; CHECK-NEXT: ret <4 x i1> %veq 347; CHECK-NEXT: } 348 349define internal void @FcmpFloat(float %a1, float %a2) { 350entry: 351 %vfalse = fcmp false float %a1, %a2 352 %voeq = fcmp oeq float %a1, %a2 353 %vogt = fcmp ogt float %a1, %a2 354 %voge = fcmp oge float %a1, %a2 355 %volt = fcmp olt float %a1, %a2 356 %vole = fcmp ole float %a1, %a2 357 %vone = fcmp one float %a1, %a2 358 %ord = fcmp ord float %a1, %a2 359 %vueq = fcmp ueq float %a1, %a2 360 %vugt = fcmp ugt float %a1, %a2 361 %vuge = fcmp uge float %a1, %a2 362 %vult = fcmp ult float %a1, %a2 363 %vule = fcmp ule float %a1, %a2 364 %vune = fcmp une float %a1, %a2 365 %vuno = fcmp uno float %a1, %a2 366 %vtrue = fcmp true float %a1, %a2 367 ret void 368} 369 370; CHECK-NEXT: define internal void @FcmpFloat(float %a1, float %a2) { 371; CHECK-NEXT: entry: 372; CHECK-NEXT: %vfalse = fcmp false float %a1, %a2 373; CHECK-NEXT: %voeq = fcmp oeq float %a1, %a2 374; CHECK-NEXT: %vogt = fcmp ogt float %a1, %a2 375; CHECK-NEXT: %voge = fcmp oge float %a1, %a2 376; CHECK-NEXT: %volt = fcmp olt float %a1, %a2 377; CHECK-NEXT: %vole = fcmp ole float %a1, %a2 378; CHECK-NEXT: %vone = fcmp one float %a1, %a2 379; CHECK-NEXT: %ord = fcmp ord float %a1, %a2 380; CHECK-NEXT: %vueq = fcmp ueq float %a1, %a2 381; CHECK-NEXT: %vugt = fcmp ugt float %a1, %a2 382; CHECK-NEXT: %vuge = fcmp uge float %a1, %a2 383; CHECK-NEXT: %vult = fcmp ult float %a1, %a2 384; CHECK-NEXT: %vule = fcmp ule float %a1, %a2 385; CHECK-NEXT: %vune = fcmp une float %a1, %a2 386; CHECK-NEXT: %vuno = fcmp uno float %a1, %a2 387; CHECK-NEXT: %vtrue = fcmp true float %a1, %a2 388; CHECK-NEXT: ret void 389; CHECK-NEXT: } 390 391define internal void @FcmpDouble(double %a1, double %a2) { 392entry: 393 %vfalse = fcmp false double %a1, %a2 394 %voeq = fcmp oeq double %a1, %a2 395 %vogt = fcmp ogt double %a1, %a2 396 %voge = fcmp oge double %a1, %a2 397 %volt = fcmp olt double %a1, %a2 398 %vole = fcmp ole double %a1, %a2 399 %vone = fcmp one double %a1, %a2 400 %ord = fcmp ord double %a1, %a2 401 %vueq = fcmp ueq double %a1, %a2 402 %vugt = fcmp ugt double %a1, %a2 403 %vuge = fcmp uge double %a1, %a2 404 %vult = fcmp ult double %a1, %a2 405 %vule = fcmp ule double %a1, %a2 406 %vune = fcmp une double %a1, %a2 407 %vuno = fcmp uno double %a1, %a2 408 %vtrue = fcmp true double %a1, %a2 409 ret void 410} 411 412; CHECK-NEXT: define internal void @FcmpDouble(double %a1, double %a2) { 413; CHECK-NEXT: entry: 414; CHECK-NEXT: %vfalse = fcmp false double %a1, %a2 415; CHECK-NEXT: %voeq = fcmp oeq double %a1, %a2 416; CHECK-NEXT: %vogt = fcmp ogt double %a1, %a2 417; CHECK-NEXT: %voge = fcmp oge double %a1, %a2 418; CHECK-NEXT: %volt = fcmp olt double %a1, %a2 419; CHECK-NEXT: %vole = fcmp ole double %a1, %a2 420; CHECK-NEXT: %vone = fcmp one double %a1, %a2 421; CHECK-NEXT: %ord = fcmp ord double %a1, %a2 422; CHECK-NEXT: %vueq = fcmp ueq double %a1, %a2 423; CHECK-NEXT: %vugt = fcmp ugt double %a1, %a2 424; CHECK-NEXT: %vuge = fcmp uge double %a1, %a2 425; CHECK-NEXT: %vult = fcmp ult double %a1, %a2 426; CHECK-NEXT: %vule = fcmp ule double %a1, %a2 427; CHECK-NEXT: %vune = fcmp une double %a1, %a2 428; CHECK-NEXT: %vuno = fcmp uno double %a1, %a2 429; CHECK-NEXT: %vtrue = fcmp true double %a1, %a2 430; CHECK-NEXT: ret void 431; CHECK-NEXT: } 432 433define internal <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) { 434entry: 435 %vfalse = fcmp false <4 x float> %a1, %a2 436 %voeq = fcmp oeq <4 x float> %a1, %a2 437 %vogt = fcmp ogt <4 x float> %a1, %a2 438 %voge = fcmp oge <4 x float> %a1, %a2 439 %volt = fcmp olt <4 x float> %a1, %a2 440 %vole = fcmp ole <4 x float> %a1, %a2 441 %vone = fcmp one <4 x float> %a1, %a2 442 %ord = fcmp ord <4 x float> %a1, %a2 443 %vueq = fcmp ueq <4 x float> %a1, %a2 444 %vugt = fcmp ugt <4 x float> %a1, %a2 445 %vuge = fcmp uge <4 x float> %a1, %a2 446 %vult = fcmp ult <4 x float> %a1, %a2 447 %vule = fcmp ule <4 x float> %a1, %a2 448 %vune = fcmp une <4 x float> %a1, %a2 449 %vuno = fcmp uno <4 x float> %a1, %a2 450 %vtrue = fcmp true <4 x float> %a1, %a2 451 ret <4 x i1> %voeq 452} 453 454; CHECK-NEXT: define internal <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) { 455; CHECK-NEXT: entry: 456; CHECK-NEXT: %vfalse = fcmp false <4 x float> %a1, %a2 457; CHECK-NEXT: %voeq = fcmp oeq <4 x float> %a1, %a2 458; CHECK-NEXT: %vogt = fcmp ogt <4 x float> %a1, %a2 459; CHECK-NEXT: %voge = fcmp oge <4 x float> %a1, %a2 460; CHECK-NEXT: %volt = fcmp olt <4 x float> %a1, %a2 461; CHECK-NEXT: %vole = fcmp ole <4 x float> %a1, %a2 462; CHECK-NEXT: %vone = fcmp one <4 x float> %a1, %a2 463; CHECK-NEXT: %ord = fcmp ord <4 x float> %a1, %a2 464; CHECK-NEXT: %vueq = fcmp ueq <4 x float> %a1, %a2 465; CHECK-NEXT: %vugt = fcmp ugt <4 x float> %a1, %a2 466; CHECK-NEXT: %vuge = fcmp uge <4 x float> %a1, %a2 467; CHECK-NEXT: %vult = fcmp ult <4 x float> %a1, %a2 468; CHECK-NEXT: %vule = fcmp ule <4 x float> %a1, %a2 469; CHECK-NEXT: %vune = fcmp une <4 x float> %a1, %a2 470; CHECK-NEXT: %vuno = fcmp uno <4 x float> %a1, %a2 471; CHECK-NEXT: %vtrue = fcmp true <4 x float> %a1, %a2 472; CHECK-NEXT: ret <4 x i1> %voeq 473; CHECK-NEXT: } 474 475; NOIR: Total across all functions 476