Compiler projects using llvm
// Test that different values of -mfpu pick correct CSKY FPU target-feature(s).

// RUN: %clang -target csky-unknown-linux %s -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-DEFAULT %s
// CHECK-DEFAULT-NOT: "-target-feature" "+hard-float"
// CHECK-DEFAULT-NOT: "-target-feature" "+hard-float-abi"
// CHECK-DEFAULT-NOT: "-target-feature" "+fpuv2_sf"
// CHECK-DEFAULT-NOT: "-target-feature" "+fpuv2_df"

// RUN: %clang -target csky-unknown-linux %s -mfpu=fpv2 -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-FPV2 %s
// CHECK-FPV2-NOT: "-target-feature" "+hard-float"
// CHECK-FPV2-NOT: "-target-feature" "+hard-float-abi"
// CHECK-FPV2: "-target-feature" "+fpuv2_sf"
// CHECK-FPV2: "-target-feature" "+fpuv2_df"

// RUN: %clang -target csky-unknown-linux %s -mfpu=fpv2 -mhard-float -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-FPV2-HARD %s
// CHECK-FPV2-HARD: "-target-feature" "+hard-float-abi"
// CHECK-FPV2-HARD: "-target-feature" "+hard-float"
// CHECK-FPV2-HARD: "-target-feature" "+fpuv2_sf"
// CHECK-FPV2-HARD: "-target-feature" "+fpuv2_df"

// RUN: %clang -target csky-unknown-linux %s -mfpu=fpv2_divd -mhard-float -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-FPV2DIVD-HARD %s
// CHECK-FPV2DIVD-HARD: "-target-feature" "+hard-float-abi"
// CHECK-FPV2DIVD-HARD: "-target-feature" "+hard-float"
// CHECK-FPV2DIVD-HARD: "-target-feature" "+fpuv2_sf"
// CHECK-FPV2DIVD-HARD: "-target-feature" "+fpuv2_df"
// CHECK-FPV2DIVD-HARD: "-target-feature" "+fdivdu"

// RUN: %clang -target csky-unknown-linux %s -mfpu=auto -mhard-float -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-AUTO-HARD %s
// CHECK-AUTO-HARD: "-target-feature" "+hard-float-abi"
// CHECK-AUTO-HARD: "-target-feature" "+hard-float"
// CHECK-AUTO-HARD: "-target-feature" "+fpuv2_sf"
// CHECK-AUTO-HARD: "-target-feature" "+fpuv2_df"
// CHECK-AUTO-HARD: "-target-feature" "+fdivdu"

// RUN: %clang -target csky-unknown-linux %s -mfpu=fpv2_sf -mhard-float -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-FPV2SF-HARD %s
// CHECK-FPV2SF-HARD: "-target-feature" "+hard-float-abi"
// CHECK-FPV2SF-HARD: "-target-feature" "+hard-float"
// CHECK-FPV2SF-HARD: "-target-feature" "+fpuv2_sf"

// RUN: %clang -target csky-unknown-linux %s -mfpu=fpv3 -mhard-float -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-FPV3-HARD %s
// CHECK-FPV3-HARD: "-target-feature" "+hard-float-abi"
// CHECK-FPV3-HARD: "-target-feature" "+hard-float"
// CHECK-FPV3-HARD: "-target-feature" "+fpuv3_hf"
// CHECK-FPV3-HARD: "-target-feature" "+fpuv3_hi"
// CHECK-FPV3-HARD: "-target-feature" "+fpuv3_sf"
// CHECK-FPV3-HARD: "-target-feature" "+fpuv3_df"

// RUN: %clang -target csky-unknown-linux %s -mfpu=fpv3_hf -mhard-float -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-FPV3HF-HARD %s
// CHECK-FPV3HF-HARD: "-target-feature" "+hard-float-abi"
// CHECK-FPV3HF-HARD: "-target-feature" "+hard-float"
// CHECK-FPV3HF-HARD: "-target-feature" "+fpuv3_hf"
// CHECK-FPV3HF-HARD: "-target-feature" "+fpuv3_hi"

// RUN: %clang -target csky-unknown-linux %s -mfpu=fpv3_hsf -mhard-float -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-FPV3HSF-HARD %s
// CHECK-FPV3HSF-HARD: "-target-feature" "+hard-float-abi"
// CHECK-FPV3HSF-HARD: "-target-feature" "+hard-float"
// CHECK-FPV3HSF-HARD: "-target-feature" "+fpuv3_hf"
// CHECK-FPV3HSF-HARD: "-target-feature" "+fpuv3_hi"
// CHECK-FPV3HSF-HARD: "-target-feature" "+fpuv3_sf"

// RUN: %clang -target csky-unknown-linux %s -mfpu=fpv3_sdf -mhard-float -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-FPV3DF-HARD %s
// CHECK-FPV3DF-HARD: "-target-feature" "+hard-float-abi"
// CHECK-FPV3DF-HARD: "-target-feature" "+hard-float"
// CHECK-FPV3DF-HARD: "-target-feature" "+fpuv3_sf"
// CHECK-FPV3DF-HARD: "-target-feature" "+fpuv3_df"

// RUN: %clang -target csky-unknown-linux %s -mcpu=c810 -mfpu=fpv3 -mhard-float -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-FPV3-C810 %s
// CHECK-FPV3-C810: "-target-feature" "+hard-float-abi"
// CHECK-FPV3-C810: "-target-feature" "+hard-float"
// CHECK-FPV3-C810: "-target-feature" "+fpuv3_hf"
// CHECK-FPV3-C810: "-target-feature" "+fpuv3_hi"
// CHECK-FPV3-C810: "-target-feature" "+fpuv3_sf"
// CHECK-FPV3-C810: "-target-feature" "+fpuv3_df"
// CHECK-FPV3-C810-NOT: "-target-feature" "+fpuv2"

// RUN: %clang -target csky-unknown-linux %s -mcpu=c860 -mfpu=fpv2 -mhard-float -### -o %t.o 2>&1 \
// RUN:   | FileCheck --check-prefix=CHECK-FPV2-C860 %s
// CHECK-FPV2-C860: "-target-feature" "+hard-float-abi"
// CHECK-FPV2-C860: "-target-feature" "+hard-float"
// CHECK-FPV2-C860: "-target-feature" "+fpuv2_sf"
// CHECK-FPV2-C860: "-target-feature" "+fpuv2_df"
// CHECK-FPV2-C860-NOT: "-target-feature" "+fpuv3"