<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/56857>56857</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
#pragma clang vectorize(disable) isn't respected
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hiraditya
</td>
</tr>
</table>
<pre>
Both the loops are vectorized by clang trunk
```c
void foo(const int N, const float *a, float *b){
#pragma clang vectorize(disable)
for (int i = 0; i < N; ++i) {
b[i] += a[i];
}
}
void bar(const int N, const float *a, float *b){
#pragma clang vectorize(enable)
for (int i = 0; i < N; ++i) {
b[i] += a[i];
}
}
```
clang -Ofast -fno-exceptions -g0 -Rpass=loop-vectorize -Rpass-missed=loop-vectorize -Rpass-analysis=loop-vectorize -S -o -
```
foo: # @foo
test edi, edi
jle .LBB0_16
mov r9d, edi
cmp edi, 8
jb .LBB0_2
lea rax, [rsi + 4*r9]
cmp rax, rdx
jbe .LBB0_6
lea rax, [rdx + 4*r9]
cmp rax, rsi
jbe .LBB0_6
.LBB0_2:
xor ecx, ecx
.LBB0_12:
mov rax, rcx
not rax
add rax, r9
mov rdi, r9
and rdi, 3
je .LBB0_14
.LBB0_13: # =>This Inner Loop Header: Depth=1
movss xmm0, dword ptr [rdx + 4*rcx] # xmm0 = mem[0],zero,zero,zero
addss xmm0, dword ptr [rsi + 4*rcx]
movss dword ptr [rdx + 4*rcx], xmm0
inc rcx
dec rdi
jne .LBB0_13
.LBB0_14:
cmp rax, 3
jb .LBB0_16
.LBB0_15: # =>This Inner Loop Header: Depth=1
movss xmm0, dword ptr [rdx + 4*rcx] # xmm0 = mem[0],zero,zero,zero
addss xmm0, dword ptr [rsi + 4*rcx]
movss xmm1, dword ptr [rdx + 4*rcx + 4] # xmm1 = mem[0],zero,zero,zero
movss dword ptr [rdx + 4*rcx], xmm0
addss xmm1, dword ptr [rsi + 4*rcx + 4]
movss dword ptr [rdx + 4*rcx + 4], xmm1
movss xmm0, dword ptr [rdx + 4*rcx + 8] # xmm0 = mem[0],zero,zero,zero
addss xmm0, dword ptr [rsi + 4*rcx + 8]
movss dword ptr [rdx + 4*rcx + 8], xmm0
movss xmm0, dword ptr [rdx + 4*rcx + 12] # xmm0 = mem[0],zero,zero,zero
addss xmm0, dword ptr [rsi + 4*rcx + 12]
movss dword ptr [rdx + 4*rcx + 12], xmm0
add rcx, 4
cmp r9, rcx
jne .LBB0_15
jmp .LBB0_16
.LBB0_6:
mov ecx, r9d
and ecx, -8
lea rax, [rcx - 8]
mov r8, rax
shr r8, 3
inc r8
test rax, rax
je .LBB0_17
mov rax, r8
and rax, -2
xor edi, edi
.LBB0_8: # =>This Inner Loop Header: Depth=1
movups xmm0, xmmword ptr [rsi + 4*rdi]
movups xmm1, xmmword ptr [rsi + 4*rdi + 16]
movups xmm2, xmmword ptr [rdx + 4*rdi]
addps xmm2, xmm0
movups xmm0, xmmword ptr [rdx + 4*rdi + 16]
addps xmm0, xmm1
movups xmm1, xmmword ptr [rdx + 4*rdi + 32]
movups xmm3, xmmword ptr [rdx + 4*rdi + 48]
movups xmmword ptr [rdx + 4*rdi], xmm2
movups xmmword ptr [rdx + 4*rdi + 16], xmm0
movups xmm0, xmmword ptr [rsi + 4*rdi + 32]
addps xmm0, xmm1
movups xmm1, xmmword ptr [rsi + 4*rdi + 48]
addps xmm1, xmm3
movups xmmword ptr [rdx + 4*rdi + 32], xmm0
movups xmmword ptr [rdx + 4*rdi + 48], xmm1
add rdi, 16
add rax, -2
jne .LBB0_8
test r8b, 1
je .LBB0_11
.LBB0_10:
movups xmm0, xmmword ptr [rsi + 4*rdi]
movups xmm1, xmmword ptr [rsi + 4*rdi + 16]
movups xmm2, xmmword ptr [rdx + 4*rdi]
addps xmm2, xmm0
movups xmm0, xmmword ptr [rdx + 4*rdi + 16]
addps xmm0, xmm1
movups xmmword ptr [rdx + 4*rdi], xmm2
movups xmmword ptr [rdx + 4*rdi + 16], xmm0
.LBB0_11:
cmp rcx, r9
jne .LBB0_12
.LBB0_16:
ret
.LBB0_17:
xor edi, edi
test r8b, 1
jne .LBB0_10
jmp .LBB0_11
bar: # @bar
test edi, edi
jle .LBB1_16
mov r9d, edi
cmp edi, 8
jb .LBB1_2
lea rax, [rsi + 4*r9]
cmp rax, rdx
jbe .LBB1_6
lea rax, [rdx + 4*r9]
cmp rax, rsi
jbe .LBB1_6
.LBB1_2:
xor ecx, ecx
.LBB1_12:
mov rax, rcx
not rax
add rax, r9
mov rdi, r9
and rdi, 3
je .LBB1_14
.LBB1_13: # =>This Inner Loop Header: Depth=1
movss xmm0, dword ptr [rdx + 4*rcx] # xmm0 = mem[0],zero,zero,zero
addss xmm0, dword ptr [rsi + 4*rcx]
movss dword ptr [rdx + 4*rcx], xmm0
inc rcx
dec rdi
jne .LBB1_13
.LBB1_14:
cmp rax, 3
jb .LBB1_16
.LBB1_15: # =>This Inner Loop Header: Depth=1
movss xmm0, dword ptr [rdx + 4*rcx] # xmm0 = mem[0],zero,zero,zero
addss xmm0, dword ptr [rsi + 4*rcx]
movss xmm1, dword ptr [rdx + 4*rcx + 4] # xmm1 = mem[0],zero,zero,zero
movss dword ptr [rdx + 4*rcx], xmm0
addss xmm1, dword ptr [rsi + 4*rcx + 4]
movss dword ptr [rdx + 4*rcx + 4], xmm1
movss xmm0, dword ptr [rdx + 4*rcx + 8] # xmm0 = mem[0],zero,zero,zero
addss xmm0, dword ptr [rsi + 4*rcx + 8]
movss dword ptr [rdx + 4*rcx + 8], xmm0
movss xmm0, dword ptr [rdx + 4*rcx + 12] # xmm0 = mem[0],zero,zero,zero
addss xmm0, dword ptr [rsi + 4*rcx + 12]
movss dword ptr [rdx + 4*rcx + 12], xmm0
add rcx, 4
cmp r9, rcx
jne .LBB1_15
jmp .LBB1_16
.LBB1_6:
mov ecx, r9d
and ecx, -8
lea rax, [rcx - 8]
mov r8, rax
shr r8, 3
inc r8
test rax, rax
je .LBB1_17
mov rax, r8
and rax, -2
xor edi, edi
.LBB1_8: # =>This Inner Loop Header: Depth=1
movups xmm0, xmmword ptr [rsi + 4*rdi]
movups xmm1, xmmword ptr [rsi + 4*rdi + 16]
movups xmm2, xmmword ptr [rdx + 4*rdi]
addps xmm2, xmm0
movups xmm0, xmmword ptr [rdx + 4*rdi + 16]
addps xmm0, xmm1
movups xmm1, xmmword ptr [rdx + 4*rdi + 32]
movups xmm3, xmmword ptr [rdx + 4*rdi + 48]
movups xmmword ptr [rdx + 4*rdi], xmm2
movups xmmword ptr [rdx + 4*rdi + 16], xmm0
movups xmm0, xmmword ptr [rsi + 4*rdi + 32]
addps xmm0, xmm1
movups xmm1, xmmword ptr [rsi + 4*rdi + 48]
addps xmm1, xmm3
movups xmmword ptr [rdx + 4*rdi + 32], xmm0
movups xmmword ptr [rdx + 4*rdi + 48], xmm1
add rdi, 16
add rax, -2
jne .LBB1_8
test r8b, 1
je .LBB1_11
.LBB1_10:
movups xmm0, xmmword ptr [rsi + 4*rdi]
movups xmm1, xmmword ptr [rsi + 4*rdi + 16]
movups xmm2, xmmword ptr [rdx + 4*rdi]
addps xmm2, xmm0
movups xmm0, xmmword ptr [rdx + 4*rdi + 16]
addps xmm0, xmm1
movups xmmword ptr [rdx + 4*rdi], xmm2
movups xmmword ptr [rdx + 4*rdi + 16], xmm0
.LBB1_11:
cmp rcx, r9
jne .LBB1_12
.LBB1_16:
ret
.LBB1_17:
xor edi, edi
test r8b, 1
jne .LBB1_10
jmp .LBB1_11
```
Link:
https://godbolt.org/z/6948cvhjn
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWl9v6jYU_zThxUoVOwGSBx5Ku2mTqk3a9j45sQH3hgTZobe9n37HSUhj40AB0bu7gQDH2Of_8bH9E2nJ3mbzslqhasVRXpYbhajk6IVnVSnFN85Q-oaynBZLVMlt8cULHr3gvv2eBM07a_ovpWBoUZYeibOyUBUSRYV-88gDarqLvKQV8sg91b91vdQjiTedo4YJQvBbuJF0uaat4E4ZYMyEomnONclu-qKUQBJrYQJ54SMKvHBePz6AdHj0yBzeAmgQyOno9Cv1xjAwfqznAClt-0D2rs70sbW3e3g3N6Xymuby4l9g7S7MfeMbVf3fFxQs9RdF6fPXjG8qAaYjfxkg_48NVQqk6KTyO5va3_21UIqzwWFa0PxNCRf9n8gvke_Mw6arMzDcmXzwBZ5HXhRogr6bUMXBKHhxJnTodGOMP-e8bu-e5vPgbzwxR9flS93KhDmps_UG9bjHFu8U9XgTczDntGFNXzUphE8qoaOJIsgsmehYOmW1BJK92tL6lkyOSmOvp0hTtt9c0naGhvfm5FdI9NpNWc1MN735eJ-g83srPbNsLcqqGzcGKGMGYTLAt4mXPUwL1h8OLZN5P5w4MmwIj-dpnaIhrNCf_loJhX4tCi7REywJ9AunjEvN4RHW3Qom4T29ldKOXK8DrRn7WkqGNpXciyR4CopCI0zPruvKmq9hXqCDTB6-cVlaje3CA7L6OVrLcit6REHNt-ZvEIsia9xvh5vxrIuLGZLCWL2hEZJoL62spLbjayxXbOQ0Ht_iaymKjynaPtd7VK0sPl3Zi_KpZ6lDWdPSTtnT5b-TNlpcENv6Oe657Mrx7eSdaXU86PuTrYZd4HPNrgWeaXdDO5R0dSubvS4aqECJc1-z6tnYGm2JXQVqMriHtpuuPsI4N7t23LcOL44TAxjvu7OlmRnXcuwtWa1kbzgcKPmW9N2xbbeP20ytvXh6-PgQuy1vh33rZNadVqwjYyMr_sCB9LKdYAsXty6NoR1MZCZcsdiR4-PkTS5PDnEhLi79FeFQApbApl2KZLA6HLTSFDCkZk9OMFh7D7rDISd0loUdl_CDXCLnMtlxOeLMRgQ5h7znqrMc78gPh0Mud7xDjsNlPTk7LuHZXgmHa_YJXKJ4cKPvKn9TN-y7pHU1sauOWfqHymGc1qwPFkNsHFwD18ZwKzHXKDGfv6y7iA_edDLnPdg6ZxCD2_5RQvLKmDEdvuEPwCxHEthUx4qkdexpaTVadxI0pAnOhobwFaEh_KnQEP5UaAj3oSF8IjSEf0hoCBvQEL5BQ5ai3wEawgY0hC-DhrBx88I3aGhf0Rs0dIOGbtDQ9aAhfBAasgvU_xgawp8IDeEbNPSD3ttu0NDp6XWDhr4PNITPh4awAQ3hGzT0n4eG8IXQEDagIXwUGsLXhYbwQWjoPb2d_3J6EsWXTrdVVW2U7pGf4b0sWVrm1V0pl9D7Bp9JEsXZy-q5aKaP-AxPxkk4iaMkHLFZyJIwoaNKVDmffewvbkiowiPTChymNjCDs9FW5jNLEVGttuldVq6hk-cvu8bfyPIZiKArlNpyBQ_jSTyejlazxZQFAZmGAcYhgS-SZIxPgySIkmBBx2SU05TnagaZ4xFS8K-oZgHPkDIjMSMBIUEMhOMIGNzFJAsZiaOQA9l0gb0o4Gsq8juth_bQSM5qldLtUsFgLlSl3gepUmJZcF6LA_50W61KOVsJSZmo3uioFj6rlf8HYhePkQ">