diff options
author | Tom Stellard <thomas.stellard@amd.com> | 2014-04-07 19:45:41 +0000 |
---|---|---|
committer | Tom Stellard <thomas.stellard@amd.com> | 2014-04-07 19:45:41 +0000 |
commit | 5c9bb7119a54f71b8b04e113c3e357e35bf065d8 (patch) | |
tree | 4b3b90b5e290b08da886c46fb8ec65b020122a07 /lib/Target/R600/R600ISelLowering.cpp | |
parent | dd2d4303527c4be7d5a050f1cc11831e76114181 (diff) | |
download | llvm-5c9bb7119a54f71b8b04e113c3e357e35bf065d8.tar.gz llvm-5c9bb7119a54f71b8b04e113c3e357e35bf065d8.tar.bz2 llvm-5c9bb7119a54f71b8b04e113c3e357e35bf065d8.tar.xz |
R600: Match 24-bit arithmetic patterns in a Target DAGCombine
Moving these patterns from TableGen files to PerformDAGCombine()
should allow us to generate better code by eliminating unnecessary
shifts and extensions earlier.
This also fixes a bug where the MAD pattern was calling
SimplifyDemandedBits with a 24-bit mask on the first operand
even when the full pattern wasn't being matched. This occasionally
resulted in some instructions being incorrectly deleted from the
program.
v2:
- Fix bug with 64-bit mul
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205731 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/R600/R600ISelLowering.cpp')
-rw-r--r-- | lib/Target/R600/R600ISelLowering.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/Target/R600/R600ISelLowering.cpp b/lib/Target/R600/R600ISelLowering.cpp index 349146e1b6..1e6582296a 100644 --- a/lib/Target/R600/R600ISelLowering.cpp +++ b/lib/Target/R600/R600ISelLowering.cpp @@ -1526,6 +1526,7 @@ SDValue R600TargetLowering::PerformDAGCombine(SDNode *N, SelectionDAG &DAG = DCI.DAG; switch (N->getOpcode()) { + default: return AMDGPUTargetLowering::PerformDAGCombine(N, DCI); // (f32 fp_round (f64 uint_to_fp a)) -> (f32 uint_to_fp a) case ISD::FP_ROUND: { SDValue Arg = N->getOperand(0); |