Lines Matching refs:imm

334 		s32 imm = insn[i].imm;
375 case BPF_ALU | BPF_ADD | BPF_K: /* (u32) dst += (u32) imm */
376 case BPF_ALU64 | BPF_ADD | BPF_K: /* dst += imm */
377 if (!imm) {
379 } else if (imm >= -32768 && imm < 32768) {
380 EMIT(PPC_RAW_ADDI(dst_reg, dst_reg, IMM_L(imm)));
382 PPC_LI32(b2p[TMP_REG_1], imm);
386 case BPF_ALU | BPF_SUB | BPF_K: /* (u32) dst -= (u32) imm */
387 case BPF_ALU64 | BPF_SUB | BPF_K: /* dst -= imm */
388 if (!imm) {
390 } else if (imm > -32768 && imm <= 32768) {
391 EMIT(PPC_RAW_ADDI(dst_reg, dst_reg, IMM_L(-imm)));
393 PPC_LI32(b2p[TMP_REG_1], imm);
404 case BPF_ALU | BPF_MUL | BPF_K: /* (u32) dst *= (u32) imm */
405 case BPF_ALU64 | BPF_MUL | BPF_K: /* dst *= imm */
406 if (imm >= -32768 && imm < 32768)
407 EMIT(PPC_RAW_MULI(dst_reg, dst_reg, IMM_L(imm)));
409 PPC_LI32(b2p[TMP_REG_1], imm);
438 case BPF_ALU | BPF_MOD | BPF_K: /* (u32) dst %= (u32) imm */
439 case BPF_ALU | BPF_DIV | BPF_K: /* (u32) dst /= (u32) imm */
440 case BPF_ALU64 | BPF_MOD | BPF_K: /* dst %= imm */
441 case BPF_ALU64 | BPF_DIV | BPF_K: /* dst /= imm */
442 if (imm == 0)
444 if (imm == 1) {
453 PPC_LI32(b2p[TMP_REG_1], imm);
497 case BPF_ALU | BPF_AND | BPF_K: /* (u32) dst = dst & imm */
498 case BPF_ALU64 | BPF_AND | BPF_K: /* dst = dst & imm */
499 if (!IMM_H(imm))
500 EMIT(PPC_RAW_ANDI(dst_reg, dst_reg, IMM_L(imm)));
503 PPC_LI32(b2p[TMP_REG_1], imm);
511 case BPF_ALU | BPF_OR | BPF_K:/* dst = (u32) dst | (u32) imm */
512 case BPF_ALU64 | BPF_OR | BPF_K:/* dst = dst | imm */
513 if (imm < 0 && BPF_CLASS(code) == BPF_ALU64) {
515 PPC_LI32(b2p[TMP_REG_1], imm);
518 if (IMM_L(imm))
519 EMIT(PPC_RAW_ORI(dst_reg, dst_reg, IMM_L(imm)));
520 if (IMM_H(imm))
521 EMIT(PPC_RAW_ORIS(dst_reg, dst_reg, IMM_H(imm)));
528 case BPF_ALU | BPF_XOR | BPF_K: /* (u32) dst ^= (u32) imm */
529 case BPF_ALU64 | BPF_XOR | BPF_K: /* dst ^= imm */
530 if (imm < 0 && BPF_CLASS(code) == BPF_ALU64) {
532 PPC_LI32(b2p[TMP_REG_1], imm);
535 if (IMM_L(imm))
536 EMIT(PPC_RAW_XORI(dst_reg, dst_reg, IMM_L(imm)));
537 if (IMM_H(imm))
538 EMIT(PPC_RAW_XORIS(dst_reg, dst_reg, IMM_H(imm)));
551 case BPF_ALU | BPF_LSH | BPF_K: /* (u32) dst <<== (u32) imm */
552 /* with imm 0, we still need to clear top 32 bits */
553 EMIT(PPC_RAW_SLWI(dst_reg, dst_reg, imm));
557 case BPF_ALU64 | BPF_LSH | BPF_K: /* dst <<== imm */
558 if (imm != 0)
559 EMIT(PPC_RAW_SLDI(dst_reg, dst_reg, imm));
569 case BPF_ALU | BPF_RSH | BPF_K: /* (u32) dst >>= (u32) imm */
570 EMIT(PPC_RAW_SRWI(dst_reg, dst_reg, imm));
574 case BPF_ALU64 | BPF_RSH | BPF_K: /* dst >>= imm */
575 if (imm != 0)
576 EMIT(PPC_RAW_SRDI(dst_reg, dst_reg, imm));
584 case BPF_ALU | BPF_ARSH | BPF_K: /* (s32) dst >>= imm */
585 EMIT(PPC_RAW_SRAWI(dst_reg, dst_reg, imm));
587 case BPF_ALU64 | BPF_ARSH | BPF_K: /* (s64) dst >>= imm */
588 if (imm != 0)
589 EMIT(PPC_RAW_SRADI(dst_reg, dst_reg, imm));
597 if (imm == 1) {
604 case BPF_ALU | BPF_MOV | BPF_K: /* (u32) dst = imm */
605 case BPF_ALU64 | BPF_MOV | BPF_K: /* dst = (s64) imm */
606 PPC_LI32(dst_reg, imm);
607 if (imm < 0)
631 switch (imm) {
674 switch (imm) {
726 case BPF_ST | BPF_MEM | BPF_B: /* *(u8 *)(dst + off) = imm */
728 EMIT(PPC_RAW_LI(b2p[TMP_REG_1], imm));
734 case BPF_ST | BPF_MEM | BPF_H: /* (u16 *)(dst + off) = imm */
736 EMIT(PPC_RAW_LI(b2p[TMP_REG_1], imm));
742 case BPF_ST | BPF_MEM | BPF_W: /* *(u32 *)(dst + off) = imm */
744 PPC_LI32(b2p[TMP_REG_1], imm);
750 case BPF_ST | BPF_MEM | BPF_DW: /* *(u64 *)(dst + off) = imm */
752 PPC_LI32(b2p[TMP_REG_1], imm);
815 case BPF_LD | BPF_IMM | BPF_DW: /* dst = (u64) imm */
816 imm64 = ((u64)(u32) insn[i].imm) |
817 (((u64)(u32) insn[i+1].imm) << 32);
986 * values can be used as imm in cmpldi
988 if (imm >= 0 && imm < 32768) {
990 EMIT(PPC_RAW_CMPLWI(dst_reg, imm));
992 EMIT(PPC_RAW_CMPLDI(dst_reg, imm));
995 PPC_LI32(b2p[TMP_REG_1], imm);
1021 if (imm >= -32768 && imm < 32768) {
1023 EMIT(PPC_RAW_CMPWI(dst_reg, imm));
1025 EMIT(PPC_RAW_CMPDI(dst_reg, imm));
1027 PPC_LI32(b2p[TMP_REG_1], imm);
1040 if (imm >= 0 && imm < 32768)
1042 EMIT(PPC_RAW_ANDI(b2p[TMP_REG_1], dst_reg, imm));
1046 PPC_LI32(tmp_reg, imm);