Lines Matching refs:op2
357 if (IR_IS_CONST_REF(insn->op2) && insn->op1 != insn->op2) {
358 const ir_insn *val_insn = &ctx->ir_base[insn->op2];
388 } else if (ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA) {
442 if (IR_IS_CONST_REF(insn->op2)) {
443 int64_t offset = ctx->ir_base[insn->op2].val.u64 - 1;
475 if (IR_IS_CONST_REF(insn->op2) && insn->op1 != insn->op2) {
490 if (IR_IS_CONST_REF(insn->op2) && insn->op1 != insn->op2) {
491 insn = &ctx->ir_base[insn->op2];
496 } else if (ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA) {
509 if (IR_IS_CONST_REF(insn->op2) && insn->op1 != insn->op2) {
510 const ir_insn *val_insn = &ctx->ir_base[insn->op2];
529 if (IR_IS_CONST_REF(insn->op2)) {
530 IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
539 if (IR_IS_CONST_REF(insn->op2)) {
540 IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
558 if (IR_IS_CONST_REF(insn->op2)) {
559 insn = &ctx->ir_base[insn->op2];
563 insn = &ctx->ir_base[insn->op2];
581 if (!IR_IS_CONST_REF(insn->op2)) {
595 if (IR_IS_CONST_REF(insn->op2) || ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA) {
624 constraints->def_reg = ctx->ir_base[ref].op2;
675 && IR_IS_CONST_REF(addr_insn->op2) // TODO: temporary workaround
676 && !IR_IS_SYM_CONST(ctx->ir_base[addr_insn->op2].op)
677 && aarch64_may_encode_addr_offset(ctx->ir_base[addr_insn->op2].val.i64, ir_type_size[type])) {
723 if ((ctx->flags & IR_OPT_CODEGEN) && IR_IS_CONST_REF(insn->op2)) {
724 op2_insn = &ctx->ir_base[insn->op2];
742 if ((ctx->flags & IR_OPT_CODEGEN) && IR_IS_CONST_REF(insn->op2)) {
743 op2_insn = &ctx->ir_base[insn->op2];
770 if ((ctx->flags & IR_OPT_CODEGEN) && IR_IS_CONST_REF(insn->op2)) {
771 op2_insn = &ctx->ir_base[insn->op2];
792 if ((ctx->flags & IR_OPT_CODEGEN) && IR_IS_CONST_REF(insn->op2)) {
793 op2_insn = &ctx->ir_base[insn->op2];
821 if ((ctx->flags & IR_OPT_CODEGEN) && IR_IS_CONST_REF(insn->op2)) {
822 op2_insn = &ctx->ir_base[insn->op2];
835 if ((ctx->flags & IR_OPT_CODEGEN) && IR_IS_CONST_REF(insn->op2)) {
836 op2_insn = &ctx->ir_base[insn->op2];
849 if ((ctx->flags & IR_OPT_CODEGEN) && IR_IS_CONST_REF(insn->op2)) {
850 op2_insn = &ctx->ir_base[insn->op2];
859 if (IR_IS_CONST_REF(insn->op2)) {
861 op2_insn = &ctx->ir_base[insn->op2];
885 if (IR_IS_CONST_REF(insn->op2)) {
887 op2_insn = &ctx->ir_base[insn->op2];
936 if (IR_IS_CONST_REF(insn->op2) && ctx->cfg_map[ref] == 1) {
937 ir_insn *val = &ctx->ir_base[insn->op2];
948 ir_match_fuse_addr(ctx, insn->op2, insn->type);
956 ir_match_fuse_addr(ctx, insn->op2, ctx->ir_base[insn->op3].type);
964 if (IR_REGSET_IN(IR_REGSET_UNION((ir_regset)ctx->fixed_regset, IR_REGSET_FIXED), insn->op2)) {
969 if (IR_IS_TYPE_INT(ctx->ir_base[insn->op2].type)) {
970 …ctx->flags & IR_OPT_CODEGEN) && ir_in_same_block(ctx, insn->op2) && ctx->use_lists[insn->op2].coun…
971 ir_insn *op_insn = &ctx->ir_base[insn->op2];
973 if (!ctx->rules[insn->op2]) {
974 ctx->rules[insn->op2] = ir_match_insn(ctx, insn->op2);
976 if (ctx->rules[insn->op2] == IR_BINOP_INT) {
978 && ctx->ir_base[op_insn->op1].op2 == insn->op3) {
979 ctx->rules[insn->op2] = IR_FUSED | IR_BINOP_INT;
983 && ctx->ir_base[op_insn->op2].op == IR_RLOAD
984 && ctx->ir_base[op_insn->op2].op2 == insn->op3) {
985 SWAP_REFS(op_insn->op1, op_insn->op2);
986 ctx->rules[insn->op2] = IR_FUSED | IR_BINOP_INT;
1005 if (!insn->op2) {
1007 } else if (IR_IS_TYPE_INT(ctx->ir_base[insn->op2].type)) {
1013 if (!IR_IS_CONST_REF(insn->op2) && ctx->use_lists[insn->op2].count == 1) {
1014 op2_insn = &ctx->ir_base[insn->op2];
1017 ctx->rules[insn->op2] = IR_FUSED | IR_CMP_INT;
1020 ctx->rules[insn->op2] = IR_FUSED | IR_CMP_FP;
1023 } else if (op2_insn->op == IR_OVERFLOW && ir_in_same_block(ctx, insn->op2)) {
1024 ctx->rules[insn->op2] = IR_FUSED | IR_SIMPLE | IR_OVERFLOW;
1028 if (IR_IS_TYPE_INT(ctx->ir_base[insn->op2].type)) {
1036 if (!IR_IS_CONST_REF(insn->op2) && ctx->use_lists[insn->op2].count == 1) {
1037 op2_insn = &ctx->ir_base[insn->op2];
1040 && (insn->op2 == ref - 1 ||
1041 (insn->op2 == ctx->prev_ref[ref] - 1
1044 ctx->rules[insn->op2] = IR_FUSED | IR_CMP_INT;
1047 ctx->rules[insn->op2] = IR_FUSED | IR_CMP_FP;
1050 } else if (op2_insn->op == IR_OVERFLOW && ir_in_same_block(ctx, insn->op2)) {
1051 ctx->rules[insn->op2] = IR_FUSED | IR_SIMPLE | IR_OVERFLOW;
1058 if ((ctx->ir_base[insn->op2].op == IR_ALLOCA) || (ctx->ir_base[insn->op2].op == IR_VADDR)) {
1059 ir_use_list *use_list = &ctx->use_lists[insn->op2];
1065 if (use_insn->op3 == insn->op2) {
1069 if (use_insn->op2 == insn->op2) {
1796 ir_ref op2 = insn->op2;
1811 if (op1 != op2) {
1812 ir_emit_load(ctx, type, op2_reg, op2);
1890 IR_ASSERT(IR_IS_CONST_REF(op2));
1891 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[op2].op));
1892 int32_t val = ctx->ir_base[op2].val.i32;
1910 uint64_t val = ctx->ir_base[op2].val.u64;
1918 uint64_t val = ctx->ir_base[op2].val.u64;
1926 uint64_t val = ctx->ir_base[op2].val.u64;
1945 ir_ref op2 = insn->op2;
1958 ir_emit_load(ctx, type, op2_reg, op2);
1961 if (op1 == op2) {
2030 ir_insn *overflow_insn = &ctx->ir_base[insn->op2];
2073 ir_insn *op_insn = &ctx->ir_base[insn->op2];
2075 ir_ref op2 = op_insn->op2;
2076 ir_reg op2_reg = ctx->regs[insn->op2][2];
2083 ir_val *val = &ctx->ir_base[op2].val;
2085 IR_ASSERT(IR_IS_CONST_REF(op2));
2086 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[op2].op));
2109 ir_emit_load(ctx, type, op2_reg, op2);
2145 IR_ASSERT(IR_IS_CONST_REF(insn->op2));
2146 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[insn->op2].op));
2154 uint32_t shift = IR_LOG2(ctx->ir_base[insn->op2].val.u64);
2161 uint32_t shift = IR_LOG2(ctx->ir_base[insn->op2].val.u64);
2165 uint64_t mask = ctx->ir_base[insn->op2].val.u64 - 1;
2182 uint32_t shift = IR_LOG2(ctx->ir_base[insn->op2].val.u64);
2183 int64_t offset = ctx->ir_base[insn->op2].val.u64 - 1;
2186 IR_ASSERT(IR_IS_CONST_REF(insn->op2));
2187 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[insn->op2].op));
2240 // uint32_t shift = IR_LOG2(ctx->ir_base[insn->op2].val.u64);
2241 uint64_t mask = ctx->ir_base[insn->op2].val.u64 - 1;
2244 IR_ASSERT(IR_IS_CONST_REF(insn->op2));
2245 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[insn->op2].op));
2293 ir_emit_load(ctx, type, op2_reg, insn->op2);
2385 uint32_t shift = ctx->ir_base[insn->op2].val.u64;
2392 IR_ASSERT(IR_IS_CONST_REF(insn->op2));
2393 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[insn->op2].op));
2617 ir_ref op2 = insn->op2;
2629 if (op1 != op2) {
2630 ir_emit_load(ctx, type, op2_reg, op2);
2681 …t_cmp_int_common(ir_ctx *ctx, ir_type type, ir_reg op1_reg, ir_ref op1, ir_reg op2_reg, ir_ref op2)
2711 IR_ASSERT(IR_IS_CONST_REF(op2));
2712 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[op2].op));
2713 int32_t val = ctx->ir_base[op2].val.i32;
2730 ir_ref op2 = insn->op2;
2743 if (op1 != op2) {
2744 ir_emit_load(ctx, type, op2_reg, op2);
2748 if (IR_IS_CONST_REF(insn->op2)
2749 && !IR_IS_SYM_CONST(ctx->ir_base[insn->op2].op)
2750 && ctx->ir_base[insn->op2].val.u64 == 0) {
2771 ir_emit_cmp_int_common(ctx, type, op1_reg, op1, op2_reg, op2);
2817 ir_ref op1, op2;
2823 op1 = cmp_insn->op2;
2824 op2 = cmp_insn->op1;
2829 op2 = cmp_insn->op2;
2841 if (op1 != op2) {
2842 ir_emit_load(ctx, type, op2_reg, op2);
3063 ir_insn *cmp_insn = &ctx->ir_base[insn->op2];
3067 ir_ref op2 = cmp_insn->op2;
3068 ir_reg op1_reg = ctx->regs[insn->op2][1];
3069 ir_reg op2_reg = ctx->regs[insn->op2][2];
3078 if (op1 != op2) {
3079 ir_emit_load(ctx, type, op2_reg, op2);
3083 if (IR_IS_CONST_REF(op2)
3084 && !IR_IS_SYM_CONST(ctx->ir_base[op2].op)
3085 && ctx->ir_base[op2].val.u64 == 0) {
3104 ir_emit_cmp_int_common(ctx, type, op1_reg, op1, op2_reg, op2);
3110 ir_op op = ir_emit_cmp_fp_common(ctx, insn->op2, &ctx->ir_base[insn->op2]);
3116 ir_type type = ctx->ir_base[insn->op2].type;
3121 if (IR_IS_CONST_REF(insn->op2)) {
3125 if (ir_const_is_true(&ctx->ir_base[insn->op2])) {
3135 } else if (ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA) {
3147 ir_emit_load(ctx, type, op2_reg, insn->op2);
3159 ir_ref op2 = insn->op2;
3171 ir_emit_load(ctx, type, op2_reg, op2);
3172 if (op1 == op2) {
3175 if (op3 == op2) {
3179 if (op3 != op2 && IR_REG_SPILLED(op3_reg)) {
3182 if (op1 == op2) {
3186 if (op1 != op2 && op1 != op3 && IR_REG_SPILLED(op1_reg)) {
3230 ir_type type = ctx->ir_base[insn->op2].type;
3235 ir_emit_load(ctx, type, IR_REG_INT_RET1, insn->op2);
3244 ir_type type = ctx->ir_base[insn->op2].type;
3250 ir_emit_load(ctx, type, IR_REG_FP_RET1, insn->op2);
3729 ir_insn *var_insn = &ctx->ir_base[insn->op2];
3756 ir_insn *var_insn = &ctx->ir_base[insn->op2];
3789 IR_ASSERT(!IR_IS_CONST_REF(addr_insn->op1) && IR_IS_CONST_REF(addr_insn->op2));
3790 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[addr_insn->op2].op));
3794 offset += ctx->ir_base[addr_insn->op2].val.i32;
3806 return IR_MEM_BO(reg, ctx->ir_base[addr_insn->op2].val.i32);
3831 IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
3832 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3835 } else if (IR_IS_CONST_REF(insn->op2)) {
3837 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3840 IR_ASSERT(ir_rule(ctx, insn->op2) & IR_FUSED);
3841 mem = ir_fuse_addr(ctx, def, insn->op2);
3871 IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
3872 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3875 } else if (IR_IS_CONST_REF(insn->op2)) {
3877 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3880 IR_ASSERT(ir_rule(ctx, insn->op2) & IR_FUSED);
3881 mem = ir_fuse_addr(ctx, def, insn->op2);
3907 IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
3908 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3912 IR_ASSERT(!IR_IS_CONST_REF(insn->op2) && (ir_rule(ctx, insn->op2) & IR_FUSED));
3913 mem = ir_fuse_addr(ctx, ref, insn->op2);
3950 IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
3951 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3955 IR_ASSERT(!IR_IS_CONST_REF(insn->op2) && (ir_rule(ctx, insn->op2) & IR_FUSED));
3956 mem = ir_fuse_addr(ctx, ref, insn->op2);
3979 ir_reg src_reg = insn->op2;
4017 ir_ref type = ctx->ir_base[insn->op2].type;
4024 ir_emit_load(ctx, type, op2_reg, insn->op2);
4035 ir_emit_load(ctx, type, dst_reg, insn->op2);
4049 if (IR_IS_CONST_REF(insn->op2)) {
4050 ir_insn *val = &ctx->ir_base[insn->op2];
4071 ir_type type = ctx->ir_base[insn->op2].type;
4078 ir_emit_load(ctx, type, op2_reg, insn->op2);
4099 if (IR_IS_CONST_REF(insn->op2)) {
4100 ir_insn *val = &ctx->ir_base[insn->op2];
4116 ir_type type = ctx->ir_base[insn->op2].type;
4122 ir_emit_load(ctx, type, op2_reg, insn->op2);
4157 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4194 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4198 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4200 offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4226 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4230 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4232 offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4293 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4297 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4299 op2_offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4326 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4330 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4332 op2_offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4371 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4375 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4377 offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4399 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4403 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4405 offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4462 type = ctx->ir_base[insn->op2].type;
4477 val = &ctx->ir_base[use_insn->op2];
4502 ir_emit_load(ctx, type, op2_reg, insn->op2);
4517 val = &ctx->ir_base[use_insn->op2];
4572 if (insn->op == IR_IJMP && IR_IS_CONST_REF(insn->op2)) {
4578 void *addr = ir_jmp_addr(ctx, insn, &ctx->ir_base[insn->op2]);
4600 val = &ctx->ir_base[use_insn->op2];
4858 if (IR_IS_CONST_REF(insn->op2)) {
4859 void *addr = ir_call_addr(ctx, insn, &ctx->ir_base[insn->op2]);
4873 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4933 if (IR_IS_CONST_REF(insn->op2)) {
4934 void *addr = ir_call_addr(ctx, insn, &ctx->ir_base[insn->op2]);
4948 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4963 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4966 } else if (IR_IS_CONST_REF(insn->op2)) {
4967 void *addr = ir_jmp_addr(ctx, insn, &ctx->ir_base[insn->op2]);
4985 ir_type type = ctx->ir_base[insn->op2].type;
4988 if (IR_IS_CONST_REF(insn->op2)) {
4989 bool is_true = ir_ref_is_true(ctx, insn->op2);
5011 ir_emit_load(ctx, type, op2_reg, insn->op2);
5130 ir_insn *cmp_insn = &ctx->ir_base[insn->op2];
5134 ir_ref op2 = cmp_insn->op2;
5135 ir_reg op1_reg = ctx->regs[insn->op2][1];
5136 ir_reg op2_reg = ctx->regs[insn->op2][2];
5145 if (op1 != op2) {
5146 ir_emit_load(ctx, type, op2_reg, op2);
5152 if (IR_IS_CONST_REF(op2)
5153 && !IR_IS_SYM_CONST(ctx->ir_base[op2].op)
5154 && ctx->ir_base[op2].val.u64 == 0) {
5180 ir_emit_cmp_int_common(ctx, type, op1_reg, op1, op2_reg, op2);
5191 ir_op op = ir_emit_cmp_fp_common(ctx, insn->op2, &ctx->ir_base[insn->op2]);
5204 ir_insn *overflow_insn = &ctx->ir_base[insn->op2];
5247 |//??? MEM_ACCESS_64_WITH_UOFFSET_64 ldr, Rx(reg), Rx(reg), #insn->op2, TMP1
5254 | ldr Rx(reg), [Rx(reg), #insn->op2]
5257 | ldr Rx(reg), [Rx(reg), #insn->op2]
5262 | ldr Rx(reg), [Rx(reg), #insn->op2]
5265 | ldr Rx(reg), [Rx(reg), #insn->op2]
5269 ||//??? IR_ASSERT(insn->op2 <= LDR_STR_PIMM64);
5270 | ldr Rx(reg), [Rx(reg), #insn->op2]
5325 if (IR_IS_CONST_REF(insn->op2)) {
5326 void *addr = ir_call_addr(ctx, insn, &ctx->ir_base[insn->op2]);
5609 && ir_is_same_mem_var(ctx, i, ctx->ir_base[insn->op2].op3)) {