xref: /aosp_15_r20/external/clang/test/Driver/mrecip.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li ////
2*67e74705SXin Li //// Verify that valid options for the -mrecip flag are passed through and invalid options cause an error.
3*67e74705SXin Li ////
4*67e74705SXin Li 
5*67e74705SXin Li //// If there are no options, convert to 'all'.
6*67e74705SXin Li 
7*67e74705SXin Li // RUN: %clang -### -S %s -mrecip  2>&1 | FileCheck --check-prefix=RECIP0 %s
8*67e74705SXin Li // RECIP0: "-mrecip=all"
9*67e74705SXin Li 
10*67e74705SXin Li //// Check options that cover all types.
11*67e74705SXin Li 
12*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=all  2>&1 | FileCheck --check-prefix=RECIP1 %s
13*67e74705SXin Li // RECIP1: "-mrecip=all"
14*67e74705SXin Li 
15*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=default  2>&1 | FileCheck --check-prefix=RECIP2 %s
16*67e74705SXin Li // RECIP2: "-mrecip=default"
17*67e74705SXin Li 
18*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=none  2>&1 | FileCheck --check-prefix=RECIP3 %s
19*67e74705SXin Li // RECIP3: "-mrecip=none"
20*67e74705SXin Li 
21*67e74705SXin Li //// Check options that do not specify float or double.
22*67e74705SXin Li 
23*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=vec-sqrt  2>&1 | FileCheck --check-prefix=RECIP4 %s
24*67e74705SXin Li // RECIP4: "-mrecip=vec-sqrt"
25*67e74705SXin Li 
26*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=!div,vec-div  2>&1 | FileCheck --check-prefix=RECIP5 %s
27*67e74705SXin Li // RECIP5: "-mrecip=!div,vec-div"
28*67e74705SXin Li 
29*67e74705SXin Li //// Check individual option types.
30*67e74705SXin Li 
31*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=vec-sqrtd  2>&1 | FileCheck --check-prefix=RECIP6 %s
32*67e74705SXin Li // RECIP6: "-mrecip=vec-sqrtd"
33*67e74705SXin Li 
34*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=!divf  2>&1 | FileCheck --check-prefix=RECIP7 %s
35*67e74705SXin Li // RECIP7: "-mrecip=!divf"
36*67e74705SXin Li 
37*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=divf,sqrtd,vec-divd,vec-sqrtf  2>&1 | FileCheck --check-prefix=RECIP8 %s
38*67e74705SXin Li // RECIP8: "-mrecip=divf,sqrtd,vec-divd,vec-sqrtf"
39*67e74705SXin Li 
40*67e74705SXin Li //// Check optional refinement step specifiers.
41*67e74705SXin Li 
42*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=all:1  2>&1 | FileCheck --check-prefix=RECIP9 %s
43*67e74705SXin Li // RECIP9: "-mrecip=all:1"
44*67e74705SXin Li 
45*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=sqrtf:3  2>&1 | FileCheck --check-prefix=RECIP10 %s
46*67e74705SXin Li // RECIP10: "-mrecip=sqrtf:3"
47*67e74705SXin Li 
48*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=div:5  2>&1 | FileCheck --check-prefix=RECIP11 %s
49*67e74705SXin Li // RECIP11: "-mrecip=div:5"
50*67e74705SXin Li 
51*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=divd:1,!sqrtf:2,vec-divf:9,vec-sqrtd:0  2>&1 | FileCheck --check-prefix=RECIP12 %s
52*67e74705SXin Li // RECIP12: "-mrecip=divd:1,!sqrtf:2,vec-divf:9,vec-sqrtd:0"
53*67e74705SXin Li 
54*67e74705SXin Li //// Check invalid parameters.
55*67e74705SXin Li 
56*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=bogus  2>&1 | FileCheck --check-prefix=RECIP13 %s
57*67e74705SXin Li // RECIP13: error: unknown argument
58*67e74705SXin Li 
59*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=divd:1,divd  2>&1 | FileCheck --check-prefix=RECIP14 %s
60*67e74705SXin Li // RECIP14: error: invalid value
61*67e74705SXin Li 
62*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=sqrt,sqrtf  2>&1 | FileCheck --check-prefix=RECIP15 %s
63*67e74705SXin Li // RECIP15: error: invalid value
64*67e74705SXin Li 
65*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=+default:10  2>&1 | FileCheck --check-prefix=RECIP16 %s
66*67e74705SXin Li // RECIP16: error: invalid value
67*67e74705SXin Li 
68*67e74705SXin Li // RUN: %clang -### -S %s -mrecip=!vec-divd:  2>&1 | FileCheck --check-prefix=RECIP17 %s
69*67e74705SXin Li // RECIP17: error: invalid value
70*67e74705SXin Li 
71