[all-commits] [llvm/llvm-project] dfeb39: Remove the `x86_mmx` IR type. (#98505)
James Y Knight via All-commits
all-commits at lists.llvm.org
Thu Jul 25 06:19:44 PDT 2024
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: dfeb3991fb489a703f631ab0c34b58f80568038d
https://github.com/llvm/llvm-project/commit/dfeb3991fb489a703f631ab0c34b58f80568038d
Author: James Y Knight <jyknight at google.com>
Date: 2024-07-25 (Thu, 25 Jul 2024)
Changed paths:
M llvm/bindings/ocaml/llvm/llvm.mli
M llvm/bindings/ocaml/llvm/llvm_ocaml.c
M llvm/docs/BitCodeFormat.rst
M llvm/docs/LangRef.rst
M llvm/docs/ReleaseNotes.rst
M llvm/include/llvm-c/Core.h
M llvm/include/llvm/IR/DataLayout.h
M llvm/include/llvm/IR/Type.h
M llvm/lib/Analysis/ConstantFolding.cpp
M llvm/lib/AsmParser/LLLexer.cpp
M llvm/lib/Bitcode/Reader/BitcodeReader.cpp
M llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
M llvm/lib/CodeGen/ValueTypes.cpp
M llvm/lib/IR/AsmWriter.cpp
M llvm/lib/IR/ConstantFold.cpp
M llvm/lib/IR/Core.cpp
M llvm/lib/IR/DataLayout.cpp
M llvm/lib/IR/Function.cpp
M llvm/lib/IR/Instructions.cpp
M llvm/lib/IR/LLVMContextImpl.cpp
M llvm/lib/IR/LLVMContextImpl.h
M llvm/lib/IR/Type.cpp
M llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp
M llvm/lib/Target/Hexagon/HexagonTargetObjectFile.cpp
M llvm/lib/Target/X86/X86CallingConv.td
M llvm/lib/Target/X86/X86ISelLowering.cpp
M llvm/lib/Target/X86/X86InstCombineIntrinsic.cpp
M llvm/lib/Target/X86/X86IntrinsicsInfo.h
M llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp
M llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
M llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
R llvm/test/Assembler/x86mmx.ll
M llvm/test/Bitcode/bcanalyzer-types.ll
M llvm/test/Bitcode/compatibility-3.6.ll
M llvm/test/Bitcode/compatibility-3.7.ll
M llvm/test/Bitcode/compatibility-3.8.ll
M llvm/test/Bitcode/compatibility-3.9.ll
M llvm/test/Bitcode/compatibility-4.0.ll
M llvm/test/Bitcode/compatibility-5.0.ll
M llvm/test/Bitcode/compatibility-6.0.ll
M llvm/test/Bitcode/compatibility.ll
M llvm/test/CodeGen/X86/2008-09-05-sinttofp-2xi32.ll
M llvm/test/CodeGen/X86/avx-vbroadcast.ll
M llvm/test/CodeGen/X86/avx2-vbroadcast.ll
M llvm/test/CodeGen/X86/fast-isel-bc.ll
M llvm/test/CodeGen/X86/mmx-arg-passing-x86-64.ll
M llvm/test/CodeGen/X86/mmx-arg-passing.ll
M llvm/test/CodeGen/X86/mmx-arith.ll
M llvm/test/CodeGen/X86/mmx-bitcast-fold.ll
M llvm/test/CodeGen/X86/mmx-bitcast.ll
M llvm/test/CodeGen/X86/mmx-cvt.ll
M llvm/test/CodeGen/X86/mmx-fold-load.ll
M llvm/test/CodeGen/X86/mmx-intrinsics.ll
M llvm/test/CodeGen/X86/pr23246.ll
M llvm/test/CodeGen/X86/pr29222.ll
M llvm/test/CodeGen/X86/select-mmx.ll
M llvm/test/CodeGen/X86/stack-folding-mmx.ll
M llvm/test/CodeGen/X86/vec_extract-mmx.ll
M llvm/test/CodeGen/X86/vec_insert-7.ll
M llvm/test/CodeGen/X86/vec_insert-mmx.ll
M llvm/test/Instrumentation/MemorySanitizer/X86/mmx-intrinsics.ll
M llvm/test/Instrumentation/MemorySanitizer/vector_arith.ll
M llvm/test/Instrumentation/MemorySanitizer/vector_cvt.ll
M llvm/test/Instrumentation/MemorySanitizer/vector_pack.ll
M llvm/test/Instrumentation/MemorySanitizer/vector_shift.ll
M llvm/test/Transforms/InstCombine/X86/x86-movmsk.ll
M llvm/test/Transforms/InstCombine/bitcast-vec-canon-inseltpoison.ll
M llvm/test/Transforms/InstCombine/bitcast-vec-canon.ll
M llvm/test/Transforms/InstSimplify/ConstProp/loads.ll
R llvm/test/Transforms/LoopUnroll/X86/mmx.ll
M llvm/test/Transforms/SLPVectorizer/X86/bad_types.ll
M llvm/test/Transforms/SROA/pr57796.ll
M llvm/tools/llvm-c-test/echo.cpp
M llvm/tools/llvm-stress/llvm-stress.cpp
M llvm/unittests/IR/InstructionsTest.cpp
M mlir/docs/Dialects/LLVM.md
M mlir/include/mlir/Dialect/LLVMIR/LLVMTypes.h
M mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
M mlir/lib/Dialect/LLVMIR/IR/LLVMTypeSyntax.cpp
M mlir/lib/Dialect/LLVMIR/IR/LLVMTypes.cpp
M mlir/lib/Target/LLVMIR/TypeFromLLVM.cpp
M mlir/lib/Target/LLVMIR/TypeToLLVM.cpp
M mlir/test/Dialect/LLVMIR/types.mlir
M mlir/test/Target/LLVMIR/llvmir-types.mlir
Log Message:
-----------
Remove the `x86_mmx` IR type. (#98505)
It is now translated to `<1 x i64>`, which allows the removal of a bunch
of special casing.
This _incompatibly_ changes the ABI of any LLVM IR function with
`x86_mmx` arguments or returns: instead of passing in mmx registers,
they will now be passed via integer registers. However, the real-world
incompatibility caused by this is expected to be minimal, because Clang
never uses the x86_mmx type -- it lowers `__m64` to either `<1 x i64>`
or `double`, depending on ABI.
This change does _not_ eliminate the SelectionDAG `MVT::x86mmx` type.
That type simply no longer corresponds to an IR type, and is used only
by MMX intrinsics and inline-asm operands.
Because SelectionDAGBuilder only knows how to generate the
operands/results of intrinsics based on the IR type, it thus now
generates the intrinsics with the type MVT::v1i64, instead of
MVT::x86mmx. We need to fix this before the DAG LegalizeTypes, and thus
have the X86 backend fix them up in DAGCombine. (This may be a
short-lived hack, if all the MMX intrinsics can be removed in upcoming
changes.)
Works towards issue #98272.
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list