You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by hi...@apache.org on 2010/06/07 09:47:12 UTC
svn commit: r952128 [2/3] - in /harmony/enhanced/java/trunk/drlvm: make/vm/
vm/jitrino/config/em64t/ vm/jitrino/config/ia32/
vm/jitrino/src/codegenerator/ vm/jitrino/src/codegenerator/ia32/
vm/jitrino/src/jet/ vm/jitrino/src/optimizer/ vm/jitrino/src/o...
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/IRBuilder.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/IRBuilder.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/IRBuilder.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/IRBuilder.cpp Mon Jun 7 07:47:11 2010
@@ -885,20 +885,6 @@ IRBuilder::genXor(Type* dstType, Opnd* s
return dst;
}
Opnd*
-IRBuilder::genAndNot(Type* dstType, Opnd* src1, Opnd* src2) {
- src1 = propagateCopy(src1);
- src2 = propagateCopy(src2);
- Opnd* dst = lookupHash(Op_AndNot, src1, src2);
- if (dst) return dst;
-
- if (!dst) {
- dst = createOpnd(dstType);
- appendInst(instFactory->makeAndNot(dst, src1, src2));
- }
- insertHash(Op_AndNot, src1, src2, dst->getInst());
- return dst;
-}
-Opnd*
IRBuilder::genNot(Type* dstType, Opnd* src) {
src = propagateCopy(src);
Opnd* dst = lookupHash(Op_Not, src);
@@ -3247,226 +3233,6 @@ IRBuilder::genTauCheckFinite(Opnd* src)
return dst;
}
-Opnd*
-IRBuilder::genVecAddSub (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2) {
- src1 = propagateCopy (src1);
- src2 = propagateCopy (src2);
-
- Operation operation (Op_VecAddSub, dstType->tag, mod);
- U_32 hashcode = operation.encodeForHashing ();
- Opnd* dst = lookupHash (hashcode, src1, src2);
-
- if (dst) return dst;
-
- if (!dst) {
- dst = createOpnd (dstType);
- Inst *newi = instFactory->makeVecAddSub (dst, src1, src2);
- appendInst (newi);
- }
-
- insertHash (hashcode, src1, src2, dst->getInst ());
- return dst;
-}
-
-Opnd*
-IRBuilder::genVecHadd (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2) {
- src1 = propagateCopy (src1);
- src2 = propagateCopy (src2);
-
- Operation operation (Op_VecHadd, dstType->tag, mod);
- U_32 hashcode = operation.encodeForHashing ();
- Opnd* dst = lookupHash (hashcode, src1, src2);
-
- if (dst) return dst;
-
- if (!dst) {
- dst = createOpnd (dstType);
- Inst *newi = instFactory->makeVecHadd (dst, src1, src2);
- appendInst (newi);
- }
-
- insertHash (hashcode, src1, src2, dst->getInst ());
- return dst;
-}
-
-Opnd*
-IRBuilder::genVecHsub (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2) {
- src1 = propagateCopy (src1);
- src2 = propagateCopy (src2);
-
- Operation operation (Op_VecHsub, dstType->tag, mod);
- U_32 hashcode = operation.encodeForHashing ();
- Opnd* dst = lookupHash (hashcode, src1, src2);
-
- if (dst) return dst;
-
- if (!dst) {
- dst = createOpnd (dstType);
- Inst *newi = instFactory->makeVecHsub (dst, src1, src2);
- appendInst (newi);
- }
-
- insertHash (hashcode, src1, src2, dst->getInst ());
- return dst;
-}
-
-Opnd*
-IRBuilder::genMaxVec (Type* dstType, Opnd* src1, Opnd* src2) {
- src1 = propagateCopy (src1);
- src2 = propagateCopy (src2);
- Operation operation (Op_Max, dstType->tag, Modifier ());
- U_32 hashcode = operation.encodeForHashing ();
- Opnd* dst = lookupHash (hashcode, src1, src2);
-
- if (dst) return dst;
-
- if (!dst) {
- dst = createOpnd (dstType);
- appendInst (instFactory->makeMax (dst, src1, src2));
- }
-
- insertHash (hashcode, src1, src2, dst->getInst ());
- return dst;
-}
-
-Opnd*
-IRBuilder::genMinVec (Type* dstType, Opnd* src1, Opnd* src2) {
- src1 = propagateCopy (src1);
- src2 = propagateCopy (src2);
- Operation operation (Op_Min, dstType->tag, Modifier ());
- U_32 hashcode = operation.encodeForHashing ();
- Opnd* dst = lookupHash (hashcode, src1, src2);
-
- if (dst) return dst;
-
- if (!dst) {
- dst = createOpnd (dstType);
- appendInst (instFactory->makeMin (dst, src1, src2));
- }
-
- insertHash (hashcode, src1, src2, dst->getInst ());
- return dst;
-}
-
-Opnd*
-IRBuilder::genAbsVec (Type* dstType, Opnd* src1) {
- src1 = propagateCopy (src1);
- Operation operation (Op_Abs, dstType->tag, Modifier ());
- U_32 hashcode = operation.encodeForHashing ();
- Opnd* dst = lookupHash (hashcode, src1);
-
- if (dst) return dst;
-
- if (!dst) {
- dst = createOpnd (dstType);
- appendInst (instFactory->makeAbs (dst, src1));
- }
-
- insertHash (hashcode, src1, dst->getInst ());
- return dst;
-}
-
-Opnd*
-IRBuilder::genVecShuffle (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2, Opnd* src3) {
- src1 = propagateCopy (src1);
- src2 = propagateCopy (src2);
- src3 = propagateCopy (src3);
-
- Operation operation (Op_VecShuffle, dstType->tag, mod);
- U_32 hashcode = operation.encodeForHashing ();
- Opnd* dst = lookupHash (hashcode, src1, src2, src3);
-
- if (dst) return dst;
-
- if (!dst) {
- dst = createOpnd (dstType);
- Inst *newi = instFactory->makeVecShuffle (dst, src1, src2, src3);
- appendInst (newi);
- }
-
- insertHash (hashcode, src1, src2, src3, dst->getInst ());
- return dst;
-}
-
-Opnd*
-IRBuilder::genVecExtract (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2) {
- src1 = propagateCopy (src1);
- src2 = propagateCopy (src2);
-
- Operation operation (Op_VecExtract, dstType->tag, mod);
- U_32 hashcode = operation.encodeForHashing ();
- Opnd* dst = lookupHash (hashcode, src1, src2);
-
- if (dst) return dst;
-
- if (!dst) {
- dst = createOpnd (dstType);
- Inst *newi = instFactory->makeVecExtract (dst, src1, src2);
- appendInst (newi);
- }
-
- insertHash (hashcode, src1, src2, dst->getInst ());
- return dst;
-}
-
-Opnd*
-IRBuilder::genVecPackScalars (Type* dstType, Modifier mod, U_32 numOpnds, Opnd **opnds) {
- Opnd* dst = createOpnd (dstType);
- Inst *newi = instFactory->makeVecPackScalars (dst, numOpnds, opnds);
- appendInst (newi);
- return dst;
-}
-
-Opnd*
-IRBuilder::genVecInterleaveHigh (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2) {
- src1 = propagateCopy (src1);
- src2 = propagateCopy (src2);
-
- Operation operation (Op_VecInterleaveHigh, dstType->tag, mod);
- U_32 hashcode = operation.encodeForHashing ();
- Opnd* dst = lookupHash (hashcode, src1, src2);
-
- if (dst) return dst;
-
- if (!dst) {
- dst = createOpnd (dstType);
- Inst *newi = instFactory->makeVecInterleaveHigh (dst, src1, src2);
- appendInst (newi);
- }
-
- insertHash (hashcode, src1, src2, dst->getInst ());
- return dst;
-}
-
-Opnd*
-IRBuilder::genVecInterleaveLow (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2) {
- src1 = propagateCopy (src1);
- src2 = propagateCopy (src2);
-
- Operation operation (Op_VecInterleaveLow, dstType->tag, mod);
- U_32 hashcode = operation.encodeForHashing ();
- Opnd* dst = lookupHash (hashcode, src1, src2);
-
- if (dst) return dst;
-
- if (!dst) {
- dst = createOpnd (dstType);
- Inst *newi = instFactory->makeVecInterleaveLow (dst, src1, src2);
- appendInst (newi);
- }
-
- insertHash (hashcode, src1, src2, dst->getInst ());
- return dst;
-}
-
-Opnd*
-IRBuilder::genVecCmpStr (Type* dstType, U_32 numOpnds, Opnd **opnds) {
- Opnd* dst = createOpnd (dstType);
- Inst *newi = instFactory->makeVecCmpStr (dst, numOpnds, opnds);
- appendInst (newi);
- return dst;
-}
-
//-----------------------------------------------------------------------------
//
// Methods for CSE hashing
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/IRBuilder.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/IRBuilder.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/IRBuilder.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/IRBuilder.h Mon Jun 7 07:47:11 2010
@@ -101,7 +101,6 @@ public:
Opnd* genAnd(Type* dstType, Opnd* src1, Opnd* src2); // TR //SI
Opnd* genOr(Type* dstType, Opnd* src1, Opnd* src2);//TR //SI
Opnd* genXor(Type* dstType, Opnd* src1, Opnd* src2);//TR //SI
- Opnd* genAndNot(Type* dstType, Opnd* src1, Opnd* src2); // TR //SI
Opnd* genNot(Type* dstType, Opnd* src);//TR //SI
// Conversion
Opnd* genConv(Type* dstType, Type::Tag toType, Modifier ovfMod, Opnd* src); //TR //SI
@@ -369,19 +368,6 @@ public:
void genMonitorEnterFence(Opnd *src);
void genMonitorExitFence(Opnd *src);
- Opnd* genMinVec (Type* dstType, Opnd* src1, Opnd* src2); //SI
- Opnd* genMaxVec (Type* dstType, Opnd* src1, Opnd* src2); //SI
- Opnd* genAbsVec (Type* dstType, Opnd* src1); //SI
- Opnd* genVecAddSub (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2);
- Opnd* genVecHadd (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2);
- Opnd* genVecHsub (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2);
- Opnd* genVecShuffle (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2, Opnd* src3);
- Opnd* genVecExtract (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2);
- Opnd* genVecPackScalars (Type* dstType, Modifier mod, U_32 numOpnds, Opnd **opnds);
- Opnd* genVecInterleaveHigh (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2);
- Opnd* genVecInterleaveLow (Type* dstType, Modifier mod, Opnd* src1, Opnd* src2);
- Opnd* genVecCmpStr (Type* dstType, U_32 numOpnds, Opnd **opnds);
-
private:
void readFlagsFromCommandLine(SessionAction* argSource, const char* argPrefix);
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Inst.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Inst.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Inst.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Inst.cpp Mon Jun 7 07:47:11 2010
@@ -1775,10 +1775,6 @@ Inst* InstFactory::makeXor(Opnd* dst, Op
return makeInst(Op_Xor, Modifier(), dst->getType()->tag, dst, src1, src2);
}
-Inst* InstFactory::makeAndNot(Opnd* dst, Opnd* src1, Opnd* src2) {
- return makeInst(Op_AndNot, Modifier(), dst->getType()->tag, dst, src1, src2);
-}
-
Inst* InstFactory::makeNot(Opnd* dst, Opnd* src) {
return makeInst(Op_Not, Modifier(), dst->getType()->tag, dst, src);
}
@@ -2539,55 +2535,6 @@ Inst* InstFactory::makeIncCounter(U_32 v
return makeTokenInst(Op_IncCounter, Modifier(), Type::Void, OpndManager::getNullOpnd(), val, NULL);
}
-Inst*
-InstFactory::makeVecAddSub(Opnd* dst, Opnd* src1, Opnd* src2) {
- return makeInst(Op_VecAddSub, Modifier(), dst->getType()->tag, dst, src1, src2);
-}
-
-Inst*
-InstFactory::makeVecHadd(Opnd* dst, Opnd* src1, Opnd* src2) {
- return makeInst(Op_VecHadd, Modifier(), dst->getType()->tag, dst, src1, src2);
-}
-
-Inst*
-InstFactory::makeVecHsub(Opnd* dst, Opnd* src1, Opnd* src2) {
- return makeInst(Op_VecHsub, Modifier(), dst->getType()->tag, dst, src1, src2);
-}
-
-Inst*
-InstFactory::makeVecShuffle(Opnd* dst, Opnd* src1, Opnd* src2, Opnd* src3) {
- return makeMultiSrcInst(Op_VecShuffle, Modifier(), dst->getType()->tag, dst, src1, src2, src3);
-}
-
-Inst*
-InstFactory::makeVecExtract(Opnd *dst, Opnd *src, Opnd *index) {
- return makeInst(Op_VecExtract, Modifier(), dst->getType()->tag, dst, src, index);
-}
-
-Inst*
-InstFactory::makeVecPackScalars(Opnd *dst, U_32 numOpnds, Opnd **opnds) {
- Opnd** srcs = copyOpnds(opnds, numOpnds);
- return makeMultiSrcInst(Op_VecPackScalars, Modifier(), dst->getType()->tag,
- dst, numOpnds, srcs);
-}
-
-Inst*
-InstFactory::makeVecInterleaveHigh(Opnd* dst, Opnd* src1, Opnd* src2) {
- return makeInst(Op_VecInterleaveHigh, Modifier(), dst->getType()->tag, dst, src1, src2);
-}
-
-Inst*
-InstFactory::makeVecInterleaveLow(Opnd* dst, Opnd* src1, Opnd* src2) {
- return makeInst(Op_VecInterleaveLow, Modifier(), dst->getType()->tag, dst, src1, src2);
-}
-
-Inst*
-InstFactory::makeVecCmpStr(Opnd *dst, U_32 numOpnds, Opnd **opnds) {
- Opnd** srcs = copyOpnds(opnds, numOpnds);
- return makeMultiSrcInst(Op_VecCmpStr, Modifier(), dst->getType()->tag,
- dst, numOpnds, srcs);
-}
-
Inst* InstFactory::makeTauPoint(Opnd *dst) {
assert(dst->getType()->tag == Type::Tau);
return makeInst(Op_TauPoint, Modifier(), Type::Tau, dst);
@@ -2666,7 +2613,6 @@ InstOptimizer::dispatch(Inst* inst) {
case Op_And: return caseAnd(inst);
case Op_Or: return caseOr(inst);
case Op_Xor: return caseXor(inst);
- case Op_AndNot: return caseAndNot(inst);
case Op_Not: return caseNot(inst);
case Op_Select: return caseSelect(inst);
case Op_Conv: return caseConv(inst);
@@ -2770,15 +2716,6 @@ InstOptimizer::dispatch(Inst* inst) {
case Op_LdArrayLenOffsetPlusHeapbase: return caseLdArrayLenOffsetPlusHeapbase(inst->asTypeInst());
case Op_AddOffset: return caseAddOffset(inst);
case Op_AddOffsetPlusHeapbase: return caseAddOffsetPlusHeapbase(inst);
- case Op_VecAddSub: return caseVecAddSub(inst);
- case Op_VecHadd: return caseVecHadd(inst);
- case Op_VecHsub: return caseVecHsub(inst);
- case Op_VecShuffle: return caseVecShuffle(inst);
- case Op_VecExtract: return caseVecExtract(inst);
- case Op_VecPackScalars: return caseVecPackScalars(inst);
- case Op_VecInterleaveHigh: return caseVecInterleaveHigh(inst);
- case Op_VecInterleaveLow: return caseVecInterleaveLow(inst);
- case Op_VecCmpStr: return caseVecCmpStr(inst);
case Op_TauPoint: return caseTauPoint(inst);
case Op_TauEdge: return caseTauEdge(inst);
case Op_TauAnd: return caseTauAnd(inst);
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Inst.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Inst.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Inst.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Inst.h Mon Jun 7 07:47:11 2010
@@ -1056,7 +1056,6 @@ public:
Inst* makeAnd(Opnd* dst, Opnd* src1, Opnd* src2);
Inst* makeOr(Opnd* dst, Opnd* src1, Opnd* src2);
Inst* makeXor(Opnd* dst, Opnd* src1, Opnd* src2);
- Inst* makeAndNot(Opnd* dst, Opnd* src1, Opnd* src2);
Inst* makeNot(Opnd* dst, Opnd* src);
// Selection
Inst* makeSelect(Opnd* dst, Opnd* src1, Opnd* src2, Opnd* src3);
@@ -1233,20 +1232,6 @@ public:
Inst* makeAddOffset(Opnd* dst, Opnd* ref, Opnd* offset);
Inst* makeAddOffsetPlusHeapbase(Opnd* dst, Opnd* ref, Opnd* offset);
- // Vector operations
- Inst* makeVecAddSub (Opnd* dst, Opnd* src1, Opnd* src2);
- Inst* makeVecHadd (Opnd* dst, Opnd* src1, Opnd* src2);
- Inst* makeVecHsub (Opnd* dst, Opnd* src1, Opnd* src2);
- Inst* makeVecShuffle (Opnd* dst, Opnd* src1, Opnd* src2, Opnd* src3);
- // Make an instruction that extract the INDEX-th element from the
- // vector SRC to DST.
- Inst* makeVecExtract (Opnd *dst, Opnd *src, Opnd *index);
- // Pack OPNDS[0..n] into the vector DST.
- Inst* makeVecPackScalars (Opnd *dst, U_32 numOpnds, Opnd **opnds);
- Inst* makeVecInterleaveHigh (Opnd* dst, Opnd* src1, Opnd* src2);
- Inst* makeVecInterleaveLow (Opnd* dst, Opnd* src1, Opnd* src2);
- Inst* makeVecCmpStr (Opnd *dst, U_32 numOpnds, Opnd **opnds);
-
// new tau methods
Inst* makeTauPoint(Opnd *dst);
Inst* makeTauEdge(Opnd *dst);
@@ -1547,9 +1532,6 @@ public:
caseXor(Inst* inst)=0;// {return caseDefault(inst);}
virtual Inst*
- caseAndNot(Inst* inst)=0;// {return caseDefault(inst);}
-
- virtual Inst*
caseNot(Inst* inst)=0;// {return caseDefault(inst);}
// selection
@@ -1897,33 +1879,6 @@ public:
virtual Inst*
caseAddOffsetPlusHeapbase(Inst* inst)=0;// {return caseDefault(inst);}
- virtual Inst*
- caseVecAddSub(Inst* inst)=0;
-
- virtual Inst*
- caseVecHadd(Inst* inst)=0;
-
- virtual Inst*
- caseVecHsub(Inst* inst)=0;
-
- virtual Inst*
- caseVecShuffle(Inst* inst)=0;
-
- virtual Inst*
- caseVecExtract(Inst* inst)=0;
-
- virtual Inst*
- caseVecPackScalars(Inst* inst)=0;
-
- virtual Inst*
- caseVecInterleaveHigh(Inst* inst)=0;
-
- virtual Inst*
- caseVecInterleaveLow(Inst* inst)=0;
-
- virtual Inst*
- caseVecCmpStr(Inst* inst)=0;
-
// new tau methods
virtual Inst*
caseTauPoint(Inst* inst)=0;// {return caseDefault(inst);}
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opcode.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opcode.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opcode.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opcode.cpp Mon Jun 7 07:47:11 2010
@@ -88,7 +88,6 @@ static OpcodeInfo opcodeTable[] = {
{ Op_And, false, MB::Movable, MK::None, "and ", "and %s -) %l", },
{ Op_Or, false, MB::Movable, MK::None, "or ", "or %s -) %l", },
{ Op_Xor, false, MB::Movable, MK::None, "xor ", "xor %s -) %l", },
- { Op_AndNot, false, MB::Movable, MK::None, "andnot", "andnot %s -) %l", },
{ Op_Not, false, MB::Movable, MK::None, "not ", "not %s -) %l", },
{ Op_Select, false, MB::Movable, MK::None, "select", "select %s -) %l", }, // (src1 ? src2 : src3)
{ Op_Conv, false, MB::Movable, MK::Overflow_and_Exception_and_Strict, "conv ", "conv%t%m %s -) %l", },
@@ -205,15 +204,6 @@ static OpcodeInfo opcodeTable[] = {
{ Op_AddOffset, false, MB::Movable, MK::None, "addoffset", "addoff %s -) %l", },
{ Op_AddOffsetPlusHeapbase, false, MB::Movable, MK::None, "addoffphb", "addoffphb %s -) %l", },
- { Op_VecAddSub, false, MB::Movable, MK::None, "addsub", "addsub %s -) %l", },
- { Op_VecHadd, false, MB::Movable, MK::None, "hadd", "hadd %s -) %l", },
- { Op_VecHsub, false, MB::Movable, MK::None, "hsub", "hsub %s -) %l", },
- { Op_VecShuffle, false, MB::Movable, MK::None, "shuffle", "shuffle %s -) %l", },
- { Op_VecExtract, false, MB::Movable, MK::None, "vecextr", "vecextr %s -) %l", },
- { Op_VecPackScalars, false, MB::Movable, MK::None, "vecpack", "vecpack %s -) %l", },
- { Op_VecInterleaveHigh, false, MB::Movable, MK::None, "unpackh", "unpackh %s -) %l", },
- { Op_VecInterleaveLow, false, MB::Movable, MK::None, "unpackl", "unpackl %s -) %l", },
- { Op_VecCmpStr, false, MB::Movable, MK::None, "cmpstr", "cmpstr %s -) %l", },
{ Op_TauPoint, false, MB::None, MK::None, "taupoint ", "taupoint() -) %l", }, // mark
{ Op_TauEdge, false, MB::None, MK::None, "tauedge ", "tauedge() -) %l", }, // mark
{ Op_TauAnd, false, MB::Movable, MK::None, "tauand ", "tauand %s -) %l", },
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opcode.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opcode.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opcode.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opcode.h Mon Jun 7 07:47:11 2010
@@ -296,7 +296,6 @@ enum Opcode {
Op_Min, Op_Max, Op_Abs, // no modifiers
// Bitwise
Op_And, Op_Or, Op_Xor,
- Op_AndNot,
Op_Not,
// Selection
Op_Select, // (src1 ? src2 : src3)
@@ -439,17 +438,6 @@ enum Opcode {
Op_AddOffset, // add uncompref+offset
Op_AddOffsetPlusHeapbase, // add compref+offsetPlusHeapbase (uncompressing)
- // Vector operations:
- Op_VecAddSub, // add odd elements and sub even elements
- Op_VecHadd, // horizontal add pairs of elements
- Op_VecHsub, // horizontal sub pairs of elements
- Op_VecShuffle, // shuffle elements of a vector according to a given pattern
- Op_VecExtract, // extract a scalar value from a vector
- Op_VecPackScalars, // pack multiple scalar values into a vector
- Op_VecInterleaveHigh, // interleave high parts of two vectors
- Op_VecInterleaveLow, // interleave low parts of two vectors
- Op_VecCmpStr, // compare strings, return index
-
// ADDED FOR TAU:
Op_TauPoint,
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opnd.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opnd.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opnd.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/Opnd.cpp Mon Jun 7 07:47:11 2010
@@ -151,8 +151,6 @@ OpndManager::getOpndTypeFromLdType(Type*
return typeManager.getDoubleType();
case Type::Float:
return typeManager.getFloatType();
- case Type::Vector:
- return ldType;
// object types
case Type::CompressedSystemObject:
case Type::CompressedUnresolvedObject:
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/codelowerer.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/codelowerer.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/codelowerer.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/codelowerer.h Mon Jun 7 07:47:11 2010
@@ -94,8 +94,6 @@ private:
Inst* caseXor(Inst* inst) {return caseDefault(inst);}
- Inst* caseAndNot(Inst* inst) {return caseDefault(inst);}
-
Inst* caseNot(Inst* inst) {return caseDefault(inst);}
// selection
@@ -306,24 +304,6 @@ private:
Inst* caseAddOffsetPlusHeapbase(Inst* inst) {return caseDefault(inst);}
- Inst* caseVecAddSub(Inst* inst) {return caseDefault(inst);}
-
- Inst* caseVecHadd(Inst* inst) {return caseDefault(inst);}
-
- Inst* caseVecHsub(Inst* inst) {return caseDefault(inst);}
-
- Inst* caseVecShuffle(Inst* inst) {return caseDefault(inst);}
-
- Inst* caseVecExtract(Inst* inst) {return caseDefault(inst);}
-
- Inst* caseVecPackScalars(Inst* inst) {return caseDefault(inst);}
-
- Inst* caseVecInterleaveHigh(Inst* inst) {return caseDefault(inst);}
-
- Inst* caseVecInterleaveLow(Inst* inst) {return caseDefault(inst);}
-
- Inst* caseVecCmpStr(Inst* inst) {return caseDefault(inst);}
-
// new tau methods
Inst* caseTauPoint(Inst* inst) {return caseDefault(inst);}
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/dabce.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/dabce.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/dabce.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/dabce.cpp Mon Jun 7 07:47:11 2010
@@ -752,23 +752,6 @@ void DynamicABCE::findArrayAccesses() {
}
}
-Inst *DynamicABCE::getLdBaseInst(Inst* checkInst) {
-
- if (checkInst->getOpcode() == Op_LdArrayBaseAddr) {
- return checkInst;
- } else if (checkInst->getOpcode() == Op_LdVar) {
- return getLdBaseInst(checkInst->getSrc(0)->asSsaOpnd()->getInst());
- } else if (checkInst->getOpcode() == Op_StVar) {
- return getLdBaseInst(checkInst->getSrc(0)->asSsaOpnd()->getInst());
- } else if (checkInst->getOpcode() == Op_Phi) {
- return getLdBaseInst(checkInst->getSrc(0)->asSsaOpnd()->getInst());
- }
-
- assert(0);
-
- return NULL;
-}
-
void DynamicABCE::fillTemplate(ArrayAccessTemplate* arrayAccess, Inst* checkInst) {
Inst* ldBaseInst = NULL;
@@ -795,7 +778,7 @@ void DynamicABCE::fillTemplate(ArrayAcce
} else if (opcode == Op_AddScaledIndex &&
arrayAccess->index == inst->getSrc(1) && arrayAccess->array == NULL) {
assert(ldBaseInst == NULL);
- ldBaseInst = getLdBaseInst(inst->getSrc(0)->asSsaOpnd()->getInst());
+ ldBaseInst = inst->getSrc(0)->asSsaOpnd()->getInst();
assert((ldBaseInst->getOpcode() == Op_LdArrayBaseAddr)||(ldBaseInst->getOpcode() == Op_LdVar));
arrayAccess->array = ldBaseInst->getSrc(0)->asSsaOpnd();
break;
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/dabce.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/dabce.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/dabce.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/dabce.h Mon Jun 7 07:47:11 2010
@@ -109,7 +109,6 @@ private:
InvariantOpndLoopInfo* stride,
SsaOpnd* arrayLength,
bool canReachBound);
- Inst *getLdBaseInst(Inst* checkInst);
void fillTemplate(ArrayAccessTemplate* arrayAccesses, Inst* checkInst);
Edge* findUnconditionalInEdge(Node* targetNode);
Node* getClonedLoop();
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/hashvaluenumberer.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/hashvaluenumberer.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/hashvaluenumberer.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/hashvaluenumberer.cpp Mon Jun 7 07:47:11 2010
@@ -159,7 +159,6 @@ public:
Inst* caseAnd(Inst* inst) { return hashInst(inst); }
Inst* caseOr(Inst* inst) { return hashInst(inst); }
Inst* caseXor(Inst* inst) { return hashInst(inst); }
- Inst* caseAndNot(Inst* inst) { return hashInst(inst); }
Inst* caseNot(Inst* inst) { return hashInst(inst); }
// selection
@@ -900,33 +899,6 @@ public:
virtual Inst*
caseAddOffsetPlusHeapbase(Inst* inst) { return hashInst(inst); }
- virtual Inst*
- caseVecAddSub(Inst* inst) { return caseDefault(inst); }
-
- virtual Inst*
- caseVecHadd(Inst* inst) { return caseDefault(inst); }
-
- virtual Inst*
- caseVecHsub(Inst* inst) { return caseDefault(inst); }
-
- virtual Inst*
- caseVecShuffle(Inst* inst) { return caseDefault(inst); }
-
- virtual Inst*
- caseVecExtract(Inst* inst) { return caseDefault(inst); }
-
- virtual Inst*
- caseVecPackScalars(Inst* inst) { return caseDefault(inst); }
-
- virtual Inst*
- caseVecInterleaveHigh(Inst* inst) { return caseDefault(inst); }
-
- virtual Inst*
- caseVecInterleaveLow(Inst* inst) { return caseDefault(inst); }
-
- virtual Inst*
- caseVecCmpStr(Inst* inst) { return caseDefault(inst); }
-
// new tau methods
virtual Inst*
caseTauPoint(Inst* inst) { return caseDefault(inst); }
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/memoryopt.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/memoryopt.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/memoryopt.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/memoryopt.cpp Mon Jun 7 07:47:11 2010
@@ -898,7 +898,7 @@ MemoryOptInitWalker::applyToInst(Inst *i
case Op_Add: case Op_Mul: case Op_Sub: case Op_TauDiv: case Op_TauRem:
case Op_Neg: case Op_MulHi: case Op_Min: case Op_Max: case Op_Abs:
- case Op_And: case Op_Or: case Op_Xor: case Op_AndNot:
+ case Op_And: case Op_Or: case Op_Xor:
case Op_Not: case Op_Select: case Op_Conv: case Op_ConvZE: case Op_ConvUnmanaged: case Op_Shladd: case Op_Shl:
case Op_Shr: case Op_Cmp: case Op_Cmp3:
case Op_Branch: case Op_Jump: case Op_Switch:
@@ -920,15 +920,6 @@ MemoryOptInitWalker::applyToInst(Inst *i
case Op_Label:
case Op_Phi:
case Op_TauPi:
- case Op_VecAddSub:
- case Op_VecHadd:
- case Op_VecHsub:
- case Op_VecShuffle:
- case Op_VecExtract:
- case Op_VecPackScalars:
- case Op_VecInterleaveHigh:
- case Op_VecInterleaveLow:
- case Op_VecCmpStr:
case Op_TauPoint:
case Op_TauEdge:
case Op_TauAnd:
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/simplifier.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/simplifier.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/simplifier.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/simplifier.cpp Mon Jun 7 07:47:11 2010
@@ -1661,12 +1661,6 @@ Simplifier::simplifyTauRem(Type* dstType
//
return genLdConstant((I_32)0)->getDst();
}
- else if (denom > 0 && ((denom & (denom - 1)) == 0)) {
- // convert rem by powers of 2 into bitwise "and" --njt--
- // src1 % src2 -> src1 & (src2 - 1)
- return genAnd(dstType, src1,
- genLdConstant(denom - 1)->getDst ())->getDst ();
- }
} else if (ConstantFolder::isConstant(src2inst, cv.i8)) {
int64 denom = cv.i8;
if ((denom == -1) || (denom == 1)) {
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/simplifier.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/simplifier.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/simplifier.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/optimizer/simplifier.h Mon Jun 7 07:47:11 2010
@@ -385,9 +385,6 @@ public:
return opnd->getInst();
return inst;
}
- Inst* caseAndNot(Inst* inst) {
- return inst;
- }
Inst* caseNot(Inst* inst) {
Opnd* opnd = simplifyNot(inst->getDst()->getType(),
inst->getSrc(0));
@@ -879,42 +876,6 @@ public:
return inst;
}
- Inst* caseVecAddSub(Inst* inst) {
- return inst;
- }
-
- Inst* caseVecHadd(Inst* inst) {
- return inst;
- }
-
- Inst* caseVecHsub(Inst* inst) {
- return inst;
- }
-
- Inst* caseVecShuffle(Inst* inst) {
- return inst;
- }
-
- Inst* caseVecExtract(Inst* inst) {
- return inst;
- }
-
- Inst* caseVecPackScalars(Inst* inst) {
- return inst;
- }
-
- Inst* caseVecInterleaveHigh(Inst* inst) {
- return inst;
- }
-
- Inst* caseVecInterleaveLow(Inst* inst) {
- return inst;
- }
-
- Inst* caseVecCmpStr(Inst* inst) {
- return inst;
- }
-
Inst* caseTauPoint(Inst* inst) {
return inst;
}
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/LoopTree.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/LoopTree.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/LoopTree.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/LoopTree.cpp Mon Jun 7 07:47:11 2010
@@ -313,33 +313,6 @@ bool LoopTree::isBackEdge(const Edge* ed
return fg->getDominatorTree()->dominates(edge->getTargetNode(), edge->getSourceNode());
}
-LoopNode*
-LoopTree::findCommonLoop (LoopNode *loop1, LoopNode *loop2) const
-{
- int depth1 = loop1->getDepth ();
- int depth2 = loop2->getDepth ();
-
- while (depth1 < depth2)
- {
- loop2 = loop2->getParent ();
- depth2--;
- }
-
- while (depth2 < depth1)
- {
- loop1 = loop1->getParent ();
- depth1--;
- }
-
- while (loop1 != loop2)
- {
- loop1 = loop1->getParent ();
- loop2 = loop2->getParent ();
- }
-
- return loop1;
-}
-
bool LoopNode::inLoop(const Node* node) const {
assert(this!=loopTree->getRoot());
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/LoopTree.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/LoopTree.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/LoopTree.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/LoopTree.h Mon Jun 7 07:47:11 2010
@@ -105,10 +105,6 @@ public:
bool isNormalized() const { return normalized;}
U_32 getMaxLoopDepth() const {return getHeight()-1;}
-
- // Return common ancestor of LOOP1 and LOOP2.
- LoopNode* findCommonLoop (LoopNode *loop1, LoopNode *loop2) const;
-
private:
void findLoopHeaders(Nodes& headers);
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/Type.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/Type.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/Type.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/Type.cpp Mon Jun 7 07:47:11 2010
@@ -131,7 +131,6 @@ Type* TypeManager::toInternalType(Type*
case Type::Single:
case Type::Double:
case Type::Float:
- case Type::Vector:
case Type::SystemObject:
case Type::SystemClass:
case Type::SystemString:
@@ -342,7 +341,6 @@ TypeManager::TypeManager(MemoryManager&
userObjectTypes(mm,32),
managedPtrTypes(mm,32),
unmanagedPtrTypes(mm,32),
- vectorTypes(mm,32),
arrayTypes(mm,32),
methodPtrTypes(mm,32),
vtablePtrTypes(mm,32),
@@ -432,26 +430,6 @@ TypeManager::init() {
floatType = initBuiltinType(Type::Float);
}
-VectorType*
-TypeManager::getVectorType(NamedType *elemType, int length)
-{
- assert (elemType->isBuiltinValue ());
-
- VectorType *type = vectorTypes.lookup (elemType);
-
- if (!type) {
- type = new (memManager) VectorType(elemType, length);
- vectorTypes.insert(elemType, type);
- } else {
- // For now, we only support single length vector types for a
- // given element type since it's enough for all existing
- // machines that supports SIMD.
- assert (type->getLength () == length);
- }
-
- return type;
-}
-
ArrayType*
TypeManager::getArrayType(Type* elemType, bool isCompressed, void* arrayVMTypeHandle) {
PtrHashTable<ArrayType> &lookupTable =
@@ -973,11 +951,6 @@ void EnumType::print(::std::ostream&
extern const char *messageStr(const char *);
-void VectorType::print(::std::ostream& os) {
- elemType->print(os);
- os << "<" << length << ">";
-}
-
void ObjectType::print(::std::ostream& os) {
if (isCompressedReference()) {
os << "clsc:" << getName();
@@ -1082,7 +1055,6 @@ Type::getPrintString(Tag t) {
case Single: s = "r4 "; break;
case Double: s = "r8 "; break;
case Float: s = "r "; break;
- case Vector: s = "<> "; break;
case TypedReference: s = "trf"; break;
case Value: s = "val"; break;
case SystemObject: s = "obj"; break;
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/Type.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/Type.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/Type.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/shared/Type.h Mon Jun 7 07:47:11 2010
@@ -40,7 +40,6 @@ class SsaOpnd;
class PtrType;
class FunctionPtrType;
class NamedType;
-class VectorType;
class ArrayType;
class MethodPtrType;
class UnresolvedMethodPtrType;
@@ -76,7 +75,6 @@ public:
Single,
Double,
Float, // machine-specific float
- Vector, // vector types
TypedReference, // typed reference
// (1.2) User-defined un-boxed value type
@@ -175,7 +173,6 @@ public:
bool isSingle() {return (tag == Type::Single); }
bool isDouble() {return (tag == Type::Double); }
bool isFloat() {return (tag == Type::Float); }
- bool isVector() {return (tag == Type::Vector); }
bool isOffset() {return (tag == Type::Offset); }
bool isOffsetPlusHeapbase() {return (tag == Type::OffsetPlusHeapbase); }
bool isSystemObject() {return isSystemObject(tag); }
@@ -212,7 +209,6 @@ public:
bool isArrayLength() {return (tag == Type::ArrayLength); }
bool isArrayElement() {return (tag == Type::ArrayElementType); }
virtual void print(::std::ostream& os);
- virtual VectorType* asVectorType() {return NULL;}
virtual ObjectType* asObjectType() {return NULL;}
virtual PtrType* asPtrType() {return NULL;}
virtual FunctionPtrType* asFunctionPtrType() {return NULL;}
@@ -544,24 +540,6 @@ public:
virtual ~ValueType() {}
};
-class VectorType : public ValueType {
-public:
- VectorType (NamedType *t, int l)
- : ValueType (Vector), elemType (t), length (l) {}
-
- VectorType* asVectorType () { return this; }
-
- NamedType* getElemType () {return elemType;}
-
- int getLength () { return length; }
-
- void print (::std::ostream& os);
-
-private:
- NamedType *elemType;
- int length;
-};
-
class UserValueType : public NamedType {
public:
UserValueType(void* td,TypeManager& tm) : NamedType(Value,td,tm) {}
@@ -755,7 +733,6 @@ public:
NamedType* getValueType(void* vmTypeHandle);
ObjectType* getObjectType(void* vmTypeHandle, bool isCompressed=false);
- VectorType* getVectorType(NamedType *elemType, int length);
ArrayType* getArrayType(Type* elemType, bool isCompressed=false, void* arrayVMTypeHandle=NULL);
void initArrayType(Type* elemType, bool isCompressed, void* arrayVMTypeHandle);
Type* getCommonType(Type* type1, Type *type2);
@@ -851,7 +828,6 @@ private:
PtrHashTable<ObjectType> userObjectTypes;
PtrHashTable<PtrType> managedPtrTypes;
PtrHashTable<PtrType> unmanagedPtrTypes;
- PtrHashTable<VectorType> vectorTypes;
PtrHashTable<ArrayType> arrayTypes;
PtrHashTable<MethodPtrType> methodPtrTypes;
PtrHashTable<VTablePtrType> vtablePtrTypes;
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.cpp Mon Jun 7 07:47:11 2010
@@ -32,7 +32,6 @@
#include "EMInterface.h"
#include "inliner.h"
#include "VMMagic.h"
-#include "SIMD.h"
#include <assert.h>
#include <stdio.h>
@@ -172,8 +171,6 @@ JavaByteCodeTranslator::JavaByteCodeTran
}
if (VMMagicUtils::isVMMagicClass(type->getName())) {
type = convertVMMagicType2HIR(typeManager, type);
- } else if (SIMDUtils::isSIMDClass(type->getName())) {
- type = SIMDUtils::convertSIMDType2HIR(typeManager, type);
}
arg = irBuilder.genArgDef(DefArgNoModifier,type);
}
@@ -727,8 +724,6 @@ JavaByteCodeTranslator::getstatic(U_32 c
bool fieldIsMagic = VMMagicUtils::isVMMagicClass(fieldType->getName());
if (fieldIsMagic) {
fieldType = convertVMMagicType2HIR(typeManager, fieldType);
- } else if (SIMDUtils::isSIMDClass(fieldType->getName())) {
- fieldType = SIMDUtils::convertSIMDType2HIR(typeManager, fieldType);
}
if (field->isInitOnly() && !field->getParentType()->needsInitialization()) {
//the final static field of the initialized class
@@ -764,20 +759,15 @@ JavaByteCodeTranslator::getstatic(U_32 c
pushOpnd(irBuilder.genLdStatic(fieldType, field));
}
} else {
- Type* fieldType;
//field is not resolved or not static
if (!typeManager.isLazyResolutionMode()) {
// generate helper call for throwing respective exception
linkingException(constPoolIndex, OPCODE_GETSTATIC);
}
const char* fieldTypeName = CompilationInterface::getFieldSignature(methodToCompile.getParentHandle(), constPoolIndex);
- if (VMMagicUtils::isVMMagicClass(fieldTypeName)) {
- fieldType = convertVMMagicType2HIR(typeManager, fieldTypeName);
- } else if (SIMDUtils::isSIMDClass(fieldTypeName)) {
- fieldType = SIMDUtils::convertSIMDType2HIR(typeManager, fieldTypeName);
- } else {
- fieldType = compilationInterface.getFieldType(methodToCompile.getParentHandle(), constPoolIndex);
- }
+ bool fieldIsMagic = VMMagicUtils::isVMMagicClass(fieldTypeName);
+ Type* fieldType = fieldIsMagic ? convertVMMagicType2HIR(typeManager, fieldTypeName)
+ : compilationInterface.getFieldType(methodToCompile.getParentHandle(), constPoolIndex);
Opnd* res = irBuilder.genLdStaticWithResolve(fieldType, methodToCompile.getParentType()->asObjectType(), constPoolIndex);
pushOpnd(res);
}
@@ -792,25 +782,18 @@ JavaByteCodeTranslator::putstatic(U_32 c
bool fieldIsMagic = VMMagicUtils::isVMMagicClass(fieldType->getName());
if (fieldIsMagic) {
fieldType = convertVMMagicType2HIR(typeManager, fieldType);
- } else if (SIMDUtils::isSIMDClass(fieldType->getName())) {
- fieldType = SIMDUtils::convertSIMDType2HIR(typeManager, fieldType);
}
irBuilder.genStStatic(fieldType,field,popOpnd());
} else {
- Type* fieldType;
//field is not resolved or not static
if (!typeManager.isLazyResolutionMode()) {
// generate helper call for throwing respective exception
linkingException(constPoolIndex, OPCODE_PUTSTATIC);
}
const char* fieldTypeName = CompilationInterface::getFieldSignature(methodToCompile.getParentHandle(), constPoolIndex);
- if (VMMagicUtils::isVMMagicClass(fieldTypeName)) {
- fieldType = convertVMMagicType2HIR(typeManager, fieldTypeName);
- } else if (SIMDUtils::isSIMDClass(fieldTypeName)) {
- fieldType = SIMDUtils::convertSIMDType2HIR(typeManager, fieldTypeName);
- } else {
- fieldType = compilationInterface.getFieldType(methodToCompile.getParentHandle(), constPoolIndex);
- }
+ bool fieldIsMagic = VMMagicUtils::isVMMagicClass(fieldTypeName);
+ Type* fieldType = fieldIsMagic ? convertVMMagicType2HIR(typeManager, fieldTypeName)
+ : compilationInterface.getFieldType(methodToCompile.getParentHandle(), constPoolIndex);
Opnd* value = popOpnd();
irBuilder.genStStaticWithResolve(fieldType, methodToCompile.getParentType()->asObjectType(), constPoolIndex, value);
}
@@ -823,8 +806,6 @@ JavaByteCodeTranslator::getfield(U_32 co
Type* fieldType = getFieldType(field, constPoolIndex);
if (VMMagicUtils::isVMMagicClass(fieldType->getName())) {
fieldType = convertVMMagicType2HIR(typeManager, fieldType);
- } else if (SIMDUtils::isSIMDClass(fieldType->getName())) {
- fieldType = SIMDUtils::convertSIMDType2HIR(typeManager, fieldType);
}
pushOpnd(irBuilder.genLdField(fieldType,popOpnd(),field));
} else {
@@ -835,8 +816,6 @@ JavaByteCodeTranslator::getfield(U_32 co
Type* fieldType = compilationInterface.getFieldType(methodToCompile.getParentHandle(), constPoolIndex);
if (VMMagicUtils::isVMMagicClass(fieldType->getName())) {
fieldType = convertVMMagicType2HIR(typeManager, fieldType);
- } else if (SIMDUtils::isSIMDClass(fieldType->getName())) {
- fieldType = SIMDUtils::convertSIMDType2HIR(typeManager, fieldType);
}
Opnd* base = popOpnd();
Opnd* res = irBuilder.genLdFieldWithResolve(fieldType, base, methodToCompile.getParentType()->asObjectType(), constPoolIndex);
@@ -852,8 +831,6 @@ JavaByteCodeTranslator::putfield(U_32 co
assert(fieldType);
if (VMMagicUtils::isVMMagicClass(fieldType->getName())) {
fieldType = convertVMMagicType2HIR(typeManager, fieldType);
- } else if (SIMDUtils::isSIMDClass(fieldType->getName())) {
- fieldType = SIMDUtils::convertSIMDType2HIR(typeManager, fieldType);
}
Opnd* value = popOpnd();
@@ -1537,10 +1514,6 @@ void JavaByteCodeTranslator::genCallWith
if (res) { //method is not a registered vmhelper name
return;
}
- } else if (SIMDUtils::isSIMDClass(kname)) {
- UNUSED bool res = genSIMDHelper(mname, numArgs, args, returnType);
- assert(res);
- return;
}
}
@@ -1574,10 +1547,6 @@ JavaByteCodeTranslator::invokevirtual(U_
UNUSED bool res = genVMMagic(methodDesc->getName(), numArgs, srcOpnds, returnType);
assert(res);
return;
- } else if (SIMDUtils::isSIMDClass(className)) {
- UNUSED bool res = genSIMDHelper(methodDesc->getName(), numArgs, srcOpnds, returnType);
- assert(res);
- return;
}
// callvirt can throw a null pointer exception
@@ -1948,8 +1917,6 @@ JavaByteCodeTranslator::genLdVar(U_32 va
Opnd *var = getVarOpndLdVar(javaType,varIndex);
if (VMMagicUtils::isVMMagicClass(var->getType()->getName())) {
var->setType(convertVMMagicType2HIR(typeManager, var->getType()));
- } else if (SIMDUtils::isSIMDClass(var->getType()->getName())) {
- var->setType(SIMDUtils::convertSIMDType2HIR(typeManager, var->getType()));
}
Opnd *opnd;
if (var->isVarOpnd()) {
@@ -2365,17 +2332,11 @@ JavaByteCodeTranslator::genInvokeStatic(
if (res) {
return;
}
- } else if (SIMDUtils::isSIMDClass(kname)) {
- UNUSED bool res = genSIMDHelper(mname, numArgs, srcOpnds, returnType);
- assert(res);
- return;
}
Opnd *tauNullChecked = irBuilder.genTauSafe(); // always safe, is a static method call
Type* resType = returnType;
if (VMMagicUtils::isVMMagicClass(resType->getName())) {
resType = convertVMMagicType2HIR(typeManager, resType);
- } else if (SIMDUtils::isSIMDClass(resType->getName())) {
- resType= SIMDUtils::convertSIMDType2HIR(typeManager, resType);
}
dst = irBuilder.genDirectCall(methodDesc,
resType,
@@ -3182,188 +3143,4 @@ bool JavaByteCodeTranslator::genVMHelper
return false;
}
-bool
-JavaByteCodeTranslator::genSIMDHelper (const char* mname,
- U_32 numArgs,
- Opnd **args,
- Type *returnType)
-{
- Type *resType = (SIMDUtils::isSIMDClass(returnType->getName ())
- ? SIMDUtils::convertSIMDType2HIR (typeManager, returnType)
- : returnType);
- Modifier mod = Modifier(Overflow_None) | Modifier(Exception_Never) | Modifier(Strict_No);
- Modifier shMod (ShiftMask_Masked);
-
- if (!strcmp (mname, "make"))
- {
- if (numArgs == 1)
- pushOpnd (irBuilder.genConv (resType, resType->tag, mod, args[0]));
- else
- pushOpnd (irBuilder.genVecPackScalars (resType, mod, numArgs, args));
- }
- else if (!strcmp (mname, "load"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genLdElem (resType, args[0], args[1]));
- }
- else if (!strcmp (mname, "add"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genAdd (resType, mod, args[0], args[1]));
- }
- else if (!strcmp (mname, "sub"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genSub (resType, mod, args[0], args[1]));
- }
- else if (!strcmp (mname, "mul"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genMul (resType, mod, args[0], args[1]));
- }
- else if (!strcmp (mname, "div"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genDiv (resType, Modifier (SignedOp) | Modifier (Strict_No),
- args[0], args[1]));
- }
- else if (!strcmp (mname, "addsub"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genVecAddSub (resType, mod, args[0], args[1]));
- }
- else if (!strcmp (mname, "hadd"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genVecHadd (resType, mod, args[0], args[1]));
- }
- else if (!strcmp (mname, "hsub"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genVecHsub (resType, mod, args[0], args[1]));
- }
- else if (!strcmp (mname, "max"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genMaxVec (resType, args[0], args[1]));
- }
- else if (!strcmp (mname, "min"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genMinVec (resType, args[0], args[1]));
- }
- else if (!strcmp (mname, "abs"))
- {
- assert (numArgs == 1);
- pushOpnd (irBuilder.genAbsVec (resType, args[0]));
- }
- else if (!strcmp (mname, "and"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genAnd (resType, args[0], args[1]));
- }
- else if (!strcmp (mname, "or"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genOr (resType, args[0], args[1]));
- }
- else if (!strcmp (mname, "xor"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genXor (resType, args[0], args[1]));
- }
- else if (!strcmp (mname, "andnot"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genAndNot (resType, args[0], args[1]));
- }
- else if (!strcmp (mname, "sll"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genShl (resType, shMod, args[0], args[1]));
- }
- else if (!strcmp (mname, "srl"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genShr (resType, shMod | UnsignedOp,
- args[0], args[1]));
- }
- else if (!strcmp (mname, "sra"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genShr (resType, shMod | SignedOp,
- args[0], args[1]));
- }
- else if (!strcmp (mname, "cmpeq"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genCmp (resType, args[0]->getType()->tag,
- Cmp_EQ, args[0], args[1]));
- }
- else if (!strcmp (mname, "cmpne"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genCmp (resType, args[0]->getType()->tag,
- Cmp_NE_Un, args[0], args[1]));
- }
- else if (!strcmp (mname, "cmple"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genCmp (resType, args[0]->getType()->tag,
- Cmp_GTE, args[1], args[0]));
- }
- else if (!strcmp (mname, "cmpge"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genCmp (resType, args[0]->getType()->tag,
- Cmp_GTE, args[0], args[1]));
- }
- else if (!strcmp (mname, "cmplt"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genCmp (resType, args[0]->getType()->tag,
- Cmp_GT, args[1], args[0]));
- }
- else if (!strcmp (mname, "cmpgt"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genCmp (resType, args[0]->getType()->tag,
- Cmp_GT, args[0], args[1]));
- }
- else if (!strcmp (mname, "select"))
- {
- assert (numArgs == 3);
- pushOpnd (irBuilder.genSelect (resType, args[0], args[1], args[2]));
- }
- else if (!strcmp (mname, "shuffle"))
- {
- assert (numArgs == 3);
- pushOpnd (irBuilder.genVecShuffle (resType, mod, args[0], args[1], args[2]));
- }
- else if (!strcmp (mname, "unpack_high"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genVecInterleaveHigh (resType, mod, args[0], args[1]));
- }
- else if (!strcmp (mname, "unpack_low"))
- {
- assert (numArgs == 2);
- pushOpnd (irBuilder.genVecInterleaveLow (resType, mod, args[0], args[1]));
- }
- else if (!strcmp (mname, "store"))
- {
- assert (numArgs == 3);
- irBuilder.genStElem (args[0]->getType (), args[1], args[2], args[0]);
- }
- else if (!strcmp (mname, "cmpstri") || !strcmp (mname, "cmpstrm"))
- {
- assert (numArgs == 3 || numArgs == 5);
- pushOpnd (irBuilder.genVecCmpStr (resType, numArgs, args));
- }
- else
- assert (0);
-
- return true;
-}
-
} //namespace Jitrino
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/translator/java/JavaByteCodeTranslator.h Mon Jun 7 07:47:11 2010
@@ -271,7 +271,6 @@ private:
void genInvokeStatic(MethodDesc * methodDesc,U_32 numArgs,Opnd ** srcOpnds,Type * returnType);
bool genVMMagic(const char* mname, U_32 numArgs,Opnd ** srcOpnds,Type * returnType);
bool genVMHelper(const char* mname, U_32 numArgs,Opnd ** srcOpnds,Type * returnType);
- bool genSIMDHelper(const char* mname, U_32 numArgs,Opnd ** srcOpnds,Type * returnType);
bool genMinMax(MethodDesc * methodDesc,U_32 numArgs,Opnd ** srcOpnds, Type * returnType);
void newFallthroughBlock();
Modified: harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/vm/VMInterface.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/vm/VMInterface.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/vm/VMInterface.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/jitrino/src/vm/VMInterface.cpp Mon Jun 7 07:47:11 2010
@@ -46,7 +46,6 @@
#include "PlatformDependant.h"
#include "VMMagic.h"
-#include "SIMD.h"
namespace Jitrino {
@@ -888,7 +887,6 @@ CompilationInterface::getTypeFromDrlVMTy
const char* kname = type_info_get_type_name(typeHandle);
assert(kname!=NULL);
bool forceResolve = VMMagicUtils::isVMMagicClass(kname);
- forceResolve = forceResolve || SIMDUtils::isSIMDClass(kname);
if (!forceResolve) {
return typeManager.getUnresolvedObjectType();
}
@@ -1200,7 +1198,6 @@ NamedType* CompilationInterface::getName
if (typeManager.isLazyResolutionMode() && !class_cp_is_entry_resolved(enclClass, cpIndex)) {
const char* className = class_cp_get_class_name(enclClass, cpIndex);
bool forceResolve = VMMagicUtils::isVMMagicClass(className);
- forceResolve = forceResolve || SIMDUtils::isSIMDClass(className);
if (!forceResolve) {
return getUnresolvedType(typeManager, enclClass, cpIndex);
}
Modified: harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.cpp?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.cpp (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.cpp Mon Jun 7 07:47:11 2010
@@ -44,16 +44,14 @@ ENCODER_NAMESPACE_START
int EncoderBase::dummy = EncoderBase::buildTable();
-const unsigned char EncoderBase::size_hash[OpndSize_128+1] = {
+const unsigned char EncoderBase::size_hash[OpndSize_64+1] = {
//
0xFF, // OpndSize_Null = 0,
- 5, // OpndSize_8 = 0x1,
- 4, // OpndSize_16 = 0x2,
+ 3, // OpndSize_8 = 0x1,
+ 2, // OpndSize_16 = 0x2,
0xFF, // 0x3
- 3, // OpndSize_32 = 0x4,
- 2, // OpndSize_64 = 0x8,
- 1, // OpndSize_80 = 0x16,
- 0, // OpndSize_128 = 0x20,
+ 1, // OpndSize_32 = 0x4,
+ 0, // OpndSize_64 = 0x8,
//
};
@@ -68,19 +66,19 @@ const unsigned char EncoderBase::kind_ha
//mmx reg -> 110 = 6
//
0xFF, // 0 OpndKind_Null=0,
- 0<<3, // 1 OpndKind_GPReg =
+ 0<<2, // 1 OpndKind_GPReg =
// OpndKind_MinRegKind=0x1,
- 4<<3, // 2 OpndKind_SReg=0x2,
+ 4<<2, // 2 OpndKind_SReg=0x2,
#ifdef _HAVE_MMX_
- 6<<3, // 3
+ 6<<2, // 3
#else
0xFF, // 3
#endif
- 5<<3, // 4 OpndKind_FPReg=0x4,
+ 5<<2, // 4 OpndKind_FPReg=0x4,
0xFF, 0xFF, 0xFF, // 5, 6, 7
- 3<<3, // OpndKind_XMMReg=0x8,
+ 3<<2, // OpndKind_XMMReg=0x8,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 9, 0xA, 0xB, 0xC, 0xD,
// 0xE, 0xF
0xFF, // OpndKind_MaxRegKind =
@@ -88,12 +86,12 @@ const unsigned char EncoderBase::kind_ha
// OpndKind_OtherReg=0x10,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x11-0x18
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x19-0x1F
- 2<<3, // OpndKind_Immediate=0x20,
+ 2<<2, // OpndKind_Immediate=0x20,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x21-0x28
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x29-0x30
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x31-0x38
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x39-0x3F
- 1<<3, // OpndKind_Memory=0x40
+ 1<<2, // OpndKind_Memory=0x40
};
char* EncoderBase::encode_aux(char* stream, unsigned aux,
@@ -314,14 +312,12 @@ char * EncoderBase::encode(char * stream
++stream;
//
prex = (Rex*)stream;
- if (odesc->opcode[1] != 0x48) {
- prex->dummy = 4;
- prex->w = 0;
- prex->b = 0;
- prex->x = 0;
- prex->r = 0;
- ++stream;
- }
+ prex->dummy = 4;
+ prex->w = 0;
+ prex->b = 0;
+ prex->x = 0;
+ prex->r = 0;
+ ++stream;
//
memcpy(stream, &odesc->opcode[1], odesc->opcode_len-1);
stream += odesc->opcode_len-1;
@@ -351,10 +347,6 @@ char * EncoderBase::encode(char * stream
else if (odesc->opcode_len==4) {
*(unsigned*)stream = *(unsigned*)&odesc->opcode;
}
- else if (odesc->opcode_len==5) {
- *(unsigned*)stream = *(unsigned*)&odesc->opcode;
- *(unsigned char*)(stream+4) = odesc->opcode[4];
- }
stream += odesc->opcode_len;
}
@@ -714,9 +706,7 @@ const EncoderBase::OpcodeDesc *
EncoderBase::lookup(Mnemonic mn, const Operands& opnds)
{
const unsigned hash = opnds.hash();
- unsigned opcodeIndex = (hash < HASH_MAX ?
- opcodesHashMap[mn][hash]
- : NOHASH);
+ unsigned opcodeIndex = opcodesHashMap[mn][hash];
#ifdef ENCODER_USE_SUBHASH
if (opcodeIndex == NOHASH) {
opcodeIndex = find(mn, hash);
Modified: harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_base.h Mon Jun 7 07:47:11 2010
@@ -228,7 +228,7 @@ public:
* The [3] mostly comes from IDIV/IMUL which both may have up to 3
* operands.
*/
- OpndDesc opnds[6];
+ OpndDesc opnds[3];
unsigned first_opnd;
/**
* @brief Info about operands - total number, number of uses/defs,
@@ -280,7 +280,7 @@ public:
* The value was increased from '5155' to '8192' to make it aligned
* for faster access in EncoderBase::lookup().
*/
- static const unsigned int HASH_MAX = 53573; //8192; //5155;
+ static const unsigned int HASH_MAX = 8192; //5155;
/**
* @brief Empty value, used in hash-to-opcode map to show an empty slot.
*/
@@ -288,7 +288,7 @@ public:
/**
* @brief The name says it all.
*/
- static const unsigned char HASH_BITS_PER_OPERAND = 6;
+ static const unsigned char HASH_BITS_PER_OPERAND = 5;
/**
* @brief Contains info about a single instructions's operand - its
@@ -666,7 +666,7 @@ public:
* A change must be strictly balanced with hash-related functions and data
* in enc_base.h/.cpp.
*/
- static const unsigned char size_hash[OpndSize_128+1];
+ static const unsigned char size_hash[OpndSize_64+1];
/**
* @brief A table used for the fast computation of hash value.
*
Modified: harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_defs.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_defs.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_defs.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_defs.h Mon Jun 7 07:47:11 2010
@@ -19,9 +19,6 @@
*/
#ifndef _ENCODER_DEFS_H_
#define _ENCODER_DEFS_H_
-#define _HAVE_SIMD_
-#define _HAVE_SIMD_4_2_
-#define _HAVE_MMX_
// Used to isolate experimental or being tuned encoder into a separate
@@ -311,14 +308,14 @@ enum RegName {
RegName_XMM7=REGNAME(OpndKind_XMMReg,OpndSize_128,7),
#ifdef _EM64T_
- RegName_XMM8 = REGNAME(OpndKind_XMMReg,OpndSize_128,8),
- RegName_XMM9 = REGNAME(OpndKind_XMMReg,OpndSize_128,9),
- RegName_XMM10 = REGNAME(OpndKind_XMMReg,OpndSize_128,10),
- RegName_XMM11 = REGNAME(OpndKind_XMMReg,OpndSize_128,11),
- RegName_XMM12 = REGNAME(OpndKind_XMMReg,OpndSize_128,12),
- RegName_XMM13 = REGNAME(OpndKind_XMMReg,OpndSize_128,13),
- RegName_XMM14 = REGNAME(OpndKind_XMMReg,OpndSize_128,14),
- RegName_XMM15 = REGNAME(OpndKind_XMMReg,OpndSize_128,15),
+ RegName_XMM8 = REGNAME(OpndKind_XMMReg,OpndSize_128,0),
+ RegName_XMM9 = REGNAME(OpndKind_XMMReg,OpndSize_128,1),
+ RegName_XMM10 = REGNAME(OpndKind_XMMReg,OpndSize_128,2),
+ RegName_XMM11 = REGNAME(OpndKind_XMMReg,OpndSize_128,3),
+ RegName_XMM12 = REGNAME(OpndKind_XMMReg,OpndSize_128,4),
+ RegName_XMM13 = REGNAME(OpndKind_XMMReg,OpndSize_128,5),
+ RegName_XMM14 = REGNAME(OpndKind_XMMReg,OpndSize_128,6),
+ RegName_XMM15 = REGNAME(OpndKind_XMMReg,OpndSize_128,7),
#endif //~_EM64T_
#endif // ~TESTING_ENCODER
@@ -441,53 +438,37 @@ Mnemonic_CMPXCHG,
Mnemonic_CMPXCHG8B, // Compare and Exchange 8 Bytes
Mnemonic_CMPSB, // Compare Two Bytes at DS:ESI and ES:EDI
Mnemonic_CMPSW, // Compare Two Words at DS:ESI and ES:EDI
-#ifndef _HAVE_SIMD_
Mnemonic_CMPSD, // Compare Two Doublewords at DS:ESI and ES:EDI
//
// double -> float
Mnemonic_CVTSD2SS, // Convert Scalar Double-Precision Floating-Point Value to Scalar Single-Precision Floating-Point Value
-#endif
// double -> I_32
-#ifndef _HAVE_SIMD_
Mnemonic_CVTSD2SI, // Convert Scalar Double-Precision Floating-Point Value to Doubleword Integer
-#endif
// double [truncated] -> I_32
Mnemonic_CVTTSD2SI, // Convert with Truncation Scalar Double-Precision Floating-Point Value to Signed Doubleword Integer
//
// float -> double
-#ifndef _HAVE_SIMD_
Mnemonic_CVTSS2SD, // Convert Scalar Single-Precision Floating-Point Value to Scalar Double-Precision Floating-Point Value
// float -> I_32
Mnemonic_CVTSS2SI, // Convert Scalar Single-Precision Floating-Point Value to Doubleword Integer
// float [truncated] -> I_32
Mnemonic_CVTTSS2SI, // Convert with Truncation Scalar Single-Precision Floating-Point Value to Doubleword Integer
-#endif
//
// I_32 -> double
-#ifndef _HAVE_SIMD_
Mnemonic_CVTSI2SD, // Convert Doubleword Integer to Scalar Double-Precision Floating-Point Value
-#endif
// I_32 -> float
-#ifndef _HAVE_SIMD_
Mnemonic_CVTSI2SS, // Convert Doubleword Integer to Scalar Single-Precision Floating-Point Value
-#endif
-#ifndef _HAVE_SIMD_
Mnemonic_COMISD, // Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS
Mnemonic_COMISS, // Compare Scalar Ordered Single-Precision Floating-Point Values and Set EFLAGS
-#endif
Mnemonic_DEC, // Decrement by 1
//Mnemonic_DIV, // Unsigned Divide
-#ifndef _HAVE_SIMD_
Mnemonic_DIVSD, // Divide Scalar Double-Precision Floating-Point Values
Mnemonic_DIVSS, // Divide Scalar Single-Precision Floating-Point Values
-#endif
#ifdef _HAVE_MMX_
-#ifndef _HAVE_SIMD_
Mnemonic_EMMS, // Empty MMX Technology State
#endif
-#endif
Mnemonic_ENTER, // ENTER-Make Stack Frame for Procedure Parameters
Mnemonic_FLDCW, // Load FPU control word
@@ -569,25 +550,20 @@ Mnemonic_LOOPE,
Mnemonic_LOOPNE, Mnemonic_LOOPNZ = Mnemonic_LOOPNE, // Loop according to ECX
Mnemonic_LAHF, // Load Flags into AH
Mnemonic_MOV, // Move
-
-#ifndef _HAVE_SIMD_
Mnemonic_MOVD, // Move Double word
Mnemonic_MOVQ, // Move Quadword
-#endif
-
/*Mnemonic_MOVS, // Move Data from String to String*/
// MOVS is a special case: see encoding table for more details,
Mnemonic_MOVS8, Mnemonic_MOVS16, Mnemonic_MOVS32, Mnemonic_MOVS64,
//
+Mnemonic_MOVAPD, // Move Scalar Double-Precision Floating-Point Value
Mnemonic_MOVSD, // Move Scalar Double-Precision Floating-Point Value
Mnemonic_MOVSS, // Move Scalar Single-Precision Floating-Point Values
Mnemonic_MOVSX, // Move with Sign-Extension
Mnemonic_MOVZX, // Move with Zero-Extend
//Mnemonic_MUL, // Unsigned Multiply
-#ifndef _HAVE_SIMD_
Mnemonic_MULSD, // Multiply Scalar Double-Precision Floating-Point Values
Mnemonic_MULSS, // Multiply Scalar Single-Precision Floating-Point Values
-#endif
Mnemonic_NEG, // Two's Complement Negation
Mnemonic_NOP, // No Operation
Mnemonic_NOT, // One's Complement Negation
@@ -595,234 +571,13 @@ Mnemonic_OR,
Mnemonic_PREFETCH, // prefetch
#ifdef _HAVE_MMX_
-#ifndef _HAVE_SIMD_
Mnemonic_PADDQ, // Add Packed Quadword Integers
Mnemonic_PAND, // Logical AND
Mnemonic_POR, // Bitwise Logical OR
Mnemonic_PSUBQ, // Subtract Packed Quadword Integers
#endif
-#endif
-
-#ifdef _HAVE_SIMD_
- Mnemonic_ADDPD,
- Mnemonic_ADDSUBPD,
- Mnemonic_ADDSUBPS,
- Mnemonic_ADDPS,
- Mnemonic_ANDPD,
- Mnemonic_ANDNPD,
- Mnemonic_ANDNPS,
- Mnemonic_CLFLUSH,
- Mnemonic_CMPPD,
- Mnemonic_CMPPS,
- Mnemonic_CMPSD,
- Mnemonic_CMPSS,
- Mnemonic_COMISD,
- Mnemonic_COMISS,
- Mnemonic_CVTDQ2PD,
- Mnemonic_CVTDQ2PS,
- Mnemonic_CVTPS2DQ,
- Mnemonic_CVTPD2DQ,
- Mnemonic_CVTPD2PI,
- Mnemonic_CVTPD2PS,
- Mnemonic_CVTPI2PD,
- Mnemonic_CVTPI2PS,
- Mnemonic_CVTPS2PQ,
- Mnemonic_CVTPS2PD,
- Mnemonic_CVTPS2PI,
- Mnemonic_CVTSD2SI,
- Mnemonic_CVTSD2SS,
- Mnemonic_CVTSI2SD,
- Mnemonic_CVTSI2SS,
- Mnemonic_CVTSS2SD,
- Mnemonic_CVTSS2SI,
- Mnemonic_CVTTPD2PI,
- Mnemonic_CVTTPD2DQ,
- Mnemonic_CVTTPS2DQ,
- Mnemonic_CVTTPS2PI,
- Mnemonic_CVTTSS2SI,
- Mnemonic_DIVPD,
- Mnemonic_DIVPS,
- Mnemonic_DIVSD,
- Mnemonic_DIVSS,
- Mnemonic_EMMS,
- Mnemonic_HADDPD,
- Mnemonic_HADDPS,
- Mnemonic_HSUBPD,
- Mnemonic_HSUBPS,
- Mnemonic_LDDQU,
- Mnemonic_LDMXCSR,
- Mnemonic_LFENCE,
- Mnemonic_MASKMOVDQU,
- Mnemonic_MASKMOVQ,
- Mnemonic_MAXPD,
- Mnemonic_MAXPS,
- Mnemonic_MAXSD,
- Mnemonic_MAXSS,
- Mnemonic_MFENCE,
- Mnemonic_MINPD,
- Mnemonic_MINPS,
- Mnemonic_MINSD,
- Mnemonic_MINSS,
- Mnemonic_MONITOR,
-
- Mnemonic_MOVAPD,
- Mnemonic_MOVAPS,
- Mnemonic_MOVD,
- Mnemonic_MOVDDUP,
- Mnemonic_MOVDQA,
- Mnemonic_MOVDQU,
- Mnemonic_MOVDQ2Q,
- Mnemonic_MOVHLPS,
- Mnemonic_MOVHPD,
- Mnemonic_MOVHPS,
- Mnemonic_MOVLHPS,
- Mnemonic_MOVLPD,
- Mnemonic_MOVLPS,
- Mnemonic_MOVMSKPD,
- Mnemonic_MOVMSKPS,
- Mnemonic_MOVNTDQ,
- Mnemonic_MOVNTI,
- Mnemonic_MOVNTPD,
- Mnemonic_MOVNTPS,
- Mnemonic_MOVNTQ,
- Mnemonic_MOVSHDUP,
- Mnemonic_MOVSLDUP,
- Mnemonic_MOVQ,
- Mnemonic_MOVQ2DQ,
- Mnemonic_MOVUPD,
- Mnemonic_MOVUPS,
- Mnemonic_MULPD,
- Mnemonic_MULPS,
- Mnemonic_MULSD,
- Mnemonic_MULSS,
- Mnemonic_WAIT,
- Mnemonic_ORPD,
- Mnemonic_ORPS,
- Mnemonic_PACKSSWB,
- Mnemonic_PACKSSDW,
- Mnemonic_PACKUSWB,
- Mnemonic_PADDB,
- Mnemonic_PADDW,
- Mnemonic_PADDD,
- Mnemonic_PADDQ,
- Mnemonic_PADDSB,
- Mnemonic_PADDSW,
- Mnemonic_PADDUSB,
- Mnemonic_PADDUSW,
- Mnemonic_PAND,
- Mnemonic_PANDN,
- Mnemonic_PAVGB,
- Mnemonic_PAVGW,
- Mnemonic_PCMPEQB,
- Mnemonic_PCMPEQW,
- Mnemonic_PCMPEQD,
- Mnemonic_PCMPEQQ,
- Mnemonic_PCMPGTB,
- Mnemonic_PCMPGTW,
- Mnemonic_PCMPGTD,
- Mnemonic_PCMPGTQ,
- Mnemonic_PEXTRB,
- Mnemonic_PEXTRD,
- Mnemonic_PEXTRQ,
- Mnemonic_PINSRB,
- Mnemonic_PINSRD,
- Mnemonic_PINSRQ,
- Mnemonic_PEXTRW,
- Mnemonic_PINSRW,
- Mnemonic_PMOVSXBW,
- Mnemonic_PMOVZXBW,
- Mnemonic_PMOVSXBD,
- Mnemonic_PMOVZXBD,
- Mnemonic_PMOVSXBQ,
- Mnemonic_PMOVZXBQ,
- Mnemonic_PMOVSXWD,
- Mnemonic_PMOVZXWD,
- Mnemonic_PMOVSXWQ,
- Mnemonic_PMOVZXWQ,
- Mnemonic_PMOVSXDQ,
- Mnemonic_PMOVZXDQ,
- Mnemonic_PMADDWD,
- Mnemonic_PABSB,
- Mnemonic_PABSW,
- Mnemonic_PABSD,
- Mnemonic_PMAXSB,
- Mnemonic_PMAXSW,
- Mnemonic_PMAXSD,
- Mnemonic_PMAXUB,
- Mnemonic_PMINSB,
- Mnemonic_PMINSW,
- Mnemonic_PMINSD,
- Mnemonic_PMINUB,
- Mnemonic_PMOVMSKB,
- Mnemonic_PMULHUW,
- Mnemonic_PMULHW,
- Mnemonic_PMULLD,
- Mnemonic_PMULLW,
- Mnemonic_PMULDQ,
- Mnemonic_PMULUDQ,
- Mnemonic_POR,
- Mnemonic_PSADBW,
- Mnemonic_PSHUFB,
- Mnemonic_PSHUFD,
- Mnemonic_PSHUFHW,
- Mnemonic_PSHUFLW,
- Mnemonic_PSHUFW,
- Mnemonic_PSLLDQ,
- Mnemonic_PSLLW,
- Mnemonic_PSLLD,
- Mnemonic_PSLLQ,
- Mnemonic_PSRAW,
- Mnemonic_PSRAD,
- Mnemonic_PSRLW,
- Mnemonic_PSRLD,
- Mnemonic_PSRLQ,
- Mnemonic_PSRLDQ,
- Mnemonic_PSUBB,
- Mnemonic_PSUBW,
- Mnemonic_PSUBD,
- Mnemonic_PSUBQ,
- Mnemonic_PSUBSB,
- Mnemonic_PSUBSW,
- Mnemonic_PSUBUSB,
- Mnemonic_PSUBUSW,
- Mnemonic_PUNPCKHBW,
- Mnemonic_PUNPCKHWD,
- Mnemonic_PUNPCKHDQ,
- Mnemonic_PUNPCKHQDQ,
- Mnemonic_PUNPCKLBW,
- Mnemonic_PUNPCKLWD,
- Mnemonic_PUNPCKLDQ,
- Mnemonic_PUNPCKLQDQ,
- Mnemonic_PXOR,
- Mnemonic_RCPPS,
- Mnemonic_RSQRTPS,
- Mnemonic_RSQRTSS,
- Mnemonic_SHUFPD,
- Mnemonic_SHUFPS,
- Mnemonic_SQRTPD,
- Mnemonic_SQRTPS,
- Mnemonic_SQRTSD,
- Mnemonic_SQRTSS,
- Mnemonic_STMXCSR,
- Mnemonic_SUBPD,
- Mnemonic_SUBPS,
- Mnemonic_SUBSD,
- Mnemonic_SUBSS,
- Mnemonic_UNPCKHPD,
- Mnemonic_UNPCKHPS,
- Mnemonic_UNPCKLPD,
- Mnemonic_UNPCKLPS,
- Mnemonic_XORPD,
- Mnemonic_XORPS,
- Mnemonic_PCMPESTRI,
- Mnemonic_PCMPESTRM,
- Mnemonic_PCMPISTRI,
- Mnemonic_PCMPISTRM,
-#endif
-#ifndef _HAVE_SIMD_
Mnemonic_PXOR, // Logical Exclusive OR
-#endif
Mnemonic_POP, // Pop a Value from the Stack
Mnemonic_POPFD, // Pop a Value of EFLAGS register from the Stack
Mnemonic_PUSH, // Push Word or Doubleword Onto the Stack
@@ -859,10 +614,8 @@ Mnemonic_SHLD,
Mnemonic_SBB, // Integer Subtraction with Borrow
Mnemonic_SUB, // Subtract
-#ifndef _HAVE_SIMD_
Mnemonic_SUBSD, // Subtract Scalar Double-Precision Floating-Point Values
Mnemonic_SUBSS, // Subtract Scalar Single-Precision Floating-Point Values
-#endif
Mnemonic_TEST, // Logical Compare
@@ -873,18 +626,14 @@ Mnemonic_XOR,
//
// packed things,
//
-#ifndef _HAVE_SIMD_
Mnemonic_XORPD, // Bitwise Logical XOR for Double-Precision Floating-Point Values
Mnemonic_XORPS, // Bitwise Logical XOR for Single-Precision Floating-Point Values
Mnemonic_CVTDQ2PD, // Convert Packed Doubleword Integers to Packed Double-Precision Floating-Point Values
Mnemonic_CVTTPD2DQ, // Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Doubleword Integers
-#endif
-#ifndef _HAVE_SIMD_
Mnemonic_CVTDQ2PS, // Convert Packed Doubleword Integers to Packed Single-Precision Floating-Point Values
Mnemonic_CVTTPS2DQ, // Convert with Truncation Packed Single-Precision Floating-Point Values to Packed Doubleword Integers
-#endif
//
// String operations
//
@@ -894,9 +643,7 @@ Mnemonic_SCAS,
Mnemonic_STOS, // Store string
//
-#ifndef _HAVE_SIMD_
Mnemonic_WAIT, // Check pending pending unmasked floating-point exception
-#endif
//
Mnemonic_Count
};
Modified: harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_prvt.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_prvt.h?rev=952128&r1=952127&r2=952128&view=diff
==============================================================================
--- harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_prvt.h (original)
+++ harmony/enhanced/java/trunk/drlvm/vm/port/src/encoder/ia32_em64t/enc_prvt.h Mon Jun 7 07:47:11 2010
@@ -102,9 +102,6 @@ enum OpcodeByteKind {
#define DU_DU_U {3, 2, 3, (((OpndRole_Def|OpndRole_Use)<<4) | ((OpndRole_Def|OpndRole_Use)<<2) | OpndRole_Use) }
#define D_DU_U {3, 2, 2, (((OpndRole_Def)<<4) | ((OpndRole_Def|OpndRole_Use)<<2) | OpndRole_Use) }
#define D_U_U {3, 1, 2, (((OpndRole_Def)<<4) | ((OpndRole_Use)<<2) | OpndRole_Use) }
-#define DU_U_U {3, 1, 3, (((OpndRole_Def|OpndRole_Use)<<4) | ((OpndRole_Use)<<2) | OpndRole_Use) }
-#define D_U_U_U_U_U {6, 1, 5, (((OpndRole_Def)<<10)| ((OpndRole_Use)<<8) | ((OpndRole_Use)<<6) | ((OpndRole_Use)<<4) | ((OpndRole_Use)<<2) | OpndRole_Use) }
-#define D_U_U_U {4, 1, 3, (((OpndRole_Def)<<6) | ((OpndRole_Use)<<4) | ((OpndRole_Use)<<2) | OpndRole_Use) }
// Special encoding of 0x00 opcode byte. Note: it's all O-s, not zeros.
#define OxOO OpcodeByteKind_ZeroOpcodeByte
@@ -142,7 +139,6 @@ enum OpcodeByteKind {
#define AH {OpndKind_GPReg, OpndSize_8, RegName_AH}
#define AX {OpndKind_GPReg, OpndSize_16, RegName_AX}
#define EAX {OpndKind_GPReg, OpndSize_32, RegName_EAX}
-#define DS {OpndKind_SReg, OpndSize_16, RegName_EAX}
#ifdef _EM64T_
#define RAX {OpndKind_GPReg, OpndSize_64, RegName_RAX }
#endif
@@ -169,8 +165,6 @@ enum OpcodeByteKind {
#define RDI { OpndKind_GPReg, OpndSize_64, RegName_RDI }
#endif
-#define XMM0 {OpndKind_XMMReg, OpndSize_128, RegName_XMM0}
-
#define r8 {OpndKind_GPReg, OpndSize_8, RegName_Null}
#define r16 {OpndKind_GPReg, OpndSize_16, RegName_Null}
#define r32 {OpndKind_GPReg, OpndSize_32, RegName_Null}
@@ -189,7 +183,6 @@ enum OpcodeByteKind {
#define m16 {OpndKind_Mem, OpndSize_16, RegName_Null}
#define m32 {OpndKind_Mem, OpndSize_32, RegName_Null}
#define m64 {OpndKind_Mem, OpndSize_64, RegName_Null}
-#define m128 {OpndKind_Mem, OpndSize_128, RegName_Null}
#ifdef _EM64T_
#define r_m64 { (OpndKind)(OpndKind_GPReg|OpndKind_Mem), OpndSize_64, RegName_Null }
#endif
@@ -217,8 +210,6 @@ enum OpcodeByteKind {
#define mm64 {OpndKind_MMXReg, OpndSize_64, RegName_Null}
#define mm_m64 {(OpndKind)(OpndKind_MMXReg|OpndKind_Mem), OpndSize_64, RegName_Null}
-#define xmm128 {OpndKind_XMMReg, OpndSize_128, RegName_Null}
-#define xmm_m128 {(OpndKind)(OpndKind_XMMReg|OpndKind_Mem), OpndSize_128, RegName_Null}
#define xmm64 {OpndKind_XMMReg, OpndSize_64, RegName_Null}
#define xmm_m64 {(OpndKind)(OpndKind_XMMReg|OpndKind_Mem), OpndSize_64, RegName_Null}
@@ -295,8 +286,8 @@ struct OpcodeInfo {
decoder64,
};
platform platf;
- unsigned opcode[5+1+1];
- EncoderBase::OpndDesc opnds[6];
+ unsigned opcode[4+1+1];
+ EncoderBase::OpndDesc opnds[3];
EncoderBase::OpndRolesDesc roles;
};