| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | .macro func sym, ext= |
| | .text |
| | .align 2 |
| |
|
| | .option push |
| | .ifnb \ext |
| | .option arch, +\ext |
| | .endif |
| |
|
| | .global \sym |
| | .hidden \sym |
| | .type \sym, %function |
| | \sym: |
| |
|
| | .macro endfunc |
| | .size \sym, . - \sym |
| | .option pop |
| | .previous |
| | .purgem endfunc |
| | .endm |
| | .endm |
| |
|
| | .macro const sym, align=3, relocate=0 |
| | .if \relocate |
| | .pushsection .data.rel.ro |
| | .else |
| | .pushsection .rodata |
| | .endif |
| | .align \align |
| | \sym: |
| |
|
| | .macro endconst |
| | .size \sym, . - \sym |
| | .popsection |
| | .purgem endconst |
| | .endm |
| | .endm |
| |
|
| | |
| | |
| | .macro shnadd n, rd, rs1, rs2 |
| | .insn r OP, 2 * \n, 16, \rd, \rs1, \rs2 |
| | .endm |
| |
|
| | .macro sh1add rd, rs1, rs2 |
| | shnadd 1, \rd, \rs1, \rs2 |
| | .endm |
| |
|
| | .macro sh2add rd, rs1, rs2 |
| | shnadd 2, \rd, \rs1, \rs2 |
| | .endm |
| |
|
| | .macro sh3add rd, rs1, rs2 |
| | shnadd 3, \rd, \rs1, \rs2 |
| | .endm |
| | |
| |
|
| | |
| | .macro lvtypei rd, e, m=m1, tp=tu, mp=mu |
| |
|
| | .ifc \e,e8 |
| | .equ ei, 0 |
| | .else |
| | .ifc \e,e16 |
| | .equ ei, 8 |
| | .else |
| | .ifc \e,e32 |
| | .equ ei, 16 |
| | .else |
| | .ifc \e,e64 |
| | .equ ei, 24 |
| | .else |
| | .error "Unknown element type" |
| | .endif |
| | .endif |
| | .endif |
| | .endif |
| |
|
| | .ifc \m,m1 |
| | .equ mi, 0 |
| | .else |
| | .ifc \m,m2 |
| | .equ mi, 1 |
| | .else |
| | .ifc \m,m4 |
| | .equ mi, 2 |
| | .else |
| | .ifc \m,m8 |
| | .equ mi, 3 |
| | .else |
| | .ifc \m,mf8 |
| | .equ mi, 5 |
| | .else |
| | .ifc \m,mf4 |
| | .equ mi, 6 |
| | .else |
| | .ifc \m,mf2 |
| | .equ mi, 7 |
| | .else |
| | .error "Unknown multiplier" |
| | .equ mi, 3 |
| | .endif |
| | .endif |
| | .endif |
| | .endif |
| | .endif |
| | .endif |
| | .endif |
| |
|
| | .ifc \tp,tu |
| | .equ tpi, 0 |
| | .else |
| | .ifc \tp,ta |
| | .equ tpi, 64 |
| | .else |
| | .error "Unknown tail policy" |
| | .endif |
| | .endif |
| |
|
| | .ifc \mp,mu |
| | .equ mpi, 0 |
| | .else |
| | .ifc \mp,ma |
| | .equ mpi, 128 |
| | .else |
| | .error "Unknown mask policy" |
| | .endif |
| | .endif |
| |
|
| | li \rd, (ei | mi | tpi | mpi) |
| | .endm |
| | |