Clean up cheri-builtins.h

This file contained three things:

 - The old names from CheriBSD (based on the CHERI MIPS mnemonics)
   wrapping the macros.
 - A bunch of inline assembly functions that replicated things that we
   have builtins for.
 - A bunch of random things that we don't use with silly names.

This commit:

 - Deprecates the old CHERI MIPS names.
 - Adds the modern names that match the Clang header.
 - Removes a few that were never part of CHERIoT entirely (any code that
   used them probably crashed the compiler and definitely didn't work).
 - Adds the missing ones.
diff --git a/sdk/include/cheri-builtins.h b/sdk/include/cheri-builtins.h
index 59d9618..f8e106d 100644
--- a/sdk/include/cheri-builtins.h
+++ b/sdk/include/cheri-builtins.h
@@ -25,100 +25,92 @@
 #		include <stddef.h>
 #		include <stdint.h>
 
-#		define cr_read(name)                                                  \
-			({                                                                 \
-				void *val;                                                     \
-				__asm __volatile("cmove %0, " #name : "=C"(val));              \
-				val;                                                           \
-			})
-
-#		define cr_write(name, val)                                            \
-			({ __asm __volatile("cmove " #name ", %0" ::"C"(val)); })
-
-static inline void mem_cpy64(volatile uint64_t *dst, volatile uint64_t *p)
-{
-	volatile void **_dst = (volatile void **)dst;
-	volatile void **_p   = (volatile void **)p;
-
-	*_dst = *_p;
-}
-
+// Old deprecated macros.  Here for compatibility, hopefully we can remove them
+// soon.
 #		define cgetlen(foo) __builtin_cheri_length_get(foo)
+#		pragma clang deprecated(cgetlen, "use cheri_length_get instead")
+
 #		define cgetperms(foo) __builtin_cheri_perms_get(foo)
+#		pragma clang deprecated(cgetperms, "use cheri_permissions_get instead")
+
 #		define cgettype(foo) __builtin_cheri_type_get(foo)
+#		pragma clang deprecated(cgettype, "use cheri_type_get instead")
+
 #		define cgettag(foo) __builtin_cheri_tag_get(foo)
-#		define cgetoffset(foo) __builtin_cheri_offset_get(foo)
-#		define csetoffset(a, b) __builtin_cheri_offset_set((a), (b))
+#		pragma clang deprecated(cgettag, "use cheri_tag_get instead")
+
 #		define cincoffset(a, b) __builtin_cheri_offset_increment((a), (b))
+#		pragma clang deprecated(cincoffset,                                   \
+		                         "use cheri_address_increment instead")
+
 #		define cgetaddr(a) __builtin_cheri_address_get(a)
+#		pragma clang deprecated(cgetaddr, "use cheri_address_get instead")
+
 #		define csetaddr(a, b) __builtin_cheri_address_set((a), (b))
+#		pragma clang deprecated(csetaddr, "use cheri_address_set instead")
+
 #		define cgetbase(foo) __builtin_cheri_base_get(foo)
+#		pragma clang deprecated(cgetbase, "use cheri_base_get instead")
+
 #		define candperms(a, b) __builtin_cheri_perms_and((a), (b))
+#		pragma clang deprecated(candperms, "use cheri_permissions_and instead")
+
 #		define cseal(a, b) __builtin_cheri_seal((a), (b))
-#		ifdef FLUTE
-#			define cunseal(a, b)                                              \
-				({                                                             \
-					__auto_type __a   = (a);                                   \
-					__auto_type __b   = (b);                                   \
-					__auto_type __ret = __builtin_cheri_tag_clear(__a);        \
-					if (__builtin_cheri_tag_get(__a) &&                        \
-						__builtin_cheri_tag_get(__b) &&                        \
-						__builtin_cheri_type_get(__a) &&                       \
-						!__builtin_cheri_type_get(__b))                        \
-					{                                                          \
-						__auto_type __type = __builtin_cheri_type_get(__a);    \
-						__auto_type __base = __builtin_cheri_base_get(__b);    \
-						if ((__type >= __base) &&                              \
-							(__type <                                          \
-							 (__base + __builtin_cheri_length_get(__b))))      \
-						{                                                      \
-							__ret = __builtin_cheri_unseal((a), (b));          \
-						}                                                      \
-					}                                                          \
-					__ret;                                                     \
-				})
-#		else
-#			define cunseal(a, b) __builtin_cheri_unseal((a), (b))
-#		endif
+#		pragma clang deprecated(cseal, "use cheri_seal instead")
+
+#		define cunseal(a, b) __builtin_cheri_unseal((a), (b))
+#		pragma clang deprecated(cunseal, "use cheri_unseal instead")
+
 #		define csetbounds(a, b) __builtin_cheri_bounds_set((a), (b))
+#		pragma clang deprecated(csetbounds, "use cheri_bounds_set instead")
+
 #		define csetboundsext(a, b) __builtin_cheri_bounds_set_exact((a), (b))
-#		define ccheckperms(a, b) __builtin_cheri_perms_check((a), (b))
-#		define cchecktype(a, b) __builtin_cheri_type_check((a), (b))
-#		define cbuildcap(a, b) __builtin_cheri_cap_build((a), (b))
-#		define ccopytype(a, b) __builtin_cheri_cap_type_copy((a), (b))
-#		define ccseal(a, b) __builtin_cheri_conditional_seal((a), (b))
+#		pragma clang deprecated(csetboundsext,                                \
+		                         "use cheri_bounds_set_exact instead")
+
 #		define cequalexact(a, b) __builtin_cheri_equal_exact((a), (b))
+#		pragma clang deprecated(cequalexact,                                  \
+		                         "use cheri_is_equal_exact instead")
 
-static inline size_t ctestsubset(void *a, void *b)
-{
-	size_t val;
-	__asm volatile("ctestsubset %0, %1, %2 " : "=r"(val) : "C"(a), "C"(b));
-	return val;
-}
+#		define ctestsubset(a, b) __builtin_cheri_subset_test(a, b)
+#		pragma clang deprecated(ctestsubset, "use cheri_subset_test instead")
 
-static inline size_t creplenalignmask(size_t len)
-{
-	size_t ret;
-	__asm volatile("cram %0, %1" : "=r"(ret) : "r"(len));
-	return ret;
-}
+#		define creplenalignmask(len)                                          \
+			__builtin_cheri_representable_alignment_mask(len)
+#		pragma clang deprecated(                                              \
+		  creplenalignmask, "use cheri_representable_alignment_mask instead")
 
-static inline size_t croundreplen(size_t len)
-{
-	size_t ret;
-	__asm volatile("crrl %0, %1" : "=r"(ret) : "r"(len));
-	return ret;
-}
+#		define croundreplen(len)                                              \
+			__builtin_cheri_round_representable_length(len)
+#		pragma clang deprecated(                                              \
+		  croundreplen, "use cheri_round_representable_length instead")
 
