diff options
author | Cyril SIX <cyril.six@kalray.eu> | 2020-12-07 15:35:20 +0100 |
---|---|---|
committer | Cyril SIX <cyril.six@kalray.eu> | 2020-12-07 15:35:20 +0100 |
commit | 23da7b35d0edf98f271401ac93a1fa06adb062a2 (patch) | |
tree | 036672f28d72d8d583886b2503607ce661825e9b /kvx | |
parent | 60ff1e39bac5ab35c46698cbc1ed7a76fc936cab (diff) | |
download | compcert-kvx-23da7b35d0edf98f271401ac93a1fa06adb062a2.tar.gz compcert-kvx-23da7b35d0edf98f271401ac93a1fa06adb062a2.zip |
Fixing test/regression for KVXv3.8_kvx
Diffstat (limited to 'kvx')
-rw-r--r-- | kvx/Asm.v | 3 | ||||
-rw-r--r-- | kvx/Asmexpand.ml | 8 | ||||
-rw-r--r-- | kvx/CBuiltins.ml | 4 | ||||
-rw-r--r-- | kvx/TargetPrinter.ml | 3 |
4 files changed, 16 insertions, 2 deletions
@@ -104,6 +104,9 @@ Inductive instruction : Type := | Palclrd (dst: ireg) (addr: ireg) | Palclrw (dst: ireg) (addr: ireg) | Pclzll (rd rs: ireg) + | Pclzw (rd rs: ireg) + | Pctzll (rd rs: ireg) + | Pctzw (rd rs: ireg) | Pstsud (rd rs1 rs2: ireg) (** Loads *) diff --git a/kvx/Asmexpand.ml b/kvx/Asmexpand.ml index 5d4fd2f5..1e76a355 100644 --- a/kvx/Asmexpand.ml +++ b/kvx/Asmexpand.ml @@ -359,7 +359,7 @@ let expand_bswap32 d s = let open Asmvliw in emit (Psrliw(GPR32, s, _8)); emit Psemi; emit (Pandiw(GPR32, GPR32, coqint_of_camlint 0xFFl)); emit Psemi; emit (Pslliw(GPR32, GPR32, _16)); emit Psemi; - emit (Porw(GPR16, GPR16, GPR31)); emit Psemi; + emit (Porw(GPR16, GPR16, GPR32)); emit Psemi; emit (Psrliw(GPR32, s, _16)); emit Psemi; emit (Pandiw(GPR32, GPR32, coqint_of_camlint 0xFFl)); emit Psemi; emit (Pslliw(GPR32, GPR32, _8)); emit Psemi; @@ -399,8 +399,14 @@ let expand_builtin_inline name args res = let open Asmvliw in (* Vararg stuff *) | "__builtin_va_start", [BA(IR a)], _ -> expand_builtin_va_start a + | "__builtin_kvx_clzw", [BA(IR a)], BR(IR res) -> + emit (Pclzw(res, a)) | "__builtin_clzll", [BA(IR a)], BR(IR res) -> emit (Pclzll(res, a)) + | "__builtin_kvx_ctzw", [BA(IR a)], BR(IR res) -> + emit (Pctzw(res, a)) + | "__builtin_ctzll", [BA(IR a)], BR(IR res) -> + emit (Pctzll(res, a)) | "__builtin_kvx_stsud", [BA(IR a1); BA(IR a2)], BR(IR res) -> emit (Pstsud(res, a1, a2)) | "__builtin_kvx_get", [BA_int(n)], BR(IR res) -> diff --git a/kvx/CBuiltins.ml b/kvx/CBuiltins.ml index fa2f4c60..7398e0f4 100644 --- a/kvx/CBuiltins.ml +++ b/kvx/CBuiltins.ml @@ -73,8 +73,10 @@ let builtins = { (* "__builtin_kvx_cbs", (TInt(IInt, []), [TInt(IUInt, [])], false); *) (* "__builtin_kvx_cbsdl", (TInt(ILongLong, []), [TInt(IULongLong, [])], false); *) (* "__builtin_kvx_clz", (TInt(IInt, []), [TInt(IUInt, [])], false); *) - "__builtin_clzw", (TInt(IInt, []), [TInt(IUInt, [])], false); + "__builtin_kvx_clzw", (TInt(IInt, []), [TInt(IUInt, [])], false); "__builtin_clzll", (TInt(ILongLong, []), [TInt(IULongLong, [])], false); + "__builtin_kvx_ctzw", (TInt(IInt, []), [TInt(IUInt, [])], false); + "__builtin_ctzll", (TInt(ILongLong, []), [TInt(IULongLong, [])], false); (* "__builtin_kvx_clzdl", (TInt(ILongLong, []), [TInt(IULongLong, [])], false); *) (* "__builtin_kvx_cmove", (TInt(IInt, []), [TInt(IInt, []); TInt(IInt, []); TInt(IInt, [])], false); *) (* "__builtin_kvx_ctz", (TInt(IInt, []), [TInt(IUInt, [])], false); *) diff --git a/kvx/TargetPrinter.ml b/kvx/TargetPrinter.ml index dfafc137..5b6230ca 100644 --- a/kvx/TargetPrinter.ml +++ b/kvx/TargetPrinter.ml @@ -414,6 +414,9 @@ module Target (*: TARGET*) = | Psemi -> fprintf oc ";;\n" | Pclzll (rd, rs) -> fprintf oc " clzd %a = %a\n" ireg rd ireg rs + | Pclzw (rd, rs) -> fprintf oc " clzw %a = %a\n" ireg rd ireg rs + | Pctzll (rd, rs) -> fprintf oc " ctzd %a = %a\n" ireg rd ireg rs + | Pctzw (rd, rs) -> fprintf oc " ctzw %a = %a\n" ireg rd ireg rs | Pstsud (rd, rs1, rs2) -> fprintf oc " stsud %a = %a, %a\n" ireg rd ireg rs1 ireg rs2 |