diff options
Diffstat (limited to 'deps/lightening/tests/z_clobber.c')
-rw-r--r-- | deps/lightening/tests/z_clobber.c | 1145 |
1 files changed, 0 insertions, 1145 deletions
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); -} |