Reverting the commit 116986. It was breaking the build on llvm-x86_64-linux though it
[oota-llvm.git] / test / CodeGen / MBlaze / jumptable.ll
1 ; Ensure that jump tables can be handled by the mblaze backend. The
2 ; jump table should be lowered to a "br" instruction using one of the
3 ; available registers.
4 ;
5 ; RUN: llc < %s -march=mblaze | FileCheck %s
6
7 define i32 @jmptable(i32 %arg)
8 {
9     ; CHECK:        jmptable:
10     switch i32 %arg, label %DEFAULT [ i32 0, label %L0
11                                       i32 1, label %L1
12                                       i32 2, label %L2
13                                       i32 3, label %L3
14                                       i32 4, label %L4
15                                       i32 5, label %L5
16                                       i32 6, label %L6
17                                       i32 7, label %L7
18                                       i32 8, label %L8
19                                       i32 9, label %L9 ]
20
21     ; CHECK:        lw [[REG:r[0-9]*]]
22     ; CHECK:        br [[REG]]
23 L0:
24     %var0 = add i32 %arg, 0
25     br label %DONE
26
27 L1:
28     %var1 = add i32 %arg, 1
29     br label %DONE
30
31 L2:
32     %var2 = add i32 %arg, 2
33     br label %DONE
34
35 L3:
36     %var3 = add i32 %arg, 3
37     br label %DONE
38
39 L4:
40     %var4 = add i32 %arg, 4
41     br label %DONE
42
43 L5:
44     %var5 = add i32 %arg, 5
45     br label %DONE
46
47 L6:
48     %var6 = add i32 %arg, 6
49     br label %DONE
50
51 L7:
52     %var7 = add i32 %arg, 7
53     br label %DONE
54
55 L8:
56     %var8 = add i32 %arg, 8
57     br label %DONE
58
59 L9:
60     %var9 = add i32 %arg, 9
61     br label %DONE
62
63 DEFAULT:
64     unreachable
65
66 DONE:
67     %rval = phi i32 [ %var0, %L0 ],
68                     [ %var1, %L1 ],
69                     [ %var2, %L2 ],
70                     [ %var3, %L3 ],
71                     [ %var4, %L4 ],
72                     [ %var5, %L5 ],
73                     [ %var6, %L6 ],
74                     [ %var7, %L7 ],
75                     [ %var8, %L8 ],
76                     [ %var9, %L9 ]
77     ret i32 %rval
78     ; CHECK:        rtsd
79 }