aboutsummaryrefslogtreecommitdiffstats
path: root/powerpc
diff options
context:
space:
mode:
authorMichael Schmidt <github@mschmidt.me>2015-12-09 14:02:13 +0100
committerMichael Schmidt <github@mschmidt.me>2015-12-09 14:02:13 +0100
commita7f005b94a1dac82ac106950f643507a268ff1c9 (patch)
tree2d644b0d5fa4dbfedf2d2811b475873bce119dd7 /powerpc
parent6922698c88f7b43fc8e207c54cac7ebd10a72645 (diff)
downloadcompcert-kvx-a7f005b94a1dac82ac106950f643507a268ff1c9.tar.gz
compcert-kvx-a7f005b94a1dac82ac106950f643507a268ff1c9.zip
bug 17752, add builtin_uisel as unsigned version of builtin_isel
Diffstat (limited to 'powerpc')
-rw-r--r--powerpc/Asmexpand.ml4
-rwxr-xr-x[-rw-r--r--]powerpc/CBuiltins.ml3
2 files changed, 5 insertions, 2 deletions
diff --git a/powerpc/Asmexpand.ml b/powerpc/Asmexpand.ml
index 35aa02d5..20ae0f66 100644
--- a/powerpc/Asmexpand.ml
+++ b/powerpc/Asmexpand.ml
@@ -490,8 +490,8 @@ let expand_builtin_inline name args res =
emit (Plwz(res, Cint ofs, GPR1))
| "__builtin_return_address",_,BR (IR res) ->
emit (Plwz (res, Cint! retaddr_offset,GPR1))
- (* isel *)
- | "__builtin_isel", [BA (IR a1); BA (IR a2); BA (IR a3)],BR (IR res) ->
+ (* Integer selection *)
+ | ("__builtin_isel" | "__builtin_uisel"), [BA (IR a1); BA (IR a2); BA (IR a3)],BR (IR res) ->
if eref then begin
emit (Pcmpwi (a1,Cint (Int.zero)));
emit (Pisel (res,a3,a2,CRbit_2))
diff --git a/powerpc/CBuiltins.ml b/powerpc/CBuiltins.ml
index 106ba4d0..6efeff17 100644..100755
--- a/powerpc/CBuiltins.ml
+++ b/powerpc/CBuiltins.ml
@@ -119,6 +119,9 @@ let builtins = {
(* isel *)
"__builtin_isel",
(TInt (IInt, []),[TInt(IBool, []);TInt(IInt, []);TInt(IInt, [])],false);
+ (* uisel *)
+ "__builtin_uisel",
+ (TInt (IUInt, []),[TInt(IBool, []);TInt(IUInt, []);TInt(IUInt, [])],false);
(* atomic operations *)
"__builtin_atomic_exchange",
(TVoid [], [TPtr (TInt(IInt, []),[]);TPtr (TInt(IInt, []),[]);TPtr (TInt(IInt, []),[])],false);