Skip to content

Commit c12a591

Browse files
author
Krzysztof Parzyszek
committed
[Hexagon] Add support for Hexagon/HVX v67 ISA
1 parent fdb9cc7 commit c12a591

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+19881
-7915
lines changed

clang/include/clang/Basic/BuiltinsHexagon.def

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS)
1818
#endif
1919

20+
#pragma push_macro("V67")
21+
#define V67 "v67"
2022
#pragma push_macro("V66")
21-
#define V66 "v66"
23+
#define V66 "v66|" V67
2224
#pragma push_macro("V65")
2325
#define V65 "v65|" V66
2426
#pragma push_macro("V62")
@@ -30,8 +32,10 @@
3032
#pragma push_macro("V5")
3133
#define V5 "v5|" V55
3234

35+
#pragma push_macro("HVXV67")
36+
#define HVXV67 "hvxv67"
3337
#pragma push_macro("HVXV66")
34-
#define HVXV66 "hvxv66"
38+
#define HVXV66 "hvxv66|" HVXV67
3539
#pragma push_macro("HVXV65")
3640
#define HVXV65 "hvxv65|" HVXV66
3741
#pragma push_macro("HVXV62")
@@ -118,13 +122,15 @@ TARGET_BUILTIN(__builtin_HEXAGON_V6_vrmpyub_rtt_acc_128B,"V64iV64iV32iLLi","", "
118122
#pragma pop_macro("HVXV62")
119123
#pragma pop_macro("HVXV65")
120124
#pragma pop_macro("HVXV66")
125+
#pragma pop_macro("HVXV67")
121126

122127
#pragma pop_macro("V5")
123128
#pragma pop_macro("V55")
124129
#pragma pop_macro("V60")
125130
#pragma pop_macro("V62")
126131
#pragma pop_macro("V65")
127132
#pragma pop_macro("V66")
133+
#pragma pop_macro("V67")
128134

129135
#undef BUILTIN
130136
#undef TARGET_BUILTIN

clang/include/clang/Basic/BuiltinsHexagonDep.def

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -891,6 +891,37 @@ TARGET_BUILTIN(__builtin_HEXAGON_F2_dfadd, "ddd", "", V66)
891891
TARGET_BUILTIN(__builtin_HEXAGON_F2_dfsub, "ddd", "", V66)
892892
TARGET_BUILTIN(__builtin_HEXAGON_S2_mask, "iUIiUIi", "", V66)
893893

894+
// V67 Scalar Instructions.
895+
896+
TARGET_BUILTIN(__builtin_HEXAGON_M7_dcmpyrw, "LLiLLiLLi", "", "audio")
897+
TARGET_BUILTIN(__builtin_HEXAGON_M7_dcmpyrw_acc, "LLiLLiLLiLLi", "", "audio")
898+
TARGET_BUILTIN(__builtin_HEXAGON_M7_dcmpyrwc, "LLiLLiLLi", "", "audio")
899+
TARGET_BUILTIN(__builtin_HEXAGON_M7_dcmpyrwc_acc, "LLiLLiLLiLLi", "", "audio")
900+
TARGET_BUILTIN(__builtin_HEXAGON_M7_dcmpyiw, "LLiLLiLLi", "", "audio")
901+
TARGET_BUILTIN(__builtin_HEXAGON_M7_dcmpyiw_acc, "LLiLLiLLiLLi", "", "audio")
902+
TARGET_BUILTIN(__builtin_HEXAGON_M7_dcmpyiwc, "LLiLLiLLi", "", "audio")
903+
TARGET_BUILTIN(__builtin_HEXAGON_M7_dcmpyiwc_acc, "LLiLLiLLiLLi", "", "audio")
904+
TARGET_BUILTIN(__builtin_HEXAGON_M7_vdmpy, "LLiLLiLLi", "", V67)
905+
TARGET_BUILTIN(__builtin_HEXAGON_M7_vdmpy_acc, "LLiLLiLLiLLi", "", V67)
906+
TARGET_BUILTIN(__builtin_HEXAGON_M7_wcmpyrw, "iLLiLLi", "", "audio")
907+
TARGET_BUILTIN(__builtin_HEXAGON_M7_wcmpyrwc, "iLLiLLi", "", "audio")
908+
TARGET_BUILTIN(__builtin_HEXAGON_M7_wcmpyiw, "iLLiLLi", "", "audio")
909+
TARGET_BUILTIN(__builtin_HEXAGON_M7_wcmpyiwc, "iLLiLLi", "", "audio")
910+
TARGET_BUILTIN(__builtin_HEXAGON_M7_wcmpyrw_rnd, "iLLiLLi", "", "audio")
911+
TARGET_BUILTIN(__builtin_HEXAGON_M7_wcmpyrwc_rnd, "iLLiLLi", "", "audio")
912+
TARGET_BUILTIN(__builtin_HEXAGON_M7_wcmpyiw_rnd, "iLLiLLi", "", "audio")
913+
TARGET_BUILTIN(__builtin_HEXAGON_M7_wcmpyiwc_rnd, "iLLiLLi", "", "audio")
914+
TARGET_BUILTIN(__builtin_HEXAGON_A7_croundd_ri, "LLiLLiUIi", "", "audio")
915+
TARGET_BUILTIN(__builtin_HEXAGON_A7_croundd_rr, "LLiLLii", "", "audio")
916+
TARGET_BUILTIN(__builtin_HEXAGON_A7_clip, "iiUIi", "", "audio")
917+
TARGET_BUILTIN(__builtin_HEXAGON_A7_vclip, "LLiLLiUIi", "", "audio")
918+
TARGET_BUILTIN(__builtin_HEXAGON_F2_dfmax, "ddd", "", V67)
919+
TARGET_BUILTIN(__builtin_HEXAGON_F2_dfmin, "ddd", "", V67)
920+
TARGET_BUILTIN(__builtin_HEXAGON_F2_dfmpyfix, "ddd", "", V67)
921+
TARGET_BUILTIN(__builtin_HEXAGON_F2_dfmpyll, "ddd", "", V67)
922+
TARGET_BUILTIN(__builtin_HEXAGON_F2_dfmpylh, "dddd", "", V67)
923+
TARGET_BUILTIN(__builtin_HEXAGON_F2_dfmpyhh, "dddd", "", V67)
924+
894925
// V60 HVX Instructions.
895926

896927
TARGET_BUILTIN(__builtin_HEXAGON_V6_vS32b_qpred_ai, "vV16iv*V16i", "", HVXV60)

clang/include/clang/Driver/Options.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3006,6 +3006,8 @@ def mv65 : Flag<["-"], "mv65">, Group<m_hexagon_Features_Group>,
30063006
Alias<mcpu_EQ>, AliasArgs<["hexagonv65"]>;
30073007
def mv66 : Flag<["-"], "mv66">, Group<m_hexagon_Features_Group>,
30083008
Alias<mcpu_EQ>, AliasArgs<["hexagonv66"]>;
3009+
def mv67 : Flag<["-"], "mv67">, Group<m_hexagon_Features_Group>,
3010+
Alias<mcpu_EQ>, AliasArgs<["hexagonv67"]>;
30093011
def mhexagon_hvx : Flag<["-"], "mhvx">, Group<m_hexagon_Features_HVX_Group>,
30103012
HelpText<"Enable Hexagon Vector eXtensions">;
30113013
def mhexagon_hvx_EQ : Joined<["-"], "mhvx=">,

clang/lib/Basic/Targets/Hexagon.cpp

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ void HexagonTargetInfo::getTargetDefines(const LangOptions &Opts,
2424
Builder.defineMacro("__qdsp6__", "1");
2525
Builder.defineMacro("__hexagon__", "1");
2626

27+
// The macro __HVXDBL__ is deprecated.
28+
bool DefineHvxDbl = false;
29+
2730
if (CPU == "hexagonv5") {
2831
Builder.defineMacro("__HEXAGON_V5__");
2932
Builder.defineMacro("__HEXAGON_ARCH__", "5");
@@ -37,19 +40,26 @@ void HexagonTargetInfo::getTargetDefines(const LangOptions &Opts,
3740
Builder.defineMacro("__QDSP6_V55__");
3841
Builder.defineMacro("__QDSP6_ARCH__", "55");
3942
} else if (CPU == "hexagonv60") {
43+
DefineHvxDbl = true;
4044
Builder.defineMacro("__HEXAGON_V60__");
4145
Builder.defineMacro("__HEXAGON_ARCH__", "60");
4246
Builder.defineMacro("__QDSP6_V60__");
4347
Builder.defineMacro("__QDSP6_ARCH__", "60");
4448
} else if (CPU == "hexagonv62") {
49+
DefineHvxDbl = true;
4550
Builder.defineMacro("__HEXAGON_V62__");
4651
Builder.defineMacro("__HEXAGON_ARCH__", "62");
4752
} else if (CPU == "hexagonv65") {
53+
DefineHvxDbl = true;
4854
Builder.defineMacro("__HEXAGON_V65__");
4955
Builder.defineMacro("__HEXAGON_ARCH__", "65");
5056
} else if (CPU == "hexagonv66") {
57+
DefineHvxDbl = true;
5158
Builder.defineMacro("__HEXAGON_V66__");
5259
Builder.defineMacro("__HEXAGON_ARCH__", "66");
60+
} else if (CPU == "hexagonv67") {
61+
Builder.defineMacro("__HEXAGON_V67__");
62+
Builder.defineMacro("__HEXAGON_ARCH__", "67");
5363
}
5464

5565
if (hasFeature("hvx-length64b")) {
@@ -62,8 +72,12 @@ void HexagonTargetInfo::getTargetDefines(const LangOptions &Opts,
6272
Builder.defineMacro("__HVX__");
6373
Builder.defineMacro("__HVX_ARCH__", HVXVersion);
6474
Builder.defineMacro("__HVX_LENGTH__", "128");
65-
// FIXME: This macro is deprecated.
66-
Builder.defineMacro("__HVXDBL__");
75+
if (DefineHvxDbl)
76+
Builder.defineMacro("__HVXDBL__");
77+
}
78+
79+
if (hasFeature("audio")) {
80+
Builder.defineMacro("__HEXAGON_AUDIO__");
6781
}
6882
}
6983

@@ -95,6 +109,8 @@ bool HexagonTargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
95109
UseLongCalls = true;
96110
else if (F == "-long-calls")
97111
UseLongCalls = false;
112+
else if (F == "+audio")
113+
HasAudio = true;
98114
}
99115
return true;
100116
}
@@ -145,6 +161,7 @@ bool HexagonTargetInfo::hasFeature(StringRef Feature) const {
145161
.Case("hvx-length64b", HasHVX64B)
146162
.Case("hvx-length128b", HasHVX128B)
147163
.Case("long-calls", UseLongCalls)
164+
.Case("audio", HasAudio)
148165
.Default(false);
149166
}
150167

@@ -154,9 +171,10 @@ struct CPUSuffix {
154171
};
155172

156173
static constexpr CPUSuffix Suffixes[] = {
157-
{{"hexagonv5"}, {"5"}}, {{"hexagonv55"}, {"55"}},
158-
{{"hexagonv60"}, {"60"}}, {{"hexagonv62"}, {"62"}},
159-
{{"hexagonv65"}, {"65"}}, {{"hexagonv66"}, {"66"}},
174+
{{"hexagonv5"}, {"5"}}, {{"hexagonv55"}, {"55"}},
175+
{{"hexagonv60"}, {"60"}}, {{"hexagonv62"}, {"62"}},
176+
{{"hexagonv65"}, {"65"}}, {{"hexagonv66"}, {"66"}},
177+
{{"hexagonv67"}, {"67"}},
160178
};
161179

162180
const char *HexagonTargetInfo::getHexagonCPUSuffix(StringRef Name) {

clang/lib/Basic/Targets/Hexagon.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class LLVM_LIBRARY_VISIBILITY HexagonTargetInfo : public TargetInfo {
3232
bool HasHVX = false;
3333
bool HasHVX64B = false;
3434
bool HasHVX128B = false;
35+
bool HasAudio = false;
3536
bool UseLongCalls = false;
3637

3738
public:
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
// RUN: %clang_cc1 -triple hexagon -target-cpu hexagonv67 -target-feature +audio -emit-llvm -o - %s | FileCheck %s
2+
3+
// CHECK-LABEL: @test1
4+
// CHECK: call i64 @llvm.hexagon.M7.dcmpyrw(i64 %0, i64 %1)
5+
long long test1(long long rss, long long rtt) {
6+
return __builtin_HEXAGON_M7_dcmpyrw(rss, rtt);
7+
}
8+
9+
// CHECK-LABEL: @test2
10+
// CHECK: call i64 @llvm.hexagon.M7.dcmpyrw.acc(i64 %0, i64 %1, i64 %2)
11+
long long test2(long long rxx, long long rss, long long rtt) {
12+
return __builtin_HEXAGON_M7_dcmpyrw_acc(rxx, rss, rtt);
13+
}
14+
15+
// CHECK-LABEL: @test3
16+
// CHECK: call i64 @llvm.hexagon.M7.dcmpyrwc(i64 %0, i64 %1)
17+
long long test3(long long rss, long long rtt) {
18+
return __builtin_HEXAGON_M7_dcmpyrwc(rss, rtt);
19+
}
20+
21+
// CHECK-LABEL: @test4
22+
// CHECK: call i64 @llvm.hexagon.M7.dcmpyrwc.acc(i64 %0, i64 %1, i64 %2)
23+
long long test4(long long rxx, long long rss, long long rtt) {
24+
return __builtin_HEXAGON_M7_dcmpyrwc_acc(rxx, rss, rtt);
25+
}
26+
27+
// CHECK-LABEL: @test5
28+
// CHECK: call i64 @llvm.hexagon.M7.dcmpyiw(i64 %0, i64 %1)
29+
long long test5(long long rss, long long rtt) {
30+
return __builtin_HEXAGON_M7_dcmpyiw(rss, rtt);
31+
}
32+
33+
// CHECK-LABEL: @test6
34+
// CHECK: call i64 @llvm.hexagon.M7.dcmpyiw.acc(i64 %0, i64 %1, i64 %2)
35+
long long test6(long long rxx, long long rss, long long rtt) {
36+
return __builtin_HEXAGON_M7_dcmpyiw_acc(rxx, rss, rtt);
37+
}
38+
39+
// CHECK-LABEL: @test7
40+
// CHECK: call i64 @llvm.hexagon.M7.dcmpyiwc(i64 %0, i64 %1)
41+
long long test7(long long rss, long long rtt) {
42+
return __builtin_HEXAGON_M7_dcmpyiwc(rss, rtt);
43+
}
44+
45+
// CHECK-LABEL: @test8
46+
// CHECK: call i64 @llvm.hexagon.M7.dcmpyiwc.acc(i64 %0, i64 %1, i64 %2)
47+
long long test8(long long rxx, long long rss, long long rtt) {
48+
return __builtin_HEXAGON_M7_dcmpyiwc_acc(rxx, rss, rtt);
49+
}
50+
51+
// CHECK-LABEL: @test9
52+
// CHECK: call i32 @llvm.hexagon.M7.wcmpyrw(i64 %0, i64 %1)
53+
int test9(long long rss, long long rtt) {
54+
return __builtin_HEXAGON_M7_wcmpyrw(rss, rtt);
55+
}
56+
57+
// CHECK-LABEL: @test10
58+
// CHECK: call i32 @llvm.hexagon.M7.wcmpyrwc(i64 %0, i64 %1)
59+
int test10(long long rss, long long rtt) {
60+
return __builtin_HEXAGON_M7_wcmpyrwc(rss, rtt);
61+
}
62+
63+
// CHECK-LABEL: @test11
64+
// CHECK: call i32 @llvm.hexagon.M7.wcmpyiw(i64 %0, i64 %1)
65+
int test11(long long rss, long long rtt) {
66+
return __builtin_HEXAGON_M7_wcmpyiw(rss, rtt);
67+
}
68+
69+
// CHECK-LABEL: @test12
70+
// CHECK: call i32 @llvm.hexagon.M7.wcmpyiwc(i64 %0, i64 %1)
71+
int test12(long long rss, long long rtt) {
72+
return __builtin_HEXAGON_M7_wcmpyiwc(rss, rtt);
73+
}
74+
75+
// CHECK-LABEL: @test13
76+
// CHECK: call i32 @llvm.hexagon.M7.wcmpyrw.rnd(i64 %0, i64 %1)
77+
int test13(long long rss, long long rtt) {
78+
return __builtin_HEXAGON_M7_wcmpyrw_rnd(rss, rtt);
79+
}
80+
81+
// CHECK-LABEL: @test14
82+
// CHECK: call i32 @llvm.hexagon.M7.wcmpyrwc.rnd(i64 %0, i64 %1)
83+
int test14(long long rss, long long rtt) {
84+
return __builtin_HEXAGON_M7_wcmpyrwc_rnd(rss, rtt);
85+
}
86+
87+
// CHECK-LABEL: @test15
88+
// CHECK: call i32 @llvm.hexagon.M7.wcmpyiw.rnd(i64 %0, i64 %1)
89+
int test15(long long rss, long long rtt) {
90+
return __builtin_HEXAGON_M7_wcmpyiw_rnd(rss, rtt);
91+
}
92+
93+
// CHECK-LABEL: @test16
94+
// CHECK: call i32 @llvm.hexagon.M7.wcmpyiwc.rnd(i64 %0, i64 %1)
95+
int test16(long long rss, long long rtt) {
96+
return __builtin_HEXAGON_M7_wcmpyiwc_rnd(rss, rtt);
97+
}
98+
99+
// CHECK-LABEL: @test17
100+
// CHECK: call i64 @llvm.hexagon.A7.croundd.ri(i64 %0, i32 0)
101+
long long test17(long long rss) {
102+
return __builtin_HEXAGON_A7_croundd_ri(rss, 0);
103+
}
104+
105+
// CHECK-LABEL: @test18
106+
// CHECK: call i64 @llvm.hexagon.A7.croundd.rr(i64 %0, i32 %1)
107+
long long test18(long long rss, int rt) {
108+
return __builtin_HEXAGON_A7_croundd_rr(rss, rt);
109+
}
110+
111+
// CHECK-LABEL: @test19
112+
// CHECK: call i32 @llvm.hexagon.A7.clip(i32 %0, i32 0)
113+
int test19(int rs) {
114+
return __builtin_HEXAGON_A7_clip(rs, 0);
115+
}
116+
117+
// CHECK-LABEL: @test20
118+
// CHECK: call i64 @llvm.hexagon.A7.vclip(i64 %0, i32 0)
119+
long long test20(long long rs) {
120+
return __builtin_HEXAGON_A7_vclip(rs, 0);
121+
}
122+
123+
// CHECK-LABEL: @test21
124+
// CHECK: call i64 @llvm.hexagon.M7.vdmpy(i64 %0, i64 %1)
125+
long long test21(long long rss, long long rtt) {
126+
return __builtin_HEXAGON_M7_vdmpy(rss, rtt);
127+
}
128+
129+
// CHECK-LABEL: @test22
130+
// CHECK: call i64 @llvm.hexagon.M7.vdmpy.acc(i64 %0, i64 %1, i64 %2)
131+
long long test22(long long rxx, long long rss, long long rtt) {
132+
return __builtin_HEXAGON_M7_vdmpy_acc(rxx, rss, rtt);
133+
}
134+
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// RUN: %clang_cc1 -triple hexagon -target-cpu hexagonv67 -emit-llvm -o - %s | FileCheck %s
2+
3+
// CHECK-LABEL: @t1
4+
// CHECK: call double @llvm.hexagon.F2.dfmpylh(double %0, double %1, double %2)
5+
double t1(double a, double b, double c) {
6+
return __builtin_HEXAGON_F2_dfmpylh(a, b, c);
7+
}
8+
9+
// CHECK-LABEL: @t2
10+
// CHECK: call double @llvm.hexagon.F2.dfmpyhh(double %0, double %1, double %2)
11+
double t2(double a, double b, double c) {
12+
return __builtin_HEXAGON_F2_dfmpyhh(a, b, c);
13+
}
14+
15+
// CHECK-LABEL: @t3
16+
// CHECK: call double @llvm.hexagon.F2.dfmax(double %0, double %1)
17+
double t3(double a, double b) {
18+
return __builtin_HEXAGON_F2_dfmax(a, b);
19+
}
20+
21+
// CHECK-LABEL: @t4
22+
// CHECK: call double @llvm.hexagon.F2.dfmin(double %0, double %1)
23+
double t4(double a, double b) {
24+
return __builtin_HEXAGON_F2_dfmin(a, b);
25+
}
26+
27+
// CHECK-LABEL: @t5
28+
// CHECK: call double @llvm.hexagon.F2.dfmpyfix(double %0, double %1)
29+
double t5(double a, double b) {
30+
return __builtin_HEXAGON_F2_dfmpyfix(a, b);
31+
}
32+
33+
// CHECK-LABEL: @t6
34+
// CHECK: call double @llvm.hexagon.F2.dfmpyll(double %0, double %1)
35+
double t6(double a, double b) {
36+
return __builtin_HEXAGON_F2_dfmpyll(a, b);
37+
}
38+
39+
// CHECK-LABEL: @t7
40+
// CHECK: call i64 @llvm.hexagon.M7.vdmpy(i64 %0, i64 %1)
41+
long long t7(long long rss, long long rtt) {
42+
return __builtin_HEXAGON_M7_vdmpy(rss, rtt);
43+
}
44+
45+
// CHECK-LABEL: @t8
46+
// CHECK: call i64 @llvm.hexagon.M7.vdmpy.acc(i64 %0, i64 %1, i64 %2)
47+
long long t8(long long rxx, long long rss, long long rtt) {
48+
return __builtin_HEXAGON_M7_vdmpy_acc(rxx, rss, rtt);
49+
}
50+

clang/test/Driver/hexagon-toolchain-elf.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,14 @@
134134
// CHECK029: "-cc1" {{.*}} "-target-cpu" "hexagonv65"
135135
// CHECK029: {{hexagon-link|ld}}{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v65/crt0
136136

137+
// RUN: %clang -### -target hexagon-unknown-elf \
138+
// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
139+
// RUN: -mcpu=hexagonv67 -fuse-ld=hexagon-link\
140+
// RUN: %s 2>&1 \
141+
// RUN: | FileCheck -check-prefix=CHECK02A %s
142+
// CHECK02A: "-cc1" {{.*}} "-target-cpu" "hexagonv67"
143+
// CHECK02A: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v67/crt0
144+
137145
// -----------------------------------------------------------------------------
138146
// Test Linker related args
139147
// -----------------------------------------------------------------------------

clang/test/Preprocessor/hexagon-predefines.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,13 @@
8686
// CHECK-V66HVX-128B: #define __HVX_LENGTH__ 128
8787
// CHECK-V66HVX-128B: #define __HVX__ 1
8888
// CHECK-V66HVX-128B: #define __hexagon__ 1
89+
90+
// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv67 \
91+
// RUN: -target-feature +hvxv67 -target-feature +hvx-length128b %s | FileCheck \
92+
// RUN: %s -check-prefix CHECK-V67HVX-128B
93+
// CHECK-V67HVX-128B: #define __HEXAGON_ARCH__ 67
94+
// CHECK-V67HVX-128B: #define __HEXAGON_V67__ 1
95+
// CHECK-V67HVX-128B: #define __HVX_ARCH__ 67
96+
// CHECK-V67HVX-128B: #define __HVX_LENGTH__ 128
97+
// CHECK-V67HVX-128B: #define __HVX__ 1
98+
// CHECK-V67HVX-128B: #define __hexagon__ 1

0 commit comments

Comments
 (0)