1 // ----------------------------------------------------------------------------- 2 // Tests for the hvx features and warnings. 3 // ----------------------------------------------------------------------------- 4 5 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv66 -mhvx \ 6 // RUN: 2>&1 | FileCheck -check-prefix=CHECKHVX166 %s 7 // CHECKHVX166: "-target-feature" "+hvxv66" 8 9 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 -mhvx \ 10 // RUN: 2>&1 | FileCheck -check-prefix=CHECKHVX165 %s 11 // CHECKHVX165: "-target-feature" "+hvxv65" 12 13 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx \ 14 // RUN: 2>&1 | FileCheck -check-prefix=CHECKHVX162 %s 15 // CHECKHVX162: "-target-feature" "+hvxv62" 16 17 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 -mhvx \ 18 // RUN: -mhvx-length=128B 2>&1 | FileCheck -check-prefix=CHECKHVX2 %s 19 20 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx \ 21 // RUN: -mhvx-length=128B 2>&1 | FileCheck -check-prefix=CHECKHVX2 %s 22 23 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx \ 24 // RUN: -mhvx-length=128b 2>&1 | FileCheck -check-prefix=CHECKHVX2 %s 25 // CHECKHVX2-NOT: "-target-feature" "+hvx-length64b" 26 // CHECKHVX2: "-target-feature" "+hvx-length128b" 27 28 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 2>&1 \ 29 // RUN: | FileCheck -check-prefix=CHECKHVX3 %s 30 31 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 2>&1 \ 32 // RUN: | FileCheck -check-prefix=CHECKHVX3 %s 33 // CHECKHVX3-NOT: "-target-feature" "+hvx 34 35 // No hvx target feature must be added if -mno-hvx occurs last 36 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mno-hvx \ 37 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-NOHVX %s 38 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx -mno-hvx \ 39 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-NOHVX %s 40 // CHECK-NOHVX-NOT: "-target-feature" "+hvx 41 42 // Hvx target feature should be added if -mno-hvx doesn't occur last 43 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mno-hvx -mhvx\ 44 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXFEAT %s 45 // CHECK-HVXFEAT: "-target-feature" "+hvxv62" 46 47 // With -mhvx, the version of hvx defaults to Cpu 48 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx \ 49 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-DEFAULT %s 50 // CHECK-HVX-DEFAULT: "-target-feature" "+hvxv60" 51 52 // Test -mhvx= flag 53 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx=v62 \ 54 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXEQ %s 55 // CHECK-HVXEQ: "-target-feature" "+hvxv62" 56 57 // Honor the last occurred -mhvx=, -mhvx flag. 58 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx=v62 -mhvx\ 59 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXEQ-PRE %s 60 // CHECK-HVXEQ-PRE-NOT: "-target-feature" "+hvxv62" 61 // CHECK-HVXEQ-PRE: "-target-feature" "+hvxv60" 62 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx -mhvx=v62\ 63 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXEQ-PRE2 %s 64 // CHECK-HVXEQ-PRE2-NOT: "-target-feature" "+hvxv60" 65 // CHECK-HVXEQ-PRE2: "-target-feature" "+hvxv62" 66 67 // Test -mhvx-length flag 68 // The default mode on v60,v62 is 64B. 69 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx \ 70 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-64B %s 71 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx \ 72 // RUN: -mhvx-length=64b 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-64B %s 73 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv60 -mhvx \ 74 // RUN: -mhvx-length=64B 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-64B %s 75 // CHECK-HVXLENGTH-64B: "-target-feature" "+hvx{{.*}}" "-target-feature" "+hvx-length64b" 76 // The default mode on v66 and future archs is 128B. 77 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv66 -mhvx \ 78 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-128B %s 79 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx -mhvx-length=128B\ 80 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-128B %s 81 // CHECK-HVXLENGTH-128B: "-target-feature" "+hvx{{.*}}" "-target-feature" "+hvx-length128b" 82 83 // Bail out if -mhvx-length is specified without HVX enabled 84 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mhvx-length=64B \ 85 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-ERROR %s 86 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mhvx-length=128B \ 87 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-ERROR %s 88 // CHECK-HVXLENGTH-ERROR: error: -mhvx-length is not supported without a -mhvx/-mhvx= flag 89 90 // Error out if an unsupported value is passed to -mhvx-length. 91 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mhvx -mhvx-length=B \ 92 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-VALUE-ERROR %s 93 // RUN: %clang -c %s -### -target hexagon-unknown-elf -mhvx -mhvx-length=128 \ 94 // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVXLENGTH-VALUE-ERROR %s 95 // CHECK-HVXLENGTH-VALUE-ERROR: error: unsupported argument '{{.*}}' to option 'mhvx-length=' 96