OSDN Git Service

gcc/
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.target / mips / movcc-3.c
1 /* { dg-do compile } */
2 /* { dg-mips-options "-O2 -mips4 -mhard-float" } */
3 /* { dg-final { scan-assembler "movt" } } */
4 /* { dg-final { scan-assembler "movf" } } */
5 /* { dg-final { scan-assembler "movz.s" } } */
6 /* { dg-final { scan-assembler "movn.s" } } */
7 /* { dg-final { scan-assembler "movt.s" } } */
8 /* { dg-final { scan-assembler "movz.d" } } */
9 /* { dg-final { scan-assembler "movn.d" } } */
10 /* { dg-final { scan-assembler "movf.d" } } */
11
12 void ext_int (int);
13 void ext_long (long);
14 void ext_float (float);
15 void ext_double (double);
16
17 NOMIPS16 int
18 sub3 (int i, int j, float f)
19 {
20   ext_int (f ? i : j);
21 }
22
23 NOMIPS16 long
24 sub6 (long i, long j, float f)
25 {
26   ext_long (!f ? i : j);
27 }
28
29 NOMIPS16 float
30 sub7 (float f, float g, int i)
31 {
32   ext_float (i ? f : g);
33 }
34
35 NOMIPS16 float
36 sub8 (float f, float g, long l)
37 {
38   ext_float (!l ? f : g);
39 }
40
41 NOMIPS16 float
42 sub9 (float f, float g, float h)
43 {
44   ext_float (h ? f : g);
45 }
46
47 NOMIPS16 double
48 suba (double f, double g, int i)
49 {
50   ext_double (i ? f : g);
51 }
52
53 NOMIPS16 double
54 subb (double f, double g, long l)
55 {
56   ext_double (!l ? f : g);
57 }
58
59 NOMIPS16 double
60 subc (double f, double g, double h)
61 {
62   ext_double (!h ? f : g);
63 }