Lines Matching refs:imm

111 static void emit_imm(const s8 rd, s32 imm, struct rv_jit_context *ctx)
113 u32 upper = (imm + (1 << 11)) >> 12;
114 u32 lower = imm & 0xfff;
124 static void emit_imm32(const s8 *rd, s32 imm, struct rv_jit_context *ctx)
127 emit_imm(lo(rd), imm, ctx);
130 if (imm >= 0)
243 static void emit_alu_i64(const s8 *dst, s32 imm,
251 emit_imm32(rd, imm, ctx);
254 if (is_12b_int(imm)) {
255 emit(rv_andi(lo(rd), lo(rd), imm), ctx);
257 emit_imm(RV_REG_T0, imm, ctx);
260 if (imm >= 0)
264 if (is_12b_int(imm)) {
265 emit(rv_ori(lo(rd), lo(rd), imm), ctx);
267 emit_imm(RV_REG_T0, imm, ctx);
270 if (imm < 0)
274 if (is_12b_int(imm)) {
275 emit(rv_xori(lo(rd), lo(rd), imm), ctx);
277 emit_imm(RV_REG_T0, imm, ctx);
280 if (imm < 0)
284 if (imm >= 32) {
285 emit(rv_slli(hi(rd), lo(rd), imm - 32), ctx);
287 } else if (imm == 0) {
290 emit(rv_srli(RV_REG_T0, lo(rd), 32 - imm), ctx);
291 emit(rv_slli(hi(rd), hi(rd), imm), ctx);
293 emit(rv_slli(lo(rd), lo(rd), imm), ctx);
297 if (imm >= 32) {
298 emit(rv_srli(lo(rd), hi(rd), imm - 32), ctx);
300 } else if (imm == 0) {
303 emit(rv_slli(RV_REG_T0, hi(rd), 32 - imm), ctx);
304 emit(rv_srli(lo(rd), lo(rd), imm), ctx);
306 emit(rv_srli(hi(rd), hi(rd), imm), ctx);
310 if (imm >= 32) {
311 emit(rv_srai(lo(rd), hi(rd), imm - 32), ctx);
313 } else if (imm == 0) {
316 emit(rv_slli(RV_REG_T0, hi(rd), 32 - imm), ctx);
317 emit(rv_srli(lo(rd), lo(rd), imm), ctx);
319 emit(rv_srai(hi(rd), hi(rd), imm), ctx);
327 static void emit_alu_i32(const s8 *dst, s32 imm,
335 emit_imm(lo(rd), imm, ctx);
338 if (is_12b_int(imm)) {
339 emit(rv_addi(lo(rd), lo(rd), imm), ctx);
341 emit_imm(RV_REG_T0, imm, ctx);
346 if (is_12b_int(-imm)) {
347 emit(rv_addi(lo(rd), lo(rd), -imm), ctx);
349 emit_imm(RV_REG_T0, imm, ctx);
354 if (is_12b_int(imm)) {
355 emit(rv_andi(lo(rd), lo(rd), imm), ctx);
357 emit_imm(RV_REG_T0, imm, ctx);
362 if (is_12b_int(imm)) {
363 emit(rv_ori(lo(rd), lo(rd), imm), ctx);
365 emit_imm(RV_REG_T0, imm, ctx);
370 if (is_12b_int(imm)) {
371 emit(rv_xori(lo(rd), lo(rd), imm), ctx);
373 emit_imm(RV_REG_T0, imm, ctx);
378 if (is_12b_int(imm)) {
379 emit(rv_slli(lo(rd), lo(rd), imm), ctx);
381 emit_imm(RV_REG_T0, imm, ctx);
386 if (is_12b_int(imm)) {
387 emit(rv_srli(lo(rd), lo(rd), imm), ctx);
389 emit_imm(RV_REG_T0, imm, ctx);
394 if (is_12b_int(imm)) {
395 emit(rv_srai(lo(rd), lo(rd), imm), ctx);
397 emit_imm(RV_REG_T0, imm, ctx);
964 s32 imm = insn->imm;
991 emit_imm32(tmp2, imm, ctx);
1014 emit_alu_i64(dst, imm, ctx, BPF_OP(code));
1018 if (imm == 1) {
1044 emit_imm32(tmp2, imm, ctx);
1063 emit_alu_i32(dst, imm, ctx, BPF_OP(code));
1078 switch (imm) {
1091 pr_err("bpf-jit: BPF_END imm %d invalid\n", imm);
1103 switch (imm) {
1125 pr_err("bpf-jit: BPF_END imm %d invalid\n", imm);
1214 emit_imm32(tmp2, imm, ctx);
1237 s32 imm_lo = imm;
1238 s32 imm_hi = insn1.imm;
1269 emit_imm32(tmp2, imm, ctx);