75 case T_CHAR:
76 case T_SHORT: return Op_MulVS;
77 case T_INT: return Op_MulVI;
78 }
79 ShouldNotReachHere();
80 case Op_MulL:
81 assert(bt == T_LONG, "must be");
82 return Op_MulVL;
83 case Op_MulF:
84 assert(bt == T_FLOAT, "must be");
85 return Op_MulVF;
86 case Op_MulD:
87 assert(bt == T_DOUBLE, "must be");
88 return Op_MulVD;
89 case Op_DivF:
90 assert(bt == T_FLOAT, "must be");
91 return Op_DivVF;
92 case Op_DivD:
93 assert(bt == T_DOUBLE, "must be");
94 return Op_DivVD;
95 case Op_SqrtD:
96 assert(bt == T_DOUBLE, "must be");
97 return Op_SqrtVD;
98 case Op_LShiftI:
99 switch (bt) {
100 case T_BOOLEAN:
101 case T_BYTE: return Op_LShiftVB;
102 case T_CHAR:
103 case T_SHORT: return Op_LShiftVS;
104 case T_INT: return Op_LShiftVI;
105 }
106 ShouldNotReachHere();
107 case Op_LShiftL:
108 assert(bt == T_LONG, "must be");
109 return Op_LShiftVL;
110 case Op_RShiftI:
111 switch (bt) {
112 case T_BOOLEAN:return Op_URShiftVB; // boolean is unsigned value
113 case T_CHAR: return Op_URShiftVS; // char is unsigned value
114 case T_BYTE: return Op_RShiftVB;
262 case Op_AddVI: return new AddVINode(n1, n2, vt);
263 case Op_AddVL: return new AddVLNode(n1, n2, vt);
264 case Op_AddVF: return new AddVFNode(n1, n2, vt);
265 case Op_AddVD: return new AddVDNode(n1, n2, vt);
266
267 case Op_SubVB: return new SubVBNode(n1, n2, vt);
268 case Op_SubVS: return new SubVSNode(n1, n2, vt);
269 case Op_SubVI: return new SubVINode(n1, n2, vt);
270 case Op_SubVL: return new SubVLNode(n1, n2, vt);
271 case Op_SubVF: return new SubVFNode(n1, n2, vt);
272 case Op_SubVD: return new SubVDNode(n1, n2, vt);
273
274 case Op_MulVS: return new MulVSNode(n1, n2, vt);
275 case Op_MulVI: return new MulVINode(n1, n2, vt);
276 case Op_MulVL: return new MulVLNode(n1, n2, vt);
277 case Op_MulVF: return new MulVFNode(n1, n2, vt);
278 case Op_MulVD: return new MulVDNode(n1, n2, vt);
279
280 case Op_DivVF: return new DivVFNode(n1, n2, vt);
281 case Op_DivVD: return new DivVDNode(n1, n2, vt);
282
283 // Currently only supports double precision sqrt
284 case Op_SqrtVD: return new SqrtVDNode(n1, vt);
285
286 case Op_LShiftVB: return new LShiftVBNode(n1, n2, vt);
287 case Op_LShiftVS: return new LShiftVSNode(n1, n2, vt);
288 case Op_LShiftVI: return new LShiftVINode(n1, n2, vt);
289 case Op_LShiftVL: return new LShiftVLNode(n1, n2, vt);
290
291 case Op_RShiftVB: return new RShiftVBNode(n1, n2, vt);
292 case Op_RShiftVS: return new RShiftVSNode(n1, n2, vt);
293 case Op_RShiftVI: return new RShiftVINode(n1, n2, vt);
294 case Op_RShiftVL: return new RShiftVLNode(n1, n2, vt);
295
296 case Op_URShiftVB: return new URShiftVBNode(n1, n2, vt);
297 case Op_URShiftVS: return new URShiftVSNode(n1, n2, vt);
298 case Op_URShiftVI: return new URShiftVINode(n1, n2, vt);
299 case Op_URShiftVL: return new URShiftVLNode(n1, n2, vt);
300
301 case Op_AndV: return new AndVNode(n1, n2, vt);
|
75 case T_CHAR:
76 case T_SHORT: return Op_MulVS;
77 case T_INT: return Op_MulVI;
78 }
79 ShouldNotReachHere();
80 case Op_MulL:
81 assert(bt == T_LONG, "must be");
82 return Op_MulVL;
83 case Op_MulF:
84 assert(bt == T_FLOAT, "must be");
85 return Op_MulVF;
86 case Op_MulD:
87 assert(bt == T_DOUBLE, "must be");
88 return Op_MulVD;
89 case Op_DivF:
90 assert(bt == T_FLOAT, "must be");
91 return Op_DivVF;
92 case Op_DivD:
93 assert(bt == T_DOUBLE, "must be");
94 return Op_DivVD;
95 case Op_AbsF:
96 assert(bt == T_FLOAT, "must be");
97 return Op_AbsVF;
98 case Op_AbsD:
99 assert(bt == T_DOUBLE, "must be");
100 return Op_AbsVD;
101 case Op_NegF:
102 assert(bt == T_FLOAT, "must be");
103 return Op_NegVF;
104 case Op_NegD:
105 assert(bt == T_DOUBLE, "must be");
106 return Op_NegVD;
107 case Op_SqrtD:
108 assert(bt == T_DOUBLE, "must be");
109 return Op_SqrtVD;
110 case Op_LShiftI:
111 switch (bt) {
112 case T_BOOLEAN:
113 case T_BYTE: return Op_LShiftVB;
114 case T_CHAR:
115 case T_SHORT: return Op_LShiftVS;
116 case T_INT: return Op_LShiftVI;
117 }
118 ShouldNotReachHere();
119 case Op_LShiftL:
120 assert(bt == T_LONG, "must be");
121 return Op_LShiftVL;
122 case Op_RShiftI:
123 switch (bt) {
124 case T_BOOLEAN:return Op_URShiftVB; // boolean is unsigned value
125 case T_CHAR: return Op_URShiftVS; // char is unsigned value
126 case T_BYTE: return Op_RShiftVB;
274 case Op_AddVI: return new AddVINode(n1, n2, vt);
275 case Op_AddVL: return new AddVLNode(n1, n2, vt);
276 case Op_AddVF: return new AddVFNode(n1, n2, vt);
277 case Op_AddVD: return new AddVDNode(n1, n2, vt);
278
279 case Op_SubVB: return new SubVBNode(n1, n2, vt);
280 case Op_SubVS: return new SubVSNode(n1, n2, vt);
281 case Op_SubVI: return new SubVINode(n1, n2, vt);
282 case Op_SubVL: return new SubVLNode(n1, n2, vt);
283 case Op_SubVF: return new SubVFNode(n1, n2, vt);
284 case Op_SubVD: return new SubVDNode(n1, n2, vt);
285
286 case Op_MulVS: return new MulVSNode(n1, n2, vt);
287 case Op_MulVI: return new MulVINode(n1, n2, vt);
288 case Op_MulVL: return new MulVLNode(n1, n2, vt);
289 case Op_MulVF: return new MulVFNode(n1, n2, vt);
290 case Op_MulVD: return new MulVDNode(n1, n2, vt);
291
292 case Op_DivVF: return new DivVFNode(n1, n2, vt);
293 case Op_DivVD: return new DivVDNode(n1, n2, vt);
294
295 case Op_AbsVF: return new AbsVFNode(n1, vt);
296 case Op_AbsVD: return new AbsVDNode(n1, vt);
297
298 case Op_NegVF: return new NegVFNode(n1, vt);
299 case Op_NegVD: return new NegVDNode(n1, vt);
300
301 // Currently only supports double precision sqrt
302 case Op_SqrtVD: return new SqrtVDNode(n1, vt);
303
304 case Op_LShiftVB: return new LShiftVBNode(n1, n2, vt);
305 case Op_LShiftVS: return new LShiftVSNode(n1, n2, vt);
306 case Op_LShiftVI: return new LShiftVINode(n1, n2, vt);
307 case Op_LShiftVL: return new LShiftVLNode(n1, n2, vt);
308
309 case Op_RShiftVB: return new RShiftVBNode(n1, n2, vt);
310 case Op_RShiftVS: return new RShiftVSNode(n1, n2, vt);
311 case Op_RShiftVI: return new RShiftVINode(n1, n2, vt);
312 case Op_RShiftVL: return new RShiftVLNode(n1, n2, vt);
313
314 case Op_URShiftVB: return new URShiftVBNode(n1, n2, vt);
315 case Op_URShiftVS: return new URShiftVSNode(n1, n2, vt);
316 case Op_URShiftVI: return new URShiftVINode(n1, n2, vt);
317 case Op_URShiftVL: return new URShiftVLNode(n1, n2, vt);
318
319 case Op_AndV: return new AndVNode(n1, n2, vt);
|