Commit | Line | Data |
---|---|---|
5918af22 HPN |
1 | .ifndef extra |
2 | .set extra,0 | |
3 | .endif | |
4 | ||
5 | .macro case | |
6 | .if \@ < 10 | |
7 | .word .L1000\@-. | |
8 | .elseif \@ < 100 | |
9 | .word .L100\@-. | |
10 | .elseif \@ < 1000 | |
11 | .word .L10\@-. | |
12 | .else | |
13 | .word .L1\@-. | |
14 | .endif | |
15 | .set counter,1+\@ | |
16 | .endm | |
17 | ||
18 | .macro case_label | |
19 | .L\@: nop | |
20 | .endm | |
21 | ||
22 | .macro padder | |
23 | .endm | |
24 | ||
25 | .text | |
26 | .align 1 | |
27 | .global x | |
28 | .type x,@function | |
29 | x: | |
30 | .rept 4095+extra | |
31 | case | |
32 | .endr | |
33 | ||
34 | .rept 10000-counter | |
35 | padder | |
36 | .endr | |
37 | ||
38 | after: | |
39 | ; Force a secondary jump-table entry for every label. | |
40 | .fill 32768 | |
41 | ||
42 | .rept counter | |
43 | case_label | |
44 | .endr | |
45 | ||
46 | move.d esymbol,$r10 | |
47 | .size x,.-x | |
48 | .align 1 |