@@ -4413,17 +4413,37 @@ class Compiler
44134413 void impResetLeaveBlock (BasicBlock* block, unsigned jmpAddr);
44144414 GenTree* impTypeIsAssignable (GenTree* typeTo, GenTree* typeFrom);
44154415
4416+ // Mirrors StringComparison.cs
4417+ enum StringComparison
4418+ {
4419+ Ordinal = 4 ,
4420+ OrdinalIgnoreCase = 5
4421+ };
4422+ enum StringComparisonJoint
4423+ {
4424+ Eq, // (d1 == cns1) && (s2 == cns2)
4425+ Xor, // (d1 ^ cns1) | (s2 ^ cns2)
4426+ };
44164427 GenTree* impStringEqualsOrStartsWith (bool startsWith, CORINFO_SIG_INFO * sig, unsigned methodFlags);
44174428 GenTree* impSpanEqualsOrStartsWith (bool startsWith, CORINFO_SIG_INFO * sig, unsigned methodFlags);
4418- GenTree* impExpandHalfConstEquals (GenTreeLclVar* data,
4419- GenTree* lengthFld,
4420- bool checkForNull,
4421- bool startsWith,
4422- WCHAR * cnsData,
4423- int len,
4424- int dataOffset);
4425- GenTree* impExpandHalfConstEqualsSWAR (GenTreeLclVar* data, WCHAR * cns, int len, int dataOffset);
4426- GenTree* impExpandHalfConstEqualsSIMD (GenTreeLclVar* data, WCHAR * cns, int len, int dataOffset);
4429+ GenTree* impExpandHalfConstEquals (GenTreeLclVar* data,
4430+ GenTree* lengthFld,
4431+ bool checkForNull,
4432+ bool startsWith,
4433+ WCHAR * cnsData,
4434+ int len,
4435+ int dataOffset,
4436+ StringComparison cmpMode);
4437+ GenTree* impCreateCompareInd (GenTreeLclVar* obj,
4438+ var_types type,
4439+ ssize_t offset,
4440+ ssize_t value,
4441+ StringComparison ignoreCase,
4442+ StringComparisonJoint joint = Eq);
4443+ GenTree* impExpandHalfConstEqualsSWAR (
4444+ GenTreeLclVar* data, WCHAR * cns, int len, int dataOffset, StringComparison cmpMode);
4445+ GenTree* impExpandHalfConstEqualsSIMD (
4446+ GenTreeLclVar* data, WCHAR * cns, int len, int dataOffset, StringComparison cmpMode);
44274447 GenTreeStrCon* impGetStrConFromSpan (GenTree* span);
44284448
44294449 GenTree* impIntrinsic (GenTree* newobjThis,
0 commit comments