]> git.pld-linux.org Git - packages/beignet.git/blob - beignet-clearer-type-errors.patch
- added dirty llvm11-support patch, now at least builds with llvm 11
[packages/beignet.git] / beignet-clearer-type-errors.patch
1 Description: More user-friendly "type not supported" errors
2
3 (It would be even better if these returned build failure
4 rather than asserting, but that's not as easy)
5      
6 Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
7 Forwarded: https://lists.freedesktop.org/archives/beignet/2017-September/009169.html
8
9 --- a/backend/src/backend/gen_insn_selection.cpp
10 +++ b/backend/src/backend/gen_insn_selection.cpp
11 @@ -5253,7 +5253,7 @@ extern bool OCL_DEBUGINFO; // first defi
12            write64Stateless(sel, address, src);
13          sel.pop();
14        } else {
15 -        GBE_ASSERT(sel.hasLongType());
16 +        GBE_ASSERTM(sel.hasLongType(), "Long (int64) not supported on this device");
17          write64Stateless(sel, address, src);
18        }
19      }
20 @@ -5838,7 +5838,7 @@ extern bool OCL_DEBUGINFO; // first defi
21  
22          /* The special case, when dst is half, float->word->half will lose accuracy. */
23          if (dstType == TYPE_HALF) {
24 -          GBE_ASSERT(sel.hasHalfType());
25 +          GBE_ASSERTM(sel.hasHalfType(), "Half precision not supported on this device");
26            type = GEN_TYPE_HF;
27          }
28  
29 @@ -5879,7 +5879,7 @@ extern bool OCL_DEBUGINFO; // first defi
30  
31        if (dstType == TYPE_HALF) {
32          /* There is no MOV for Long <---> Half. So Long-->Float-->half. */
33 -        GBE_ASSERT(sel.hasLongType());
34 +        GBE_ASSERTM(sel.hasLongType(), "Long (int64) not supported on this device");
35          GBE_ASSERT(sel.hasHalfType());
36          sel.push();
37          if (sel.isScalarReg(insn.getSrc(0))) {
38 @@ -6181,7 +6181,7 @@ extern bool OCL_DEBUGINFO; // first defi
39          }
40        } else if (srcType == ir::TYPE_HALF) {
41          /* No need to consider old platform. if we support half, we must have native long. */
42 -        GBE_ASSERT(sel.hasLongType());
43 +        GBE_ASSERTM(sel.hasLongType(), "Long (int64) not supported on this device");
44          GBE_ASSERT(sel.hasHalfType());
45          uint32_t type = dstType == TYPE_U64 ? GEN_TYPE_UD : GEN_TYPE_D;
46          GenRegister tmp = GenRegister::retype(sel.selReg(sel.reg(FAMILY_DWORD, sel.isScalarReg(insn.getSrc(0))), TYPE_U32), type);
47 @@ -6205,7 +6205,7 @@ extern bool OCL_DEBUGINFO; // first defi
48            sel.MOV(dst, tmp);
49          }
50        } else if (src.type == GEN_TYPE_DF) {
51 -        GBE_ASSERT(sel.hasDoubleType());
52 +        GBE_ASSERTM(sel.hasDoubleType(), "Double precision not supported on this device");
53          GBE_ASSERT(sel.hasLongType()); //So far, if we support double, we support native long.
54  
55          // Just Mov
56 @@ -6224,7 +6224,7 @@ extern bool OCL_DEBUGINFO; // first defi
57        const GenRegister dst = sel.selReg(insn.getDst(0), dstType);
58        const GenRegister src = sel.selReg(insn.getSrc(0), srcType);
59  
60 -      GBE_ASSERT(sel.hasDoubleType());
61 +      GBE_ASSERTM(sel.hasDoubleType(), "Double precision not supported on this device (if this is a literal, use '1.0f' not '1.0')");
62  
63        if (sel.isScalarReg(insn.getDst(0))) {
64          // dst is scalar, just MOV and nothing more.
65 @@ -6263,7 +6263,7 @@ extern bool OCL_DEBUGINFO; // first defi
66        const GenRegister dst = sel.selReg(insn.getDst(0), dstType);
67        const GenRegister src = sel.selReg(insn.getSrc(0), srcType);
68  
69 -      GBE_ASSERT(sel.hasDoubleType());
70 +      GBE_ASSERTM(sel.hasDoubleType(), "Double precision not supported on this device (if this is a literal, use '1.0f' not '1.0')");
71        GBE_ASSERT(sel.hasHalfType()); //So far, if we support double, we support half.
72  
73        if (sel.isScalarReg(insn.getDst(0))) { // uniform case.
74 @@ -6329,7 +6329,7 @@ extern bool OCL_DEBUGINFO; // first defi
75        // Special case, half -> char/short.
76        /* [DevBDW+]:    Format conversion to or from HF (Half Float) must be DWord-aligned and
77           strided by a DWord on the destination. */
78 -      GBE_ASSERT(sel.hasHalfType());
79 +      GBE_ASSERTM(sel.hasHalfType(), "Half precision not supported on this device");
80        GenRegister tmp;
81        sel.push();
82        if (sel.isScalarReg(insn.getSrc(0))) {
83 @@ -6361,7 +6361,7 @@ extern bool OCL_DEBUGINFO; // first defi
84        // Special case, char/uchar -> half
85        /* [DevBDW+]:  Format conversion to or from HF (Half Float) must be DWord-aligned and
86           strided by a DWord on the destination. */
87 -      GBE_ASSERT(sel.hasHalfType());
88 +      GBE_ASSERTM(sel.hasHalfType(), "Half precision not supported on this device");
89        GenRegister tmp = GenRegister::retype(sel.unpacked_uw(sel.reg(FAMILY_DWORD, sel.isScalarReg(insn.getSrc(0)))), GEN_TYPE_HF);
90        sel.push();
91        if (sel.isScalarReg(insn.getSrc(0))) {
92 @@ -6383,7 +6383,7 @@ extern bool OCL_DEBUGINFO; // first defi
93        const GenRegister src = sel.selReg(insn.getSrc(0), srcType);
94        const RegisterFamily dstFamily = getFamily(dstType);
95  
96 -      GBE_ASSERT(sel.hasDoubleType());
97 +      GBE_ASSERTM(sel.hasDoubleType(), "Double precision not supported on this device (if this is a literal, use '1.0f' not '1.0')");
98        GBE_ASSERT(sel.hasHalfType()); //So far, if we support double, we support half.
99        if (sel.isScalarReg(insn.getDst(0))) {
100          // dst is scalar, just MOV and nothing more.
101 @@ -6427,7 +6427,7 @@ extern bool OCL_DEBUGINFO; // first defi
102        const GenRegister dst = sel.selReg(insn.getDst(0), dstType);
103        const GenRegister src = sel.selReg(insn.getSrc(0), srcType);
104  
105 -      GBE_ASSERT(sel.hasDoubleType());
106 +      GBE_ASSERTM(sel.hasDoubleType(), "Double precision not supported on this device");
107        GBE_ASSERT(sel.hasLongType()); //So far, if we support double, we support native long.
108        // Just Mov
109        sel.MOV(dst, src);
110 @@ -6442,7 +6442,7 @@ extern bool OCL_DEBUGINFO; // first defi
111        const GenRegister src = sel.selReg(insn.getSrc(0), srcType);
112        const RegisterFamily srcFamily = getFamily(srcType);
113  
114 -      GBE_ASSERT(sel.hasDoubleType());
115 +      GBE_ASSERTM(sel.hasDoubleType(), "Double precision not supported on this device");
116        GBE_ASSERT(sel.hasLongType()); //So far, if we support double, we support native long.
117  
118        if (sel.hasLongType() && sel.hasLongRegRestrict()) {
This page took 0.104675 seconds and 3 git commands to generate.