From c5a85af3b23b958f1c86768b7622503d76761966 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Sat, 21 Mar 2015 03:13:10 +0000 Subject: Cache the Function dependent subtarget on the MachineFunction. As preparation for removing the getSubtargetImpl() call from TargetMachine go ahead and flip the switch on caching the function dependent subtarget and remove the bare getSubtargetImpl call from the X86 port. As part of this add a few tests that show we can generate code and assemble on X86 based on features/cpu on the Function. llvm-svn: 232879 --- .../CodeGen/X86/function-subtarget-features-2.ll | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 llvm/test/CodeGen/X86/function-subtarget-features-2.ll (limited to 'llvm/test/CodeGen/X86/function-subtarget-features-2.ll') diff --git a/llvm/test/CodeGen/X86/function-subtarget-features-2.ll b/llvm/test/CodeGen/X86/function-subtarget-features-2.ll new file mode 100644 index 00000000000..d7c7c2fdb6f --- /dev/null +++ b/llvm/test/CodeGen/X86/function-subtarget-features-2.ll @@ -0,0 +1,26 @@ +; RUN: llc < %s -march=x86-64 -filetype=obj -o - | llvm-objdump -d - | FileCheck %s + +; This test verifies that we assemble code for different architectures +; based on target-cpu and target-features attributes. +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" + +define void @foo() #0 { +entry: + call void asm sideeffect "aeskeygenassist $$0x4, %xmm0, %xmm1", "~{dirflag},~{fpsr},~{flags}"() + ret void +} + +; CHECK: foo +; CHECK: aeskeygenassist + +define void @bar() #2 { +entry: + call void asm sideeffect "crc32b 4(%rbx), %eax", "~{dirflag},~{fpsr},~{flags}"() + ret void +} + +; CHECK: bar +; CHECK: crc32b + +attributes #0 = { "target-cpu"="x86-64" "target-features"="+avx2" } +attributes #2 = { "target-cpu"="corei7" "target-features"="+sse4.2" } -- cgit v1.2.3