From: Krzysztof Parzyszek Date: Fri, 22 Apr 2016 14:58:46 +0000 (+0000) Subject: [Hexagon] Add definitions for circular and bit-reverse loads/stores X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4af4f0db0b281197f606813703781da01354ae0c;p=clang [Hexagon] Add definitions for circular and bit-reverse loads/stores git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@267159 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/BuiltinsHexagon.def b/include/clang/Basic/BuiltinsHexagon.def index d2adf8966e..85936cbfc0 100644 --- a/include/clang/Basic/BuiltinsHexagon.def +++ b/include/clang/Basic/BuiltinsHexagon.def @@ -18,7 +18,28 @@ // Make sure you do not overwrite these. BUILTIN(__builtin_SI_to_SXTHI_asrh, "ii", "") -BUILTIN(__builtin_circ_ldd, "LLi*LLi*LLi*ii", "") +BUILTIN(__builtin_brev_ldd, "LLi*LLi*LLi*i", "") +BUILTIN(__builtin_brev_ldw, "i*i*i*i", "") +BUILTIN(__builtin_brev_ldh, "s*s*s*i", "") +BUILTIN(__builtin_brev_lduh, "Us*Us*Us*i", "") +BUILTIN(__builtin_brev_ldb, "c*c*c*i", "") +BUILTIN(__builtin_brev_ldub, "Uc*Uc*Uc*i", "") +BUILTIN(__builtin_circ_ldd, "LLi*LLi*LLi*iIi", "") +BUILTIN(__builtin_circ_ldw, "i*i*i*iIi", "") +BUILTIN(__builtin_circ_ldh, "s*s*s*iIi", "") +BUILTIN(__builtin_circ_lduh, "Us*Us*Us*iIi", "") +BUILTIN(__builtin_circ_ldb, "c*c*c*iIi", "") +BUILTIN(__builtin_circ_ldub, "Uc*Uc*Uc*iIi", "") +BUILTIN(__builtin_brev_std, "LLi*LLi*LLii", "") +BUILTIN(__builtin_brev_stw, "i*i*ii", "") +BUILTIN(__builtin_brev_sth, "s*s*ii", "") +BUILTIN(__builtin_brev_sthhi, "s*s*ii", "") +BUILTIN(__builtin_brev_stb, "c*c*ii", "") +BUILTIN(__builtin_circ_std, "LLi*LLi*LLiiIi", "") +BUILTIN(__builtin_circ_stw, "i*i*iiIi", "") +BUILTIN(__builtin_circ_sth, "s*s*iiIi", "") +BUILTIN(__builtin_circ_sthhi, "s*s*iiIi", "") +BUILTIN(__builtin_circ_stb, "c*c*iiIi", "") // The builtins above are not autogenerated from iset.py. // Make sure you do not overwrite these. diff --git a/test/CodeGen/builtins-hexagon.c b/test/CodeGen/builtins-hexagon.c index 0b9eb75c17..b9119ff29f 100644 --- a/test/CodeGen/builtins-hexagon.c +++ b/test/CodeGen/builtins-hexagon.c @@ -6,6 +6,52 @@ void foo() { int v32 __attribute__((__vector_size__(128))); int v64 __attribute__((__vector_size__(256))); + // The circ/brev intrinsics do not have _HEXAGON_ in the name. + __builtin_brev_ldb(0, 0, 0); + // CHECK: @llvm.hexagon.brev.ldb + __builtin_brev_ldd(0, 0, 0); + // CHECK: @llvm.hexagon.brev.ldd + __builtin_brev_ldh(0, 0, 0); + // CHECK: @llvm.hexagon.brev.ldh + __builtin_brev_ldub(0, 0, 0); + // CHECK: @llvm.hexagon.brev.ldub + __builtin_brev_lduh(0, 0, 0); + // CHECK: @llvm.hexagon.brev.lduh + __builtin_brev_ldw(0, 0, 0); + // CHECK: @llvm.hexagon.brev.ldw + __builtin_brev_stb(0, 0, 0); + // CHECK: @llvm.hexagon.brev.stb + __builtin_brev_std(0, 0LL, 0); + // CHECK: @llvm.hexagon.brev.std + __builtin_brev_sth(0, 0, 0); + // CHECK: @llvm.hexagon.brev.sth + __builtin_brev_sthhi(0, 0, 0); + // CHECK: @llvm.hexagon.brev.sthhi + __builtin_brev_stw(0, 0, 0); + // CHECK: @llvm.hexagon.brev.stw + __builtin_circ_ldb(0, 0, 0, 0); + // CHECK: llvm.hexagon.circ.ldb + __builtin_circ_ldd(0, 0, 0, 0); + // CHECK: llvm.hexagon.circ.ldd + __builtin_circ_ldh(0, 0, 0, 0); + // CHECK: llvm.hexagon.circ.ldh + __builtin_circ_ldub(0, 0, 0, 0); + // CHECK: llvm.hexagon.circ.ldub + __builtin_circ_lduh(0, 0, 0, 0); + // CHECK: llvm.hexagon.circ.lduh + __builtin_circ_ldw(0, 0, 0, 0); + // CHECK: llvm.hexagon.circ.ldw + __builtin_circ_stb(0, 0, 0, 0); + // CHECK: llvm.hexagon.circ.stb + __builtin_circ_std(0, 0LL, 0, 0); + // CHECK: llvm.hexagon.circ.std + __builtin_circ_sth(0, 0, 0, 0); + // CHECK: llvm.hexagon.circ.sth + __builtin_circ_sthhi(0, 0, 0, 0); + // CHECK: llvm.hexagon.circ.sthhi + __builtin_circ_stw(0, 0, 0, 0); + // CHECK: llvm.hexagon.circ.stw + __builtin_HEXAGON_A2_abs(0); // CHECK: @llvm.hexagon.A2.abs __builtin_HEXAGON_A2_absp(0);