117 public static final VMStorage xmm31 = vectorRegister(31, "xmm31");
118
119 private static VMStorage integerRegister(int index, String debugName) {
120 return new VMStorage(StorageClasses.INTEGER, index, debugName);
121 }
122
123 private static VMStorage vectorRegister(int index, String debugName) {
124 return new VMStorage(StorageClasses.VECTOR, index, debugName);
125 }
126
127 public static VMStorage stackStorage(int index) {
128 return new VMStorage(StorageClasses.STACK, index, "Stack@" + index);
129 }
130
131 public static VMStorage x87Storage(int index) {
132 return new VMStorage(StorageClasses.X87, index, "X87(" + index + ")");
133 }
134
135 public static ABIDescriptor abiFor(VMStorage[] inputIntRegs, VMStorage[] inputVectorRegs, VMStorage[] outputIntRegs,
136 VMStorage[] outputVectorRegs, int numX87Outputs, VMStorage[] volatileIntRegs,
137 VMStorage[] volatileVectorRegs, int stackAlignment, int shadowSpace) {
138 return new ABIDescriptor(
139 INSTANCE,
140 new VMStorage[][] {
141 inputIntRegs,
142 inputVectorRegs,
143 },
144 new VMStorage[][] {
145 outputIntRegs,
146 outputVectorRegs,
147 IntStream.range(0, numX87Outputs).mapToObj(X86_64Architecture::x87Storage).toArray(VMStorage[]::new)
148 },
149 new VMStorage[][] {
150 volatileIntRegs,
151 volatileVectorRegs,
152 },
153 stackAlignment,
154 shadowSpace
155 );
156 }
157
158 }
|
117 public static final VMStorage xmm31 = vectorRegister(31, "xmm31");
118
119 private static VMStorage integerRegister(int index, String debugName) {
120 return new VMStorage(StorageClasses.INTEGER, index, debugName);
121 }
122
123 private static VMStorage vectorRegister(int index, String debugName) {
124 return new VMStorage(StorageClasses.VECTOR, index, debugName);
125 }
126
127 public static VMStorage stackStorage(int index) {
128 return new VMStorage(StorageClasses.STACK, index, "Stack@" + index);
129 }
130
131 public static VMStorage x87Storage(int index) {
132 return new VMStorage(StorageClasses.X87, index, "X87(" + index + ")");
133 }
134
135 public static ABIDescriptor abiFor(VMStorage[] inputIntRegs, VMStorage[] inputVectorRegs, VMStorage[] outputIntRegs,
136 VMStorage[] outputVectorRegs, int numX87Outputs, VMStorage[] volatileIntRegs,
137 VMStorage[] volatileVectorRegs, int stackAlignment, int shadowSpace,
138 VMStorage targetAddrStorage, VMStorage retBufAddrStorage) {
139 return new ABIDescriptor(
140 INSTANCE,
141 new VMStorage[][] {
142 inputIntRegs,
143 inputVectorRegs,
144 },
145 new VMStorage[][] {
146 outputIntRegs,
147 outputVectorRegs,
148 IntStream.range(0, numX87Outputs).mapToObj(X86_64Architecture::x87Storage).toArray(VMStorage[]::new)
149 },
150 new VMStorage[][] {
151 volatileIntRegs,
152 volatileVectorRegs,
153 },
154 stackAlignment,
155 shadowSpace,
156 targetAddrStorage, retBufAddrStorage);
157 }
158
159 }
|