Skip to content

Commit 7d49d82

Browse files
CopilotHMBSbige
andcommitted
Remove unnecessary local variables where base address is only used once
Co-authored-by: HMBSbige <19153265+HMBSbige@users.noreply.github.com>
1 parent 84a9fdd commit 7d49d82

File tree

11 files changed

+21
-46
lines changed

11 files changed

+21
-46
lines changed

src/CryptoBase/FastUtils.cs

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -205,25 +205,17 @@ public static void Xor16(ReadOnlySpan<byte> stream, ReadOnlySpan<byte> source, S
205205
{
206206
if (Vector128.IsHardwareAccelerated)
207207
{
208-
ref byte streamRef = ref stream.GetReference();
209-
ref byte sourceRef = ref source.GetReference();
210-
ref byte destRef = ref destination.GetReference();
211-
212-
ref Vector128<byte> v0 = ref Unsafe.As<byte, Vector128<byte>>(ref streamRef);
213-
ref Vector128<byte> v1 = ref Unsafe.As<byte, Vector128<byte>>(ref sourceRef);
214-
ref Vector128<byte> dst = ref Unsafe.As<byte, Vector128<byte>>(ref destRef);
208+
ref Vector128<byte> v0 = ref Unsafe.As<byte, Vector128<byte>>(ref stream.GetReference());
209+
ref Vector128<byte> v1 = ref Unsafe.As<byte, Vector128<byte>>(ref source.GetReference());
210+
ref Vector128<byte> dst = ref Unsafe.As<byte, Vector128<byte>>(ref destination.GetReference());
215211

216212
dst = v0 ^ v1;
217213
}
218214
else
219215
{
220-
ref byte streamRef = ref stream.GetReference();
221-
ref byte sourceRef = ref source.GetReference();
222-
ref byte destRef = ref destination.GetReference();
223-
224-
ref UInt128 v0 = ref Unsafe.As<byte, UInt128>(ref streamRef);
225-
ref UInt128 v1 = ref Unsafe.As<byte, UInt128>(ref sourceRef);
226-
ref UInt128 dst = ref Unsafe.As<byte, UInt128>(ref destRef);
216+
ref UInt128 v0 = ref Unsafe.As<byte, UInt128>(ref stream.GetReference());
217+
ref UInt128 v1 = ref Unsafe.As<byte, UInt128>(ref source.GetReference());
218+
ref UInt128 dst = ref Unsafe.As<byte, UInt128>(ref destination.GetReference());
227219

228220
dst = v0 ^ v1;
229221
}
@@ -237,21 +229,15 @@ public static void Xor16(Span<byte> source, ReadOnlySpan<byte> stream)
237229
{
238230
if (Vector128.IsHardwareAccelerated)
239231
{
240-
ref byte sourceRef = ref source.GetReference();
241-
ref byte streamRef = ref stream.GetReference();
242-
243-
ref Vector128<byte> v0 = ref Unsafe.As<byte, Vector128<byte>>(ref sourceRef);
244-
ref Vector128<byte> v1 = ref Unsafe.As<byte, Vector128<byte>>(ref streamRef);
232+
ref Vector128<byte> v0 = ref Unsafe.As<byte, Vector128<byte>>(ref source.GetReference());
233+
ref Vector128<byte> v1 = ref Unsafe.As<byte, Vector128<byte>>(ref stream.GetReference());
245234

246235
v0 ^= v1;
247236
}
248237
else
249238
{
250-
ref byte sourceRef = ref source.GetReference();
251-
ref byte streamRef = ref stream.GetReference();
252-
253-
ref UInt128 v0 = ref Unsafe.As<byte, UInt128>(ref sourceRef);
254-
ref UInt128 v1 = ref Unsafe.As<byte, UInt128>(ref streamRef);
239+
ref UInt128 v0 = ref Unsafe.As<byte, UInt128>(ref source.GetReference());
240+
ref UInt128 v1 = ref Unsafe.As<byte, UInt128>(ref stream.GetReference());
255241

256242
v0 ^= v1;
257243
}

src/CryptoBase/Macs/GHash/GHashX86.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ public GHashX86(scoped ReadOnlySpan<byte> key)
1818
{
1919
ArgumentOutOfRangeException.ThrowIfLessThan(key.Length, KeySize, nameof(key));
2020

21-
ref byte keyRef = ref key.GetReference();
22-
ref Vector128<byte> v = ref Unsafe.As<byte, Vector128<byte>>(ref keyRef);
21+
ref Vector128<byte> v = ref Unsafe.As<byte, Vector128<byte>>(ref key.GetReference());
2322
_key = v.ReverseEndianness128();
2423

2524
Reset();
@@ -29,8 +28,7 @@ public GHashX86(scoped ReadOnlySpan<byte> key)
2928
private void GFMul(scoped ReadOnlySpan<byte> x)
3029
{
3130
Vector128<ulong> a = _key.AsUInt64();
32-
ref byte xRef = ref x.GetReference();
33-
Vector128<ulong> b = (Unsafe.As<byte, Vector128<byte>>(ref xRef).ReverseEndianness128() ^ _buffer).AsUInt64();
31+
Vector128<ulong> b = (Unsafe.As<byte, Vector128<byte>>(ref x.GetReference()).ReverseEndianness128() ^ _buffer).AsUInt64();
3432

3533
Vector128<uint> tmp3 = Pclmulqdq.CarrylessMultiply(a, b, 0x00).AsUInt32();
3634
Vector128<uint> tmp4 = Pclmulqdq.CarrylessMultiply(a, b, 0x10).AsUInt32();

src/CryptoBase/SymmetricCryptos/BlockCryptoModes/CTR/CTR128StreamMode.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@ private void UpdateCore(ReadOnlySpan<byte> source, Span<byte> destination)
5454
{
5555
crypto.Encrypt(counter, stream);
5656

57-
ref byte counterRef = ref counter.GetReference();
58-
ref UInt128 c = ref Unsafe.As<byte, UInt128>(ref counterRef);
57+
ref UInt128 c = ref Unsafe.As<byte, UInt128>(ref counter.GetReference());
5958
c = BinaryPrimitives.ReverseEndianness(BinaryPrimitives.ReverseEndianness(c) + 1);
6059
}
6160

src/CryptoBase/SymmetricCryptos/BlockCryptoModes/CTR/CTR128StreamModeBlock16X86.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ public CTR128StreamModeBlock16X86(IBlockCrypto crypto, ReadOnlySpan<byte> iv)
3535
_counter = ArrayPool<byte>.Shared.Rent(BlockSize16);
3636
_keyStream = ArrayPool<byte>.Shared.Rent(BlockSize16);
3737

38-
ref byte ivRef = ref iv.GetReference();
39-
_iCounter = FastUtils.BroadcastVector128ToVector256(ref ivRef).ReverseEndianness128().IncUpper128Le();
38+
_iCounter = FastUtils.BroadcastVector128ToVector256(ref iv.GetReference()).ReverseEndianness128().IncUpper128Le();
4039

4140
Reset();
4241
}

src/CryptoBase/SymmetricCryptos/BlockCryptoModes/CTR/CTR128StreamModeBlock4X86.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ public CTR128StreamModeBlock4X86(IBlockCrypto crypto, ReadOnlySpan<byte> iv)
3232
_counter = ArrayPool<byte>.Shared.Rent(BlockSize4);
3333
_keyStream = ArrayPool<byte>.Shared.Rent(BlockSize4);
3434

35-
ref byte ivRef = ref iv.GetReference();
36-
ref Vector128<byte> v = ref Unsafe.As<byte, Vector128<byte>>(ref ivRef);
35+
ref Vector128<byte> v = ref Unsafe.As<byte, Vector128<byte>>(ref iv.GetReference());
3736
_iCounter = v.ReverseEndianness128();
3837

3938
Reset();

src/CryptoBase/SymmetricCryptos/BlockCryptoModes/CTR/CTR128StreamModeBlock8AvxX86.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ public CTR128StreamModeBlock8AvxX86(IBlockCrypto crypto, ReadOnlySpan<byte> iv)
3232
_counter = ArrayPool<byte>.Shared.Rent(BlockSize8);
3333
_keyStream = ArrayPool<byte>.Shared.Rent(BlockSize8);
3434

35-
ref byte ivRef = ref iv.GetReference();
36-
_iCounter = FastUtils.BroadcastVector128ToVector256(ref ivRef).ReverseEndianness128().IncUpper128Le();
35+
_iCounter = FastUtils.BroadcastVector128ToVector256(ref iv.GetReference()).ReverseEndianness128().IncUpper128Le();
3736

3837
Reset();
3938
}

src/CryptoBase/SymmetricCryptos/BlockCryptoModes/CTR/CTR128StreamModeBlock8X86.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ public CTR128StreamModeBlock8X86(IBlockCrypto crypto, ReadOnlySpan<byte> iv)
3535
_counter = ArrayPool<byte>.Shared.Rent(BlockSize8);
3636
_keyStream = ArrayPool<byte>.Shared.Rent(BlockSize8);
3737

38-
ref byte ivRef = ref iv.GetReference();
39-
ref Vector128<byte> v = ref Unsafe.As<byte, Vector128<byte>>(ref ivRef);
38+
ref Vector128<byte> v = ref Unsafe.As<byte, Vector128<byte>>(ref iv.GetReference());
4039
_iCounter = v.ReverseEndianness128();
4140

4241
Reset();

src/CryptoBase/SymmetricCryptos/BlockCryptoModes/CTR/CTR128StreamModeX86.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ public CTR128StreamModeX86(IBlockCrypto crypto, ReadOnlySpan<byte> iv)
2222

2323
_internalBlockCrypto = crypto;
2424

25-
ref byte ivRef = ref iv.GetReference();
26-
ref Vector128<byte> v = ref Unsafe.As<byte, Vector128<byte>>(ref ivRef);
25+
ref Vector128<byte> v = ref Unsafe.As<byte, Vector128<byte>>(ref iv.GetReference());
2726
_iCounter = v.ReverseEndianness128();
2827

2928
Reset();

src/CryptoBase/SymmetricCryptos/BlockCryptoModes/Xts/XtsMode.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ public XtsMode(IBlockCrypto dataCrypto, IBlockCrypto tweakCrypto, ReadOnlySpan<b
2121

2222
_dataCrypto = dataCrypto;
2323
_tweakCrypto = tweakCrypto;
24-
ref byte ivRef = ref iv.GetReference();
25-
_iv = Unsafe.ReadUnaligned<Vector128<byte>>(ref ivRef);
24+
_iv = Unsafe.ReadUnaligned<Vector128<byte>>(ref iv.GetReference());
2625
}
2726

2827
[SkipLocalsInit]

src/CryptoBase/SymmetricCryptos/StreamCryptos/ChaCha20Utils.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,7 @@ public static void UpdateKeyStream(Span<uint> state, Span<byte> stream, byte rou
136136
[MethodImpl(MethodImplOptions.AggressiveInlining)]
137137
public static void IncrementCounterOriginal(Span<uint> state)
138138
{
139-
ref uint stateRef = ref state.GetReference();
140-
++Unsafe.As<uint, ulong>(ref Unsafe.Add(ref stateRef, 12));
139+
++Unsafe.As<uint, ulong>(ref Unsafe.Add(ref state.GetReference(), 12));
141140
}
142141

143142
[MethodImpl(MethodImplOptions.AggressiveInlining)]

0 commit comments

Comments
 (0)