1*495bc70aSHeiko Carstens /* SPDX-License-Identifier: GPL-2.0 */ 2*495bc70aSHeiko Carstens /* 3*495bc70aSHeiko Carstens * Assembler helper macros to generate .byte/.word code for instructions 4*495bc70aSHeiko Carstens * that are unknown to older binutils versions. 5*495bc70aSHeiko Carstens */ 6*495bc70aSHeiko Carstens 7*495bc70aSHeiko Carstens #ifndef __ASM_S390_INSN_COMMON_ASM_H 8*495bc70aSHeiko Carstens #define __ASM_S390_INSN_COMMON_ASM_H 9*495bc70aSHeiko Carstens 10*495bc70aSHeiko Carstens #ifdef __ASSEMBLER__ 11*495bc70aSHeiko Carstens 12*495bc70aSHeiko Carstens /* 13*495bc70aSHeiko Carstens * GR_NUM - Retrieve general-purpose register number 14*495bc70aSHeiko Carstens * 15*495bc70aSHeiko Carstens * @opd: Operand to store register number 16*495bc70aSHeiko Carstens * @gr: String designation register in the format "%rN" 17*495bc70aSHeiko Carstens */ 18*495bc70aSHeiko Carstens .macro GR_NUM opd gr 19*495bc70aSHeiko Carstens \opd = 255 20*495bc70aSHeiko Carstens .irp rs,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 21*495bc70aSHeiko Carstens .ifc \gr,%r\rs 22*495bc70aSHeiko Carstens \opd = \rs 23*495bc70aSHeiko Carstens .endif 24*495bc70aSHeiko Carstens .endr 25*495bc70aSHeiko Carstens .if \opd == 255 26*495bc70aSHeiko Carstens \opd = \gr 27*495bc70aSHeiko Carstens .endif 28*495bc70aSHeiko Carstens .endm 29*495bc70aSHeiko Carstens 30*495bc70aSHeiko Carstens /* 31*495bc70aSHeiko Carstens * VX_NUM - Retrieve vector register number 32*495bc70aSHeiko Carstens * 33*495bc70aSHeiko Carstens * @opd: Operand to store register number 34*495bc70aSHeiko Carstens * @vxr: String designation register in the format "%vN" 35*495bc70aSHeiko Carstens * 36*495bc70aSHeiko Carstens * The vector register number is used for as input number to the 37*495bc70aSHeiko Carstens * instruction and, as well as, to compute the RXB field of the 38*495bc70aSHeiko Carstens * instruction. 39*495bc70aSHeiko Carstens */ 40*495bc70aSHeiko Carstens .macro VX_NUM opd vxr 41*495bc70aSHeiko Carstens \opd = 255 42*495bc70aSHeiko Carstens .irp vs,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 43*495bc70aSHeiko Carstens .ifc \vxr,%v\vs 44*495bc70aSHeiko Carstens \opd = \vs 45*495bc70aSHeiko Carstens .endif 46*495bc70aSHeiko Carstens .endr 47*495bc70aSHeiko Carstens .if \opd == 255 48*495bc70aSHeiko Carstens \opd = \vxr 49*495bc70aSHeiko Carstens .endif 50*495bc70aSHeiko Carstens .endm 51*495bc70aSHeiko Carstens 52*495bc70aSHeiko Carstens #endif /* __ASSEMBLER__ */ 53*495bc70aSHeiko Carstens #endif /* __ASM_S390_INSN_COMMON_ASM_H */ 54