Changeset 203851 in webkit
- Timestamp:
- Jul 28, 2016 5:30:32 PM (8 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 1 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r203834 r203851 1 2016-07-28 Michael Saboff <msaboff@apple.com> 2 3 ARM64: Fused left shift with a right shift can create NaNs from integers 4 https://bugs.webkit.org/show_bug.cgi?id=160329 5 6 Reviewed by Geoffrey Garen. 7 8 When we fuse a left shift and a right shift of integers where the shift amounts 9 are the same and the size of the quantity being shifted is 8 bits, we rightly 10 generate a sign extend byte instruction. On ARM64, we were sign extending 11 to a 64 bit quantity, when we really wanted to sign extend to a 32 bit quantity. 12 13 Checking the ARM64 marco assembler and we were extending to 64 bits for all 14 four combinations of zero / sign and 8 / 16 bits. 15 16 * assembler/MacroAssemblerARM64.h: 17 (JSC::MacroAssemblerARM64::zeroExtend16To32): 18 (JSC::MacroAssemblerARM64::signExtend16To32): 19 (JSC::MacroAssemblerARM64::zeroExtend8To32): 20 (JSC::MacroAssemblerARM64::signExtend8To32): 21 * tests/stress/regress-160329.js: New test added. 22 (narrow): 23 1 24 2016-07-28 Mark Lam <mark.lam@apple.com> 2 25 -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
r203390 r203851 1126 1126 void zeroExtend16To32(RegisterID src, RegisterID dest) 1127 1127 { 1128 m_assembler.uxth< 64>(dest, src);1128 m_assembler.uxth<32>(dest, src); 1129 1129 } 1130 1130 1131 1131 void signExtend16To32(RegisterID src, RegisterID dest) 1132 1132 { 1133 m_assembler.sxth< 64>(dest, src);1133 m_assembler.sxth<32>(dest, src); 1134 1134 } 1135 1135 … … 1191 1191 void zeroExtend8To32(RegisterID src, RegisterID dest) 1192 1192 { 1193 m_assembler.uxtb< 64>(dest, src);1193 m_assembler.uxtb<32>(dest, src); 1194 1194 } 1195 1195 1196 1196 void signExtend8To32(RegisterID src, RegisterID dest) 1197 1197 { 1198 m_assembler.sxtb< 64>(dest, src);1198 m_assembler.sxtb<32>(dest, src); 1199 1199 } 1200 1200
Note: See TracChangeset
for help on using the changeset viewer.