r267159 - [Hexagon] Add definitions for circular and bit-reverse loads/stores

Krzysztof Parzyszek via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 22 07:58:46 PDT 2016


Author: kparzysz
Date: Fri Apr 22 09:58:46 2016
New Revision: 267159

URL: http://llvm.org/viewvc/llvm-project?rev=267159&view=rev
Log:
[Hexagon] Add definitions for circular and bit-reverse loads/stores

Modified:
    cfe/trunk/include/clang/Basic/BuiltinsHexagon.def
    cfe/trunk/test/CodeGen/builtins-hexagon.c

Modified: cfe/trunk/include/clang/Basic/BuiltinsHexagon.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsHexagon.def?rev=267159&r1=267158&r2=267159&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/BuiltinsHexagon.def (original)
+++ cfe/trunk/include/clang/Basic/BuiltinsHexagon.def Fri Apr 22 09:58:46 2016
@@ -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.

Modified: cfe/trunk/test/CodeGen/builtins-hexagon.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-hexagon.c?rev=267159&r1=267158&r2=267159&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/builtins-hexagon.c (original)
+++ cfe/trunk/test/CodeGen/builtins-hexagon.c Fri Apr 22 09:58:46 2016
@@ -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);




More information about the cfe-commits mailing list