[RS6000] Tests that use int128_t and -m32
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / pr58673-1.c
blobdd2194fc4d7ef73b61a270f990b779a0a5ab02f0
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" } */
6 enum typecode
8 QIcode, QUcode, HIcode, HUcode, SIcode, SUcode, DIcode, DUcode, SFcode,
9 DFcode, XFcode, Pcode, Tcode, LAST_AND_UNUSED_TYPECODE
11 enum bytecode_opcode
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
45 struct binary_operator
47 enum bytecode_opcode opcode;
48 enum typecode arg0;
50 static struct conversion_recipe
52 unsigned char *opcodes;
53 int cost;
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;
61 (conversion_recipe[(int) from][(int) to].
62 opcodes ? 0 : (conversion_recipe[(int) from][(int) to] =
63 deduce_conversion (from, to), 0));
66 void
67 bc_expand_binary_operation (optab, resulttype, arg0, arg1)
68 int resulttype, arg0, arg1;
69 struct binary_operator optab[];
71 int i, besti, cost, bestcost;
72 enum typecode resultcode, arg0code;
73 for (i = 0; optab[i].opcode != -1; ++i)
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));