brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.3 KiB · 25dfb3c Raw
337 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes='require<profile-summary>,function(codegenprepare)' < %s | FileCheck %s3 4target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"5target triple = "thumbv8.1m.main-none-eabi"6 7define i32 @lshr3_then(i32 %a) {8; CHECK-LABEL: @lshr3_then(9; CHECK-NEXT:  entry:10; CHECK-NEXT:    [[L:%.*]] = lshr i32 [[A:%.*]], 311; CHECK-NEXT:    [[TMP0:%.*]] = icmp eq i32 [[L]], 012; CHECK-NEXT:    br i1 [[TMP0]], label [[THEN:%.*]], label [[ELSE:%.*]]13; CHECK:       then:14; CHECK-NEXT:    ret i32 015; CHECK:       else:16; CHECK-NEXT:    ret i32 [[L]]17;18entry:19  %c = icmp ult i32 %a, 820  br i1 %c, label %then, label %else21 22then:23  ret i32 024 25else:26  %l = lshr i32 %a, 327  ret i32 %l28}29 30define i32 @lshr5_else(i32 %a) {31; CHECK-LABEL: @lshr5_else(32; CHECK-NEXT:  entry:33; CHECK-NEXT:    [[L:%.*]] = lshr i32 [[A:%.*]], 534; CHECK-NEXT:    [[TMP0:%.*]] = icmp eq i32 [[L]], 035; CHECK-NEXT:    br i1 [[TMP0]], label [[THEN:%.*]], label [[ELSE:%.*]]36; CHECK:       then:37; CHECK-NEXT:    ret i32 [[L]]38; CHECK:       else:39; CHECK-NEXT:    ret i32 040;41entry:42  %c = icmp ult i32 %a, 3243  br i1 %c, label %then, label %else44 45then:46  %l = lshr i32 %a, 547  ret i32 %l48 49else:50  ret i32 051}52 53define i32 @lshr2_entry(i32 %a) {54; CHECK-LABEL: @lshr2_entry(55; CHECK-NEXT:  entry:56; CHECK-NEXT:    [[L:%.*]] = lshr i32 [[A:%.*]], 157; CHECK-NEXT:    [[TMP0:%.*]] = icmp eq i32 [[L]], 058; CHECK-NEXT:    br i1 [[TMP0]], label [[THEN:%.*]], label [[ELSE:%.*]]59; CHECK:       then:60; CHECK-NEXT:    ret i32 [[L]]61; CHECK:       else:62; CHECK-NEXT:    ret i32 063;64entry:65  %l = lshr i32 %a, 166  %c = icmp ult i32 %a, 267  br i1 %c, label %then, label %else68 69then:70  ret i32 %l71 72else:73  ret i32 074}75 76define i32 @lshr5mismatch(i32 %a) {77; CHECK-LABEL: @lshr5mismatch(78; CHECK-NEXT:  entry:79; CHECK-NEXT:    [[C:%.*]] = icmp ult i32 [[A:%.*]], 1780; CHECK-NEXT:    br i1 [[C]], label [[THEN:%.*]], label [[ELSE:%.*]]81; CHECK:       then:82; CHECK-NEXT:    [[L:%.*]] = lshr i32 [[A]], 583; CHECK-NEXT:    ret i32 [[L]]84; CHECK:       else:85; CHECK-NEXT:    ret i32 086;87entry:88  %c = icmp ult i32 %a, 1789  br i1 %c, label %then, label %else90 91then:92  %l = lshr i32 %a, 593  ret i32 %l94 95else:96  ret i32 097}98 99define i32 @ashr5_else(i32 %a) {100; CHECK-LABEL: @ashr5_else(101; CHECK-NEXT:  entry:102; CHECK-NEXT:    [[L:%.*]] = ashr i32 [[A:%.*]], 5103; CHECK-NEXT:    [[TMP0:%.*]] = icmp eq i32 [[L]], 0104; CHECK-NEXT:    br i1 [[TMP0]], label [[THEN:%.*]], label [[ELSE:%.*]]105; CHECK:       then:106; CHECK-NEXT:    ret i32 [[L]]107; CHECK:       else:108; CHECK-NEXT:    ret i32 0109;110entry:111  %c = icmp ult i32 %a, 32112  br i1 %c, label %then, label %else113 114then:115  %l = ashr i32 %a, 5116  ret i32 %l117 118else:119  ret i32 0120}121 122define i32 @add10_else(i32 %a) {123; CHECK-LABEL: @add10_else(124; CHECK-NEXT:  entry:125; CHECK-NEXT:    [[C:%.*]] = icmp eq i32 [[A:%.*]], 10126; CHECK-NEXT:    br i1 [[C]], label [[THEN:%.*]], label [[ELSE:%.*]]127; CHECK:       then:128; CHECK-NEXT:    ret i32 0129; CHECK:       else:130; CHECK-NEXT:    [[L:%.*]] = add i32 [[A]], 10131; CHECK-NEXT:    ret i32 [[L]]132;133entry:134  %c = icmp eq i32 %a, 10135  br i1 %c, label %then, label %else136 137then:138  ret i32 0139 140else:141  %l = add i32 %a, 10142  ret i32 %l143}144 145define i32 @addm10_then(i32 %a) {146; CHECK-LABEL: @addm10_then(147; CHECK-NEXT:  entry:148; CHECK-NEXT:    [[L:%.*]] = add i32 [[A:%.*]], -10149; CHECK-NEXT:    [[TMP0:%.*]] = icmp eq i32 [[L]], 0150; CHECK-NEXT:    br i1 [[TMP0]], label [[THEN:%.*]], label [[ELSE:%.*]]151; CHECK:       then:152; CHECK-NEXT:    ret i32 [[L]]153; CHECK:       else:154; CHECK-NEXT:    ret i32 0155;156entry:157  %c = icmp eq i32 %a, 10158  br i1 %c, label %then, label %else159 160then:161  %l = add i32 %a, -10162  ret i32 %l163 164else:165  ret i32 0166}167 168define i32 @add_missmatch(i32 %a) {169; CHECK-LABEL: @add_missmatch(170; CHECK-NEXT:  entry:171; CHECK-NEXT:    [[C:%.*]] = icmp eq i32 [[A:%.*]], 10172; CHECK-NEXT:    br i1 [[C]], label [[THEN:%.*]], label [[ELSE:%.*]]173; CHECK:       then:174; CHECK-NEXT:    [[L:%.*]] = add i32 [[A]], 10175; CHECK-NEXT:    ret i32 [[L]]176; CHECK:       else:177; CHECK-NEXT:    ret i32 0178;179entry:180  %c = icmp eq i32 %a, 10181  br i1 %c, label %then, label %else182 183then:184  %l = add i32 %a, 10185  ret i32 %l186 187else:188  ret i32 0189}190 191define i32 @sub10_else(i32 %a) {192; CHECK-LABEL: @sub10_else(193; CHECK-NEXT:  entry:194; CHECK-NEXT:    [[L:%.*]] = sub i32 [[A:%.*]], 10195; CHECK-NEXT:    [[TMP0:%.*]] = icmp eq i32 [[L]], 0196; CHECK-NEXT:    br i1 [[TMP0]], label [[THEN:%.*]], label [[ELSE:%.*]]197; CHECK:       then:198; CHECK-NEXT:    ret i32 0199; CHECK:       else:200; CHECK-NEXT:    ret i32 [[L]]201;202entry:203  %c = icmp eq i32 %a, 10204  br i1 %c, label %then, label %else205 206then:207  ret i32 0208 209else:210  %l = sub i32 %a, 10211  ret i32 %l212}213 214define i32 @sub10_else_drop_nuw(i32 %a) {215; CHECK-LABEL: @sub10_else_drop_nuw(216; CHECK-NEXT:  entry:217; CHECK-NEXT:    [[L:%.*]] = sub i32 [[A:%.*]], 10218; CHECK-NEXT:    [[TMP0:%.*]] = icmp eq i32 [[L]], 0219; CHECK-NEXT:    br i1 [[TMP0]], label [[THEN:%.*]], label [[ELSE:%.*]]220; CHECK:       then:221; CHECK-NEXT:    ret i32 0222; CHECK:       else:223; CHECK-NEXT:    ret i32 [[L]]224;225entry:226  %c = icmp eq i32 %a, 10227  br i1 %c, label %then, label %else228 229then:230  ret i32 0231 232else:233  %l = sub nuw i32 %a, 10234  ret i32 %l235}236 237define i32 @subm10_then(i32 %a) {238; CHECK-LABEL: @subm10_then(239; CHECK-NEXT:  entry:240; CHECK-NEXT:    [[L:%.*]] = sub i32 [[A:%.*]], -10241; CHECK-NEXT:    [[TMP0:%.*]] = icmp eq i32 [[L]], 0242; CHECK-NEXT:    br i1 [[TMP0]], label [[THEN:%.*]], label [[ELSE:%.*]]243; CHECK:       then:244; CHECK-NEXT:    ret i32 [[L]]245; CHECK:       else:246; CHECK-NEXT:    ret i32 0247;248entry:249  %c = icmp eq i32 %a, -10250  br i1 %c, label %then, label %else251 252then:253  %l = sub i32 %a, -10254  ret i32 %l255 256else:257  ret i32 0258}259 260define i64 @lshr64(i64 %a) {261; CHECK-LABEL: @lshr64(262; CHECK-NEXT:  entry:263; CHECK-NEXT:    [[L:%.*]] = lshr i64 [[A:%.*]], 40264; CHECK-NEXT:    [[TMP0:%.*]] = icmp eq i64 [[L]], 0265; CHECK-NEXT:    br i1 [[TMP0]], label [[THEN:%.*]], label [[ELSE:%.*]]266; CHECK:       then:267; CHECK-NEXT:    ret i64 0268; CHECK:       else:269; CHECK-NEXT:    ret i64 [[L]]270;271entry:272  %c = icmp ult i64 %a, 1099511627776273  br i1 %c, label %then, label %else274 275then:276  ret i64 0277 278else:279  %l = lshr i64 %a, 40280  ret i64 %l281}282 283define i128 @lshr128(i128 %a) {284; CHECK-LABEL: @lshr128(285; CHECK-NEXT:  entry:286; CHECK-NEXT:    [[L:%.*]] = lshr i128 [[A:%.*]], 65287; CHECK-NEXT:    [[TMP0:%.*]] = icmp eq i128 [[L]], 0288; CHECK-NEXT:    br i1 [[TMP0]], label [[THEN:%.*]], label [[ELSE:%.*]]289; CHECK:       then:290; CHECK-NEXT:    ret i128 0291; CHECK:       else:292; CHECK-NEXT:    ret i128 [[L]]293;294entry:295  %c = icmp ult i128 %a, 36893488147419103232296  br i1 %c, label %then, label %else297 298then:299  ret i128 0300 301else:302  %l = lshr i128 %a, 65303  ret i128 %l304}305 306define i32 @addm1_dom(i32 %a) {307; CHECK-LABEL: @addm1_dom(308; CHECK-NEXT:  entry:309; CHECK-NEXT:    [[C1:%.*]] = icmp eq i32 [[A:%.*]], 100310; CHECK-NEXT:    br i1 [[C1]], label [[IF:%.*]], label [[ELSE:%.*]]311; CHECK:       if:312; CHECK-NEXT:    [[C:%.*]] = icmp eq i32 [[A]], -1313; CHECK-NEXT:    br i1 [[C]], label [[THEN:%.*]], label [[ELSE]]314; CHECK:       then:315; CHECK-NEXT:    ret i32 0316; CHECK:       else:317; CHECK-NEXT:    [[L:%.*]] = add i32 [[A]], 1318; CHECK-NEXT:    ret i32 [[L]]319;320entry:321  %c1 = icmp eq i32 %a, 100322  br i1 %c1, label %if, label %else323 324if:325  %c = icmp eq i32 %a, -1326  br i1 %c, label %then, label %else327 328then:329  ret i32 0330 331else:332  %l = add i32 %a, 1333  ret i32 %l334}335 336declare void @other()337