From d1edbeaecf0fb8033ab9b0198e8a3eef8fe7d4f3 Mon Sep 17 00:00:00 2001 From: Krzysztof Parzyszek Date: Fri, 14 Jul 2017 16:01:24 +0000 Subject: [PATCH] [Hexagon] Add intrinsics for data cache operations This is the clang part, adding support for void __builtin_HEXAGON_Y2_dccleana(void*); void __builtin_HEXAGON_Y2_dccleaninva(void*); void __builtin_HEXAGON_Y2_dcinva(void*); void __builtin_HEXAGON_Y2_dczeroa(void*); void __builtin_HEXAGON_Y4_l2fetch(void*, unsigned); void __builtin_HEXAGON_Y5_l2fetch(void*, unsigned long long); Requires r308032. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@308035 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Basic/BuiltinsHexagon.def | 6 ++++++ test/CodeGen/builtins-hexagon.c | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/clang/Basic/BuiltinsHexagon.def b/include/clang/Basic/BuiltinsHexagon.def index 85936cbfc0..14fc4adc25 100644 --- a/include/clang/Basic/BuiltinsHexagon.def +++ b/include/clang/Basic/BuiltinsHexagon.def @@ -882,6 +882,12 @@ BUILTIN(__builtin_HEXAGON_S2_ct0p,"iLLi","") BUILTIN(__builtin_HEXAGON_S2_ct1p,"iLLi","") BUILTIN(__builtin_HEXAGON_S2_interleave,"LLiLLi","") BUILTIN(__builtin_HEXAGON_S2_deinterleave,"LLiLLi","") +BUILTIN(__builtin_HEXAGON_Y2_dccleana,"vv*","") +BUILTIN(__builtin_HEXAGON_Y2_dccleaninva,"vv*","") +BUILTIN(__builtin_HEXAGON_Y2_dcinva,"vv*","") +BUILTIN(__builtin_HEXAGON_Y2_dczeroa,"vv*","") +BUILTIN(__builtin_HEXAGON_Y4_l2fetch,"vv*Ui","") +BUILTIN(__builtin_HEXAGON_Y5_l2fetch,"vv*LLUi","") BUILTIN(__builtin_HEXAGON_S6_rol_i_r,"iii","v:60:") BUILTIN(__builtin_HEXAGON_S6_rol_i_p,"LLiLLii","v:60:") diff --git a/test/CodeGen/builtins-hexagon.c b/test/CodeGen/builtins-hexagon.c index e2eda2afaf..f9f5d495d0 100644 --- a/test/CodeGen/builtins-hexagon.c +++ b/test/CodeGen/builtins-hexagon.c @@ -2962,4 +2962,16 @@ void foo() { // CHECK: @llvm.hexagon.V6.vzh.128B __builtin_HEXAGON_V6_vzh(v16); // CHECK: @llvm.hexagon.V6.vzh + __builtin_HEXAGON_Y2_dccleana(0); + // CHECK: @llvm.hexagon.Y2.dccleana + __builtin_HEXAGON_Y2_dccleaninva(0); + // CHECK: @llvm.hexagon.Y2.dccleaninva + __builtin_HEXAGON_Y2_dcinva(0); + // CHECK: @llvm.hexagon.Y2.dcinva + __builtin_HEXAGON_Y2_dczeroa(0); + // CHECK: @llvm.hexagon.Y2.dczeroa + __builtin_HEXAGON_Y4_l2fetch(0, 0); + // CHECK: @llvm.hexagon.Y4.l2fetch + __builtin_HEXAGON_Y5_l2fetch(0, 0); + // CHECK: @llvm.hexagon.Y5.l2fetch } -- 2.40.0