Skip to content

Commit 14761c7

Browse files
authored
Merge pull request #22178 from gita-omr/binary_mask_opcodes
Generate binary Mask opcodes
2 parents e9485c7 + ece2800 commit 14761c7

File tree

1 file changed

+3
-13
lines changed

1 file changed

+3
-13
lines changed

runtime/compiler/optimizer/VectorAPIExpansion.cpp

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3238,16 +3238,6 @@ TR::ILOpCodes TR_VectorAPIExpansion::ILOpcodeFromVectorAPIOpcode(TR::Compilation
32383238
vapiObjType objectType, vapiOpCodeType opCodeType, bool withMask,
32393239
TR::DataType sourceElementType, TR::VectorLength sourceVectorLength)
32403240
{
3241-
// Skip some unsupported operations on Mask for now (e.g. binary operation on Mask). TODO: implement
3242-
if (objectType == Mask &&
3243-
vectorAPIOpCode != VECTOR_OP_MASK_COMPRESS &&
3244-
opCodeType != Test &&
3245-
opCodeType != MaskReduction &&
3246-
opCodeType != Compare) // for Compare, objectType is Mask (the result) but the operands are always vectors
3247-
{
3248-
return reportMissingOpCode(comp, vectorAPIOpCode, objectType, opCodeType, withMask);
3249-
}
3250-
32513241
// TODO: support more scalarization
32523242

32533243
bool scalar = (vectorLength == TR::NoVectorLength);
@@ -3462,9 +3452,9 @@ TR::ILOpCodes TR_VectorAPIExpansion::ILOpcodeFromVectorAPIOpcode(TR::Compilation
34623452
case VECTOR_OP_DIV: return scalar ? TR::ILOpCode::divideOpCode(elementType) : TR::ILOpCode::createVectorOpCode(TR::vdiv, vectorType);
34633453
case VECTOR_OP_MIN: return scalar ? TR::BadILOp : TR::ILOpCode::createVectorOpCode(TR::vmin, vectorType);
34643454
case VECTOR_OP_MAX: return scalar ? TR::BadILOp : TR::ILOpCode::createVectorOpCode(TR::vmax, vectorType);
3465-
case VECTOR_OP_AND: return scalar ? TR::ILOpCode::andOpCode(elementType) : TR::ILOpCode::createVectorOpCode(TR::vand, vectorType);
3466-
case VECTOR_OP_OR: return scalar ? TR::ILOpCode::orOpCode(elementType) : TR::ILOpCode::createVectorOpCode(TR::vor, vectorType);
3467-
case VECTOR_OP_XOR: return scalar ? TR::ILOpCode::xorOpCode(elementType) : TR::ILOpCode::createVectorOpCode(TR::vxor, vectorType);
3455+
case VECTOR_OP_AND: return scalar ? TR::ILOpCode::andOpCode(elementType) : TR::ILOpCode::createVectorOpCode(objectType == Vector ? TR::vand : TR::mand, vectorType);
3456+
case VECTOR_OP_OR: return scalar ? TR::ILOpCode::orOpCode(elementType) : TR::ILOpCode::createVectorOpCode(objectType == Vector ? TR::vor : TR::mor, vectorType);
3457+
case VECTOR_OP_XOR: return scalar ? TR::ILOpCode::xorOpCode(elementType) : TR::ILOpCode::createVectorOpCode(objectType == Vector ? TR::vxor : TR::mxor, vectorType);
34683458
case VECTOR_OP_FMA: return scalar ? TR::BadILOp : TR::ILOpCode::createVectorOpCode(TR::vfma, vectorType);
34693459

34703460
case VECTOR_OP_LSHIFT: return scalar ? TR::BadILOp : TR::ILOpCode::createVectorOpCode(TR::vshl, vectorType);

0 commit comments

Comments
 (0)