104 }
105 // If cc is even, inverse_cc must be odd.
106 if (!unordered_bit) {
107 inverse_cc = (Assembler::branch_condition)(inverse_cc | bcondNotOrdered);
108 }
109 break;
110 }
111 return inverse_cc;
112 }
113
114 Assembler::branch_condition Assembler::inverse_float_condition(Assembler::branch_condition cc) {
115 Assembler::branch_condition inverse_cc;
116
117 switch (cc) {
118 case bcondNever : inverse_cc = bcondAlways; break; // 0
119 case bcondAlways : inverse_cc = bcondNever; break; // 15
120
121 case bcondNotOrdered : inverse_cc = bcondOrdered; break; // 14
122 case bcondOrdered : inverse_cc = bcondNotOrdered; break; // 1
123
124 case bcondEqual : inverse_cc = (branch_condition)(bcondNotEqual + bcondNotOrdered); break; // 8
125 case bcondNotEqual + bcondNotOrdered : inverse_cc = bcondEqual; break; // 7
126
127 case bcondLow + bcondNotOrdered : inverse_cc = (branch_condition)(bcondHigh + bcondEqual); break; // 5
128 case bcondNotLow : inverse_cc = (branch_condition)(bcondLow + bcondNotOrdered); break; // 10
129
130 case bcondHigh : inverse_cc = (branch_condition)(bcondLow + bcondNotOrdered + bcondEqual); break; // 2
131 case bcondNotHigh + bcondNotOrdered : inverse_cc = bcondHigh; break; // 13
132
133 default :
134 fprintf(stderr, "inverse_float_condition(%d)\n", (int)cc);
135 fflush(stderr);
136 ShouldNotReachHere();
137 return bcondNever;
138 }
139 return inverse_cc;
140 }
141
142 #ifdef ASSERT
143 void Assembler::print_dbg_msg(outputStream* out, unsigned long inst, const char* msg, int ilen) {
144 out->flush();
145 switch (ilen) {
146 case 2: out->print_cr("inst = %4.4x, %s", (unsigned short)inst, msg); break;
147 case 4: out->print_cr("inst = %8.8x, %s\n", (unsigned int)inst, msg); break;
148 case 6: out->print_cr("inst = %12.12lx, %s\n", inst, msg); break;
149 default: out->print_cr("inst = %16.16lx, %s\n", inst, msg); break;
150 }
151 out->flush();
|
104 }
105 // If cc is even, inverse_cc must be odd.
106 if (!unordered_bit) {
107 inverse_cc = (Assembler::branch_condition)(inverse_cc | bcondNotOrdered);
108 }
109 break;
110 }
111 return inverse_cc;
112 }
113
114 Assembler::branch_condition Assembler::inverse_float_condition(Assembler::branch_condition cc) {
115 Assembler::branch_condition inverse_cc;
116
117 switch (cc) {
118 case bcondNever : inverse_cc = bcondAlways; break; // 0
119 case bcondAlways : inverse_cc = bcondNever; break; // 15
120
121 case bcondNotOrdered : inverse_cc = bcondOrdered; break; // 14
122 case bcondOrdered : inverse_cc = bcondNotOrdered; break; // 1
123
124 case bcondEqual : inverse_cc = bcondNotEqualOrNotOrdered; break; // 8
125 case bcondNotEqualOrNotOrdered : inverse_cc = bcondEqual; break; // 7
126
127 case bcondLowOrNotOrdered : inverse_cc = bcondNotLow; break; // 5
128 case bcondNotLow : inverse_cc = bcondLowOrNotOrdered; break; // 10
129
130 case bcondHigh : inverse_cc = bcondNotHighOrNotOrdered; break; // 2
131 case bcondNotHighOrNotOrdered : inverse_cc = bcondHigh; break; // 13
132
133 default :
134 fprintf(stderr, "inverse_float_condition(%d)\n", (int)cc);
135 fflush(stderr);
136 ShouldNotReachHere();
137 return bcondNever;
138 }
139 return inverse_cc;
140 }
141
142 #ifdef ASSERT
143 void Assembler::print_dbg_msg(outputStream* out, unsigned long inst, const char* msg, int ilen) {
144 out->flush();
145 switch (ilen) {
146 case 2: out->print_cr("inst = %4.4x, %s", (unsigned short)inst, msg); break;
147 case 4: out->print_cr("inst = %8.8x, %s\n", (unsigned int)inst, msg); break;
148 case 6: out->print_cr("inst = %12.12lx, %s\n", inst, msg); break;
149 default: out->print_cr("inst = %16.16lx, %s\n", inst, msg); break;
150 }
151 out->flush();
|