summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-10-11 04:05:55 +0000
committerChris Lattner <sabre@nondot.org>2006-10-11 04:05:55 +0000
commitf405928e86e456e068db4f56b785dbdaffcdeb7e (patch)
treea44e06996847ae6855b4f4a2a5aa9c96548680c0 /llvm/lib
parentee0435680b01285156f6d419b491e4de6e9c8590 (diff)
downloadbcm5719-llvm-f405928e86e456e068db4f56b785dbdaffcdeb7e.tar.gz
bcm5719-llvm-f405928e86e456e068db4f56b785dbdaffcdeb7e.zip
Special case tblgen generated code for patterns like (and X, 255) or (or X, 42).
The dag/inst combiners often 'simplify' the masked value based on whether or not the bits are live or known zero/one. This is good and dandy, but often causes special case patterns to fail, such as alpha's CMPBGE pattern, which looks like "(set GPRC:$RC, (setuge (and GPRC:$RA, 255), (and GPRC:$RB, 255)))". Here the pattern for (and X, 255) should match actual dags like (and X, 254) if the dag combiner proved that the missing bits are already zero (one for 'or'). For CodeGen/Alpha/cmpbge.ll:test2 for example, this results in: sll $16,1,$0 cmpbge $0,$17,$0 ret $31,($26),1 instead of: sll $16,1,$0 and $0,254,$0 and $17,255,$1 cmpule $1,$0,$0 ret $31,($26),1 ... and requires no target-specific code. llvm-svn: 30871
Diffstat (limited to 'llvm/lib')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud