Mercurial > hg > truffle
changeset 19674:32a5dd091f5f
[SPARC] Replace fpop instructions
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Fri, 27 Feb 2015 14:43:40 +0100 |
parents | 4be296f6eeac |
children | f1b4f2613702 |
files | graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMathIntrinsicOp.java graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java |
diffstat | 4 files changed, 224 insertions(+), 1032 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java Fri Feb 27 13:55:38 2015 +0100 +++ b/graal/com.oracle.graal.asm.sparc/src/com/oracle/graal/asm/sparc/SPARCAssembler.java Fri Feb 27 14:43:40 2015 +0100 @@ -22,6 +22,8 @@ */ package com.oracle.graal.asm.sparc; +import static com.oracle.graal.asm.sparc.SPARCAssembler.Op3s.*; +import static com.oracle.graal.asm.sparc.SPARCAssembler.Opfs.*; import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; import static com.oracle.graal.sparc.SPARC.*; @@ -88,36 +90,6 @@ protected static final int D10LO_SHIFT = 5; protected static final int D10HI_SHIFT = 19; - public static class Fmt3p { - - private int op; - private int op3; - private int opf; - private int rs1; - private int rs2; - private int rd; - - public Fmt3p(Ops op, Op3s op3, Opfs opf, Register rs1, Register rs2, Register rd) { - this.op = op.getValue(); - this.op3 = op3.getValue(); - this.opf = opf.getValue(); - this.rs1 = rs1.encoding(); - this.rs2 = rs2.encoding(); - this.rd = rd.encoding(); - } - - public void emit(SPARCAssembler masm) { - assert op == 2 || op == 3 : op; - assert op3 >= 0 && op3 < 0x40 : op3; - assert opf >= 0 && opf < 0x200 : opf; - assert rs1 >= 0 && rs1 < 0x20 : rs1; - assert rs2 >= 0 && rs2 < 0x20 : rs2; - assert rd >= 0 && rd < 0x20 : rd; - - masm.emitInt(op << 30 | rd << 25 | op3 << 19 | rs1 << 14 | opf << 5 | rs2); - } - } - // @formatter:off /** * Instruction format for Arithmetic, Logical, Moves, Tcc, Prefetch, and Misc. @@ -1625,284 +1597,117 @@ public static class Add extends Fmt10 { public Add(Register src1, int simm13, Register dst) { - super(Op3s.Add, src1, simm13, dst); + super(Add, src1, simm13, dst); } public Add(Register src1, Register src2, Register dst) { - super(Op3s.Add, src1, src2, dst); + super(Add, src1, src2, dst); } } public static class Addc extends Fmt10 { public Addc(Register src1, int simm13, Register dst) { - super(Op3s.Addc, src1, simm13, dst); + super(Addc, src1, simm13, dst); } public Addc(Register src1, Register src2, Register dst) { - super(Op3s.Addc, src1, src2, dst); + super(Addc, src1, src2, dst); } } public static class Addcc extends Fmt10 { public Addcc(Register src1, int simm13, Register dst) { - super(Op3s.Addcc, src1, simm13, dst); + super(Addcc, src1, simm13, dst); } public Addcc(Register src1, Register src2, Register dst) { - super(Op3s.Addcc, src1, src2, dst); + super(Addcc, src1, src2, dst); } } public static class Addccc extends Fmt10 { public Addccc(Register src1, int simm13, Register dst) { - super(Op3s.Addccc, src1, simm13, dst); + super(Addccc, src1, simm13, dst); } public Addccc(Register src1, Register src2, Register dst) { - super(Op3s.Addccc, src1, src2, dst); - } - } - - public static class Addxc extends Fmt3p { - - public Addxc(Register src1, Register src2, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Addxc, src1, src2, dst); - } - } - - public static class Addxccc extends Fmt3p { - - public Addxccc(Register src1, Register src2, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Addxccc, src1, src2, dst); - } - } - - public static class Alignaddr extends Fmt3p { - - public Alignaddr(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.AlignAddress, src1, src2, dst); - } - } - - public static class Alignaddrl extends Fmt3p { - - public Alignaddrl(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.AlignAddressLittle, src1, src2, dst); - } - } - - public static class Lzcnt extends Fmt3p { - - public Lzcnt(Register src1, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Lzcnt, g0, src1, dst); + super(Addccc, src1, src2, dst); } } public static class And extends Fmt10 { public And(Register src1, int simm13, Register dst) { - super(Op3s.And, src1, simm13, dst); + super(And, src1, simm13, dst); } public And(Register src1, Register src2, Register dst) { - super(Op3s.And, src1, src2, dst); + super(And, src1, src2, dst); } } public static class Andcc extends Fmt10 { public Andcc(Register src1, int simm13, Register dst) { - super(Op3s.Andcc, src1, simm13, dst); + super(Andcc, src1, simm13, dst); } public Andcc(Register src1, Register src2, Register dst) { - super(Op3s.Andcc, src1, src2, dst); + super(Andcc, src1, src2, dst); } } public static class Andn extends Fmt10 { public Andn(Register src1, int simm13, Register dst) { - super(Op3s.Andn, src1, simm13, dst); + super(Andn, src1, simm13, dst); } public Andn(Register src1, Register src2, Register dst) { - super(Op3s.Andn, src1, src2, dst); + super(Andn, src1, src2, dst); } } public static class Andncc extends Fmt10 { public Andncc(Register src1, int simm13, Register dst) { - super(Op3s.Andncc, src1, simm13, dst); + super(Andncc, src1, simm13, dst); } public Andncc(Register src1, Register src2, Register dst) { - super(Op3s.Andncc, src1, src2, dst); - } - } - - public static class Array8 extends Fmt3p { - - public Array8(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Array8, src1, src2, dst); - } - - @Override - public void emit(SPARCAssembler masm) { - assert masm.hasFeature(CPUFeature.VIS1); - super.emit(masm); - } - } - - public static class Array16 extends Fmt3p { - - public Array16(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Array16, src1, src2, dst); - } - - @Override - public void emit(SPARCAssembler masm) { - assert masm.hasFeature(CPUFeature.VIS1); - super.emit(masm); - } - } - - public static class Array32 extends Fmt3p { - - public Array32(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Array32, src1, src2, dst); - } - - @Override - public void emit(SPARCAssembler masm) { - assert masm.hasFeature(CPUFeature.VIS2); - super.emit(masm); - } - } - - public static class Bmask extends Fmt3p { - - public Bmask(Register src1, Register src2, Register dst) { - /* VIS2 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Bmask, src1, src2, dst); - } - - @Override - public void emit(SPARCAssembler masm) { - assert masm.hasFeature(CPUFeature.VIS2); - super.emit(masm); - } - } - - public static class Movwtos extends Fmt3p { - public Movwtos(Register src, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Movwtos, g0, src, dst); - assert isSingleFloatRegister(dst); - } - - @Override - public void emit(SPARCAssembler masm) { - assert masm.hasFeature(CPUFeature.VIS3); - super.emit(masm); + super(Andncc, src1, src2, dst); } } - public static class Umulxhi extends Fmt3p { - public Umulxhi(Register src1, Register src2, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.UMulxhi, src1, src2, dst); - } - - @Override - public void emit(SPARCAssembler masm) { - assert masm.hasFeature(CPUFeature.VIS3); - super.emit(masm); - } + public void movwtos(Register rs2, Register rd) { + op3(Impdep1, Movwtos, null, rs2, rd); } - public static class Movxtod extends Fmt3p { - public Movxtod(Register src, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Movxtod, g0, src, dst); - assert isDoubleFloatRegister(dst); - } - - @Override - public void emit(SPARCAssembler masm) { - assert masm.hasFeature(CPUFeature.VIS3); - super.emit(masm); - } + public void umulxhi(Register rs1, Register rs2, Register rd) { + op3(Impdep1, UMulxhi, rs1, rs2, rd); } - public static class Movdtox extends Fmt3p { - public Movdtox(Register src, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Movdtox, g0, src, dst); - assert isDoubleFloatRegister(src); - } - - @Override - public void emit(SPARCAssembler masm) { - assert masm.hasFeature(CPUFeature.VIS3); - super.emit(masm); - } + public void fdtos(Register rs2, Register rd) { + op3(Fpop1, Fdtos, null, rs2, rd); } - public static class Movstosw extends Fmt3p { - public Movstosw(Register src, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Movstosw, g0, src, dst); - assert isSingleFloatRegister(src); - } - - @Override - public void emit(SPARCAssembler masm) { - assert masm.hasFeature(CPUFeature.VIS3); - super.emit(masm); - } + public void movstouw(Register rs2, Register rd) { + op3(Impdep1, Movstosw, null, rs2, rd); + } + + public void movstosw(Register rs2, Register rd) { + op3(Impdep1, Movstosw, null, rs2, rd); } - public static class Movstouw extends Fmt3p { - public Movstouw(Register src, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Movstouw, g0, src, dst); - assert isSingleFloatRegister(src); - } - - @Override - public void emit(SPARCAssembler masm) { - assert masm.hasFeature(CPUFeature.VIS3); - super.emit(masm); - } + public void movdtox(Register rs2, Register rd) { + op3(Impdep1, Movdtox, null, rs2, rd); } - public static class Fdtos extends Fmt3p { - public Fdtos(Register src, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fdtos, g0, src, dst); - assert isSingleFloatRegister(dst); - assert isDoubleFloatRegister(src); - } - } - - public static class Bshuffle extends Fmt3p { - - public Bshuffle(Register src1, Register src2, Register dst) { - /* VIS2 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Bshuffle, src1, src2, dst); - } + public void movxtod(Register rs2, Register rd) { + op3(Impdep1, Movxtod, null, rs2, rd); } // @formatter:off @@ -1921,41 +1726,17 @@ emitInt(instr); } - public static class CammelliaFl extends Fmt3p { - - public CammelliaFl(Register src1, Register src2, Register dst) { - /* CAMELLIA only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.CammelliaFl, src1, src2, dst); - } - } - - public static class CammelliaFli extends Fmt3p { - - public CammelliaFli(Register src1, Register src2, Register dst) { - /* CAMELLIA only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.CammelliaFli, src1, src2, dst); - } - } - public static class Casa extends Fmt11 { public Casa(Register src1, Register src2, Register dst, Asi asi) { - super(Op3s.Casa, src1, src2, dst, asi); + super(Casa, src1, src2, dst, asi); } } public static class Casxa extends Fmt11 { public Casxa(Register src1, Register src2, Register dst, Asi asi) { - super(Op3s.Casxa, src1, src2, dst, asi); - } - } - - public static class Crc32c extends Fmt3p { - - public Crc32c(Register src1, Register src2, Register dst) { - /* CRYPTO only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Crc32c, src1, src2, dst); + super(Casxa, src1, src2, dst, asi); } } @@ -1990,315 +1771,52 @@ fmt00(a, Op2s.Bpr.value, b); } - public static class Edge8cc extends Fmt3p { - - public Edge8cc(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge8cc, src1, src2, dst); - } - } - - public static class Edge8n extends Fmt3p { - - public Edge8n(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge8n, src1, src2, dst); - } - } - - public static class Edge8lcc extends Fmt3p { - - public Edge8lcc(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge8lcc, src1, src2, dst); - } - } - - public static class Edge8ln extends Fmt3p { - - public Edge8ln(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge8ln, src1, src2, dst); - } - } - - public static class Edge16cc extends Fmt3p { - - public Edge16cc(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge16cc, src1, src2, dst); - } + public void fadds(Register rs1, Register rs2, Register rd) { + op3(Fpop1, Fadds, rs1, rs2, rd); } - public static class Edge16n extends Fmt3p { - - public Edge16n(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge16n, src1, src2, dst); - } - } - - public static class Edge16lcc extends Fmt3p { - - public Edge16lcc(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge16lcc, src1, src2, dst); - } - } - - public static class Edge16ln extends Fmt3p { - - public Edge16ln(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge16ln, src1, src2, dst); - } - } - - public static class Edge32cc extends Fmt3p { - - public Edge32cc(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge32cc, src1, src2, dst); - } - } - - public static class Edge32n extends Fmt3p { - - public Edge32n(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge32n, src1, src2, dst); - } + public void faddd(Register rs1, Register rs2, Register rd) { + op3(Fpop1, Faddd, rs1, rs2, rd); } - public static class Edge32lcc extends Fmt3p { - - public Edge32lcc(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge32lcc, src1, src2, dst); - } - } - - public static class Edge32ln extends Fmt3p { - - public Edge32ln(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Edge32ln, src1, src2, dst); - } - } - - public static class Fadds extends Fmt3p { - - public Fadds(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fadds, src1, src2, dst); - } - } - - public static class Faddd extends Fmt3p { - - public Faddd(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Faddd, src1, src2, dst); - } - } - - public static class Faddq extends Fmt3p { - - public Faddq(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Faddq, src1, src2, dst); - } + public void faddq(Register rs1, Register rs2, Register rd) { + op3(Fpop1, Faddq, rs1, rs2, rd); } - public static class Faligndata extends Fmt3p { - - public Faligndata(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Faligndatag, src1, src2, dst); - } - } - - public static class Fdivs extends Fmt3p { - - public Fdivs(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fdivs, src1, src2, dst); - } - } - - public static class Fdivd extends Fmt3p { - - public Fdivd(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fdivd, src1, src2, dst); - } + public void fdivs(Register rs1, Register rs2, Register rd) { + op3(Fpop1, Fdivs, rs1, rs2, rd); } - /** - * Floating-point multiply-add single (fused). - */ - public static class Fmadds extends Fmt5a { - - public Fmadds(SPARCAssembler asm, Register src1, Register src2, Register src3, Register dst) { - super(asm, Ops.ArithOp.getValue(), Op3s.Impdep2.getValue(), Op5s.Fmadds.getValue(), src1.encoding(), src2.encoding(), src3.encoding(), dst.encoding()); - } - } - - /** - * Floating-point multiply-add double (fused). - */ - public static class Fmaddd extends Fmt5a { - - public Fmaddd(SPARCAssembler asm, Register src1, Register src2, Register src3, Register dst) { - super(asm, Ops.ArithOp.getValue(), Op3s.Impdep2.getValue(), Op5s.Fmaddd.getValue(), src1.encoding(), src2.encoding(), src3.encoding(), dst.encoding()); - } + public void fdivd(Register rs1, Register rs2, Register rd) { + op3(Fpop1, Fdivd, rs1, rs2, rd); } - /** - * 16-bit partitioned average. - */ - public static class Fmean16 extends Fmt3p { - - public Fmean16(Register src1, Register src2, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fmean16, src1, src2, dst); - } - } - - public static class Fmsubs extends Fmt5a { - - public Fmsubs(SPARCAssembler asm, Register src1, Register src2, Register src3, Register dst) { - super(asm, Ops.ArithOp.getValue(), Op3s.Impdep2.getValue(), Op5s.Fmsubs.getValue(), src1.encoding(), src2.encoding(), src3.encoding(), dst.encoding()); - assert isSingleFloatRegister(src1); - assert isSingleFloatRegister(src2); - assert isSingleFloatRegister(src3); - assert isSingleFloatRegister(dst); - } - } - - public static class Fmsubd extends Fmt5a { - - public Fmsubd(SPARCAssembler asm, Register src1, Register src2, Register src3, Register dst) { - super(asm, Ops.ArithOp.getValue(), Op3s.Impdep2.getValue(), Op5s.Fmsubd.getValue(), src1.encoding(), src2.encoding(), src3.encoding(), dst.encoding()); - assert isDoubleFloatRegister(src1); - assert isDoubleFloatRegister(src2); - assert isDoubleFloatRegister(src3); - assert isDoubleFloatRegister(dst); - } + public void fmovs(Register rs2, Register rd) { + op3(Fpop1, Fmovs, null, rs2, rd); } - public static class Fmovs extends Fmt3p { - - public Fmovs(Register src, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fmovs, g0, src, dst); - assert isSingleFloatRegister(src); - assert isSingleFloatRegister(dst); - } - } - - public static class Fmovd extends Fmt3p { - - public Fmovd(Register src, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fmovd, g0, src, dst); - } - } - - public static class Fmuls extends Fmt3p { - - public Fmuls(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fmuls, src1, src2, dst); - assert isSingleFloatRegister(src1); - assert isSingleFloatRegister(src2); - assert isSingleFloatRegister(dst); - } - } - - public static class Fmuld extends Fmt3p { - - public Fmuld(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fmuld, src1, src2, dst); - assert isDoubleFloatRegister(src1); - assert isDoubleFloatRegister(src2); - assert isDoubleFloatRegister(dst); - } - } - - public static class Fsmuld extends Fmt3p { - - public Fsmuld(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fsmuld, src1, src2, dst); - assert isSingleFloatRegister(src1); - assert isSingleFloatRegister(src2); - assert isDoubleFloatRegister(dst); - } + public void fmovd(Register rs2, Register rd) { + op3(Fpop1, Fmovd, null, rs2, rd); } - public static class Fmul8x16 extends Fmt3p { - - public Fmul8x16(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fmul8x16, src1, src2, dst); - } - } - - public static class Fmul8x16au extends Fmt3p { - - public Fmul8x16au(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fmul8x16, src1, src2, dst); - } - } - - public static class Fmul8x16al extends Fmt3p { - - public Fmul8x16al(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fmul8x16al, src1, src2, dst); - } - } - - public static class Fmul8sux16 extends Fmt3p { - - public Fmul8sux16(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fmul8sux16, src1, src2, dst); - } + public void fmuls(Register rs1, Register rs2, Register rd) { + op3(Fpop1, Fmuls, rs1, rs2, rd); } - public static class Fmul8ulx16 extends Fmt3p { - - public Fmul8ulx16(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fmul8ulx16, src1, src2, dst); - } - } - - public static class Fmuld8sux16 extends Fmt3p { - - public Fmuld8sux16(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fmuld8sux16, src1, src2, dst); - } + public void fsmuld(Register rs1, Register rs2, Register rd) { + op3(Fpop1, Fsmuld, rs1, rs2, rd); } - public static class Fmuld8ulx16 extends Fmt3p { - - public Fmuld8ulx16(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fmuld8ulx16, src1, src2, dst); - } - } - - public static class Fnadds extends Fmt3p { - - public Fnadds(Register src1, Register src2, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fnadds, src1, src2, dst); - assert isSingleFloatRegister(src1); - assert isSingleFloatRegister(src2); - assert isSingleFloatRegister(dst); - } - } - - public static class Fnaddd extends Fmt3p { - - public Fnaddd(Register src1, Register src2, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fnaddd, src1, src2, dst); - assert isDoubleFloatRegister(src1); - assert isDoubleFloatRegister(src2); - assert isDoubleFloatRegister(dst); - } + public void fmuld(Register rs1, Register rs2, Register rd) { + op3(Fpop1, Fmuld, rs1, rs2, rd); } public void fnegs(Register rs2, Register rd) { - op3(Op3s.Fpop1, Opfs.Fnegs, null, rs2, rd); + op3(Fpop1, Fnegs, null, rs2, rd); } public void fnegd(Register rs2, Register rd) { - op3(Op3s.Fpop1, Opfs.Fnegd, null, rs2, rd); + op3(Fpop1, Fnegd, null, rs2, rd); } private void op3(Op3s op3, Opfs opf, Register rs1, Register rs2, Register rd) { @@ -2306,147 +1824,48 @@ fmt10(rd.encoding, op3.value, rs1 == null ? 0 : rs1.encoding, b); } - public static class Fnhadds extends Fmt3p { - - public Fnhadds(Register src1, Register src2, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fnhadds, src1, src2, dst); - assert isSingleFloatRegister(src1); - assert isSingleFloatRegister(src2); - assert isSingleFloatRegister(dst); - } - } - - public static class Fnhaddd extends Fmt3p { - - public Fnhaddd(Register src1, Register src2, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fnhaddd, src1, src2, dst); - assert isDoubleFloatRegister(src1); - assert isDoubleFloatRegister(src2); - assert isDoubleFloatRegister(dst); - } - } - - public static class Fnmadds extends Fmt5a { - - public Fnmadds(SPARCAssembler asm, Register src1, Register src2, Register src3, Register dst) { - super(asm, Ops.ArithOp.getValue(), Op3s.Impdep2.getValue(), Op5s.Fnmadds.getValue(), src1.encoding(), src2.encoding(), src3.encoding(), dst.encoding()); - assert isSingleFloatRegister(src1); - assert isSingleFloatRegister(src2); - assert isSingleFloatRegister(src3); - assert isSingleFloatRegister(dst); - } - } - - public static class Fnmaddd extends Fmt5a { - - public Fnmaddd(SPARCAssembler asm, Register src1, Register src2, Register src3, Register dst) { - super(asm, Ops.ArithOp.getValue(), Op3s.Impdep2.getValue(), Op5s.Fnmaddd.getValue(), src1.encoding(), src2.encoding(), src3.encoding(), dst.encoding()); - assert isDoubleFloatRegister(src1); - assert isDoubleFloatRegister(src2); - assert isDoubleFloatRegister(src3); - assert isDoubleFloatRegister(dst); - } - } - - public static class Fnmsubs extends Fmt5a { - - public Fnmsubs(SPARCAssembler masm, Register src1, Register src2, Register src3, Register dst) { - super(masm, Ops.ArithOp.getValue(), Op3s.Impdep2.getValue(), Op5s.Fnmsubs.getValue(), src1.encoding(), src2.encoding(), src3.encoding(), dst.encoding()); - assert isSingleFloatRegister(src1); - assert isSingleFloatRegister(src2); - assert isSingleFloatRegister(src3); - assert isSingleFloatRegister(dst); - } - } - - public static class Fnmsubd extends Fmt5a { - - public Fnmsubd(SPARCAssembler masm, Register src1, Register src2, Register src3, Register dst) { - super(masm, Ops.ArithOp.getValue(), Op3s.Impdep2.getValue(), Op5s.Fnmsubd.getValue(), src1.encoding(), src2.encoding(), src3.encoding(), dst.encoding()); - assert isDoubleFloatRegister(src1); - assert isDoubleFloatRegister(src2); - assert isDoubleFloatRegister(src3); - assert isDoubleFloatRegister(dst); - } - } - - public static class Fnmuls extends Fmt3p { - - public Fnmuls(Register src1, Register src2, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fnmuls, src1, src2, dst); - assert isSingleFloatRegister(src1); - assert isSingleFloatRegister(src2); - assert isSingleFloatRegister(dst); - } - } - - public static class Fnmuld extends Fmt3p { - - public Fnmuld(Register src1, Register src2, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fnmuld, src1, src2, dst); - assert isDoubleFloatRegister(src1); - assert isDoubleFloatRegister(src2); - assert isDoubleFloatRegister(dst); - } - } - - public static class Fnsmuld extends Fmt3p { - - public Fnsmuld(Register src1, Register src2, Register dst) { - /* VIS3 only */ - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fnsmuld, src1, src2, dst); - assert isDoubleFloatRegister(src1); - assert isDoubleFloatRegister(src2); - assert isDoubleFloatRegister(dst); - } - } - public void fstoi(Register rs2, Register rd) { - op3(Op3s.Fpop1, Opfs.Fstoi, null, rs2, rd); + op3(Fpop1, Fstoi, null, rs2, rd); } public void fstox(Register rs2, Register rd) { - op3(Op3s.Fpop1, Opfs.Fstox, null, rs2, rd); + op3(Fpop1, Fstox, null, rs2, rd); } public void fdtox(Register rs2, Register rd) { - op3(Op3s.Fpop1, Opfs.Fdtox, null, rs2, rd); + op3(Fpop1, Fdtox, null, rs2, rd); } public void fstod(Register rs2, Register rd) { - op3(Op3s.Fpop1, Opfs.Fstod, null, rs2, rd); + op3(Fpop1, Fstod, null, rs2, rd); } public void fdtoi(Register rs2, Register rd) { - op3(Op3s.Fpop1, Opfs.Fdtoi, null, rs2, rd); + op3(Fpop1, Fdtoi, null, rs2, rd); } public void fitos(Register rs2, Register rd) { - op3(Op3s.Fpop1, Opfs.Fitos, null, rs2, rd); + op3(Fpop1, Fitos, null, rs2, rd); } public void fitod(Register rs2, Register rd) { - op3(Op3s.Fpop1, Opfs.Fitod, null, rs2, rd); + op3(Fpop1, Fitod, null, rs2, rd); } public void fxtos(Register rs2, Register rd) { - op3(Op3s.Fpop1, Opfs.Fxtos, null, rs2, rd); + op3(Fpop1, Fxtos, null, rs2, rd); } public void fxtod(Register rs2, Register rd) { - op3(Op3s.Fpop1, Opfs.Fxtod, null, rs2, rd); + op3(Fpop1, Fxtod, null, rs2, rd); } public void fzeros(Register rd) { - op3(Op3s.Impdep1, Opfs.Fzeros, null, null, rd); + op3(Impdep1, Fzeros, null, null, rd); } public void fzerod(Register rd) { - op3(Op3s.Impdep1, Opfs.Fzerod, null, null, rd); + op3(Impdep1, Fzerod, null, null, rd); } /** @@ -2455,219 +1874,32 @@ public static class Flushw extends Fmt10 { public Flushw() { - super(Op3s.Flushw); - } - } - - public static class Fpack16 extends Fmt3p { - - public Fpack16(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpack16, src1, src2, dst); - } - } - - public static class Fpack32 extends Fmt3p { - - public Fpack32(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpack32, src1, src2, dst); - } - } - - public static class Fpackfix extends Fmt3p { - - public Fpackfix(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpackfix, src1, src2, dst); - } - } - - public static class Fpmaddx extends Fmt5a { - - public Fpmaddx(SPARCAssembler asm, Register src1, Register src2, Register src3, Register dst) { - super(asm, Ops.ArithOp.getValue(), Op3s.Impdep2.getValue(), 0, src1.encoding(), src2.encoding(), src3.encoding(), dst.encoding()); - assert isDoubleFloatRegister(src1); - assert isDoubleFloatRegister(src2); - assert isDoubleFloatRegister(src3); - assert isDoubleFloatRegister(dst); - } - } - - public static class Fpmaddxhi extends Fmt5a { - - public Fpmaddxhi(SPARCAssembler asm, Register src1, Register src2, Register src3, Register dst) { - super(asm, Ops.ArithOp.getValue(), Op3s.Impdep2.getValue(), 4, src1.encoding(), src2.encoding(), src3.encoding(), dst.encoding()); - assert isDoubleFloatRegister(src1); - assert isDoubleFloatRegister(src2); - assert isDoubleFloatRegister(src3); - assert isDoubleFloatRegister(dst); - } - } - - public static class Fpmerge extends Fmt3p { - - public Fpmerge(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpmerge, src1, src2, dst); - assert isSingleFloatRegister(src1); - assert isSingleFloatRegister(src2); - assert isDoubleFloatRegister(dst); - } - } - - public static class Fpsub16 extends Fmt3p { - - public Fpsub16(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpsub16, src1, src2, dst); - } - } - - public static class Fpsub16s extends Fmt3p { - - public Fpsub16s(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpsub16s, src1, src2, dst); - } - } - - public static class Fpsub32 extends Fmt3p { - - public Fpsub32(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpsub32, src1, src2, dst); - } - } - - public static class Fpsub32s extends Fmt3p { - - public Fpsub32s(Register src1, Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpsub32s, src1, src2, dst); - } - } - - public static class Fpsub64 extends Fmt3p { - - public Fpsub64(Register src1, Register src2, Register dst) { - /* OSA 2011 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpsub64, src1, src2, dst); - } - } - - public static class Fpsubs16 extends Fmt3p { - - public Fpsubs16(Register src1, Register src2, Register dst) { - /* OSA 2011 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpsubs16, src1, src2, dst); + super(Flushw); } } - public static class Fpsubs16s extends Fmt3p { - - public Fpsubs16s(Register src1, Register src2, Register dst) { - /* OSA 2011 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpsubs16s, src1, src2, dst); - } - } - - public static class Fpsubs32 extends Fmt3p { - - public Fpsubs32(Register src1, Register src2, Register dst) { - /* OSA 2011 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpsubs32, src1, src2, dst); - } - } - - public static class Fpsubs32s extends Fmt3p { - - public Fpsubs32s(Register src1, Register src2, Register dst) { - /* OSA 2011 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fpsubs32s, src1, src2, dst); - } + public void fsqrtd(Register rs2, Register rd) { + op3(Fpop1, Fsqrtd, null, rs2, rd); } - public static class Fsqrtd extends Fmt3p { - - public Fsqrtd(Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fsqrtd, SPARC.r0, src2, dst); - } + public void fsqrts(Register rs2, Register rd) { + op3(Fpop1, Fsqrts, null, rs2, rd); } - public static class Fsqrts extends Fmt3p { - - public Fsqrts(Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fsqrts, SPARC.r0, src2, dst); - } - } - - public static class Fabss extends Fmt3p { - public Fabss(Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fabss, SPARC.r0, src2, dst); - } - } - - public static class Fabsd extends Fmt3p { - public Fabsd(Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fabsd, SPARC.r0, src2, dst); - } + public void fabss(Register rs2, Register rd) { + op3(Fpop1, Fabss, null, rs2, rd); } - public static class Fsrc1d extends Fmt3p { - - public Fsrc1d(Register src1, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fsrc1d, src1, SPARC.r0, dst); - } - } - - public static class Fsrc1s extends Fmt3p { - - public Fsrc1s(Register src1, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fsrc1s, src1, SPARC.r0, dst); - } - } - - public static class Fsrc2d extends Fmt3p { - - public Fsrc2d(Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fsrc2d, SPARC.r0, src2, dst); - } + public void fabsd(Register rs2, Register rd) { + op3(Fpop1, Fabsd, null, rs2, rd); } - public static class Fsrc2s extends Fmt3p { - - public Fsrc2s(Register src2, Register dst) { - /* VIS1 only */ - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fsrc2s, SPARC.r0, src2, dst); - } - } - - public static class Fsubs extends Fmt3p { - - public Fsubs(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fsubs, src1, src2, dst); - assert isSingleFloatRegister(src1); - assert isSingleFloatRegister(src2); - assert isSingleFloatRegister(dst); - } + public void fsubs(Register rs1, Register rs2, Register rd) { + op3(Fpop1, Fsubs, rs1, rs2, rd); } - public static class Fsubd extends Fmt3p { - - public Fsubd(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fsubd, src1, src2, dst); - assert isDoubleFloatRegister(src1); - assert isDoubleFloatRegister(src2); - assert isDoubleFloatRegister(dst); - } - } - - public static class Fsubq extends Fmt3p { - - public Fsubq(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Fpop1, Opfs.Fsubq, src1, src2, dst); - } + public void fsubd(Register rs1, Register rs2, Register rd) { + op3(Fpop1, Fsubd, rs1, rs2, rd); } // @formatter:off @@ -2682,7 +1914,7 @@ public void fcmp(CC cc, Opfs opf, Register rs1, Register rs2) { int a = cc.value; int b = opf.value << 5 | rs2.encoding; - fmt10(a, Op3s.Fcmp.value, rs1.encoding, b); + fmt10(a, Fcmp.value, rs1.encoding, b); } // @formatter:off @@ -2707,23 +1939,23 @@ public static class Jmpl extends Fmt10 { public Jmpl(Register src, int simm13, Register dst) { - super(Op3s.Jmpl, src, simm13, dst); + super(Jmpl, src, simm13, dst); } public Jmpl(Register src1, Register src2, Register dst) { - super(Op3s.Jmpl, src1, src2, dst); + super(Jmpl, src1, src2, dst); } } public static class Lddf extends Fmt11 { public Lddf(SPARCAddress src, Register dst) { - super(Op3s.Lddf, src, dst); + super(Lddf, src, dst); assert dst == f0 || dst == f2 || dst == f4 || dst == f6 || isDoubleFloatRegister(dst); } public Lddf(Register src, Register dst) { - super(Op3s.Lddf, src, dst); + super(Lddf, src, dst); assert dst == f0 || dst == f2 || dst == f4 || dst == f6 || isDoubleFloatRegister(dst); } } @@ -2731,12 +1963,12 @@ public static class Ldf extends Fmt11 { public Ldf(SPARCAddress src, Register dst) { - super(Op3s.Ldf, src, dst); + super(Ldf, src, dst); assert isSingleFloatRegister(dst); } public Ldf(Register src, Register dst) { - super(Op3s.Ldf, src, dst); + super(Ldf, src, dst); assert isSingleFloatRegister(dst); } } @@ -2744,95 +1976,95 @@ public static class Ldsb extends Fmt11 { public Ldsb(SPARCAddress src, Register dst) { - super(Op3s.Ldsb, src, dst); + super(Ldsb, src, dst); } } public static class Ldsh extends Fmt11 { public Ldsh(SPARCAddress src, Register dst) { - super(Op3s.Ldsh, src, dst); + super(Ldsh, src, dst); } } public static class Lduh extends Fmt11 { public Lduh(SPARCAddress src, Register dst) { - super(Op3s.Lduh, src, dst); + super(Lduh, src, dst); } } public static class Ldub extends Fmt11 { public Ldub(SPARCAddress src, Register dst) { - super(Op3s.Ldub, src, dst); + super(Ldub, src, dst); } } public static class Ldsw extends Fmt11 { public Ldsw(SPARCAddress src, Register dst) { - super(Op3s.Ldsw, src, dst); + super(Ldsw, src, dst); } } public static class Lduw extends Fmt11 { public Lduw(SPARCAddress src, Register dst) { - super(Op3s.Lduw, src, dst); + super(Lduw, src, dst); } } public static class Ldx extends Fmt11 { public Ldx(SPARCAddress src, Register dst) { - super(Op3s.Ldx, src, dst); + super(Ldx, src, dst); } } public static class Ldxa extends Fmt11 { public Ldxa(Register src1, Register src2, Register dst, Asi asi) { - super(Op3s.Ldxa, src1, src2, dst, asi); + super(Ldxa, src1, src2, dst, asi); } } public static class Lduwa extends Fmt11 { public Lduwa(Register src1, Register src2, Register dst, Asi asi) { - super(Op3s.Lduwa, src1, src2, dst, asi); + super(Lduwa, src1, src2, dst, asi); } } public static class Membar extends Fmt10 { public Membar(int barriers) { - super(Op3s.Membar, r15, barriers, r0); + super(Membar, r15, barriers, r0); } } public static class Fmovscc extends Fmt10d { public Fmovscc(ConditionFlag cond, CC cca, Register src2, Register dst) { - super(Op3s.Fpop2, Opfs.Fmovscc, cond, cca, src2, dst); + super(Fpop2, Fmovscc, cond, cca, src2, dst); } } public static class Fmovdcc extends Fmt10d { public Fmovdcc(ConditionFlag cond, CC cca, Register src2, Register dst) { - super(Op3s.Fpop2, Opfs.Fmovdcc, cond, cca, src2, dst); + super(Fpop2, Fmovdcc, cond, cca, src2, dst); } } public static class Movcc extends Fmt10c { public Movcc(ConditionFlag cond, CC cca, Register src2, Register dst) { - super(Op3s.Movcc, cond, cca, src2, dst); + super(Movcc, cond, cca, src2, dst); } public Movcc(ConditionFlag cond, CC cca, int simm11, Register dst) { - super(Op3s.Movcc, cond, cca, simm11, dst); + super(Movcc, cond, cca, simm11, dst); } } @@ -2841,89 +2073,89 @@ @Deprecated public Mulscc(Register src1, int simm13, Register dst) { - super(Op3s.Mulscc, src1, simm13, dst); + super(Mulscc, src1, simm13, dst); } @Deprecated public Mulscc(Register src1, Register src2, Register dst) { - super(Op3s.Mulscc, src1, src2, dst); + super(Mulscc, src1, src2, dst); } } public static class Mulx extends Fmt10 { public Mulx(Register src1, int simm13, Register dst) { - super(Op3s.Mulx, src1, simm13, dst); + super(Mulx, src1, simm13, dst); } public Mulx(Register src1, Register src2, Register dst) { - super(Op3s.Mulx, src1, src2, dst); + super(Mulx, src1, src2, dst); } } public static class SMulcc extends Fmt10 { public SMulcc(Register src1, int simm13, Register dst) { - super(Op3s.Smulcc, src1, simm13, dst); + super(Smulcc, src1, simm13, dst); } public SMulcc(Register src1, Register src2, Register dst) { - super(Op3s.Smulcc, src1, src2, dst); + super(Smulcc, src1, src2, dst); } } public static class Or extends Fmt10 { public Or(Register src1, int simm13, Register dst) { - super(Op3s.Or, src1, simm13, dst); + super(Or, src1, simm13, dst); } public Or(Register src1, Register src2, Register dst) { - super(Op3s.Or, src1, src2, dst); + super(Or, src1, src2, dst); } } public static class Orcc extends Fmt10 { public Orcc(Register src1, int simm13, Register dst) { - super(Op3s.Orcc, src1, simm13, dst); + super(Orcc, src1, simm13, dst); } public Orcc(Register src1, Register src2, Register dst) { - super(Op3s.Orcc, src1, src2, dst); + super(Orcc, src1, src2, dst); } } public static class Orn extends Fmt10 { public Orn(Register src1, int simm13, Register dst) { - super(Op3s.Orn, src1, simm13, dst); + super(Orn, src1, simm13, dst); } public Orn(Register src1, Register src2, Register dst) { - super(Op3s.Orn, src1, src2, dst); + super(Orn, src1, src2, dst); } } public static class Orncc extends Fmt10 { public Orncc(Register src1, int simm13, Register dst) { - super(Op3s.Orncc, src1, simm13, dst); + super(Orncc, src1, simm13, dst); } public Orncc(Register src1, Register src2, Register dst) { - super(Op3s.Orncc, src1, src2, dst); + super(Orncc, src1, src2, dst); } } public static class Popc extends Fmt10 { public Popc(int simm13, Register dst) { - super(Op3s.Popc, r0, simm13, dst); + super(Popc, r0, simm13, dst); } public Popc(Register src2, Register dst) { - super(Op3s.Popc, r0, src2, dst); + super(Popc, r0, src2, dst); } } @@ -2953,7 +2185,7 @@ } public Prefetch(SPARCAddress addr, Prefetch.Fcn fcn) { - super(Op3s.Prefetch, addr, fcn); + super(Prefetch, addr, fcn); } } @@ -2963,67 +2195,67 @@ public static class Rdy extends Fmt10 { public Rdy(Register dst) { - super(Op3s.Rdreg, r0, dst); + super(Rdreg, r0, dst); } } public static class Rdccr extends Fmt10 { public Rdccr(Register dst) { - super(Op3s.Rdreg, r2, dst); + super(Rdreg, r2, dst); } } public static class Rdasi extends Fmt10 { public Rdasi(Register dst) { - super(Op3s.Rdreg, r3, dst); + super(Rdreg, r3, dst); } } public static class Rdtick extends Fmt10 { public Rdtick(Register dst) { - super(Op3s.Rdreg, r4, dst); + super(Rdreg, r4, dst); } } public static class Rdpc extends Fmt10 { public Rdpc(Register dst) { - super(Op3s.Rdreg, r5, dst); + super(Rdreg, r5, dst); } } public static class Rdfprs extends Fmt10 { public Rdfprs(Register dst) { - super(Op3s.Rdreg, r6, dst); + super(Rdreg, r6, dst); } } public static class Restore extends Fmt10 { public Restore(Register src1, Register src2, Register dst) { - super(Op3s.Restore, src1, src2, dst); + super(Restore, src1, src2, dst); } } public static class Restored extends Fmt10 { public Restored() { - super(Op3s.Saved, r0, r0, r1); + super(Saved, r0, r0, r1); } } public static class Return extends Fmt10 { public Return(Register src1, int simm13) { - super(Op3s.Rett, src1, simm13, r0); + super(Rett, src1, simm13, r0); } public Return(Register src1, Register src2) { - super(Op3s.Rett, src1, src2, r0); + super(Rett, src1, src2, r0); } public static final int PC_RETURN_OFFSET = 8; @@ -3032,18 +2264,18 @@ public static class Save extends Fmt10 { public Save(Register src1, Register src2, Register dst) { - super(Op3s.Save, src1, src2, dst); + super(Save, src1, src2, dst); } public Save(Register src1, int simm13, Register dst) { - super(Op3s.Save, src1, simm13, dst); + super(Save, src1, simm13, dst); } } public static class Saved extends Fmt10 { public Saved() { - super(Op3s.Saved, r0, r0, r0); + super(Saved, r0, r0, r0); } } @@ -3052,12 +2284,12 @@ @Deprecated public Sdiv(Register src1, int simm13, Register dst) { - super(Op3s.Sdiv, src1, simm13, dst); + super(Sdiv, src1, simm13, dst); } @Deprecated public Sdiv(Register src1, Register src2, Register dst) { - super(Op3s.Sdiv, src1, src2, dst); + super(Sdiv, src1, src2, dst); } } @@ -3066,23 +2298,23 @@ @Deprecated public Sdivcc(Register src1, int simm13, Register dst) { - super(Op3s.Sdivcc, src1, simm13, dst); + super(Sdivcc, src1, simm13, dst); } @Deprecated public Sdivcc(Register src1, Register src2, Register dst) { - super(Op3s.Sdivcc, src1, src2, dst); + super(Sdivcc, src1, src2, dst); } } public static class Sdivx extends Fmt10 { public Sdivx(Register src1, int simm13, Register dst) { - super(Op3s.Sdivx, src1, simm13, dst); + super(Sdivx, src1, simm13, dst); } public Sdivx(Register src1, Register src2, Register dst) { - super(Op3s.Sdivx, src1, src2, dst); + super(Sdivx, src1, src2, dst); } } @@ -3093,230 +2325,210 @@ public static class Sir extends Fmt10 { public Sir(int simm13) { - super(Op3s.Sir, r0, simm13, r15); + super(Sir, r0, simm13, r15); } } public static class Sll extends Fmt10 { public Sll(Register src1, int shcnt32, Register dst) { - super(Op3s.Sll, src1, shcnt32, dst); + super(Sll, src1, shcnt32, dst); } public Sll(Register src1, Register src2, Register dst) { - super(Op3s.Sll, src1, src2, dst); + super(Sll, src1, src2, dst); } } public static class Sllx extends Fmt10 { public Sllx(Register src1, int shcnt64, Register dst) { - super(Op3s.Sllx, src1, shcnt64, dst); + super(Sllx, src1, shcnt64, dst); } public Sllx(Register src1, Register src2, Register dst) { - super(Op3s.Sllx, src1, src2, dst); + super(Sllx, src1, src2, dst); } } public static class Sra extends Fmt10 { public Sra(Register src1, int shcnt32, Register dst) { - super(Op3s.Sra, src1, shcnt32, dst); + super(Sra, src1, shcnt32, dst); } public Sra(Register src1, Register src2, Register dst) { - super(Op3s.Sra, src1, src2, dst); + super(Sra, src1, src2, dst); } } public static class Srax extends Fmt10 { public Srax(Register src1, int shcnt64, Register dst) { - super(Op3s.Srax, src1, shcnt64, dst); + super(Srax, src1, shcnt64, dst); } public Srax(Register src1, Register src2, Register dst) { - super(Op3s.Srax, src1, src2, dst); + super(Srax, src1, src2, dst); } } public static class Srl extends Fmt10 { public Srl(Register src1, int shcnt32, Register dst) { - super(Op3s.Srl, src1, shcnt32, dst); + super(Srl, src1, shcnt32, dst); } public Srl(Register src1, Register src2, Register dst) { - super(Op3s.Srl, src1, src2, dst); + super(Srl, src1, src2, dst); } } public static class Srlx extends Fmt10 { public Srlx(Register src1, int shcnt64, Register dst) { - super(Op3s.Srlx, src1, shcnt64, dst); + super(Srlx, src1, shcnt64, dst); } public Srlx(Register src1, Register src2, Register dst) { - super(Op3s.Srlx, src1, src2, dst); - } - } - - public static class Fandd extends Fmt3p { - public Fandd(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fandd, src1, src2, dst); + super(Srlx, src1, src2, dst); } } - public static class Fxord extends Fmt3p { - public Fxord(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fxord, src1, src2, dst); - } - } - - public static class Fxors extends Fmt3p { - public Fxors(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fxors, src1, src2, dst); - } - } - - public static class Fands extends Fmt3p { - public Fands(Register src1, Register src2, Register dst) { - super(Ops.ArithOp, Op3s.Impdep1, Opfs.Fands, src1, src2, dst); - } + public void fandd(Register rs1, Register rs2, Register rd) { + op3(Impdep1, Fandd, rs1, rs2, rd); } public static class Stb extends Fmt11 { public Stb(Register dst, SPARCAddress addr) { - super(Op3s.Stb, addr, dst); + super(Stb, addr, dst); } } public static class Stdf extends Fmt11 { public Stdf(Register dst, SPARCAddress src) { - super(Op3s.Stdf, src, dst); + super(Stdf, src, dst); } } public static class Stf extends Fmt11 { public Stf(Register dst, SPARCAddress src) { - super(Op3s.Stf, src, dst); + super(Stf, src, dst); } } public static class Sth extends Fmt11 { public Sth(Register dst, SPARCAddress addr) { - super(Op3s.Sth, addr, dst); + super(Sth, addr, dst); } } public static class Stw extends Fmt11 { public Stw(Register dst, SPARCAddress addr) { - super(Op3s.Stw, addr, dst); + super(Stw, addr, dst); } } public static class Stx extends Fmt11 { public Stx(Register dst, SPARCAddress addr) { - super(Op3s.Stx, addr, dst); + super(Stx, addr, dst); } } public static class Sub extends Fmt10 { public Sub(Register src1, int simm13, Register dst) { - super(Op3s.Sub, src1, simm13, dst); + super(Sub, src1, simm13, dst); } public Sub(Register src1, Register src2, Register dst) { - super(Op3s.Sub, src1, src2, dst); + super(Sub, src1, src2, dst); } } public static class Subc extends Fmt10 { public Subc(Register src1, int simm13, Register dst) { - super(Op3s.Subc, src1, simm13, dst); + super(Subc, src1, simm13, dst); } public Subc(Register src1, Register src2, Register dst) { - super(Op3s.Subc, src1, src2, dst); + super(Subc, src1, src2, dst); } } public static class Subcc extends Fmt10 { public Subcc(Register src1, int simm13, Register dst) { - super(Op3s.Subcc, src1, simm13, dst); + super(Subcc, src1, simm13, dst); } public Subcc(Register src1, Register src2, Register dst) { - super(Op3s.Subcc, src1, src2, dst); + super(Subcc, src1, src2, dst); } } public static class Subccc extends Fmt10 { public Subccc(Register src1, int simm13, Register dst) { - super(Op3s.Subccc, src1, simm13, dst); + super(Subccc, src1, simm13, dst); } public Subccc(Register src1, Register src2, Register dst) { - super(Op3s.Subccc, src1, src2, dst); + super(Subccc, src1, src2, dst); } } public static class Ta extends Fmt10 { public Ta(int trap) { - super(Op3s.Trap, g0, trap, ConditionFlag.Always); + super(Trap, g0, trap, ConditionFlag.Always); } } public static class Tcc extends Fmt10 { public Tcc(ConditionFlag flag, int trap) { - super(Op3s.Trap, g0, trap, flag); + super(Trap, g0, trap, flag); } } public static class Taddcc extends Fmt10 { public Taddcc(Register src1, int simm13, Register dst) { - super(Op3s.Taddcc, src1, simm13, dst); + super(Taddcc, src1, simm13, dst); } public Taddcc(Register src1, Register src2, Register dst) { - super(Op3s.Taddcc, src1, src2, dst); + super(Taddcc, src1, src2, dst); } } public static class Tsubcc extends Fmt10 { public Tsubcc(Register src1, int simm13, Register dst) { - super(Op3s.Tsubcc, src1, simm13, dst); + super(Tsubcc, src1, simm13, dst); } public Tsubcc(Register src1, Register src2, Register dst) { - super(Op3s.Tsubcc, src1, src2, dst); + super(Tsubcc, src1, src2, dst); } } public static class Udivx extends Fmt10 { public Udivx(Register src1, int simm13, Register dst) { - super(Op3s.Udivx, src1, simm13, dst); + super(Udivx, src1, simm13, dst); } public Udivx(Register src1, Register src2, Register dst) { - super(Op3s.Udivx, src1, src2, dst); + super(Udivx, src1, src2, dst); } } @@ -3325,89 +2537,89 @@ @Deprecated public Wry(Register src1, int simm13) { - super(Op3s.Wrreg, src1, simm13, r0); + super(Wrreg, src1, simm13, r0); } @Deprecated public Wry(Register src1, Register src2) { - super(Op3s.Wrreg, src1, src2, r0); + super(Wrreg, src1, src2, r0); } } public static class Wrccr extends Fmt10 { public Wrccr(Register src1, int simm13) { - super(Op3s.Wrreg, src1, simm13, r2); + super(Wrreg, src1, simm13, r2); } public Wrccr(Register src1, Register src2) { - super(Op3s.Wrreg, src1, src2, r2); + super(Wrreg, src1, src2, r2); } } public static class Wrasi extends Fmt10 { public Wrasi(Register src1, int simm13) { - super(Op3s.Wrreg, src1, simm13, r3); + super(Wrreg, src1, simm13, r3); } public Wrasi(Register src1, Register src2) { - super(Op3s.Wrreg, src1, src2, r3); + super(Wrreg, src1, src2, r3); } } public static class Wrfprs extends Fmt10 { public Wrfprs(Register src1, int simm13) { - super(Op3s.Wrreg, src1, simm13, r6); + super(Wrreg, src1, simm13, r6); } public Wrfprs(Register src1, Register src2) { - super(Op3s.Wrreg, src1, src2, r6); + super(Wrreg, src1, src2, r6); } } public static class Xor extends Fmt10 { public Xor(Register src1, int simm13, Register dst) { - super(Op3s.Xor, src1, simm13, dst); + super(Xor, src1, simm13, dst); } public Xor(Register src1, Register src2, Register dst) { - super(Op3s.Xor, src1, src2, dst); + super(Xor, src1, src2, dst); } } public static class Xorcc extends Fmt10 { public Xorcc(Register src1, int simm13, Register dst) { - super(Op3s.Xorcc, src1, simm13, dst); + super(Xorcc, src1, simm13, dst); } public Xorcc(Register src1, Register src2, Register dst) { - super(Op3s.Xorcc, src1, src2, dst); + super(Xorcc, src1, src2, dst); } } public static class Xnor extends Fmt10 { public Xnor(Register src1, int simm13, Register dst) { - super(Op3s.Xnor, src1, simm13, dst); + super(Xnor, src1, simm13, dst); } public Xnor(Register src1, Register src2, Register dst) { - super(Op3s.Xnor, src1, src2, dst); + super(Xnor, src1, src2, dst); } } public static class Xnorcc extends Fmt10 { public Xnorcc(Register src1, int simm13, Register dst) { - super(Op3s.Xnorcc, src1, simm13, dst); + super(Xnorcc, src1, simm13, dst); } public Xnorcc(Register src1, Register src2, Register dst) { - super(Op3s.Xnorcc, src1, src2, dst); + super(Xnorcc, src1, src2, dst); } } }
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java Fri Feb 27 13:55:38 2015 +0100 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java Fri Feb 27 14:43:40 2015 +0100 @@ -40,17 +40,6 @@ import com.oracle.graal.asm.sparc.SPARCAssembler.Add; import com.oracle.graal.asm.sparc.SPARCAssembler.Addcc; import com.oracle.graal.asm.sparc.SPARCAssembler.And; -import com.oracle.graal.asm.sparc.SPARCAssembler.Faddd; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fadds; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fandd; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fdivd; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fdivs; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fdtos; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fmuld; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fmuls; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fsmuld; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fsubd; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fsubs; import com.oracle.graal.asm.sparc.SPARCAssembler.Mulx; import com.oracle.graal.asm.sparc.SPARCAssembler.Or; import com.oracle.graal.asm.sparc.SPARCAssembler.Sdivx; @@ -63,7 +52,6 @@ import com.oracle.graal.asm.sparc.SPARCAssembler.Sub; import com.oracle.graal.asm.sparc.SPARCAssembler.Subcc; import com.oracle.graal.asm.sparc.SPARCAssembler.Udivx; -import com.oracle.graal.asm.sparc.SPARCAssembler.Umulxhi; import com.oracle.graal.asm.sparc.SPARCAssembler.Wrccr; import com.oracle.graal.asm.sparc.SPARCAssembler.Xor; import com.oracle.graal.asm.sparc.SPARCAssembler.Xorcc; @@ -244,7 +232,7 @@ new Mulx(asLongReg(x), asLongReg(y), asLongReg(result)).emit(masm); // Calculate the upper 64 bit signed := (umulxhi product - (x{63}&y + y{63}&x)) - new Umulxhi(asLongReg(x), asLongReg(y), asLongReg(scratch1)).emit(masm); + masm.umulxhi(asLongReg(x), asLongReg(y), asLongReg(scratch1)); new Srax(asLongReg(x), 63, asLongReg(scratch2)).emit(masm); new And(asLongReg(scratch2), asLongReg(y), asLongReg(scratch2)).emit(masm); new Sub(asLongReg(scratch1), asLongReg(scratch2), asLongReg(scratch1)).emit(masm); @@ -512,49 +500,49 @@ break; case FADD: delaySlotLir.emitControlTransfer(crb, masm); - new Fadds(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)).emit(masm); + masm.fadds(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)); break; case FSUB: delaySlotLir.emitControlTransfer(crb, masm); - new Fsubs(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)).emit(masm); + masm.fsubs(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)); break; case FMUL: delaySlotLir.emitControlTransfer(crb, masm); if (dst.getPlatformKind() == Kind.Double) { - new Fsmuld(asFloatReg(src1), asFloatReg(src2), asDoubleReg(dst)).emit(masm); + masm.fsmuld(asFloatReg(src1), asFloatReg(src2), asDoubleReg(dst)); } else if (dst.getPlatformKind() == Kind.Float) { - new Fmuls(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)).emit(masm); + masm.fmuls(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)); } break; case FDIV: delaySlotLir.emitControlTransfer(crb, masm); exceptionOffset = masm.position(); - new Fdivs(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)).emit(masm); + masm.fdivs(asFloatReg(src1), asFloatReg(src2), asFloatReg(dst)); break; case FREM: throw GraalInternalError.unimplemented(); case DADD: delaySlotLir.emitControlTransfer(crb, masm); - new Faddd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)).emit(masm); + masm.faddd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)); break; case DSUB: delaySlotLir.emitControlTransfer(crb, masm); - new Fsubd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)).emit(masm); + masm.fsubd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)); break; case DMUL: delaySlotLir.emitControlTransfer(crb, masm); - new Fmuld(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)).emit(masm); + masm.fmuld(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)); break; case DDIV: delaySlotLir.emitControlTransfer(crb, masm); exceptionOffset = masm.position(); - new Fdivd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)).emit(masm); + masm.fdivd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)); break; case DREM: throw GraalInternalError.unimplemented(); case DAND: delaySlotLir.emitControlTransfer(crb, masm); - new Fandd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)).emit(masm); + masm.fandd(asDoubleReg(src1), asDoubleReg(src2), asDoubleReg(dst)); break; default: throw GraalInternalError.shouldNotReachHere(); @@ -692,7 +680,7 @@ break; case D2F: delaySlotLir.emitControlTransfer(crb, masm); - new Fdtos(asDoubleReg(src), asFloatReg(dst)).emit(masm); + masm.fdtos(asDoubleReg(src), asFloatReg(dst)); break; case L2D: delaySlotLir.emitControlTransfer(crb, masm); @@ -746,7 +734,7 @@ masm.fcmp(Fcc0, Fcmps, asFloatReg(src), asFloatReg(src)); masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); masm.fstox(asFloatReg(src), asDoubleReg(dst)); - new Fsubd(asDoubleReg(dst), asDoubleReg(dst), asDoubleReg(dst)).emit(masm); + masm.fsubd(asDoubleReg(dst), asDoubleReg(dst), asDoubleReg(dst)); masm.bind(notOrdered); break; case F2I: @@ -754,7 +742,7 @@ masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); masm.fstoi(asFloatReg(src), asFloatReg(dst)); masm.fitos(asFloatReg(dst), asFloatReg(dst)); - new Fsubs(asFloatReg(dst), asFloatReg(dst), asFloatReg(dst)).emit(masm); + masm.fsubs(asFloatReg(dst), asFloatReg(dst), asFloatReg(dst)); masm.bind(notOrdered); break; case D2L: @@ -762,14 +750,14 @@ masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); masm.fdtox(asDoubleReg(src), asDoubleReg(dst)); masm.fxtod(asDoubleReg(dst), asDoubleReg(dst)); - new Fsubd(asDoubleReg(dst), asDoubleReg(dst), asDoubleReg(dst)).emit(masm); + masm.fsubd(asDoubleReg(dst), asDoubleReg(dst), asDoubleReg(dst)); masm.bind(notOrdered); break; case D2I: masm.fcmp(Fcc0, Fcmpd, asDoubleReg(src), asDoubleReg(src)); masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); masm.fdtoi(asDoubleReg(src), asFloatReg(dst)); - new Fsubs(asFloatReg(dst), asFloatReg(dst), asFloatReg(dst)).emit(masm); + masm.fsubs(asFloatReg(dst), asFloatReg(dst), asFloatReg(dst)); masm.fstoi(asFloatReg(dst), asFloatReg(dst)); masm.bind(notOrdered); break; @@ -908,7 +896,7 @@ break; case LMUL: assert !asLongReg(scratch).equals(asLongReg(result)); - new Umulxhi(asLongReg(x), asLongReg(y), asLongReg(result)).emit(masm); + masm.umulxhi(asLongReg(x), asLongReg(y), asLongReg(result)); new Srlx(asLongReg(x), 63, asLongReg(scratch)).emit(masm); new Mulx(asLongReg(scratch), asLongReg(y), asLongReg(scratch)).emit(masm); @@ -919,7 +907,7 @@ new Sub(asLongReg(result), asLongReg(scratch), asLongReg(result)).emit(masm); break; case LUMUL: - new Umulxhi(asLongReg(x), asLongReg(y), asLongReg(result)).emit(masm); + masm.umulxhi(asLongReg(x), asLongReg(y), asLongReg(result)); break; default: throw GraalInternalError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMathIntrinsicOp.java Fri Feb 27 13:55:38 2015 +0100 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMathIntrinsicOp.java Fri Feb 27 14:43:40 2015 +0100 @@ -25,7 +25,6 @@ import static com.oracle.graal.api.code.ValueUtil.*; import com.oracle.graal.api.meta.*; -import com.oracle.graal.asm.sparc.SPARCAssembler.*; import com.oracle.graal.asm.sparc.*; import com.oracle.graal.compiler.common.*; import com.oracle.graal.lir.*; @@ -61,10 +60,10 @@ case SQRT: switch (inputKind) { case Float: - new Fsqrts(asFloatReg(input), asFloatReg(result)).emit(masm); + masm.fsqrts(asFloatReg(input), asFloatReg(result)); break; case Double: - new Fsqrtd(asDoubleReg(input), asDoubleReg(result)).emit(masm); + masm.fsqrtd(asDoubleReg(input), asDoubleReg(result)); break; default: GraalInternalError.shouldNotReachHere(); @@ -73,10 +72,10 @@ case ABS: switch (inputKind) { case Float: - new Fabss(asFloatReg(input), asFloatReg(result)).emit(masm); + masm.fabss(asFloatReg(input), asFloatReg(result)); break; case Double: - new Fabsd(asDoubleReg(input), asDoubleReg(result)).emit(masm); + masm.fabsd(asDoubleReg(input), asDoubleReg(result)); break; default: GraalInternalError.shouldNotReachHere();
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Fri Feb 27 13:55:38 2015 +0100 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Fri Feb 27 14:43:40 2015 +0100 @@ -32,8 +32,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.asm.sparc.*; import com.oracle.graal.asm.sparc.SPARCAssembler.Add; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fmovd; -import com.oracle.graal.asm.sparc.SPARCAssembler.Fmovs; import com.oracle.graal.asm.sparc.SPARCAssembler.Lddf; import com.oracle.graal.asm.sparc.SPARCAssembler.Ldf; import com.oracle.graal.asm.sparc.SPARCAssembler.Ldsb; @@ -42,11 +40,6 @@ import com.oracle.graal.asm.sparc.SPARCAssembler.Lduh; import com.oracle.graal.asm.sparc.SPARCAssembler.Ldx; import com.oracle.graal.asm.sparc.SPARCAssembler.Membar; -import com.oracle.graal.asm.sparc.SPARCAssembler.Movdtox; -import com.oracle.graal.asm.sparc.SPARCAssembler.Movstosw; -import com.oracle.graal.asm.sparc.SPARCAssembler.Movstouw; -import com.oracle.graal.asm.sparc.SPARCAssembler.Movwtos; -import com.oracle.graal.asm.sparc.SPARCAssembler.Movxtod; import com.oracle.graal.asm.sparc.SPARCAssembler.Or; import com.oracle.graal.asm.sparc.SPARCAssembler.Stb; import com.oracle.graal.asm.sparc.SPARCAssembler.Stdf; @@ -248,25 +241,25 @@ delayedControlTransfer.emitControlTransfer(crb, masm); if (resultKind == Float) { if (inputKind == Int || inputKind == Short || inputKind == Char || inputKind == Byte) { - new Movwtos(asIntReg(input), asFloatReg(result)).emit(masm); + masm.movwtos(asIntReg(input), asFloatReg(result)); } else { throw GraalInternalError.shouldNotReachHere(); } } else if (resultKind == Double) { if (inputKind == Int || inputKind == Short || inputKind == Char || inputKind == Byte) { - new Movxtod(asIntReg(input), asDoubleReg(result)).emit(masm); + masm.movxtod(asIntReg(input), asDoubleReg(result)); } else { - new Movxtod(asLongReg(input), asDoubleReg(result)).emit(masm); + masm.movxtod(asLongReg(input), asDoubleReg(result)); } } else if (inputKind == Float) { if (resultKind == Int || resultKind == Short || resultKind == Byte) { - new Movstosw(asFloatReg(input), asIntReg(result)).emit(masm); + masm.movstosw(asFloatReg(input), asIntReg(result)); } else { - new Movstouw(asFloatReg(input), asIntReg(result)).emit(masm); + masm.movstouw(asFloatReg(input), asIntReg(result)); } } else if (inputKind == Double) { if (resultKind == Long) { - new Movdtox(asDoubleReg(input), asLongReg(result)).emit(masm); + masm.movdtox(asDoubleReg(input), asLongReg(result)); } else { throw GraalInternalError.shouldNotReachHere(); } @@ -646,14 +639,14 @@ break; case Float: if (result.getPlatformKind() == Kind.Float) { - new Fmovs(src, dst).emit(masm); + masm.fmovs(src, dst); } else { throw GraalInternalError.shouldNotReachHere(); } break; case Double: if (result.getPlatformKind() == Kind.Double) { - new Fmovd(src, dst).emit(masm); + masm.fmovd(src, dst); } else { throw GraalInternalError.shouldNotReachHere(); } @@ -803,7 +796,7 @@ } delaySlotLir.emitControlTransfer(crb, masm); // Now load the float value - new Movwtos(scratch, asFloatReg(result)).emit(masm); + masm.movwtos(scratch, asFloatReg(result)); } else { crb.asFloatConstRef(input); // First load the address into the scratch register @@ -830,7 +823,7 @@ } delaySlotLir.emitControlTransfer(crb, masm); // Now load the float value - new Movxtod(scratch, asDoubleReg(result)).emit(masm); + masm.movxtod(scratch, asDoubleReg(result)); } else { crb.asDoubleConstRef(input); // First load the address into the scratch register