__ movsd(double_scratch2, double_result); // Load double_exponent with 1.
// Get absolute value of exponent.
- Label no_neg, while_true, no_multiply;
- __ cmp(exponent, 0);
- __ j(greater_equal, &no_neg, Label::kNear);
- __ neg(exponent);
- __ bind(&no_neg);
+ Label while_true, no_multiply;
+ const uint32_t kClearSignBitMask = 0x7FFFFFFF;
+ __ and_(exponent, Immediate(kClearSignBitMask));
__ bind(&while_true);
__ shr(exponent, 1);
__ movsd(double_scratch2, double_result); // Load double_exponent with 1.
// Get absolute value of exponent.
- Label no_neg, while_true, no_multiply;
- __ cmpl(scratch, Immediate(0));
- __ j(positive, &no_neg, Label::kNear);
- __ negl(scratch);
- __ bind(&no_neg);
+ Label while_true, no_multiply;
+ const uint32_t kClearSignBitMask = 0x7FFFFFFF;
+ __ andl(scratch, Immediate(kClearSignBitMask));
__ bind(&while_true);
__ shrl(scratch, Immediate(1));