Tim Northover | b4ddc08 | 2014-05-30 10:09:59 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -mtriple=thumbv8 -print-machineinstrs=if-converter -arm-atomic-cfg-tidy=0 -o /dev/null 2>&1 | FileCheck %s |
Manman Ren | b681918 | 2014-01-29 23:18:47 +0000 | [diff] [blame] | 2 | |
| 3 | %struct.S = type { i8* (i8*)*, [1 x i8] } |
| 4 | define internal zeroext i8 @bar(%struct.S* %x, %struct.S* nocapture %y) nounwind readonly { |
| 5 | entry: |
| 6 | %0 = getelementptr inbounds %struct.S* %x, i32 0, i32 1, i32 0 |
| 7 | %1 = load i8* %0, align 1 |
| 8 | %2 = zext i8 %1 to i32 |
| 9 | %3 = and i32 %2, 112 |
| 10 | %4 = icmp eq i32 %3, 0 |
| 11 | br i1 %4, label %return, label %bb |
| 12 | |
| 13 | bb: |
| 14 | %5 = getelementptr inbounds %struct.S* %y, i32 0, i32 1, i32 0 |
| 15 | %6 = load i8* %5, align 1 |
| 16 | %7 = zext i8 %6 to i32 |
| 17 | %8 = and i32 %7, 112 |
| 18 | %9 = icmp eq i32 %8, 0 |
| 19 | br i1 %9, label %return, label %bb2 |
| 20 | |
| 21 | ; CHECK: BB#2: derived from LLVM BB %bb2 |
| 22 | ; CHECK: Successors according to CFG: BB#3(192) BB#4(192) |
| 23 | |
| 24 | bb2: |
| 25 | %v10 = icmp eq i32 %3, 16 |
| 26 | br i1 %v10, label %bb4, label %bb3, !prof !0 |
| 27 | |
| 28 | bb3: |
| 29 | %v11 = icmp eq i32 %8, 16 |
| 30 | br i1 %v11, label %bb4, label %return, !prof !1 |
| 31 | |
| 32 | bb4: |
| 33 | %v12 = ptrtoint %struct.S* %x to i32 |
| 34 | %phitmp = trunc i32 %v12 to i8 |
| 35 | ret i8 %phitmp |
| 36 | |
| 37 | return: |
| 38 | ret i8 1 |
| 39 | } |
| 40 | |
Duncan P. N. Exon Smith | be7ea19 | 2014-12-15 19:07:53 +0000 | [diff] [blame^] | 41 | !0 = !{!"branch_weights", i32 4, i32 12} |
| 42 | !1 = !{!"branch_weights", i32 8, i32 16} |