<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63161>63161</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang][CodeGen]Why do sign extensions for v16i1 and v32i1 in vector types.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hippyll123
</td>
</tr>
</table>
<pre>
my code are as follows:
`typedef int int16 __attribute__((ext_vector_type(16)));
int16 vcmpeq(int16 a, int16 b){
return (int16)(a == b);
}
int16 main1() {
int16 va = {1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1};
int16 vb = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, -1};
int16 vc = vcmpeq(va, vb);
return vc;
}
int main() {
int16 tmp = main1();
return 0;
}`
I have set these attribute
`setBooleanContents(ZeroOrOneBooleanContent);
setBooleanVectorContents(ZeroOrOneBooleanContent);`
but when compare this code in O1~O3,true will be -1, why do sext in CGExprScalar.cpp, and what can i do to use 1 for true without modify code.
`Result = Builder.CreateICmp(UICmpOpc, LHS, RHS, "cmp");
}
// If this is a vector comparison, sign extend the result to the appropriate
// vector integer type and return it (don't convert to bool).
if (LHSTy->isVectorType())
return Builder.CreateSExt(Result, ConvertType(E->getType()), "sext");`
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVV2PozYU_TXOy9VEYBIgDzxsvnZHWinSzraV-hIZuARXBlP7QpKX_vbKhnzMth1VaqUZDOH43Ms5x7awVp5axIwt12y5nYmeam2yWnbdVamQR7Ncl9esuUKhSwRhEISFSiulz5ZFn1iwZcEnFgd07bDECmRL7j-M4XgUREbmPeHxyHjKeIoXOg5YkDZHh2c8DWPGV9NftJ7Y_HUkGYqmw98ZT8dHwfhmos_dlGQNIxoAwCD1poUb2LOmAli0ZdF2xEc3PEu2fy3WCNmGvtMVsGT9YJ568VzuTejaePHX_-822d4VeKqZ32oGd-x_ufu4WOGL3TUfvNxD_mzOk9BD8ZGeXs1_FpOazhd70vzvagSPVCRbFgfj_SvUYkCwSABUo0W4R-0eSIu01lqhaDe6JWzJMp7-ikYfzKHF96-eiz_m_eyT-q9n35rLe4JzjS0UuuncgqFa2nH5yBYO4R-HiO32bL1h6YZMj3CWSkGOUxzgXF-h1GDx4lYSbD7vLp15K4QSZl50ncOItoRzLQgK0YJ0aNLQW4QQKm1gYqVa9wSNLmU1Lt_5XZxvaHtF3oB1L1WJZr4xKAhfN03HePqTGw9d4Yp9_fLmhm_jwDgvHIT_aNgPCfA_8T3je3itRgmkBQHj8p-0kVa3jtTtQYAXwrZ0foIZ2yPtn0TXGd0ZKW7uPnFPdLIlPKEBt6t4dab4SHLbQemqJASFbgc0njfXWjG-mj_FsnLQr1_evl9fWLSTdrT_-7hPTVvUHX0P6Hv53nYXYjwd5XVfthlLTiw7x3xCek86qur8fsgaB7Myi8pVtBIzzMI4jUO-iBarWZ0VGIlFtIjCRAQ8XBR5IsqYp0GUBHmywNVMZjzgURAHSZAsOV_Ny6oI0ijGpKqqNMmXbBFgI6SaKzU0c21OM2ltj1kchXE4UyJHZW8Hgskc6CXvT5YtAiUt2cc0kqT80VEo0Z7YcsuW640u8TO2bLn9ZQry3VwrdWt9QocwlqE3aoi4DF3OJyedg3Y-643KaqLOnzHe6pOkus_nhW4Y37sOpuGlM_o3LIjxvf8Ky_jef8ifAQAA__-7S_uF">