485 lines · plain
1; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -mtriple=systemz-unknown -mcpu=zEC12 | FileCheck %s2;3; Check the cost values for older subtargets that use an IPM sequence for4; extension of a compare result.5 6define i8 @fun0(i8 %val1, i8 %val2) {7 %cmp = icmp eq i8 %val1, %val28 %v = sext i1 %cmp to i89 ret i8 %v10 11; CHECK: fun012; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val213; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i814}15 16define i16 @fun1(i8 %val1, i8 %val2) {17 %cmp = icmp eq i8 %val1, %val218 %v = sext i1 %cmp to i1619 ret i16 %v20 21; CHECK: fun122; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val223; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i1624}25 26define i32 @fun2(i8 %val1, i8 %val2) {27 %cmp = icmp eq i8 %val1, %val228 %v = sext i1 %cmp to i3229 ret i32 %v30 31; CHECK: fun232; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val233; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i3234}35 36define i64 @fun3(i8 %val1, i8 %val2) {37 %cmp = icmp eq i8 %val1, %val238 %v = sext i1 %cmp to i6439 ret i64 %v40 41; CHECK: fun342; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val243; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i6444}45 46define i8 @fun4(i16 %val1, i16 %val2) {47 %cmp = icmp eq i16 %val1, %val248 %v = sext i1 %cmp to i849 ret i8 %v50 51; CHECK: fun452; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val253; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i854}55 56define i16 @fun5(i16 %val1, i16 %val2) {57 %cmp = icmp eq i16 %val1, %val258 %v = sext i1 %cmp to i1659 ret i16 %v60 61; CHECK: fun562; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val263; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i1664}65 66define i32 @fun6(i16 %val1, i16 %val2) {67 %cmp = icmp eq i16 %val1, %val268 %v = sext i1 %cmp to i3269 ret i32 %v70 71; CHECK: fun672; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val273; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i3274}75 76define i64 @fun7(i16 %val1, i16 %val2) {77 %cmp = icmp eq i16 %val1, %val278 %v = sext i1 %cmp to i6479 ret i64 %v80 81; CHECK: fun782; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val283; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i6484}85 86define i8 @fun8(i32 %val1, i32 %val2) {87 %cmp = icmp eq i32 %val1, %val288 %v = sext i1 %cmp to i889 ret i8 %v90 91; CHECK: fun892; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val293; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i894}95 96define i16 @fun9(i32 %val1, i32 %val2) {97 %cmp = icmp eq i32 %val1, %val298 %v = sext i1 %cmp to i1699 ret i16 %v100 101; CHECK: fun9102; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2103; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i16104}105 106define i32 @fun10(i32 %val1, i32 %val2) {107 %cmp = icmp eq i32 %val1, %val2108 %v = sext i1 %cmp to i32109 ret i32 %v110 111; CHECK: fun10112; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2113; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i32114}115 116define i64 @fun11(i32 %val1, i32 %val2) {117 %cmp = icmp eq i32 %val1, %val2118 %v = sext i1 %cmp to i64119 ret i64 %v120 121; CHECK: fun11122; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2123; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i64124}125 126define i8 @fun12(i64 %val1, i64 %val2) {127 %cmp = icmp eq i64 %val1, %val2128 %v = sext i1 %cmp to i8129 ret i8 %v130 131; CHECK: fun12132; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2133; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i8134}135 136define i16 @fun13(i64 %val1, i64 %val2) {137 %cmp = icmp eq i64 %val1, %val2138 %v = sext i1 %cmp to i16139 ret i16 %v140 141; CHECK: fun13142; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2143; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i16144}145 146define i32 @fun14(i64 %val1, i64 %val2) {147 %cmp = icmp eq i64 %val1, %val2148 %v = sext i1 %cmp to i32149 ret i32 %v150 151; CHECK: fun14152; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2153; CHECK: cost of 3 for instruction: %v = sext i1 %cmp to i32154}155 156define i64 @fun15(i64 %val1, i64 %val2) {157 %cmp = icmp eq i64 %val1, %val2158 %v = sext i1 %cmp to i64159 ret i64 %v160 161; CHECK: fun15162; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2163; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i64164}165 166define i8 @fun16(float %val1, float %val2) {167 %cmp = fcmp ogt float %val1, %val2168 %v = sext i1 %cmp to i8169 ret i8 %v170 171; CHECK: fun16172; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2173; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i8174}175 176define i16 @fun17(float %val1, float %val2) {177 %cmp = fcmp ogt float %val1, %val2178 %v = sext i1 %cmp to i16179 ret i16 %v180 181; CHECK: fun17182; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2183; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i16184}185 186define i32 @fun18(float %val1, float %val2) {187 %cmp = fcmp ogt float %val1, %val2188 %v = sext i1 %cmp to i32189 ret i32 %v190 191; CHECK: fun18192; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2193; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i32194}195 196define i64 @fun19(float %val1, float %val2) {197 %cmp = fcmp ogt float %val1, %val2198 %v = sext i1 %cmp to i64199 ret i64 %v200 201; CHECK: fun19202; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2203; CHECK: cost of 5 for instruction: %v = sext i1 %cmp to i64204}205 206define i8 @fun20(double %val1, double %val2) {207 %cmp = fcmp ogt double %val1, %val2208 %v = sext i1 %cmp to i8209 ret i8 %v210 211; CHECK: fun20212; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2213; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i8214}215 216define i16 @fun21(double %val1, double %val2) {217 %cmp = fcmp ogt double %val1, %val2218 %v = sext i1 %cmp to i16219 ret i16 %v220 221; CHECK: fun21222; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2223; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i16224}225 226define i32 @fun22(double %val1, double %val2) {227 %cmp = fcmp ogt double %val1, %val2228 %v = sext i1 %cmp to i32229 ret i32 %v230 231; CHECK: fun22232; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2233; CHECK: cost of 4 for instruction: %v = sext i1 %cmp to i32234}235 236define i64 @fun23(double %val1, double %val2) {237 %cmp = fcmp ogt double %val1, %val2238 %v = sext i1 %cmp to i64239 ret i64 %v240 241; CHECK: fun23242; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2243; CHECK: cost of 5 for instruction: %v = sext i1 %cmp to i64244}245 246define i8 @fun120(i8 %val1, i8 %val2) {247 %cmp = icmp eq i8 %val1, %val2248 %v = zext i1 %cmp to i8249 ret i8 %v250 251; CHECK: fun120252; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2253; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i8254}255 256define i16 @fun121(i8 %val1, i8 %val2) {257 %cmp = icmp eq i8 %val1, %val2258 %v = zext i1 %cmp to i16259 ret i16 %v260 261; CHECK: fun121262; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2263; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i16264}265 266define i32 @fun122(i8 %val1, i8 %val2) {267 %cmp = icmp eq i8 %val1, %val2268 %v = zext i1 %cmp to i32269 ret i32 %v270 271; CHECK: fun122272; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2273; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i32274}275 276define i64 @fun123(i8 %val1, i8 %val2) {277 %cmp = icmp eq i8 %val1, %val2278 %v = zext i1 %cmp to i64279 ret i64 %v280 281; CHECK: fun123282; CHECK: cost of 3 for instruction: %cmp = icmp eq i8 %val1, %val2283; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i64284}285 286define i8 @fun124(i16 %val1, i16 %val2) {287 %cmp = icmp eq i16 %val1, %val2288 %v = zext i1 %cmp to i8289 ret i8 %v290 291; CHECK: fun124292; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2293; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i8294}295 296define i16 @fun125(i16 %val1, i16 %val2) {297 %cmp = icmp eq i16 %val1, %val2298 %v = zext i1 %cmp to i16299 ret i16 %v300 301; CHECK: fun125302; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2303; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i16304}305 306define i32 @fun126(i16 %val1, i16 %val2) {307 %cmp = icmp eq i16 %val1, %val2308 %v = zext i1 %cmp to i32309 ret i32 %v310 311; CHECK: fun126312; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2313; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i32314}315 316define i64 @fun127(i16 %val1, i16 %val2) {317 %cmp = icmp eq i16 %val1, %val2318 %v = zext i1 %cmp to i64319 ret i64 %v320 321; CHECK: fun127322; CHECK: cost of 3 for instruction: %cmp = icmp eq i16 %val1, %val2323; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i64324}325 326define i8 @fun128(i32 %val1, i32 %val2) {327 %cmp = icmp eq i32 %val1, %val2328 %v = zext i1 %cmp to i8329 ret i8 %v330 331; CHECK: fun128332; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2333; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i8334}335 336define i16 @fun129(i32 %val1, i32 %val2) {337 %cmp = icmp eq i32 %val1, %val2338 %v = zext i1 %cmp to i16339 ret i16 %v340 341; CHECK: fun129342; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2343; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i16344}345 346define i32 @fun130(i32 %val1, i32 %val2) {347 %cmp = icmp eq i32 %val1, %val2348 %v = zext i1 %cmp to i32349 ret i32 %v350 351; CHECK: fun130352; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2353; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i32354}355 356define i64 @fun131(i32 %val1, i32 %val2) {357 %cmp = icmp eq i32 %val1, %val2358 %v = zext i1 %cmp to i64359 ret i64 %v360 361; CHECK: fun131362; CHECK: cost of 1 for instruction: %cmp = icmp eq i32 %val1, %val2363; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i64364}365 366define i8 @fun132(i64 %val1, i64 %val2) {367 %cmp = icmp eq i64 %val1, %val2368 %v = zext i1 %cmp to i8369 ret i8 %v370 371; CHECK: fun132372; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2373; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i8374}375 376define i16 @fun133(i64 %val1, i64 %val2) {377 %cmp = icmp eq i64 %val1, %val2378 %v = zext i1 %cmp to i16379 ret i16 %v380 381; CHECK: fun133382; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2383; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i16384}385 386define i32 @fun134(i64 %val1, i64 %val2) {387 %cmp = icmp eq i64 %val1, %val2388 %v = zext i1 %cmp to i32389 ret i32 %v390 391; CHECK: fun134392; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2393; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i32394}395 396define i64 @fun135(i64 %val1, i64 %val2) {397 %cmp = icmp eq i64 %val1, %val2398 %v = zext i1 %cmp to i64399 ret i64 %v400 401; CHECK: fun135402; CHECK: cost of 1 for instruction: %cmp = icmp eq i64 %val1, %val2403; CHECK: cost of 3 for instruction: %v = zext i1 %cmp to i64404}405 406define i8 @fun136(float %val1, float %val2) {407 %cmp = fcmp ogt float %val1, %val2408 %v = zext i1 %cmp to i8409 ret i8 %v410 411; CHECK: fun136412; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2413; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i8414}415 416define i16 @fun137(float %val1, float %val2) {417 %cmp = fcmp ogt float %val1, %val2418 %v = zext i1 %cmp to i16419 ret i16 %v420 421; CHECK: fun137422; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2423; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i16424}425 426define i32 @fun138(float %val1, float %val2) {427 %cmp = fcmp ogt float %val1, %val2428 %v = zext i1 %cmp to i32429 ret i32 %v430 431; CHECK: fun138432; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2433; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i32434}435 436define i64 @fun139(float %val1, float %val2) {437 %cmp = fcmp ogt float %val1, %val2438 %v = zext i1 %cmp to i64439 ret i64 %v440 441; CHECK: fun139442; CHECK: cost of 1 for instruction: %cmp = fcmp ogt float %val1, %val2443; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i64444}445 446define i8 @fun140(double %val1, double %val2) {447 %cmp = fcmp ogt double %val1, %val2448 %v = zext i1 %cmp to i8449 ret i8 %v450 451; CHECK: fun140452; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2453; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i8454}455 456define i16 @fun141(double %val1, double %val2) {457 %cmp = fcmp ogt double %val1, %val2458 %v = zext i1 %cmp to i16459 ret i16 %v460 461; CHECK: fun141462; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2463; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i16464}465 466define i32 @fun142(double %val1, double %val2) {467 %cmp = fcmp ogt double %val1, %val2468 %v = zext i1 %cmp to i32469 ret i32 %v470 471; CHECK: fun142472; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2473; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i32474}475 476define i64 @fun143(double %val1, double %val2) {477 %cmp = fcmp ogt double %val1, %val2478 %v = zext i1 %cmp to i64479 ret i64 %v480 481; CHECK: fun143482; CHECK: cost of 1 for instruction: %cmp = fcmp ogt double %val1, %val2483; CHECK: cost of 4 for instruction: %v = zext i1 %cmp to i64484}485