efriedma added inline comments.
================ Comment at: lib/Headers/mmintrin.h:55 /// -/// This intrinsic corresponds to the <c> VMOVD / MOVD </c> instruction. +/// This intrinsic corresponds to the <c> MOVD </c> instruction. /// ---------------- craig.topper wrote: > kromanova wrote: > > I tried clang on Linux, x86_64, and if -mavx option is passed, we generate > > VMOVD, if this option is omitted, we generate MOVD. > > I think I understand the rational behind this change (namely, to keep MOVD, > > but remove VMOVD), > > since this intrinsic should use MMX registers and shouldn't have > > corresponding AVX instruction(s). > > > > However, that's what we generate at the moment when -mavx is passed (I > > suspect because our MMX support is limited) > > vmovd %edi, %xmm0 > > > > Since we are writing the documentation for clang compiler, we should > > document what clang compiler is doing, not what is should be doing. > > Craig, what do you think? Should we revert back to VMOVD/MOVD? > > > We can change it back to VMOVD/MOVD The reference to vmovd seems confusing. Yes, LLVM compiles `_mm_movpi64_epi64(_mm_cvtsi32_si64(i))` to vmovd, but that doesn't mean either of those intrinsics "corresponds" to vmovd; that's just the optimizer combining two operations into one. https://reviews.llvm.org/D41517 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits