Home | History | Annotate | Download | only in Hexagon
      1 ; RUN: llc -O2 -march=hexagon -mcpu=hexagonv62 < %s | FileCheck %s
      2 ; CHECK: ParseFunc:
      3 ; CHECK: r[[ARG0:[0-9]+]] = memuh(r[[ARG1:[0-9]+]]+#[[OFFSET:[0-9]+]])
      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 
    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" }
    131 attributes #2 = { nounwind }
    132 
    133