Skip to content

Commit

Permalink
Add opcodes sbyteswap and lbyteswap
Browse files Browse the repository at this point in the history
Signed-off-by: Batyr Nuryyev <nuryyev@ualberta.ca>
  • Loading branch information
oneturkmen committed Nov 6, 2020
1 parent 6df8d1d commit f6e63fe
Show file tree
Hide file tree
Showing 10 changed files with 765 additions and 193 deletions.
10 changes: 2 additions & 8 deletions compiler/aarch64/codegen/OMRTreeEvaluatorTable.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -515,9 +515,6 @@
#define vlRegStoreARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define vfRegStoreARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define vdRegStoreARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define iuconstARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define luconstARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define buconstARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define iuloadARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define luloadARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define buloadARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
Expand All @@ -530,9 +527,6 @@
#define iustoreiARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define lustoreiARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define bustoreiARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define iureturnARM64Evaluator TR::TreeEvaluator::ireturnEvaluator
#define lureturnARM64Evaluator TR::TreeEvaluator::lreturnEvaluator
#define lucallARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define iuaddARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define luaddARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define buaddARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
Expand All @@ -553,7 +547,6 @@
#define luRegLoadARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define iuRegStoreARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define luRegStoreARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define cconstARM64Evaluator TR::TreeEvaluator::cconstEvaluator
#define cloadARM64Evaluator TR::TreeEvaluator::cloadEvaluator
#define cloadiARM64Evaluator TR::TreeEvaluator::cloadEvaluator
#define cstoreARM64Evaluator TR::TreeEvaluator::sstoreEvaluator
Expand All @@ -579,7 +572,6 @@
#define discontigarraylengthARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define icalliARM64Evaluator TR::TreeEvaluator::indirectCallEvaluator
#define lcalliARM64Evaluator TR::TreeEvaluator::indirectCallEvaluator
#define lucalliARM64Evaluator TR::TreeEvaluator::indirectCallEvaluator
#define fcalliARM64Evaluator TR::TreeEvaluator::indirectCallEvaluator
#define dcalliARM64Evaluator TR::TreeEvaluator::indirectCallEvaluator
#define acalliARM64Evaluator TR::TreeEvaluator::indirectCallEvaluator
Expand Down Expand Up @@ -734,7 +726,9 @@
#define lnolzARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define lnotzARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define lpopcntARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define sbyteswapARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define ibyteswapARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define lbyteswapARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define bbitpermuteARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define sbitpermuteARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
#define ibitpermuteARM64Evaluator TR::TreeEvaluator::unImpOpEvaluator
Expand Down
10 changes: 2 additions & 8 deletions compiler/arm/codegen/OMRTreeEvaluatorTable.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -516,9 +516,6 @@
#define vlRegStoreARMEvaluator TR::TreeEvaluator::unImpOpEvaluator
#define vfRegStoreARMEvaluator TR::TreeEvaluator::unImpOpEvaluator
#define vdRegStoreARMEvaluator TR::TreeEvaluator::unImpOpEvaluator
#define iuconstARMEvaluator TR::TreeEvaluator::iconstEvaluator
#define luconstARMEvaluator TR::TreeEvaluator::lconstEvaluator
#define buconstARMEvaluator TR::TreeEvaluator::bconstEvaluator
#define iuloadARMEvaluator TR::TreeEvaluator::iloadEvaluator
#define luloadARMEvaluator TR::TreeEvaluator::lloadEvaluator
#define buloadARMEvaluator TR::TreeEvaluator::bloadEvaluator
Expand All @@ -531,9 +528,6 @@
#define iustoreiARMEvaluator TR::TreeEvaluator::istoreEvaluator
#define lustoreiARMEvaluator TR::TreeEvaluator::lstoreEvaluator
#define bustoreiARMEvaluator TR::TreeEvaluator::bstoreEvaluator
#define iureturnARMEvaluator TR::TreeEvaluator::ireturnEvaluator
#define lureturnARMEvaluator TR::TreeEvaluator::lreturnEvaluator
#define lucallARMEvaluator TR::TreeEvaluator::directCallEvaluator
#define iuaddARMEvaluator TR::TreeEvaluator::iaddEvaluator
#define luaddARMEvaluator TR::TreeEvaluator::laddEvaluator
#define buaddARMEvaluator TR::TreeEvaluator::unImpOpEvaluator
Expand All @@ -554,7 +548,6 @@
#define luRegLoadARMEvaluator TR::TreeEvaluator::lRegLoadEvaluator
#define iuRegStoreARMEvaluator TR::TreeEvaluator::iRegStoreEvaluator
#define luRegStoreARMEvaluator TR::TreeEvaluator::lRegStoreEvaluator
#define cconstARMEvaluator TR::TreeEvaluator::cconstEvaluator
#define cloadARMEvaluator TR::TreeEvaluator::cloadEvaluator
#define cloadiARMEvaluator TR::TreeEvaluator::cloadEvaluator
#define cstoreARMEvaluator TR::TreeEvaluator::sstoreEvaluator
Expand All @@ -580,7 +573,6 @@
#define discontigarraylengthARMEvaluator TR::TreeEvaluator::badILOpEvaluator
#define icalliARMEvaluator TR::TreeEvaluator::indirectCallEvaluator
#define lcalliARMEvaluator TR::TreeEvaluator::indirectCallEvaluator
#define lucalliARMEvaluator TR::TreeEvaluator::indirectCallEvaluator
#define fcalliARMEvaluator TR::TreeEvaluator::indirectCallEvaluator
#define dcalliARMEvaluator TR::TreeEvaluator::indirectCallEvaluator
#define acalliARMEvaluator TR::TreeEvaluator::indirectCallEvaluator
Expand Down Expand Up @@ -735,7 +727,9 @@
#define lnolzARMEvaluator TR::TreeEvaluator::longNumberOfLeadingZeros
#define lnotzARMEvaluator TR::TreeEvaluator::longNumberOfTrailingZeros
#define lpopcntARMEvaluator TR::TreeEvaluator::longBitCount
#define sbyteswapARMEvaluator TR::TreeEvaluator::unImpOpEvaluator
#define ibyteswapARMEvaluator TR::TreeEvaluator::unImpOpEvaluator
#define lbyteswapARMEvaluator TR::TreeEvaluator::unImpOpEvaluator
#define bbitpermuteARMEvaluator TR::TreeEvaluator::unImpOpEvaluator
#define sbitpermuteARMEvaluator TR::TreeEvaluator::unImpOpEvaluator
#define ibitpermuteARMEvaluator TR::TreeEvaluator::unImpOpEvaluator
Expand Down
160 changes: 32 additions & 128 deletions compiler/il/OMROpcodes.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7901,54 +7901,6 @@
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ vdRegStore, /* Store vector global register */ \
) \
MACRO(\
/* .opcode = */ TR::iuconst, \
/* .name = */ "iuconst", \
/* .properties1 = */ ILProp1::LoadConst, \
/* .properties2 = */ ILProp2::ValueNumberShare, \
/* .properties3 = */ ILProp3::LikeUse, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int32, \
/* .typeProperties = */ ILTypeProp::Size_4 | ILTypeProp::Unsigned, \
/* .childProperties = */ ILChildProp::NoChildren, \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ iuconst, /* load unsigned integer constant (32-but unsigned) */ \
) \
MACRO(\
/* .opcode = */ TR::luconst, \
/* .name = */ "luconst", \
/* .properties1 = */ ILProp1::LoadConst, \
/* .properties2 = */ ILProp2::ValueNumberShare, \
/* .properties3 = */ ILProp3::LikeUse, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int64, \
/* .typeProperties = */ ILTypeProp::Size_8 | ILTypeProp::Unsigned, \
/* .childProperties = */ ILChildProp::NoChildren, \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ luconst, /* load unsigned long integer constant (64-bit unsigned) */ \
) \
MACRO(\
/* .opcode = */ TR::buconst, \
/* .name = */ "buconst", \
/* .properties1 = */ ILProp1::LoadConst, \
/* .properties2 = */ ILProp2::ValueNumberShare, \
/* .properties3 = */ ILProp3::LikeUse, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int8, \
/* .typeProperties = */ ILTypeProp::Size_1 | ILTypeProp::Unsigned, \
/* .childProperties = */ ILChildProp::NoChildren, \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ buconst, /* load unsigned byte integer constant (8-bit unsigned) */ \
) \
MACRO(\
/* .opcode = */ TR::iuload, \
/* .name = */ "iuload", \
Expand Down Expand Up @@ -8141,54 +8093,6 @@
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ bustorei, /* store indirect unsigned byte (child1 a, child2 b) */ \
) \
MACRO(\
/* .opcode = */ TR::iureturn, \
/* .name = */ "iureturn", \
/* .properties1 = */ ILProp1::Return | ILProp1::TreeTop, \
/* .properties2 = */ ILProp2::MayUseSystemStack, \
/* .properties3 = */ 0, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int32, \
/* .typeProperties = */ ILTypeProp::Size_4 | ILTypeProp::Unsigned, \
/* .childProperties = */ ONE_CHILD(TR::Int32), \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ iureturn, /* return an unsigned integer */ \
) \
MACRO(\
/* .opcode = */ TR::lureturn, \
/* .name = */ "lureturn", \
/* .properties1 = */ ILProp1::Return | ILProp1::TreeTop, \
/* .properties2 = */ ILProp2::MayUseSystemStack, \
/* .properties3 = */ 0, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int64, \
/* .typeProperties = */ ILTypeProp::Size_8 | ILTypeProp::Unsigned, \
/* .childProperties = */ ONE_CHILD(TR::Int64), \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ lureturn, /* return a long unsigned integer */ \
) \
MACRO(\
/* .opcode = */ TR::lucall, \
/* .name = */ "lucall", \
/* .properties1 = */ ILProp1::Call | ILProp1::HasSymbolRef, \
/* .properties2 = */ ILProp2::CanRaiseException | ILProp2::SupportedForPRE| ILProp2::MayUseSystemStack, \
/* .properties3 = */ ILProp3::LikeUse | ILProp3::LikeDef, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int64, \
/* .typeProperties = */ ILTypeProp::Size_8 | ILTypeProp::Unsigned, \
/* .childProperties = */ ILChildProp::Unspecified, \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ lucall, /* direct call returning unsigned long integer */ \
) \
MACRO(\
/* .opcode = */ TR::iuadd, \
/* .name = */ "iuadd", \
Expand Down Expand Up @@ -8509,22 +8413,6 @@
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ luRegStore, /* Store long integer global register */ \
) \
MACRO(\
/* .opcode = */ TR::cconst, \
/* .name = */ "cconst", \
/* .properties1 = */ ILProp1::LoadConst, \
/* .properties2 = */ ILProp2::ValueNumberShare, \
/* .properties3 = */ ILProp3::LikeUse, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int16, \
/* .typeProperties = */ ILTypeProp::Size_2 | ILTypeProp::Unsigned, \
/* .childProperties = */ ILChildProp::NoChildren, \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ cconst, /* load unicode constant (16-bit unsigned) */ \
) \
MACRO(\
/* .opcode = */ TR::cload, \
/* .name = */ "cload", \
Expand Down Expand Up @@ -8925,22 +8813,6 @@
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ lcalli, /* indirect call returning long integer (child1 is addr of function) */ \
) \
MACRO(\
/* .opcode = */ TR::lucalli, \
/* .name = */ "lucalli", \
/* .properties1 = */ ILProp1::Indirect | ILProp1::Call | ILProp1::HasSymbolRef, \
/* .properties2 = */ ILProp2::CanRaiseException | ILProp2::SupportedForPRE| ILProp2::MayUseSystemStack, \
/* .properties3 = */ ILProp3::LikeUse | ILProp3::LikeDef, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int64, \
/* .typeProperties = */ ILTypeProp::Size_8 | ILTypeProp::Unsigned, \
/* .childProperties = */ ILChildProp::IndirectCallType, \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ lucalli, /* indirect call returning unsigned long integer (child1 is addr of function) */ \
) \
MACRO(\
/* .opcode = */ TR::fcalli, \
/* .name = */ "fcalli", \
Expand Down Expand Up @@ -11405,6 +11277,22 @@
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ lpopcnt, \
) \
MACRO(\
/* .opcode = */ TR::sbyteswap, \
/* .name = */ "sbyteswap", \
/* .properties1 = */ 0, \
/* .properties2 = */ ILProp2::ValueNumberShare | ILProp2::SupportedForPRE | ILProp2::ByteSwap, \
/* .properties3 = */ 0, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int16, \
/* .typeProperties = */ ILTypeProp::Size_2 | ILTypeProp::Integer, \
/* .childProperties = */ ONE_CHILD(TR::Int16), \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ sbyteswap, /* swap bytes in a short */ \
) \
MACRO(\
/* .opcode = */ TR::ibyteswap, \
/* .name = */ "ibyteswap", \
Expand All @@ -11421,6 +11309,22 @@
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ ibyteswap, /* swap bytes in an integer */ \
) \
MACRO(\
/* .opcode = */ TR::lbyteswap, \
/* .name = */ "lbyteswap", \
/* .properties1 = */ 0, \
/* .properties2 = */ ILProp2::ValueNumberShare | ILProp2::SupportedForPRE | ILProp2::ByteSwap, \
/* .properties3 = */ 0, \
/* .properties4 = */ 0, \
/* .dataType = */ TR::Int64, \
/* .typeProperties = */ ILTypeProp::Size_8 | ILTypeProp::Integer, \
/* .childProperties = */ ONE_CHILD(TR::Int64), \
/* .swapChildrenOpCode = */ TR::BadILOp, \
/* .reverseBranchOpCode = */ TR::BadILOp, \
/* .booleanCompareOpCode = */ TR::BadILOp, \
/* .ifCompareOpCode = */ TR::BadILOp, \
/* .description = */ lbyteswap, /* swap bytes in a long */ \
) \
MACRO(\
/* .opcode = */ TR::bbitpermute, \
/* .name = */ "bbitpermute", \
Expand Down
10 changes: 2 additions & 8 deletions compiler/optimizer/OMRSimplifierHandlers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -769,9 +769,6 @@ TR::Node * removeArithmeticsUnderIntegralCompare(TR::Node* node,TR::Simplifier *
#define vlRegStoreSimplifierHandler dftSimplifier
#define vfRegStoreSimplifierHandler dftSimplifier
#define vdRegStoreSimplifierHandler dftSimplifier
#define iuconstSimplifierHandler constSimplifier
#define luconstSimplifierHandler lconstSimplifier
#define buconstSimplifierHandler constSimplifier
#define iuloadSimplifierHandler directLoadSimplifier
#define luloadSimplifierHandler directLoadSimplifier
#define buloadSimplifierHandler directLoadSimplifier
Expand All @@ -784,9 +781,6 @@ TR::Node * removeArithmeticsUnderIntegralCompare(TR::Node* node,TR::Simplifier *
#define iustoreiSimplifierHandler indirectStoreSimplifier
#define lustoreiSimplifierHandler indirectStoreSimplifier
#define bustoreiSimplifierHandler indirectStoreSimplifier
#define iureturnSimplifierHandler dftSimplifier
#define lureturnSimplifierHandler dftSimplifier
#define lucallSimplifierHandler lcallSimplifier
#define iuaddSimplifierHandler iaddSimplifier
#define luaddSimplifierHandler laddSimplifier
#define buaddSimplifierHandler baddSimplifier
Expand All @@ -807,7 +801,6 @@ TR::Node * removeArithmeticsUnderIntegralCompare(TR::Node* node,TR::Simplifier *
#define luRegLoadSimplifierHandler dftSimplifier
#define iuRegStoreSimplifierHandler dftSimplifier
#define luRegStoreSimplifierHandler dftSimplifier
#define cconstSimplifierHandler constSimplifier
#define cloadSimplifierHandler directLoadSimplifier
#define cloadiSimplifierHandler indirectLoadSimplifier
#define cstoreSimplifierHandler dftSimplifier
Expand All @@ -833,7 +826,6 @@ TR::Node * removeArithmeticsUnderIntegralCompare(TR::Node* node,TR::Simplifier *
#define discontigarraylengthSimplifierHandler arrayLengthSimplifier
#define icalliSimplifierHandler dftSimplifier
#define lcalliSimplifierHandler dftSimplifier
#define lucalliSimplifierHandler dftSimplifier
#define fcalliSimplifierHandler dftSimplifier
#define dcalliSimplifierHandler dftSimplifier
#define acalliSimplifierHandler dftSimplifier
Expand Down Expand Up @@ -988,7 +980,9 @@ TR::Node * removeArithmeticsUnderIntegralCompare(TR::Node* node,TR::Simplifier *
#define lnolzSimplifierHandler dftSimplifier
#define lnotzSimplifierHandler dftSimplifier
#define lpopcntSimplifierHandler dftSimplifier
#define sbyteswapSimplifierHandler dftSimplifier
#define ibyteswapSimplifierHandler dftSimplifier
#define lbyteswapSimplifierHandler dftSimplifier
#define bbitpermuteSimplifierHandler dftSimplifier
#define sbitpermuteSimplifierHandler dftSimplifier
#define ibitpermuteSimplifierHandler dftSimplifier
Expand Down
Loading

0 comments on commit f6e63fe

Please sign in to comment.