comparison graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java @ 17018:e91533b86166

[SPARC] Fix dacapo sunflow test (Unordered branching is now implemented right)
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Thu, 28 Aug 2014 19:24:52 -0700
parents 4feac7e51f42
children 1013a8444746
comparison
equal deleted inserted replaced
16998:e4cfc9ea2bd3 17018:e91533b86166
222 @Override 222 @Override
223 public void emitCompareBranch(PlatformKind cmpKind, Value left, Value right, Condition cond, boolean unorderedIsTrue, LabelRef trueDestination, LabelRef falseDestination, 223 public void emitCompareBranch(PlatformKind cmpKind, Value left, Value right, Condition cond, boolean unorderedIsTrue, LabelRef trueDestination, LabelRef falseDestination,
224 double trueDestinationProbability) { 224 double trueDestinationProbability) {
225 boolean mirrored = emitCompare(cmpKind, left, right); 225 boolean mirrored = emitCompare(cmpKind, left, right);
226 Condition finalCondition = mirrored ? cond.mirror() : cond; 226 Condition finalCondition = mirrored ? cond.mirror() : cond;
227 boolean finalUnorderedIsTrue = mirrored ? !unorderedIsTrue : unorderedIsTrue;
228 227
229 Kind kind = left.getKind().getStackKind(); 228 Kind kind = left.getKind().getStackKind();
230 switch (kind) { 229 switch (kind) {
231 case Int: 230 case Int:
232 case Long: 231 case Long:
233 case Object: 232 case Object:
234 append(new BranchOp(finalCondition, trueDestination, falseDestination, kind)); 233 append(new BranchOp(finalCondition, trueDestination, falseDestination, kind));
235 break; 234 break;
236 case Float: 235 case Float:
237 case Double: 236 case Double:
238 append(new BranchOp(finalCondition, trueDestination, falseDestination, kind, finalUnorderedIsTrue)); 237 append(new BranchOp(finalCondition, trueDestination, falseDestination, kind, unorderedIsTrue));
239 break; 238 break;
240 default: 239 default:
241 throw GraalInternalError.shouldNotReachHere("" + left.getKind()); 240 throw GraalInternalError.shouldNotReachHere("" + left.getKind());
242 } 241 }
243 } 242 }