105 assert(bt == T_DOUBLE, "must be");
106 return Op_DivVD;
107 case Op_AbsF:
108 assert(bt == T_FLOAT, "must be");
109 return Op_AbsVF;
110 case Op_AbsD:
111 assert(bt == T_DOUBLE, "must be");
112 return Op_AbsVD;
113 case Op_NegF:
114 assert(bt == T_FLOAT, "must be");
115 return Op_NegVF;
116 case Op_NegD:
117 assert(bt == T_DOUBLE, "must be");
118 return Op_NegVD;
119 case Op_SqrtF:
120 assert(bt == T_FLOAT, "must be");
121 return Op_SqrtVF;
122 case Op_SqrtD:
123 assert(bt == T_DOUBLE, "must be");
124 return Op_SqrtVD;
125 case Op_LShiftI:
126 switch (bt) {
127 case T_BOOLEAN:
128 case T_BYTE: return Op_LShiftVB;
129 case T_CHAR:
130 case T_SHORT: return Op_LShiftVS;
131 case T_INT: return Op_LShiftVI;
132 default: ShouldNotReachHere(); return 0;
133 }
134 case Op_LShiftL:
135 assert(bt == T_LONG, "must be");
136 return Op_LShiftVL;
137 case Op_RShiftI:
138 switch (bt) {
139 case T_BOOLEAN:return Op_URShiftVB; // boolean is unsigned value
140 case T_CHAR: return Op_URShiftVS; // char is unsigned value
141 case T_BYTE: return Op_RShiftVB;
142 case T_SHORT: return Op_RShiftVS;
143 case T_INT: return Op_RShiftVI;
144 default: ShouldNotReachHere(); return 0;
307 case Op_SubVF: return new SubVFNode(n1, n2, vt);
308 case Op_SubVD: return new SubVDNode(n1, n2, vt);
309
310 case Op_MulVS: return new MulVSNode(n1, n2, vt);
311 case Op_MulVI: return new MulVINode(n1, n2, vt);
312 case Op_MulVL: return new MulVLNode(n1, n2, vt);
313 case Op_MulVF: return new MulVFNode(n1, n2, vt);
314 case Op_MulVD: return new MulVDNode(n1, n2, vt);
315
316 case Op_DivVF: return new DivVFNode(n1, n2, vt);
317 case Op_DivVD: return new DivVDNode(n1, n2, vt);
318
319 case Op_AbsVF: return new AbsVFNode(n1, vt);
320 case Op_AbsVD: return new AbsVDNode(n1, vt);
321
322 case Op_NegVF: return new NegVFNode(n1, vt);
323 case Op_NegVD: return new NegVDNode(n1, vt);
324
325 case Op_SqrtVF: return new SqrtVFNode(n1, vt);
326 case Op_SqrtVD: return new SqrtVDNode(n1, vt);
327
328 case Op_LShiftVB: return new LShiftVBNode(n1, n2, vt);
329 case Op_LShiftVS: return new LShiftVSNode(n1, n2, vt);
330 case Op_LShiftVI: return new LShiftVINode(n1, n2, vt);
331 case Op_LShiftVL: return new LShiftVLNode(n1, n2, vt);
332
333 case Op_RShiftVB: return new RShiftVBNode(n1, n2, vt);
334 case Op_RShiftVS: return new RShiftVSNode(n1, n2, vt);
335 case Op_RShiftVI: return new RShiftVINode(n1, n2, vt);
336 case Op_RShiftVL: return new RShiftVLNode(n1, n2, vt);
337
338 case Op_URShiftVB: return new URShiftVBNode(n1, n2, vt);
339 case Op_URShiftVS: return new URShiftVSNode(n1, n2, vt);
340 case Op_URShiftVI: return new URShiftVINode(n1, n2, vt);
341 case Op_URShiftVL: return new URShiftVLNode(n1, n2, vt);
342
343 case Op_AndV: return new AndVNode(n1, n2, vt);
344 case Op_OrV: return new OrVNode (n1, n2, vt);
345 case Op_XorV: return new XorVNode(n1, n2, vt);
346 default:
|
105 assert(bt == T_DOUBLE, "must be");
106 return Op_DivVD;
107 case Op_AbsF:
108 assert(bt == T_FLOAT, "must be");
109 return Op_AbsVF;
110 case Op_AbsD:
111 assert(bt == T_DOUBLE, "must be");
112 return Op_AbsVD;
113 case Op_NegF:
114 assert(bt == T_FLOAT, "must be");
115 return Op_NegVF;
116 case Op_NegD:
117 assert(bt == T_DOUBLE, "must be");
118 return Op_NegVD;
119 case Op_SqrtF:
120 assert(bt == T_FLOAT, "must be");
121 return Op_SqrtVF;
122 case Op_SqrtD:
123 assert(bt == T_DOUBLE, "must be");
124 return Op_SqrtVD;
125 case Op_PopCountI:
126 if (bt == T_INT) {
127 return Op_PopCountVI;
128 }
129 // Unimplemented for subword types since bit count changes
130 // depending on size of lane (and sign bit).
131 return 0;
132 case Op_LShiftI:
133 switch (bt) {
134 case T_BOOLEAN:
135 case T_BYTE: return Op_LShiftVB;
136 case T_CHAR:
137 case T_SHORT: return Op_LShiftVS;
138 case T_INT: return Op_LShiftVI;
139 default: ShouldNotReachHere(); return 0;
140 }
141 case Op_LShiftL:
142 assert(bt == T_LONG, "must be");
143 return Op_LShiftVL;
144 case Op_RShiftI:
145 switch (bt) {
146 case T_BOOLEAN:return Op_URShiftVB; // boolean is unsigned value
147 case T_CHAR: return Op_URShiftVS; // char is unsigned value
148 case T_BYTE: return Op_RShiftVB;
149 case T_SHORT: return Op_RShiftVS;
150 case T_INT: return Op_RShiftVI;
151 default: ShouldNotReachHere(); return 0;
314 case Op_SubVF: return new SubVFNode(n1, n2, vt);
315 case Op_SubVD: return new SubVDNode(n1, n2, vt);
316
317 case Op_MulVS: return new MulVSNode(n1, n2, vt);
318 case Op_MulVI: return new MulVINode(n1, n2, vt);
319 case Op_MulVL: return new MulVLNode(n1, n2, vt);
320 case Op_MulVF: return new MulVFNode(n1, n2, vt);
321 case Op_MulVD: return new MulVDNode(n1, n2, vt);
322
323 case Op_DivVF: return new DivVFNode(n1, n2, vt);
324 case Op_DivVD: return new DivVDNode(n1, n2, vt);
325
326 case Op_AbsVF: return new AbsVFNode(n1, vt);
327 case Op_AbsVD: return new AbsVDNode(n1, vt);
328
329 case Op_NegVF: return new NegVFNode(n1, vt);
330 case Op_NegVD: return new NegVDNode(n1, vt);
331
332 case Op_SqrtVF: return new SqrtVFNode(n1, vt);
333 case Op_SqrtVD: return new SqrtVDNode(n1, vt);
334
335 case Op_PopCountVI: return new PopCountVINode(n1, vt);
336
337 case Op_LShiftVB: return new LShiftVBNode(n1, n2, vt);
338 case Op_LShiftVS: return new LShiftVSNode(n1, n2, vt);
339 case Op_LShiftVI: return new LShiftVINode(n1, n2, vt);
340 case Op_LShiftVL: return new LShiftVLNode(n1, n2, vt);
341
342 case Op_RShiftVB: return new RShiftVBNode(n1, n2, vt);
343 case Op_RShiftVS: return new RShiftVSNode(n1, n2, vt);
344 case Op_RShiftVI: return new RShiftVINode(n1, n2, vt);
345 case Op_RShiftVL: return new RShiftVLNode(n1, n2, vt);
346
347 case Op_URShiftVB: return new URShiftVBNode(n1, n2, vt);
348 case Op_URShiftVS: return new URShiftVSNode(n1, n2, vt);
349 case Op_URShiftVI: return new URShiftVINode(n1, n2, vt);
350 case Op_URShiftVL: return new URShiftVLNode(n1, n2, vt);
351
352 case Op_AndV: return new AndVNode(n1, n2, vt);
353 case Op_OrV: return new OrVNode (n1, n2, vt);
354 case Op_XorV: return new XorVNode(n1, n2, vt);
355 default:
|