base/asm-common.h: Add register-name conversions for ARM64 registers.
authorMark Wooding <mdw@distorted.org.uk>
Wed, 20 Oct 2021 12:06:57 +0000 (13:06 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 1 May 2022 17:54:54 +0000 (18:54 +0100)
Not using these yet, but maybe some time.

base/asm-common.h

index 323f2e8..cfa056f 100644 (file)
@@ -1023,6 +1023,319 @@ name:
        ext     \vd\().16b, \vn\().16b, \vz\().16b, #\nbit >> 3
 .endm
 
+// Register class conversions.
+#define _GPNUM_w0   0
+#define _GPNUM_w1   1
+#define _GPNUM_w2   2
+#define _GPNUM_w3   3
+#define _GPNUM_w4   4
+#define _GPNUM_w5   5
+#define _GPNUM_w6   6
+#define _GPNUM_w7   7
+#define _GPNUM_w8   8
+#define _GPNUM_w9   9
+#define _GPNUM_w10 10
+#define _GPNUM_w11 11
+#define _GPNUM_w12 12
+#define _GPNUM_w13 13
+#define _GPNUM_w14 14
+#define _GPNUM_w15 15
+#define _GPNUM_w16 16
+#define _GPNUM_w17 17
+#define _GPNUM_w18 18
+#define _GPNUM_w19 19
+#define _GPNUM_w20 20
+#define _GPNUM_w21 21
+#define _GPNUM_w22 22
+#define _GPNUM_w23 23
+#define _GPNUM_w24 24
+#define _GPNUM_w25 25
+#define _GPNUM_w26 26
+#define _GPNUM_w27 27
+#define _GPNUM_w28 28
+#define _GPNUM_w29 29
+#define _GPNUM_w30 30
+#define _GPNUM_wzr zr
+#define _GPNUM_wsp sp
+
+#define _GPNUM_x0   0
+#define _GPNUM_x1   1
+#define _GPNUM_x2   2
+#define _GPNUM_x3   3
+#define _GPNUM_x4   4
+#define _GPNUM_x5   5
+#define _GPNUM_x6   6
+#define _GPNUM_x7   7
+#define _GPNUM_x8   8
+#define _GPNUM_x9   9
+#define _GPNUM_x10 10
+#define _GPNUM_x11 11
+#define _GPNUM_x12 12
+#define _GPNUM_x13 13
+#define _GPNUM_x14 14
+#define _GPNUM_x15 15
+#define _GPNUM_x16 16
+#define _GPNUM_x17 17
+#define _GPNUM_x18 18
+#define _GPNUM_x19 19
+#define _GPNUM_x20 20
+#define _GPNUM_x21 21
+#define _GPNUM_x22 22
+#define _GPNUM_x23 23
+#define _GPNUM_x24 24
+#define _GPNUM_x25 25
+#define _GPNUM_x26 26
+#define _GPNUM_x27 27
+#define _GPNUM_x28 28
+#define _GPNUM_x29 29
+#define _GPNUM_x30 30
+#define _GPNUM_xzr zr
+#define _GPNUM_sp  sp
+#define _GPNUM_xsp sp
+#define xsp sp
+
+#define _VNUM_b0   0
+#define _VNUM_b1   1
+#define _VNUM_b2   2
+#define _VNUM_b3   3
+#define _VNUM_b4   4
+#define _VNUM_b5   5
+#define _VNUM_b6   6
+#define _VNUM_b7   7
+#define _VNUM_b8   8
+#define _VNUM_b9   9
+#define _VNUM_b10 10
+#define _VNUM_b11 11
+#define _VNUM_b12 12
+#define _VNUM_b13 13
+#define _VNUM_b14 14
+#define _VNUM_b15 15
+#define _VNUM_b16 16
+#define _VNUM_b17 17
+#define _VNUM_b18 18
+#define _VNUM_b19 19
+#define _VNUM_b20 20
+#define _VNUM_b21 21
+#define _VNUM_b22 22
+#define _VNUM_b23 23
+#define _VNUM_b24 24
+#define _VNUM_b25 25
+#define _VNUM_b26 26
+#define _VNUM_b27 27
+#define _VNUM_b28 28
+#define _VNUM_b29 29
+#define _VNUM_b30 30
+#define _VNUM_b31 31
+
+#define _VNUM_h0   0
+#define _VNUM_h1   1
+#define _VNUM_h2   2
+#define _VNUM_h3   3
+#define _VNUM_h4   4
+#define _VNUM_h5   5
+#define _VNUM_h6   6
+#define _VNUM_h7   7
+#define _VNUM_h8   8
+#define _VNUM_h9   9
+#define _VNUM_h10 10
+#define _VNUM_h11 11
+#define _VNUM_h12 12
+#define _VNUM_h13 13
+#define _VNUM_h14 14
+#define _VNUM_h15 15
+#define _VNUM_h16 16
+#define _VNUM_h17 17
+#define _VNUM_h18 18
+#define _VNUM_h19 19
+#define _VNUM_h20 20
+#define _VNUM_h21 21
+#define _VNUM_h22 22
+#define _VNUM_h23 23
+#define _VNUM_h24 24
+#define _VNUM_h25 25
+#define _VNUM_h26 26
+#define _VNUM_h27 27
+#define _VNUM_h28 28
+#define _VNUM_h29 29
+#define _VNUM_h30 30
+#define _VNUM_h31 31
+
+#define _VNUM_s0   0
+#define _VNUM_s1   1
+#define _VNUM_s2   2
+#define _VNUM_s3   3
+#define _VNUM_s4   4
+#define _VNUM_s5   5
+#define _VNUM_s6   6
+#define _VNUM_s7   7
+#define _VNUM_s8   8
+#define _VNUM_s9   9
+#define _VNUM_s10 10
+#define _VNUM_s11 11
+#define _VNUM_s12 12
+#define _VNUM_s13 13
+#define _VNUM_s14 14
+#define _VNUM_s15 15
+#define _VNUM_s16 16
+#define _VNUM_s17 17
+#define _VNUM_s18 18
+#define _VNUM_s19 19
+#define _VNUM_s20 20
+#define _VNUM_s21 21
+#define _VNUM_s22 22
+#define _VNUM_s23 23
+#define _VNUM_s24 24
+#define _VNUM_s25 25
+#define _VNUM_s26 26
+#define _VNUM_s27 27
+#define _VNUM_s28 28
+#define _VNUM_s29 29
+#define _VNUM_s30 30
+#define _VNUM_s31 31
+
+#define _VNUM_d0   0
+#define _VNUM_d1   1
+#define _VNUM_d2   2
+#define _VNUM_d3   3
+#define _VNUM_d4   4
+#define _VNUM_d5   5
+#define _VNUM_d6   6
+#define _VNUM_d7   7
+#define _VNUM_d8   8
+#define _VNUM_d9   9
+#define _VNUM_d10 10
+#define _VNUM_d11 11
+#define _VNUM_d12 12
+#define _VNUM_d13 13
+#define _VNUM_d14 14
+#define _VNUM_d15 15
+#define _VNUM_d16 16
+#define _VNUM_d17 17
+#define _VNUM_d18 18
+#define _VNUM_d19 19
+#define _VNUM_d20 20
+#define _VNUM_d21 21
+#define _VNUM_d22 22
+#define _VNUM_d23 23
+#define _VNUM_d24 24
+#define _VNUM_d25 25
+#define _VNUM_d26 26
+#define _VNUM_d27 27
+#define _VNUM_d28 28
+#define _VNUM_d29 29
+#define _VNUM_d30 30
+#define _VNUM_d31 31
+
+#define _VNUM_q0   0
+#define _VNUM_q1   1
+#define _VNUM_q2   2
+#define _VNUM_q3   3
+#define _VNUM_q4   4
+#define _VNUM_q5   5
+#define _VNUM_q6   6
+#define _VNUM_q7   7
+#define _VNUM_q8   8
+#define _VNUM_q9   9
+#define _VNUM_q10 10
+#define _VNUM_q11 11
+#define _VNUM_q12 12
+#define _VNUM_q13 13
+#define _VNUM_q14 14
+#define _VNUM_q15 15
+#define _VNUM_q16 16
+#define _VNUM_q17 17
+#define _VNUM_q18 18
+#define _VNUM_q19 19
+#define _VNUM_q20 20
+#define _VNUM_q21 21
+#define _VNUM_q22 22
+#define _VNUM_q23 23
+#define _VNUM_q24 24
+#define _VNUM_q25 25
+#define _VNUM_q26 26
+#define _VNUM_q27 27
+#define _VNUM_q28 28
+#define _VNUM_q29 29
+#define _VNUM_q30 30
+#define _VNUM_q31 31
+
+#define _VNUM_v0   0
+#define _VNUM_v1   1
+#define _VNUM_v2   2
+#define _VNUM_v3   3
+#define _VNUM_v4   4
+#define _VNUM_v5   5
+#define _VNUM_v6   6
+#define _VNUM_v7   7
+#define _VNUM_v8   8
+#define _VNUM_v9   9
+#define _VNUM_v10 10
+#define _VNUM_v11 11
+#define _VNUM_v12 12
+#define _VNUM_v13 13
+#define _VNUM_v14 14
+#define _VNUM_v15 15
+#define _VNUM_v16 16
+#define _VNUM_v17 17
+#define _VNUM_v18 18
+#define _VNUM_v19 19
+#define _VNUM_v20 20
+#define _VNUM_v21 21
+#define _VNUM_v22 22
+#define _VNUM_v23 23
+#define _VNUM_v24 24
+#define _VNUM_v25 25
+#define _VNUM_v26 26
+#define _VNUM_v27 27
+#define _VNUM_v28 28
+#define _VNUM_v29 29
+#define _VNUM_v30 30
+#define _VNUM_v31 31
+
+#define _VNUM_z0   0
+#define _VNUM_z1   1
+#define _VNUM_z2   2
+#define _VNUM_z3   3
+#define _VNUM_z4   4
+#define _VNUM_z5   5
+#define _VNUM_z6   6
+#define _VNUM_z7   7
+#define _VNUM_z8   8
+#define _VNUM_z9   9
+#define _VNUM_z10 10
+#define _VNUM_z11 11
+#define _VNUM_z12 12
+#define _VNUM_z13 13
+#define _VNUM_z14 14
+#define _VNUM_z15 15
+#define _VNUM_z16 16
+#define _VNUM_z17 17
+#define _VNUM_z18 18
+#define _VNUM_z19 19
+#define _VNUM_z20 20
+#define _VNUM_z21 21
+#define _VNUM_z22 22
+#define _VNUM_z23 23
+#define _VNUM_z24 24
+#define _VNUM_z25 25
+#define _VNUM_z26 26
+#define _VNUM_z27 27
+#define _VNUM_z28 28
+#define _VNUM_z29 29
+#define _VNUM_z30 30
+#define _VNUM_z31 31
+
+#define _RDECOR(cls, pre, r) GLUE(pre, _##cls##NUM_##r)
+#define W(r) _RDECOR(GP, w, r)
+#define X(r) _RDECOR(GP, x, r)
+#define B(r) _RDECOR(V, b, r)
+#define H(r) _RDECOR(V, h, r)
+#define S(r) _RDECOR(V, s, r)
+#define D(r) _RDECOR(V, d, r)
+#define Q(r) _RDECOR(V, q, r)
+#define V(r) _RDECOR(V, v, r)
+#define Z(r) _RDECOR(V, z, r)
+
 // Stack management and unwinding.
 .macro setfp   fp=x29, offset=0
   // If you're just going through the motions with a fixed-size stack frame,