-#		define cspecial_write(csr, val)                                       \
-			({ __asm __volatile("cspecialw " #csr ", %0" ::"C"(val)); })
-
-#		define cspecial_read(csr)                                             \
-			({                                                                 \
-				void *val;                                                     \
-				__asm __volatile("cspecialr %0, " #csr : "=C"(val));           \
-				val;                                                           \
-			})
+#		define cheri_address_get(x) __builtin_cheri_address_get(x)
+#		define cheri_address_set(x, y) __builtin_cheri_address_set((x), (y))
+#		define cheri_address_increment(x, y)                                  \
+			__builtin_cheri_offset_increment((x), (y))
+#		define cheri_base_get(x) __builtin_cheri_base_get(x)
+#		define cheri_top_get(x) __builtin_cheri_top_get(x)
+#		define cheri_length_get(x) __builtin_cheri_length_get(x)
+#		define cheri_tag_clear(x) __builtin_cheri_tag_clear(x)
+#		define cheri_tag_get(x) __builtin_cheri_tag_get(x)
+#		define cheri_is_valid(x) __builtin_cheri_tag_get(x)
+#		define cheri_is_invalid(x) (!__builtin_cheri_tag_get(x))
+#		define cheri_is_equal_exact(x, y) __builtin_cheri_equal_exact((x), (y))
+#		define cheri_is_subset(x, y) __builtin_cheri_subset_test((x), (y))
+#		define cheri_permissions_get(x) __builtin_cheri_perms_get(x)
+#		define cheri_permissions_and(x, y) __builtin_cheri_perms_and((x), (y))
+#		define cheri_type_get(x) __builtin_cheri_type_get(x)
+#		define cheri_seal(a, b) __builtin_cheri_seal((a), (b))
+#		define cheri_unseal(a, b) __builtin_cheri_unseal((a), (b))
+#		define cheri_bounds_set(a, b) __builtin_cheri_bounds_set((a), (b))
+#		define cheri_bounds_set_exact(a, b)                                   \
+			__builtin_cheri_bounds_set_exact((a), (b))
+#		define cheri_subset_test(a, b) __builtin_cheri_subset_test(a, b)
+#		define cheri_representable_alignment_mask(len)                        \
+			__builtin_cheri_representable_alignment_mask(len)
+#		define cheri_round_representable_length(len)                          \
+			__builtin_cheri_round_representable_length(len)
 
 #	endif // __ASSEMBLER__