rs6000: Adapt testcases for -mdejagnu-cpu=
[gcc.git] / gcc / testsuite / gcc.target / powerpc / pr58673-1.c
1 /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
2 /* { dg-skip-if "" { powerpc*-*-darwin* } } */
3 /* { dg-require-effective-target powerpc_p8vector_ok } */
4 /* { dg-options "-mdejagnu-cpu=power8 -O1" } */
5
6 enum typecode
7 {
8 QIcode, QUcode, HIcode, HUcode, SIcode, SUcode, DIcode, DUcode, SFcode,
9 DFcode, XFcode, Pcode, Tcode, LAST_AND_UNUSED_TYPECODE
10 };
11 enum bytecode_opcode
12 {
13 neverneverland, drop, duplicate, over, setstackSI, adjstackSI, constQI,
14 constHI, constSI, constDI, constSF, constDF, constXF, constP, loadQI,
15 loadHI, loadSI, loadDI, loadSF, loadDF, loadXF, loadP, storeQI, storeHI,
16 storeSI, storeDI, storeSF, storeDF, storeXF, storeP, storeBLK, clearBLK,
17 addconstPSI, newlocalSI, localP, argP, convertQIHI, convertHISI,
18 convertSIDI, convertQISI, convertQUHU, convertHUSU, convertSUDU,
19 convertQUSU, convertSFDF, convertDFXF, convertHIQI, convertSIHI,
20 convertDISI, convertSIQI, convertSUQU, convertDFSF, convertXFDF,
21 convertSISF, convertSIDF, convertSIXF, convertSUSF, convertSUDF,
22 convertSUXF, convertDISF, convertDIDF, convertDIXF, convertDUSF,
23 convertDUDF, convertDUXF, convertSFSI, convertDFSI, convertXFSI,
24 convertSFSU, convertDFSU, convertXFSU, convertSFDI, convertDFDI,
25 convertXFDI, convertSFDU, convertDFDU, convertXFDU, convertPSI,
26 convertSIP, convertSIT, convertDIT, convertSFT, convertDFT, convertXFT,
27 convertPT, zxloadBI, sxloadBI, sstoreBI, addSI, addDI, addSF, addDF,
28 addXF, addPSI, subSI, subDI, subSF, subDF, subXF, subPP, mulSI, mulDI,
29 mulSU, mulDU, mulSF, mulDF, mulXF, divSI, divDI, divSU, divDU, divSF,
30 divDF, divXF, modSI, modDI, modSU, modDU, andSI, andDI, iorSI, iorDI,
31 xorSI, xorDI, lshiftSI, lshiftSU, lshiftDI, lshiftDU, rshiftSI, rshiftSU,
32 rshiftDI, rshiftDU, ltSI, ltSU, ltDI, ltDU, ltSF, ltDF, ltXF, ltP, leSI,
33 leSU, leDI, leDU, leSF, leDF, leXF, leP, geSI, geSU, geDI, geDU, geSF,
34 geDF, geXF, geP, gtSI, gtSU, gtDI, gtDU, gtSF, gtDF, gtXF, gtP, eqSI,
35 eqDI, eqSF, eqDF, eqXF, eqP, neSI, neDI, neSF, neDF, neXF, neP, negSI,
36 negDI, negSF, negDF, negXF, notSI, notDI, notT, predecQI, predecHI,
37 predecSI, predecDI, predecP, predecSF, predecDF, predecXF, predecBI,
38 preincQI, preincHI, preincSI, preincDI, preincP, preincSF, preincDF,
39 preincXF, preincBI, postdecQI, postdecHI, postdecSI, postdecDI, postdecP,
40 postdecSF, postdecDF, postdecXF, postdecBI, postincQI, postincHI,
41 postincSI, postincDI, postincP, postincSF, postincDF, postincXF,
42 postincBI, xjumpif, xjumpifnot, jump, jumpP, caseSI, caseSU, caseDI,
43 caseDU, call, returnP, ret, linenote, LAST_AND_UNUSED_OPCODE
44 };
45 struct binary_operator
46 {
47 enum bytecode_opcode opcode;
48 enum typecode arg0;
49 };
50 static struct conversion_recipe
51 {
52 unsigned char *opcodes;
53 int cost;
54 }
55 conversion_recipe[((int) LAST_AND_UNUSED_TYPECODE)][((int)
56 LAST_AND_UNUSED_TYPECODE)];
57 static struct conversion_recipe
58 deduce_conversion (from, to)
59 enum typecode from, to;
60 {
61 (conversion_recipe[(int) from][(int) to].
62 opcodes ? 0 : (conversion_recipe[(int) from][(int) to] =
63 deduce_conversion (from, to), 0));
64 }
65
66 void
67 bc_expand_binary_operation (optab, resulttype, arg0, arg1)
68 int resulttype, arg0, arg1;
69 struct binary_operator optab[];
70 {
71 int i, besti, cost, bestcost;
72 enum typecode resultcode, arg0code;
73 for (i = 0; optab[i].opcode != -1; ++i)
74 {
75 (conversion_recipe[(int) arg0code][(int) optab[i].arg0].
76 opcodes ? 0 : (conversion_recipe[(int) arg0code][(int) optab[i].arg0] =
77 deduce_conversion (arg0code, optab[i].arg0), 0));
78 }
79 }