From 01052811be08444458576dda994d15f8823560ea Mon Sep 17 00:00:00 2001
From: Kimplul <kimi.h.kuparinen@gmail.com>
Date: Tue, 25 Jun 2024 23:25:29 +0300
Subject: initial rewrite to use ejit

+ Doesn't actually link yet due to missing stuff from ejit, will have to
  add them (tomorrow?)
---
 deps/lightening/tests/z_clobber.c | 1145 -------------------------------------
 1 file changed, 1145 deletions(-)
 delete mode 100644 deps/lightening/tests/z_clobber.c

(limited to 'deps/lightening/tests/z_clobber.c')

diff --git a/deps/lightening/tests/z_clobber.c b/deps/lightening/tests/z_clobber.c
deleted file mode 100644
index 7503de7..0000000
--- a/deps/lightening/tests/z_clobber.c
+++ /dev/null
@@ -1,1145 +0,0 @@
-#include "test.h"
-
-/* do not bother about result of operations, only ensure valid arguments
- * and that registers not modified by the operation are not clobbered  */
-
-#define IV0		0x10000
-#define IV1		0x10001
-#define IV2		0x10002
-#define IV3		0x10003
-#define IV4		0x10004
-#define IV5		0x10005
-#define FV0		100.0
-#define FV1		101.0
-#define FV2		102.0
-#define FV3		103.0
-#define FV4		104.0
-#define FV5		105.0
-#define IR0		JIT_R0
-#define IR1		JIT_R1
-#define IR2		JIT_R2
-#define IR3		JIT_V0
-#define IR4		JIT_V1
-#define IR5		JIT_V2
-#define FR0		JIT_F0
-#define FR1		JIT_F1
-#define FR2		JIT_F2
-#define FR3		JIT_F3
-#define FR4		JIT_F4
-#define FR5		JIT_F5
-
-#define setup()							\
-	jit_movi(_jit, JIT_R0, IV0);				\
-	jit_movi(_jit, JIT_R1, IV1);				\
-	jit_movi(_jit, JIT_R2, IV2);				\
-	jit_movi(_jit, JIT_V0, IV3);				\
-	jit_movi(_jit, JIT_V1, IV4);				\
-	jit_movi(_jit, JIT_V2, IV5);
-
-#define setup_f()						\
-	jit_movi_f(_jit, JIT_F0, FV0);				\
-	jit_movi_f(_jit, JIT_F1, FV1);				\
-	jit_movi_f(_jit, JIT_F2, FV2);				\
-	jit_movi_f(_jit, JIT_F3, FV3);				\
-	jit_movi_f(_jit, JIT_F4, FV4);				\
-	jit_movi_f(_jit, JIT_F5, FV5);
-
-#define setup_d()						\
-	jit_movi_d(_jit, JIT_F0, FV0);				\
-	jit_movi_d(_jit, JIT_F1, FV1);				\
-	jit_movi_d(_jit, JIT_F2, FV2);				\
-	jit_movi_d(_jit, JIT_F3, FV3);				\
-	jit_movi_d(_jit, JIT_F4, FV4);				\
-	jit_movi_d(_jit, JIT_F5, FV5);
-
-#define check(label, rn)					\
-{								\
-	jit_reloc_t r = jit_beqi(_jit, IR##rn, IV##rn);		\
-	jit_calli_0(_jit, abort);				\
-	jit_patch_here(_jit, r);				\
-}
-
-#define check1(k, l, i0)					\
-	check(k##l##i0##_0, i0)
-
-#define check2(k, l, i0, i1)					\
-	check(k##l##i0##i1##_0, i0)				\
-	check(k##l##i0##i1##_1, i1)
-
-#define check3(k, l, i0, i1, i2)				\
-	check(k##l##i0##i1##i2##_0, i0)				\
-	check(k##l##i0##i1##i2##_1, i1)				\
-	check(k##l##i0##i1##i2##_2, i2)
-
-#define check4(k, l, i0, i1, i2, i3)				\
-	check(k##l##i0##i1##i2##i3##_0, i0)			\
-	check(k##l##i0##i1##i2##i3##_1, i1)			\
-	check(k##l##i0##i1##i2##i3##_2, i2)			\
-	check(k##l##i0##i1##i2##i3##_3, i3)
-
-#define check5(k, l, i0, i1, i2, i3, i4)			\
-	check(k##l##i0##i1##i2##i3##i4##_0, i0)			\
-	check(k##l##i0##i1##i2##i3##i4##_1, i1)			\
-	check(k##l##i0##i1##i2##i3##i3##_2, i2)			\
-	check(k##l##i0##i1##i2##i3##i4##_3, i3)			\
-	check(k##l##i0##i1##i2##i3##i4##_4, i4)
-
-#define check6(k, l, i0, i1, i2, i3, i4, i5)			\
-	check(k##l##i0##i1##i2##i3##i4##i5##_0, i0)		\
-	check(k##l##i0##i1##i2##i3##i4##i5##_1, i1)		\
-	check(k##l##i0##i1##i2##i3##i3##i5##_2, i2)		\
-	check(k##l##i0##i1##i2##i3##i4##i5##_3, i3)		\
-	check(k##l##i0##i1##i2##i3##i4##i5##_4, i4)		\
-	check(k##l##i0##i1##i2##i3##i4##i5##_5, i5)
-
-/* slightly hacky, lightning only uses JIT_F0-F5, and since all lightening
- * platforms (at least at the moment) support JIT_F6, we can use it as a
- * temporary register to get the value to compare agains in to the beqrf.
- */
-#define checkf(f, label, rn)					\
-{								\
-	jit_movi##f(_jit, JIT_F6, FV##rn);			\
-	jit_reloc_t r = jit_beqr##f(_jit, FR##rn, JIT_F6);	\
-	jit_calli_0(_jit, abort);				\
-	jit_patch_here(_jit, r);				\
-}
-
-#define checkf1(f, k, l, i0)					\
-	checkf(f, f##k##l##i0##_0, i0)
-
-#define checkf2(f, k, l, i0, i1)				\
-	checkf(f, f##k##l##i0##i1##_0, i0)			\
-	checkf(f, f##k##l##i0##i1##_1, i1)
-
-#define checkf3(f, k, l, i0, i1, i2)				\
-	checkf(f, f##k##l##i0##i1##i2##_0, i0)			\
-	checkf(f, f##k##l##i0##i1##i2##_1, i1)			\
-	checkf(f, f##k##l##i0##i1##i2##_2, i2)
-
-#define checkf4(f, k, l, i0, i1, i2, i3)			\
-	checkf(f, f##k##l##i0##i1##i2##i3##_0, i0)		\
-	checkf(f, f##k##l##i0##i1##i2##i3##_1, i1)		\
-	checkf(f, f##k##l##i0##i1##i2##i3##_2, i2)		\
-	checkf(f, f##k##l##i0##i1##i2##i3##_3, i3)
-
-#define checkf5(f, k, l, i0, i1, i2, i3, i4)			\
-	checkf(f, f##k##l##i0##i1##i2##i3##i4##_0, i0)		\
-	checkf(f, f##k##l##i0##i1##i2##i3##i4##_1, i1)		\
-	checkf(f, f##k##l##i0##i1##i2##i3##i3##_2, i2)		\
-	checkf(f, f##k##l##i0##i1##i2##i3##i4##_3, i3)		\
-	checkf(f, f##k##l##i0##i1##i2##i3##i4##_4, i4)
-
-#define checkf6(f, k, l, i0, i1, i2, i3, i4, i5)		\
-	checkf(f, f##k##l##i0##i1##i2##i3##i4##i5##_0, i0)	\
-	checkf(f, f##k##l##i0##i1##i2##i3##i4##i5##_1, i1)	\
-	checkf(f, f##k##l##i0##i1##i2##i3##i3##i5##_2, i2)	\
-	checkf(f, f##k##l##i0##i1##i2##i3##i4##i5##_3, i3)	\
-	checkf(f, f##k##l##i0##i1##i2##i3##i4##i5##_4, i4)	\
-	checkf(f, f##k##l##i0##i1##i2##i3##i4##i5##_5, i5)
-
-#define alui(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_##op##i(_jit, IR##i1, IR##i0, 1);			\
-	check4(i, l, i2, i3, i4, i5)
-
-#define aluic(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_##op##i(_jit, IR##i0, IR##i0, 1);			\
-	check5(ic, l, i1, i2, i3, i4, i5)
-
-#define alur(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_movi(_jit, IR##i1, 1);				\
-	jit_##op##r(_jit, IR##i2, IR##i0, IR##i1);		\
-	check3(r, l, i3, i4, i5)
-
-#define alurc0(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_movi(_jit, IR##i1, 1);				\
-	jit_##op##r(_jit, IR##i0, IR##i0, IR##i1);		\
-	check4(r0, l, i2, i3, i4, i5)
-
-#define alurc1(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_movi(_jit, IR##i1, 1);				\
-	jit_##op##r(_jit, IR##i1, IR##i0, IR##i1);		\
-	check4(r1, l, i2, i3, i4, i5)
-
-#define alurc2(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_##op##r(_jit, IR##i0, IR##i0, IR##i0);		\
-	check5(r2, l, i1, i2, i3, i4, i5)
-
-#define   xalu(l, op, i0, i1, i2, i3, i4, i5)			\
-	  alui(l, op, i0, i1,	i2, i3, i4, i5)			\
-	 aluic(l, op, i0,		i1, i2, i3, i4, i5)	\
-	  alur(l, op, i0, i1, i2,	i3, i4, i5)		\
-	alurc0(l, op, i0, i1,	i2, i3, i4, i5)			\
-	alurc1(l, op, i0, i1,	i2, i3, i4, i5)			\
-	alurc2(l, op, i0,		i1, i2, i3, i4, i5)
-
-#if __ia64__
-#  define alu(l, op)						\
-	 xalu(l, op, 0, 1, 2, 3, 4, 5)
-#else
-#  define alu(l, op)						\
-	 xalu(l, op, 0, 1, 2, 3, 4, 5)				\
-	 xalu(l, op, 1, 2, 3, 4, 5, 0)				\
-	 xalu(l, op, 2, 3, 4, 5, 0, 1)				\
-	 xalu(l, op, 3, 4, 5, 0, 1, 2)				\
-	 xalu(l, op, 4, 5, 0, 1, 2, 3)				\
-	 xalu(l, op, 5, 0, 1, 2, 3, 4)
-#endif
-
-#define fopi(f, l, op, f0, f1, f2, f3, f4, f5)			\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1.0);				\
-	jit_movi##f(_jit, JIT_F6, 1.0);				\
-	jit_##op##r##f(_jit, FR##f1, FR##f0, JIT_F6);		\
-	checkf4(f, i, l, f2, f3, f4, f5)
-
-#define fopic(f, l, op, f0, f1, f2, f3, f4, f5)			\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1.0);				\
-	jit_movi##f(_jit, JIT_F6, 1.0);				\
-	jit_##op##r##f(_jit, FR##f0, FR##f0, JIT_F6);		\
-	checkf5(f, ic, l, f1, f2, f3, f4, f5)
-
-#define fopr(f, l, op, f0, f1, f2, f3, f4, f5)			\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1.0);				\
-	jit_movi##f(_jit, FR##f1, 1.0);				\
-	jit_##op##r##f(_jit, FR##f2, FR##f0, FR##f1);		\
-	checkf3(f, r, l, f3, f4, f5)
-
-#define foprc0(f, l, op, f0, f1, f2, f3, f4, f5)		\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1.0);				\
-	jit_movi##f(_jit, FR##f1, 1.0);				\
-	jit_##op##r##f(_jit, FR##f0, FR##f0, FR##f1);		\
-	checkf4(f, r0, l, f2, f3, f4, f5)
-
-#define foprc1(f, l, op, f0, f1, f2, f3, f4, f5)		\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1.0);				\
-	jit_movi##f(_jit, FR##f1, 1.0);				\
-	jit_##op##r##f(_jit, FR##f1, FR##f0, FR##f1);		\
-	checkf4(f, r1, l, f2, f3, f4, f5)
-
-#define foprc2(f, l, op, f0, f1, f2, f3, f4, f5)		\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1.0);				\
-	jit_##op##r##f(_jit, FR##f0, FR##f0, FR##f0);		\
-	checkf5(f, r2, l, f1, f2, f3, f4, f5)
-
-#define   xfop(f, l, op, f0, f1, f2, f3, f4, f5)		\
-	  fopi(f, l, op, f0, f1, f2,		f3, f4, f5)	\
-	 fopic(f, l, op, f0, f1, f2,		f3, f4, f5)	\
-	  fopr(f, l, op, f0, f1, f2,		f3, f4, f5)	\
-	foprc0(f, l, op, f0, f1,		f2, f3, f4, f5)	\
-	foprc1(f, l, op, f0, f1,		f2, f3, f4, f5)	\
-	foprc2(f, l, op, f0, f1,		f2, f3, f4, f5)
-#if __ia64__
-#  define xxfop(l, op, f, f0, f1, f2, f3, f4, f5)		\
-	   xfop(_f, l, op, f0, f1, f2, f3, f4, f5)
-#else
-#  define xxfop(l, op, f, f0, f1, f2, f3, f4, f5)		\
-	   xfop(_f, l, op, f0, f1, f2, f3, f4, f5)		\
-	   xfop(_d, l, op, f0, f1, f2, f3, f4, f5)
-#endif
-#if __ia64__
-#  define fop(l, op)						\
-	xxfop(l, op, f, 0, 1, 2, 3, 4, 5)
-#else
-#  define fop(l, op)						\
-	xxfop(l, op, f, 0, 1, 2, 3, 4, 5)			\
-	xxfop(l, op, f, 1, 2, 3, 4, 5, 0)			\
-	xxfop(l, op, f, 2, 3, 4, 5, 0, 1)			\
-	xxfop(l, op, f, 3, 4, 5, 0, 1, 2)			\
-	xxfop(l, op, f, 4, 5, 0, 1, 2, 3)			\
-	xxfop(l, op, f, 5, 0, 1, 2, 3, 4)
-#endif
-
-#define aluxii(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_##op##ci(_jit, IR##i1, IR##i0, 1);			\
-	jit_##op##xi(_jit, IR##i2, IR##i0, 1);			\
-	check3(ii, l, i3, i4, i5)
-
-#define aluxir(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_##op##ci(_jit, IR##i1, IR##i0, 1);			\
-	jit_##op##xr(_jit, IR##i2, IR##i0, IR##i1);		\
-	check3(ir, l, i3, i4, i5)
-
-#define aluxri(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_movi(_jit, IR##i1, 1);				\
-	jit_##op##cr(_jit, IR##i2, IR##i0, IR##i1);		\
-	jit_##op##xi(_jit, IR##i0, IR##i1, 1);			\
-	check3(ri, l, i3, i4, i5)
-
-#define aluxrr(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_movi(_jit, IR##i1, 1);				\
-	jit_##op##cr(_jit, IR##i2, IR##i0, IR##i1);		\
-	jit_##op##xr(_jit, IR##i2, IR##i0, IR##i1);		\
-	check3(rr, l, i3, i4, i5)
-
-#define  xalux(l, op, i0, i1, i2, i3, i4, i5)			\
-	aluxii(l, op, i0, i1, i2,	i3, i4, i5)		\
-	aluxir(l, op, i0, i1, i2,	i3, i4, i5)		\
-	aluxri(l, op, i0, i1, i2,	i3, i4, i5)		\
-	aluxrr(l, op, i0, i1, i2,	i3, i4, i5)
-#if __ia64__
-#  define alux(l, op)						\
-	 xalux(l, op, 0, 1, 2, 3, 4, 5)
-#else
-#  define alux(l, op)						\
-	 xalux(l, op, 0, 1, 2, 3, 4, 5)				\
-	 xalux(l, op, 1, 2, 3, 4, 5, 0)				\
-	 xalux(l, op, 2, 3, 4, 5, 0, 1)				\
-	 xalux(l, op, 3, 4, 5, 0, 1, 2)				\
-	 xalux(l, op, 4, 5, 0, 1, 2, 3)				\
-	 xalux(l, op, 5, 0, 1, 2, 3, 4)
-#endif
-
-#define alui_u(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_##op##i_u(_jit, IR##i1, IR##i0, 1);			\
-	check4(i_u, l, i2, i3, i4, i5)
-
-#define aluic_u(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_##op##i_u(_jit, IR##i0, IR##i0, 1);			\
-	check5(ic_u, l, i1, i2, i3, i4, i5)
-
-#define alur_u(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_movi(_jit, IR##i1, 1);				\
-	jit_##op##r_u(_jit, IR##i2, IR##i0, IR##i1);		\
-	check3(r_u, l, i3, i4, i5)
-
-#define alurc0_u(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_movi(_jit, IR##i1, 1);				\
-	jit_##op##r_u(_jit, IR##i0, IR##i0, IR##i1);		\
-	check4(r0_u, l, i2, i3, i4, i5)
-
-#define alurc1_u(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_movi(_jit, IR##i1, 1);				\
-	jit_##op##r_u(_jit, IR##i1, IR##i0, IR##i1);		\
-	check4(r1_u, l, i2, i3, i4, i5)
-
-#define alurc2_u(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_##op##r_u(_jit, IR##i0, IR##i0, IR##i0);		\
-	check5(r2_u, l, i1, i2, i3, i4, i5)
-
-#define   xalu_u(l, op, i0, i1, i2, i3, i4, i5)			\
-	  alui_u(l, op, i0, i1,	i2, i3, i4, i5)			\
-	 aluic_u(l, op, i0,		i1, i2, i3, i4, i5)	\
-	  alur_u(l, op, i0, i1, i2,	i3, i4, i5)		\
-	alurc0_u(l, op, i0, i1,	i2, i3, i4, i5)			\
-	alurc1_u(l, op, i0, i1,	i2, i3, i4, i5)			\
-	alurc2_u(l, op, i0,		i1, i2, i3, i4, i5)
-#if __ia64__
-#  define alu_u(l, op)						\
-	 xalu_u(l, op, 0, 1, 2, 3, 4, 5)
-#else
-#  define alu_u(l, op)						\
-	 xalu_u(l, op, 0, 1, 2, 3, 4, 5)			\
-	 xalu_u(l, op, 1, 2, 3, 4, 5, 0)			\
-	 xalu_u(l, op, 2, 3, 4, 5, 0, 1)			\
-	 xalu_u(l, op, 3, 4, 5, 0, 1, 2)			\
-	 xalu_u(l, op, 4, 5, 0, 1, 2, 3)			\
-	 xalu_u(l, op, 5, 0, 1, 2, 3, 4)
-#endif
-
-#define unir(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_##op(_jit, IR##i1, IR##i0);				\
-	check4(rr, l, i2, i3, i4, i5)
-
-#define unirc(l, op, i0, i1, i2, i3, i4, i5)			\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);				\
-	jit_##op(_jit, IR##i0, IR##i0);				\
-	check5(rc, l, i1, i2, i3, i4, i5)
-
-#define   xuni(l, op, i0, i1, i2, i3, i4, i5)			\
-	  unir(l, op, i0, i1,	i2, i3, i4, i5)			\
-	 unirc(l, op, i0,		i1, i2, i3, i4, i5)
-#if __ia64__
-#  define uni(l, op)						\
-	 xuni(l, op, 0, 1, 2, 3, 4, 5)
-#else
-#  define uni(l, op)						\
-	 xuni(l, op, 0, 1, 2, 3, 4, 5)				\
-	 xuni(l, op, 1, 2, 3, 4, 5, 0)				\
-	 xuni(l, op, 2, 3, 4, 5, 0, 1)				\
-	 xuni(l, op, 3, 4, 5, 0, 1, 2)				\
-	 xuni(l, op, 4, 5, 0, 1, 2, 3)				\
-	 xuni(l, op, 5, 0, 1, 2, 3, 4)
-#endif
-
-#define unfr(f, l, op, f0, f1, f2, f3, f4, f5)			\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1);				\
-	jit_##op##f(_jit, FR##f1, FR##f0);			\
-	checkf4(f, rr, l, f2, f3, f4, f5)
-
-#define unfrc(f, l, op, f0, f1, f2, f3, f4, f5)			\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1);				\
-	jit_##op##f(_jit, FR##f0, FR##f0);			\
-	checkf5(f, rc, l, f1, f2, f3, f4, f5)
-
-#define   xunf(f, l, op, f0, f1, f2, f3, f4, f5)		\
-	  unfr(f, l, op, f0, f1,	f2, f3, f4, f5)		\
-	 unfrc(f, l, op, f0,		f1, f2, f3, f4, f5)
-#define xxunf(l, op, f0, f1, f2, f3, f4, f5)			\
-	 xunf(_f, l, op, f0, f1, f2, f3, f4, f5)		\
-	 xunf(_d, l, op, f0, f1, f2, f3, f4, f5)
-#if __ia64__
-#  define unf(l, op)						\
-	xxunf(l, op, 0, 1, 2, 3, 4, 5)
-#else
-#  define unf(l, op)						\
-	xxunf(l, op, 0, 1, 2, 3, 4, 5)				\
-	xxunf(l, op, 1, 2, 3, 4, 5, 0)				\
-	xxunf(l, op, 2, 3, 4, 5, 0, 1)				\
-	xxunf(l, op, 3, 4, 5, 0, 1, 2)				\
-	xxunf(l, op, 4, 5, 0, 1, 2, 3)				\
-	xxunf(l, op, 5, 0, 1, 2, 3, 4)
-#endif
-
-#define fcpi(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1.0);				\
-	jit_movi##f(_jit, JIT_F6, 1.0);				\
-	jit_##op##r##f(_jit, IR##r0, FR##f0, JIT_F6);		\
-	check5(i##f##f0, l, r1, r2, r3, r4, r5)			\
-	checkf5(f, i##r0, l, f1, f2, f3, f4, f5)
-
-#define fcpr(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1.0);				\
-	jit_movi##f(_jit, FR##f1, 1.0);				\
-	jit_##op##r##f(_jit, IR##r0, FR##f0, FR##f1);		\
-	check5(r##f##f0, l, r1, r2, r3, r4, r5)			\
-	checkf4(f, r##r0, l, f2, f3, f4, f5)
-
-#define fcprc(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1.0);				\
-	jit_##op##r##f(_jit, IR##r0, FR##f0, FR##f0);		\
-	check5(rc##f##f0, l, r1, r2, r3, r4, r5)		\
-	checkf5(f, rc##r0, l, f1, f2, f3, f4, f5)
-
-#if __ia64__
-#  define ifcp(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  fcpi(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-#else
-#  define ifcp(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  fcpi(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  fcpr(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	 fcprc(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  fcpi(f, l, op, r1,r2,r3,r4,r5,r0, f0,f1,f2,f3,f4,f5)	\
-	  fcpr(f, l, op, r1,r2,r3,r4,r5,r0, f0,f1,f2,f3,f4,f5)	\
-	 fcprc(f, l, op, r1,r2,r3,r4,r5,r0, f0,f1,f2,f3,f4,f5)	\
-	  fcpi(f, l, op, r2,r3,r4,r5,r0,r1, f0,f1,f2,f3,f4,f5)	\
-	  fcpr(f, l, op, r2,r3,r4,r5,r0,r1, f0,f1,f2,f3,f4,f5)	\
-	 fcprc(f, l, op, r2,r3,r4,r5,r0,r1, f0,f1,f2,f3,f4,f5)	\
-	  fcpi(f, l, op, r3,r4,r5,r0,r1,r2, f0,f1,f2,f3,f4,f5)	\
-	  fcpr(f, l, op, r3,r4,r5,r0,r1,r2, f0,f1,f2,f3,f4,f5)	\
-	 fcprc(f, l, op, r3,r4,r5,r0,r1,r2, f0,f1,f2,f3,f4,f5)	\
-	  fcpi(f, l, op, r4,r5,r0,r1,r2,r3, f0,f1,f2,f3,f4,f5)	\
-	  fcpr(f, l, op, r4,r5,r0,r1,r2,r3, f0,f1,f2,f3,f4,f5)	\
-	 fcprc(f, l, op, r4,r5,r0,r1,r2,r3, f0,f1,f2,f3,f4,f5)	\
-	  fcpi(f, l, op, r5,r0,r1,r2,r3,r4, f0,f1,f2,f3,f4,f5)	\
-	  fcpr(f, l, op, r5,r0,r1,r2,r3,r4, f0,f1,f2,f3,f4,f5)	\
-	 fcprc(f, l, op, r5,r0,r1,r2,r3,r4, f0,f1,f2,f3,f4,f5)
-#endif
-#if __ia64__
-#  define xfcp(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  ifcp(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-#else
-#  define xfcp(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  ifcp(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  ifcp(f, l, op, r0,r1,r2,r3,r4,r5, f1,f2,f3,f4,f5,f0)	\
-	  ifcp(f, l, op, r0,r1,r2,r3,r4,r5, f2,f3,f4,f5,f0,f1)	\
-	  ifcp(f, l, op, r0,r1,r2,r3,r4,r5, f3,f4,f5,f0,f1,f2)	\
-	  ifcp(f, l, op, r0,r1,r2,r3,r4,r5, f4,f5,f0,f1,f2,f3)	\
-	  ifcp(f, l, op, r0,r1,r2,r3,r4,r5, f5,f0,f1,f2,f3,f4)
-#endif
-#if __ia64__
-#  define fcmp(l, op)						\
-	  xfcp(_f, l, op, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5)
-#else
-#  define fcmp(l, op)						\
-	  xfcp(_f, l, op, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5)	\
-	  xfcp(_d, l, op, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5)
-#endif
-
-#define imvi(l, i0, i1, i2, i3, i4, i5)				\
-	setup()							\
-	jit_movi(_jit, IR##i0, 1);					\
-	check5(i, l, i1, i2, i3, i4, i5)
-
-#define imvr(l, i0, i1, i2, i3, i4, i5)				\
-	setup()							\
-	jit_movi(_jit, IR##i1, 1);				\
-	jit_movr(_jit, IR##i0, IR##i1);				\
-	check4(r, l, i2, i3, i4, i5)
-
-#define xmvi(l, i0, i1, i2, i3, i4, i5)				\
-	imvi(l, i0,	i1, i2, i3, i4, i5)			\
-	imvr(l, i0, i1,	i2, i3, i4, i5)
-#if __ia64__
-#  define mvi(l)						\
-	 xmvi(l, 0, 1, 2, 3, 4, 5)
-#else
-#  define mvi(l)						\
-	 xmvi(l, 0, 1, 2, 3, 4, 5)				\
-	 xmvi(l, 1, 2, 3, 4, 5, 0)				\
-	 xmvi(l, 2, 3, 4, 5, 0, 1)				\
-	 xmvi(l, 3, 4, 5, 0, 1, 2)				\
-	 xmvi(l, 4, 5, 0, 1, 2, 3)				\
-	 xmvi(l, 5, 0, 1, 2, 3, 4)
-#endif
-
-#define fmvi(f, l, f0, f1, f2, f3, f4, f5)			\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1);				\
-	checkf5(f, i, l, f1, f2, f3, f4, f5)
-
-#define fmvr(f, l, f0, f1, f2, f3, f4, f5)			\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f1, 1);				\
-	jit_movr##f(_jit, FR##f0, FR##f1);			\
-	checkf4(f, r, l, f2, f3, f4, f5)
-
-#define xmvf(f, l, f0, f1, f2, f3, f4, f5)			\
-	fmvi(f, l, f0, f1, f2, f3, f4, f5)			\
-	fmvr(f, l, f0, f1,	f2, f3, f4, f5)
-#if __ia64__
-#  define xxmvf(f, l)						\
-	  xmvf(f, l, 0, 1, 2, 3, 4, 5)
-#else
-#  define xxmvf(f, l)						\
-	   xmvf(f, l, 0, 1, 2, 3, 4, 5)				\
-	   xmvf(f, l, 1, 2, 3, 4, 5, 0)				\
-	   xmvf(f, l, 2, 3, 4, 5, 0, 1)				\
-	   xmvf(f, l, 3, 4, 5, 0, 1, 2)				\
-	   xmvf(f, l, 4, 5, 0, 1, 2, 3)				\
-	   xmvf(f, l, 5, 0, 1, 2, 3, 4)
-#endif
-#define   mvf(l)						\
-	xxmvf(_f, l)						\
-	xxmvf(_d, l)
-
-#define f2fr(f, l, op, f0, f1, f2, f3, f4, f5)			\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1);				\
-	jit_##op(_jit, FR##f1, FR##f0);				\
-	checkf4(f, rr, l, f2, f3, f4, f5)
-
-#define f2frc(f, l, op, f0, f1, f2, f3, f4, f5)			\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1);				\
-	jit_##op(_jit, FR##f0, FR##f0);				\
-	checkf5(f, rc, l, f1, f2, f3, f4, f5)
-
-#define  xf2f(f, l, op, f0, f1, f2, f3, f4, f5)			\
-	 f2fr(f, l, op, f0, f1,	f2, f3, f4, f5)			\
-	f2frc(f, l, op, f0,		f1, f2, f3, f4, f5)
-#if __ia64__
-#  define f2f(l, f, op)						\
-	 xf2f(f, l, op, 0, 1, 2, 3, 4, 5)
-#else
-#  define f2f(l, f, op)						\
-	 xf2f(f, l, op, 0, 1, 2, 3, 4, 5)			\
-	 xf2f(f, l, op, 1, 2, 3, 4, 5, 0)			\
-	 xf2f(f, l, op, 2, 3, 4, 5, 0, 1)			\
-	 xf2f(f, l, op, 3, 4, 5, 0, 1, 2)			\
-	 xf2f(f, l, op, 4, 5, 0, 1, 2, 3)			\
-	 xf2f(f, l, op, 5, 0, 1, 2, 3, 4)
-#endif
-
-#define f2ir(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, 1);				\
-	jit_##op##f(_jit, IR##r0, FR##f0);			\
-	check5(r##f##f0, l, r1, r2, r3, r4, r5)			\
-	checkf5(f, i##r0, l, f1, f2, f3, f4, f5)
-
-#if __ia64__
-#  define if2i(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  f2ir(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-#  define xf2i(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  if2i(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-#else
-#  define if2i(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  f2ir(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  f2ir(f, l, op, r1,r2,r3,r4,r5,r0, f0,f1,f2,f3,f4,f5)	\
-	  f2ir(f, l, op, r2,r3,r4,r5,r0,r1, f0,f1,f2,f3,f4,f5)	\
-	  f2ir(f, l, op, r3,r4,r5,r0,r1,r2, f0,f1,f2,f3,f4,f5)	\
-	  f2ir(f, l, op, r4,r5,r0,r1,r2,r3, f0,f1,f2,f3,f4,f5)	\
-	  f2ir(f, l, op, r5,r0,r1,r2,r3,r4, f0,f1,f2,f3,f4,f5)
-#  define xf2i(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  if2i(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  if2i(f, l, op, r0,r1,r2,r3,r4,r5, f1,f2,f3,f4,f5,f0)	\
-	  if2i(f, l, op, r0,r1,r2,r3,r4,r5, f2,f3,f4,f5,f0,f1)	\
-	  if2i(f, l, op, r0,r1,r2,r3,r4,r5, f3,f4,f5,f0,f1,f2)	\
-	  if2i(f, l, op, r0,r1,r2,r3,r4,r5, f4,f5,f0,f1,f2,f3)	\
-	  if2i(f, l, op, r0,r1,r2,r3,r4,r5, f5,f0,f1,f2,f3,f4)
-#endif
-#define f2i(l, op)						\
-	xf2i(_f, l, op, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5)	\
-	xf2i(_d, l, op, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5)
-
-#define i2fr(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_movi(_jit, IR##r0, 1);				\
-	jit_##op##f(_jit, FR##f0, IR##r0);			\
-	check5(r##f##f0, l, r1, r2, r3, r4, r5)			\
-	checkf5(f, i##r0, l, f1, f2, f3, f4, f5)
-#if __ia64__
-#  define ii2f(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  i2fr(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-#  define xi2f(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  ii2f(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-#else
-#  define ii2f(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  i2fr(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  i2fr(f, l, op, r1,r2,r3,r4,r5,r0, f0,f1,f2,f3,f4,f5)	\
-	  i2fr(f, l, op, r2,r3,r4,r5,r0,r1, f0,f1,f2,f3,f4,f5)	\
-	  i2fr(f, l, op, r3,r4,r5,r0,r1,r2, f0,f1,f2,f3,f4,f5)	\
-	  i2fr(f, l, op, r4,r5,r0,r1,r2,r3, f0,f1,f2,f3,f4,f5)	\
-	  i2fr(f, l, op, r5,r0,r1,r2,r3,r4, f0,f1,f2,f3,f4,f5)
-#  define xi2f(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  ii2f(f, l, op, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  ii2f(f, l, op, r0,r1,r2,r3,r4,r5, f1,f2,f3,f4,f5,f0)	\
-	  ii2f(f, l, op, r0,r1,r2,r3,r4,r5, f2,f3,f4,f5,f0,f1)	\
-	  ii2f(f, l, op, r0,r1,r2,r3,r4,r5, f3,f4,f5,f0,f1,f2)	\
-	  ii2f(f, l, op, r0,r1,r2,r3,r4,r5, f4,f5,f0,f1,f2,f3)	\
-	  ii2f(f, l, op, r0,r1,r2,r3,r4,r5, f5,f0,f1,f2,f3,f4)
-#endif
-#define i2f(l, op)						\
-	xi2f(_f, l, op, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5)	\
-	xi2f(_d, l, op, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5)
-
-#define off_c		1
-#define off_uc		off_c
-#define off_s		2
-#define off_us		off_s
-#define off_i		4
-#define off_ui		off_i
-#define off_l		8
-#define off_f		4
-#define off_d		8
-
-#define ildi(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_##ldi##i(_jit, IR##r0, buff);			\
-	check5(ldi##i, l, r1, r2, r3, r4, r5)
-
-#define ildr(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r1, (jit_imm_t)buff);		\
-	jit_##ldr##i(_jit, IR##r0, IR##r1);			\
-	check4(ldr##i, l, r2, r3, r4, r5)
-
-#define ildr0(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r0, (jit_imm_t)buff);		\
-	jit_##ldr##i(_jit, IR##r0, IR##r0);			\
-	check5(ldr##i, l, r1, r2, r3, r4, r5)
-
-#define ildxi(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r1, (jit_imm_t)buff);		\
-	jit_ldxi##i(_jit, IR##r0, IR##r1, off##i); 		\
-	check4(ldxi##i, l, r2, r3, r4, r5)
-
-#define ildxr(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r1, (jit_imm_t)buff);		\
-	jit_movi(_jit, IR##r2, off##i);				\
-	jit_ldxr##i(_jit, IR##r0, IR##r1, IR##r2);		\
-	check3(ldxr##i, l, r3, r4, r5)
-
-#define ildxr0(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r1, (jit_imm_t)buff);		\
-	jit_movi(_jit, IR##r0, off##i);				\
-	jit_ldxr##i(_jit, IR##r0, IR##r1, IR##r0);		\
-	check4(ldxr0##i, l, r2, r3, r4, r5)
-
-#define ildxr1(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r0, (jit_imm_t)buff);		\
-	jit_movi(_jit, IR##r1, off##i);				\
-	jit_ldxr##i(_jit, IR##r0, IR##r0, IR##r1);		\
-	check4(ldxr1##i, l, r2, r3, r4, r5)
-
-#define  xxldi(i, l, r0, r1, r2, r3, r4, r5)			\
-	  ildi(i, l, r0, r1, r2, r3, r4, r5)			\
-	  ildr(i, l, r0, r1, r2, r3, r4, r5)			\
-	 ildr0(i, l, r0, r1, r2, r3, r4, r5)			\
-	 ildxi(i, l, r0, r1, r2, r3, r4, r5)			\
-	 ildxr(i, l, r0, r1, r2, r3, r4, r5)			\
-	ildxr0(i, l, r0, r1, r2, r3, r4, r5)			\
-	ildxr1(i, l, r0, r1, r2, r3, r4, r5)
-#if __WORDSIZE == 32
-#define xxxldi(l, r0, r1, r2, r3, r4, r5)
-#else
-#define xxxldi(l, r0, r1, r2, r3, r4, r5)			\
-	 xxldi(_ui, l, r0, r1, r2, r3, r4, r5)			\
-	 xxldi( _l, l, r0, r1, r2, r3, r4, r5)
-#endif
-#define   xldi(l, r0, r1, r2, r3, r4, r5)			\
-	 xxldi( _c, l, r0, r1, r2, r3, r4, r5)			\
-	 xxldi(_uc, l, r0, r1, r2, r3, r4, r5)			\
-	 xxldi( _s, l, r0, r1, r2, r3, r4, r5)			\
-	 xxldi(_us, l, r0, r1, r2, r3, r4, r5)			\
-	 xxldi( _i, l, r0, r1, r2, r3, r4, r5)			\
-	xxxldi(l, r0, r1, r2, r3, r4, r5)
-#if __ia64__
-#  define ldi(l)						\
-	 xldi(l, 0, 1, 2, 3, 4, 5)
-#else
-#  define ldi(l)						\
-	 xldi(l, 0, 1, 2, 3, 4, 5)				\
-	 xldi(l, 1, 2, 3, 4, 5, 0)				\
-	 xldi(l, 2, 3, 4, 5, 0, 1)				\
-	 xldi(l, 3, 4, 5, 0, 1, 2)				\
-	 xldi(l, 4, 5, 0, 1, 2, 3)				\
-	 xldi(l, 5, 0, 1, 2, 3, 4)
-#endif
-
-#define fldi(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_ldi##f(_jit, FR##f0, buff);				\
-	check6(ldi##f##r0##f0, l, r0, r1, r2, r3, r4, r5)	\
-	checkf5(f, ldi##r0##f0, l, f1, f2, f3, f4, f5)
-
-#define fldr(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_movi(_jit, IR##r0, (jit_imm_t)buff);		\
-	jit_ldr##f(_jit, FR##f0, IR##r0);			\
-	check5(ldr##f##r0##f0, l, r1, r2, r3, r4, r5)		\
-	checkf5(f, ldr##r0##f0, l, f1, f2, f3, f4, f5)
-
-#define fldxi(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_movi(_jit, IR##r0, (jit_imm_t)buff);		\
-	jit_ldxi##f(_jit, FR##f0, IR##r0, off##f); 		\
-	check5(ldxi##f##r0##f0, l, r1, r2, r3, r4, r5)		\
-	checkf5(f, ldxi##r0##f0, l, f1, f2, f3, f4, f5)
-
-#define fldxr(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_movi(_jit, IR##r0, (jit_imm_t)buff);		\
-	jit_movi(_jit, IR##r1, off##f);				\
-	jit_ldxr##f(_jit, FR##f0, IR##r0, IR##r1); 		\
-	check4(ldxr##f##r0##f0, l, r2, r3, r4, r5)		\
-	checkf5(f, ldxr##r0##f0, l, f1, f2, f3, f4, f5)
-
-#define	  xldf(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	fldi(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	fldr(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	fldxi(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	fldxr(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-
-#define	 xxldf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)		\
-	  xldf(_f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  xldf(_d, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-#if __ia64__
-#  define ixldf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  xxldf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-#else
-#  define fxldf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  xxldf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  xxldf(l, r0,r1,r2,r3,r4,r5, f1,f2,f3,f4,f5,f0)	\
-	  xxldf(l, r0,r1,r2,r3,r4,r5, f2,f3,f4,f5,f0,f1)	\
-	  xxldf(l, r0,r1,r2,r3,r4,r5, f3,f4,f5,f0,f1,f2)	\
-	  xxldf(l, r0,r1,r2,r3,r4,r5, f4,f5,f0,f1,f2,f3)	\
-	  xxldf(l, r0,r1,r2,r3,r4,r5, f5,f0,f1,f2,f3,f4)
-#  define ixldf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  fxldf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  fxldf(l, r1,r2,r3,r4,r5,r0, f0,f1,f2,f3,f4,f5)	\
-	  fxldf(l, r2,r3,r4,r5,r0,r1, f0,f1,f2,f3,f4,f5)	\
-	  fxldf(l, r3,r4,r5,r0,r1,r2, f0,f1,f2,f3,f4,f5)	\
-	  fxldf(l, r4,r5,r0,r1,r2,r3, f0,f1,f2,f3,f4,f5)	\
-	  fxldf(l, r5,r0,r1,r2,r3,r4, f0,f1,f2,f3,f4,f5)
-#endif
-#define   ldf(l)						\
-	ixldf(l, 0,1,2,3,4,5, 0,1,2,3,4,5)
-
-#define isti(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_sti##i(_jit, buff, IR##r0);				\
-	check5(sti##i, l, r1, r2, r3, r4, r5)
-
-#define istr(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r1, (jit_imm_t)buff);		\
-	jit_str##i(_jit, IR##r1, IR##r0);			\
-	check4(str##i, l, r2, r3, r4, r5)
-
-#define istr0(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r1, (jit_imm_t)buff);		\
-	jit_str##i(_jit, IR##r1, IR##r0);			\
-	check4(str0##i, l, r2, r3, r4, r5)
-
-#define istxi(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r1, (jit_imm_t)buff);		\
-	jit_stxi##i(_jit, off##i, IR##r1, IR##r0); 		\
-	check4(stxi##i, l, r2, r3, r4, r5)
-
-#define istxr(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r1, (jit_imm_t)buff);		\
-	jit_movi(_jit, IR##r2, off##i);				\
-	jit_stxr##i(_jit, IR##r2, IR##r1, IR##r0);		\
-	check3(stxr##i, l, r3, r4, r5)
-
-#define istxr0(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r1, (jit_imm_t)buff);		\
-	jit_movi(_jit, IR##r0, off##i);				\
-	jit_stxr##i(_jit, IR##r0, IR##r1, IR##r0);		\
-	check4(stxr0##i, l, r2, r3, r4, r5)
-
-#define istxr1(i, l, r0, r1, r2, r3, r4, r5)			\
-	setup()							\
-	jit_movi(_jit, IR##r0, (jit_imm_t)buff);		\
-	jit_movi(_jit, IR##r1, off##i);				\
-	jit_stxr##i(_jit, IR##r1, IR##r0, IR##r0);		\
-	check4(stxr1##i, l, r2, r3, r4, r5)
-
-#define  xxsti(i, l, r0, r1, r2, r3, r4, r5)			\
-	  isti(i, l, r0, r1, r2, r3, r4, r5)			\
-	  istr(i, l, r0, r1, r2, r3, r4, r5)			\
-	 istr0(i, l, r0, r1, r2, r3, r4, r5)			\
-	 istxi(i, l, r0, r1, r2, r3, r4, r5)			\
-	 istxr(i, l, r0, r1, r2, r3, r4, r5)			\
-	istxr0(i, l, r0, r1, r2, r3, r4, r5)			\
-	istxr1(i, l, r0, r1, r2, r3, r4, r5)
-#if __WORDSIZE == 32
-#define xxxsti(l, r0, r1, r2, r3, r4, r5)
-#else
-#define xxxsti(l, r0, r1, r2, r3, r4, r5)			\
-	 xxsti( _l, l, r0, r1, r2, r3, r4, r5)
-#endif
-#define   xsti(l, r0, r1, r2, r3, r4, r5)			\
-	 xxsti( _c, l, r0, r1, r2, r3, r4, r5)			\
-	 xxsti( _s, l, r0, r1, r2, r3, r4, r5)			\
-	 xxsti( _i, l, r0, r1, r2, r3, r4, r5)			\
-	xxxsti(l, r0, r1, r2, r3, r4, r5)
-#if __ia64__
-#  define sti(l)						\
-	 xsti(l, 0, 1, 2, 3, 4, 5)
-#else
-#  define sti(l)						\
-	 xsti(l, 0, 1, 2, 3, 4, 5)				\
-	 xsti(l, 1, 2, 3, 4, 5, 0)				\
-	 xsti(l, 2, 3, 4, 5, 0, 1)				\
-	 xsti(l, 3, 4, 5, 0, 1, 2)				\
-	 xsti(l, 4, 5, 0, 1, 2, 3)				\
-	 xsti(l, 5, 0, 1, 2, 3, 4)
-#endif
-
-#define fsti(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_sti##f(_jit, buff, FR##f0);				\
-	check6(sti##f##r0##f0, l, r0, r1, r2, r3, r4, r5)	\
-	checkf5(f, sti##r0##f0, l, f1, f2, f3, f4, f5)
-
-#define fstr(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_movi(_jit, IR##r0, (jit_imm_t)buff);		\
-	jit_str##f(_jit, IR##r0, FR##f0);			\
-	check5(str##f##r0##f0, l, r1, r2, r3, r4, r5)		\
-	checkf5(f, str##r0##f0, l, f1, f2, f3, f4, f5)
-
-#define fstxi(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_movi(_jit, IR##r0, (jit_imm_t)buff);		\
-	jit_stxi##f(_jit, off##f, IR##r0, FR##f0); 		\
-	check5(stxi##f##r0##f0, l, r1, r2, r3, r4, r5)		\
-	checkf5(f, stxi##r0##f0, l, f1, f2, f3, f4, f5)
-
-#define fstxr(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	setup()							\
-	setup##f()						\
-	jit_movi(_jit, IR##r0, (jit_imm_t)buff);		\
-	jit_movi(_jit, IR##r1, off##f);				\
-	jit_stxr##f(_jit, IR##r1, IR##r0, FR##f0); 		\
-	check4(stxr##f##r0##f0, l, r2, r3, r4, r5)		\
-	checkf5(f, stxr##r0##f0, l, f1, f2, f3, f4, f5)
-
-#define	  xstf(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	fsti(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	fstr(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	fstxi(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	fstxr(f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-#define	 xxstf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)		\
-	  xstf(_f, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  xstf(_d, l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-#if __ia64__
-#  define ixstf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  xxstf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)
-#else
-#  define fxstf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  xxstf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  xxstf(l, r0,r1,r2,r3,r4,r5, f1,f2,f3,f4,f5,f0)	\
-	  xxstf(l, r0,r1,r2,r3,r4,r5, f2,f3,f4,f5,f0,f1)	\
-	  xxstf(l, r0,r1,r2,r3,r4,r5, f3,f4,f5,f0,f1,f2)	\
-	  xxstf(l, r0,r1,r2,r3,r4,r5, f4,f5,f0,f1,f2,f3)	\
-	  xxstf(l, r0,r1,r2,r3,r4,r5, f5,f0,f1,f2,f3,f4)
-# define ixstf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)		\
-	  fxstf(l, r0,r1,r2,r3,r4,r5, f0,f1,f2,f3,f4,f5)	\
-	  fxstf(l, r1,r2,r3,r4,r5,r0, f0,f1,f2,f3,f4,f5)	\
-	  fxstf(l, r2,r3,r4,r5,r0,r1, f0,f1,f2,f3,f4,f5)	\
-	  fxstf(l, r3,r4,r5,r0,r1,r2, f0,f1,f2,f3,f4,f5)	\
-	  fxstf(l, r4,r5,r0,r1,r2,r3, f0,f1,f2,f3,f4,f5)	\
-	  fxstf(l, r5,r0,r1,r2,r3,r4, f0,f1,f2,f3,f4,f5)
-#endif
-#define   stf(l)						\
-	ixstf(l, 0,1,2,3,4,5, 0,1,2,3,4,5)
-
-#define bri(l, op, u, il, ir, r0, r1, r2, r3, r4, r5)		\
-{								\
-	setup()							\
-	jit_movi(_jit, IR##r0, il); 				\
-	jit_reloc_t r = jit_b##op##i##u(_jit, IR##r0, ir);	\
-	jit_calli_0(_jit, abort);				\
-	jit_patch_here(_jit, r);				\
-	check5(i, l, r1, r2, r3, r4, r5)			\
-}
-
-#define brr(l, op, u, il, ir, r0, r1, r2, r3, r4, r5)		\
-{								\
-	setup()							\
-	jit_movi(_jit, IR##r0, il);				\
-	jit_movi(_jit, IR##r1, ir);				\
-	jit_reloc_t r = jit_b##op##r##u(_jit, IR##r0, IR##r1);	\
-	jit_calli_0(_jit, abort);				\
-	jit_patch_here(_jit, r);				\
-	check4(r, l, r2, r3, r4, r5)				\
-}
-
-#define  xjmpi(l, op, u, il, ir, r0, r1, r2, r3, r4, r5)	\
-	   bri(l, op, u, il, ir, r0, r1, r2, r3, r4, r5)	\
-	   brr(l, op, u, il, ir, r0, r1, r2, r3, r4, r5)
-#if __ia64__
-#  define jmpi(l, op, u, il, ir)				\
-	 xjmpi(l, op, u, il, ir, 0, 1, 2, 3, 4, 5)
-#else
-#  define jmpi(l, op, u, il, ir)				\
-	 xjmpi(l, op, u, il, ir, 0, 1, 2, 3, 4, 5)		\
-	 xjmpi(l, op, u, il, ir, 1, 2, 3, 4, 5, 0)		\
-	 xjmpi(l, op, u, il, ir, 2, 3, 4, 5, 0, 1)		\
-	 xjmpi(l, op, u, il, ir, 3, 4, 5, 0, 1, 2)		\
-	 xjmpi(l, op, u, il, ir, 4, 5, 0, 1, 2, 3)		\
-	 xjmpi(l, op, u, il, ir, 5, 0, 1, 2, 3, 4)
-#endif
-
-#define bfi(f, l, op, il, ir, f0, f1, f2, f3, f4, f5)		\
-{								\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, il); 				\
-	jit_movi##f(_jit, JIT_F6, ir);				\
-	jit_reloc_t r = jit_b##op##r##f(_jit, FR##f0, JIT_F6);	\
-	jit_calli_0(_jit, abort);				\
-	jit_patch_here(_jit, r);				\
-	checkf5(f, i, l, f1, f2, f3, f4, f5)			\
-}
-
-#define bff(f, l, op, il, ir, f0, f1, f2, f3, f4, f5)		\
-{								\
-	setup##f()						\
-	jit_movi##f(_jit, FR##f0, il);				\
-	jit_movi##f(_jit, FR##f1, ir);				\
-	jit_reloc_t r = jit_b##op##r##f(_jit, FR##f0, FR##f1);	\
-	jit_calli_0(_jit, abort);				\
-	jit_patch_here(_jit, r);				\
-	checkf4(f, r, l, f2, f3, f4, f5)			\
-}
-
-#define  xjmpf(f, l, op, il, ir, f0, f1, f2, f3, f4, f5)	\
-	   bfi(f, l, op, il, ir, f0, f1, f2, f3, f4, f5)	\
-	   bff(f, l, op, il, ir, f0, f1, f2, f3, f4, f5)
-#define xxjmpf(l, op, il, ir, f0, f1, f2, f3, f4, f5)		\
-	 xjmpf(_f, l, op, il, ir, f0, f1, f2, f3, f4, f5)	\
-	 xjmpf(_d, l, op, il, ir, f0, f1, f2, f3, f4, f5)
-#if __ia64__
-#  define jmpf(l, op, il, ir)					\
-	xxjmpf(l, op, il, ir, 0, 1, 2, 3, 4, 5)
-#else
-#  define jmpf(l, op, il, ir)					\
-	xxjmpf(l, op, il, ir, 0, 1, 2, 3, 4, 5)			\
-	xxjmpf(l, op, il, ir, 1, 2, 3, 4, 5, 0)			\
-	xxjmpf(l, op, il, ir, 2, 3, 4, 5, 0, 1)			\
-	xxjmpf(l, op, il, ir, 3, 4, 5, 0, 1, 2)			\
-	xxjmpf(l, op, il, ir, 4, 5, 0, 1, 2, 3)			\
-	xxjmpf(l, op, il, ir, 5, 0, 1, 2, 3, 4)
-#endif
-
-static size_t
-run_test(jit_state_t *_jit, uint8_t *arena_base, size_t arena_size)
-{
-	jit_begin(_jit, arena_base, arena_size);
-	size_t frame = jit_enter_jit_abi(_jit, 3, 0, 0);
-
-	void (*function)(void);
-
-	char *buff = malloc(16);
-	ASSERT(buff);
-
-	  alu(__LINE__, add)
-	 alux(__LINE__, add)
-	  fop(__LINE__, add)
-	  alu(__LINE__, sub)
-	 alux(__LINE__, sub)
-	  fop(__LINE__, sub)
-	  alu(__LINE__, mul)
-	  fop(__LINE__, mul)
-	  alu(__LINE__, div)
-	alu_u(__LINE__, div)
-	  fop(__LINE__, div)
-	  alu(__LINE__, rem)
-	alu_u(__LINE__, rem)
-	  alu(__LINE__, and)
-	  alu(__LINE__, or)
-	  alu(__LINE__, xor)
-	  alu(__LINE__, lsh)
-	  alu(__LINE__, rsh)
-	alu_u(__LINE__, rsh)
-	  uni(__LINE__, negr)
-	  unf(__LINE__, negr)
-	  uni(__LINE__, comr)
-	  unf(__LINE__, absr)
-	  unf(__LINE__, sqrtr)
-	  mvi(__LINE__)
-	  mvf(__LINE__)
-	  uni(__LINE__, extr_c)
-	  uni(__LINE__, extr_uc)
-	  uni(__LINE__, extr_s)
-	  uni(__LINE__, extr_us)
-#if __WORDSIZE == 64
-	  uni(__LINE__, extr_ui)
-#endif
-	  uni(__LINE__, bswapr_us)
-	  uni(__LINE__, bswapr_ui)
-#if __WORDSIZE == 64
-	  uni(__LINE__, bswapr_ul)
-#endif
-	  f2f(__LINE__, _f, extr_d_f)
-	  f2f(__LINE__, _d, extr_f_d)
-	  f2i(__LINE__, truncr)
-	  i2f(__LINE__, extr)
-	  ldi(__LINE__)
-	  ldf(__LINE__)
-	  sti(__LINE__)
-	  stf(__LINE__)
-	 jmpi(__LINE__, lt,   ,  0,  1)
-	 jmpi(__LINE__, lt, _u,  0,  1)
-	 jmpf(__LINE__, lt,      0,  1)
-	 jmpi(__LINE__, le,   ,  1,  1)
-	 jmpi(__LINE__, le, _u,  1,  1)
-	 jmpf(__LINE__, le,      1,  1)
-	 jmpi(__LINE__, eq,   , -1, -1)
-	 jmpf(__LINE__, eq,     -1, -1)
-	 jmpi(__LINE__, ge,   ,  2,  2)
-	 jmpi(__LINE__, ge, _u,  2,  2)
-	 jmpf(__LINE__, ge,      2,  2)
-	 jmpi(__LINE__, gt,   ,  2,  1)
-	 jmpi(__LINE__, gt, _u,  2,  1)
-	 jmpf(__LINE__, gt,      2,  1)
-	 jmpi(__LINE__, ne,   ,  3,  2)
-	 jmpf(__LINE__, ne,      3,  2)
-	 jmpi(__LINE__, ms, , 1, 1)
-	 jmpi(__LINE__, mc, , 1, 2)
-#if __WORDSIZE == 32
-#  define ix7f		0x7fffffff
-#  define ix80		0x80000000
-#  define ixff		0xffffffff
-#else
-#  define ix7f		0x7fffffffffffffff
-#  define ix80		0x8000000000000000
-#  define ixff		0xffffffffffffffff
-#endif
-	 jmpi(__LINE__, oadd,   , ix7f, 1)
-	 jmpi(__LINE__, oadd, _u, ixff, 1)
-	 jmpi(__LINE__, xadd,   , ix80, 1)
-	 jmpi(__LINE__, xadd, _u, ix7f, 1)
-	 jmpi(__LINE__, osub,   , ix80, 1)
-	 jmpi(__LINE__, osub, _u,    0, 1)
-	 jmpi(__LINE__, xsub,   , ix7f, 1)
-	 jmpi(__LINE__, xsub, _u, ix80, 1)
-	 jmpf(__LINE__, unlt,        0, 1)
-	 jmpf(__LINE__, unle,        1, 1)
-	 jmpf(__LINE__, uneq,        2, 2)
-	 jmpf(__LINE__, unge,        3, 3)
-	 jmpf(__LINE__, ungt,        4, 3)
-	 jmpf(__LINE__, ltgt,        5, 4)
-	 jmpf(__LINE__, ord,         0, 0)
-	 jmpf(__LINE__, unord,       0, (0.0 / 0.0))
-
-	jit_leave_jit_abi(_jit, 3, 0, frame);
-	jit_ret(_jit);
-
-	size_t size = 0;
-	function = jit_end(_jit, &size);
-
-	if (function)
-		(*function)();
-	else {
-		free(buff);
-		return size;
-	}
-
-	free(buff);
-	return 0;
-}
-
-int main(int argc, char *argv[])
-{
-	return main_compiler(argc, argv, run_test);
-}
-- 
cgit v1.2.3