Lines Matching defs:K
68 #define SETHI(K, REG) \
69 (F2(0, 0x4) | RD(REG) | (((K) >> 10) & 0x3fffff))
70 #define OR_LO(K, REG) \
71 (F3(2, 0x02) | IMMED | RS1(REG) | ((K) & 0x3ff) | RD(REG))
126 #define emit_set_const(K, REG) \
127 do { /* sethi %hi(K), REG */ \
128 *prog++ = SETHI(K, REG); \
129 /* or REG, %lo(K), REG */ \
130 *prog++ = OR_LO(K, REG); \
145 * OP r_A, K, r_A
149 * sethi %hi(K), r_TMP
150 * or r_TMP, %lo(K), r_TMP
153 * depending upon whether K fits in a signed 13-bit
154 * immediate instruction field. Emit nothing if K
157 #define emit_alu_K(OPCODE, K) \
159 if (K || OPCODE == AND || OPCODE == MUL) { \
162 if (is_simm13(K)) { \
163 *prog++ = _insn | IMMED | S13(K); \
165 emit_set_const(K, r_TMP); \
171 #define emit_loadimm(K, DEST) \
173 if (is_simm13(K)) { \
174 /* or %g0, K, DEST */ \
175 *prog++ = OR | IMMED | RS1(G0) | S13(K) | RD(DEST); \
177 emit_set_const(K, DEST); \
391 unsigned int K = filter[i].k;
402 case BPF_ALU | BPF_ADD | BPF_K: /* A += K; */
403 emit_alu_K(ADD, K);
408 case BPF_ALU | BPF_SUB | BPF_K: /* A -= K */
409 emit_alu_K(SUB, K);
414 case BPF_ALU | BPF_AND | BPF_K: /* A &= K */
415 emit_alu_K(AND, K);
420 case BPF_ALU | BPF_OR | BPF_K: /* A |= K */
421 emit_alu_K(OR, K);
427 case BPF_ALU | BPF_XOR | BPF_K: /* A ^= K */
428 emit_alu_K(XOR, K);
433 case BPF_ALU | BPF_LSH | BPF_K: /* A <<= K */
434 emit_alu_K(SLL, K);
439 case BPF_ALU | BPF_RSH | BPF_K: /* A >>= K */
440 emit_alu_K(SRL, K);
445 case BPF_ALU | BPF_MUL | BPF_K: /* A *= K */
446 emit_alu_K(MUL, K);
448 case BPF_ALU | BPF_DIV | BPF_K: /* A /= K with K != 0*/
449 if (K == 1)
459 emit_alu_K(DIV, K);
487 if (!K) {
492 emit_loadimm(K, r_A);
571 emit_loadimm(K, r_A);
574 emit_loadimm(K, r_X);
578 emit_ldmem(K * 4, r_A);
582 emit_ldmem(K * 4, r_X);
586 emit_stmem(K * 4, r_A);
590 emit_stmem(K * 4, r_X);
593 #define CHOOSE_LOAD_FUNC(K, func) \
594 ((int)K < 0 ? ((int)K >= SKF_LL_OFF ? func##_negative_offset : func) : func##_positive_offset)
597 func = CHOOSE_LOAD_FUNC(K, bpf_jit_load_word);
599 emit_loadimm(K, r_OFF);
603 func = CHOOSE_LOAD_FUNC(K, bpf_jit_load_half);
606 func = CHOOSE_LOAD_FUNC(K, bpf_jit_load_byte);
609 func = CHOOSE_LOAD_FUNC(K, bpf_jit_load_byte_msh);
614 if (K) {
615 if (is_simm13(K)) {
616 emit_addi(r_X, K, r_OFF);
618 emit_loadimm(K, r_TMP);
633 emit_jump(addrs[i + K]);
676 if (is_simm13(K)) {
677 emit_cmpi(r_A, K);
679 emit_loadimm(K, r_TMP);
684 if (is_simm13(K)) {
685 emit_btsti(r_A, K);
687 emit_loadimm(K, r_TMP);