Commit Graph

397 Commits

Author SHA1 Message Date
Pierre Muller
71df6b83c6 Avoidd to use hp1 after calling RemoveInstruction, as the VMT is invalidated 2022-11-11 22:20:17 +00:00
Sven/Sarah Barth
a2789d611f * fix crash in debug output in TX86AsmOptimizer.DoArithCombineOpt for DEC/INC $reg 2022-11-07 23:35:23 +01:00
J. Gareth "Curious Kit" Moreton
236febb148 * x86: Fixed bugs in and refactored and renamed
DoSubAddOpt optimisation method
2022-11-06 21:01:58 +00:00
J. Gareth "Curious Kit" Moreton
dbd8259c48 * x86: Fixed mistake in var9 optimisation under -Os; "andl $255,%eax" is not
smaller than "movzbl %al,%eax" because the immediate is sign-extended,
	not zero-extended, so $255 will be stored as a 32-bit value.
2022-10-31 18:40:23 +00:00
J. Gareth "Curious Kit" Moreton
3ba9cf5b4f * x86: PostPeepholeOptTestOr has different debug messages for each found instruction, and also tests for BEXTR and BZHI. 2022-10-30 16:16:56 +00:00
J. Gareth "Curious Kit" Moreton
a7d1f7d771 * x86: FuncMov2Func now has code to remove "mov %reg,%reg" (since it doesn't get removed in Pass 2). 2022-10-30 16:06:01 +00:00
J. Gareth "Curious Kit" Moreton
3d805b8a9a * x86: FuncMov2Func moved to separate method and also called by OptPass2MOV. 2022-10-30 16:06:01 +00:00
J. Gareth "Curious Kit" Moreton
d35be8a9ea * x86: Extended FuncMov2Func optimisation to handle 1, 3 and 4-operand functions 2022-10-30 16:06:01 +00:00
J. Gareth "Curious Kit" Moreton
9fc2b9062d * x86: Updated Mov0LblCmp0Jne optimisation to work when alignment hints appear before the label 2022-10-30 15:58:43 +00:00
florian
a1064ad8fd + MovSubCmp2MovSub optimization 2022-10-30 16:58:09 +01:00
florian
c75bb80b14 * more debug messages
* better exit codes for test
2022-10-26 23:20:18 +02:00
florian
86547d35d7 + apply OpTest/Or2Op optimization to ANDN as well
+ DebugMsg for OpTest/Or2Op added
2022-10-23 22:10:35 +02:00
J. Gareth "Curious Kit" Moreton
567244007e * x86: Improvement to bug fix so an optimisation can still be made even if the other register is in use 2022-10-22 13:07:16 +00:00
J. Gareth "Curious Kit" Moreton
41b8f6a42e * x86: Bug fix where improved AddMov2Mov optimisation didn't
check to see if the other register was modified in between
2022-10-22 13:07:16 +00:00
J. Gareth "Curious Kit" Moreton
45b1d592f5 * x86: Bug fix where "mov $0,%reg" was inserted on the wrong side of a SETcc instruction 2022-10-18 20:47:42 +00:00
J. Gareth "Curious Kit" Moreton
27aa4d4e34 * x86: ConvertJumpToRET now sets the condition to C_None 2022-10-18 20:47:42 +00:00
florian
9375257365 * look ahead for ShlOp2Op optimization 2022-09-25 20:43:57 +02:00
florian
1a66cde35b * apply ShlOp2Shl optimization also to floating point operations 2022-09-24 22:48:41 +02:00
J. Gareth "Kit" Moreton
5a6d9ff532 x86: Deeper insight in OptPass2ADD and OptPass2SUB to produce more efficient code 2022-09-18 19:02:24 +00:00
J. Gareth "Curious Kit" Moreton
e7218d09fb * x86: New MovShr/Sar2Movx optimisation 2022-09-18 14:06:18 +00:00
J. Gareth "Curious Kit" Moreton
b872322678 * x86: New "shr %cl; shr x" swap optimisation 2022-09-16 16:57:55 +00:00
J. Gareth "Curious Kit" Moreton
6757bf3832 * x86: New SHR-based optimisations 2022-09-16 16:57:55 +00:00
florian
44dca29926 + some debug messages added
* cosmetics
2022-08-16 20:26:24 +02:00
florian
85230758e4 * improved FstpFld2<Nop> optimization 2022-08-15 23:17:16 +02:00
J. Gareth "Curious Kit" Moreton
bb4d3fda25 * Fixed internal error number clash (2021102610) 2022-08-15 20:42:18 +00:00
J. Gareth "Curious Kit" Moreton
aff2a42431 * x86: Shrink TEST instruction on MovAndTest2Test
where possible.
2022-08-05 20:06:18 +00:00
J. Gareth "Curious Kit" Moreton
d7f1e56191 * x86: MovAndTest2Test optimisation now accepts a smaller sub-regiser on the TEST instruction 2022-08-05 20:06:18 +00:00
J. Gareth "Curious Kit" Moreton
89605f47c2 * x86: Correct fileinfo for PostPeepholeOptCall 2022-08-02 20:52:27 +00:00
J. Gareth "Curious Kit" Moreton
f7dcb68c5a * x86: Correct fileinfo for OptPass2MOV 2022-08-02 20:52:27 +00:00
J. Gareth "Curious Kit" Moreton
6eede0f71f * x86: Correct fileinfo and some refactoring for OptPass1CMP 2022-08-02 20:52:27 +00:00
J. Gareth "Curious Kit" Moreton
e9b394a550 * x86: Correct fileinfo and some refactoring for OptPass1SHLSAL 2022-08-02 20:52:27 +00:00
J. Gareth "Curious Kit" Moreton
0c62ac9f16 * x86: Correct fileinfo and some refactoring for OptPass1LEA 2022-08-02 20:52:27 +00:00
J. Gareth "Curious Kit" Moreton
f19b390c68 * x86: Correct fileinfo and some refactoring for imul2leashl optimisation 2022-08-02 20:52:27 +00:00
florian
899981f318 + forgotten comments for new optimizations 2022-07-31 22:10:00 +02:00
J. Gareth "Curious Kit" Moreton
f5d76c5593 * x86: Reference count fix in CMP/Jcc and TEST/Jcc redirect optimisations 2022-07-31 19:45:23 +00:00
J. Gareth "Curious Kit" Moreton
b1e65ca49f * x86: Fixed bug where redirected jump has its condition changed (fixes i39851) 2022-07-31 19:45:23 +00:00
florian
77e350b6b8 + VPXor2VPXor optimization 2022-07-30 22:09:59 +02:00
florian
d2c2ddb337 + VPXorVMov2Mov optimization 2022-07-28 22:42:42 +02:00
J. Gareth "Curious Kit" Moreton
6c065e69fd * x86: Corrected some incorrect uses of RemoveCurrentP in OptPass1_V_MOVAP. 2022-07-28 03:32:38 +00:00
J. Gareth "Curious Kit" Moreton
0e9ea11859 * x86: Bug fix where a tai type was assumed and could sometimes trigger an invalid typecast under -CriotR 2022-07-26 19:57:27 +00:00
J. Gareth "Curious Kit" Moreton
fcae0e311d x86: Direct assignment instructions are no longer checked prior to calling CheckJumpMovTransferOpt, instead relying on the callee to do the heavy lifting (also fixed -Os bug) 2022-07-24 20:15:08 +00:00
J. Gareth "Curious Kit" Moreton
3e94af163b * x86: Fixed bug in "Mov0LblCmp0Je -> Mov0JmpLblCmp0Je" optimisation
where the reference count was increased twice.
2022-07-23 12:58:20 +00:00
florian
578ce51fc3 * fix broken merge 2022-05-10 22:38:19 +02:00
J. Gareth "Curious Kit" Moreton
f4e28ab357 * x86: Fixes to GetInt/MMRegisterBetween assignments 2022-05-07 20:54:40 +00:00
J. Gareth "Curious Kit" Moreton
62d5ddffb8 * x86: Improvement to CMP/JE/CMP/@Lbl/SETE ->
CMP/SETE/CMP/SETE/OR optimisation to reduce
    pass counts (and work better with improved
    FLAGS register allocation).
2022-04-27 20:46:32 +00:00
J. Gareth "Curious Kit" Moreton
1fd2d3a83d * x86: Improved TrySwapMovCmp to insert before
the FLAGS register is allocated.
2022-04-27 20:46:32 +00:00
J. Gareth "Curious Kit" Moreton
f62ffa74dc * x86: Changed the names of temporary register
stores in OptPass1MOV for reasons of clarity,
    and other minor optimisations.
2022-04-24 16:42:35 +00:00
J. Gareth "Curious Kit" Moreton
627fb9a25b * x86: New jump/label tracking in CrossJump optimisations 2022-04-24 16:42:35 +00:00
J. Gareth "Curious Kit" Moreton
92a0640bcc * Local speedup in OptPass1LEA that avoids expensive calls if p and
hp1 are adjacent.
2022-04-06 19:56:24 +00:00
J. Gareth "Curious Kit" Moreton
305e49c0b8 * Some streamlining in x86's OptPass1LEA routine now that the stack
pointer is properly tracked, which also permits some deeper
    optimisations on -O1 and -O2 virtually for free.
2022-04-06 19:56:24 +00:00