mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-08 03:30:22 +00:00
A few more SH{L|R}D peepholes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25473 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
52b8b5982f
commit
21d5443934
@ -3073,17 +3073,33 @@ def : Pat<(or (srl R32:$src1, CL:$amt),
|
||||
(shl R32:$src2, (sub 32, CL:$amt))),
|
||||
(SHRD32rrCL R32:$src1, R32:$src2)>;
|
||||
|
||||
def : Pat<(store (or (srl (loadi32 addr:$dst), CL:$amt),
|
||||
(shl R32:$src2, (sub 32, CL:$amt))), addr:$dst),
|
||||
(SHRD32mrCL addr:$dst, R32:$src2)>;
|
||||
|
||||
// (or (x << c) | (y >> (32 - c))) ==> (shld32 x, y, c)
|
||||
def : Pat<(or (shl R32:$src1, CL:$amt),
|
||||
(srl R32:$src2, (sub 32, CL:$amt))),
|
||||
(SHLD32rrCL R32:$src1, R32:$src2)>;
|
||||
|
||||
def : Pat<(store (or (shl (loadi32 addr:$dst), CL:$amt),
|
||||
(srl R32:$src2, (sub 32, CL:$amt))), addr:$dst),
|
||||
(SHLD32mrCL addr:$dst, R32:$src2)>;
|
||||
|
||||
// (or (x >> c) | (y << (16 - c))) ==> (shrd16 x, y, c)
|
||||
def : Pat<(or (srl R16:$src1, CL:$amt),
|
||||
(shl R16:$src2, (sub 16, CL:$amt))),
|
||||
(SHRD16rrCL R16:$src1, R16:$src2)>;
|
||||
|
||||
def : Pat<(store (or (srl (loadi16 addr:$dst), CL:$amt),
|
||||
(shl R16:$src2, (sub 16, CL:$amt))), addr:$dst),
|
||||
(SHRD16mrCL addr:$dst, R16:$src2)>;
|
||||
|
||||
// (or (x << c) | (y >> (16 - c))) ==> (shld16 x, y, c)
|
||||
def : Pat<(or (shl R16:$src1, CL:$amt),
|
||||
(srl R16:$src2, (sub 16, CL:$amt))),
|
||||
(SHLD16rrCL R16:$src1, R16:$src2)>;
|
||||
|
||||
def : Pat<(store (or (shl (loadi16 addr:$dst), CL:$amt),
|
||||
(srl R16:$src2, (sub 16, CL:$amt))), addr:$dst),
|
||||
(SHLD16mrCL addr:$dst, R16:$src2)>;
|
||||
|
@ -48,7 +48,7 @@ namespace {
|
||||
cl::opt<bool, true> EnableX86DAGDAG("enable-x86-dag-isel", cl::Hidden,
|
||||
cl::desc("Enable DAG-to-DAG isel for X86"),
|
||||
cl::location(X86DAGIsel),
|
||||
cl::init(false));
|
||||
cl::init(true));
|
||||
|
||||
// FIXME: This should eventually be handled with target triples and
|
||||
// subtarget support!
|
||||
|
Loading…
Reference in New Issue
Block a user