36 lines
740 B
ArmAsm
36 lines
740 B
ArmAsm
// PCALIGN padding on riscv64: 4-byte NOPs with a 2-byte compressed NOP when
|
|||
|
|
// the pad is 2 mod 4, exactly as the toolchain lays the bytes down.
|
||
|
|
#include "textflag.h"
|
||
|
|
|
||
|
|
// func Pad8(x int64) int64
|
||
|
|
TEXT ·Pad8(SB), NOSPLIT, $0-16
|
||
|
|
MOV x+0(FP), X5
|
||
|
|
PCALIGN $8
|
||
|
|
ADD $1, X5
|
||
|
|
MOV X5, ret+8(FP)
|
||
|
|
RET
|
||
|
|
|
||
|
|
// func Pad16(x int64) int64
|
||
|
|
TEXT ·Pad16(SB), NOSPLIT, $0-16
|
||
|
|
MOV x+0(FP), X5
|
||
|
|
PCALIGN $16
|
||
|
|
ADD $1, X5
|
||
|
|
MOV X5, ret+8(FP)
|
||
|
|
RET
|
||
|
|
|
||
|
|
// func Pad32(x int64) int64
|
||
|
|
TEXT ·Pad32(SB), NOSPLIT, $0-16
|
||
|
|
MOV x+0(FP), X5
|
||
|
|
PCALIGN $32
|
||
|
|
ADD $1, X5
|
||
|
|
MOV X5, ret+8(FP)
|
||
|
|
RET
|
||
|
|
|
||
|
|
// func PadAfterOdd(x int64) int64
|
||
|
|
TEXT ·PadAfterOdd(SB), NOSPLIT, $0-16
|
||
|
|
MOV x+0(FP), X5
|
||
|
|
PCALIGN $8
|
||
|
|
ADD $1, X5
|
||
|
|
MOV X5, ret+8(FP)
|
||
|
|
RET
|