]> git.pld-linux.org Git - packages/beignet.git/blame - 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
CommitLineData
7d3d7cb5
JB
1Description: More user-friendly "type not supported" errors
2
3(It would be even better if these returned build failure
4rather than asserting, but that's not as easy)
5
6Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
7Forwarded: 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.090896 seconds and 4 git commands to generate.