Mercurial > hg > truffle
diff graal/com.oracle.max.asmdis/src/com/sun/max/asm/gen/cisc/x86/OperandCode.java @ 3733:e233f5660da4
Added Java files from Maxine project.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sat, 17 Dec 2011 19:59:18 +0100 |
parents | |
children | bc8527f3071c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.max.asmdis/src/com/sun/max/asm/gen/cisc/x86/OperandCode.java Sat Dec 17 19:59:18 2011 +0100 @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package com.sun.max.asm.gen.cisc.x86; + +import static com.sun.max.asm.gen.cisc.x86.AddressingMethodCode.*; +import static com.sun.max.asm.gen.cisc.x86.OperandTypeCode.*; + +import java.util.*; + +import com.sun.max.asm.*; +import com.sun.max.asm.gen.*; +import com.sun.max.util.*; + +/** + */ +public enum OperandCode implements WrappableSpecification { + + Ap(A, p), + Cd(C, d), + Cq(C, q), + Dd(D, d), + Dq(D, q), + Eb(E, b), + Ed(E, d), + Ed_q(E, d_q), + Ev(E, v), + Ew(E, w), + Fv(F, v), + Gb(G, b), + Gd(G, d), + Gd_q(G, d_q), + Gv(G, v), + Gw(G, w), + Gq(G, q), + Gz(G, z), + Ib(I, b), + ICb(IC, b), + Iv(I, v), + Iw(I, w), + Iz(I, z), + Jb(J, b), + Jv(J, v), + Jz(J, z), + Ma(M, a), + Mb(M, b), + Md(M, d), + Md_q(M, d_q), + Mp(M, p), + Mq(M, q), + Mdq(M, dq), + Ms(M, s), + Mv(M, v), + Mw(M, w), + Nb(N, b), + Nd(N, d), + Nd_q(N, d_q), + Nv(N, v), + Ob(O, b), + Ov(O, v), + Pd(P, d), + Pdq(P, dq), + Pq(P, q), + PRq(PR, q), + Qd(Q, d), + Qq(Q, q), + Rd(R, d), + Rq(R, q), + Rv(R, v), + Sw(S, w), + Vdq(V, dq), + Vpd(V, pd), + Vps(V, ps), + Vq(V, q), + Vsd(V, sd), + Vss(V, ss), + VRdq(VR, dq), + VRpd(VR, pd), + VRps(VR, ps), + VRq(VR, q), + Wdq(W, dq), + Wpd(W, pd), + Wps(W, ps), + Wq(W, q), + Wsd(W, sd), + Wss(W, ss), + Xb(X, b), + Xv(X, v), + Xz(X, z), + Yb(Y, b), + Yv(Y, v), + Yz(Y, z); + + private final AddressingMethodCode addressingMethodCode; + private final OperandTypeCode operandTypeCode; + + private OperandCode(AddressingMethodCode addressingMethodCode, OperandTypeCode operandTypeCode) { + this.addressingMethodCode = addressingMethodCode; + this.operandTypeCode = operandTypeCode; + } + + public AddressingMethodCode addressingMethodCode() { + return addressingMethodCode; + } + + public OperandTypeCode operandTypeCode() { + return operandTypeCode; + } + + public TestArgumentExclusion excludeDisassemblerTestArguments(Argument... arguments) { + return new TestArgumentExclusion(AssemblyTestComponent.DISASSEMBLER, this, new HashSet<Argument>(Arrays.asList(arguments))); + } + + public TestArgumentExclusion excludeExternalTestArguments(Argument... arguments) { + return new TestArgumentExclusion(AssemblyTestComponent.EXTERNAL_ASSEMBLER, this, new HashSet<Argument>(Arrays.asList(arguments))); + } + + public TestArgumentExclusion excludeExternalTestArguments(Enumerator... argumentEnumerators) { + final Set<Argument> arguments = new HashSet<Argument>(); + for (Enumerator argumentEnumerator : argumentEnumerators) { + for (Object e : argumentEnumerator) { + arguments.add((Argument) e); + } + } + return new TestArgumentExclusion(AssemblyTestComponent.EXTERNAL_ASSEMBLER, this, arguments); + } + + public ArgumentRange range(long minValue, long maxValue) { + return new ArgumentRange(this, minValue, maxValue); + } + + public ArgumentRange externalRange(long minValue, long maxValue) { + final ArgumentRange argumentRange = new ArgumentRange(this, minValue, maxValue); + argumentRange.doNotApplyInternally(); + return argumentRange; + } +}