]> granicus.if.org Git - clang/commit
Handle sse turning on mmx, but no -mmx not turning off SSE.
authorEric Christopher <echristo@gmail.com>
Thu, 8 Oct 2015 20:10:18 +0000 (20:10 +0000)
committerEric Christopher <echristo@gmail.com>
Thu, 8 Oct 2015 20:10:18 +0000 (20:10 +0000)
commit4354166ba47066bd21c11c74ec05d5c636239301
tree955507ba6e0d7aaf8dc74670de5dc3ecbbd13b22
parent39c6be918c1503601c842d169ae3a386b69d29e6
Handle sse turning on mmx, but no -mmx not turning off SSE.

Rationale :

// sse3
__m128d test_mm_addsub_pd(__m128d A, __m128d B) {
  return _mm_addsub_pd(A, B);
}

// mmx
void shift(__m64 a, __m64 b, int c) {
  _mm_slli_pi16(a, c);
  _mm_slli_pi32(a, c);
  _mm_slli_si64(a, c);
  _mm_srli_pi16(a, c);
  _mm_srli_pi32(a, c);
  _mm_srli_si64(a, c);
  _mm_srai_pi16(a, c);
  _mm_srai_pi32(a, c);
}

clang -msse3 -mno-mmx file.c -c

For this code we should be able to explicitly turn off MMX
without affecting the compilation of the SSE3 function and then
diagnose and error on compiling the MMX function.

This is a preparatory patch to the actual diagnosis code which is
coming in a future patch. This sets us up to have the correct information
where we need it and verifies that it's being emitted for the backend
to handle.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249733 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Basic/Targets.cpp
test/CodeGen/attr-target-x86-mmx.c [new file with mode: 0644]
test/CodeGen/attr-target-x86.c