--- /dev/null
+ .ifndef extra
+ .set extra,0
+ .endif
+
+ .macro case
+ .if \@ < 10
+ .word .L1000\@-.
+ .elseif \@ < 100
+ .word .L100\@-.
+ .elseif \@ < 1000
+ .word .L10\@-.
+ .else
+ .word .L1\@-.
+ .endif
+ .set counter,1+\@
+ .endm
+
+ .macro case_label
+.L\@: nop
+ .endm
+
+ .macro padder
+ .endm
+
+ .text
+ .align 1
+ .global x
+ .type x,@function
+x:
+ .rept 4095+extra
+ case
+ .endr
+
+ .rept 10000-counter
+ padder
+ .endr
+
+after:
+ ; Force a secondary jump-table entry for every label.
+ .fill 32768
+
+ .rept counter
+ case_label
+ .endr
+
+ move.d esymbol,$r10
+ .size x,.-x
+ .align 1