On Wed, 20 Jun 2012 11:56:39 +0100
Ramana Radhakrishnan <[email protected]> wrote:
> Hi,
>
> This patch helps use the __builtin_shuffle intrinsics to implement the
> Neon permute intrinsics following on from Julian's and my patch last
> week. It needed support for __builtin_shuffle in the C++ frontend
> which is now in and has been for the past few days , so I'm a little
> happier with this going in now.The changes to Julian's patch are to
> drop the "mask" generation and now this directly generates the vector
> constants instead.
A small stylistic point I noticed: in,
let rec print_lines = function
[] -> ()
- | [line] -> Format.printf "%s" line
- | line::lines -> Format.printf "%s@," line; print_lines lines in
+ | [line] -> if line <> "" then Format.printf "%s" line else ()
+ | line::lines -> (if line <> "" then Format.printf "%s@," line);
print_lines lines in
print_lines body; close_braceblock ffmt;
end_function ffmt
You can use constant strings in pattern matches, so this can be just:
let rec print_lines = function
[] | ""::_ -> ()
| [line] -> Format.printf...
| line::lines -> Format.printf...
You didn't need the brackets () around the if, btw. It's semantically
quite like C: only a single statement after the "then" is conditional.
If you want multiple statements conditionalised, the idiomatic
way to do it is use begin...end (equivalent to { } in C) after the then
keyword.
HTH,
Julian