diff --git a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/vector/nodes/simd/SimdBlendWithLogicMaskNode.java b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/vector/nodes/simd/SimdBlendWithLogicMaskNode.java index b61ee8645e71..7a3bae64103c 100644 --- a/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/vector/nodes/simd/SimdBlendWithLogicMaskNode.java +++ b/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/vector/nodes/simd/SimdBlendWithLogicMaskNode.java @@ -128,14 +128,16 @@ public Node canonical(CanonicalizerTool tool, ValueNode forX, ValueNode forY, Va } return SimdBlendWithLogicMaskNode.create(forY, forX, newSelector); } - SimdStamp falseValuesStamp = (SimdStamp) forX.stamp(NodeView.from(tool)); - SimdStamp trueValuesStamp = (SimdStamp) forY.stamp(NodeView.from(tool)); - if (falseValuesStamp.isAllZeros() && trueValuesStamp.isAllOnes()) { - /* - * This is the vector equivalent of (condition ? true : false), we don't need to blend. - * The input mask is all we need. - */ - return forZ; + if (!SimdStamp.isOpmask(fromStamp)) { + SimdStamp falseValuesStamp = (SimdStamp) forX.stamp(NodeView.from(tool)); + SimdStamp trueValuesStamp = (SimdStamp) forY.stamp(NodeView.from(tool)); + if (falseValuesStamp.isAllZeros() && trueValuesStamp.isAllOnes()) { + /* + * This is the vector equivalent of (condition ? true : false), we don't need to + * blend. The input mask is all we need. + */ + return forZ; + } } return this;