comparison src/share/vm/opto/matcher.cpp @ 14429:2113136690bc

8024921: PPC64 (part 113): Extend Load and Store nodes to know about memory ordering Summary: Add a field to C2 LoadNode and StoreNode classes which indicates whether the load/store should do an acquire/release on platforms which support it. Reviewed-by: kvn
author goetz
date Fri, 15 Nov 2013 11:05:32 -0800
parents 2b8e28fdf503
children da862781b584
comparison
equal deleted inserted replaced
14427:eb178e97560c 14429:2113136690bc
823 // Share frame pointer while making spill ops 823 // Share frame pointer while making spill ops
824 set_shared(fp); 824 set_shared(fp);
825 825
826 // Compute generic short-offset Loads 826 // Compute generic short-offset Loads
827 #ifdef _LP64 827 #ifdef _LP64
828 MachNode *spillCP = match_tree(new (C) LoadNNode(NULL,mem,fp,atp,TypeInstPtr::BOTTOM)); 828 MachNode *spillCP = match_tree(new (C) LoadNNode(NULL,mem,fp,atp,TypeInstPtr::BOTTOM,MemNode::unordered));
829 #endif 829 #endif
830 MachNode *spillI = match_tree(new (C) LoadINode(NULL,mem,fp,atp)); 830 MachNode *spillI = match_tree(new (C) LoadINode(NULL,mem,fp,atp,TypeInt::INT,MemNode::unordered));
831 MachNode *spillL = match_tree(new (C) LoadLNode(NULL,mem,fp,atp)); 831 MachNode *spillL = match_tree(new (C) LoadLNode(NULL,mem,fp,atp,TypeLong::LONG,MemNode::unordered,false));
832 MachNode *spillF = match_tree(new (C) LoadFNode(NULL,mem,fp,atp)); 832 MachNode *spillF = match_tree(new (C) LoadFNode(NULL,mem,fp,atp,Type::FLOAT,MemNode::unordered));
833 MachNode *spillD = match_tree(new (C) LoadDNode(NULL,mem,fp,atp)); 833 MachNode *spillD = match_tree(new (C) LoadDNode(NULL,mem,fp,atp,Type::DOUBLE,MemNode::unordered));
834 MachNode *spillP = match_tree(new (C) LoadPNode(NULL,mem,fp,atp,TypeInstPtr::BOTTOM)); 834 MachNode *spillP = match_tree(new (C) LoadPNode(NULL,mem,fp,atp,TypeInstPtr::BOTTOM,MemNode::unordered));
835 assert(spillI != NULL && spillL != NULL && spillF != NULL && 835 assert(spillI != NULL && spillL != NULL && spillF != NULL &&
836 spillD != NULL && spillP != NULL, ""); 836 spillD != NULL && spillP != NULL, "");
837
838 // Get the ADLC notion of the right regmask, for each basic type. 837 // Get the ADLC notion of the right regmask, for each basic type.
839 #ifdef _LP64 838 #ifdef _LP64
840 idealreg2regmask[Op_RegN] = &spillCP->out_RegMask(); 839 idealreg2regmask[Op_RegN] = &spillCP->out_RegMask();
841 #endif 840 #endif
842 idealreg2regmask[Op_RegI] = &spillI->out_RegMask(); 841 idealreg2regmask[Op_RegI] = &spillI->out_RegMask();