96 assert(bt == T_DOUBLE, "must be");
97 return Op_CMoveVD;
98 case Op_DivF:
99 assert(bt == T_FLOAT, "must be");
100 return Op_DivVF;
101 case Op_DivD:
102 assert(bt == T_DOUBLE, "must be");
103 return Op_DivVD;
104 case Op_AbsF:
105 assert(bt == T_FLOAT, "must be");
106 return Op_AbsVF;
107 case Op_AbsD:
108 assert(bt == T_DOUBLE, "must be");
109 return Op_AbsVD;
110 case Op_NegF:
111 assert(bt == T_FLOAT, "must be");
112 return Op_NegVF;
113 case Op_NegD:
114 assert(bt == T_DOUBLE, "must be");
115 return Op_NegVD;
116 case Op_SqrtD:
117 assert(bt == T_DOUBLE, "must be");
118 return Op_SqrtVD;
119 case Op_LShiftI:
120 switch (bt) {
121 case T_BOOLEAN:
122 case T_BYTE: return Op_LShiftVB;
123 case T_CHAR:
124 case T_SHORT: return Op_LShiftVS;
125 case T_INT: return Op_LShiftVI;
126 default: ShouldNotReachHere(); return 0;
127 }
128 case Op_LShiftL:
129 assert(bt == T_LONG, "must be");
130 return Op_LShiftVL;
131 case Op_RShiftI:
132 switch (bt) {
133 case T_BOOLEAN:return Op_URShiftVB; // boolean is unsigned value
134 case T_CHAR: return Op_URShiftVS; // char is unsigned value
135 case T_BYTE: return Op_RShiftVB;
299 case Op_SubVI: return new SubVINode(n1, n2, vt);
300 case Op_SubVL: return new SubVLNode(n1, n2, vt);
301 case Op_SubVF: return new SubVFNode(n1, n2, vt);
302 case Op_SubVD: return new SubVDNode(n1, n2, vt);
303
304 case Op_MulVS: return new MulVSNode(n1, n2, vt);
305 case Op_MulVI: return new MulVINode(n1, n2, vt);
306 case Op_MulVL: return new MulVLNode(n1, n2, vt);
307 case Op_MulVF: return new MulVFNode(n1, n2, vt);
308 case Op_MulVD: return new MulVDNode(n1, n2, vt);
309
310 case Op_DivVF: return new DivVFNode(n1, n2, vt);
311 case Op_DivVD: return new DivVDNode(n1, n2, vt);
312
313 case Op_AbsVF: return new AbsVFNode(n1, vt);
314 case Op_AbsVD: return new AbsVDNode(n1, vt);
315
316 case Op_NegVF: return new NegVFNode(n1, vt);
317 case Op_NegVD: return new NegVDNode(n1, vt);
318
319 // Currently only supports double precision sqrt
320 case Op_SqrtVD: return new SqrtVDNode(n1, vt);
321
322 case Op_LShiftVB: return new LShiftVBNode(n1, n2, vt);
323 case Op_LShiftVS: return new LShiftVSNode(n1, n2, vt);
324 case Op_LShiftVI: return new LShiftVINode(n1, n2, vt);
325 case Op_LShiftVL: return new LShiftVLNode(n1, n2, vt);
326
327 case Op_RShiftVB: return new RShiftVBNode(n1, n2, vt);
328 case Op_RShiftVS: return new RShiftVSNode(n1, n2, vt);
329 case Op_RShiftVI: return new RShiftVINode(n1, n2, vt);
330 case Op_RShiftVL: return new RShiftVLNode(n1, n2, vt);
331
332 case Op_URShiftVB: return new URShiftVBNode(n1, n2, vt);
333 case Op_URShiftVS: return new URShiftVSNode(n1, n2, vt);
334 case Op_URShiftVI: return new URShiftVINode(n1, n2, vt);
335 case Op_URShiftVL: return new URShiftVLNode(n1, n2, vt);
336
337 case Op_AndV: return new AndVNode(n1, n2, vt);
338 case Op_OrV: return new OrVNode (n1, n2, vt);
339 case Op_XorV: return new XorVNode(n1, n2, vt);
|
96 assert(bt == T_DOUBLE, "must be");
97 return Op_CMoveVD;
98 case Op_DivF:
99 assert(bt == T_FLOAT, "must be");
100 return Op_DivVF;
101 case Op_DivD:
102 assert(bt == T_DOUBLE, "must be");
103 return Op_DivVD;
104 case Op_AbsF:
105 assert(bt == T_FLOAT, "must be");
106 return Op_AbsVF;
107 case Op_AbsD:
108 assert(bt == T_DOUBLE, "must be");
109 return Op_AbsVD;
110 case Op_NegF:
111 assert(bt == T_FLOAT, "must be");
112 return Op_NegVF;
113 case Op_NegD:
114 assert(bt == T_DOUBLE, "must be");
115 return Op_NegVD;
116 case Op_SqrtF:
117 assert(bt == T_FLOAT, "must be");
118 return Op_SqrtVF;
119 case Op_SqrtD:
120 assert(bt == T_DOUBLE, "must be");
121 return Op_SqrtVD;
122 case Op_LShiftI:
123 switch (bt) {
124 case T_BOOLEAN:
125 case T_BYTE: return Op_LShiftVB;
126 case T_CHAR:
127 case T_SHORT: return Op_LShiftVS;
128 case T_INT: return Op_LShiftVI;
129 default: ShouldNotReachHere(); return 0;
130 }
131 case Op_LShiftL:
132 assert(bt == T_LONG, "must be");
133 return Op_LShiftVL;
134 case Op_RShiftI:
135 switch (bt) {
136 case T_BOOLEAN:return Op_URShiftVB; // boolean is unsigned value
137 case T_CHAR: return Op_URShiftVS; // char is unsigned value
138 case T_BYTE: return Op_RShiftVB;
302 case Op_SubVI: return new SubVINode(n1, n2, vt);
303 case Op_SubVL: return new SubVLNode(n1, n2, vt);
304 case Op_SubVF: return new SubVFNode(n1, n2, vt);
305 case Op_SubVD: return new SubVDNode(n1, n2, vt);
306
307 case Op_MulVS: return new MulVSNode(n1, n2, vt);
308 case Op_MulVI: return new MulVINode(n1, n2, vt);
309 case Op_MulVL: return new MulVLNode(n1, n2, vt);
310 case Op_MulVF: return new MulVFNode(n1, n2, vt);
311 case Op_MulVD: return new MulVDNode(n1, n2, vt);
312
313 case Op_DivVF: return new DivVFNode(n1, n2, vt);
314 case Op_DivVD: return new DivVDNode(n1, n2, vt);
315
316 case Op_AbsVF: return new AbsVFNode(n1, vt);
317 case Op_AbsVD: return new AbsVDNode(n1, vt);
318
319 case Op_NegVF: return new NegVFNode(n1, vt);
320 case Op_NegVD: return new NegVDNode(n1, vt);
321
322 case Op_SqrtVF: return new SqrtVFNode(n1, vt);
323 case Op_SqrtVD: return new SqrtVDNode(n1, vt);
324
325 case Op_LShiftVB: return new LShiftVBNode(n1, n2, vt);
326 case Op_LShiftVS: return new LShiftVSNode(n1, n2, vt);
327 case Op_LShiftVI: return new LShiftVINode(n1, n2, vt);
328 case Op_LShiftVL: return new LShiftVLNode(n1, n2, vt);
329
330 case Op_RShiftVB: return new RShiftVBNode(n1, n2, vt);
331 case Op_RShiftVS: return new RShiftVSNode(n1, n2, vt);
332 case Op_RShiftVI: return new RShiftVINode(n1, n2, vt);
333 case Op_RShiftVL: return new RShiftVLNode(n1, n2, vt);
334
335 case Op_URShiftVB: return new URShiftVBNode(n1, n2, vt);
336 case Op_URShiftVS: return new URShiftVSNode(n1, n2, vt);
337 case Op_URShiftVI: return new URShiftVINode(n1, n2, vt);
338 case Op_URShiftVL: return new URShiftVLNode(n1, n2, vt);
339
340 case Op_AndV: return new AndVNode(n1, n2, vt);
341 case Op_OrV: return new OrVNode (n1, n2, vt);
342 case Op_XorV: return new XorVNode(n1, n2, vt);
|