blob: 171d586760ed34f6c5022e83aa7a8a47918834e8 [file] [log] [blame]
Sumanth Gundapaneni57098f52017-10-18 18:10:13 +00001// -----------------------------------------------------------------------------
2// Tests for the hvx features and warnings.
3// -----------------------------------------------------------------------------
4
Krzysztof Parzyszekcc5cd2c2017-12-13 13:48:07 +00005// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 -mhvx \
6// RUN: 2>&1 | FileCheck -check-prefix=CHECKHVX165 %s
7// CHECKHVX165: "-target-feature" "+hvxv65"
8
Sumanth Gundapaneni57098f52017-10-18 18:10:13 +00009// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx \
10// RUN: 2>&1 | FileCheck -check-prefix=CHECKHVX162 %s
11// CHECKHVX162: "-target-feature" "+hvxv62"
12
Krzysztof Parzyszekcc5cd2c2017-12-13 13:48:07 +000013// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 -mhvx \
14// RUN: -mhvx-double 2>&1 | FileCheck -check-prefix=CHECKHVX2 %s
15
Sumanth Gundapaneni57098f52017-10-18 18:10:13 +000016// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx \
17// RUN: -mhvx-double 2>&1 | FileCheck -check-prefix=CHECKHVX2 %s
18
Krzysztof Parzyszekcc5cd2c2017-12-13 13:48:07 +000019// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 -mhvx \
20// RUN: -mhvx-length=128B 2>&1 | FileCheck -check-prefix=CHECKHVX2 %s
21
Sumanth Gundapaneni57098f52017-10-18 18:10:13 +000022// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx \
23// RUN: -mhvx-length=128B 2>&1 | FileCheck -check-prefix=CHECKHVX2 %s
24// CHECKHVX2-NOT: "-target-feature" "+hvx-length64b"
25// CHECKHVX2: "-target-feature" "+hvx-length128b"
26
Krzysztof Parzyszekcc5cd2c2017-12-13 13:48:07 +000027// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 2>&1 \
28// RUN: | FileCheck -check-prefix=CHECKHVX3 %s
29
Sumanth Gundapaneni57098f52017-10-18 18:10:13 +000030// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 2>&1 \
31// RUN: | FileCheck -check-prefix=CHECKHVX3 %s
32// CHECKHVX3-NOT: "-target-feature" "+hvx
33
34// -mhvx-double is deprecated.
35// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx-double \
36// RUN: 2>&1 | FileCheck -check-prefix=CHECK-DEPRECATED %s
37// CHECK-DEPRECATED: warning: argument '-mhvx-double' is deprecated, use '-mhvx-length=128B' instead [-Wdeprecated]
38
39// -mno-hvx-double is deprecated.
40// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mno-hvx-double \
41// RUN: 2>&1 | FileCheck -check-prefix=CHECK-NODEPRECATED %s
42// CHECK-NODEPRECATED: warning: argument '-mno-hvx-double' is deprecated, use '-mno-hvx' instead [-Wdeprecated]
43
44// No hvx target feature must be added if -mno-hvx/-mno-hvx-double occurs last
45// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mno-hvx \
46// RUN: 2>&1 | FileCheck -check-prefix=CHECK-NOHVX %s
47// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx -mno-hvx \
48// RUN: 2>&1 | FileCheck -check-prefix=CHECK-NOHVX %s
49// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx -mno-hvx-double \
50// RUN: 2>&1 | FileCheck -check-prefix=CHECK-NOHVX %s
51// CHECK-NOHVX-NOT: "-target-feature" "+hvx
52
53// Hvx target feature should be added if -mno-hvx doesnot occur last
54// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mno-hvx -mhvx\
55// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXFEAT %s
56// CHECK-HVXFEAT: "-target-feature" "+hvxv62"
57
58// With -mhvx, the version of hvx defaults to Cpu
59// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx \
60// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-DEFAULT %s
61// CHECK-HVX-DEFAULT: "-target-feature" "+hvxv60"
62
63// Test -mhvx= flag
64// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx=v62 \
65// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXEQ %s
66// CHECK-HVXEQ: "-target-feature" "+hvxv62"
67
68// Honor the last occured -mhvx=, -mhvx flag.
69// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx=v62 -mhvx\
70// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXEQ-PRE %s
71// CHECK-HVXEQ-PRE-NOT: "-target-feature" "+hvxv62"
72// CHECK-HVXEQ-PRE: "-target-feature" "+hvxv60"
73// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx -mhvx=v62\
74// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXEQ-PRE2 %s
75// CHECK-HVXEQ-PRE2-NOT: "-target-feature" "+hvxv60"
76// CHECK-HVXEQ-PRE2: "-target-feature" "+hvxv62"
77
78// Test -mhvx-length flag
79// The default mode on v60,v62 is 64B.
80// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx \
81// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-64B %s
82// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx -mhvx-length=64B\
83// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-64B %s
84// CHECK-HVXLENGTH-64B: "-target-feature" "+hvx{{.*}}" "-target-feature" "+hvx-length64b"
85// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx -mhvx-length=128B\
86// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-128B %s
87// CHECK-HVXLENGTH-128B: "-target-feature" "+hvx{{.*}}" "-target-feature" "+hvx-length128b"
88
89// Bail out if -mhvx-length is specified without HVX enabled
90// RUN: %clang -c %s -### -target hexagon-unknown-elf -mhvx-length=64B \
91// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-ERROR %s
92// RUN: %clang -c %s -### -target hexagon-unknown-elf -mhvx-length=128B \
93// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-ERROR %s
94// RUN: %clang -c %s -### -target hexagon-unknown-elf -mhvx-double \
95// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-ERROR %s
96// CHECK-HVXLENGTH-ERROR: error: -mhvx-length is not supported without a -mhvx/-mhvx= flag
97
98// Error out if an unsupported value is passed to -mhvx-length.
99// RUN: %clang -c %s -### -target hexagon-unknown-elf -mhvx -mhvx-length=B \
100// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-VALUE-ERROR %s
101// RUN: %clang -c %s -### -target hexagon-unknown-elf -mhvx -mhvx-length=128 \
102// RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-VALUE-ERROR %s
103// CHECK-HVXLENGTH-VALUE-ERROR: error: unsupported argument '{{.*}}' to option 'mhvx-length='