Krzysztof Parzyszek | 18484de | 2018-03-06 19:15:58 +0000 | [diff] [blame] | 1 | ; RUN: llc -O2 -march=hexagon -mcpu=hexagonv62 < %s | FileCheck %s |
Sumanth Gundapaneni | d428cf8 | 2016-11-14 17:11:00 +0000 | [diff] [blame] | 2 | ; CHECK: ParseFunc: |
Krzysztof Parzyszek | a72fad9 | 2017-02-10 15:33:13 +0000 | [diff] [blame] | 3 | ; CHECK: r[[ARG0:[0-9]+]] = memuh(r[[ARG1:[0-9]+]]+#[[OFFSET:[0-9]+]]) |
Sumanth Gundapaneni | d428cf8 | 2016-11-14 17:11:00 +0000 | [diff] [blame] | 4 | ; CHECK: memw(r[[ARG1]]+#[[OFFSET]]) = r[[ARG0]] |
| 5 | |
| 6 | @.str.3 = external unnamed_addr constant [8 x i8], align 1 |
| 7 | ; Function Attrs: nounwind |
| 8 | define void @ParseFunc() local_unnamed_addr #0 { |
| 9 | entry: |
| 10 | %dataVar = alloca i32, align 4 |
| 11 | %0 = load i32, i32* %dataVar, align 4 |
| 12 | %and = and i32 %0, 65535 |
| 13 | store i32 %and, i32* %dataVar, align 4 |
| 14 | %.pr = load i32, i32* %dataVar, align 4 |
| 15 | switch i32 %.pr, label %sw.epilog [ |
| 16 | i32 4, label %sw.bb |
| 17 | i32 5, label %sw.bb |
| 18 | i32 1, label %sw.bb39 |
| 19 | i32 2, label %sw.bb40 |
| 20 | i32 3, label %sw.bb41 |
| 21 | i32 6, label %sw.bb42 |
| 22 | i32 7, label %sw.bb43 |
| 23 | i32 13, label %sw.bb44 |
| 24 | i32 0, label %sw.bb44 |
| 25 | i32 14, label %sw.bb45 |
| 26 | i32 15, label %sw.bb46 |
| 27 | ] |
| 28 | |
| 29 | sw.bb: |
| 30 | %cmp1.i = icmp eq i32 %.pr, 4 |
| 31 | br label %land.rhs.i |
| 32 | |
| 33 | land.rhs.i: |
| 34 | br label %ParseFuncNext.exit.i |
| 35 | |
| 36 | ParseFuncNext.exit.i: |
| 37 | br i1 %cmp1.i, label %if.then.i, label %if.else10.i |
| 38 | |
| 39 | if.then.i: |
| 40 | call void (i8*, i32, i8*, ...) @snprintf(i8* undef, i32 undef, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i32 0, i32 0), i32 undef) #2 |
| 41 | br label %if.end27.i |
| 42 | |
| 43 | if.else10.i: |
| 44 | unreachable |
| 45 | |
| 46 | if.end27.i: |
| 47 | br label %land.rhs.i |
| 48 | |
| 49 | sw.bb39: |
| 50 | unreachable |
| 51 | |
| 52 | sw.bb40: |
| 53 | unreachable |
| 54 | |
| 55 | sw.bb41: |
| 56 | unreachable |
| 57 | |
| 58 | sw.bb42: |
| 59 | %1 = load i32, i32* undef, align 4 |
| 60 | %shr.i = lshr i32 %1, 16 |
| 61 | br label %while.cond.i.i |
| 62 | |
| 63 | while.cond.i.i: |
| 64 | %2 = load i8, i8* undef, align 1 |
| 65 | switch i8 %2, label %if.then4.i [ |
| 66 | i8 48, label %land.end.i.i |
| 67 | i8 120, label %land.end.i.i |
| 68 | i8 37, label %do.body.i.i |
| 69 | ] |
| 70 | |
| 71 | land.end.i.i: |
| 72 | unreachable |
| 73 | |
| 74 | do.body.i.i: |
| 75 | switch i8 undef, label %if.then4.i [ |
| 76 | i8 117, label %if.end40.i.i |
| 77 | i8 120, label %if.end40.i.i |
| 78 | i8 88, label %if.end40.i.i |
| 79 | i8 100, label %if.end40.i.i |
| 80 | i8 105, label %if.end40.i.i |
| 81 | ] |
| 82 | |
| 83 | if.end40.i.i: |
| 84 | %trunc.i = trunc i32 %shr.i to i16 |
| 85 | br label %land.rhs.i126 |
| 86 | |
| 87 | if.then4.i: |
| 88 | unreachable |
| 89 | |
| 90 | land.rhs.i126: |
| 91 | switch i16 %trunc.i, label %sw.epilog.i [ |
| 92 | i16 1, label %sw.bb.i |
| 93 | i16 2, label %sw.bb12.i |
| 94 | i16 4, label %sw.bb16.i |
| 95 | ] |
| 96 | |
| 97 | sw.bb.i: |
| 98 | unreachable |
| 99 | |
| 100 | sw.bb12.i: |
| 101 | unreachable |
| 102 | |
| 103 | sw.bb16.i: |
| 104 | unreachable |
| 105 | |
| 106 | sw.epilog.i: |
| 107 | call void (i8*, i32, i8*, ...) @snprintf(i8* undef, i32 undef, i8* nonnull undef, i32 undef) #2 |
| 108 | br label %land.rhs.i126 |
| 109 | |
| 110 | sw.bb43: |
| 111 | unreachable |
| 112 | |
| 113 | sw.bb44: |
| 114 | unreachable |
| 115 | |
| 116 | sw.bb45: |
| 117 | unreachable |
| 118 | |
| 119 | sw.bb46: |
| 120 | unreachable |
| 121 | |
| 122 | sw.epilog: |
| 123 | ret void |
| 124 | } |
| 125 | |
| 126 | ; Function Attrs: nounwind |
| 127 | declare void @snprintf(i8* nocapture, i32, i8* nocapture readonly, ...) local_unnamed_addr #1 |
| 128 | |
Sumanth Gundapaneni | e1983bc | 2017-10-18 18:07:07 +0000 | [diff] [blame] | 129 | attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv62" "target-features"="+hvx,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" } |
| 130 | attributes #1 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="hexagonv62" "target-features"="+hvx,+hvx-length64b" "unsafe-fp-math"="false" "use-soft-float"="false" } |
Sumanth Gundapaneni | d428cf8 | 2016-11-14 17:11:00 +0000 | [diff] [blame] | 131 | attributes #2 = { nounwind } |
Sumanth Gundapaneni | e1983bc | 2017-10-18 18:07:07 +0000 | [diff] [blame] | 132 | |