From 40a41ae1131f05269514e21f769d5d8c07c09c4a Mon Sep 17 00:00:00 2001 From: xleroy Date: Fri, 5 Aug 2011 09:40:29 +0000 Subject: arm/PrintAsm: bugs in expansion of new builtins test/: testing the builtins git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1696 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e --- arm/PrintAsm.ml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'arm/PrintAsm.ml') diff --git a/arm/PrintAsm.ml b/arm/PrintAsm.ml index c50acba..542f3a4 100644 --- a/arm/PrintAsm.ml +++ b/arm/PrintAsm.ml @@ -372,7 +372,7 @@ let print_builtin_vstore oc chunk args = (* Magic sequence for byte-swapping *) -let print_bswap oc src dst tmp = +let print_bswap oc src tmp dst = (* tmp <> src, tmp <> dst, but can have dst = src *) (* src = A . B .C . D *) fprintf oc " eor %a, %a, %a, ror #16\n" ireg tmp ireg src ireg src; @@ -400,8 +400,9 @@ let print_builtin_inline oc name args res = (* Memory accesses *) | "__builtin_read_int16_reversed", [IR a1], IR res -> fprintf oc " ldrh %a, [%a, #0]\n" ireg res ireg a1; - fprintf oc " mov %a, %a, lsr #8\n" ireg IR14 ireg res; - fprintf oc " orr %a, %a, %a, lsl #8\n" ireg res ireg IR14 ireg res; 3 + fprintf oc " mov %a, %a, lsl #8\n" ireg IR14 ireg res; + fprintf oc " and %a, %a, #0xFF00\n" ireg IR14 ireg IR14; + fprintf oc " orr %a, %a, %a, lsr #8\n" ireg res ireg IR14 ireg res; 4 | "__builtin_read_int32_reversed", [IR a1], IR res -> fprintf oc " ldr %a, [%a, #0]\n" ireg res ireg a1; print_bswap oc res IR14 res; 5 -- cgit v1.2.3