Lines Matching defs:imm

180 #define EMIT4_IMM(op, b1, imm)					\
182 unsigned int __imm = (imm) & 0xffff; \
240 #define EMIT6_PCREL_RIEC(op1, op2, b1, imm, mask, target) \
244 (rel & 0xffff), (op2) | ((imm) & 0xff) << 8); \
246 BUILD_BUG_ON(((unsigned long) (imm)) > 0xff); \
275 #define _EMIT6_IMM(op, imm) \
277 unsigned int __imm = (imm); \
281 #define EMIT6_IMM(op, b1, imm) \
283 _EMIT6_IMM((op) | reg_high(b1) << 16, imm); \
701 s32 imm = insn->imm;
726 case BPF_ALU | BPF_MOV | BPF_K: /* dst = (u32) imm */
727 /* llilf %dst,imm */
728 EMIT6_IMM(0xc00f0000, dst_reg, imm);
732 case BPF_ALU64 | BPF_MOV | BPF_K: /* dst = imm */
733 /* lgfi %dst,imm */
734 EMIT6_IMM(0xc0010000, dst_reg, imm);
739 case BPF_LD | BPF_IMM | BPF_DW: /* dst = (u64) imm */
744 imm64 = (u64)(u32) insn[0].imm | ((u64)(u32) insn[1].imm) << 32;
745 /* lgrl %dst,imm */
762 case BPF_ALU | BPF_ADD | BPF_K: /* dst = (u32) dst + (u32) imm */
763 if (imm != 0) {
764 /* alfi %dst,imm */
765 EMIT6_IMM(0xc20b0000, dst_reg, imm);
769 case BPF_ALU64 | BPF_ADD | BPF_K: /* dst = dst + imm */
770 if (!imm)
772 /* agfi %dst,imm */
773 EMIT6_IMM(0xc2080000, dst_reg, imm);
787 case BPF_ALU | BPF_SUB | BPF_K: /* dst = (u32) dst - (u32) imm */
788 if (imm != 0) {
789 /* alfi %dst,-imm */
790 EMIT6_IMM(0xc20b0000, dst_reg, -imm);
794 case BPF_ALU64 | BPF_SUB | BPF_K: /* dst = dst - imm */
795 if (!imm)
797 if (imm == -0x80000000) {
801 /* agfi %dst,-imm */
802 EMIT6_IMM(0xc2080000, dst_reg, -imm);
817 case BPF_ALU | BPF_MUL | BPF_K: /* dst = (u32) dst * (u32) imm */
818 if (imm != 1) {
819 /* msfi %r5,imm */
820 EMIT6_IMM(0xc2010000, dst_reg, imm);
824 case BPF_ALU64 | BPF_MUL | BPF_K: /* dst = dst * imm */
825 if (imm == 1)
827 /* msgfi %dst,imm */
828 EMIT6_IMM(0xc2000000, dst_reg, imm);
865 case BPF_ALU | BPF_DIV | BPF_K: /* dst = (u32) dst / (u32) imm */
866 case BPF_ALU | BPF_MOD | BPF_K: /* dst = (u32) dst % (u32) imm */
870 if (imm == 1) {
883 /* dl %w0,<d(imm)>(%l) */
885 EMIT_CONST_U32(imm));
887 /* lgfrl %dst,imm */
889 _EMIT_CONST_U32(imm));
900 case BPF_ALU64 | BPF_DIV | BPF_K: /* dst = dst / imm */
901 case BPF_ALU64 | BPF_MOD | BPF_K: /* dst = dst % imm */
905 if (imm == 1) {
916 /* dlg %w0,<d(imm)>(%l) */
918 EMIT_CONST_U64(imm));
920 /* lgrl %dst,imm */
922 _EMIT_CONST_U64(imm));
943 case BPF_ALU | BPF_AND | BPF_K: /* dst = (u32) dst & (u32) imm */
944 /* nilf %dst,imm */
945 EMIT6_IMM(0xc00b0000, dst_reg, imm);
948 case BPF_ALU64 | BPF_AND | BPF_K: /* dst = dst & imm */
950 /* ng %dst,<d(imm)>(%l) */
953 EMIT_CONST_U64(imm));
955 /* lgrl %w0,imm */
957 _EMIT_CONST_U64(imm));
975 case BPF_ALU | BPF_OR | BPF_K: /* dst = (u32) dst | (u32) imm */
976 /* oilf %dst,imm */
977 EMIT6_IMM(0xc00d0000, dst_reg, imm);
980 case BPF_ALU64 | BPF_OR | BPF_K: /* dst = dst | imm */
982 /* og %dst,<d(imm)>(%l) */
985 EMIT_CONST_U64(imm));
987 /* lgrl %w0,imm */
989 _EMIT_CONST_U64(imm));
1007 case BPF_ALU | BPF_XOR | BPF_K: /* dst = (u32) dst ^ (u32) imm */
1008 if (imm != 0) {
1009 /* xilf %dst,imm */
1010 EMIT6_IMM(0xc0070000, dst_reg, imm);
1014 case BPF_ALU64 | BPF_XOR | BPF_K: /* dst = dst ^ imm */
1016 /* xg %dst,<d(imm)>(%l) */
1019 EMIT_CONST_U64(imm));
1021 /* lgrl %w0,imm */
1023 _EMIT_CONST_U64(imm));
1041 case BPF_ALU | BPF_LSH | BPF_K: /* dst = (u32) dst << (u32) imm */
1042 if (imm != 0) {
1043 /* sll %dst,imm(%r0) */
1044 EMIT4_DISP(0x89000000, dst_reg, REG_0, imm);
1048 case BPF_ALU64 | BPF_LSH | BPF_K: /* dst = dst << imm */
1049 if (imm == 0)
1051 /* sllg %dst,%dst,imm(%r0) */
1052 EMIT6_DISP_LH(0xeb000000, 0x000d, dst_reg, dst_reg, REG_0, imm);
1066 case BPF_ALU | BPF_RSH | BPF_K: /* dst = (u32) dst >> (u32) imm */
1067 if (imm != 0) {
1068 /* srl %dst,imm(%r0) */
1069 EMIT4_DISP(0x88000000, dst_reg, REG_0, imm);
1073 case BPF_ALU64 | BPF_RSH | BPF_K: /* dst = dst >> imm */
1074 if (imm == 0)
1076 /* srlg %dst,%dst,imm(%r0) */
1077 EMIT6_DISP_LH(0xeb000000, 0x000c, dst_reg, dst_reg, REG_0, imm);
1091 case BPF_ALU | BPF_ARSH | BPF_K: /* ((s32) dst >> imm */
1092 if (imm != 0) {
1093 /* sra %dst,imm(%r0) */
1094 EMIT4_DISP(0x8a000000, dst_reg, REG_0, imm);
1098 case BPF_ALU64 | BPF_ARSH | BPF_K: /* ((s64) dst) >>= imm */
1099 if (imm == 0)
1101 /* srag %dst,%dst,imm(%r0) */
1102 EMIT6_DISP_LH(0xeb000000, 0x000a, dst_reg, dst_reg, REG_0, imm);
1121 switch (imm) {
1138 switch (imm) {
1190 case BPF_ST | BPF_MEM | BPF_B: /* *(u8 *)(dst + off) = imm */
1191 /* lhi %w0,imm */
1192 EMIT4_IMM(0xa7080000, REG_W0, (u8) imm);
1197 case BPF_ST | BPF_MEM | BPF_H: /* (u16 *)(dst + off) = imm */
1198 /* lhi %w0,imm */
1199 EMIT4_IMM(0xa7080000, REG_W0, (u16) imm);
1204 case BPF_ST | BPF_MEM | BPF_W: /* *(u32 *)(dst + off) = imm */
1205 /* llilf %w0,imm */
1206 EMIT6_IMM(0xc00f0000, REG_W0, (u32) imm);
1211 case BPF_ST | BPF_MEM | BPF_DW: /* *(u64 *)(dst + off) = imm */
1212 /* lgfi %w0,imm */
1213 EMIT6_IMM(0xc0010000, REG_W0, imm);
1414 case BPF_JMP | BPF_JSGT | BPF_K: /* ((s64) dst > (s64) imm) */
1415 case BPF_JMP32 | BPF_JSGT | BPF_K: /* ((s32) dst > (s32) imm) */
1418 case BPF_JMP | BPF_JSLT | BPF_K: /* ((s64) dst < (s64) imm) */
1419 case BPF_JMP32 | BPF_JSLT | BPF_K: /* ((s32) dst < (s32) imm) */
1422 case BPF_JMP | BPF_JSGE | BPF_K: /* ((s64) dst >= (s64) imm) */
1423 case BPF_JMP32 | BPF_JSGE | BPF_K: /* ((s32) dst >= (s32) imm) */
1426 case BPF_JMP | BPF_JSLE | BPF_K: /* ((s64) dst <= (s64) imm) */
1427 case BPF_JMP32 | BPF_JSLE | BPF_K: /* ((s32) dst <= (s32) imm) */
1430 case BPF_JMP | BPF_JGT | BPF_K: /* (dst_reg > imm) */
1431 case BPF_JMP32 | BPF_JGT | BPF_K: /* ((u32) dst_reg > (u32) imm) */
1434 case BPF_JMP | BPF_JLT | BPF_K: /* (dst_reg < imm) */
1435 case BPF_JMP32 | BPF_JLT | BPF_K: /* ((u32) dst_reg < (u32) imm) */
1438 case BPF_JMP | BPF_JGE | BPF_K: /* (dst_reg >= imm) */
1439 case BPF_JMP32 | BPF_JGE | BPF_K: /* ((u32) dst_reg >= (u32) imm) */
1442 case BPF_JMP | BPF_JLE | BPF_K: /* (dst_reg <= imm) */
1443 case BPF_JMP32 | BPF_JLE | BPF_K: /* ((u32) dst_reg <= (u32) imm) */
1446 case BPF_JMP | BPF_JNE | BPF_K: /* (dst_reg != imm) */
1447 case BPF_JMP32 | BPF_JNE | BPF_K: /* ((u32) dst_reg != (u32) imm) */
1450 case BPF_JMP | BPF_JEQ | BPF_K: /* (dst_reg == imm) */
1451 case BPF_JMP32 | BPF_JEQ | BPF_K: /* ((u32) dst_reg == (u32) imm) */
1454 case BPF_JMP | BPF_JSET | BPF_K: /* (dst_reg & imm) */
1455 case BPF_JMP32 | BPF_JSET | BPF_K: /* ((u32) dst_reg & (u32) imm) */
1458 /* llilf %w1,imm (load zero extend imm) */
1459 EMIT6_IMM(0xc00f0000, REG_W1, imm);
1463 /* lgfi %w1,imm (load sign extend imm) */
1464 EMIT6_IMM(0xc0010000, REG_W1, imm);
1522 /* cfi or cgfi %dst,imm */
1524 dst_reg, imm);
1537 /* lgfi %w1,imm (load sign extend imm) */
1539 EMIT6_IMM(0xc0010000, src_reg, imm);