SYSLIB0055: 부호 있는 매개변수가 있는 AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* 메소드는 더 이상 사용되지 않음
.NET 9부터 부호 있는 정수를 허용하는 다음 메서드는 더 이상 사용되지 않습니다.
- AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(Vector64<Int64>, Byte)
- AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(Vector64<Int16>, Byte)
- AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(Vector64<Int32>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<Int16>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<Int64>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(Vector128<Int32>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<SByte>, Vector128<Int16>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<Int16>, Vector128<Int32>, Byte)
- AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<Int32>, Vector128<Int64>, Byte)
코드에서 이러한 메서드를 호출하면 컴파일 시간에 SYSLIB0055
경고가 생성됩니다.
사용 중지 이유
Arm Advanced SIMD UQRSHRN
명령은 부호 없는 포화 협소 연산을 수행합니다. 따라서 결과는 항상 부호가 없습니다. 그런데 영향을 받는 API가 부호 있는 형식을 수락하고 반환했습니다. 즉, 지침 설명이 아닌 API 설명을 따르는 경우 예상대로 작동하지 않았습니다. 또한 기본 구현을 수정하여 부호 있는 포화 협소 연산을 수행하고 부호 있는 결과를 반환할 수 없습니다.
해결 방법
대신 데이터를 부호 있는 형식으로 의도적으로 변환하고 해당하는 부호 없는 오버로드를 호출합니다(예: AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(Vector64<UInt32>, Vector128<UInt64>, Byte)). 그런 다음 의도적으로 결과를 부호 있는 형식으로 변환합니다.
경고 표시 안 함
사용되지 않는 API를 사용해야 하는 경우, 코드 또는 프로젝트 파일에서 경고를 표시하지 않을 수 있습니다.
단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 경고를 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.
// Disable the warning.
#pragma warning disable SYSLIB0055
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0055
프로젝트에서 모든 SYSLIB0055
경고를 표시하지 않으려면 프로젝트 파일에 <NoWarn>
속성을 추가합니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0055</NoWarn>
</PropertyGroup>
</Project>
자세한 내용은 경고 표시 안 함을 참조하세요.
.NET