// SDB-CGEN V2.6.2
#include <ctype.h>
#include <stdio.h>
#include <string.h>

struct kv { const char *name; const char *value; };
static const struct kv kvs[] = {
// gcc -DMAIN=1 cc_arm_64.c ; ./a.out > cc_arm_64.h
	{"arm64", "cc"},
	{"arm64syscall", "cc"},
	{"cc.arm64.arg0", "x0"},
	{"cc.arm64.arg1", "x1"},
	{"cc.arm64.arg2", "x2"},
	{"cc.arm64.arg3", "x3"},
	{"cc.arm64.arg4", "x4"},
	{"cc.arm64.arg5", "x5"},
	{"cc.arm64.arg6", "x6"},
	{"cc.arm64.arg7", "x7"},
	{"cc.arm64.argn", "stack"},
	{"cc.arm64.clobber", "x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x30,v0,v1,v2,v3,v4,v5,v6,v7,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30,v31"},
	{"cc.arm64.fparg0", "{d0,s0,v0,q0}"},
	{"cc.arm64.fparg1", "{d1,s1,v1,q1}"},
	{"cc.arm64.fparg2", "{d2,s2,v2,q2}"},
	{"cc.arm64.fparg3", "{d3,s3,v3,q3}"},
	{"cc.arm64.fparg4", "{d4,s4,v4,q4}"},
	{"cc.arm64.fparg5", "{d5,s5,v5,q5}"},
	{"cc.arm64.fparg6", "{d6,s6,v6,q6}"},
	{"cc.arm64.fparg7", "{d7,s7,v7,q7}"},
	{"cc.arm64.fpret0", "{d0,s0,v0,q0}"},
	{"cc.arm64.preserve", "x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,sp,v8,v9,v10,v11,v12,v13,v14,v15"},
	{"cc.arm64.ret0", "x0"},
	{"cc.arm64.stackalloc", "lower"},
	{"cc.arm64syscall.arg0", "x0"},
	{"cc.arm64syscall.arg1", "x1"},
	{"cc.arm64syscall.arg2", "x2"},
	{"cc.arm64syscall.arg3", "x3"},
	{"cc.arm64syscall.arg4", "x4"},
	{"cc.arm64syscall.arg5", "x5"},
	{"cc.arm64syscall.clobber", "x0"},
	{"cc.arm64syscall.ret0", "x0"},
	{"cc.dlang.arg0", "x0"},
	{"cc.dlang.arg1", "x1"},
	{"cc.dlang.arg2", "x2"},
	{"cc.dlang.arg3", "x3"},
	{"cc.dlang.arg4", "x4"},
	{"cc.dlang.arg5", "x5"},
	{"cc.dlang.arg6", "x6"},
	{"cc.dlang.arg7", "x7"},
	{"cc.dlang.argn", "stack"},
	{"cc.dlang.error", "x21"},
	{"cc.dlang.ret0", "x0"},
	{"cc.dlang.self", "x20"},
	{"cc.dlang.stackalloc", "lower"},
	{"cc.golang.arg0", "x0"},
	{"cc.golang.arg1", "x1"},
	{"cc.golang.arg10", "x10"},
	{"cc.golang.arg11", "x11"},
	{"cc.golang.arg12", "x12"},
	{"cc.golang.arg13", "x13"},
	{"cc.golang.arg14", "x14"},
	{"cc.golang.arg15", "x15"},
	{"cc.golang.arg2", "x2"},
	{"cc.golang.arg3", "x3"},
	{"cc.golang.arg4", "x4"},
	{"cc.golang.arg5", "x5"},
	{"cc.golang.arg6", "x6"},
	{"cc.golang.arg7", "x7"},
	{"cc.golang.arg8", "x8"},
	{"cc.golang.arg9", "x9"},
	{"cc.golang.argn", "stack"},
	{"cc.golang.fparg0", "{d0,s0,v0,q0}"},
	{"cc.golang.fparg1", "{d1,s1,v1,q1}"},
	{"cc.golang.fparg10", "{d10,s10,v10,q10}"},
	{"cc.golang.fparg11", "{d11,s11,v11,q11}"},
	{"cc.golang.fparg12", "{d12,s12,v12,q12}"},
	{"cc.golang.fparg13", "{d13,s13,v13,q13}"},
	{"cc.golang.fparg14", "{d14,s14,v14,q14}"},
	{"cc.golang.fparg15", "{d15,s15,v15,q15}"},
	{"cc.golang.fparg2", "{d2,s2,v2,q2}"},
	{"cc.golang.fparg3", "{d3,s3,v3,q3}"},
	{"cc.golang.fparg4", "{d4,s4,v4,q4}"},
	{"cc.golang.fparg5", "{d5,s5,v5,q5}"},
	{"cc.golang.fparg6", "{d6,s6,v6,q6}"},
	{"cc.golang.fparg7", "{d7,s7,v7,q7}"},
	{"cc.golang.fparg8", "{d8,s8,v8,q8}"},
	{"cc.golang.fparg9", "{d9,s9,v9,q9}"},
	{"cc.golang.fpret0", "{d0,s0,v0,q0}"},
	{"cc.golang.pop", "caller"},
	{"cc.golang.ret0", "x0"},
	{"cc.golang.ret1", "x1"},
	{"cc.golang.ret10", "x10"},
	{"cc.golang.ret11", "x11"},
	{"cc.golang.ret12", "x12"},
	{"cc.golang.ret13", "x13"},
	{"cc.golang.ret14", "x14"},
	{"cc.golang.ret15", "x15"},
	{"cc.golang.ret2", "x2"},
	{"cc.golang.ret3", "x3"},
	{"cc.golang.ret4", "x4"},
	{"cc.golang.ret5", "x5"},
	{"cc.golang.ret6", "x6"},
	{"cc.golang.ret7", "x7"},
	{"cc.golang.ret8", "x8"},
	{"cc.golang.ret9", "x9"},
	{"cc.golang.retn", "16"},
	{"cc.golang.stackalloc", "lower"},
	{"cc.p9.arg0", "x0"},
	{"cc.p9.argn", "stack"},
	{"cc.p9.ret0", "x0"},
	{"cc.p9.stackalloc", "lower"},
	{"cc.swift.arg0", "x0"},
	{"cc.swift.arg1", "x1"},
	{"cc.swift.arg2", "x2"},
	{"cc.swift.arg3", "x3"},
	{"cc.swift.arg4", "x4"},
	{"cc.swift.arg5", "x5"},
	{"cc.swift.arg6", "x6"},
	{"cc.swift.arg7", "x7"},
	{"cc.swift.argn", "stack"},
	{"cc.swift.clobber", "x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x21,x30,v0,v1,v2,v3,v4,v5,v6,v7,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30,v31"},
	{"cc.swift.error", "x21"},
	{"cc.swift.fparg0", "{d0,s0,v0,q0}"},
	{"cc.swift.fparg1", "{d1,s1,v1,q1}"},
	{"cc.swift.fparg2", "{d2,s2,v2,q2}"},
	{"cc.swift.fparg3", "{d3,s3,v3,q3}"},
	{"cc.swift.fparg4", "{d4,s4,v4,q4}"},
	{"cc.swift.fparg5", "{d5,s5,v5,q5}"},
	{"cc.swift.fparg6", "{d6,s6,v6,q6}"},
	{"cc.swift.fparg7", "{d7,s7,v7,q7}"},
	{"cc.swift.fpret0", "{d0,s0,v0,q0}"},
	{"cc.swift.preserve", "x19,x20,x22,x23,x24,x25,x26,x27,x28,x29,sp,v8,v9,v10,v11,v12,v13,v14,v15"},
	{"cc.swift.ret0", "x0"},
	{"cc.swift.self", "x20"},
	{"cc.swift.stackalloc", "lower"},
	{"default.cc", "arm64"},
	{"dlang", "cc"},
	{"golang", "cc"},
	{"p9", "cc"},
	{"swift", "cc"},
  {NULL, NULL}
};
typedef int (*GperfForeachCallback)(void *user, const char *k, const char *v);
int gperf_cc_arm_64_foreach(GperfForeachCallback cb, void *user) {
  int i = 0; while (kvs[i].name) {
  cb (user, kvs[i].name, kvs[i].value);
  i++;}
  return 0;
}
const char *gperf_cc_arm_64_get(const char *s) {
  int i = 0; while (kvs[i].name) {
  if (!strcmp (s, kvs[i].name)) return kvs[i].value;
  i++;}
  return NULL;
}
#define sdb_hash_c_cc_arm_64(x,y) gperf_cc_arm_64_hash(x)
const unsigned int gperf_cc_arm_64_hash(const char *s) {
  int sum = strlen (s);
  while (*s) { sum += *s; s++; }
  return sum;
}
struct {const char *name;void *get;void *hash;void *foreach;} gperf_cc_arm_64 = {
  .name = "cc-arm-64",
  .get = &gperf_cc_arm_64_get,
  .hash = &gperf_cc_arm_64_hash,
  .foreach = &gperf_cc_arm_64_foreach
};

#if MAIN
int main () {
	const char *s = ((char*(*)(char*))gperf_cc_arm_64.get)("foo");
	printf ("%s\n", s);
}
#endif
