src/cpu/x86/vm/x86_32.ad
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7079329 Cdiff src/cpu/x86/vm/x86_32.ad

src/cpu/x86/vm/x86_32.ad

Print this page

        

*** 7323,7367 **** predicate(UseSSE==0 && VM_Version::supports_3dnow_prefetch() || ReadPrefetchInstr==3); match(PrefetchRead mem); ins_cost(100); format %{ "PREFETCHR $mem\t! Prefetch into level 1 cache for read" %} ! opcode(0x0F, 0x0d); /* Opcode 0F 0d /0 */ ! ins_encode(OpcP, OpcS, RMopc_Mem(0x00,mem)); ins_pipe(ialu_mem); %} instruct prefetchrNTA( memory mem ) %{ predicate(UseSSE>=1 && ReadPrefetchInstr==0); match(PrefetchRead mem); ins_cost(100); format %{ "PREFETCHNTA $mem\t! Prefetch into non-temporal cache for read" %} ! opcode(0x0F, 0x18); /* Opcode 0F 18 /0 */ ! ins_encode(OpcP, OpcS, RMopc_Mem(0x00,mem)); ins_pipe(ialu_mem); %} instruct prefetchrT0( memory mem ) %{ predicate(UseSSE>=1 && ReadPrefetchInstr==1); match(PrefetchRead mem); ins_cost(100); format %{ "PREFETCHT0 $mem\t! Prefetch into L1 and L2 caches for read" %} ! opcode(0x0F, 0x18); /* Opcode 0F 18 /1 */ ! ins_encode(OpcP, OpcS, RMopc_Mem(0x01,mem)); ins_pipe(ialu_mem); %} instruct prefetchrT2( memory mem ) %{ predicate(UseSSE>=1 && ReadPrefetchInstr==2); match(PrefetchRead mem); ins_cost(100); format %{ "PREFETCHT2 $mem\t! Prefetch into L2 cache for read" %} ! opcode(0x0F, 0x18); /* Opcode 0F 18 /3 */ ! ins_encode(OpcP, OpcS, RMopc_Mem(0x03,mem)); ins_pipe(ialu_mem); %} instruct prefetchw0( memory mem ) %{ predicate(UseSSE==0 && !VM_Version::supports_3dnow_prefetch()); --- 7323,7371 ---- predicate(UseSSE==0 && VM_Version::supports_3dnow_prefetch() || ReadPrefetchInstr==3); match(PrefetchRead mem); ins_cost(100); format %{ "PREFETCHR $mem\t! Prefetch into level 1 cache for read" %} ! ins_encode %{ ! __ prefetchr($mem$$Address); ! %} ins_pipe(ialu_mem); %} instruct prefetchrNTA( memory mem ) %{ predicate(UseSSE>=1 && ReadPrefetchInstr==0); match(PrefetchRead mem); ins_cost(100); format %{ "PREFETCHNTA $mem\t! Prefetch into non-temporal cache for read" %} ! ins_encode %{ ! __ prefetchnta($mem$$Address); ! %} ins_pipe(ialu_mem); %} instruct prefetchrT0( memory mem ) %{ predicate(UseSSE>=1 && ReadPrefetchInstr==1); match(PrefetchRead mem); ins_cost(100); format %{ "PREFETCHT0 $mem\t! Prefetch into L1 and L2 caches for read" %} ! ins_encode %{ ! __ prefetcht0($mem$$Address); ! %} ins_pipe(ialu_mem); %} instruct prefetchrT2( memory mem ) %{ predicate(UseSSE>=1 && ReadPrefetchInstr==2); match(PrefetchRead mem); ins_cost(100); format %{ "PREFETCHT2 $mem\t! Prefetch into L2 cache for read" %} ! ins_encode %{ ! __ prefetcht2($mem$$Address); ! %} ins_pipe(ialu_mem); %} instruct prefetchw0( memory mem ) %{ predicate(UseSSE==0 && !VM_Version::supports_3dnow_prefetch());
*** 7372,7421 **** ins_encode(); ins_pipe(empty); %} instruct prefetchw( memory mem ) %{ ! predicate(UseSSE==0 && VM_Version::supports_3dnow_prefetch() || AllocatePrefetchInstr==3); match( PrefetchWrite mem ); ins_cost(100); format %{ "PREFETCHW $mem\t! Prefetch into L1 cache and mark modified" %} ! opcode(0x0F, 0x0D); /* Opcode 0F 0D /1 */ ! ins_encode(OpcP, OpcS, RMopc_Mem(0x01,mem)); ins_pipe(ialu_mem); %} instruct prefetchwNTA( memory mem ) %{ ! predicate(UseSSE>=1 && AllocatePrefetchInstr==0); match(PrefetchWrite mem); ins_cost(100); format %{ "PREFETCHNTA $mem\t! Prefetch into non-temporal cache for write" %} ! opcode(0x0F, 0x18); /* Opcode 0F 18 /0 */ ! ins_encode(OpcP, OpcS, RMopc_Mem(0x00,mem)); ins_pipe(ialu_mem); %} ! instruct prefetchwT0( memory mem ) %{ predicate(UseSSE>=1 && AllocatePrefetchInstr==1); ! match(PrefetchWrite mem); ins_cost(100); ! format %{ "PREFETCHT0 $mem\t! Prefetch into L1 and L2 caches for write" %} ! opcode(0x0F, 0x18); /* Opcode 0F 18 /1 */ ! ins_encode(OpcP, OpcS, RMopc_Mem(0x01,mem)); ins_pipe(ialu_mem); %} ! instruct prefetchwT2( memory mem ) %{ predicate(UseSSE>=1 && AllocatePrefetchInstr==2); ! match(PrefetchWrite mem); ins_cost(100); ! format %{ "PREFETCHT2 $mem\t! Prefetch into L2 cache for write" %} ! opcode(0x0F, 0x18); /* Opcode 0F 18 /3 */ ! ins_encode(OpcP, OpcS, RMopc_Mem(0x03,mem)); ins_pipe(ialu_mem); %} //----------Store Instructions------------------------------------------------- --- 7376,7465 ---- ins_encode(); ins_pipe(empty); %} instruct prefetchw( memory mem ) %{ ! predicate(UseSSE==0 && VM_Version::supports_3dnow_prefetch()); match( PrefetchWrite mem ); ins_cost(100); format %{ "PREFETCHW $mem\t! Prefetch into L1 cache and mark modified" %} ! ins_encode %{ ! __ prefetchw($mem$$Address); ! %} ins_pipe(ialu_mem); %} instruct prefetchwNTA( memory mem ) %{ ! predicate(UseSSE>=1); match(PrefetchWrite mem); ins_cost(100); format %{ "PREFETCHNTA $mem\t! Prefetch into non-temporal cache for write" %} ! ins_encode %{ ! __ prefetchnta($mem$$Address); ! %} ins_pipe(ialu_mem); %} ! // Prefetch instructions for allocation. ! ! instruct prefetchAlloc0( memory mem ) %{ ! predicate(UseSSE==0 && AllocatePrefetchInstr!=3); ! match(PrefetchAllocation mem); ! ins_cost(0); ! size(0); ! format %{ "Prefetch allocation (non-SSE is empty encoding)" %} ! ins_encode(); ! ins_pipe(empty); ! %} ! ! instruct prefetchAlloc( memory mem ) %{ ! predicate(AllocatePrefetchInstr==3); ! match( PrefetchAllocation mem ); ! ins_cost(100); ! ! format %{ "PREFETCHW $mem\t! Prefetch allocation into L1 cache and mark modified" %} ! ins_encode %{ ! __ prefetchw($mem$$Address); ! %} ! ins_pipe(ialu_mem); ! %} ! ! instruct prefetchAllocNTA( memory mem ) %{ ! predicate(UseSSE>=1 && AllocatePrefetchInstr==0); ! match(PrefetchAllocation mem); ! ins_cost(100); ! ! format %{ "PREFETCHNTA $mem\t! Prefetch allocation into non-temporal cache for write" %} ! ins_encode %{ ! __ prefetchnta($mem$$Address); ! %} ! ins_pipe(ialu_mem); ! %} ! ! instruct prefetchAllocT0( memory mem ) %{ predicate(UseSSE>=1 && AllocatePrefetchInstr==1); ! match(PrefetchAllocation mem); ins_cost(100); ! format %{ "PREFETCHT0 $mem\t! Prefetch allocation into L1 and L2 caches for write" %} ! ins_encode %{ ! __ prefetcht0($mem$$Address); ! %} ins_pipe(ialu_mem); %} ! instruct prefetchAllocT2( memory mem ) %{ predicate(UseSSE>=1 && AllocatePrefetchInstr==2); ! match(PrefetchAllocation mem); ins_cost(100); ! format %{ "PREFETCHT2 $mem\t! Prefetch allocation into L2 cache for write" %} ! ins_encode %{ ! __ prefetcht2($mem$$Address); ! %} ins_pipe(ialu_mem); %} //----------Store Instructions-------------------------------------------------
src/cpu/x86/vm/x86_32.ad
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File