Index: test/cctest/test-assembler-a64.cc |
diff --git a/test/cctest/test-assembler-a64.cc b/test/cctest/test-assembler-a64.cc |
index cb5a0b22474e16967524c979e4224d50449d3027..24eff1a945e7fb100f0919f43d1ca75c97c0368b 100644 |
--- a/test/cctest/test-assembler-a64.cc |
+++ b/test/cctest/test-assembler-a64.cc |
@@ -5612,51 +5612,56 @@ TEST(fcmp) { |
// Some of these tests require a floating-point scratch register assigned to |
// the macro assembler, but most do not. |
- __ SetFPScratchRegister(NoFPReg); |
- |
- __ Fmov(s8, 0.0); |
- __ Fmov(s9, 0.5); |
- __ Mov(w18, 0x7f800001); // Single precision NaN. |
- __ Fmov(s18, w18); |
- |
- __ Fcmp(s8, s8); |
- __ Mrs(x0, NZCV); |
- __ Fcmp(s8, s9); |
- __ Mrs(x1, NZCV); |
- __ Fcmp(s9, s8); |
- __ Mrs(x2, NZCV); |
- __ Fcmp(s8, s18); |
- __ Mrs(x3, NZCV); |
- __ Fcmp(s18, s18); |
- __ Mrs(x4, NZCV); |
- __ Fcmp(s8, 0.0); |
- __ Mrs(x5, NZCV); |
- __ SetFPScratchRegister(d0); |
- __ Fcmp(s8, 255.0); |
- __ SetFPScratchRegister(NoFPReg); |
- __ Mrs(x6, NZCV); |
+ { |
+ UseScratchRegisterScope temps(&masm); |
+ temps.ExcludeAll(); |
+ temps.Include(ip0, ip1); |
+ |
+ __ Fmov(s8, 0.0); |
+ __ Fmov(s9, 0.5); |
+ __ Mov(w18, 0x7f800001); // Single precision NaN. |
+ __ Fmov(s18, w18); |
+ |
+ __ Fcmp(s8, s8); |
+ __ Mrs(x0, NZCV); |
+ __ Fcmp(s8, s9); |
+ __ Mrs(x1, NZCV); |
+ __ Fcmp(s9, s8); |
+ __ Mrs(x2, NZCV); |
+ __ Fcmp(s8, s18); |
+ __ Mrs(x3, NZCV); |
+ __ Fcmp(s18, s18); |
+ __ Mrs(x4, NZCV); |
+ __ Fcmp(s8, 0.0); |
+ __ Mrs(x5, NZCV); |
+ temps.Include(d0); |
+ __ Fcmp(s8, 255.0); |
+ temps.Exclude(d0); |
+ __ Mrs(x6, NZCV); |
+ |
+ __ Fmov(d19, 0.0); |
+ __ Fmov(d20, 0.5); |
+ __ Mov(x21, 0x7ff0000000000001UL); // Double precision NaN. |
+ __ Fmov(d21, x21); |
+ |
+ __ Fcmp(d19, d19); |
+ __ Mrs(x10, NZCV); |
+ __ Fcmp(d19, d20); |
+ __ Mrs(x11, NZCV); |
+ __ Fcmp(d20, d19); |
+ __ Mrs(x12, NZCV); |
+ __ Fcmp(d19, d21); |
+ __ Mrs(x13, NZCV); |
+ __ Fcmp(d21, d21); |
+ __ Mrs(x14, NZCV); |
+ __ Fcmp(d19, 0.0); |
+ __ Mrs(x15, NZCV); |
+ temps.Include(d0); |
+ __ Fcmp(d19, 12.3456); |
+ temps.Exclude(d0); |
+ __ Mrs(x16, NZCV); |
+ } |
- __ Fmov(d19, 0.0); |
- __ Fmov(d20, 0.5); |
- __ Mov(x21, 0x7ff0000000000001UL); // Double precision NaN. |
- __ Fmov(d21, x21); |
- |
- __ Fcmp(d19, d19); |
- __ Mrs(x10, NZCV); |
- __ Fcmp(d19, d20); |
- __ Mrs(x11, NZCV); |
- __ Fcmp(d20, d19); |
- __ Mrs(x12, NZCV); |
- __ Fcmp(d19, d21); |
- __ Mrs(x13, NZCV); |
- __ Fcmp(d21, d21); |
- __ Mrs(x14, NZCV); |
- __ Fcmp(d19, 0.0); |
- __ Mrs(x15, NZCV); |
- __ SetFPScratchRegister(d0); |
- __ Fcmp(d19, 12.3456); |
- __ SetFPScratchRegister(NoFPReg); |
- __ Mrs(x16, NZCV); |
END(); |
RUN(); |