brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · adeeea6 Raw
224 lines · plain
1; RUN: llc < %s2 3define i32 @test1(i32 %x) nounwind uwtable ssp {4entry:5  %retval = alloca i32, align 46  %x.addr = alloca i32, align 47  store i32 %x, ptr %x.addr, align 48  %tmp = load i32, ptr %x.addr, align 49  %cmp = icmp sgt i32 %tmp, 110  %conv = zext i1 %cmp to i3211  %conv1 = sext i32 %conv to i6412  %expval = call i64 @llvm.expect.i64(i64 %conv1, i64 1)13  %tobool = icmp ne i64 %expval, 014  br i1 %tobool, label %if.then, label %if.end15 16if.then:                                          ; preds = %entry17  %call = call i32 (...) @f()18  store i32 %call, ptr %retval19  br label %return20 21if.end:                                           ; preds = %entry22  store i32 1, ptr %retval23  br label %return24 25return:                                           ; preds = %if.end, %if.then26  %0 = load i32, ptr %retval27  ret i32 %028}29 30declare i64 @llvm.expect.i64(i64, i64) nounwind readnone31 32declare i32 @f(...)33 34define i32 @test2(i32 %x) nounwind uwtable ssp {35entry:36  %retval = alloca i32, align 437  %x.addr = alloca i32, align 438  store i32 %x, ptr %x.addr, align 439  %tmp = load i32, ptr %x.addr, align 440  %conv = sext i32 %tmp to i6441  %expval = call i64 @llvm.expect.i64(i64 %conv, i64 1)42  %tobool = icmp ne i64 %expval, 043  br i1 %tobool, label %if.then, label %if.end44 45if.then:                                          ; preds = %entry46  %call = call i32 (...) @f()47  store i32 %call, ptr %retval48  br label %return49 50if.end:                                           ; preds = %entry51  store i32 1, ptr %retval52  br label %return53 54return:                                           ; preds = %if.end, %if.then55  %0 = load i32, ptr %retval56  ret i32 %057}58 59define i32 @test3(i32 %x) nounwind uwtable ssp {60entry:61  %retval = alloca i32, align 462  %x.addr = alloca i32, align 463  store i32 %x, ptr %x.addr, align 464  %tmp = load i32, ptr %x.addr, align 465  %tobool = icmp ne i32 %tmp, 066  %lnot = xor i1 %tobool, true67  %lnot.ext = zext i1 %lnot to i3268  %conv = sext i32 %lnot.ext to i6469  %expval = call i64 @llvm.expect.i64(i64 %conv, i64 1)70  %tobool1 = icmp ne i64 %expval, 071  br i1 %tobool1, label %if.then, label %if.end72 73if.then:                                          ; preds = %entry74  %call = call i32 (...) @f()75  store i32 %call, ptr %retval76  br label %return77 78if.end:                                           ; preds = %entry79  store i32 1, ptr %retval80  br label %return81 82return:                                           ; preds = %if.end, %if.then83  %0 = load i32, ptr %retval84  ret i32 %085}86 87define i32 @test4(i32 %x) nounwind uwtable ssp {88entry:89  %retval = alloca i32, align 490  %x.addr = alloca i32, align 491  store i32 %x, ptr %x.addr, align 492  %tmp = load i32, ptr %x.addr, align 493  %tobool = icmp ne i32 %tmp, 094  %lnot = xor i1 %tobool, true95  %lnot1 = xor i1 %lnot, true96  %lnot.ext = zext i1 %lnot1 to i3297  %conv = sext i32 %lnot.ext to i6498  %expval = call i64 @llvm.expect.i64(i64 %conv, i64 1)99  %tobool2 = icmp ne i64 %expval, 0100  br i1 %tobool2, label %if.then, label %if.end101 102if.then:                                          ; preds = %entry103  %call = call i32 (...) @f()104  store i32 %call, ptr %retval105  br label %return106 107if.end:                                           ; preds = %entry108  store i32 1, ptr %retval109  br label %return110 111return:                                           ; preds = %if.end, %if.then112  %0 = load i32, ptr %retval113  ret i32 %0114}115 116define i32 @test5(i32 %x) nounwind uwtable ssp {117entry:118  %retval = alloca i32, align 4119  %x.addr = alloca i32, align 4120  store i32 %x, ptr %x.addr, align 4121  %tmp = load i32, ptr %x.addr, align 4122  %cmp = icmp slt i32 %tmp, 0123  %conv = zext i1 %cmp to i32124  %conv1 = sext i32 %conv to i64125  %expval = call i64 @llvm.expect.i64(i64 %conv1, i64 0)126  %tobool = icmp ne i64 %expval, 0127  br i1 %tobool, label %if.then, label %if.end128 129if.then:                                          ; preds = %entry130  %call = call i32 (...) @f()131  store i32 %call, ptr %retval132  br label %return133 134if.end:                                           ; preds = %entry135  store i32 1, ptr %retval136  br label %return137 138return:                                           ; preds = %if.end, %if.then139  %0 = load i32, ptr %retval140  ret i32 %0141}142 143define i32 @test6(i32 %x) nounwind uwtable ssp {144entry:145  %retval = alloca i32, align 4146  %x.addr = alloca i32, align 4147  store i32 %x, ptr %x.addr, align 4148  %tmp = load i32, ptr %x.addr, align 4149  %conv = sext i32 %tmp to i64150  %expval = call i64 @llvm.expect.i64(i64 %conv, i64 1)151  switch i64 %expval, label %sw.epilog [152    i64 1, label %sw.bb153    i64 2, label %sw.bb154  ]155 156sw.bb:                                            ; preds = %entry, %entry157  store i32 0, ptr %retval158  br label %return159 160sw.epilog:                                        ; preds = %entry161  store i32 1, ptr %retval162  br label %return163 164return:                                           ; preds = %sw.epilog, %sw.bb165  %0 = load i32, ptr %retval166  ret i32 %0167}168 169define i32 @test7(i32 %x) nounwind uwtable ssp {170entry:171  %retval = alloca i32, align 4172  %x.addr = alloca i32, align 4173  store i32 %x, ptr %x.addr, align 4174  %tmp = load i32, ptr %x.addr, align 4175  %conv = sext i32 %tmp to i64176  %expval = call i64 @llvm.expect.i64(i64 %conv, i64 1)177  switch i64 %expval, label %sw.epilog [178    i64 2, label %sw.bb179    i64 3, label %sw.bb180  ]181 182sw.bb:                                            ; preds = %entry, %entry183  %tmp1 = load i32, ptr %x.addr, align 4184  store i32 %tmp1, ptr %retval185  br label %return186 187sw.epilog:                                        ; preds = %entry188  store i32 0, ptr %retval189  br label %return190 191return:                                           ; preds = %sw.epilog, %sw.bb192  %0 = load i32, ptr %retval193  ret i32 %0194}195 196define i32 @test8(i32 %x) nounwind uwtable ssp {197entry:198  %retval = alloca i32, align 4199  %x.addr = alloca i32, align 4200  store i32 %x, ptr %x.addr, align 4201  %tmp = load i32, ptr %x.addr, align 4202  %cmp = icmp sgt i32 %tmp, 1203  %conv = zext i1 %cmp to i32204  %expval = call i32 @llvm.expect.i32(i32 %conv, i32 1)205  %tobool = icmp ne i32 %expval, 0206  br i1 %tobool, label %if.then, label %if.end207 208if.then:                                          ; preds = %entry209  %call = call i32 (...) @f()210  store i32 %call, ptr %retval211  br label %return212 213if.end:                                           ; preds = %entry214  store i32 1, ptr %retval215  br label %return216 217return:                                           ; preds = %if.end, %if.then218  %0 = load i32, ptr %retval219  ret i32 %0220}221 222declare i32 @llvm.expect.i32(i32, i32) nounwind readnone223 224