Skip to content

Commit b9e3e41

Browse files
committed
remove explicit discriminants
1 parent 6407023 commit b9e3e41

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

library/core/src/hint.rs

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -842,15 +842,26 @@ pub enum Locality {
842842
/// Data is expected to be reused eventually.
843843
///
844844
/// Typically prefetches into L3 cache (if the CPU supports it).
845-
L3 = 1,
845+
L3,
846846
/// Data is expected to be reused in the near future.
847847
///
848848
/// Typically prefetches into L2 cache.
849-
L2 = 2,
849+
L2,
850850
/// Data is expected to be reused very soon.
851851
///
852852
/// Typically prefetches into L1 cache.
853-
L1 = 3,
853+
L1,
854+
}
855+
856+
impl Locality {
857+
/// Convert to the constant that LLVM associates with a locality.
858+
const fn to_llvm(self) -> i32 {
859+
match self {
860+
Self::L3 => 1,
861+
Self::L2 => 2,
862+
Self::L1 => 3,
863+
}
864+
}
854865
}
855866

856867
/// Prefetch the cache line containing `ptr` for a future read.
@@ -882,9 +893,9 @@ pub enum Locality {
882893
#[unstable(feature = "hint_prefetch", issue = "146941")]
883894
pub const fn prefetch_read<T>(ptr: *const T, locality: Locality) {
884895
match locality {
885-
Locality::L3 => intrinsics::prefetch_read_data::<T, { Locality::L3 as i32 }>(ptr),
886-
Locality::L2 => intrinsics::prefetch_read_data::<T, { Locality::L2 as i32 }>(ptr),
887-
Locality::L1 => intrinsics::prefetch_read_data::<T, { Locality::L1 as i32 }>(ptr),
896+
Locality::L3 => intrinsics::prefetch_read_data::<T, { Locality::L3.to_llvm() }>(ptr),
897+
Locality::L2 => intrinsics::prefetch_read_data::<T, { Locality::L2.to_llvm() }>(ptr),
898+
Locality::L1 => intrinsics::prefetch_read_data::<T, { Locality::L1.to_llvm() }>(ptr),
888899
}
889900
}
890901

@@ -919,9 +930,9 @@ pub const fn prefetch_read_non_temporal<T>(ptr: *const T, locality: Locality) {
919930
#[unstable(feature = "hint_prefetch", issue = "146941")]
920931
pub const fn prefetch_write<T>(ptr: *mut T, locality: Locality) {
921932
match locality {
922-
Locality::L3 => intrinsics::prefetch_write_data::<T, { Locality::L3 as i32 }>(ptr),
923-
Locality::L2 => intrinsics::prefetch_write_data::<T, { Locality::L2 as i32 }>(ptr),
924-
Locality::L1 => intrinsics::prefetch_write_data::<T, { Locality::L1 as i32 }>(ptr),
933+
Locality::L3 => intrinsics::prefetch_write_data::<T, { Locality::L3.to_llvm() }>(ptr),
934+
Locality::L2 => intrinsics::prefetch_write_data::<T, { Locality::L2.to_llvm() }>(ptr),
935+
Locality::L1 => intrinsics::prefetch_write_data::<T, { Locality::L1.to_llvm() }>(ptr),
925936
}
926937
}
927938

@@ -956,8 +967,8 @@ pub const fn prefetch_write_non_temporal<T>(ptr: *const T, locality: Locality) {
956967
#[unstable(feature = "hint_prefetch", issue = "146941")]
957968
pub const fn prefetch_read_instruction<T>(ptr: *const T, locality: Locality) {
958969
match locality {
959-
Locality::L3 => intrinsics::prefetch_read_instruction::<T, { Locality::L3 as i32 }>(ptr),
960-
Locality::L2 => intrinsics::prefetch_read_instruction::<T, { Locality::L2 as i32 }>(ptr),
961-
Locality::L1 => intrinsics::prefetch_read_instruction::<T, { Locality::L1 as i32 }>(ptr),
970+
Locality::L3 => intrinsics::prefetch_read_instruction::<T, { Locality::L3.to_llvm() }>(ptr),
971+
Locality::L2 => intrinsics::prefetch_read_instruction::<T, { Locality::L2.to_llvm() }>(ptr),
972+
Locality::L1 => intrinsics::prefetch_read_instruction::<T, { Locality::L1.to_llvm() }>(ptr),
962973
}
963974
}

0 commit comments

Comments
 (0)