All pastes #219284 Raw Edit

Miscellany

public text v1 · immutable
#219284 ·published 2006-10-24 16:27 UTC
rendered paste body
JIT_OP_IADD:
	[=local, imm, imm] -> {
		x86_mov_membase_imm(inst, X86_EBP, $1, $2+$3, 4);
	}
	[=local, imm, local, scratch("?")] -> {
		if($1==$3)
		{
			x86_alu_membase_imm(inst, X86_ADD, X86_EBP, $1, $2);
		}
		else
		{
			x86_mov_reg_imm(inst, $4, $2);
			x86_alu_membase_reg(inst, X86_ADD, X86_EBP, $1, $4);
		}
	}
	[=local, imm, reg] -> {
		x86_mov_membase_reg(inst, X86_EBP, $1, $3, 4);
		x86_alu_membase_imm(inst, X86_ADD, X86_EBP, $1, $2);
	}
	[=local, local, imm, scratch("?")] -> {
		if($1==$2)x86_alu_membase_imm(inst, X86_ADD, X86_EBP, $1, $3);
		else
		{
			x86_mov_reg_imm(inst, $4, $3);
			x86_alu_reg_membase(inst, X86_ADD, $4, X86_EBP, $2);
			x86_mov_membase_reg(inst, X86_EBP, $1, $4, 4);
		}
	}
	[=local, local, local, scratch("?")] -> {
		if($1==$2 && $1==$3)
		{
			x86_mov_reg_membase(inst, $4, X86_EBP, $1, 4);
			x86_alu_membase_reg(inst, X86_ADD, X86_EBP, $1, $4);
		}
		else if($1==$2)
		{
			x86_mov_reg_membase(inst, $4, X86_EBP, $3, 4);
			x86_alu_membase_reg(inst, X86_ADD, X86_EBP, $1, $4);
		}
		else if($1==$3)
		{
			x86_mov_reg_membase(inst, $4, X86_EBP, $2, 4);
			x86_alu_membase_reg(inst, X86_ADD, X86_EBP, $1, $4);
		}
		else
		{
			x86_mov_reg_membase(inst, $4, X86_EBP, $2, 4);
			x86_alu_reg_membase(inst, X86_ADD, $4, X86_EBP, $3);
			x86_mov_membase_reg(inst, X86_EBP, $1, $4, 4);
		}
	}
	[=local, local, reg, scratch("?")] -> {
		if($1!=$2)
		{
			x86_mov_reg_membase(inst, $4, X86_EBP, $2, 4);
			x86_alu_reg_reg(inst, X86_ADD, $4, $3);
			x86_mov_membase_reg(inst, X86_EBP, $1, $4, 4);
		}
		else
		{
			x86_alu_membase_reg(inst, X86_ADD, X86_EBP, $1, $3);
		}
	}
	[=local, reg, imm] -> {
		x86_mov_membase_reg(inst, X86_EBP, $1, $2, 4);
		x86_alu_membase_imm(inst, X86_ADD, X86_EBP, $1, $3); 
	}
	[=local, reg, local, scratch("?")] -> {
		if($1!=$3)
		{
			x86_mov_reg_membase(inst, $4, X86_EBP, $3, 4);
			x86_alu_reg_reg(inst, X86_ADD, $4, $2);
			x86_mov_membase_reg(inst, X86_EBP, $1, $4, 4);
		}
		else
		{
			x86_alu_membase_reg(inst, X86_ADD, X86_EBP, $1, $2);
		}
	}
	[=local, reg, reg] -> {
		x86_mov_membase_reg(inst, X86_EBP, $1, $2, 4);
		x86_alu_membase_reg(inst, X86_EBP, X86_EBP, $1, $3);
	}
	[=reg, imm, imm] -> {
		x86_mov_reg_imm(inst, $1, $2+$3);
	}
	[=reg, imm, local] -> {
		x86_mov_reg_membase(inst, $1, X86_EBP, $3, 4);
		if($2!=0)x86_alu_reg_imm(inst, X86_ADD, $1, $2);
	}
	[=reg, imm, reg] -> {
		if($3!=$1)x86_mov_reg_reg(inst, $1, $3, 4);
		if($2!=0)x86_alu_reg_imm(inst, X86_ADD, $1, $2);
	}
	[=reg, local, imm] -> {
		x86_mov_reg_membase(inst, $1, X86_EBP, $2, 4);
		if($3!=0)x86_alu_reg_imm(inst, X86_ADD, $1, $3);
	}
	[=reg, local, local] -> {
		x86_mov_reg_membase(inst, $1, X86_EBP, $3, 4);
		if($2!=$3)x86_alu_reg_membase(inst, $1, X86_EBP, $1, 4);
		else x86_alu_reg_reg(inst, X86_ADD, $1, $1);
	}
	[=reg, local, reg] -> {
		if($1!=$3)x86_mov_reg_reg(inst, $1, $3, 4);
		x86_alu_reg_membase(inst, X86_ADD, $1, X86_EBP, $2);
	}
	[=reg, reg, imm] -> {
		if($3!=$1)x86_mov_reg_reg(inst, $1, $2, 4);
		if($3!=0)x86_alu_reg_imm(inst, X86_ADD, $1, $3);
	}
	[=reg, reg, local] -> {
		if($2==$1) x86_alu_reg_membase(inst, X86_ADD, $1, X86_EBP, $3);
		else
		{
			    x86_mov_reg_reg(inst, $1, $2, 4);
			    x86_alu_reg_membase(inst, X86_ADD, $1, X86_EBP, $3);
		}
	}
	[=reg, reg, reg] -> {
		if($1==$2 && $1==$3) x86_alu_reg_reg(inst, X86_ADD, $1, $1);
		else if($3==$1)x86_alu_reg_reg(inst, X86_ADD, $1, $3);
		else if($3==$2)x86_alu_reg_reg(inst, X86_ADD, $1, $2);
		else
		{
			x86_mov_reg_reg(inst, $1, $2, 4);
			x86_alu_reg_reg(inst, X86_ADD, $1, $3);
		}
	}