Browse thread
[Caml-list] Pointers needed for optimization problem.
- Pal-Kristian Engstad
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Pal-Kristian Engstad <engstad@n...> |
| Subject: | [Caml-list] Pointers needed for optimization problem. |
Hi, I'm interested in solving a problem I have with automatically generating optimal (vector) floating point code. In other words, I want to code a caml program that transforms the input description into assembly instructions. For regular floating point operations, a good compiler should be able to optimize the code: r := A * x * x + B * x + C into (if multiplication is more expensive than adds): t := A * x t := t + B t := t * x t := t + B since r := (A * x + B) * x + C Now, this is fairly trivial to do, but if you have an architecture with SIMD vector floating point registers and opcodes, a whole range of new interesting optimizations can be done. With vector registers, I mean registers that have up to 4 floating point values. For instance, a 4-vector times a 4-by-4 matrix operation can be coded as: acc.xyzw := mtxrow[0].xyzw * vec.x acc.xyzw += mtxrow[1].xyzw * vec.y acc.xyzw += mtxrow[2].xyzw * vec.z res.xyzw = acc.xyzw + mtxrow[3].xyzw * vec.w Here, each line represent one assembly instruction. So, what I am looking for is basically pointers to literature that deal with issues like these, and since OCaml is a great language for language transformations I thought someone on this list would be able to point me in the right direction. I _have_ been searching on the net, but I guess I don't know the right keywords to search on. PKE. ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners