1; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=z13 | FileCheck %s 2; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=zEC12 \ 3; RUN: | FileCheck %s --check-prefix=IPMSQ 4; 5; TODO: add more tests for differing operand types of the two compares. 6 7define i8 @fun0(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 8 i8 %val5, i8 %val6) { 9 %cmp0 = icmp eq i8 %val1, %val2 10 %cmp1 = icmp eq i8 %val3, %val4 11 %and = and i1 %cmp0, %cmp1 12 %sel = select i1 %and, i8 %val5, i8 %val6 13 ret i8 %sel 14 15; CHECK: fun0 16; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 17; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 18; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 19; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 20} 21 22define i16 @fun1(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 23 i16 %val5, i16 %val6) { 24 %cmp0 = icmp eq i8 %val1, %val2 25 %cmp1 = icmp eq i8 %val3, %val4 26 %and = and i1 %cmp0, %cmp1 27 %sel = select i1 %and, i16 %val5, i16 %val6 28 ret i16 %sel 29 30; CHECK: fun1 31; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 32; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 33; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 34; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 35} 36 37define i32 @fun2(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 38 i32 %val5, i32 %val6) { 39 %cmp0 = icmp eq i8 %val1, %val2 40 %cmp1 = icmp eq i8 %val3, %val4 41 %and = and i1 %cmp0, %cmp1 42 %sel = select i1 %and, i32 %val5, i32 %val6 43 ret i32 %sel 44 45; CHECK: fun2 46; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 47; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 48; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 49; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 50} 51 52define i64 @fun3(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 53 i64 %val5, i64 %val6) { 54 %cmp0 = icmp eq i8 %val1, %val2 55 %cmp1 = icmp eq i8 %val3, %val4 56 %and = and i1 %cmp0, %cmp1 57 %sel = select i1 %and, i64 %val5, i64 %val6 58 ret i64 %sel 59 60; CHECK: fun3 61; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 62; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 63; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 64; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 65} 66 67define float @fun4(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 68 float %val5, float %val6) { 69 %cmp0 = icmp eq i8 %val1, %val2 70 %cmp1 = icmp eq i8 %val3, %val4 71 %and = and i1 %cmp0, %cmp1 72 %sel = select i1 %and, float %val5, float %val6 73 ret float %sel 74 75; CHECK: fun4 76; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 77; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 78; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 79; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 80} 81 82define double @fun5(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 83 double %val5, double %val6) { 84 %cmp0 = icmp eq i8 %val1, %val2 85 %cmp1 = icmp eq i8 %val3, %val4 86 %and = and i1 %cmp0, %cmp1 87 %sel = select i1 %and, double %val5, double %val6 88 ret double %sel 89 90; CHECK: fun5 91; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 92; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 93; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 94; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 95} 96 97define i8 @fun6(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 98 i8 %val5, i8 %val6) { 99 %cmp0 = icmp eq i16 %val1, %val2 100 %cmp1 = icmp eq i16 %val3, %val4 101 %and = and i1 %cmp0, %cmp1 102 %sel = select i1 %and, i8 %val5, i8 %val6 103 ret i8 %sel 104 105; CHECK: fun6 106; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 107; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 108; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 109; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 110} 111 112define i16 @fun7(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 113 i16 %val5, i16 %val6) { 114 %cmp0 = icmp eq i16 %val1, %val2 115 %cmp1 = icmp eq i16 %val3, %val4 116 %and = and i1 %cmp0, %cmp1 117 %sel = select i1 %and, i16 %val5, i16 %val6 118 ret i16 %sel 119 120; CHECK: fun7 121; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 122; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 123; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 124; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 125} 126 127define i32 @fun8(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 128 i32 %val5, i32 %val6) { 129 %cmp0 = icmp eq i16 %val1, %val2 130 %cmp1 = icmp eq i16 %val3, %val4 131 %and = and i1 %cmp0, %cmp1 132 %sel = select i1 %and, i32 %val5, i32 %val6 133 ret i32 %sel 134 135; CHECK: fun8 136; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 137; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 138; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 139; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 140} 141 142define i64 @fun9(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 143 i64 %val5, i64 %val6) { 144 %cmp0 = icmp eq i16 %val1, %val2 145 %cmp1 = icmp eq i16 %val3, %val4 146 %and = and i1 %cmp0, %cmp1 147 %sel = select i1 %and, i64 %val5, i64 %val6 148 ret i64 %sel 149 150; CHECK: fun9 151; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 152; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 153; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 154; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 155} 156 157define float @fun10(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 158 float %val5, float %val6) { 159 %cmp0 = icmp eq i16 %val1, %val2 160 %cmp1 = icmp eq i16 %val3, %val4 161 %and = and i1 %cmp0, %cmp1 162 %sel = select i1 %and, float %val5, float %val6 163 ret float %sel 164 165; CHECK: fun10 166; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 167; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 168; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 169; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 170} 171 172define double @fun11(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 173 double %val5, double %val6) { 174 %cmp0 = icmp eq i16 %val1, %val2 175 %cmp1 = icmp eq i16 %val3, %val4 176 %and = and i1 %cmp0, %cmp1 177 %sel = select i1 %and, double %val5, double %val6 178 ret double %sel 179 180; CHECK: fun11 181; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 182; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 183; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 184; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 185} 186 187define i8 @fun12(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 188 i8 %val5, i8 %val6) { 189 %cmp0 = icmp eq i32 %val1, %val2 190 %cmp1 = icmp eq i32 %val3, %val4 191 %and = and i1 %cmp0, %cmp1 192 %sel = select i1 %and, i8 %val5, i8 %val6 193 ret i8 %sel 194 195; CHECK: fun12 196; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 197; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 198; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 199; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 200} 201 202define i16 @fun13(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 203 i16 %val5, i16 %val6) { 204 %cmp0 = icmp eq i32 %val1, %val2 205 %cmp1 = icmp eq i32 %val3, %val4 206 %and = and i1 %cmp0, %cmp1 207 %sel = select i1 %and, i16 %val5, i16 %val6 208 ret i16 %sel 209 210; CHECK: fun13 211; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 212; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 213; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 214; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 215} 216 217define i32 @fun14(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 218 i32 %val5, i32 %val6) { 219 %cmp0 = icmp eq i32 %val1, %val2 220 %cmp1 = icmp eq i32 %val3, %val4 221 %and = and i1 %cmp0, %cmp1 222 %sel = select i1 %and, i32 %val5, i32 %val6 223 ret i32 %sel 224 225; CHECK: fun14 226; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 227; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 228; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 229; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 230} 231 232define i64 @fun15(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 233 i64 %val5, i64 %val6) { 234 %cmp0 = icmp eq i32 %val1, %val2 235 %cmp1 = icmp eq i32 %val3, %val4 236 %and = and i1 %cmp0, %cmp1 237 %sel = select i1 %and, i64 %val5, i64 %val6 238 ret i64 %sel 239 240; CHECK: fun15 241; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 242; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 243; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 244; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 245} 246 247define float @fun16(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 248 float %val5, float %val6) { 249 %cmp0 = icmp eq i32 %val1, %val2 250 %cmp1 = icmp eq i32 %val3, %val4 251 %and = and i1 %cmp0, %cmp1 252 %sel = select i1 %and, float %val5, float %val6 253 ret float %sel 254 255; CHECK: fun16 256; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 257; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 258; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 259; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 260} 261 262define double @fun17(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 263 double %val5, double %val6) { 264 %cmp0 = icmp eq i32 %val1, %val2 265 %cmp1 = icmp eq i32 %val3, %val4 266 %and = and i1 %cmp0, %cmp1 267 %sel = select i1 %and, double %val5, double %val6 268 ret double %sel 269 270; CHECK: fun17 271; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 272; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 273; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 274; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 275} 276 277define i8 @fun18(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 278 i8 %val5, i8 %val6) { 279 %cmp0 = icmp eq i64 %val1, %val2 280 %cmp1 = icmp eq i64 %val3, %val4 281 %and = and i1 %cmp0, %cmp1 282 %sel = select i1 %and, i8 %val5, i8 %val6 283 ret i8 %sel 284 285; CHECK: fun18 286; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 287; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 288; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 289; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 290} 291 292define i16 @fun19(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 293 i16 %val5, i16 %val6) { 294 %cmp0 = icmp eq i64 %val1, %val2 295 %cmp1 = icmp eq i64 %val3, %val4 296 %and = and i1 %cmp0, %cmp1 297 %sel = select i1 %and, i16 %val5, i16 %val6 298 ret i16 %sel 299 300; CHECK: fun19 301; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 302; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 303; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 304; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 305} 306 307define i32 @fun20(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 308 i32 %val5, i32 %val6) { 309 %cmp0 = icmp eq i64 %val1, %val2 310 %cmp1 = icmp eq i64 %val3, %val4 311 %and = and i1 %cmp0, %cmp1 312 %sel = select i1 %and, i32 %val5, i32 %val6 313 ret i32 %sel 314 315; CHECK: fun20 316; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 317; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 318; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 319; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 320} 321 322define i64 @fun21(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 323 i64 %val5, i64 %val6) { 324 %cmp0 = icmp eq i64 %val1, %val2 325 %cmp1 = icmp eq i64 %val3, %val4 326 %and = and i1 %cmp0, %cmp1 327 %sel = select i1 %and, i64 %val5, i64 %val6 328 ret i64 %sel 329 330; CHECK: fun21 331; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 332; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 333; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 334; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 335} 336 337define float @fun22(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 338 float %val5, float %val6) { 339 %cmp0 = icmp eq i64 %val1, %val2 340 %cmp1 = icmp eq i64 %val3, %val4 341 %and = and i1 %cmp0, %cmp1 342 %sel = select i1 %and, float %val5, float %val6 343 ret float %sel 344 345; CHECK: fun22 346; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 347; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 348; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 349; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 350} 351 352define double @fun23(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 353 double %val5, double %val6) { 354 %cmp0 = icmp eq i64 %val1, %val2 355 %cmp1 = icmp eq i64 %val3, %val4 356 %and = and i1 %cmp0, %cmp1 357 %sel = select i1 %and, double %val5, double %val6 358 ret double %sel 359 360; CHECK: fun23 361; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 362; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 363; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 364; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 365} 366 367define i8 @fun24(float %val1, float %val2, float %val3, float %val4, 368 i8 %val5, i8 %val6) { 369 %cmp0 = fcmp ogt float %val1, %val2 370 %cmp1 = fcmp ogt float %val3, %val4 371 %and = and i1 %cmp0, %cmp1 372 %sel = select i1 %and, i8 %val5, i8 %val6 373 ret i8 %sel 374 375; CHECK: fun24 376; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 377; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 378; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 379; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 380} 381 382define i16 @fun25(float %val1, float %val2, float %val3, float %val4, 383 i16 %val5, i16 %val6) { 384 %cmp0 = fcmp ogt float %val1, %val2 385 %cmp1 = fcmp ogt float %val3, %val4 386 %and = and i1 %cmp0, %cmp1 387 %sel = select i1 %and, i16 %val5, i16 %val6 388 ret i16 %sel 389 390; CHECK: fun25 391; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 392; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 393; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 394; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 395} 396 397define i32 @fun26(float %val1, float %val2, float %val3, float %val4, 398 i32 %val5, i32 %val6) { 399 %cmp0 = fcmp ogt float %val1, %val2 400 %cmp1 = fcmp ogt float %val3, %val4 401 %and = and i1 %cmp0, %cmp1 402 %sel = select i1 %and, i32 %val5, i32 %val6 403 ret i32 %sel 404 405; CHECK: fun26 406; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 407; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 408; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 409; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 410} 411 412define i64 @fun27(float %val1, float %val2, float %val3, float %val4, 413 i64 %val5, i64 %val6) { 414 %cmp0 = fcmp ogt float %val1, %val2 415 %cmp1 = fcmp ogt float %val3, %val4 416 %and = and i1 %cmp0, %cmp1 417 %sel = select i1 %and, i64 %val5, i64 %val6 418 ret i64 %sel 419 420; CHECK: fun27 421; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 422; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 423; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 424; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 425} 426 427define float @fun28(float %val1, float %val2, float %val3, float %val4, 428 float %val5, float %val6) { 429 %cmp0 = fcmp ogt float %val1, %val2 430 %cmp1 = fcmp ogt float %val3, %val4 431 %and = and i1 %cmp0, %cmp1 432 %sel = select i1 %and, float %val5, float %val6 433 ret float %sel 434 435; CHECK: fun28 436; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 437; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 438; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 439; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 440} 441 442define double @fun29(float %val1, float %val2, float %val3, float %val4, 443 double %val5, double %val6) { 444 %cmp0 = fcmp ogt float %val1, %val2 445 %cmp1 = fcmp ogt float %val3, %val4 446 %and = and i1 %cmp0, %cmp1 447 %sel = select i1 %and, double %val5, double %val6 448 ret double %sel 449 450; CHECK: fun29 451; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 452; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 453; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 454; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 455} 456 457define i8 @fun30(double %val1, double %val2, double %val3, double %val4, 458 i8 %val5, i8 %val6) { 459 %cmp0 = fcmp ogt double %val1, %val2 460 %cmp1 = fcmp ogt double %val3, %val4 461 %and = and i1 %cmp0, %cmp1 462 %sel = select i1 %and, i8 %val5, i8 %val6 463 ret i8 %sel 464 465; CHECK: fun30 466; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 467; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 468; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 469; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 470} 471 472define i16 @fun31(double %val1, double %val2, double %val3, double %val4, 473 i16 %val5, i16 %val6) { 474 %cmp0 = fcmp ogt double %val1, %val2 475 %cmp1 = fcmp ogt double %val3, %val4 476 %and = and i1 %cmp0, %cmp1 477 %sel = select i1 %and, i16 %val5, i16 %val6 478 ret i16 %sel 479 480; CHECK: fun31 481; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 482; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 483; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 484; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 485} 486 487define i32 @fun32(double %val1, double %val2, double %val3, double %val4, 488 i32 %val5, i32 %val6) { 489 %cmp0 = fcmp ogt double %val1, %val2 490 %cmp1 = fcmp ogt double %val3, %val4 491 %and = and i1 %cmp0, %cmp1 492 %sel = select i1 %and, i32 %val5, i32 %val6 493 ret i32 %sel 494 495; CHECK: fun32 496; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 497; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 498; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 499; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 500} 501 502define i64 @fun33(double %val1, double %val2, double %val3, double %val4, 503 i64 %val5, i64 %val6) { 504 %cmp0 = fcmp ogt double %val1, %val2 505 %cmp1 = fcmp ogt double %val3, %val4 506 %and = and i1 %cmp0, %cmp1 507 %sel = select i1 %and, i64 %val5, i64 %val6 508 ret i64 %sel 509 510; CHECK: fun33 511; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 512; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 513; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 514; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 515} 516 517define float @fun34(double %val1, double %val2, double %val3, double %val4, 518 float %val5, float %val6) { 519 %cmp0 = fcmp ogt double %val1, %val2 520 %cmp1 = fcmp ogt double %val3, %val4 521 %and = and i1 %cmp0, %cmp1 522 %sel = select i1 %and, float %val5, float %val6 523 ret float %sel 524 525; CHECK: fun34 526; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 527; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 528; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 529; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 530} 531 532define double @fun35(double %val1, double %val2, double %val3, double %val4, 533 double %val5, double %val6) { 534 %cmp0 = fcmp ogt double %val1, %val2 535 %cmp1 = fcmp ogt double %val3, %val4 536 %and = and i1 %cmp0, %cmp1 537 %sel = select i1 %and, double %val5, double %val6 538 ret double %sel 539 540; CHECK: fun35 541; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 542; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 543; CHECK: cost of 1 for instruction: %and = and i1 %cmp0, %cmp1 544; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 545} 546 547define i8 @fun36(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 548 i8 %val5, i8 %val6) { 549 %cmp0 = icmp eq i8 %val1, %val2 550 %cmp1 = icmp eq i8 %val3, %val4 551 %and = or i1 %cmp0, %cmp1 552 %sel = select i1 %and, i8 %val5, i8 %val6 553 ret i8 %sel 554 555; CHECK: fun36 556; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 557; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 558; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 559; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 560} 561 562define i16 @fun37(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 563 i16 %val5, i16 %val6) { 564 %cmp0 = icmp eq i8 %val1, %val2 565 %cmp1 = icmp eq i8 %val3, %val4 566 %and = or i1 %cmp0, %cmp1 567 %sel = select i1 %and, i16 %val5, i16 %val6 568 ret i16 %sel 569 570; CHECK: fun37 571; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 572; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 573; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 574; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 575} 576 577define i32 @fun38(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 578 i32 %val5, i32 %val6) { 579 %cmp0 = icmp eq i8 %val1, %val2 580 %cmp1 = icmp eq i8 %val3, %val4 581 %and = or i1 %cmp0, %cmp1 582 %sel = select i1 %and, i32 %val5, i32 %val6 583 ret i32 %sel 584 585; CHECK: fun38 586; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 587; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 588; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 589; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 590} 591 592define i64 @fun39(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 593 i64 %val5, i64 %val6) { 594 %cmp0 = icmp eq i8 %val1, %val2 595 %cmp1 = icmp eq i8 %val3, %val4 596 %and = or i1 %cmp0, %cmp1 597 %sel = select i1 %and, i64 %val5, i64 %val6 598 ret i64 %sel 599 600; CHECK: fun39 601; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 602; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 603; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 604; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 605} 606 607define float @fun40(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 608 float %val5, float %val6) { 609 %cmp0 = icmp eq i8 %val1, %val2 610 %cmp1 = icmp eq i8 %val3, %val4 611 %and = or i1 %cmp0, %cmp1 612 %sel = select i1 %and, float %val5, float %val6 613 ret float %sel 614 615; CHECK: fun40 616; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 617; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 618; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 619; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 620} 621 622define double @fun41(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 623 double %val5, double %val6) { 624 %cmp0 = icmp eq i8 %val1, %val2 625 %cmp1 = icmp eq i8 %val3, %val4 626 %and = or i1 %cmp0, %cmp1 627 %sel = select i1 %and, double %val5, double %val6 628 ret double %sel 629 630; CHECK: fun41 631; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 632; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 633; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 634; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 635} 636 637define i8 @fun42(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 638 i8 %val5, i8 %val6) { 639 %cmp0 = icmp eq i16 %val1, %val2 640 %cmp1 = icmp eq i16 %val3, %val4 641 %and = or i1 %cmp0, %cmp1 642 %sel = select i1 %and, i8 %val5, i8 %val6 643 ret i8 %sel 644 645; CHECK: fun42 646; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 647; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 648; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 649; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 650} 651 652define i16 @fun43(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 653 i16 %val5, i16 %val6) { 654 %cmp0 = icmp eq i16 %val1, %val2 655 %cmp1 = icmp eq i16 %val3, %val4 656 %and = or i1 %cmp0, %cmp1 657 %sel = select i1 %and, i16 %val5, i16 %val6 658 ret i16 %sel 659 660; CHECK: fun43 661; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 662; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 663; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 664; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 665} 666 667define i32 @fun44(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 668 i32 %val5, i32 %val6) { 669 %cmp0 = icmp eq i16 %val1, %val2 670 %cmp1 = icmp eq i16 %val3, %val4 671 %and = or i1 %cmp0, %cmp1 672 %sel = select i1 %and, i32 %val5, i32 %val6 673 ret i32 %sel 674 675; CHECK: fun44 676; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 677; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 678; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 679; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 680} 681 682define i64 @fun45(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 683 i64 %val5, i64 %val6) { 684 %cmp0 = icmp eq i16 %val1, %val2 685 %cmp1 = icmp eq i16 %val3, %val4 686 %and = or i1 %cmp0, %cmp1 687 %sel = select i1 %and, i64 %val5, i64 %val6 688 ret i64 %sel 689 690; CHECK: fun45 691; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 692; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 693; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 694; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 695} 696 697define float @fun46(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 698 float %val5, float %val6) { 699 %cmp0 = icmp eq i16 %val1, %val2 700 %cmp1 = icmp eq i16 %val3, %val4 701 %and = or i1 %cmp0, %cmp1 702 %sel = select i1 %and, float %val5, float %val6 703 ret float %sel 704 705; CHECK: fun46 706; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 707; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 708; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 709; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 710} 711 712define double @fun47(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 713 double %val5, double %val6) { 714 %cmp0 = icmp eq i16 %val1, %val2 715 %cmp1 = icmp eq i16 %val3, %val4 716 %and = or i1 %cmp0, %cmp1 717 %sel = select i1 %and, double %val5, double %val6 718 ret double %sel 719 720; CHECK: fun47 721; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 722; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 723; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 724; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 725} 726 727define i8 @fun48(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 728 i8 %val5, i8 %val6) { 729 %cmp0 = icmp eq i32 %val1, %val2 730 %cmp1 = icmp eq i32 %val3, %val4 731 %and = or i1 %cmp0, %cmp1 732 %sel = select i1 %and, i8 %val5, i8 %val6 733 ret i8 %sel 734 735; CHECK: fun48 736; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 737; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 738; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 739; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 740} 741 742define i16 @fun49(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 743 i16 %val5, i16 %val6) { 744 %cmp0 = icmp eq i32 %val1, %val2 745 %cmp1 = icmp eq i32 %val3, %val4 746 %and = or i1 %cmp0, %cmp1 747 %sel = select i1 %and, i16 %val5, i16 %val6 748 ret i16 %sel 749 750; CHECK: fun49 751; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 752; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 753; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 754; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 755} 756 757define i32 @fun50(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 758 i32 %val5, i32 %val6) { 759 %cmp0 = icmp eq i32 %val1, %val2 760 %cmp1 = icmp eq i32 %val3, %val4 761 %and = or i1 %cmp0, %cmp1 762 %sel = select i1 %and, i32 %val5, i32 %val6 763 ret i32 %sel 764 765; CHECK: fun50 766; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 767; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 768; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 769; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 770} 771 772define i64 @fun51(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 773 i64 %val5, i64 %val6) { 774 %cmp0 = icmp eq i32 %val1, %val2 775 %cmp1 = icmp eq i32 %val3, %val4 776 %and = or i1 %cmp0, %cmp1 777 %sel = select i1 %and, i64 %val5, i64 %val6 778 ret i64 %sel 779 780; CHECK: fun51 781; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 782; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 783; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 784; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 785} 786 787define float @fun52(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 788 float %val5, float %val6) { 789 %cmp0 = icmp eq i32 %val1, %val2 790 %cmp1 = icmp eq i32 %val3, %val4 791 %and = or i1 %cmp0, %cmp1 792 %sel = select i1 %and, float %val5, float %val6 793 ret float %sel 794 795; CHECK: fun52 796; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 797; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 798; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 799; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 800} 801 802define double @fun53(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 803 double %val5, double %val6) { 804 %cmp0 = icmp eq i32 %val1, %val2 805 %cmp1 = icmp eq i32 %val3, %val4 806 %and = or i1 %cmp0, %cmp1 807 %sel = select i1 %and, double %val5, double %val6 808 ret double %sel 809 810; CHECK: fun53 811; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 812; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 813; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 814; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 815} 816 817define i8 @fun54(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 818 i8 %val5, i8 %val6) { 819 %cmp0 = icmp eq i64 %val1, %val2 820 %cmp1 = icmp eq i64 %val3, %val4 821 %and = or i1 %cmp0, %cmp1 822 %sel = select i1 %and, i8 %val5, i8 %val6 823 ret i8 %sel 824 825; CHECK: fun54 826; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 827; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 828; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 829; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 830} 831 832define i16 @fun55(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 833 i16 %val5, i16 %val6) { 834 %cmp0 = icmp eq i64 %val1, %val2 835 %cmp1 = icmp eq i64 %val3, %val4 836 %and = or i1 %cmp0, %cmp1 837 %sel = select i1 %and, i16 %val5, i16 %val6 838 ret i16 %sel 839 840; CHECK: fun55 841; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 842; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 843; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 844; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 845} 846 847define i32 @fun56(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 848 i32 %val5, i32 %val6) { 849 %cmp0 = icmp eq i64 %val1, %val2 850 %cmp1 = icmp eq i64 %val3, %val4 851 %and = or i1 %cmp0, %cmp1 852 %sel = select i1 %and, i32 %val5, i32 %val6 853 ret i32 %sel 854 855; CHECK: fun56 856; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 857; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 858; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 859; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 860} 861 862define i64 @fun57(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 863 i64 %val5, i64 %val6) { 864 %cmp0 = icmp eq i64 %val1, %val2 865 %cmp1 = icmp eq i64 %val3, %val4 866 %and = or i1 %cmp0, %cmp1 867 %sel = select i1 %and, i64 %val5, i64 %val6 868 ret i64 %sel 869 870; CHECK: fun57 871; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 872; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 873; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 874; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 875} 876 877define float @fun58(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 878 float %val5, float %val6) { 879 %cmp0 = icmp eq i64 %val1, %val2 880 %cmp1 = icmp eq i64 %val3, %val4 881 %and = or i1 %cmp0, %cmp1 882 %sel = select i1 %and, float %val5, float %val6 883 ret float %sel 884 885; CHECK: fun58 886; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 887; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 888; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 889; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 890} 891 892define double @fun59(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 893 double %val5, double %val6) { 894 %cmp0 = icmp eq i64 %val1, %val2 895 %cmp1 = icmp eq i64 %val3, %val4 896 %and = or i1 %cmp0, %cmp1 897 %sel = select i1 %and, double %val5, double %val6 898 ret double %sel 899 900; CHECK: fun59 901; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 902; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 903; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 904; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 905} 906 907define i8 @fun60(float %val1, float %val2, float %val3, float %val4, 908 i8 %val5, i8 %val6) { 909 %cmp0 = fcmp ogt float %val1, %val2 910 %cmp1 = fcmp ogt float %val3, %val4 911 %and = or i1 %cmp0, %cmp1 912 %sel = select i1 %and, i8 %val5, i8 %val6 913 ret i8 %sel 914 915; CHECK: fun60 916; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 917; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 918; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 919; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 920} 921 922define i16 @fun61(float %val1, float %val2, float %val3, float %val4, 923 i16 %val5, i16 %val6) { 924 %cmp0 = fcmp ogt float %val1, %val2 925 %cmp1 = fcmp ogt float %val3, %val4 926 %and = or i1 %cmp0, %cmp1 927 %sel = select i1 %and, i16 %val5, i16 %val6 928 ret i16 %sel 929 930; CHECK: fun61 931; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 932; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 933; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 934; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 935} 936 937define i32 @fun62(float %val1, float %val2, float %val3, float %val4, 938 i32 %val5, i32 %val6) { 939 %cmp0 = fcmp ogt float %val1, %val2 940 %cmp1 = fcmp ogt float %val3, %val4 941 %and = or i1 %cmp0, %cmp1 942 %sel = select i1 %and, i32 %val5, i32 %val6 943 ret i32 %sel 944 945; CHECK: fun62 946; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 947; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 948; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 949; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 950} 951 952define i64 @fun63(float %val1, float %val2, float %val3, float %val4, 953 i64 %val5, i64 %val6) { 954 %cmp0 = fcmp ogt float %val1, %val2 955 %cmp1 = fcmp ogt float %val3, %val4 956 %and = or i1 %cmp0, %cmp1 957 %sel = select i1 %and, i64 %val5, i64 %val6 958 ret i64 %sel 959 960; CHECK: fun63 961; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 962; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 963; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 964; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 965} 966 967define float @fun64(float %val1, float %val2, float %val3, float %val4, 968 float %val5, float %val6) { 969 %cmp0 = fcmp ogt float %val1, %val2 970 %cmp1 = fcmp ogt float %val3, %val4 971 %and = or i1 %cmp0, %cmp1 972 %sel = select i1 %and, float %val5, float %val6 973 ret float %sel 974 975; CHECK: fun64 976; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 977; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 978; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 979; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 980} 981 982define double @fun65(float %val1, float %val2, float %val3, float %val4, 983 double %val5, double %val6) { 984 %cmp0 = fcmp ogt float %val1, %val2 985 %cmp1 = fcmp ogt float %val3, %val4 986 %and = or i1 %cmp0, %cmp1 987 %sel = select i1 %and, double %val5, double %val6 988 ret double %sel 989 990; CHECK: fun65 991; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 992; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 993; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 994; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 995} 996 997define i8 @fun66(double %val1, double %val2, double %val3, double %val4, 998 i8 %val5, i8 %val6) { 999 %cmp0 = fcmp ogt double %val1, %val2 1000 %cmp1 = fcmp ogt double %val3, %val4 1001 %and = or i1 %cmp0, %cmp1 1002 %sel = select i1 %and, i8 %val5, i8 %val6 1003 ret i8 %sel 1004 1005; CHECK: fun66 1006; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1007; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1008; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 1009; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 1010} 1011 1012define i16 @fun67(double %val1, double %val2, double %val3, double %val4, 1013 i16 %val5, i16 %val6) { 1014 %cmp0 = fcmp ogt double %val1, %val2 1015 %cmp1 = fcmp ogt double %val3, %val4 1016 %and = or i1 %cmp0, %cmp1 1017 %sel = select i1 %and, i16 %val5, i16 %val6 1018 ret i16 %sel 1019 1020; CHECK: fun67 1021; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1022; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1023; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 1024; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 1025} 1026 1027define i32 @fun68(double %val1, double %val2, double %val3, double %val4, 1028 i32 %val5, i32 %val6) { 1029 %cmp0 = fcmp ogt double %val1, %val2 1030 %cmp1 = fcmp ogt double %val3, %val4 1031 %and = or i1 %cmp0, %cmp1 1032 %sel = select i1 %and, i32 %val5, i32 %val6 1033 ret i32 %sel 1034 1035; CHECK: fun68 1036; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1037; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1038; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 1039; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 1040} 1041 1042define i64 @fun69(double %val1, double %val2, double %val3, double %val4, 1043 i64 %val5, i64 %val6) { 1044 %cmp0 = fcmp ogt double %val1, %val2 1045 %cmp1 = fcmp ogt double %val3, %val4 1046 %and = or i1 %cmp0, %cmp1 1047 %sel = select i1 %and, i64 %val5, i64 %val6 1048 ret i64 %sel 1049 1050; CHECK: fun69 1051; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1052; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1053; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 1054; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 1055} 1056 1057define float @fun70(double %val1, double %val2, double %val3, double %val4, 1058 float %val5, float %val6) { 1059 %cmp0 = fcmp ogt double %val1, %val2 1060 %cmp1 = fcmp ogt double %val3, %val4 1061 %and = or i1 %cmp0, %cmp1 1062 %sel = select i1 %and, float %val5, float %val6 1063 ret float %sel 1064 1065; CHECK: fun70 1066; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1067; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1068; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 1069; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 1070} 1071 1072define double @fun71(double %val1, double %val2, double %val3, double %val4, 1073 double %val5, double %val6) { 1074 %cmp0 = fcmp ogt double %val1, %val2 1075 %cmp1 = fcmp ogt double %val3, %val4 1076 %and = or i1 %cmp0, %cmp1 1077 %sel = select i1 %and, double %val5, double %val6 1078 ret double %sel 1079 1080; CHECK: fun71 1081; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1082; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1083; CHECK: cost of 1 for instruction: %and = or i1 %cmp0, %cmp1 1084; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 1085} 1086 1087define i8 @fun72(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 1088 i8 %val5, i8 %val6) { 1089 %cmp0 = icmp eq i8 %val1, %val2 1090 %cmp1 = icmp eq i8 %val3, %val4 1091 %and = xor i1 %cmp0, %cmp1 1092 %sel = select i1 %and, i8 %val5, i8 %val6 1093 ret i8 %sel 1094 1095; CHECK: fun72 1096; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 1097; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 1098; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1099; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1100; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 1101} 1102 1103define i16 @fun73(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 1104 i16 %val5, i16 %val6) { 1105 %cmp0 = icmp eq i8 %val1, %val2 1106 %cmp1 = icmp eq i8 %val3, %val4 1107 %and = xor i1 %cmp0, %cmp1 1108 %sel = select i1 %and, i16 %val5, i16 %val6 1109 ret i16 %sel 1110 1111; CHECK: fun73 1112; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 1113; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 1114; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1115; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1116; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 1117} 1118 1119define i32 @fun74(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 1120 i32 %val5, i32 %val6) { 1121 %cmp0 = icmp eq i8 %val1, %val2 1122 %cmp1 = icmp eq i8 %val3, %val4 1123 %and = xor i1 %cmp0, %cmp1 1124 %sel = select i1 %and, i32 %val5, i32 %val6 1125 ret i32 %sel 1126 1127; CHECK: fun74 1128; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 1129; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 1130; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1131; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1132; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 1133} 1134 1135define i64 @fun75(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 1136 i64 %val5, i64 %val6) { 1137 %cmp0 = icmp eq i8 %val1, %val2 1138 %cmp1 = icmp eq i8 %val3, %val4 1139 %and = xor i1 %cmp0, %cmp1 1140 %sel = select i1 %and, i64 %val5, i64 %val6 1141 ret i64 %sel 1142 1143; CHECK: fun75 1144; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 1145; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 1146; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1147; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1148; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 1149} 1150 1151define float @fun76(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 1152 float %val5, float %val6) { 1153 %cmp0 = icmp eq i8 %val1, %val2 1154 %cmp1 = icmp eq i8 %val3, %val4 1155 %and = xor i1 %cmp0, %cmp1 1156 %sel = select i1 %and, float %val5, float %val6 1157 ret float %sel 1158 1159; CHECK: fun76 1160; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 1161; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 1162; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1163; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1164; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 1165} 1166 1167define double @fun77(i8 %val1, i8 %val2, i8 %val3, i8 %val4, 1168 double %val5, double %val6) { 1169 %cmp0 = icmp eq i8 %val1, %val2 1170 %cmp1 = icmp eq i8 %val3, %val4 1171 %and = xor i1 %cmp0, %cmp1 1172 %sel = select i1 %and, double %val5, double %val6 1173 ret double %sel 1174 1175; CHECK: fun77 1176; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i8 %val1, %val2 1177; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i8 %val3, %val4 1178; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1179; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1180; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 1181} 1182 1183define i8 @fun78(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 1184 i8 %val5, i8 %val6) { 1185 %cmp0 = icmp eq i16 %val1, %val2 1186 %cmp1 = icmp eq i16 %val3, %val4 1187 %and = xor i1 %cmp0, %cmp1 1188 %sel = select i1 %and, i8 %val5, i8 %val6 1189 ret i8 %sel 1190 1191; CHECK: fun78 1192; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 1193; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 1194; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1195; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1196; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 1197} 1198 1199define i16 @fun79(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 1200 i16 %val5, i16 %val6) { 1201 %cmp0 = icmp eq i16 %val1, %val2 1202 %cmp1 = icmp eq i16 %val3, %val4 1203 %and = xor i1 %cmp0, %cmp1 1204 %sel = select i1 %and, i16 %val5, i16 %val6 1205 ret i16 %sel 1206 1207; CHECK: fun79 1208; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 1209; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 1210; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1211; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1212; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 1213} 1214 1215define i32 @fun80(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 1216 i32 %val5, i32 %val6) { 1217 %cmp0 = icmp eq i16 %val1, %val2 1218 %cmp1 = icmp eq i16 %val3, %val4 1219 %and = xor i1 %cmp0, %cmp1 1220 %sel = select i1 %and, i32 %val5, i32 %val6 1221 ret i32 %sel 1222 1223; CHECK: fun80 1224; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 1225; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 1226; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1227; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1228; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 1229} 1230 1231define i64 @fun81(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 1232 i64 %val5, i64 %val6) { 1233 %cmp0 = icmp eq i16 %val1, %val2 1234 %cmp1 = icmp eq i16 %val3, %val4 1235 %and = xor i1 %cmp0, %cmp1 1236 %sel = select i1 %and, i64 %val5, i64 %val6 1237 ret i64 %sel 1238 1239; CHECK: fun81 1240; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 1241; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 1242; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1243; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1244; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 1245} 1246 1247define float @fun82(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 1248 float %val5, float %val6) { 1249 %cmp0 = icmp eq i16 %val1, %val2 1250 %cmp1 = icmp eq i16 %val3, %val4 1251 %and = xor i1 %cmp0, %cmp1 1252 %sel = select i1 %and, float %val5, float %val6 1253 ret float %sel 1254 1255; CHECK: fun82 1256; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 1257; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 1258; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1259; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1260; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 1261} 1262 1263define double @fun83(i16 %val1, i16 %val2, i16 %val3, i16 %val4, 1264 double %val5, double %val6) { 1265 %cmp0 = icmp eq i16 %val1, %val2 1266 %cmp1 = icmp eq i16 %val3, %val4 1267 %and = xor i1 %cmp0, %cmp1 1268 %sel = select i1 %and, double %val5, double %val6 1269 ret double %sel 1270 1271; CHECK: fun83 1272; CHECK: cost of 3 for instruction: %cmp0 = icmp eq i16 %val1, %val2 1273; CHECK: cost of 3 for instruction: %cmp1 = icmp eq i16 %val3, %val4 1274; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1275; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1276; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 1277} 1278 1279define i8 @fun84(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 1280 i8 %val5, i8 %val6) { 1281 %cmp0 = icmp eq i32 %val1, %val2 1282 %cmp1 = icmp eq i32 %val3, %val4 1283 %and = xor i1 %cmp0, %cmp1 1284 %sel = select i1 %and, i8 %val5, i8 %val6 1285 ret i8 %sel 1286 1287; CHECK: fun84 1288; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 1289; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 1290; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1291; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1292; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 1293} 1294 1295define i16 @fun85(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 1296 i16 %val5, i16 %val6) { 1297 %cmp0 = icmp eq i32 %val1, %val2 1298 %cmp1 = icmp eq i32 %val3, %val4 1299 %and = xor i1 %cmp0, %cmp1 1300 %sel = select i1 %and, i16 %val5, i16 %val6 1301 ret i16 %sel 1302 1303; CHECK: fun85 1304; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 1305; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 1306; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1307; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1308; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 1309} 1310 1311define i32 @fun86(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 1312 i32 %val5, i32 %val6) { 1313 %cmp0 = icmp eq i32 %val1, %val2 1314 %cmp1 = icmp eq i32 %val3, %val4 1315 %and = xor i1 %cmp0, %cmp1 1316 %sel = select i1 %and, i32 %val5, i32 %val6 1317 ret i32 %sel 1318 1319; CHECK: fun86 1320; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 1321; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 1322; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1323; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1324; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 1325} 1326 1327define i64 @fun87(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 1328 i64 %val5, i64 %val6) { 1329 %cmp0 = icmp eq i32 %val1, %val2 1330 %cmp1 = icmp eq i32 %val3, %val4 1331 %and = xor i1 %cmp0, %cmp1 1332 %sel = select i1 %and, i64 %val5, i64 %val6 1333 ret i64 %sel 1334 1335; CHECK: fun87 1336; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 1337; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 1338; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1339; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1340; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 1341} 1342 1343define float @fun88(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 1344 float %val5, float %val6) { 1345 %cmp0 = icmp eq i32 %val1, %val2 1346 %cmp1 = icmp eq i32 %val3, %val4 1347 %and = xor i1 %cmp0, %cmp1 1348 %sel = select i1 %and, float %val5, float %val6 1349 ret float %sel 1350 1351; CHECK: fun88 1352; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 1353; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 1354; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1355; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1356; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 1357} 1358 1359define double @fun89(i32 %val1, i32 %val2, i32 %val3, i32 %val4, 1360 double %val5, double %val6) { 1361 %cmp0 = icmp eq i32 %val1, %val2 1362 %cmp1 = icmp eq i32 %val3, %val4 1363 %and = xor i1 %cmp0, %cmp1 1364 %sel = select i1 %and, double %val5, double %val6 1365 ret double %sel 1366 1367; CHECK: fun89 1368; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i32 %val1, %val2 1369; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i32 %val3, %val4 1370; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1371; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1372; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 1373} 1374 1375define i8 @fun90(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 1376 i8 %val5, i8 %val6) { 1377 %cmp0 = icmp eq i64 %val1, %val2 1378 %cmp1 = icmp eq i64 %val3, %val4 1379 %and = xor i1 %cmp0, %cmp1 1380 %sel = select i1 %and, i8 %val5, i8 %val6 1381 ret i8 %sel 1382 1383; CHECK: fun90 1384; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 1385; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 1386; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1387; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1388; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 1389} 1390 1391define i16 @fun91(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 1392 i16 %val5, i16 %val6) { 1393 %cmp0 = icmp eq i64 %val1, %val2 1394 %cmp1 = icmp eq i64 %val3, %val4 1395 %and = xor i1 %cmp0, %cmp1 1396 %sel = select i1 %and, i16 %val5, i16 %val6 1397 ret i16 %sel 1398 1399; CHECK: fun91 1400; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 1401; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 1402; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1403; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1404; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 1405} 1406 1407define i32 @fun92(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 1408 i32 %val5, i32 %val6) { 1409 %cmp0 = icmp eq i64 %val1, %val2 1410 %cmp1 = icmp eq i64 %val3, %val4 1411 %and = xor i1 %cmp0, %cmp1 1412 %sel = select i1 %and, i32 %val5, i32 %val6 1413 ret i32 %sel 1414 1415; CHECK: fun92 1416; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 1417; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 1418; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1419; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1420; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 1421} 1422 1423define i64 @fun93(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 1424 i64 %val5, i64 %val6) { 1425 %cmp0 = icmp eq i64 %val1, %val2 1426 %cmp1 = icmp eq i64 %val3, %val4 1427 %and = xor i1 %cmp0, %cmp1 1428 %sel = select i1 %and, i64 %val5, i64 %val6 1429 ret i64 %sel 1430 1431; CHECK: fun93 1432; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 1433; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 1434; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1435; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1436; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 1437} 1438 1439define float @fun94(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 1440 float %val5, float %val6) { 1441 %cmp0 = icmp eq i64 %val1, %val2 1442 %cmp1 = icmp eq i64 %val3, %val4 1443 %and = xor i1 %cmp0, %cmp1 1444 %sel = select i1 %and, float %val5, float %val6 1445 ret float %sel 1446 1447; CHECK: fun94 1448; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 1449; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 1450; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1451; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1452; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 1453} 1454 1455define double @fun95(i64 %val1, i64 %val2, i64 %val3, i64 %val4, 1456 double %val5, double %val6) { 1457 %cmp0 = icmp eq i64 %val1, %val2 1458 %cmp1 = icmp eq i64 %val3, %val4 1459 %and = xor i1 %cmp0, %cmp1 1460 %sel = select i1 %and, double %val5, double %val6 1461 ret double %sel 1462 1463; CHECK: fun95 1464; CHECK: cost of 1 for instruction: %cmp0 = icmp eq i64 %val1, %val2 1465; CHECK: cost of 1 for instruction: %cmp1 = icmp eq i64 %val3, %val4 1466; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1467; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1468; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 1469} 1470 1471define i8 @fun96(float %val1, float %val2, float %val3, float %val4, 1472 i8 %val5, i8 %val6) { 1473 %cmp0 = fcmp ogt float %val1, %val2 1474 %cmp1 = fcmp ogt float %val3, %val4 1475 %and = xor i1 %cmp0, %cmp1 1476 %sel = select i1 %and, i8 %val5, i8 %val6 1477 ret i8 %sel 1478 1479; CHECK: fun96 1480; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 1481; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 1482; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1483; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1484; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 1485} 1486 1487define i16 @fun97(float %val1, float %val2, float %val3, float %val4, 1488 i16 %val5, i16 %val6) { 1489 %cmp0 = fcmp ogt float %val1, %val2 1490 %cmp1 = fcmp ogt float %val3, %val4 1491 %and = xor i1 %cmp0, %cmp1 1492 %sel = select i1 %and, i16 %val5, i16 %val6 1493 ret i16 %sel 1494 1495; CHECK: fun97 1496; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 1497; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 1498; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1499; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1500; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 1501} 1502 1503define i32 @fun98(float %val1, float %val2, float %val3, float %val4, 1504 i32 %val5, i32 %val6) { 1505 %cmp0 = fcmp ogt float %val1, %val2 1506 %cmp1 = fcmp ogt float %val3, %val4 1507 %and = xor i1 %cmp0, %cmp1 1508 %sel = select i1 %and, i32 %val5, i32 %val6 1509 ret i32 %sel 1510 1511; CHECK: fun98 1512; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 1513; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 1514; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1515; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1516; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 1517} 1518 1519define i64 @fun99(float %val1, float %val2, float %val3, float %val4, 1520 i64 %val5, i64 %val6) { 1521 %cmp0 = fcmp ogt float %val1, %val2 1522 %cmp1 = fcmp ogt float %val3, %val4 1523 %and = xor i1 %cmp0, %cmp1 1524 %sel = select i1 %and, i64 %val5, i64 %val6 1525 ret i64 %sel 1526 1527; CHECK: fun99 1528; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 1529; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 1530; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1531; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1532; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 1533} 1534 1535define float @fun100(float %val1, float %val2, float %val3, float %val4, 1536 float %val5, float %val6) { 1537 %cmp0 = fcmp ogt float %val1, %val2 1538 %cmp1 = fcmp ogt float %val3, %val4 1539 %and = xor i1 %cmp0, %cmp1 1540 %sel = select i1 %and, float %val5, float %val6 1541 ret float %sel 1542 1543; CHECK: fun100 1544; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 1545; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 1546; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1547; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1548; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 1549} 1550 1551define double @fun101(float %val1, float %val2, float %val3, float %val4, 1552 double %val5, double %val6) { 1553 %cmp0 = fcmp ogt float %val1, %val2 1554 %cmp1 = fcmp ogt float %val3, %val4 1555 %and = xor i1 %cmp0, %cmp1 1556 %sel = select i1 %and, double %val5, double %val6 1557 ret double %sel 1558 1559; CHECK: fun101 1560; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt float %val1, %val2 1561; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt float %val3, %val4 1562; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1563; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1564; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 1565} 1566 1567define i8 @fun102(double %val1, double %val2, double %val3, double %val4, 1568 i8 %val5, i8 %val6) { 1569 %cmp0 = fcmp ogt double %val1, %val2 1570 %cmp1 = fcmp ogt double %val3, %val4 1571 %and = xor i1 %cmp0, %cmp1 1572 %sel = select i1 %and, i8 %val5, i8 %val6 1573 ret i8 %sel 1574 1575; CHECK: fun102 1576; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1577; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1578; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1579; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1580; CHECK: cost of 1 for instruction: %sel = select i1 %and, i8 %val5, i8 %val6 1581} 1582 1583define i16 @fun103(double %val1, double %val2, double %val3, double %val4, 1584 i16 %val5, i16 %val6) { 1585 %cmp0 = fcmp ogt double %val1, %val2 1586 %cmp1 = fcmp ogt double %val3, %val4 1587 %and = xor i1 %cmp0, %cmp1 1588 %sel = select i1 %and, i16 %val5, i16 %val6 1589 ret i16 %sel 1590 1591; CHECK: fun103 1592; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1593; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1594; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1595; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1596; CHECK: cost of 1 for instruction: %sel = select i1 %and, i16 %val5, i16 %val6 1597} 1598 1599define i32 @fun104(double %val1, double %val2, double %val3, double %val4, 1600 i32 %val5, i32 %val6) { 1601 %cmp0 = fcmp ogt double %val1, %val2 1602 %cmp1 = fcmp ogt double %val3, %val4 1603 %and = xor i1 %cmp0, %cmp1 1604 %sel = select i1 %and, i32 %val5, i32 %val6 1605 ret i32 %sel 1606 1607; CHECK: fun104 1608; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1609; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1610; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1611; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1612; CHECK: cost of 1 for instruction: %sel = select i1 %and, i32 %val5, i32 %val6 1613} 1614 1615define i64 @fun105(double %val1, double %val2, double %val3, double %val4, 1616 i64 %val5, i64 %val6) { 1617 %cmp0 = fcmp ogt double %val1, %val2 1618 %cmp1 = fcmp ogt double %val3, %val4 1619 %and = xor i1 %cmp0, %cmp1 1620 %sel = select i1 %and, i64 %val5, i64 %val6 1621 ret i64 %sel 1622 1623; CHECK: fun105 1624; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1625; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1626; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1627; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1628; CHECK: cost of 1 for instruction: %sel = select i1 %and, i64 %val5, i64 %val6 1629} 1630 1631define float @fun106(double %val1, double %val2, double %val3, double %val4, 1632 float %val5, float %val6) { 1633 %cmp0 = fcmp ogt double %val1, %val2 1634 %cmp1 = fcmp ogt double %val3, %val4 1635 %and = xor i1 %cmp0, %cmp1 1636 %sel = select i1 %and, float %val5, float %val6 1637 ret float %sel 1638 1639; CHECK: fun106 1640; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1641; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1642; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1643; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1644; CHECK: cost of 4 for instruction: %sel = select i1 %and, float %val5, float %val6 1645} 1646 1647define double @fun107(double %val1, double %val2, double %val3, double %val4, 1648 double %val5, double %val6) { 1649 %cmp0 = fcmp ogt double %val1, %val2 1650 %cmp1 = fcmp ogt double %val3, %val4 1651 %and = xor i1 %cmp0, %cmp1 1652 %sel = select i1 %and, double %val5, double %val6 1653 ret double %sel 1654 1655; CHECK: fun107 1656; CHECK: cost of 1 for instruction: %cmp0 = fcmp ogt double %val1, %val2 1657; CHECK: cost of 1 for instruction: %cmp1 = fcmp ogt double %val3, %val4 1658; CHECK: cost of 5 for instruction: %and = xor i1 %cmp0, %cmp1 1659; IPMSQ: cost of 7 for instruction: %and = xor i1 %cmp0, %cmp1 1660; CHECK: cost of 4 for instruction: %sel = select i1 %and, double %val5, double %val6 1661} 1662 1663