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) {
1794 ir_ref op2 = insn->op2;
1809 if (op1 != op2) {
1810 ir_emit_load(ctx, type, op2_reg, op2);
1888 IR_ASSERT(IR_IS_CONST_REF(op2));
1889 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[op2].op));
1890 int32_t val = ctx->ir_base[op2].val.i32;
1908 uint64_t val = ctx->ir_base[op2].val.u64;
1916 uint64_t val = ctx->ir_base[op2].val.u64;
1924 uint64_t val = ctx->ir_base[op2].val.u64;
1943 ir_ref op2 = insn->op2;
1956 ir_emit_load(ctx, type, op2_reg, op2);
1959 if (op1 == op2) {
2028 ir_insn *overflow_insn = &ctx->ir_base[insn->op2];
2071 ir_insn *op_insn = &ctx->ir_base[insn->op2];
2073 ir_ref op2 = op_insn->op2;
2074 ir_reg op2_reg = ctx->regs[insn->op2][2];
2081 ir_val *val = &ctx->ir_base[op2].val;
2083 IR_ASSERT(IR_IS_CONST_REF(op2));
2084 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[op2].op));
2107 ir_emit_load(ctx, type, op2_reg, op2);
2143 IR_ASSERT(IR_IS_CONST_REF(insn->op2));
2144 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[insn->op2].op));
2152 uint32_t shift = IR_LOG2(ctx->ir_base[insn->op2].val.u64);
2159 uint32_t shift = IR_LOG2(ctx->ir_base[insn->op2].val.u64);
2163 uint64_t mask = ctx->ir_base[insn->op2].val.u64 - 1;
2180 uint32_t shift = IR_LOG2(ctx->ir_base[insn->op2].val.u64);
2181 int64_t offset = ctx->ir_base[insn->op2].val.u64 - 1;
2184 IR_ASSERT(IR_IS_CONST_REF(insn->op2));
2185 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[insn->op2].op));
2238 // uint32_t shift = IR_LOG2(ctx->ir_base[insn->op2].val.u64);
2239 uint64_t mask = ctx->ir_base[insn->op2].val.u64 - 1;
2242 IR_ASSERT(IR_IS_CONST_REF(insn->op2));
2243 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[insn->op2].op));
2291 ir_emit_load(ctx, type, op2_reg, insn->op2);
2383 uint32_t shift = ctx->ir_base[insn->op2].val.u64;
2390 IR_ASSERT(IR_IS_CONST_REF(insn->op2));
2391 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[insn->op2].op));
2615 ir_ref op2 = insn->op2;
2627 if (op1 != op2) {
2628 ir_emit_load(ctx, type, op2_reg, op2);
2679 …t_cmp_int_common(ir_ctx *ctx, ir_type type, ir_reg op1_reg, ir_ref op1, ir_reg op2_reg, ir_ref op2)
2709 IR_ASSERT(IR_IS_CONST_REF(op2));
2710 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[op2].op));
2711 int32_t val = ctx->ir_base[op2].val.i32;
2728 ir_ref op2 = insn->op2;
2741 if (op1 != op2) {
2742 ir_emit_load(ctx, type, op2_reg, op2);
2746 if (IR_IS_CONST_REF(insn->op2)
2747 && !IR_IS_SYM_CONST(ctx->ir_base[insn->op2].op)
2748 && ctx->ir_base[insn->op2].val.u64 == 0) {
2769 ir_emit_cmp_int_common(ctx, type, op1_reg, op1, op2_reg, op2);
2815 ir_ref op1, op2;
2821 op1 = cmp_insn->op2;
2822 op2 = cmp_insn->op1;
2827 op2 = cmp_insn->op2;
2839 if (op1 != op2) {
2840 ir_emit_load(ctx, type, op2_reg, op2);
3061 ir_insn *cmp_insn = &ctx->ir_base[insn->op2];
3065 ir_ref op2 = cmp_insn->op2;
3066 ir_reg op1_reg = ctx->regs[insn->op2][1];
3067 ir_reg op2_reg = ctx->regs[insn->op2][2];
3076 if (op1 != op2) {
3077 ir_emit_load(ctx, type, op2_reg, op2);
3081 if (IR_IS_CONST_REF(op2)
3082 && !IR_IS_SYM_CONST(ctx->ir_base[op2].op)
3083 && ctx->ir_base[op2].val.u64 == 0) {
3102 ir_emit_cmp_int_common(ctx, type, op1_reg, op1, op2_reg, op2);
3108 ir_op op = ir_emit_cmp_fp_common(ctx, insn->op2, &ctx->ir_base[insn->op2]);
3114 ir_type type = ctx->ir_base[insn->op2].type;
3119 if (IR_IS_CONST_REF(insn->op2)) {
3123 if (ir_const_is_true(&ctx->ir_base[insn->op2])) {
3133 } else if (ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA) {
3145 ir_emit_load(ctx, type, op2_reg, insn->op2);
3157 ir_ref op2 = insn->op2;
3169 ir_emit_load(ctx, type, op2_reg, op2);
3170 if (op1 == op2) {
3173 if (op3 == op2) {
3177 if (op3 != op2 && IR_REG_SPILLED(op3_reg)) {
3180 if (op1 == op2) {
3184 if (op1 != op2 && op1 != op3 && IR_REG_SPILLED(op1_reg)) {
3228 ir_type type = ctx->ir_base[insn->op2].type;
3233 ir_emit_load(ctx, type, IR_REG_INT_RET1, insn->op2);
3242 ir_type type = ctx->ir_base[insn->op2].type;
3248 ir_emit_load(ctx, type, IR_REG_FP_RET1, insn->op2);
3727 ir_insn *var_insn = &ctx->ir_base[insn->op2];
3750 ir_insn *var_insn = &ctx->ir_base[insn->op2];
3783 IR_ASSERT(!IR_IS_CONST_REF(addr_insn->op1) && IR_IS_CONST_REF(addr_insn->op2));
3784 IR_ASSERT(!IR_IS_SYM_CONST(ctx->ir_base[addr_insn->op2].op));
3788 offset += ctx->ir_base[addr_insn->op2].val.i32;
3800 return IR_MEM_BO(reg, ctx->ir_base[addr_insn->op2].val.i32);
3825 IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
3826 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3829 } else if (IR_IS_CONST_REF(insn->op2)) {
3831 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3834 IR_ASSERT(ir_rule(ctx, insn->op2) & IR_FUSED);
3835 mem = ir_fuse_addr(ctx, def, insn->op2);
3865 IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
3866 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3869 } else if (IR_IS_CONST_REF(insn->op2)) {
3871 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3874 IR_ASSERT(ir_rule(ctx, insn->op2) & IR_FUSED);
3875 mem = ir_fuse_addr(ctx, def, insn->op2);
3901 IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
3902 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3906 IR_ASSERT(!IR_IS_CONST_REF(insn->op2) && (ir_rule(ctx, insn->op2) & IR_FUSED));
3907 mem = ir_fuse_addr(ctx, ref, insn->op2);
3944 IR_ASSERT(ctx->ir_base[insn->op2].type == IR_ADDR);
3945 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
3949 IR_ASSERT(!IR_IS_CONST_REF(insn->op2) && (ir_rule(ctx, insn->op2) & IR_FUSED));
3950 mem = ir_fuse_addr(ctx, ref, insn->op2);
3973 ir_reg src_reg = insn->op2;
4011 ir_ref type = ctx->ir_base[insn->op2].type;
4018 ir_emit_load(ctx, type, op2_reg, insn->op2);
4029 ir_emit_load(ctx, type, dst_reg, insn->op2);
4043 if (IR_IS_CONST_REF(insn->op2)) {
4044 ir_insn *val = &ctx->ir_base[insn->op2];
4065 ir_type type = ctx->ir_base[insn->op2].type;
4072 ir_emit_load(ctx, type, op2_reg, insn->op2);
4093 if (IR_IS_CONST_REF(insn->op2)) {
4094 ir_insn *val = &ctx->ir_base[insn->op2];
4110 ir_type type = ctx->ir_base[insn->op2].type;
4116 ir_emit_load(ctx, type, op2_reg, insn->op2);
4147 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4184 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4188 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4190 offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4216 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4220 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4222 offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4283 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4287 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4289 op2_offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4316 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4320 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4322 op2_offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4361 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4365 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4367 offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4389 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4393 IR_ASSERT(ir_rule(ctx, insn->op2) == IR_STATIC_ALLOCA);
4395 offset = IR_SPILL_POS_TO_OFFSET(ctx->ir_base[insn->op2].op3);
4452 type = ctx->ir_base[insn->op2].type;
4467 val = &ctx->ir_base[use_insn->op2];
4492 ir_emit_load(ctx, type, op2_reg, insn->op2);
4507 val = &ctx->ir_base[use_insn->op2];
4562 if (insn->op == IR_IJMP && IR_IS_CONST_REF(insn->op2)) {
4568 void *addr = ir_jmp_addr(ctx, insn, &ctx->ir_base[insn->op2]);
4590 val = &ctx->ir_base[use_insn->op2];
4848 if (IR_IS_CONST_REF(insn->op2)) {
4849 void *addr = ir_call_addr(ctx, insn, &ctx->ir_base[insn->op2]);
4863 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4923 if (IR_IS_CONST_REF(insn->op2)) {
4924 void *addr = ir_call_addr(ctx, insn, &ctx->ir_base[insn->op2]);
4938 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4953 ir_emit_load(ctx, IR_ADDR, op2_reg, insn->op2);
4956 } else if (IR_IS_CONST_REF(insn->op2)) {
4957 void *addr = ir_jmp_addr(ctx, insn, &ctx->ir_base[insn->op2]);
4975 ir_type type = ctx->ir_base[insn->op2].type;
4978 if (IR_IS_CONST_REF(insn->op2)) {
4979 bool is_true = ir_ref_is_true(ctx, insn->op2);
5001 ir_emit_load(ctx, type, op2_reg, insn->op2);
5120 ir_insn *cmp_insn = &ctx->ir_base[insn->op2];
5124 ir_ref op2 = cmp_insn->op2;
5125 ir_reg op1_reg = ctx->regs[insn->op2][1];
5126 ir_reg op2_reg = ctx->regs[insn->op2][2];
5135 if (op1 != op2) {
5136 ir_emit_load(ctx, type, op2_reg, op2);
5142 if (IR_IS_CONST_REF(op2)
5143 && !IR_IS_SYM_CONST(ctx->ir_base[op2].op)
5144 && ctx->ir_base[op2].val.u64 == 0) {
5170 ir_emit_cmp_int_common(ctx, type, op1_reg, op1, op2_reg, op2);
5181 ir_op op = ir_emit_cmp_fp_common(ctx, insn->op2, &ctx->ir_base[insn->op2]);
5194 ir_insn *overflow_insn = &ctx->ir_base[insn->op2];
5237 |//??? MEM_ACCESS_64_WITH_UOFFSET_64 ldr, Rx(reg), Rx(reg), #insn->op2, TMP1
5244 | ldr Rx(reg), [Rx(reg), #insn->op2]
5247 | ldr Rx(reg), [Rx(reg), #insn->op2]
5251 ||//??? IR_ASSERT(insn->op2 <= LDR_STR_PIMM64);
5252 | ldr Rx(reg), [Rx(reg), #insn->op2]
5307 if (IR_IS_CONST_REF(insn->op2)) {
5308 void *addr = ir_call_addr(ctx, insn, &ctx->ir_base[insn->op2]);