4359 scale(0x0); 4360 disp(0x0); 4361 %} 4362 %} 4363 4364 // Indirect Memory Plus Long Offset Operand 4365 operand load_long_indOffset32(load_long_RegP reg, immI off) %{ 4366 match(AddP reg off); 4367 4368 format %{ "[$reg + $off]" %} 4369 interface(MEMORY_INTER) %{ 4370 base($reg); 4371 index(0x4); 4372 scale(0x0); 4373 disp($off); 4374 %} 4375 %} 4376 4377 opclass load_long_memory(load_long_indirect, load_long_indOffset32); 4378 4379 4380 //----------Special Memory Operands-------------------------------------------- 4381 // Stack Slot Operand - This operand is used for loading and storing temporary 4382 // values on the stack where a match requires a value to 4383 // flow through memory. 4384 operand stackSlotP(sRegP reg) %{ 4385 constraint(ALLOC_IN_RC(stack_slots)); 4386 // No match rule because this operand is only generated in matching 4387 format %{ "[$reg]" %} 4388 interface(MEMORY_INTER) %{ 4389 base(0x4); // ESP 4390 index(0x4); // No Index 4391 scale(0x0); // No Scale 4392 disp($reg); // Stack Offset 4393 %} 4394 %} 4395 4396 operand stackSlotI(sRegI reg) %{ 4397 constraint(ALLOC_IN_RC(stack_slots)); 4398 // No match rule because this operand is only generated in matching | 4359 scale(0x0); 4360 disp(0x0); 4361 %} 4362 %} 4363 4364 // Indirect Memory Plus Long Offset Operand 4365 operand load_long_indOffset32(load_long_RegP reg, immI off) %{ 4366 match(AddP reg off); 4367 4368 format %{ "[$reg + $off]" %} 4369 interface(MEMORY_INTER) %{ 4370 base($reg); 4371 index(0x4); 4372 scale(0x0); 4373 disp($off); 4374 %} 4375 %} 4376 4377 opclass load_long_memory(load_long_indirect, load_long_indOffset32); 4378 4379 4380 opclass legRegF (regF); 4381 opclass legRegD (regD); 4382 4383 4384 4385 //----------Special Memory Operands-------------------------------------------- 4386 // Stack Slot Operand - This operand is used for loading and storing temporary 4387 // values on the stack where a match requires a value to 4388 // flow through memory. 4389 operand stackSlotP(sRegP reg) %{ 4390 constraint(ALLOC_IN_RC(stack_slots)); 4391 // No match rule because this operand is only generated in matching 4392 format %{ "[$reg]" %} 4393 interface(MEMORY_INTER) %{ 4394 base(0x4); // ESP 4395 index(0x4); // No Index 4396 scale(0x0); // No Scale 4397 disp($reg); // Stack Offset 4398 %} 4399 %} 4400 4401 operand stackSlotI(sRegI reg) %{ 4402 constraint(ALLOC_IN_RC(stack_slots)); 4403 // No match rule because this operand is only generated in matching |