// ----------------------------------------------------------------------------- // Tests for the hvx features and warnings. // ----------------------------------------------------------------------------- // No HVX without -mhvx/-mhvx= // CHECK-HVX-ON: "-target-feature" "+hvx // CHECK-HVX-ON-NOT: "-target-feature" "-hvx // CHECK-HVX-OFF-NOT: "-target-feature" "+hvx // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv5 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv55 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv60 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv62 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv65 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv66 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv67 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv67t \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv68 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv71 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv71t \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv73 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // Infer HVX version from flag: // CHECK-HVX-V60: "-target-feature" "+hvxv60" // CHECK-HVX-V62: "-target-feature" "+hvxv62" // CHECK-HVX-V65: "-target-feature" "+hvxv65" // CHECK-HVX-V66: "-target-feature" "+hvxv66" // CHECK-HVX-V67: "-target-feature" "+hvxv67" // CHECK-HVX-V68: "-target-feature" "+hvxv68" // CHECK-HVX-V69: "-target-feature" "+hvxv69" // CHECK-HVX-V71: "-target-feature" "+hvxv71" // CHECK-HVX-V73: "-target-feature" "+hvxv73" // Direct version flag: // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v60 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V60 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v62 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V62 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v65 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V65 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v66 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V66 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v67 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V67 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v68 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V68 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v69 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V69 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v71 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V71 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v73 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V73 %s // Infer HVX version from CPU version: // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv60 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V60 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv62 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V62 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv65 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V65 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv66 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V66 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv67 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V67 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv67t -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V67 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv68 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V68 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V69 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv71 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V71 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv73 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V73 %s // Direct version flag with different CPU version: // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v60 -mv62 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V60 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v62 -mv65 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V62 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v65 -mv66 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V65 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v66 -mv67 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V66 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v67 -mv68 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V67 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v68 -mv69 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V68 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v69 -mv71 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V69 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v71 -mv73 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V71 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v73 -mv60 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V73 %s // Direct version flag with different CPU version and versionless -mhvx: // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v60 -mv62 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V62 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v62 -mv65 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V65 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v65 -mv66 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V66 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v66 -mv67 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V67 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v67 -mv68 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V68 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v68 -mv69 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V69 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v69 -mv71 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V71 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v71 -mv73 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V73 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v73 -mv60 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V60 %s // Direct version flag with different CPU version, versionless -mhvx // and -mno-hvx. The -mno-hvx cancels -mhvx=, versionless -mhvx wins: // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v60 -mno-hvx -mv62 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V62 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v62 -mno-hvx -mv65 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V65 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v65 -mno-hvx -mv66 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V66 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v66 -mno-hvx -mv67 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V67 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v67 -mno-hvx -mv68 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V68 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v68 -mno-hvx -mv69 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V69 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v69 -mno-hvx -mv71 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V71 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v71 -mno-hvx -mv73 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V73 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v73 -mno-hvx -mv60 -mhvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V60 %s // Direct version flag with different CPU version, versionless -mhvx // and -mno-hvx. The -mno-hvx cancels versionless -mhvx, -mhvx= wins: // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv62 -mhvx -mno-hvx -mhvx=v60 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V60 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv65 -mhvx -mno-hvx -mhvx=v62 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V62 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv66 -mhvx -mno-hvx -mhvx=v65 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V65 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv67 -mhvx -mno-hvx -mhvx=v66 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V66 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv68 -mhvx -mno-hvx -mhvx=v67 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V67 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx -mno-hvx -mhvx=v68 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V68 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv71 -mhvx -mno-hvx -mhvx=v69 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V69 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv73 -mhvx -mno-hvx -mhvx=v71 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V71 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv60 -mhvx -mno-hvx -mhvx=v73 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-V73 %s // Infer HVX length from flag: // CHECK-HVX-L64: "-target-feature" "+hvx-length64b" // CHECK-HVX-L64-NOT: "-target-feature" "+hvx-length128b" // CHECK-HVX-L128: "-target-feature" "+hvx-length128b" // CHECK-HVX-L128-NOT: "-target-feature" "+hvx-length64b" // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx -mhvx-length=64b \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-L64 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx -mhvx-length=128b \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-L128 %s // Infer HVX length from HVX version: // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v60 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-L64 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v62 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-L64 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v65 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-L64 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v66 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-L128 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v67 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-L128 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v68 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-L128 %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v69 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-L128 %s // No HVX with trailing -mno-hvx // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v69 -mno-hvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx -mno-hvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: not %clang -c %s -### --target=hexagon-unknown-elf -mhvx=v69 -mhvx-length=128b -mno-hvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // RUN: not %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx -mhvx-qfloat -mno-hvx \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-OFF %s // Float // CHECK-HVX-QFLOAT-ON: "-target-feature" "+hvx-qfloat" // CHECK-HVX-QFLOAT-OFF-NOT: "-target-feature" "+hvx-qfloat" // CHECK-HVX-IEEE-ON: "-target-feature" "+hvx-ieee-fp" // CHECK-HVX-IEEE-OFF-NOT: "-target-feature" "+hvx-ieee-fp" // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx -mhvx-qfloat \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-QFLOAT-ON %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx -mno-hvx-qfloat \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-QFLOAT-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx -mno-hvx-qfloat -mhvx-qfloat \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-QFLOAT-ON %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx -mhvx-qfloat -mno-hvx-qfloat \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-QFLOAT-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx -mhvx-ieee-fp \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-IEEE-ON %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx -mno-hvx-ieee-fp \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-IEEE-OFF %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx -mno-hvx-ieee-fp -mhvx-ieee-fp \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-IEEE-ON %s // RUN: %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx -mhvx-ieee-fp -mno-hvx-ieee-fp \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-IEEE-OFF %s // HVX flags heed HVX: // CHECK-NEEDS-HVX: error: {{.*}} requires HVX, use -mhvx/-mhvx= to enable it // RUN: not %clang -c %s -### --target=hexagon-unknown-elf -mv66 -mhvx-length=64b \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-NEEDS-HVX %s // RUN: not %clang -c %s -### --target=hexagon-unknown-elf -mv66 -mhvx-length=128b \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-NEEDS-HVX %s // RUN: not %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx-qfloat \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-NEEDS-HVX %s // RUN: not %clang -c %s -### --target=hexagon-unknown-elf -mv69 -mhvx-ieee-fp \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-NEEDS-HVX %s // Invalid HVX length: // CHECK-HVX-BAD-LENGTH: error: unsupported argument '{{.*}}' to option '-mhvx-length=' // RUN: not %clang -c %s -### --target=hexagon-unknown-elf -mhvx -mhvx-length=B \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-BAD-LENGTH %s // RUN: not %clang -c %s -### --target=hexagon-unknown-elf -mhvx -mhvx-length=128 \ // RUN: 2>&1 | FileCheck -check-prefix=CHECK-HVX-BAD-LENGTH %s