aboutsummaryrefslogtreecommitdiff
path: root/docs/CommandGuide/llvm-extract.pod
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-01-13 22:52:24 +0000
committerChris Lattner <sabre@nondot.org>2005-01-13 22:52:24 +0000
commit87875dac899f9316b6b02585196cce2f077c08bc (patch)
treeed1776eeee1e461f4a267a60813a253ac67fe456 /docs/CommandGuide/llvm-extract.pod
parente9d782b7bea2578ac20a96be2233df4f1fce4ca3 (diff)
Turn select C, (X+Y), (X-Y) --> (X+(select C, Y, (-Y))). This occurs in
the 'sim' program and probably elsewhere. In sim, it comes up for cases like this: #define round(x) ((x)>0.0 ? (x)+0.5 : (x)-0.5) double G; void T(double X) { G = round(X); } (it uses the round macro a lot). This changes the LLVM code from: %tmp.1 = setgt double %X, 0.000000e+00 ; <bool> [#uses=1] %tmp.4 = add double %X, 5.000000e-01 ; <double> [#uses=1] %tmp.6 = sub double %X, 5.000000e-01 ; <double> [#uses=1] %mem_tmp.0 = select bool %tmp.1, double %tmp.4, double %tmp.6 store double %mem_tmp.0, double* %G to: %tmp.1 = setgt double %X, 0.000000e+00 ; <bool> [#uses=1] %mem_tmp.0.p = select bool %tmp.1, double 5.000000e-01, double -5.000000e-01 %mem_tmp.0 = add double %mem_tmp.0.p, %X store double %mem_tmp.0, double* %G ret void git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19537 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/CommandGuide/llvm-extract.pod')
0 files changed, 0 insertions, 0 deletions