File tree Expand file tree Collapse file tree 3 files changed +51
-2
lines changed
runtime/druntime/src/core Expand file tree Collapse file tree 3 files changed +51
-2
lines changed Original file line number Diff line number Diff line change @@ -39,6 +39,14 @@ template Vector(T)
3939
4040/* Handy aliases
4141 */
42+ version (LDC )
43+ {
44+ static if (is (Vector! (void [4 ]))) alias Vector! (void [4 ]) void4; // /
45+ static if (is (Vector! (byte [4 ]))) alias Vector! (byte [4 ]) byte4; // /
46+ static if (is (Vector! (ubyte [4 ]))) alias Vector! (ubyte [4 ]) ubyte4; // /
47+ static if (is (Vector! (short [2 ]))) alias Vector! (short [2 ]) short2; // /
48+ static if (is (Vector! (ushort [2 ]))) alias Vector! (ushort [2 ]) ushort2; // /
49+ }
4250static if (is (Vector! (void [8 ]))) alias Vector! (void [8 ]) void8; // /
4351static if (is (Vector! (double [1 ]))) alias Vector! (double [1 ]) double1; // /
4452static if (is (Vector! (float [2 ]))) alias Vector! (float [2 ]) float2; // /
Original file line number Diff line number Diff line change 1+ // Very basic test to check that instrinsics include file is made correctly.
2+ // Related to https://github.com/ldc-developers/ldc/issues/4347
3+
4+ // Just do SemA, no codegen, such that it works on all CI systems.
5+ // RUN: %ldc -o- %s
6+
7+ import core.simd ;
8+ static import ldc.gccbuiltins_aarch64;
9+ static import ldc.gccbuiltins_arm;
10+ static import ldc.gccbuiltins_mips;
11+ static import ldc.gccbuiltins_nvvm;
12+ static import ldc.gccbuiltins_ppc;
13+ static import ldc.gccbuiltins_x86;
14+
15+ short2 s2;
16+ short8 s8;
17+ double2 d2;
18+ void * ptr;
19+
20+ void main ()
21+ {
22+ ldc.gccbuiltins_aarch64.__builtin_arm_isb(1 );
23+
24+ ldc.gccbuiltins_arm.__builtin_arm_dmb(2 );
25+
26+ short2 mips = ldc.gccbuiltins_mips.__builtin_mips_addq_s_ph(s2, s2);
27+
28+ double nvvm = ldc.gccbuiltins_nvvm.__nvvm_fma_rz_d(1.0 , 2.0 , 3.0 );
29+
30+ short8 ppc8 = ldc.gccbuiltins_ppc.__builtin_altivec_crypto_vpmsumh(s8, s8);
31+
32+ ldc.gccbuiltins_x86.__builtin_ia32_lfence();
33+ ldc.gccbuiltins_x86.__builtin_ia32_umonitor(ptr);
34+ double2 x86 = ldc.gccbuiltins_x86.__builtin_ia32_maxpd(d2, d2);
35+ }
Original file line number Diff line number Diff line change 2929using namespace std ;
3030using namespace llvm ;
3131
32+ #if LDC_LLVM_VER >= 1500
33+ #define BUILTIN_NAME_STRING " ClangBuiltinName"
34+ #else
35+ #define BUILTIN_NAME_STRING " GCCBuiltinName"
36+ #endif
37+
3238string dtype (Record* rec, bool readOnlyMem)
3339{
3440 Init* typeInit = rec->getValueInit (" VT" );
@@ -85,10 +91,10 @@ StringRef attributes(ListInit* propertyList)
8591
8692void processRecord (raw_ostream& os, Record& rec, string arch)
8793{
88- if (!rec.getValue (" GCCBuiltinName " ))
94+ if (!rec.getValue (BUILTIN_NAME_STRING ))
8995 return ;
9096
91- const StringRef builtinName = rec.getValueAsString (" GCCBuiltinName " );
97+ const StringRef builtinName = rec.getValueAsString (BUILTIN_NAME_STRING );
9298 string name = rec.getName ().str ();
9399
94100 if (name.substr (0 , 4 ) != " int_" || name.find (arch) == string::npos)
You can’t perform that action at this time.
0 commit comments