[llvm] r353043 - [AsmPrinter] Remove hidden flag -print-schedule.

Andrea Di Biagio via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 4 04:51:26 PST 2019


Removed: llvm/trunk/test/CodeGen/X86/cmov-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/cmov-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/cmov-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/cmov-schedule.ll (removed)
@@ -1,2203 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=atom | FileCheck %s --check-prefix=CHECK --check-prefix=ATOM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=slm | FileCheck %s --check-prefix=CHECK --check-prefix=SLM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=sandybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=ivybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BDVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=btver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
-
-define void @test_cmov_16(i16 %a0, i16 %a1, i16 *%a2) optsize {
-; GENERIC-LABEL: test_cmov_16:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    cmovow %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnow %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovaew %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovaew %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovaew %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovew %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovew %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnew %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnew %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbew %si, %di # sched: [3:1.00]
-; GENERIC-NEXT:    cmovbew %si, %di # sched: [3:1.00]
-; GENERIC-NEXT:    cmovaw %si, %di # sched: [3:1.00]
-; GENERIC-NEXT:    cmovaw %si, %di # sched: [3:1.00]
-; GENERIC-NEXT:    cmovsw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnsw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovpw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovpw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnpw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnpw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovlw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovlw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgew %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgew %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovlew %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovlew %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgw %si, %di # sched: [2:0.67]
-; GENERIC-NEXT:    cmovow (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnow (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovaew (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovaew (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovaew (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovew (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovew (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnew (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnew (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbew (%rdx), %di # sched: [8:1.00]
-; GENERIC-NEXT:    cmovbew (%rdx), %di # sched: [8:1.00]
-; GENERIC-NEXT:    cmovaw (%rdx), %di # sched: [8:1.00]
-; GENERIC-NEXT:    cmovaw (%rdx), %di # sched: [8:1.00]
-; GENERIC-NEXT:    cmovsw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnsw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovpw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovpw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnpw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnpw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovlw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovlw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgew (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgew (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovlew (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovlew (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgw (%rdx), %di # sched: [7:0.67]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_cmov_16:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    #APP
-; ATOM-NEXT:    cmovow %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovnow %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovbew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovbew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovaw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovaw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovsw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovnsw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; ATOM-NEXT:    cmovow (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovnow (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovbw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovbw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovbw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovaew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovaew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovaew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovnew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovnew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovbew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovbew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovaw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovaw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovsw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovnsw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovpw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovpw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovnpw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovnpw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovlw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovlw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovgew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovgew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovlew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovlew (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovgw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    cmovgw (%rdx), %di # sched: [1:1.00]
-; ATOM-NEXT:    #NO_APP
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_cmov_16:
-; SLM:       # %bb.0:
-; SLM-NEXT:    #APP
-; SLM-NEXT:    cmovow %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovnow %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovbw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovbw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovbw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovaew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovaew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovaew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovnew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovnew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovbew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovbew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovaw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovaw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovsw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovnsw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovpw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovpw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovnpw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovnpw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovlw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovlw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovgew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovgew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovlew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovlew %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovgw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovgw %si, %di # sched: [2:1.00]
-; SLM-NEXT:    cmovow (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovnow (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovbw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovbw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovbw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovaew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovaew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovaew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovnew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovnew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovbew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovbew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovaw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovaw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovsw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovnsw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovpw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovpw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovnpw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovnpw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovlw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovlw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovgew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovgew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovlew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovlew (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovgw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    cmovgw (%rdx), %di # sched: [5:1.00]
-; SLM-NEXT:    #NO_APP
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_cmov_16:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    #APP
-; SANDY-NEXT:    cmovow %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovnow %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovbw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovbw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovbw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovaew %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovaew %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovaew %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovew %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovew %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovnew %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovnew %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovbew %si, %di # sched: [3:1.00]
-; SANDY-NEXT:    cmovbew %si, %di # sched: [3:1.00]
-; SANDY-NEXT:    cmovaw %si, %di # sched: [3:1.00]
-; SANDY-NEXT:    cmovaw %si, %di # sched: [3:1.00]
-; SANDY-NEXT:    cmovsw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovnsw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovpw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovpw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovnpw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovnpw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovlw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovlw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovgew %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovgew %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovlew %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovlew %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovgw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovgw %si, %di # sched: [2:0.67]
-; SANDY-NEXT:    cmovow (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovnow (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovbw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovbw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovbw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovaew (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovaew (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovaew (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovew (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovew (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovnew (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovnew (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovbew (%rdx), %di # sched: [8:1.00]
-; SANDY-NEXT:    cmovbew (%rdx), %di # sched: [8:1.00]
-; SANDY-NEXT:    cmovaw (%rdx), %di # sched: [8:1.00]
-; SANDY-NEXT:    cmovaw (%rdx), %di # sched: [8:1.00]
-; SANDY-NEXT:    cmovsw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovnsw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovpw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovpw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovnpw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovnpw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovlw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovlw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovgew (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovgew (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovlew (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovlew (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovgw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    cmovgw (%rdx), %di # sched: [7:0.67]
-; SANDY-NEXT:    #NO_APP
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_cmov_16:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    cmovow %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnow %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovaew %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovaew %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovaew %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovew %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovew %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnew %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnew %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbew %si, %di # sched: [3:0.75]
-; HASWELL-NEXT:    cmovbew %si, %di # sched: [3:0.75]
-; HASWELL-NEXT:    cmovaw %si, %di # sched: [3:0.75]
-; HASWELL-NEXT:    cmovaw %si, %di # sched: [3:0.75]
-; HASWELL-NEXT:    cmovsw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnsw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovpw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovpw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnpw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnpw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovlw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovlw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgew %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgew %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovlew %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovlew %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgw %si, %di # sched: [2:0.50]
-; HASWELL-NEXT:    cmovow (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnow (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovaew (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovaew (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovaew (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovew (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovew (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnew (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnew (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbew (%rdx), %di # sched: [8:0.75]
-; HASWELL-NEXT:    cmovbew (%rdx), %di # sched: [8:0.75]
-; HASWELL-NEXT:    cmovaw (%rdx), %di # sched: [8:0.75]
-; HASWELL-NEXT:    cmovaw (%rdx), %di # sched: [8:0.75]
-; HASWELL-NEXT:    cmovsw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnsw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovpw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovpw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnpw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnpw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovlw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovlw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgew (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgew (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovlew (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovlew (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgw (%rdx), %di # sched: [7:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_cmov_16:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    cmovow %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnow %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbew %si, %di # sched: [2:0.50]
-; BROADWELL-NEXT:    cmovbew %si, %di # sched: [2:0.50]
-; BROADWELL-NEXT:    cmovaw %si, %di # sched: [2:0.50]
-; BROADWELL-NEXT:    cmovaw %si, %di # sched: [2:0.50]
-; BROADWELL-NEXT:    cmovsw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnsw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovow (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnow (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovaew (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovaew (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovaew (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovew (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovew (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnew (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnew (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbew (%rdx), %di # sched: [7:0.50]
-; BROADWELL-NEXT:    cmovbew (%rdx), %di # sched: [7:0.50]
-; BROADWELL-NEXT:    cmovaw (%rdx), %di # sched: [7:0.50]
-; BROADWELL-NEXT:    cmovaw (%rdx), %di # sched: [7:0.50]
-; BROADWELL-NEXT:    cmovsw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnsw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovpw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovpw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnpw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnpw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovlw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovlw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgew (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgew (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovlew (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovlew (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgw (%rdx), %di # sched: [6:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_cmov_16:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    cmovow %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnow %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbew %si, %di # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmovbew %si, %di # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmovaw %si, %di # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmovaw %si, %di # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmovsw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnsw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovow (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnow (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovaew (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovaew (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovaew (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovew (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovew (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnew (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnew (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbew (%rdx), %di # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmovbew (%rdx), %di # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmovaw (%rdx), %di # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmovaw (%rdx), %di # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmovsw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnsw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovpw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovpw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnpw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnpw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovlw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovlw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgew (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgew (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovlew (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovlew (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgw (%rdx), %di # sched: [6:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_cmov_16:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    cmovow %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovnow %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovbew %si, %di # sched: [2:1.00]
-; SKX-NEXT:    cmovbew %si, %di # sched: [2:1.00]
-; SKX-NEXT:    cmovaw %si, %di # sched: [2:1.00]
-; SKX-NEXT:    cmovaw %si, %di # sched: [2:1.00]
-; SKX-NEXT:    cmovsw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovnsw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; SKX-NEXT:    cmovow (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovnow (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovbw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovbw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovbw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovaew (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovaew (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovaew (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovew (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovew (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovnew (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovnew (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovbew (%rdx), %di # sched: [7:1.00]
-; SKX-NEXT:    cmovbew (%rdx), %di # sched: [7:1.00]
-; SKX-NEXT:    cmovaw (%rdx), %di # sched: [7:1.00]
-; SKX-NEXT:    cmovaw (%rdx), %di # sched: [7:1.00]
-; SKX-NEXT:    cmovsw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovnsw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovpw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovpw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovnpw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovnpw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovlw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovlw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovgew (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovgew (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovlew (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovlew (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovgw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    cmovgw (%rdx), %di # sched: [6:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_cmov_16:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    cmovow %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnow %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovaw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovaw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovsw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnsw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; BDVER2-NEXT:    cmovow (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnow (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovaew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovaew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovaew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovaw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovaw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovsw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnsw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovpw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovpw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnpw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnpw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovlw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovlw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovlew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovlew (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgw (%rdx), %di # sched: [5:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_cmov_16:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    #APP
-; BTVER2-NEXT:    cmovow %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnow %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovaew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovaw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovaw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovsw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnsw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovpw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnpw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovlw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovlew %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgw %si, %di # sched: [1:0.50]
-; BTVER2-NEXT:    cmovow (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnow (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovaew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovaew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovaew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovaw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovaw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovsw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnsw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovpw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovpw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnpw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnpw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovlw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovlw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovlew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovlew (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgw (%rdx), %di # sched: [4:1.00]
-; BTVER2-NEXT:    #NO_APP
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_cmov_16:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    cmovow %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnow %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovaew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovaew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovaew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovaw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovaw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovsw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnsw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovpw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovpw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnpw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnpw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovlw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovlw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovlew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovlew %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgw %si, %di # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovow (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnow (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovaew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovaew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovaew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovaw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovaw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovsw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnsw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovpw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovpw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnpw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnpw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovlw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovlw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovlew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovlew (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgw (%rdx), %di # sched: [5:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  call void asm sideeffect "cmovow $1, $0 \0A\09 cmovnow $1, $0 \0A\09 cmovbw $1, $0 \0A\09 cmovcw $1, $0 \0A\09 cmovnaew $1, $0 \0A\09 cmovnbw $1, $0 \0A\09 cmovncw $1, $0 \0A\09 cmovaew $1, $0 \0A\09 cmovzw $1, $0 \0A\09 cmovew $1, $0 \0A\09 cmovnzw $1, $0 \0A\09 cmovnew $1, $0 \0A\09 cmovbew $1, $0 \0A\09 cmovnaw $1, $0 \0A\09 cmovnbew $1, $0 \0A\09 cmovaw $1, $0 \0A\09 cmovsw $1, $0 \0A\09 cmovnsw $1, $0 \0A\09 cmovpw $1, $0 \0A\09 cmovpew $1, $0 \0A\09 cmovnpw $1, $0 \0A\09 cmovpow $1, $0 \0A\09 cmovlw $1, $0 \0A\09 cmovngew $1, $0 \0A\09 cmovnlw $1, $0 \0A\09 cmovgew $1, $0 \0A\09 cmovlew $1, $0 \0A\09 cmovngw $1, $0 \0A\09 cmovnlew $1, $0 \0A\09 cmovgw $1, $0 \0A\09 cmovow $2, $0 \0A\09 cmovnow $2, $0 \0A\09 cmovbw $2, $0 \0A\09 cmovcw $2, $0 \0A\09 cmovnaew $2, $0 \0A\09 cmovnbw $2, $0 \0A\09 cmovncw $2, $0 \0A\09 cmovaew $2, $0 \0A\09 cmovzw $2, $0 \0A\09 cmovew $2, $0 \0A\09 cmovnzw $2, $0 \0A\09 cmovnew $2, $0 \0A\09 cmovbew $2, $0 \0A\09 cmovnaw $2, $0 \0A\09 cmovnbew $2, $0 \0A\09 cmovaw $2, $0 \0A\09 cmovsw $2, $0 \0A\09 cmovnsw $2, $0 \0A\09 cmovpw $2, $0 \0A\09 cmovpew $2, $0 \0A\09 cmovnpw $2, $0 \0A\09 cmovpow $2, $0 \0A\09 cmovlw $2, $0 \0A\09 cmovngew $2, $0 \0A\09 cmovnlw $2, $0 \0A\09 cmovgew $2, $0 \0A\09 cmovlew $2, $0 \0A\09 cmovngw $2, $0 \0A\09 cmovnlew $2, $0 \0A\09 cmovgw $2, $0", "r,r,*m"(i16 %a0, i16 %a1, i16 *%a2)
-  ret void
-}
-
-define void @test_cmov_32(i32 %a0, i32 %a1, i32 *%a2) optsize {
-; GENERIC-LABEL: test_cmov_32:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    cmovol %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnol %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbl %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbl %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbl %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovael %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovael %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovael %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovel %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovel %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnel %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnel %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbel %esi, %edi # sched: [3:1.00]
-; GENERIC-NEXT:    cmovbel %esi, %edi # sched: [3:1.00]
-; GENERIC-NEXT:    cmoval %esi, %edi # sched: [3:1.00]
-; GENERIC-NEXT:    cmoval %esi, %edi # sched: [3:1.00]
-; GENERIC-NEXT:    cmovsl %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnsl %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovpl %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovpl %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnpl %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnpl %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovll %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovll %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgel %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgel %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovlel %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovlel %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgl %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgl %esi, %edi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovol (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnol (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbl (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbl (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbl (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovael (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovael (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovael (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovel (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovel (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnel (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnel (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbel (%rdx), %edi # sched: [8:1.00]
-; GENERIC-NEXT:    cmovbel (%rdx), %edi # sched: [8:1.00]
-; GENERIC-NEXT:    cmoval (%rdx), %edi # sched: [8:1.00]
-; GENERIC-NEXT:    cmoval (%rdx), %edi # sched: [8:1.00]
-; GENERIC-NEXT:    cmovsl (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnsl (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovpl (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovpl (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnpl (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnpl (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovll (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovll (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgel (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgel (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovlel (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovlel (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgl (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgl (%rdx), %edi # sched: [7:0.67]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_cmov_32:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    #APP
-; ATOM-NEXT:    cmovol %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovnol %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovbel %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovbel %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmoval %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmoval %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovsl %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovnsl %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; ATOM-NEXT:    cmovol (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovnol (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovbl (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovbl (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovbl (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovael (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovael (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovael (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovel (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovel (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovnel (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovnel (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovbel (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovbel (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmoval (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmoval (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovsl (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovnsl (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovpl (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovpl (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovnpl (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovnpl (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovll (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovll (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovgel (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovgel (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovlel (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovlel (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovgl (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    cmovgl (%rdx), %edi # sched: [1:1.00]
-; ATOM-NEXT:    #NO_APP
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_cmov_32:
-; SLM:       # %bb.0:
-; SLM-NEXT:    #APP
-; SLM-NEXT:    cmovol %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovnol %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovbl %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovbl %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovbl %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovael %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovael %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovael %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovel %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovel %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovnel %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovnel %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovbel %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovbel %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmoval %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmoval %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovsl %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovnsl %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovpl %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovpl %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovnpl %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovnpl %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovll %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovll %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovgel %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovgel %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovlel %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovlel %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovgl %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovgl %esi, %edi # sched: [2:1.00]
-; SLM-NEXT:    cmovol (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovnol (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovbl (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovbl (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovbl (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovael (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovael (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovael (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovel (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovel (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovnel (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovnel (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovbel (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovbel (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmoval (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmoval (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovsl (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovnsl (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovpl (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovpl (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovnpl (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovnpl (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovll (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovll (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovgel (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovgel (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovlel (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovlel (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovgl (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    cmovgl (%rdx), %edi # sched: [5:1.00]
-; SLM-NEXT:    #NO_APP
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_cmov_32:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    #APP
-; SANDY-NEXT:    cmovol %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovnol %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovbl %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovbl %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovbl %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovael %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovael %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovael %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovel %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovel %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovnel %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovnel %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovbel %esi, %edi # sched: [3:1.00]
-; SANDY-NEXT:    cmovbel %esi, %edi # sched: [3:1.00]
-; SANDY-NEXT:    cmoval %esi, %edi # sched: [3:1.00]
-; SANDY-NEXT:    cmoval %esi, %edi # sched: [3:1.00]
-; SANDY-NEXT:    cmovsl %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovnsl %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovpl %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovpl %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovnpl %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovnpl %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovll %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovll %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovgel %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovgel %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovlel %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovlel %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovgl %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovgl %esi, %edi # sched: [2:0.67]
-; SANDY-NEXT:    cmovol (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovnol (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovbl (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovbl (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovbl (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovael (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovael (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovael (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovel (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovel (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovnel (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovnel (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovbel (%rdx), %edi # sched: [8:1.00]
-; SANDY-NEXT:    cmovbel (%rdx), %edi # sched: [8:1.00]
-; SANDY-NEXT:    cmoval (%rdx), %edi # sched: [8:1.00]
-; SANDY-NEXT:    cmoval (%rdx), %edi # sched: [8:1.00]
-; SANDY-NEXT:    cmovsl (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovnsl (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovpl (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovpl (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovnpl (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovnpl (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovll (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovll (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovgel (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovgel (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovlel (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovlel (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovgl (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    cmovgl (%rdx), %edi # sched: [7:0.67]
-; SANDY-NEXT:    #NO_APP
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_cmov_32:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    cmovol %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnol %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbl %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbl %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbl %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovael %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovael %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovael %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovel %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovel %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnel %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnel %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbel %esi, %edi # sched: [3:0.75]
-; HASWELL-NEXT:    cmovbel %esi, %edi # sched: [3:0.75]
-; HASWELL-NEXT:    cmoval %esi, %edi # sched: [3:0.75]
-; HASWELL-NEXT:    cmoval %esi, %edi # sched: [3:0.75]
-; HASWELL-NEXT:    cmovsl %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnsl %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovpl %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovpl %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnpl %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnpl %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovll %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovll %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgel %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgel %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovlel %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovlel %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgl %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgl %esi, %edi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovol (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnol (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbl (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbl (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbl (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovael (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovael (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovael (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovel (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovel (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnel (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnel (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbel (%rdx), %edi # sched: [8:0.75]
-; HASWELL-NEXT:    cmovbel (%rdx), %edi # sched: [8:0.75]
-; HASWELL-NEXT:    cmoval (%rdx), %edi # sched: [8:0.75]
-; HASWELL-NEXT:    cmoval (%rdx), %edi # sched: [8:0.75]
-; HASWELL-NEXT:    cmovsl (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnsl (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovpl (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovpl (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnpl (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnpl (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovll (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovll (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgel (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgel (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovlel (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovlel (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgl (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgl (%rdx), %edi # sched: [7:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_cmov_32:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    cmovol %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnol %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbel %esi, %edi # sched: [2:0.50]
-; BROADWELL-NEXT:    cmovbel %esi, %edi # sched: [2:0.50]
-; BROADWELL-NEXT:    cmoval %esi, %edi # sched: [2:0.50]
-; BROADWELL-NEXT:    cmoval %esi, %edi # sched: [2:0.50]
-; BROADWELL-NEXT:    cmovsl %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnsl %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovol (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnol (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbl (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbl (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbl (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovael (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovael (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovael (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovel (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovel (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnel (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnel (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbel (%rdx), %edi # sched: [7:0.50]
-; BROADWELL-NEXT:    cmovbel (%rdx), %edi # sched: [7:0.50]
-; BROADWELL-NEXT:    cmoval (%rdx), %edi # sched: [7:0.50]
-; BROADWELL-NEXT:    cmoval (%rdx), %edi # sched: [7:0.50]
-; BROADWELL-NEXT:    cmovsl (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnsl (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovpl (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovpl (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnpl (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnpl (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovll (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovll (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgel (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgel (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovlel (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovlel (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgl (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgl (%rdx), %edi # sched: [6:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_cmov_32:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    cmovol %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnol %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbel %esi, %edi # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmovbel %esi, %edi # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmoval %esi, %edi # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmoval %esi, %edi # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmovsl %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnsl %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovol (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnol (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbl (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbl (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbl (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovael (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovael (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovael (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovel (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovel (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnel (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnel (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbel (%rdx), %edi # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmovbel (%rdx), %edi # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmoval (%rdx), %edi # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmoval (%rdx), %edi # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmovsl (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnsl (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovpl (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovpl (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnpl (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnpl (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovll (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovll (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgel (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgel (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovlel (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovlel (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgl (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgl (%rdx), %edi # sched: [6:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_cmov_32:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    cmovol %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovnol %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovbel %esi, %edi # sched: [2:1.00]
-; SKX-NEXT:    cmovbel %esi, %edi # sched: [2:1.00]
-; SKX-NEXT:    cmoval %esi, %edi # sched: [2:1.00]
-; SKX-NEXT:    cmoval %esi, %edi # sched: [2:1.00]
-; SKX-NEXT:    cmovsl %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovnsl %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; SKX-NEXT:    cmovol (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovnol (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovbl (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovbl (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovbl (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovael (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovael (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovael (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovel (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovel (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovnel (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovnel (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovbel (%rdx), %edi # sched: [7:1.00]
-; SKX-NEXT:    cmovbel (%rdx), %edi # sched: [7:1.00]
-; SKX-NEXT:    cmoval (%rdx), %edi # sched: [7:1.00]
-; SKX-NEXT:    cmoval (%rdx), %edi # sched: [7:1.00]
-; SKX-NEXT:    cmovsl (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovnsl (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovpl (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovpl (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovnpl (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovnpl (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovll (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovll (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovgel (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovgel (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovlel (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovlel (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovgl (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    cmovgl (%rdx), %edi # sched: [6:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_cmov_32:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    cmovol %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnol %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbel %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbel %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmoval %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmoval %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovsl %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnsl %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovol (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnol (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbl (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbl (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbl (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovael (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovael (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovael (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovel (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovel (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnel (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnel (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbel (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbel (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmoval (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmoval (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovsl (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnsl (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovpl (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovpl (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnpl (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnpl (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovll (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovll (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgel (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgel (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovlel (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovlel (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgl (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgl (%rdx), %edi # sched: [5:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_cmov_32:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    #APP
-; BTVER2-NEXT:    cmovol %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnol %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbl %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovael %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovel %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnel %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbel %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbel %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmoval %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmoval %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovsl %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnsl %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovpl %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnpl %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovll %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgel %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovlel %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgl %esi, %edi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovol (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnol (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbl (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbl (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbl (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovael (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovael (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovael (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovel (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovel (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnel (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnel (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbel (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbel (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmoval (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmoval (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovsl (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnsl (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovpl (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovpl (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnpl (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnpl (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovll (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovll (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgel (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgel (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovlel (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovlel (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgl (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgl (%rdx), %edi # sched: [4:1.00]
-; BTVER2-NEXT:    #NO_APP
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_cmov_32:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    cmovol %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnol %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbl %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbl %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbl %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovael %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovael %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovael %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovel %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovel %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnel %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnel %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbel %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbel %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmoval %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmoval %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovsl %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnsl %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovpl %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovpl %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnpl %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnpl %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovll %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovll %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgel %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgel %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovlel %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovlel %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgl %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgl %esi, %edi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovol (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnol (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbl (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbl (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbl (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovael (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovael (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovael (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovel (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovel (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnel (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnel (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbel (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbel (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmoval (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmoval (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovsl (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnsl (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovpl (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovpl (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnpl (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnpl (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovll (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovll (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgel (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgel (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovlel (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovlel (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgl (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgl (%rdx), %edi # sched: [5:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  call void asm sideeffect "cmovol $1, $0 \0A\09 cmovnol $1, $0 \0A\09 cmovbl $1, $0 \0A\09 cmovcl $1, $0 \0A\09 cmovnael $1, $0 \0A\09 cmovnbl $1, $0 \0A\09 cmovncl $1, $0 \0A\09 cmovael $1, $0 \0A\09 cmovzl $1, $0 \0A\09 cmovel $1, $0 \0A\09 cmovnzl $1, $0 \0A\09 cmovnel $1, $0 \0A\09 cmovbel $1, $0 \0A\09 cmovnal $1, $0 \0A\09 cmovnbel $1, $0 \0A\09 cmoval $1, $0 \0A\09 cmovsl $1, $0 \0A\09 cmovnsl $1, $0 \0A\09 cmovpl $1, $0 \0A\09 cmovpel $1, $0 \0A\09 cmovnpl $1, $0 \0A\09 cmovpol $1, $0 \0A\09 cmovll $1, $0 \0A\09 cmovngel $1, $0 \0A\09 cmovnll $1, $0 \0A\09 cmovgel $1, $0 \0A\09 cmovlel $1, $0 \0A\09 cmovngl $1, $0 \0A\09 cmovnlel $1, $0 \0A\09 cmovgl $1, $0 \0A\09 cmovol $2, $0 \0A\09 cmovnol $2, $0 \0A\09 cmovbl $2, $0 \0A\09 cmovcl $2, $0 \0A\09 cmovnael $2, $0 \0A\09 cmovnbl $2, $0 \0A\09 cmovncl $2, $0 \0A\09 cmovael $2, $0 \0A\09 cmovzl $2, $0 \0A\09 cmovel $2, $0 \0A\09 cmovnzl $2, $0 \0A\09 cmovnel $2, $0 \0A\09 cmovbel $2, $0 \0A\09 cmovnal $2, $0 \0A\09 cmovnbel $2, $0 \0A\09 cmoval $2, $0 \0A\09 cmovsl $2, $0 \0A\09 cmovnsl $2, $0 \0A\09 cmovpl $2, $0 \0A\09 cmovpel $2, $0 \0A\09 cmovnpl $2, $0 \0A\09 cmovpol $2, $0 \0A\09 cmovll $2, $0 \0A\09 cmovngel $2, $0 \0A\09 cmovnll $2, $0 \0A\09 cmovgel $2, $0 \0A\09 cmovlel $2, $0 \0A\09 cmovngl $2, $0 \0A\09 cmovnlel $2, $0 \0A\09 cmovgl $2, $0", "r,r,*m"(i32 %a0, i32 %a1, i32 *%a2)
-  ret void
-}
-
-define void @test_cmov_64(i64 %a0, i64 %a1, i64 *%a2) optsize {
-; GENERIC-LABEL: test_cmov_64:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    cmovoq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnoq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovaeq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovaeq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovaeq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmoveq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmoveq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovneq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovneq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovbeq %rsi, %rdi # sched: [3:1.00]
-; GENERIC-NEXT:    cmovbeq %rsi, %rdi # sched: [3:1.00]
-; GENERIC-NEXT:    cmovaq %rsi, %rdi # sched: [3:1.00]
-; GENERIC-NEXT:    cmovaq %rsi, %rdi # sched: [3:1.00]
-; GENERIC-NEXT:    cmovsq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnsq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovpq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovpq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnpq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovnpq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovlq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovlq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgeq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgeq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovleq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovleq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovgq %rsi, %rdi # sched: [2:0.67]
-; GENERIC-NEXT:    cmovoq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnoq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovaeq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovaeq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovaeq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmoveq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmoveq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovneq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovneq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovbeq (%rdx), %rdi # sched: [8:1.00]
-; GENERIC-NEXT:    cmovbeq (%rdx), %rdi # sched: [8:1.00]
-; GENERIC-NEXT:    cmovaq (%rdx), %rdi # sched: [8:1.00]
-; GENERIC-NEXT:    cmovaq (%rdx), %rdi # sched: [8:1.00]
-; GENERIC-NEXT:    cmovsq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnsq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovpq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovpq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnpq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovnpq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovlq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovlq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgeq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgeq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovleq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovleq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    cmovgq (%rdx), %rdi # sched: [7:0.67]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_cmov_64:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    #APP
-; ATOM-NEXT:    cmovoq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovnoq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovbeq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovbeq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovaq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovaq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovsq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovnsq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; ATOM-NEXT:    cmovoq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovnoq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovbq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovbq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovbq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovaeq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovaeq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovaeq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmoveq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmoveq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovneq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovneq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovbeq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovbeq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovaq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovaq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovsq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovnsq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovpq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovpq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovnpq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovnpq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovlq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovlq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovgeq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovgeq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovleq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovleq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovgq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    cmovgq (%rdx), %rdi # sched: [1:1.00]
-; ATOM-NEXT:    #NO_APP
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_cmov_64:
-; SLM:       # %bb.0:
-; SLM-NEXT:    #APP
-; SLM-NEXT:    cmovoq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovnoq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovbq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovbq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovbq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovaeq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovaeq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovaeq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmoveq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmoveq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovneq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovneq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovbeq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovbeq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovaq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovaq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovsq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovnsq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovpq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovpq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovnpq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovnpq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovlq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovlq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovgeq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovgeq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovleq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovleq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovgq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovgq %rsi, %rdi # sched: [2:1.00]
-; SLM-NEXT:    cmovoq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovnoq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovbq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovbq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovbq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovaeq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovaeq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovaeq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmoveq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmoveq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovneq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovneq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovbeq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovbeq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovaq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovaq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovsq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovnsq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovpq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovpq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovnpq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovnpq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovlq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovlq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovgeq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovgeq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovleq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovleq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovgq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    cmovgq (%rdx), %rdi # sched: [5:1.00]
-; SLM-NEXT:    #NO_APP
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_cmov_64:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    #APP
-; SANDY-NEXT:    cmovoq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovnoq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovbq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovbq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovbq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovaeq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovaeq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovaeq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmoveq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmoveq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovneq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovneq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovbeq %rsi, %rdi # sched: [3:1.00]
-; SANDY-NEXT:    cmovbeq %rsi, %rdi # sched: [3:1.00]
-; SANDY-NEXT:    cmovaq %rsi, %rdi # sched: [3:1.00]
-; SANDY-NEXT:    cmovaq %rsi, %rdi # sched: [3:1.00]
-; SANDY-NEXT:    cmovsq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovnsq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovpq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovpq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovnpq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovnpq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovlq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovlq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovgeq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovgeq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovleq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovleq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovgq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovgq %rsi, %rdi # sched: [2:0.67]
-; SANDY-NEXT:    cmovoq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovnoq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovbq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovbq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovbq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovaeq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovaeq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovaeq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmoveq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmoveq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovneq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovneq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovbeq (%rdx), %rdi # sched: [8:1.00]
-; SANDY-NEXT:    cmovbeq (%rdx), %rdi # sched: [8:1.00]
-; SANDY-NEXT:    cmovaq (%rdx), %rdi # sched: [8:1.00]
-; SANDY-NEXT:    cmovaq (%rdx), %rdi # sched: [8:1.00]
-; SANDY-NEXT:    cmovsq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovnsq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovpq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovpq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovnpq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovnpq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovlq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovlq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovgeq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovgeq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovleq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovleq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovgq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    cmovgq (%rdx), %rdi # sched: [7:0.67]
-; SANDY-NEXT:    #NO_APP
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_cmov_64:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    cmovoq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnoq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovaeq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovaeq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovaeq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmoveq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmoveq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovneq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovneq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovbeq %rsi, %rdi # sched: [3:0.75]
-; HASWELL-NEXT:    cmovbeq %rsi, %rdi # sched: [3:0.75]
-; HASWELL-NEXT:    cmovaq %rsi, %rdi # sched: [3:0.75]
-; HASWELL-NEXT:    cmovaq %rsi, %rdi # sched: [3:0.75]
-; HASWELL-NEXT:    cmovsq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnsq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovpq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovpq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnpq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovnpq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovlq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovlq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgeq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgeq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovleq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovleq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovgq %rsi, %rdi # sched: [2:0.50]
-; HASWELL-NEXT:    cmovoq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnoq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovaeq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovaeq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovaeq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmoveq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmoveq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovneq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovneq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovbeq (%rdx), %rdi # sched: [8:0.75]
-; HASWELL-NEXT:    cmovbeq (%rdx), %rdi # sched: [8:0.75]
-; HASWELL-NEXT:    cmovaq (%rdx), %rdi # sched: [8:0.75]
-; HASWELL-NEXT:    cmovaq (%rdx), %rdi # sched: [8:0.75]
-; HASWELL-NEXT:    cmovsq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnsq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovpq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovpq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnpq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovnpq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovlq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovlq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgeq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgeq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovleq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovleq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    cmovgq (%rdx), %rdi # sched: [7:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_cmov_64:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    cmovoq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnoq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovbeq %rsi, %rdi # sched: [2:0.50]
-; BROADWELL-NEXT:    cmovbeq %rsi, %rdi # sched: [2:0.50]
-; BROADWELL-NEXT:    cmovaq %rsi, %rdi # sched: [2:0.50]
-; BROADWELL-NEXT:    cmovaq %rsi, %rdi # sched: [2:0.50]
-; BROADWELL-NEXT:    cmovsq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnsq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; BROADWELL-NEXT:    cmovoq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnoq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovaeq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovaeq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovaeq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmoveq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmoveq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovneq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovneq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovbeq (%rdx), %rdi # sched: [7:0.50]
-; BROADWELL-NEXT:    cmovbeq (%rdx), %rdi # sched: [7:0.50]
-; BROADWELL-NEXT:    cmovaq (%rdx), %rdi # sched: [7:0.50]
-; BROADWELL-NEXT:    cmovaq (%rdx), %rdi # sched: [7:0.50]
-; BROADWELL-NEXT:    cmovsq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnsq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovpq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovpq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnpq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovnpq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovlq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovlq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgeq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgeq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovleq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovleq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    cmovgq (%rdx), %rdi # sched: [6:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_cmov_64:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    cmovoq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnoq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovbeq %rsi, %rdi # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmovbeq %rsi, %rdi # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmovaq %rsi, %rdi # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmovaq %rsi, %rdi # sched: [2:1.00]
-; SKYLAKE-NEXT:    cmovsq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnsq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; SKYLAKE-NEXT:    cmovoq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnoq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovaeq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovaeq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovaeq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmoveq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmoveq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovneq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovneq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovbeq (%rdx), %rdi # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmovbeq (%rdx), %rdi # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmovaq (%rdx), %rdi # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmovaq (%rdx), %rdi # sched: [7:1.00]
-; SKYLAKE-NEXT:    cmovsq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnsq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovpq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovpq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnpq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovnpq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovlq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovlq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgeq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgeq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovleq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovleq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    cmovgq (%rdx), %rdi # sched: [6:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_cmov_64:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    cmovoq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovnoq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovbeq %rsi, %rdi # sched: [2:1.00]
-; SKX-NEXT:    cmovbeq %rsi, %rdi # sched: [2:1.00]
-; SKX-NEXT:    cmovaq %rsi, %rdi # sched: [2:1.00]
-; SKX-NEXT:    cmovaq %rsi, %rdi # sched: [2:1.00]
-; SKX-NEXT:    cmovsq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovnsq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; SKX-NEXT:    cmovoq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovnoq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovbq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovbq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovbq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovaeq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovaeq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovaeq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmoveq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmoveq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovneq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovneq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovbeq (%rdx), %rdi # sched: [7:1.00]
-; SKX-NEXT:    cmovbeq (%rdx), %rdi # sched: [7:1.00]
-; SKX-NEXT:    cmovaq (%rdx), %rdi # sched: [7:1.00]
-; SKX-NEXT:    cmovaq (%rdx), %rdi # sched: [7:1.00]
-; SKX-NEXT:    cmovsq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovnsq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovpq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovpq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovnpq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovnpq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovlq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovlq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovgeq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovgeq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovleq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovleq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovgq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    cmovgq (%rdx), %rdi # sched: [6:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_cmov_64:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    cmovoq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnoq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbeq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovbeq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovaq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovaq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovsq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnsq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; BDVER2-NEXT:    cmovoq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnoq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovaeq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovaeq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovaeq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmoveq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmoveq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovneq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovneq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbeq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovbeq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovaq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovaq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovsq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnsq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovpq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovpq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnpq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovnpq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovlq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovlq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgeq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgeq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovleq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovleq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    cmovgq (%rdx), %rdi # sched: [5:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_cmov_64:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    #APP
-; BTVER2-NEXT:    cmovoq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnoq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbeq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovbeq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovaq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovaq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovsq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnsq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.50]
-; BTVER2-NEXT:    cmovoq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnoq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovaeq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovaeq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovaeq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmoveq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmoveq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovneq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovneq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbeq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovbeq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovaq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovaq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovsq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnsq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovpq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovpq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnpq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovnpq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovlq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovlq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgeq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgeq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovleq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovleq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    cmovgq (%rdx), %rdi # sched: [4:1.00]
-; BTVER2-NEXT:    #NO_APP
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_cmov_64:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    cmovoq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnoq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovaeq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmoveq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovneq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbeq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovbeq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovaq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovaq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovsq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnsq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovpq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovnpq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovlq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgeq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovleq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovgq %rsi, %rdi # sched: [1:0.25]
-; ZNVER1-NEXT:    cmovoq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnoq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovaeq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovaeq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovaeq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmoveq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmoveq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovneq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovneq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbeq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovbeq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovaq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovaq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovsq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnsq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovpq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovpq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnpq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovnpq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovlq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovlq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgeq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgeq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovleq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovleq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    cmovgq (%rdx), %rdi # sched: [5:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  call void asm sideeffect "cmovoq $1, $0 \0A\09 cmovnoq $1, $0 \0A\09 cmovbq $1, $0 \0A\09 cmovcq $1, $0 \0A\09 cmovnaeq $1, $0 \0A\09 cmovnbq $1, $0 \0A\09 cmovncq $1, $0 \0A\09 cmovaeq $1, $0 \0A\09 cmovzq $1, $0 \0A\09 cmoveq $1, $0 \0A\09 cmovnzq $1, $0 \0A\09 cmovneq $1, $0 \0A\09 cmovbeq $1, $0 \0A\09 cmovnaq $1, $0 \0A\09 cmovnbeq $1, $0 \0A\09 cmovaq $1, $0 \0A\09 cmovsq $1, $0 \0A\09 cmovnsq $1, $0 \0A\09 cmovpq $1, $0 \0A\09 cmovpeq $1, $0 \0A\09 cmovnpq $1, $0 \0A\09 cmovpoq $1, $0 \0A\09 cmovlq $1, $0 \0A\09 cmovngeq $1, $0 \0A\09 cmovnlq $1, $0 \0A\09 cmovgeq $1, $0 \0A\09 cmovleq $1, $0 \0A\09 cmovngq $1, $0 \0A\09 cmovnleq $1, $0 \0A\09 cmovgq $1, $0 \0A\09 cmovoq $2, $0 \0A\09 cmovnoq $2, $0 \0A\09 cmovbq $2, $0 \0A\09 cmovcq $2, $0 \0A\09 cmovnaeq $2, $0 \0A\09 cmovnbq $2, $0 \0A\09 cmovncq $2, $0 \0A\09 cmovaeq $2, $0 \0A\09 cmovzq $2, $0 \0A\09 cmoveq $2, $0 \0A\09 cmovnzq $2, $0 \0A\09 cmovneq $2, $0 \0A\09 cmovbeq $2, $0 \0A\09 cmovnaq $2, $0 \0A\09 cmovnbeq $2, $0 \0A\09 cmovaq $2, $0 \0A\09 cmovsq $2, $0 \0A\09 cmovnsq $2, $0 \0A\09 cmovpq $2, $0 \0A\09 cmovpeq $2, $0 \0A\09 cmovnpq $2, $0 \0A\09 cmovpoq $2, $0 \0A\09 cmovlq $2, $0 \0A\09 cmovngeq $2, $0 \0A\09 cmovnlq $2, $0 \0A\09 cmovgeq $2, $0 \0A\09 cmovleq $2, $0 \0A\09 cmovngq $2, $0 \0A\09 cmovnleq $2, $0 \0A\09 cmovgq $2, $0", "r,r,*m"(i64 %a0, i64 %a1, i64 *%a2)
-  ret void
-}

Removed: llvm/trunk/test/CodeGen/X86/f16c-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/f16c-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/f16c-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/f16c-schedule.ll (removed)
@@ -1,255 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+f16c | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=ivybridge | FileCheck %s --check-prefix=CHECK --check-prefix=IVY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BDVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=btver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
-
-define <4 x float> @test_vcvtph2ps_128(<8 x i16> %a0, <8 x i16> *%a1) {
-; GENERIC-LABEL: test_vcvtph2ps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    vcvtph2ps (%rdi), %xmm1 # sched: [8:1.00]
-; GENERIC-NEXT:    vcvtph2ps %xmm0, %xmm0 # sched: [3:1.00]
-; GENERIC-NEXT:    vaddps %xmm0, %xmm1, %xmm0 # sched: [3:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; IVY-LABEL: test_vcvtph2ps_128:
-; IVY:       # %bb.0:
-; IVY-NEXT:    vcvtph2ps (%rdi), %xmm1 # sched: [8:1.00]
-; IVY-NEXT:    vcvtph2ps %xmm0, %xmm0 # sched: [3:1.00]
-; IVY-NEXT:    vaddps %xmm0, %xmm1, %xmm0 # sched: [3:1.00]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_vcvtph2ps_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    vcvtph2ps (%rdi), %xmm1 # sched: [6:1.00]
-; HASWELL-NEXT:    vcvtph2ps %xmm0, %xmm0 # sched: [2:1.00]
-; HASWELL-NEXT:    vaddps %xmm0, %xmm1, %xmm0 # sched: [3:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vcvtph2ps_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    vcvtph2ps (%rdi), %xmm1 # sched: [6:1.00]
-; BROADWELL-NEXT:    vcvtph2ps %xmm0, %xmm0 # sched: [2:1.00]
-; BROADWELL-NEXT:    vaddps %xmm0, %xmm1, %xmm0 # sched: [3:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vcvtph2ps_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    vcvtph2ps (%rdi), %xmm1 # sched: [9:0.50]
-; SKYLAKE-NEXT:    vcvtph2ps %xmm0, %xmm0 # sched: [5:1.00]
-; SKYLAKE-NEXT:    vaddps %xmm0, %xmm1, %xmm0 # sched: [4:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_vcvtph2ps_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    vcvtph2ps (%rdi), %xmm1 # sched: [13:1.00]
-; BDVER2-NEXT:    vcvtph2ps %xmm0, %xmm0 # sched: [8:1.00]
-; BDVER2-NEXT:    vaddps %xmm0, %xmm1, %xmm0 # sched: [5:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_vcvtph2ps_128:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    vcvtph2ps (%rdi), %xmm1 # sched: [8:1.00]
-; BTVER2-NEXT:    vcvtph2ps %xmm0, %xmm0 # sched: [3:1.00]
-; BTVER2-NEXT:    vaddps %xmm0, %xmm1, %xmm0 # sched: [3:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_vcvtph2ps_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    vcvtph2ps (%rdi), %xmm1 # sched: [100:0.25]
-; ZNVER1-NEXT:    vcvtph2ps %xmm0, %xmm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    vaddps %xmm0, %xmm1, %xmm0 # sched: [3:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load <8 x i16>, <8 x i16> *%a1
-  %2 = call <4 x float> @llvm.x86.vcvtph2ps.128(<8 x i16> %1)
-  %3 = call <4 x float> @llvm.x86.vcvtph2ps.128(<8 x i16> %a0)
-  %4 = fadd <4 x float> %2, %3
-  ret <4 x float> %4
-}
-declare <4 x float> @llvm.x86.vcvtph2ps.128(<8 x i16>)
-
-define <8 x float> @test_vcvtph2ps_256(<8 x i16> %a0, <8 x i16> *%a1) {
-; GENERIC-LABEL: test_vcvtph2ps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    vcvtph2ps (%rdi), %ymm1 # sched: [8:1.00]
-; GENERIC-NEXT:    vcvtph2ps %xmm0, %ymm0 # sched: [3:1.00]
-; GENERIC-NEXT:    vaddps %ymm0, %ymm1, %ymm0 # sched: [3:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; IVY-LABEL: test_vcvtph2ps_256:
-; IVY:       # %bb.0:
-; IVY-NEXT:    vcvtph2ps (%rdi), %ymm1 # sched: [8:1.00]
-; IVY-NEXT:    vcvtph2ps %xmm0, %ymm0 # sched: [3:1.00]
-; IVY-NEXT:    vaddps %ymm0, %ymm1, %ymm0 # sched: [3:1.00]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_vcvtph2ps_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    vcvtph2ps (%rdi), %ymm1 # sched: [7:1.00]
-; HASWELL-NEXT:    vcvtph2ps %xmm0, %ymm0 # sched: [2:1.00]
-; HASWELL-NEXT:    vaddps %ymm0, %ymm1, %ymm0 # sched: [3:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vcvtph2ps_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    vcvtph2ps (%rdi), %ymm1 # sched: [6:1.00]
-; BROADWELL-NEXT:    vcvtph2ps %xmm0, %ymm0 # sched: [2:1.00]
-; BROADWELL-NEXT:    vaddps %ymm0, %ymm1, %ymm0 # sched: [3:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vcvtph2ps_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    vcvtph2ps (%rdi), %ymm1 # sched: [10:0.50]
-; SKYLAKE-NEXT:    vcvtph2ps %xmm0, %ymm0 # sched: [7:1.00]
-; SKYLAKE-NEXT:    vaddps %ymm0, %ymm1, %ymm0 # sched: [4:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_vcvtph2ps_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    vcvtph2ps (%rdi), %ymm1 # sched: [13:2.00]
-; BDVER2-NEXT:    vcvtph2ps %xmm0, %ymm0 # sched: [8:2.00]
-; BDVER2-NEXT:    vaddps %ymm0, %ymm1, %ymm0 # sched: [5:2.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_vcvtph2ps_256:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    vcvtph2ps (%rdi), %ymm1 # sched: [8:2.00]
-; BTVER2-NEXT:    vcvtph2ps %xmm0, %ymm0 # sched: [3:2.00]
-; BTVER2-NEXT:    vaddps %ymm0, %ymm1, %ymm0 # sched: [3:2.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_vcvtph2ps_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    vcvtph2ps (%rdi), %ymm1 # sched: [100:0.25]
-; ZNVER1-NEXT:    vcvtph2ps %xmm0, %ymm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    vaddps %ymm0, %ymm1, %ymm0 # sched: [3:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load <8 x i16>, <8 x i16> *%a1
-  %2 = call <8 x float> @llvm.x86.vcvtph2ps.256(<8 x i16> %1)
-  %3 = call <8 x float> @llvm.x86.vcvtph2ps.256(<8 x i16> %a0)
-  %4 = fadd <8 x float> %2, %3
-  ret <8 x float> %4
-}
-declare <8 x float> @llvm.x86.vcvtph2ps.256(<8 x i16>)
-
-define <8 x i16> @test_vcvtps2ph_128(<4 x float> %a0, <4 x float> %a1, <4 x i16> *%a2) {
-; GENERIC-LABEL: test_vcvtps2ph_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    vcvtps2ph $0, %xmm0, %xmm0 # sched: [3:1.00]
-; GENERIC-NEXT:    vcvtps2ph $0, %xmm1, (%rdi) # sched: [4:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; IVY-LABEL: test_vcvtps2ph_128:
-; IVY:       # %bb.0:
-; IVY-NEXT:    vcvtps2ph $0, %xmm0, %xmm0 # sched: [3:1.00]
-; IVY-NEXT:    vcvtps2ph $0, %xmm1, (%rdi) # sched: [4:1.00]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_vcvtps2ph_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    vcvtps2ph $0, %xmm0, %xmm0 # sched: [4:1.00]
-; HASWELL-NEXT:    vcvtps2ph $0, %xmm1, (%rdi) # sched: [5:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vcvtps2ph_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    vcvtps2ph $0, %xmm0, %xmm0 # sched: [4:1.00]
-; BROADWELL-NEXT:    vcvtps2ph $0, %xmm1, (%rdi) # sched: [5:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vcvtps2ph_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    vcvtps2ph $0, %xmm0, %xmm0 # sched: [5:1.00]
-; SKYLAKE-NEXT:    vcvtps2ph $0, %xmm1, (%rdi) # sched: [6:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_vcvtps2ph_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    vcvtps2ph $0, %xmm0, %xmm0 # sched: [8:1.00]
-; BDVER2-NEXT:    vcvtps2ph $0, %xmm1, (%rdi) # sched: [4:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_vcvtps2ph_128:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    vcvtps2ph $0, %xmm0, %xmm0 # sched: [3:1.00]
-; BTVER2-NEXT:    vcvtps2ph $0, %xmm1, (%rdi) # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_vcvtps2ph_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    vcvtps2ph $0, %xmm0, %xmm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    vcvtps2ph $0, %xmm1, (%rdi) # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call <8 x i16> @llvm.x86.vcvtps2ph.128(<4 x float> %a0, i32 0)
-  %2 = call <8 x i16> @llvm.x86.vcvtps2ph.128(<4 x float> %a1, i32 0)
-  %3 = shufflevector <8 x i16> %2, <8 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
-  store <4 x i16> %3, <4 x i16> *%a2
-  ret <8 x i16> %1
-}
-declare <8 x i16> @llvm.x86.vcvtps2ph.128(<4 x float>, i32)
-
-define <8 x i16> @test_vcvtps2ph_256(<8 x float> %a0, <8 x float> %a1, <8 x i16> *%a2) {
-; GENERIC-LABEL: test_vcvtps2ph_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    vcvtps2ph $0, %ymm0, %xmm0 # sched: [3:1.00]
-; GENERIC-NEXT:    vcvtps2ph $0, %ymm1, (%rdi) # sched: [4:1.00]
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; IVY-LABEL: test_vcvtps2ph_256:
-; IVY:       # %bb.0:
-; IVY-NEXT:    vcvtps2ph $0, %ymm0, %xmm0 # sched: [3:1.00]
-; IVY-NEXT:    vcvtps2ph $0, %ymm1, (%rdi) # sched: [4:1.00]
-; IVY-NEXT:    vzeroupper # sched: [1:1.00]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_vcvtps2ph_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    vcvtps2ph $0, %ymm0, %xmm0 # sched: [6:1.00]
-; HASWELL-NEXT:    vcvtps2ph $0, %ymm1, (%rdi) # sched: [7:1.00]
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vcvtps2ph_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    vcvtps2ph $0, %ymm0, %xmm0 # sched: [6:1.00]
-; BROADWELL-NEXT:    vcvtps2ph $0, %ymm1, (%rdi) # sched: [7:1.00]
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vcvtps2ph_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    vcvtps2ph $0, %ymm0, %xmm0 # sched: [7:1.00]
-; SKYLAKE-NEXT:    vcvtps2ph $0, %ymm1, (%rdi) # sched: [8:1.00]
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_vcvtps2ph_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    vcvtps2ph $0, %ymm0, %xmm0 # sched: [8:2.00]
-; BDVER2-NEXT:    vcvtps2ph $0, %ymm1, (%rdi) # sched: [4:2.00]
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_vcvtps2ph_256:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    vcvtps2ph $0, %ymm0, %xmm0 # sched: [6:2.00]
-; BTVER2-NEXT:    vcvtps2ph $0, %ymm1, (%rdi) # sched: [7:2.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_vcvtps2ph_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    vcvtps2ph $0, %ymm0, %xmm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    vcvtps2ph $0, %ymm1, (%rdi) # sched: [100:0.25]
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call <8 x i16> @llvm.x86.vcvtps2ph.256(<8 x float> %a0, i32 0)
-  %2 = call <8 x i16> @llvm.x86.vcvtps2ph.256(<8 x float> %a1, i32 0)
-  store <8 x i16> %2, <8 x i16> *%a2
-  ret <8 x i16> %1
-}
-declare <8 x i16> @llvm.x86.vcvtps2ph.256(<8 x float>, i32)

Removed: llvm/trunk/test/CodeGen/X86/fma-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fma-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/fma-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/fma-schedule.ll (removed)
@@ -1,3317 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+fma | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BDVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=knl | FileCheck %s --check-prefix=CHECK --check-prefix=KNL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
-
-;
-; VFMADD
-;
-
-define void @test_vfmaddpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmaddpd_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmaddpd_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [11:0.50]
-; HASWELL-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmaddpd_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmaddpd_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmaddpd_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [11:0.50]
-; KNL-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmaddpd_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; SKX-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmaddpd_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd132pd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd231pd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmadd132pd $2, $1, $0 \0A\09 vfmadd213pd $2, $1, $0 \0A\09 vfmadd231pd $2, $1, $0 \0A\09 vfmadd132pd $3, $1, $0 \0A\09 vfmadd213pd $3, $1, $0 \0A\09 vfmadd231pd $3, $1, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmaddpd_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [10:1.00]
-; BDVER2-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmaddpd_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [12:0.50]
-; HASWELL-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmaddpd_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmaddpd_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmaddpd_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [12:0.50]
-; KNL-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmaddpd_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [11:0.50]
-; SKX-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmaddpd_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd132pd {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd231pd {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmadd132pd $2, $1, $0 \0A\09 vfmadd213pd $2, $1, $0 \0A\09 vfmadd231pd $2, $1, $0 \0A\09 vfmadd132pd $3, $1, $0 \0A\09 vfmadd213pd $3, $1, $0 \0A\09 vfmadd231pd $3, $1, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmaddps_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmaddps_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [11:0.50]
-; HASWELL-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmaddps_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmaddps_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmaddps_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [11:0.50]
-; KNL-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmaddps_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; SKX-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmaddps_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd132ps {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd231ps {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmadd132ps $2, $1, $0 \0A\09 vfmadd213ps $2, $1, $0 \0A\09 vfmadd231ps $2, $1, $0 \0A\09 vfmadd132ps $3, $1, $0 \0A\09 vfmadd213ps $3, $1, $0 \0A\09 vfmadd231ps $3, $1, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmaddps_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [10:1.00]
-; BDVER2-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmaddps_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [12:0.50]
-; HASWELL-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmaddps_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmaddps_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmaddps_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [12:0.50]
-; KNL-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmaddps_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [11:0.50]
-; SKX-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmaddps_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd132ps {{.*#+}} ymm0 = (ymm0 * mem) + ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd231ps {{.*#+}} ymm0 = (ymm1 * mem) + ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmadd132ps $2, $1, $0 \0A\09 vfmadd213ps $2, $1, $0 \0A\09 vfmadd231ps $2, $1, $0 \0A\09 vfmadd132ps $3, $1, $0 \0A\09 vfmadd213ps $3, $1, $0 \0A\09 vfmadd231ps $3, $1, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddsd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddsd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmaddsd_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmaddsd_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; HASWELL-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; HASWELL-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmaddsd_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmaddsd_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [9:0.50]
-; SKYLAKE-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [9:0.50]
-; SKYLAKE-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [9:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmaddsd_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; KNL-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; KNL-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmaddsd_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [9:0.50]
-; SKX-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [9:0.50]
-; SKX-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [9:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmaddsd_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd132sd {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd213sd {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd231sd {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmadd132sd $2, $1, $0 \0A\09 vfmadd213sd $2, $1, $0 \0A\09 vfmadd231sd $2, $1, $0 \0A\09 vfmadd132sd $3, $1, $0 \0A\09 vfmadd213sd $3, $1, $0 \0A\09 vfmadd231sd $3, $1, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddss_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddss_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmaddss_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmaddss_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; HASWELL-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; HASWELL-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmaddss_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmaddss_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [9:0.50]
-; SKYLAKE-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [9:0.50]
-; SKYLAKE-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [9:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmaddss_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [10:0.50]
-; KNL-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [10:0.50]
-; KNL-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [10:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmaddss_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [9:0.50]
-; SKX-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [9:0.50]
-; SKX-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [9:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmaddss_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmadd132ss {{.*#+}} xmm0 = (xmm0 * mem) + xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd213ss {{.*#+}} xmm0 = (xmm1 * xmm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmadd231ss {{.*#+}} xmm0 = (xmm1 * mem) + xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmadd132ss $2, $1, $0 \0A\09 vfmadd213ss $2, $1, $0 \0A\09 vfmadd231ss $2, $1, $0 \0A\09 vfmadd132ss $3, $1, $0 \0A\09 vfmadd213ss $3, $1, $0 \0A\09 vfmadd231ss $3, $1, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-;
-; VFMADDSUB
-;
-
-define void @test_vfmaddsubpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddsubpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmaddsubpd_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmaddsubpd_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [11:0.50]
-; HASWELL-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmaddsubpd_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmaddsubpd_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmaddsubpd_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [11:0.50]
-; KNL-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmaddsubpd_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [10:0.50]
-; SKX-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmaddsubpd_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub132pd {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmaddsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmaddsub231pd {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmaddsub132pd $2, $1, $0 \0A\09 vfmaddsub213pd $2, $1, $0 \0A\09 vfmaddsub231pd $2, $1, $0 \0A\09 vfmaddsub132pd $3, $1, $0 \0A\09 vfmaddsub213pd $3, $1, $0 \0A\09 vfmaddsub231pd $3, $1, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddsubpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddsubpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmaddsubpd_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [10:1.00]
-; BDVER2-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmaddsubpd_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [12:0.50]
-; HASWELL-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmaddsubpd_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmaddsubpd_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmaddsubpd_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [12:0.50]
-; KNL-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmaddsubpd_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [11:0.50]
-; SKX-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmaddsubpd_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub132pd {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmaddsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmaddsub231pd {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmaddsub132pd $2, $1, $0 \0A\09 vfmaddsub213pd $2, $1, $0 \0A\09 vfmaddsub231pd $2, $1, $0 \0A\09 vfmaddsub132pd $3, $1, $0 \0A\09 vfmaddsub213pd $3, $1, $0 \0A\09 vfmaddsub231pd $3, $1, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddsubps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddsubps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmaddsubps_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmaddsubps_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [11:0.50]
-; HASWELL-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmaddsubps_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmaddsubps_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmaddsubps_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [11:0.50]
-; KNL-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmaddsubps_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [10:0.50]
-; SKX-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmaddsubps_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) +/- xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) +/- xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub132ps {{.*#+}} xmm0 = (xmm0 * mem) +/- xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmaddsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) +/- mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmaddsub231ps {{.*#+}} xmm0 = (xmm1 * mem) +/- xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmaddsub132ps $2, $1, $0 \0A\09 vfmaddsub213ps $2, $1, $0 \0A\09 vfmaddsub231ps $2, $1, $0 \0A\09 vfmaddsub132ps $3, $1, $0 \0A\09 vfmaddsub213ps $3, $1, $0 \0A\09 vfmaddsub231ps $3, $1, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddsubps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddsubps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmaddsubps_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [10:1.00]
-; BDVER2-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmaddsubps_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [12:0.50]
-; HASWELL-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmaddsubps_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmaddsubps_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmaddsubps_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [12:0.50]
-; KNL-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmaddsubps_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [11:0.50]
-; SKX-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmaddsubps_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) +/- ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) +/- ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmaddsub132ps {{.*#+}} ymm0 = (ymm0 * mem) +/- ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmaddsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) +/- mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmaddsub231ps {{.*#+}} ymm0 = (ymm1 * mem) +/- ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmaddsub132ps $2, $1, $0 \0A\09 vfmaddsub213ps $2, $1, $0 \0A\09 vfmaddsub231ps $2, $1, $0 \0A\09 vfmaddsub132ps $3, $1, $0 \0A\09 vfmaddsub213ps $3, $1, $0 \0A\09 vfmaddsub231ps $3, $1, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-;
-; VFMSUBADD
-;
-
-define void @test_vfmsubaddpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubaddpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmsubaddpd_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmsubaddpd_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [11:0.50]
-; HASWELL-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmsubaddpd_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmsubaddpd_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmsubaddpd_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [11:0.50]
-; KNL-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmsubaddpd_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [10:0.50]
-; SKX-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmsubaddpd_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd132pd {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsubadd213pd {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsubadd231pd {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmsubadd132pd $2, $1, $0 \0A\09 vfmsubadd213pd $2, $1, $0 \0A\09 vfmsubadd231pd $2, $1, $0 \0A\09 vfmsubadd132pd $3, $1, $0 \0A\09 vfmsubadd213pd $3, $1, $0 \0A\09 vfmsubadd231pd $3, $1, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubaddpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubaddpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmsubaddpd_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [10:1.00]
-; BDVER2-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmsubaddpd_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [12:0.50]
-; HASWELL-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmsubaddpd_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmsubaddpd_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmsubaddpd_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [12:0.50]
-; KNL-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmsubaddpd_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [11:0.50]
-; SKX-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmsubaddpd_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd132pd {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsubadd213pd {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsubadd231pd {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmsubadd132pd $2, $1, $0 \0A\09 vfmsubadd213pd $2, $1, $0 \0A\09 vfmsubadd231pd $2, $1, $0 \0A\09 vfmsubadd132pd $3, $1, $0 \0A\09 vfmsubadd213pd $3, $1, $0 \0A\09 vfmsubadd231pd $3, $1, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubaddps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubaddps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmsubaddps_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmsubaddps_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [11:0.50]
-; HASWELL-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmsubaddps_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmsubaddps_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmsubaddps_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [11:0.50]
-; KNL-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmsubaddps_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [10:0.50]
-; SKX-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmsubaddps_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * xmm2) -/+ xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * xmm2) -/+ xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd132ps {{.*#+}} xmm0 = (xmm0 * mem) -/+ xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsubadd213ps {{.*#+}} xmm0 = (xmm1 * xmm0) -/+ mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsubadd231ps {{.*#+}} xmm0 = (xmm1 * mem) -/+ xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmsubadd132ps $2, $1, $0 \0A\09 vfmsubadd213ps $2, $1, $0 \0A\09 vfmsubadd231ps $2, $1, $0 \0A\09 vfmsubadd132ps $3, $1, $0 \0A\09 vfmsubadd213ps $3, $1, $0 \0A\09 vfmsubadd231ps $3, $1, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubaddps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubaddps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmsubaddps_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [10:1.00]
-; BDVER2-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmsubaddps_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [12:0.50]
-; HASWELL-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmsubaddps_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmsubaddps_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmsubaddps_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [12:0.50]
-; KNL-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmsubaddps_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [11:0.50]
-; SKX-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmsubaddps_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * ymm2) -/+ ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * ymm2) -/+ ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsubadd132ps {{.*#+}} ymm0 = (ymm0 * mem) -/+ ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsubadd213ps {{.*#+}} ymm0 = (ymm1 * ymm0) -/+ mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsubadd231ps {{.*#+}} ymm0 = (ymm1 * mem) -/+ ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmsubadd132ps $2, $1, $0 \0A\09 vfmsubadd213ps $2, $1, $0 \0A\09 vfmsubadd231ps $2, $1, $0 \0A\09 vfmsubadd132ps $3, $1, $0 \0A\09 vfmsubadd213ps $3, $1, $0 \0A\09 vfmsubadd231ps $3, $1, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-;
-; VFMSUB
-;
-
-define void @test_vfmsubpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmsubpd_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmsubpd_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [11:0.50]
-; HASWELL-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmsubpd_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmsubpd_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmsubpd_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [11:0.50]
-; KNL-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmsubpd_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; SKX-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmsubpd_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub132pd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub213pd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub231pd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmsub132pd $2, $1, $0 \0A\09 vfmsub213pd $2, $1, $0 \0A\09 vfmsub231pd $2, $1, $0 \0A\09 vfmsub132pd $3, $1, $0 \0A\09 vfmsub213pd $3, $1, $0 \0A\09 vfmsub231pd $3, $1, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmsubpd_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [10:1.00]
-; BDVER2-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmsubpd_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [12:0.50]
-; HASWELL-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmsubpd_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmsubpd_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmsubpd_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [12:0.50]
-; KNL-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmsubpd_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [11:0.50]
-; SKX-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmsubpd_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub132pd {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub213pd {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub231pd {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmsub132pd $2, $1, $0 \0A\09 vfmsub213pd $2, $1, $0 \0A\09 vfmsub231pd $2, $1, $0 \0A\09 vfmsub132pd $3, $1, $0 \0A\09 vfmsub213pd $3, $1, $0 \0A\09 vfmsub231pd $3, $1, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmsubps_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmsubps_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [11:0.50]
-; HASWELL-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmsubps_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmsubps_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmsubps_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [11:0.50]
-; KNL-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmsubps_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; SKX-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmsubps_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub132ps {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub213ps {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub231ps {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmsub132ps $2, $1, $0 \0A\09 vfmsub213ps $2, $1, $0 \0A\09 vfmsub231ps $2, $1, $0 \0A\09 vfmsub132ps $3, $1, $0 \0A\09 vfmsub213ps $3, $1, $0 \0A\09 vfmsub231ps $3, $1, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmsubps_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [10:1.00]
-; BDVER2-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmsubps_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [12:0.50]
-; HASWELL-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmsubps_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmsubps_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmsubps_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [12:0.50]
-; KNL-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmsubps_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [11:0.50]
-; SKX-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmsubps_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub132ps {{.*#+}} ymm0 = (ymm0 * mem) - ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub213ps {{.*#+}} ymm0 = (ymm1 * ymm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub231ps {{.*#+}} ymm0 = (ymm1 * mem) - ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmsub132ps $2, $1, $0 \0A\09 vfmsub213ps $2, $1, $0 \0A\09 vfmsub231ps $2, $1, $0 \0A\09 vfmsub132ps $3, $1, $0 \0A\09 vfmsub213ps $3, $1, $0 \0A\09 vfmsub231ps $3, $1, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubsd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubsd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmsubsd_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmsubsd_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; HASWELL-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; HASWELL-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmsubsd_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmsubsd_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [9:0.50]
-; SKYLAKE-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [9:0.50]
-; SKYLAKE-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [9:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmsubsd_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; KNL-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; KNL-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmsubsd_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [9:0.50]
-; SKX-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [9:0.50]
-; SKX-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [9:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmsubsd_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub132sd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub213sd {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub231sd {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmsub132sd $2, $1, $0 \0A\09 vfmsub213sd $2, $1, $0 \0A\09 vfmsub231sd $2, $1, $0 \0A\09 vfmsub132sd $3, $1, $0 \0A\09 vfmsub213sd $3, $1, $0 \0A\09 vfmsub231sd $3, $1, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubss_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubss_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfmsubss_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; BDVER2-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfmsubss_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; HASWELL-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; HASWELL-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfmsubss_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfmsubss_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [9:0.50]
-; SKYLAKE-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [9:0.50]
-; SKYLAKE-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [9:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfmsubss_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [10:0.50]
-; KNL-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [10:0.50]
-; KNL-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [10:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfmsubss_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [9:0.50]
-; SKX-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [9:0.50]
-; SKX-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [9:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfmsubss_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfmsub132ss {{.*#+}} xmm0 = (xmm0 * mem) - xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub213ss {{.*#+}} xmm0 = (xmm1 * xmm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfmsub231ss {{.*#+}} xmm0 = (xmm1 * mem) - xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfmsub132ss $2, $1, $0 \0A\09 vfmsub213ss $2, $1, $0 \0A\09 vfmsub231ss $2, $1, $0 \0A\09 vfmsub132ss $3, $1, $0 \0A\09 vfmsub213ss $3, $1, $0 \0A\09 vfmsub231ss $3, $1, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-;
-; VFNMADD
-;
-
-define void @test_vfnmaddpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmaddpd_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; BDVER2-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmaddpd_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [11:0.50]
-; HASWELL-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmaddpd_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmaddpd_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmaddpd_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [11:0.50]
-; KNL-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmaddpd_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; SKX-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmaddpd_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd132pd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd231pd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmadd132pd $2, $1, $0 \0A\09 vfnmadd213pd $2, $1, $0 \0A\09 vfnmadd231pd $2, $1, $0 \0A\09 vfnmadd132pd $3, $1, $0 \0A\09 vfnmadd213pd $3, $1, $0 \0A\09 vfnmadd231pd $3, $1, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmaddpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmaddpd_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [10:1.00]
-; BDVER2-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmaddpd_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [12:0.50]
-; HASWELL-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmaddpd_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmaddpd_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmaddpd_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [12:0.50]
-; KNL-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmaddpd_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [11:0.50]
-; SKX-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmaddpd_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd132pd {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd231pd {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmadd132pd $2, $1, $0 \0A\09 vfnmadd213pd $2, $1, $0 \0A\09 vfnmadd231pd $2, $1, $0 \0A\09 vfnmadd132pd $3, $1, $0 \0A\09 vfnmadd213pd $3, $1, $0 \0A\09 vfnmadd231pd $3, $1, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmaddps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmaddps_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; BDVER2-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmaddps_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [11:0.50]
-; HASWELL-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmaddps_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmaddps_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmaddps_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [11:0.50]
-; KNL-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmaddps_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; SKX-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmaddps_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd132ps {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd231ps {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmadd132ps $2, $1, $0 \0A\09 vfnmadd213ps $2, $1, $0 \0A\09 vfnmadd231ps $2, $1, $0 \0A\09 vfnmadd132ps $3, $1, $0 \0A\09 vfnmadd213ps $3, $1, $0 \0A\09 vfnmadd231ps $3, $1, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmaddps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmaddps_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [10:1.00]
-; BDVER2-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmaddps_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [12:0.50]
-; HASWELL-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmaddps_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmaddps_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmaddps_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [12:0.50]
-; KNL-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmaddps_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [11:0.50]
-; SKX-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmaddps_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) + ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) + ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd132ps {{.*#+}} ymm0 = -(ymm0 * mem) + ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd231ps {{.*#+}} ymm0 = -(ymm1 * mem) + ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmadd132ps $2, $1, $0 \0A\09 vfnmadd213ps $2, $1, $0 \0A\09 vfnmadd231ps $2, $1, $0 \0A\09 vfnmadd132ps $3, $1, $0 \0A\09 vfnmadd213ps $3, $1, $0 \0A\09 vfnmadd231ps $3, $1, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmaddsd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddsd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmaddsd_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; BDVER2-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmaddsd_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; HASWELL-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; HASWELL-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmaddsd_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmaddsd_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [9:0.50]
-; SKYLAKE-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [9:0.50]
-; SKYLAKE-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [9:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmaddsd_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; KNL-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; KNL-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmaddsd_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [9:0.50]
-; SKX-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [9:0.50]
-; SKX-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [9:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmaddsd_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd132sd {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd231sd {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmadd132sd $2, $1, $0 \0A\09 vfnmadd213sd $2, $1, $0 \0A\09 vfnmadd231sd $2, $1, $0 \0A\09 vfnmadd132sd $3, $1, $0 \0A\09 vfnmadd213sd $3, $1, $0 \0A\09 vfnmadd231sd $3, $1, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmaddss_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddss_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmaddss_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; BDVER2-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmaddss_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; HASWELL-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; HASWELL-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmaddss_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmaddss_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [9:0.50]
-; SKYLAKE-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [9:0.50]
-; SKYLAKE-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [9:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmaddss_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [10:0.50]
-; KNL-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [10:0.50]
-; KNL-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [10:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmaddss_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [9:0.50]
-; SKX-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [9:0.50]
-; SKX-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [9:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmaddss_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) + xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) + xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmadd132ss {{.*#+}} xmm0 = -(xmm0 * mem) + xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) + mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmadd231ss {{.*#+}} xmm0 = -(xmm1 * mem) + xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmadd132ss $2, $1, $0 \0A\09 vfnmadd213ss $2, $1, $0 \0A\09 vfnmadd231ss $2, $1, $0 \0A\09 vfnmadd132ss $3, $1, $0 \0A\09 vfnmadd213ss $3, $1, $0 \0A\09 vfnmadd231ss $3, $1, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-;
-; VFNMSUB
-;
-
-define void @test_vfnmsubpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmsubpd_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; BDVER2-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmsubpd_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [11:0.50]
-; HASWELL-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmsubpd_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmsubpd_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmsubpd_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [11:0.50]
-; KNL-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmsubpd_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; SKX-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmsubpd_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub132pd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub213pd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub231pd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmsub132pd $2, $1, $0 \0A\09 vfnmsub213pd $2, $1, $0 \0A\09 vfnmsub231pd $2, $1, $0 \0A\09 vfnmsub132pd $3, $1, $0 \0A\09 vfnmsub213pd $3, $1, $0 \0A\09 vfnmsub231pd $3, $1, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmsubpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmsubpd_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [10:1.00]
-; BDVER2-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmsubpd_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [12:0.50]
-; HASWELL-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmsubpd_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmsubpd_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmsubpd_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [12:0.50]
-; KNL-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmsubpd_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [11:0.50]
-; SKX-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmsubpd_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub132pd {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub213pd {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub231pd {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmsub132pd $2, $1, $0 \0A\09 vfnmsub213pd $2, $1, $0 \0A\09 vfnmsub231pd $2, $1, $0 \0A\09 vfnmsub132pd $3, $1, $0 \0A\09 vfnmsub213pd $3, $1, $0 \0A\09 vfnmsub231pd $3, $1, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmsubps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmsubps_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; BDVER2-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmsubps_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [11:0.50]
-; HASWELL-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [11:0.50]
-; HASWELL-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [11:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmsubps_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmsubps_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; SKYLAKE-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; SKYLAKE-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmsubps_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [11:0.50]
-; KNL-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [11:0.50]
-; KNL-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [11:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmsubps_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; SKX-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; SKX-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmsubps_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub132ps {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub213ps {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub231ps {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmsub132ps $2, $1, $0 \0A\09 vfnmsub213ps $2, $1, $0 \0A\09 vfnmsub231ps $2, $1, $0 \0A\09 vfnmsub132ps $3, $1, $0 \0A\09 vfnmsub213ps $3, $1, $0 \0A\09 vfnmsub231ps $3, $1, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmsubps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmsubps_256:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [10:1.00]
-; BDVER2-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [10:1.00]
-; BDVER2-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [10:1.00]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmsubps_256:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [12:0.50]
-; HASWELL-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [12:0.50]
-; HASWELL-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [12:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmsubps_256:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [11:0.50]
-; BROADWELL-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [11:0.50]
-; BROADWELL-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [11:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    vzeroupper # sched: [0:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmsubps_256:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [11:0.50]
-; SKYLAKE-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [11:0.50]
-; SKYLAKE-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [11:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    vzeroupper # sched: [0:0.67]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmsubps_256:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [12:0.50]
-; KNL-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [12:0.50]
-; KNL-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [12:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmsubps_256:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [11:0.50]
-; SKX-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [11:0.50]
-; SKX-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [11:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    vzeroupper # sched: [0:0.67]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmsubps_256:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * ymm2) - ymm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - ymm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * ymm2) - ymm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub132ps {{.*#+}} ymm0 = -(ymm0 * mem) - ymm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub213ps {{.*#+}} ymm0 = -(ymm1 * ymm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub231ps {{.*#+}} ymm0 = -(ymm1 * mem) - ymm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    vzeroupper # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmsub132ps $2, $1, $0 \0A\09 vfnmsub213ps $2, $1, $0 \0A\09 vfnmsub231ps $2, $1, $0 \0A\09 vfnmsub132ps $3, $1, $0 \0A\09 vfnmsub213ps $3, $1, $0 \0A\09 vfnmsub231ps $3, $1, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmsubsd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubsd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmsubsd_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; BDVER2-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmsubsd_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; HASWELL-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; HASWELL-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmsubsd_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmsubsd_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [9:0.50]
-; SKYLAKE-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [9:0.50]
-; SKYLAKE-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [9:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmsubsd_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; KNL-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; KNL-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmsubsd_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [9:0.50]
-; SKX-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [9:0.50]
-; SKX-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [9:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmsubsd_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub132sd {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub213sd {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub231sd {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmsub132sd $2, $1, $0 \0A\09 vfnmsub213sd $2, $1, $0 \0A\09 vfnmsub231sd $2, $1, $0 \0A\09 vfnmsub132sd $3, $1, $0 \0A\09 vfnmsub213sd $3, $1, $0 \0A\09 vfnmsub231sd $3, $1, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmsubss_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubss_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER2-LABEL: test_vfnmsubss_128:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    #APP
-; BDVER2-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BDVER2-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; BDVER2-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; BDVER2-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; BDVER2-NEXT:    #NO_APP
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; HASWELL-LABEL: test_vfnmsubss_128:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    #APP
-; HASWELL-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; HASWELL-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; HASWELL-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; HASWELL-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; HASWELL-NEXT:    #NO_APP
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_vfnmsubss_128:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; BROADWELL-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; BROADWELL-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; BROADWELL-NEXT:    #NO_APP
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_vfnmsubss_128:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKYLAKE-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [9:0.50]
-; SKYLAKE-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [9:0.50]
-; SKYLAKE-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [9:0.50]
-; SKYLAKE-NEXT:    #NO_APP
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_vfnmsubss_128:
-; KNL:       # %bb.0:
-; KNL-NEXT:    #APP
-; KNL-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; KNL-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [10:0.50]
-; KNL-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [10:0.50]
-; KNL-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [10:0.50]
-; KNL-NEXT:    #NO_APP
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_vfnmsubss_128:
-; SKX:       # %bb.0:
-; SKX-NEXT:    #APP
-; SKX-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [4:0.50]
-; SKX-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [9:0.50]
-; SKX-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [9:0.50]
-; SKX-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [9:0.50]
-; SKX-NEXT:    #NO_APP
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_vfnmsubss_128:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    #APP
-; ZNVER1-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * xmm2) - xmm1 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - xmm2 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * xmm2) - xmm0 sched: [5:0.50]
-; ZNVER1-NEXT:    vfnmsub132ss {{.*#+}} xmm0 = -(xmm0 * mem) - xmm1 sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub213ss {{.*#+}} xmm0 = -(xmm1 * xmm0) - mem sched: [12:0.50]
-; ZNVER1-NEXT:    vfnmsub231ss {{.*#+}} xmm0 = -(xmm1 * mem) - xmm0 sched: [12:0.50]
-; ZNVER1-NEXT:    #NO_APP
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void asm "vfnmsub132ss $2, $1, $0 \0A\09 vfnmsub213ss $2, $1, $0 \0A\09 vfnmsub231ss $2, $1, $0 \0A\09 vfnmsub132ss $3, $1, $0 \0A\09 vfnmsub213ss $3, $1, $0 \0A\09 vfnmsub231ss $3, $1, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}

Removed: llvm/trunk/test/CodeGen/X86/fma4-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fma4-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/fma4-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/fma4-schedule.ll (removed)
@@ -1,1058 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+fma4 | FileCheck %s --check-prefixes=CHECK,GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver1              | FileCheck %s --check-prefixes=CHECK,BDVER,BDVER12,BDVER1
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver2 -mattr=-fma  | FileCheck %s --check-prefixes=CHECK,BDVER,BDVER12,BDVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver3 -mattr=-fma  | FileCheck %s --check-prefixes=CHECK,BDVER,BDVER34,BDVER3
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver4 -mattr=-fma  | FileCheck %s --check-prefixes=CHECK,BDVER,BDVER34,BDVER4
-
-;
-; VFMADD
-;
-
-define void @test_vfmaddpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmaddpd_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmaddpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmaddpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmaddpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmaddpd_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmaddpd %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddpd (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddpd %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmaddpd $2, $1, $0, $0 \0A\09 vfmaddpd $3, $1, $0, $0 \0A\09 vfmaddpd $1, $3, $0, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmaddpd_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmaddpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmaddpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfmaddpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmaddpd_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmaddpd %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmaddpd (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmaddpd %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmaddpd $2, $1, $0, $0 \0A\09 vfmaddpd $3, $1, $0, $0 \0A\09 vfmaddpd $1, $3, $0, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmaddps_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmaddps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmaddps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmaddps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmaddps_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmaddps %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddps (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddps %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmaddps $2, $1, $0, $0 \0A\09 vfmaddps $3, $1, $0, $0 \0A\09 vfmaddps $1, $3, $0, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmaddps_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmaddps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmaddps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfmaddps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmaddps_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmaddps %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmaddps (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmaddps %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmaddps $2, $1, $0, $0 \0A\09 vfmaddps $3, $1, $0, $0 \0A\09 vfmaddps $1, $3, $0, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddsd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddsd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddsd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmaddsd_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmaddsd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmaddsd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmaddsd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmaddsd_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmaddsd %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddsd (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddsd %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmaddsd $2, $1, $0, $0 \0A\09 vfmaddsd $3, $1, $0, $0 \0A\09 vfmaddsd $1, $3, $0, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddss_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddss_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddss %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddss (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddss %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmaddss_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmaddss %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmaddss (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmaddss %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmaddss_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmaddss %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddss (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddss %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmaddss $2, $1, $0, $0 \0A\09 vfmaddss $3, $1, $0, $0 \0A\09 vfmaddss $1, $3, $0, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-;
-; VFMADDSUB
-;
-
-define void @test_vfmaddsubpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddsubpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddsubpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsubpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsubpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmaddsubpd_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmaddsubpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmaddsubpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmaddsubpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmaddsubpd_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmaddsubpd %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddsubpd (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddsubpd %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmaddsubpd $2, $1, $0, $0 \0A\09 vfmaddsubpd $3, $1, $0, $0 \0A\09 vfmaddsubpd $1, $3, $0, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddsubpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddsubpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddsubpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsubpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsubpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmaddsubpd_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmaddsubpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmaddsubpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfmaddsubpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmaddsubpd_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmaddsubpd %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmaddsubpd (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmaddsubpd %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmaddsubpd $2, $1, $0, $0 \0A\09 vfmaddsubpd $3, $1, $0, $0 \0A\09 vfmaddsubpd $1, $3, $0, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddsubps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddsubps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddsubps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsubps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsubps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmaddsubps_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmaddsubps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmaddsubps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmaddsubps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmaddsubps_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmaddsubps %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddsubps (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmaddsubps %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmaddsubps $2, $1, $0, $0 \0A\09 vfmaddsubps $3, $1, $0, $0 \0A\09 vfmaddsubps $1, $3, $0, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmaddsubps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmaddsubps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmaddsubps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmaddsubps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmaddsubps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmaddsubps_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmaddsubps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmaddsubps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfmaddsubps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmaddsubps_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmaddsubps %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmaddsubps (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmaddsubps %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmaddsubps $2, $1, $0, $0 \0A\09 vfmaddsubps $3, $1, $0, $0 \0A\09 vfmaddsubps $1, $3, $0, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-;
-; VFMSUBADD
-;
-
-define void @test_vfmsubaddpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubaddpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubaddpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubaddpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubaddpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmsubaddpd_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmsubaddpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmsubaddpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmsubaddpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmsubaddpd_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmsubaddpd %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubaddpd (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubaddpd %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmsubaddpd $2, $1, $0, $0 \0A\09 vfmsubaddpd $3, $1, $0, $0 \0A\09 vfmsubaddpd $1, $3, $0, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubaddpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubaddpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubaddpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubaddpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubaddpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmsubaddpd_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmsubaddpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmsubaddpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfmsubaddpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmsubaddpd_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmsubaddpd %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmsubaddpd (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmsubaddpd %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmsubaddpd $2, $1, $0, $0 \0A\09 vfmsubaddpd $3, $1, $0, $0 \0A\09 vfmsubaddpd $1, $3, $0, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubaddps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubaddps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubaddps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubaddps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubaddps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmsubaddps_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmsubaddps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmsubaddps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmsubaddps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmsubaddps_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmsubaddps %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubaddps (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubaddps %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmsubaddps $2, $1, $0, $0 \0A\09 vfmsubaddps $3, $1, $0, $0 \0A\09 vfmsubaddps $1, $3, $0, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubaddps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubaddps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubaddps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubaddps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubaddps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmsubaddps_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmsubaddps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmsubaddps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfmsubaddps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmsubaddps_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmsubaddps %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmsubaddps (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmsubaddps %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmsubaddps $2, $1, $0, $0 \0A\09 vfmsubaddps $3, $1, $0, $0 \0A\09 vfmsubaddps $1, $3, $0, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-;
-; VFMSUB
-;
-
-define void @test_vfmsubpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmsubpd_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmsubpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmsubpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmsubpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmsubpd_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmsubpd %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubpd (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubpd %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmsubpd $2, $1, $0, $0 \0A\09 vfmsubpd $3, $1, $0, $0 \0A\09 vfmsubpd $1, $3, $0, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmsubpd_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmsubpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmsubpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfmsubpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmsubpd_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmsubpd %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmsubpd (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmsubpd %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmsubpd $2, $1, $0, $0 \0A\09 vfmsubpd $3, $1, $0, $0 \0A\09 vfmsubpd $1, $3, $0, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmsubps_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmsubps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmsubps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmsubps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmsubps_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmsubps %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubps (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubps %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmsubps $2, $1, $0, $0 \0A\09 vfmsubps $3, $1, $0, $0 \0A\09 vfmsubps $1, $3, $0, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmsubps_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmsubps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmsubps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfmsubps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmsubps_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmsubps %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmsubps (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfmsubps %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmsubps $2, $1, $0, $0 \0A\09 vfmsubps $3, $1, $0, $0 \0A\09 vfmsubps $1, $3, $0, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubsd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubsd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubsd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubsd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubsd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmsubsd_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmsubsd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmsubsd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmsubsd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmsubsd_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmsubsd %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubsd (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubsd %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmsubsd $2, $1, $0, $0 \0A\09 vfmsubsd $3, $1, $0, $0 \0A\09 vfmsubsd $1, $3, $0, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfmsubss_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfmsubss_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfmsubss %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfmsubss (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfmsubss %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfmsubss_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfmsubss %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfmsubss (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfmsubss %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfmsubss_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfmsubss %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubss (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfmsubss %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfmsubss $2, $1, $0, $0 \0A\09 vfmsubss $3, $1, $0, $0 \0A\09 vfmsubss $1, $3, $0, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-;
-; VFNMADD
-;
-
-define void @test_vfnmaddpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmaddpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmaddpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmaddpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmaddpd_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmaddpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmaddpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfnmaddpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmaddpd_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmaddpd %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmaddpd (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmaddpd %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmaddpd $2, $1, $0, $0 \0A\09 vfnmaddpd $3, $1, $0, $0 \0A\09 vfnmaddpd $1, $3, $0, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmaddpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmaddpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmaddpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmaddpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmaddpd_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmaddpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmaddpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfnmaddpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmaddpd_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmaddpd %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfnmaddpd (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfnmaddpd %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmaddpd $2, $1, $0, $0 \0A\09 vfnmaddpd $3, $1, $0, $0 \0A\09 vfnmaddpd $1, $3, $0, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmaddps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmaddps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmaddps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmaddps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmaddps_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmaddps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmaddps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfnmaddps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmaddps_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmaddps %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmaddps (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmaddps %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmaddps $2, $1, $0, $0 \0A\09 vfnmaddps $3, $1, $0, $0 \0A\09 vfnmaddps $1, $3, $0, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmaddps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmaddps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmaddps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmaddps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmaddps_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmaddps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmaddps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfnmaddps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmaddps_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmaddps %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfnmaddps (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfnmaddps %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmaddps $2, $1, $0, $0 \0A\09 vfnmaddps $3, $1, $0, $0 \0A\09 vfnmaddps $1, $3, $0, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmaddsd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddsd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmaddsd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmaddsd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmaddsd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmaddsd_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmaddsd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmaddsd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfnmaddsd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmaddsd_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmaddsd %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmaddsd (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmaddsd %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmaddsd $2, $1, $0, $0 \0A\09 vfnmaddsd $3, $1, $0, $0 \0A\09 vfnmaddsd $1, $3, $0, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmaddss_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmaddss_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmaddss %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmaddss (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmaddss %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmaddss_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmaddss %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmaddss (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfnmaddss %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmaddss_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmaddss %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmaddss (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmaddss %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmaddss $2, $1, $0, $0 \0A\09 vfnmaddss $3, $1, $0, $0 \0A\09 vfnmaddss $1, $3, $0, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-;
-; VFNMSUB
-;
-
-define void @test_vfnmsubpd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubpd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsubpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsubpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsubpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmsubpd_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmsubpd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmsubpd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfnmsubpd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmsubpd_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmsubpd %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmsubpd (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmsubpd %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmsubpd $2, $1, $0, $0 \0A\09 vfnmsubpd $3, $1, $0, $0 \0A\09 vfnmsubpd $1, $3, $0, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmsubpd_256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubpd_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsubpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsubpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsubpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmsubpd_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmsubpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmsubpd (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfnmsubpd %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmsubpd_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmsubpd %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfnmsubpd (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfnmsubpd %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmsubpd $2, $1, $0, $0 \0A\09 vfnmsubpd $3, $1, $0, $0 \0A\09 vfnmsubpd $1, $3, $0, $0", "x,x,x,*m"(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, <4 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmsubps_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubps_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsubps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsubps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsubps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmsubps_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmsubps %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmsubps (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfnmsubps %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmsubps_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmsubps %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmsubps (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmsubps %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmsubps $2, $1, $0, $0 \0A\09 vfnmsubps $3, $1, $0, $0 \0A\09 vfnmsubps $1, $3, $0, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmsubps_256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubps_256:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsubps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsubps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsubps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    vzeroupper # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmsubps_256:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmsubps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmsubps (%rdi), %ymm1, %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    vfnmsubps %ymm1, (%rdi), %ymm0, %ymm0 # sched: [10:1.00]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    vzeroupper # sched: [46:4.00]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmsubps_256:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmsubps %ymm2, %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfnmsubps (%rdi), %ymm1, %ymm0, %ymm0
-; BDVER34-NEXT:    vfnmsubps %ymm1, (%rdi), %ymm0, %ymm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    vzeroupper
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmsubps $2, $1, $0, $0 \0A\09 vfnmsubps $3, $1, $0, $0 \0A\09 vfnmsubps $1, $3, $0, $0", "x,x,x,*m"(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, <8 x float> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmsubsd_128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubsd_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsubsd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsubsd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsubsd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmsubsd_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmsubsd %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmsubsd (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfnmsubsd %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmsubsd_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmsubsd %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmsubsd (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmsubsd %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmsubsd $2, $1, $0, $0 \0A\09 vfnmsubsd $3, $1, $0, $0 \0A\09 vfnmsubsd $1, $3, $0, $0", "x,x,x,*m"(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, <2 x double> *%a3) nounwind
-  ret void
-}
-
-define void @test_vfnmsubss_128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) optsize {
-; GENERIC-LABEL: test_vfnmsubss_128:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    #APP
-; GENERIC-NEXT:    vfnmsubss %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; GENERIC-NEXT:    vfnmsubss (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    vfnmsubss %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; GENERIC-NEXT:    #NO_APP
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_vfnmsubss_128:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    #APP
-; BDVER12-NEXT:    vfnmsubss %xmm2, %xmm1, %xmm0, %xmm0 # sched: [5:0.50]
-; BDVER12-NEXT:    vfnmsubss (%rdi), %xmm1, %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    vfnmsubss %xmm1, (%rdi), %xmm0, %xmm0 # sched: [10:0.50]
-; BDVER12-NEXT:    #NO_APP
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER34-LABEL: test_vfnmsubss_128:
-; BDVER34:       # %bb.0:
-; BDVER34-NEXT:    #APP
-; BDVER34-NEXT:    vfnmsubss %xmm2, %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmsubss (%rdi), %xmm1, %xmm0, %xmm0
-; BDVER34-NEXT:    vfnmsubss %xmm1, (%rdi), %xmm0, %xmm0
-; BDVER34-NEXT:    #NO_APP
-; BDVER34-NEXT:    retq
-  tail call void asm "vfnmsubss $2, $1, $0, $0 \0A\09 vfnmsubss $3, $1, $0, $0 \0A\09 vfnmsubss $1, $3, $0, $0", "x,x,x,*m"(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, <4 x float> *%a3) nounwind
-  ret void
-}

Removed: llvm/trunk/test/CodeGen/X86/fsgsbase-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fsgsbase-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/fsgsbase-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/fsgsbase-schedule.ll (removed)
@@ -1,411 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=fsgsbase | FileCheck %s --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=goldmont | FileCheck %s --check-prefix=GLM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=ivybridge | FileCheck %s --check-prefix=IVY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=SKX
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=knl     | FileCheck %s --check-prefix=KNL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver3 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER3
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver4 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER4
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=ZNVER1
-
-define i32 @test_x86_rdfsbase_32() {
-; GENERIC-LABEL: test_x86_rdfsbase_32:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    rdfsbasel %eax # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GLM-LABEL: test_x86_rdfsbase_32:
-; GLM:       # %bb.0:
-; GLM-NEXT:    rdfsbasel %eax # sched: [100:1.00]
-; GLM-NEXT:    retq # sched: [4:1.00]
-;
-; IVY-LABEL: test_x86_rdfsbase_32:
-; IVY:       # %bb.0:
-; IVY-NEXT:    rdfsbasel %eax # sched: [100:0.33]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_x86_rdfsbase_32:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    rdfsbasel %eax # sched: [100:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_x86_rdfsbase_32:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    rdfsbasel %eax # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_x86_rdfsbase_32:
-; SKX:       # %bb.0:
-; SKX-NEXT:    rdfsbasel %eax # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_x86_rdfsbase_32:
-; KNL:       # %bb.0:
-; KNL-NEXT:    rdfsbasel %eax # sched: [100:0.25]
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER-LABEL: test_x86_rdfsbase_32:
-; BDVER:       # %bb.0:
-; BDVER-NEXT:    rdfsbasel %eax
-; BDVER-NEXT:    retq
-;
-; ZNVER1-LABEL: test_x86_rdfsbase_32:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    rdfsbasel %eax # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %res = call i32 @llvm.x86.rdfsbase.32()
-  ret i32 %res
-}
-declare i32 @llvm.x86.rdfsbase.32() nounwind readnone
-
-define i32 @test_x86_rdgsbase_32() {
-; GENERIC-LABEL: test_x86_rdgsbase_32:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    rdgsbasel %eax # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GLM-LABEL: test_x86_rdgsbase_32:
-; GLM:       # %bb.0:
-; GLM-NEXT:    rdgsbasel %eax # sched: [100:1.00]
-; GLM-NEXT:    retq # sched: [4:1.00]
-;
-; IVY-LABEL: test_x86_rdgsbase_32:
-; IVY:       # %bb.0:
-; IVY-NEXT:    rdgsbasel %eax # sched: [100:0.33]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_x86_rdgsbase_32:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    rdgsbasel %eax # sched: [100:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_x86_rdgsbase_32:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    rdgsbasel %eax # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_x86_rdgsbase_32:
-; SKX:       # %bb.0:
-; SKX-NEXT:    rdgsbasel %eax # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_x86_rdgsbase_32:
-; KNL:       # %bb.0:
-; KNL-NEXT:    rdgsbasel %eax # sched: [100:0.25]
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER-LABEL: test_x86_rdgsbase_32:
-; BDVER:       # %bb.0:
-; BDVER-NEXT:    rdgsbasel %eax
-; BDVER-NEXT:    retq
-;
-; ZNVER1-LABEL: test_x86_rdgsbase_32:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    rdgsbasel %eax # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %res = call i32 @llvm.x86.rdgsbase.32()
-  ret i32 %res
-}
-declare i32 @llvm.x86.rdgsbase.32() nounwind readnone
-
-define i64 @test_x86_rdfsbase_64() {
-; GENERIC-LABEL: test_x86_rdfsbase_64:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    rdfsbaseq %rax # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GLM-LABEL: test_x86_rdfsbase_64:
-; GLM:       # %bb.0:
-; GLM-NEXT:    rdfsbaseq %rax # sched: [100:1.00]
-; GLM-NEXT:    retq # sched: [4:1.00]
-;
-; IVY-LABEL: test_x86_rdfsbase_64:
-; IVY:       # %bb.0:
-; IVY-NEXT:    rdfsbaseq %rax # sched: [100:0.33]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_x86_rdfsbase_64:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    rdfsbaseq %rax # sched: [100:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_x86_rdfsbase_64:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    rdfsbaseq %rax # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_x86_rdfsbase_64:
-; SKX:       # %bb.0:
-; SKX-NEXT:    rdfsbaseq %rax # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_x86_rdfsbase_64:
-; KNL:       # %bb.0:
-; KNL-NEXT:    rdfsbaseq %rax # sched: [100:0.25]
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER-LABEL: test_x86_rdfsbase_64:
-; BDVER:       # %bb.0:
-; BDVER-NEXT:    rdfsbaseq %rax
-; BDVER-NEXT:    retq
-;
-; ZNVER1-LABEL: test_x86_rdfsbase_64:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    rdfsbaseq %rax # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %res = call i64 @llvm.x86.rdfsbase.64()
-  ret i64 %res
-}
-declare i64 @llvm.x86.rdfsbase.64() nounwind readnone
-
-define i64 @test_x86_rdgsbase_64() {
-; GENERIC-LABEL: test_x86_rdgsbase_64:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    rdgsbaseq %rax # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GLM-LABEL: test_x86_rdgsbase_64:
-; GLM:       # %bb.0:
-; GLM-NEXT:    rdgsbaseq %rax # sched: [100:1.00]
-; GLM-NEXT:    retq # sched: [4:1.00]
-;
-; IVY-LABEL: test_x86_rdgsbase_64:
-; IVY:       # %bb.0:
-; IVY-NEXT:    rdgsbaseq %rax # sched: [100:0.33]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_x86_rdgsbase_64:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    rdgsbaseq %rax # sched: [100:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_x86_rdgsbase_64:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    rdgsbaseq %rax # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_x86_rdgsbase_64:
-; SKX:       # %bb.0:
-; SKX-NEXT:    rdgsbaseq %rax # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_x86_rdgsbase_64:
-; KNL:       # %bb.0:
-; KNL-NEXT:    rdgsbaseq %rax # sched: [100:0.25]
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER-LABEL: test_x86_rdgsbase_64:
-; BDVER:       # %bb.0:
-; BDVER-NEXT:    rdgsbaseq %rax
-; BDVER-NEXT:    retq
-;
-; ZNVER1-LABEL: test_x86_rdgsbase_64:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    rdgsbaseq %rax # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %res = call i64 @llvm.x86.rdgsbase.64()
-  ret i64 %res
-}
-declare i64 @llvm.x86.rdgsbase.64() nounwind readnone
-
-define void @test_x86_wrfsbase_32(i32 %x) {
-; GENERIC-LABEL: test_x86_wrfsbase_32:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    wrfsbasel %edi # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GLM-LABEL: test_x86_wrfsbase_32:
-; GLM:       # %bb.0:
-; GLM-NEXT:    wrfsbasel %edi # sched: [100:1.00]
-; GLM-NEXT:    retq # sched: [4:1.00]
-;
-; IVY-LABEL: test_x86_wrfsbase_32:
-; IVY:       # %bb.0:
-; IVY-NEXT:    wrfsbasel %edi # sched: [100:0.33]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_x86_wrfsbase_32:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    wrfsbasel %edi # sched: [100:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_x86_wrfsbase_32:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    wrfsbasel %edi # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_x86_wrfsbase_32:
-; SKX:       # %bb.0:
-; SKX-NEXT:    wrfsbasel %edi # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_x86_wrfsbase_32:
-; KNL:       # %bb.0:
-; KNL-NEXT:    wrfsbasel %edi # sched: [100:0.25]
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER-LABEL: test_x86_wrfsbase_32:
-; BDVER:       # %bb.0:
-; BDVER-NEXT:    wrfsbasel %edi
-; BDVER-NEXT:    retq
-;
-; ZNVER1-LABEL: test_x86_wrfsbase_32:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    wrfsbasel %edi # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  call void @llvm.x86.wrfsbase.32(i32 %x)
-  ret void
-}
-declare void @llvm.x86.wrfsbase.32(i32) nounwind readnone
-
-define void @test_x86_wrgsbase_32(i32 %x) {
-; GENERIC-LABEL: test_x86_wrgsbase_32:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    wrgsbasel %edi # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GLM-LABEL: test_x86_wrgsbase_32:
-; GLM:       # %bb.0:
-; GLM-NEXT:    wrgsbasel %edi # sched: [100:1.00]
-; GLM-NEXT:    retq # sched: [4:1.00]
-;
-; IVY-LABEL: test_x86_wrgsbase_32:
-; IVY:       # %bb.0:
-; IVY-NEXT:    wrgsbasel %edi # sched: [100:0.33]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_x86_wrgsbase_32:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    wrgsbasel %edi # sched: [100:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_x86_wrgsbase_32:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    wrgsbasel %edi # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_x86_wrgsbase_32:
-; SKX:       # %bb.0:
-; SKX-NEXT:    wrgsbasel %edi # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_x86_wrgsbase_32:
-; KNL:       # %bb.0:
-; KNL-NEXT:    wrgsbasel %edi # sched: [100:0.25]
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER-LABEL: test_x86_wrgsbase_32:
-; BDVER:       # %bb.0:
-; BDVER-NEXT:    wrgsbasel %edi
-; BDVER-NEXT:    retq
-;
-; ZNVER1-LABEL: test_x86_wrgsbase_32:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    wrgsbasel %edi # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  call void @llvm.x86.wrgsbase.32(i32 %x)
-  ret void
-}
-declare void @llvm.x86.wrgsbase.32(i32) nounwind readnone
-
-define void @test_x86_wrfsbase_64(i64 %x) {
-; GENERIC-LABEL: test_x86_wrfsbase_64:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    wrfsbaseq %rdi # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GLM-LABEL: test_x86_wrfsbase_64:
-; GLM:       # %bb.0:
-; GLM-NEXT:    wrfsbaseq %rdi # sched: [100:1.00]
-; GLM-NEXT:    retq # sched: [4:1.00]
-;
-; IVY-LABEL: test_x86_wrfsbase_64:
-; IVY:       # %bb.0:
-; IVY-NEXT:    wrfsbaseq %rdi # sched: [100:0.33]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_x86_wrfsbase_64:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    wrfsbaseq %rdi # sched: [100:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_x86_wrfsbase_64:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    wrfsbaseq %rdi # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_x86_wrfsbase_64:
-; SKX:       # %bb.0:
-; SKX-NEXT:    wrfsbaseq %rdi # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_x86_wrfsbase_64:
-; KNL:       # %bb.0:
-; KNL-NEXT:    wrfsbaseq %rdi # sched: [100:0.25]
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER-LABEL: test_x86_wrfsbase_64:
-; BDVER:       # %bb.0:
-; BDVER-NEXT:    wrfsbaseq %rdi
-; BDVER-NEXT:    retq
-;
-; ZNVER1-LABEL: test_x86_wrfsbase_64:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    wrfsbaseq %rdi # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  call void @llvm.x86.wrfsbase.64(i64 %x)
-  ret void
-}
-declare void @llvm.x86.wrfsbase.64(i64) nounwind readnone
-
-define void @test_x86_wrgsbase_64(i64 %x) {
-; GENERIC-LABEL: test_x86_wrgsbase_64:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    wrgsbaseq %rdi # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GLM-LABEL: test_x86_wrgsbase_64:
-; GLM:       # %bb.0:
-; GLM-NEXT:    wrgsbaseq %rdi # sched: [100:1.00]
-; GLM-NEXT:    retq # sched: [4:1.00]
-;
-; IVY-LABEL: test_x86_wrgsbase_64:
-; IVY:       # %bb.0:
-; IVY-NEXT:    wrgsbaseq %rdi # sched: [100:0.33]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_x86_wrgsbase_64:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    wrgsbaseq %rdi # sched: [100:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_x86_wrgsbase_64:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    wrgsbaseq %rdi # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_x86_wrgsbase_64:
-; SKX:       # %bb.0:
-; SKX-NEXT:    wrgsbaseq %rdi # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; KNL-LABEL: test_x86_wrgsbase_64:
-; KNL:       # %bb.0:
-; KNL-NEXT:    wrgsbaseq %rdi # sched: [100:0.25]
-; KNL-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER-LABEL: test_x86_wrgsbase_64:
-; BDVER:       # %bb.0:
-; BDVER-NEXT:    wrgsbaseq %rdi
-; BDVER-NEXT:    retq
-;
-; ZNVER1-LABEL: test_x86_wrgsbase_64:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    wrgsbaseq %rdi # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  call void @llvm.x86.wrgsbase.64(i64 %x)
-  ret void
-}
-declare void @llvm.x86.wrgsbase.64(i64) nounwind readnone

Removed: llvm/trunk/test/CodeGen/X86/lea32-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/lea32-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/lea32-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/lea32-schedule.ll (removed)
@@ -1,898 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64      | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=atom        | FileCheck %s --check-prefix=CHECK --check-prefix=ATOM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=slm         | FileCheck %s --check-prefix=CHECK --check-prefix=SLM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=sandybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=ivybridge   | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell     | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell   | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake     | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=knl         | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver2      | FileCheck %s --check-prefix=CHECK --check-prefix=BDVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=btver2      | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1      | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
-
-define i32 @test_lea_offset(i32) {
-; GENERIC-LABEL: test_lea_offset:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    # kill: def $edi killed $edi def $rdi
-; GENERIC-NEXT:    leal -24(%rdi), %eax # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_offset:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    # kill: def $edi killed $edi def $rdi
-; ATOM-NEXT:    leal -24(%rdi), %eax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_offset:
-; SLM:       # %bb.0:
-; SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NEXT:    leal -24(%rdi), %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_offset:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    # kill: def $edi killed $edi def $rdi
-; SANDY-NEXT:    leal -24(%rdi), %eax # sched: [1:0.50]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_offset:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; HASWELL-NEXT:    leal -24(%rdi), %eax # sched: [1:0.50]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_offset:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; BROADWELL-NEXT:    leal -24(%rdi), %eax # sched: [1:0.50]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_offset:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    # kill: def $edi killed $edi def $rdi
-; SKYLAKE-NEXT:    leal -24(%rdi), %eax # sched: [1:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_offset:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BDVER2-NEXT:    leal -24(%rdi), %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_offset:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT:    leal -24(%rdi), %eax # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_offset:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    # kill: def $edi killed $edi def $rdi
-; ZNVER1-NEXT:    leal -24(%rdi), %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %2 = add nsw i32 %0, -24
-  ret i32 %2
-}
-
-define i32 @test_lea_offset_big(i32) {
-; GENERIC-LABEL: test_lea_offset_big:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    # kill: def $edi killed $edi def $rdi
-; GENERIC-NEXT:    leal 1024(%rdi), %eax # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_offset_big:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    # kill: def $edi killed $edi def $rdi
-; ATOM-NEXT:    leal 1024(%rdi), %eax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_offset_big:
-; SLM:       # %bb.0:
-; SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NEXT:    leal 1024(%rdi), %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_offset_big:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    # kill: def $edi killed $edi def $rdi
-; SANDY-NEXT:    leal 1024(%rdi), %eax # sched: [1:0.50]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_offset_big:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; HASWELL-NEXT:    leal 1024(%rdi), %eax # sched: [1:0.50]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_offset_big:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; BROADWELL-NEXT:    leal 1024(%rdi), %eax # sched: [1:0.50]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_offset_big:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    # kill: def $edi killed $edi def $rdi
-; SKYLAKE-NEXT:    leal 1024(%rdi), %eax # sched: [1:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_offset_big:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BDVER2-NEXT:    leal 1024(%rdi), %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_offset_big:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT:    leal 1024(%rdi), %eax # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_offset_big:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    # kill: def $edi killed $edi def $rdi
-; ZNVER1-NEXT:    leal 1024(%rdi), %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %2 = add nsw i32 %0, 1024
-  ret i32 %2
-}
-
-; Function Attrs: norecurse nounwind readnone uwtable
-define i32 @test_lea_add(i32, i32) {
-; GENERIC-LABEL: test_lea_add:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    # kill: def $esi killed $esi def $rsi
-; GENERIC-NEXT:    # kill: def $edi killed $edi def $rdi
-; GENERIC-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    # kill: def $esi killed $esi def $rsi
-; ATOM-NEXT:    # kill: def $edi killed $edi def $rdi
-; ATOM-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add:
-; SLM:       # %bb.0:
-; SLM-NEXT:    # kill: def $esi killed $esi def $rsi
-; SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    # kill: def $esi killed $esi def $rsi
-; SANDY-NEXT:    # kill: def $edi killed $edi def $rdi
-; SANDY-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; HASWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; HASWELL-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; BROADWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; BROADWELL-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    # kill: def $esi killed $esi def $rsi
-; SKYLAKE-NEXT:    # kill: def $edi killed $edi def $rdi
-; SKYLAKE-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BDVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BDVER2-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BTVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    # kill: def $esi killed $esi def $rsi
-; ZNVER1-NEXT:    # kill: def $edi killed $edi def $rdi
-; ZNVER1-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = add nsw i32 %1, %0
-  ret i32 %3
-}
-
-define i32 @test_lea_add_offset(i32, i32) {
-; GENERIC-LABEL: test_lea_add_offset:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    # kill: def $esi killed $esi def $rsi
-; GENERIC-NEXT:    # kill: def $edi killed $edi def $rdi
-; GENERIC-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; GENERIC-NEXT:    addl $16, %eax # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add_offset:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    # kill: def $esi killed $esi def $rsi
-; ATOM-NEXT:    # kill: def $edi killed $edi def $rdi
-; ATOM-NEXT:    leal 16(%rdi,%rsi), %eax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add_offset:
-; SLM:       # %bb.0:
-; SLM-NEXT:    # kill: def $esi killed $esi def $rsi
-; SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NEXT:    leal 16(%rdi,%rsi), %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add_offset:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    # kill: def $esi killed $esi def $rsi
-; SANDY-NEXT:    # kill: def $edi killed $edi def $rdi
-; SANDY-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; SANDY-NEXT:    addl $16, %eax # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add_offset:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; HASWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; HASWELL-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; HASWELL-NEXT:    addl $16, %eax # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add_offset:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; BROADWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; BROADWELL-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; BROADWELL-NEXT:    addl $16, %eax # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add_offset:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    # kill: def $esi killed $esi def $rsi
-; SKYLAKE-NEXT:    # kill: def $edi killed $edi def $rdi
-; SKYLAKE-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addl $16, %eax # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add_offset:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BDVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BDVER2-NEXT:    leal 16(%rdi,%rsi), %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add_offset:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BTVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT:    leal 16(%rdi,%rsi), %eax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add_offset:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    # kill: def $esi killed $esi def $rsi
-; ZNVER1-NEXT:    # kill: def $edi killed $edi def $rdi
-; ZNVER1-NEXT:    leal 16(%rdi,%rsi), %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = add i32 %0, 16
-  %4 = add i32 %3, %1
-  ret i32 %4
-}
-
-define i32 @test_lea_add_offset_big(i32, i32) {
-; GENERIC-LABEL: test_lea_add_offset_big:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    # kill: def $esi killed $esi def $rsi
-; GENERIC-NEXT:    # kill: def $edi killed $edi def $rdi
-; GENERIC-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; GENERIC-NEXT:    addl $-4096, %eax # imm = 0xF000
-; GENERIC-NEXT:    # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add_offset_big:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    # kill: def $esi killed $esi def $rsi
-; ATOM-NEXT:    # kill: def $edi killed $edi def $rdi
-; ATOM-NEXT:    leal -4096(%rdi,%rsi), %eax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add_offset_big:
-; SLM:       # %bb.0:
-; SLM-NEXT:    # kill: def $esi killed $esi def $rsi
-; SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NEXT:    leal -4096(%rdi,%rsi), %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add_offset_big:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    # kill: def $esi killed $esi def $rsi
-; SANDY-NEXT:    # kill: def $edi killed $edi def $rdi
-; SANDY-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; SANDY-NEXT:    addl $-4096, %eax # imm = 0xF000
-; SANDY-NEXT:    # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add_offset_big:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; HASWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; HASWELL-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; HASWELL-NEXT:    addl $-4096, %eax # imm = 0xF000
-; HASWELL-NEXT:    # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add_offset_big:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; BROADWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; BROADWELL-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; BROADWELL-NEXT:    addl $-4096, %eax # imm = 0xF000
-; BROADWELL-NEXT:    # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add_offset_big:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    # kill: def $esi killed $esi def $rsi
-; SKYLAKE-NEXT:    # kill: def $edi killed $edi def $rdi
-; SKYLAKE-NEXT:    leal (%rdi,%rsi), %eax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addl $-4096, %eax # imm = 0xF000
-; SKYLAKE-NEXT:    # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add_offset_big:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BDVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BDVER2-NEXT:    leal -4096(%rdi,%rsi), %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add_offset_big:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BTVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT:    leal -4096(%rdi,%rsi), %eax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add_offset_big:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    # kill: def $esi killed $esi def $rsi
-; ZNVER1-NEXT:    # kill: def $edi killed $edi def $rdi
-; ZNVER1-NEXT:    leal -4096(%rdi,%rsi), %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = add i32 %0, -4096
-  %4 = add i32 %3, %1
-  ret i32 %4
-}
-
-define i32 @test_lea_mul(i32) {
-; GENERIC-LABEL: test_lea_mul:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    # kill: def $edi killed $edi def $rdi
-; GENERIC-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_mul:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    # kill: def $edi killed $edi def $rdi
-; ATOM-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_mul:
-; SLM:       # %bb.0:
-; SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_mul:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    # kill: def $edi killed $edi def $rdi
-; SANDY-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_mul:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; HASWELL-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_mul:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; BROADWELL-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_mul:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    # kill: def $edi killed $edi def $rdi
-; SKYLAKE-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_mul:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BDVER2-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_mul:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_mul:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    # kill: def $edi killed $edi def $rdi
-; ZNVER1-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %2 = mul nsw i32 %0, 3
-  ret i32 %2
-}
-
-define i32 @test_lea_mul_offset(i32) {
-; GENERIC-LABEL: test_lea_mul_offset:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    # kill: def $edi killed $edi def $rdi
-; GENERIC-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; GENERIC-NEXT:    addl $-32, %eax # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_mul_offset:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    # kill: def $edi killed $edi def $rdi
-; ATOM-NEXT:    leal -32(%rdi,%rdi,2), %eax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_mul_offset:
-; SLM:       # %bb.0:
-; SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NEXT:    leal -32(%rdi,%rdi,2), %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_mul_offset:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    # kill: def $edi killed $edi def $rdi
-; SANDY-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; SANDY-NEXT:    addl $-32, %eax # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_mul_offset:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; HASWELL-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; HASWELL-NEXT:    addl $-32, %eax # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_mul_offset:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; BROADWELL-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; BROADWELL-NEXT:    addl $-32, %eax # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_mul_offset:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    # kill: def $edi killed $edi def $rdi
-; SKYLAKE-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addl $-32, %eax # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_mul_offset:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BDVER2-NEXT:    leal -32(%rdi,%rdi,2), %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_mul_offset:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT:    leal -32(%rdi,%rdi,2), %eax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_mul_offset:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    # kill: def $edi killed $edi def $rdi
-; ZNVER1-NEXT:    leal -32(%rdi,%rdi,2), %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %2 = mul nsw i32 %0, 3
-  %3 = add nsw i32 %2, -32
-  ret i32 %3
-}
-
-define i32 @test_lea_mul_offset_big(i32) {
-; GENERIC-LABEL: test_lea_mul_offset_big:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    # kill: def $edi killed $edi def $rdi
-; GENERIC-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; GENERIC-NEXT:    addl $10000, %eax # imm = 0x2710
-; GENERIC-NEXT:    # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_mul_offset_big:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    # kill: def $edi killed $edi def $rdi
-; ATOM-NEXT:    leal 10000(%rdi,%rdi,8), %eax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_mul_offset_big:
-; SLM:       # %bb.0:
-; SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NEXT:    leal 10000(%rdi,%rdi,8), %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_mul_offset_big:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    # kill: def $edi killed $edi def $rdi
-; SANDY-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; SANDY-NEXT:    addl $10000, %eax # imm = 0x2710
-; SANDY-NEXT:    # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_mul_offset_big:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; HASWELL-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; HASWELL-NEXT:    addl $10000, %eax # imm = 0x2710
-; HASWELL-NEXT:    # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_mul_offset_big:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; BROADWELL-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; BROADWELL-NEXT:    addl $10000, %eax # imm = 0x2710
-; BROADWELL-NEXT:    # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_mul_offset_big:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    # kill: def $edi killed $edi def $rdi
-; SKYLAKE-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addl $10000, %eax # imm = 0x2710
-; SKYLAKE-NEXT:    # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_mul_offset_big:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BDVER2-NEXT:    leal 10000(%rdi,%rdi,8), %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_mul_offset_big:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT:    leal 10000(%rdi,%rdi,8), %eax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_mul_offset_big:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    # kill: def $edi killed $edi def $rdi
-; ZNVER1-NEXT:    leal 10000(%rdi,%rdi,8), %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %2 = mul nsw i32 %0, 9
-  %3 = add nsw i32 %2, 10000
-  ret i32 %3
-}
-
-define i32 @test_lea_add_scale(i32, i32) {
-; GENERIC-LABEL: test_lea_add_scale:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    # kill: def $esi killed $esi def $rsi
-; GENERIC-NEXT:    # kill: def $edi killed $edi def $rdi
-; GENERIC-NEXT:    leal (%rdi,%rsi,2), %eax # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add_scale:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    # kill: def $esi killed $esi def $rsi
-; ATOM-NEXT:    # kill: def $edi killed $edi def $rdi
-; ATOM-NEXT:    leal (%rdi,%rsi,2), %eax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add_scale:
-; SLM:       # %bb.0:
-; SLM-NEXT:    # kill: def $esi killed $esi def $rsi
-; SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NEXT:    leal (%rdi,%rsi,2), %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add_scale:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    # kill: def $esi killed $esi def $rsi
-; SANDY-NEXT:    # kill: def $edi killed $edi def $rdi
-; SANDY-NEXT:    leal (%rdi,%rsi,2), %eax # sched: [1:0.50]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add_scale:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; HASWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; HASWELL-NEXT:    leal (%rdi,%rsi,2), %eax # sched: [1:0.50]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add_scale:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; BROADWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; BROADWELL-NEXT:    leal (%rdi,%rsi,2), %eax # sched: [1:0.50]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add_scale:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    # kill: def $esi killed $esi def $rsi
-; SKYLAKE-NEXT:    # kill: def $edi killed $edi def $rdi
-; SKYLAKE-NEXT:    leal (%rdi,%rsi,2), %eax # sched: [1:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add_scale:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BDVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BDVER2-NEXT:    leal (%rdi,%rsi,2), %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add_scale:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BTVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT:    leal (%rdi,%rsi,2), %eax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add_scale:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    # kill: def $esi killed $esi def $rsi
-; ZNVER1-NEXT:    # kill: def $edi killed $edi def $rdi
-; ZNVER1-NEXT:    leal (%rdi,%rsi,2), %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = shl i32 %1, 1
-  %4 = add nsw i32 %3, %0
-  ret i32 %4
-}
-
-define i32 @test_lea_add_scale_offset(i32, i32) {
-; GENERIC-LABEL: test_lea_add_scale_offset:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    # kill: def $esi killed $esi def $rsi
-; GENERIC-NEXT:    # kill: def $edi killed $edi def $rdi
-; GENERIC-NEXT:    leal (%rdi,%rsi,4), %eax # sched: [1:0.50]
-; GENERIC-NEXT:    addl $96, %eax # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add_scale_offset:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    # kill: def $esi killed $esi def $rsi
-; ATOM-NEXT:    # kill: def $edi killed $edi def $rdi
-; ATOM-NEXT:    leal 96(%rdi,%rsi,4), %eax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add_scale_offset:
-; SLM:       # %bb.0:
-; SLM-NEXT:    # kill: def $esi killed $esi def $rsi
-; SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NEXT:    leal 96(%rdi,%rsi,4), %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add_scale_offset:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    # kill: def $esi killed $esi def $rsi
-; SANDY-NEXT:    # kill: def $edi killed $edi def $rdi
-; SANDY-NEXT:    leal (%rdi,%rsi,4), %eax # sched: [1:0.50]
-; SANDY-NEXT:    addl $96, %eax # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add_scale_offset:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; HASWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; HASWELL-NEXT:    leal (%rdi,%rsi,4), %eax # sched: [1:0.50]
-; HASWELL-NEXT:    addl $96, %eax # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add_scale_offset:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; BROADWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; BROADWELL-NEXT:    leal (%rdi,%rsi,4), %eax # sched: [1:0.50]
-; BROADWELL-NEXT:    addl $96, %eax # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add_scale_offset:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    # kill: def $esi killed $esi def $rsi
-; SKYLAKE-NEXT:    # kill: def $edi killed $edi def $rdi
-; SKYLAKE-NEXT:    leal (%rdi,%rsi,4), %eax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addl $96, %eax # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add_scale_offset:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BDVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BDVER2-NEXT:    leal 96(%rdi,%rsi,4), %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add_scale_offset:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BTVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT:    leal 96(%rdi,%rsi,4), %eax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add_scale_offset:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    # kill: def $esi killed $esi def $rsi
-; ZNVER1-NEXT:    # kill: def $edi killed $edi def $rdi
-; ZNVER1-NEXT:    leal 96(%rdi,%rsi,4), %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = shl i32 %1, 2
-  %4 = add i32 %0, 96
-  %5 = add i32 %4, %3
-  ret i32 %5
-}
-
-define i32 @test_lea_add_scale_offset_big(i32, i32) {
-; GENERIC-LABEL: test_lea_add_scale_offset_big:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    # kill: def $esi killed $esi def $rsi
-; GENERIC-NEXT:    # kill: def $edi killed $edi def $rdi
-; GENERIC-NEXT:    leal (%rdi,%rsi,8), %eax # sched: [1:0.50]
-; GENERIC-NEXT:    addl $-1200, %eax # imm = 0xFB50
-; GENERIC-NEXT:    # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add_scale_offset_big:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    # kill: def $esi killed $esi def $rsi
-; ATOM-NEXT:    # kill: def $edi killed $edi def $rdi
-; ATOM-NEXT:    leal -1200(%rdi,%rsi,8), %eax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add_scale_offset_big:
-; SLM:       # %bb.0:
-; SLM-NEXT:    # kill: def $esi killed $esi def $rsi
-; SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NEXT:    leal -1200(%rdi,%rsi,8), %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add_scale_offset_big:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    # kill: def $esi killed $esi def $rsi
-; SANDY-NEXT:    # kill: def $edi killed $edi def $rdi
-; SANDY-NEXT:    leal (%rdi,%rsi,8), %eax # sched: [1:0.50]
-; SANDY-NEXT:    addl $-1200, %eax # imm = 0xFB50
-; SANDY-NEXT:    # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add_scale_offset_big:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; HASWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; HASWELL-NEXT:    leal (%rdi,%rsi,8), %eax # sched: [1:0.50]
-; HASWELL-NEXT:    addl $-1200, %eax # imm = 0xFB50
-; HASWELL-NEXT:    # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add_scale_offset_big:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    # kill: def $esi killed $esi def $rsi
-; BROADWELL-NEXT:    # kill: def $edi killed $edi def $rdi
-; BROADWELL-NEXT:    leal (%rdi,%rsi,8), %eax # sched: [1:0.50]
-; BROADWELL-NEXT:    addl $-1200, %eax # imm = 0xFB50
-; BROADWELL-NEXT:    # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add_scale_offset_big:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    # kill: def $esi killed $esi def $rsi
-; SKYLAKE-NEXT:    # kill: def $edi killed $edi def $rdi
-; SKYLAKE-NEXT:    leal (%rdi,%rsi,8), %eax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addl $-1200, %eax # imm = 0xFB50
-; SKYLAKE-NEXT:    # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add_scale_offset_big:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BDVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BDVER2-NEXT:    leal -1200(%rdi,%rsi,8), %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add_scale_offset_big:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    # kill: def $esi killed $esi def $rsi
-; BTVER2-NEXT:    # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT:    leal -1200(%rdi,%rsi,8), %eax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add_scale_offset_big:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    # kill: def $esi killed $esi def $rsi
-; ZNVER1-NEXT:    # kill: def $edi killed $edi def $rdi
-; ZNVER1-NEXT:    leal -1200(%rdi,%rsi,8), %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = shl i32 %1, 3
-  %4 = add i32 %0, -1200
-  %5 = add i32 %4, %3
-  ret i32 %5
-}

Removed: llvm/trunk/test/CodeGen/X86/lea64-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/lea64-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/lea64-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/lea64-schedule.ll (removed)
@@ -1,728 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64      | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=atom        | FileCheck %s --check-prefix=CHECK --check-prefix=ATOM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=slm         | FileCheck %s --check-prefix=CHECK --check-prefix=SLM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=sandybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=ivybridge   | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell     | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell   | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake     | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=knl         | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver2      | FileCheck %s --check-prefix=CHECK --check-prefix=BDVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=btver2      | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1      | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
-
-define i64 @test_lea_offset(i64) {
-; GENERIC-LABEL: test_lea_offset:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    leaq -24(%rdi), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_offset:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    leaq -24(%rdi), %rax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_offset:
-; SLM:       # %bb.0:
-; SLM-NEXT:    leaq -24(%rdi), %rax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_offset:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    leaq -24(%rdi), %rax # sched: [1:0.50]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_offset:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    leaq -24(%rdi), %rax # sched: [1:0.50]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_offset:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    leaq -24(%rdi), %rax # sched: [1:0.50]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_offset:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    leaq -24(%rdi), %rax # sched: [1:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_offset:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    leaq -24(%rdi), %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_offset:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    leaq -24(%rdi), %rax # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_offset:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    leaq -24(%rdi), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %2 = add nsw i64 %0, -24
-  ret i64 %2
-}
-
-define i64 @test_lea_offset_big(i64) {
-; GENERIC-LABEL: test_lea_offset_big:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    leaq 1024(%rdi), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_offset_big:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    leaq 1024(%rdi), %rax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_offset_big:
-; SLM:       # %bb.0:
-; SLM-NEXT:    leaq 1024(%rdi), %rax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_offset_big:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    leaq 1024(%rdi), %rax # sched: [1:0.50]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_offset_big:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    leaq 1024(%rdi), %rax # sched: [1:0.50]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_offset_big:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    leaq 1024(%rdi), %rax # sched: [1:0.50]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_offset_big:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    leaq 1024(%rdi), %rax # sched: [1:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_offset_big:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    leaq 1024(%rdi), %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_offset_big:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    leaq 1024(%rdi), %rax # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_offset_big:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    leaq 1024(%rdi), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %2 = add nsw i64 %0, 1024
-  ret i64 %2
-}
-
-; Function Attrs: norecurse nounwind readnone uwtable
-define i64 @test_lea_add(i64, i64) {
-; GENERIC-LABEL: test_lea_add:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add:
-; SLM:       # %bb.0:
-; SLM-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = add nsw i64 %1, %0
-  ret i64 %3
-}
-
-define i64 @test_lea_add_offset(i64, i64) {
-; GENERIC-LABEL: test_lea_add_offset:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    addq $16, %rax # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add_offset:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    leaq 16(%rdi,%rsi), %rax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add_offset:
-; SLM:       # %bb.0:
-; SLM-NEXT:    leaq 16(%rdi,%rsi), %rax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add_offset:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; SANDY-NEXT:    addq $16, %rax # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add_offset:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; HASWELL-NEXT:    addq $16, %rax # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add_offset:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; BROADWELL-NEXT:    addq $16, %rax # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add_offset:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addq $16, %rax # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add_offset:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    leaq 16(%rdi,%rsi), %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add_offset:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    leaq 16(%rdi,%rsi), %rax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add_offset:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    leaq 16(%rdi,%rsi), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = add i64 %0, 16
-  %4 = add i64 %3, %1
-  ret i64 %4
-}
-
-define i64 @test_lea_add_offset_big(i64, i64) {
-; GENERIC-LABEL: test_lea_add_offset_big:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    addq $-4096, %rax # imm = 0xF000
-; GENERIC-NEXT:    # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add_offset_big:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    leaq -4096(%rdi,%rsi), %rax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add_offset_big:
-; SLM:       # %bb.0:
-; SLM-NEXT:    leaq -4096(%rdi,%rsi), %rax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add_offset_big:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; SANDY-NEXT:    addq $-4096, %rax # imm = 0xF000
-; SANDY-NEXT:    # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add_offset_big:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; HASWELL-NEXT:    addq $-4096, %rax # imm = 0xF000
-; HASWELL-NEXT:    # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add_offset_big:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; BROADWELL-NEXT:    addq $-4096, %rax # imm = 0xF000
-; BROADWELL-NEXT:    # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add_offset_big:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    leaq (%rdi,%rsi), %rax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addq $-4096, %rax # imm = 0xF000
-; SKYLAKE-NEXT:    # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add_offset_big:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    leaq -4096(%rdi,%rsi), %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add_offset_big:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    leaq -4096(%rdi,%rsi), %rax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add_offset_big:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    leaq -4096(%rdi,%rsi), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = add i64 %0, -4096
-  %4 = add i64 %3, %1
-  ret i64 %4
-}
-
-define i64 @test_lea_mul(i64) {
-; GENERIC-LABEL: test_lea_mul:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_mul:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_mul:
-; SLM:       # %bb.0:
-; SLM-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_mul:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_mul:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_mul:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_mul:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_mul:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_mul:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_mul:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %2 = mul nsw i64 %0, 3
-  ret i64 %2
-}
-
-define i64 @test_lea_mul_offset(i64) {
-; GENERIC-LABEL: test_lea_mul_offset:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    addq $-32, %rax # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_mul_offset:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    leaq -32(%rdi,%rdi,2), %rax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_mul_offset:
-; SLM:       # %bb.0:
-; SLM-NEXT:    leaq -32(%rdi,%rdi,2), %rax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_mul_offset:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; SANDY-NEXT:    addq $-32, %rax # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_mul_offset:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; HASWELL-NEXT:    addq $-32, %rax # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_mul_offset:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; BROADWELL-NEXT:    addq $-32, %rax # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_mul_offset:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addq $-32, %rax # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_mul_offset:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    leaq -32(%rdi,%rdi,2), %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_mul_offset:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    leaq -32(%rdi,%rdi,2), %rax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_mul_offset:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    leaq -32(%rdi,%rdi,2), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %2 = mul nsw i64 %0, 3
-  %3 = add nsw i64 %2, -32
-  ret i64 %3
-}
-
-define i64 @test_lea_mul_offset_big(i64) {
-; GENERIC-LABEL: test_lea_mul_offset_big:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    addq $10000, %rax # imm = 0x2710
-; GENERIC-NEXT:    # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_mul_offset_big:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    leaq 10000(%rdi,%rdi,8), %rax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_mul_offset_big:
-; SLM:       # %bb.0:
-; SLM-NEXT:    leaq 10000(%rdi,%rdi,8), %rax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_mul_offset_big:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; SANDY-NEXT:    addq $10000, %rax # imm = 0x2710
-; SANDY-NEXT:    # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_mul_offset_big:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; HASWELL-NEXT:    addq $10000, %rax # imm = 0x2710
-; HASWELL-NEXT:    # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_mul_offset_big:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; BROADWELL-NEXT:    addq $10000, %rax # imm = 0x2710
-; BROADWELL-NEXT:    # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_mul_offset_big:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addq $10000, %rax # imm = 0x2710
-; SKYLAKE-NEXT:    # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_mul_offset_big:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    leaq 10000(%rdi,%rdi,8), %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_mul_offset_big:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    leaq 10000(%rdi,%rdi,8), %rax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_mul_offset_big:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    leaq 10000(%rdi,%rdi,8), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %2 = mul nsw i64 %0, 9
-  %3 = add nsw i64 %2, 10000
-  ret i64 %3
-}
-
-define i64 @test_lea_add_scale(i64, i64) {
-; GENERIC-LABEL: test_lea_add_scale:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    leaq (%rdi,%rsi,2), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add_scale:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    leaq (%rdi,%rsi,2), %rax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add_scale:
-; SLM:       # %bb.0:
-; SLM-NEXT:    leaq (%rdi,%rsi,2), %rax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add_scale:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    leaq (%rdi,%rsi,2), %rax # sched: [1:0.50]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add_scale:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    leaq (%rdi,%rsi,2), %rax # sched: [1:0.50]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add_scale:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    leaq (%rdi,%rsi,2), %rax # sched: [1:0.50]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add_scale:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    leaq (%rdi,%rsi,2), %rax # sched: [1:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add_scale:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    leaq (%rdi,%rsi,2), %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add_scale:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    leaq (%rdi,%rsi,2), %rax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add_scale:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    leaq (%rdi,%rsi,2), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = shl i64 %1, 1
-  %4 = add nsw i64 %3, %0
-  ret i64 %4
-}
-
-define i64 @test_lea_add_scale_offset(i64, i64) {
-; GENERIC-LABEL: test_lea_add_scale_offset:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    leaq (%rdi,%rsi,4), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    addq $96, %rax # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add_scale_offset:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    leaq 96(%rdi,%rsi,4), %rax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add_scale_offset:
-; SLM:       # %bb.0:
-; SLM-NEXT:    leaq 96(%rdi,%rsi,4), %rax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add_scale_offset:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    leaq (%rdi,%rsi,4), %rax # sched: [1:0.50]
-; SANDY-NEXT:    addq $96, %rax # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add_scale_offset:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    leaq (%rdi,%rsi,4), %rax # sched: [1:0.50]
-; HASWELL-NEXT:    addq $96, %rax # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add_scale_offset:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    leaq (%rdi,%rsi,4), %rax # sched: [1:0.50]
-; BROADWELL-NEXT:    addq $96, %rax # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add_scale_offset:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    leaq (%rdi,%rsi,4), %rax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addq $96, %rax # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add_scale_offset:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    leaq 96(%rdi,%rsi,4), %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add_scale_offset:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    leaq 96(%rdi,%rsi,4), %rax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add_scale_offset:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    leaq 96(%rdi,%rsi,4), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = shl i64 %1, 2
-  %4 = add i64 %0, 96
-  %5 = add i64 %4, %3
-  ret i64 %5
-}
-
-define i64 @test_lea_add_scale_offset_big(i64, i64) {
-; GENERIC-LABEL: test_lea_add_scale_offset_big:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    leaq (%rdi,%rsi,8), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    addq $-1200, %rax # imm = 0xFB50
-; GENERIC-NEXT:    # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_lea_add_scale_offset_big:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    leaq -1200(%rdi,%rsi,8), %rax # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_lea_add_scale_offset_big:
-; SLM:       # %bb.0:
-; SLM-NEXT:    leaq -1200(%rdi,%rsi,8), %rax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_lea_add_scale_offset_big:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    leaq (%rdi,%rsi,8), %rax # sched: [1:0.50]
-; SANDY-NEXT:    addq $-1200, %rax # imm = 0xFB50
-; SANDY-NEXT:    # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_lea_add_scale_offset_big:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    leaq (%rdi,%rsi,8), %rax # sched: [1:0.50]
-; HASWELL-NEXT:    addq $-1200, %rax # imm = 0xFB50
-; HASWELL-NEXT:    # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_lea_add_scale_offset_big:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    leaq (%rdi,%rsi,8), %rax # sched: [1:0.50]
-; BROADWELL-NEXT:    addq $-1200, %rax # imm = 0xFB50
-; BROADWELL-NEXT:    # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_lea_add_scale_offset_big:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    leaq (%rdi,%rsi,8), %rax # sched: [1:0.50]
-; SKYLAKE-NEXT:    addq $-1200, %rax # imm = 0xFB50
-; SKYLAKE-NEXT:    # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_lea_add_scale_offset_big:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    leaq -1200(%rdi,%rsi,8), %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_lea_add_scale_offset_big:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    leaq -1200(%rdi,%rsi,8), %rax # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_lea_add_scale_offset_big:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    leaq -1200(%rdi,%rsi,8), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %3 = shl i64 %1, 3
-  %4 = add i64 %0, -1200
-  %5 = add i64 %4, %3
-  ret i64 %5
-}

Removed: llvm/trunk/test/CodeGen/X86/lwp-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/lwp-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/lwp-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/lwp-schedule.ll (removed)
@@ -1,299 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule -mcpu=x86-64 -mattr=+lwp | FileCheck %s --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule -mcpu=bdver1 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER12 --check-prefix=BDVER1
-; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule -mcpu=bdver2 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER12 --check-prefix=BDVER2
-; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule -mcpu=bdver3 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER3
-; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule -mcpu=bdver4 | FileCheck %s --check-prefix=BDVER --check-prefix=BDVER4
-
-define void @test_llwpcb(i8 *%a0) nounwind {
-; GENERIC-LABEL: test_llwpcb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    llwpcb %rdi # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_llwpcb:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    llwpcb %rdi # sched: [100:0.50]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER3-LABEL: test_llwpcb:
-; BDVER3:       # %bb.0:
-; BDVER3-NEXT:    llwpcb %rdi
-; BDVER3-NEXT:    retq
-;
-; BDVER4-LABEL: test_llwpcb:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    llwpcb %rdi
-; BDVER4-NEXT:    retq
-  tail call void @llvm.x86.llwpcb(i8 *%a0)
-  ret void
-}
-
-define i8* @test_slwpcb(i8 *%a0) nounwind {
-; GENERIC-LABEL: test_slwpcb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    slwpcb %rax # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_slwpcb:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    slwpcb %rax # sched: [100:0.50]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER3-LABEL: test_slwpcb:
-; BDVER3:       # %bb.0:
-; BDVER3-NEXT:    slwpcb %rax
-; BDVER3-NEXT:    retq
-;
-; BDVER4-LABEL: test_slwpcb:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    slwpcb %rax
-; BDVER4-NEXT:    retq
-  %1 = tail call i8* @llvm.x86.slwpcb()
-  ret i8 *%1
-}
-
-define i8 @test_lwpins32_rri(i32 %a0, i32 %a1) nounwind {
-; GENERIC-LABEL: test_lwpins32_rri:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    addl %esi, %esi # sched: [1:0.33]
-; GENERIC-NEXT:    lwpins $-1985229329, %esi, %edi # imm = 0x89ABCDEF
-; GENERIC-NEXT:    # sched: [100:0.33]
-; GENERIC-NEXT:    setb %al # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_lwpins32_rri:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    addl %esi, %esi # sched: [1:0.50]
-; BDVER12-NEXT:    lwpins $-1985229329, %esi, %edi # imm = 0x89ABCDEF
-; BDVER12-NEXT:    # sched: [100:0.50]
-; BDVER12-NEXT:    setb %al # sched: [1:0.50]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER3-LABEL: test_lwpins32_rri:
-; BDVER3:       # %bb.0:
-; BDVER3-NEXT:    addl %esi, %esi
-; BDVER3-NEXT:    lwpins $-1985229329, %esi, %edi # imm = 0x89ABCDEF
-; BDVER3-NEXT:    setb %al
-; BDVER3-NEXT:    retq
-;
-; BDVER4-LABEL: test_lwpins32_rri:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    addl %esi, %esi
-; BDVER4-NEXT:    lwpins $-1985229329, %esi, %edi # imm = 0x89ABCDEF
-; BDVER4-NEXT:    setb %al
-; BDVER4-NEXT:    retq
-  %1 = add i32 %a1, %a1
-  %2 = tail call i8 @llvm.x86.lwpins32(i32 %a0, i32 %1, i32 2309737967)
-  ret i8 %2
-}
-
-define i8 @test_lwpins32_rmi(i32 %a0, i32 *%p1) nounwind {
-; GENERIC-LABEL: test_lwpins32_rmi:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    lwpins $1985229328, (%rsi), %edi # imm = 0x76543210
-; GENERIC-NEXT:    # sched: [100:0.33]
-; GENERIC-NEXT:    setb %al # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_lwpins32_rmi:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    lwpins $1985229328, (%rsi), %edi # imm = 0x76543210
-; BDVER12-NEXT:    # sched: [100:0.50]
-; BDVER12-NEXT:    setb %al # sched: [1:0.50]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER3-LABEL: test_lwpins32_rmi:
-; BDVER3:       # %bb.0:
-; BDVER3-NEXT:    lwpins $1985229328, (%rsi), %edi # imm = 0x76543210
-; BDVER3-NEXT:    setb %al
-; BDVER3-NEXT:    retq
-;
-; BDVER4-LABEL: test_lwpins32_rmi:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    lwpins $1985229328, (%rsi), %edi # imm = 0x76543210
-; BDVER4-NEXT:    setb %al
-; BDVER4-NEXT:    retq
-  %a1 = load i32, i32 *%p1
-  %1 = tail call i8 @llvm.x86.lwpins32(i32 %a0, i32 %a1, i32 1985229328)
-  ret i8 %1
-}
-
-define i8 @test_lwpins64_rri(i64 %a0, i32 %a1) nounwind {
-; GENERIC-LABEL: test_lwpins64_rri:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    lwpins $-1985229329, %esi, %rdi # imm = 0x89ABCDEF
-; GENERIC-NEXT:    # sched: [100:0.33]
-; GENERIC-NEXT:    setb %al # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_lwpins64_rri:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    lwpins $-1985229329, %esi, %rdi # imm = 0x89ABCDEF
-; BDVER12-NEXT:    # sched: [100:0.50]
-; BDVER12-NEXT:    setb %al # sched: [1:0.50]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER3-LABEL: test_lwpins64_rri:
-; BDVER3:       # %bb.0:
-; BDVER3-NEXT:    lwpins $-1985229329, %esi, %rdi # imm = 0x89ABCDEF
-; BDVER3-NEXT:    setb %al
-; BDVER3-NEXT:    retq
-;
-; BDVER4-LABEL: test_lwpins64_rri:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    lwpins $-1985229329, %esi, %rdi # imm = 0x89ABCDEF
-; BDVER4-NEXT:    setb %al
-; BDVER4-NEXT:    retq
-  %1 = tail call i8 @llvm.x86.lwpins64(i64 %a0, i32 %a1, i32 2309737967)
-  ret i8 %1
-}
-
-define i8 @test_lwpins64_rmi(i64 %a0, i32 *%p1) nounwind {
-; GENERIC-LABEL: test_lwpins64_rmi:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    lwpins $1985229328, (%rsi), %rdi # imm = 0x76543210
-; GENERIC-NEXT:    # sched: [100:0.33]
-; GENERIC-NEXT:    setb %al # sched: [1:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_lwpins64_rmi:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    lwpins $1985229328, (%rsi), %rdi # imm = 0x76543210
-; BDVER12-NEXT:    # sched: [100:0.50]
-; BDVER12-NEXT:    setb %al # sched: [1:0.50]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER3-LABEL: test_lwpins64_rmi:
-; BDVER3:       # %bb.0:
-; BDVER3-NEXT:    lwpins $1985229328, (%rsi), %rdi # imm = 0x76543210
-; BDVER3-NEXT:    setb %al
-; BDVER3-NEXT:    retq
-;
-; BDVER4-LABEL: test_lwpins64_rmi:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    lwpins $1985229328, (%rsi), %rdi # imm = 0x76543210
-; BDVER4-NEXT:    setb %al
-; BDVER4-NEXT:    retq
-  %a1 = load i32, i32 *%p1
-  %1 = tail call i8 @llvm.x86.lwpins64(i64 %a0, i32 %a1, i32 1985229328)
-  ret i8 %1
-}
-
-define void @test_lwpval32_rri(i32 %a0, i32 %a1) nounwind {
-; GENERIC-LABEL: test_lwpval32_rri:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    addl %esi, %esi # sched: [1:0.33]
-; GENERIC-NEXT:    lwpval $-19088744, %esi, %edi # imm = 0xFEDCBA98
-; GENERIC-NEXT:    # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_lwpval32_rri:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    addl %esi, %esi # sched: [1:0.50]
-; BDVER12-NEXT:    lwpval $-19088744, %esi, %edi # imm = 0xFEDCBA98
-; BDVER12-NEXT:    # sched: [100:0.50]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER3-LABEL: test_lwpval32_rri:
-; BDVER3:       # %bb.0:
-; BDVER3-NEXT:    addl %esi, %esi
-; BDVER3-NEXT:    lwpval $-19088744, %esi, %edi # imm = 0xFEDCBA98
-; BDVER3-NEXT:    retq
-;
-; BDVER4-LABEL: test_lwpval32_rri:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    addl %esi, %esi
-; BDVER4-NEXT:    lwpval $-19088744, %esi, %edi # imm = 0xFEDCBA98
-; BDVER4-NEXT:    retq
-  %1 = add i32 %a1, %a1
-  tail call void @llvm.x86.lwpval32(i32 %a0, i32 %1, i32 4275878552)
-  ret void
-}
-
-define void @test_lwpval32_rmi(i32 %a0, i32 *%p1) nounwind {
-; GENERIC-LABEL: test_lwpval32_rmi:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    lwpval $305419896, (%rsi), %edi # imm = 0x12345678
-; GENERIC-NEXT:    # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_lwpval32_rmi:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    lwpval $305419896, (%rsi), %edi # imm = 0x12345678
-; BDVER12-NEXT:    # sched: [100:0.50]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER3-LABEL: test_lwpval32_rmi:
-; BDVER3:       # %bb.0:
-; BDVER3-NEXT:    lwpval $305419896, (%rsi), %edi # imm = 0x12345678
-; BDVER3-NEXT:    retq
-;
-; BDVER4-LABEL: test_lwpval32_rmi:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    lwpval $305419896, (%rsi), %edi # imm = 0x12345678
-; BDVER4-NEXT:    retq
-  %a1 = load i32, i32 *%p1
-  tail call void @llvm.x86.lwpval32(i32 %a0, i32 %a1, i32 305419896)
-  ret void
-}
-
-define void @test_lwpval64_rri(i64 %a0, i32 %a1) nounwind {
-; GENERIC-LABEL: test_lwpval64_rri:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    lwpval $-19088744, %esi, %rdi # imm = 0xFEDCBA98
-; GENERIC-NEXT:    # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_lwpval64_rri:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    lwpval $-19088744, %esi, %rdi # imm = 0xFEDCBA98
-; BDVER12-NEXT:    # sched: [100:0.50]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER3-LABEL: test_lwpval64_rri:
-; BDVER3:       # %bb.0:
-; BDVER3-NEXT:    lwpval $-19088744, %esi, %rdi # imm = 0xFEDCBA98
-; BDVER3-NEXT:    retq
-;
-; BDVER4-LABEL: test_lwpval64_rri:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    lwpval $-19088744, %esi, %rdi # imm = 0xFEDCBA98
-; BDVER4-NEXT:    retq
-  tail call void @llvm.x86.lwpval64(i64 %a0, i32 %a1, i32 4275878552)
-  ret void
-}
-
-define void @test_lwpval64_rmi(i64 %a0, i32 *%p1) nounwind {
-; GENERIC-LABEL: test_lwpval64_rmi:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    lwpval $305419896, (%rsi), %rdi # imm = 0x12345678
-; GENERIC-NEXT:    # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER12-LABEL: test_lwpval64_rmi:
-; BDVER12:       # %bb.0:
-; BDVER12-NEXT:    lwpval $305419896, (%rsi), %rdi # imm = 0x12345678
-; BDVER12-NEXT:    # sched: [100:0.50]
-; BDVER12-NEXT:    retq # sched: [5:1.00]
-;
-; BDVER3-LABEL: test_lwpval64_rmi:
-; BDVER3:       # %bb.0:
-; BDVER3-NEXT:    lwpval $305419896, (%rsi), %rdi # imm = 0x12345678
-; BDVER3-NEXT:    retq
-;
-; BDVER4-LABEL: test_lwpval64_rmi:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    lwpval $305419896, (%rsi), %rdi # imm = 0x12345678
-; BDVER4-NEXT:    retq
-  %a1 = load i32, i32 *%p1
-  tail call void @llvm.x86.lwpval64(i64 %a0, i32 %a1, i32 305419896)
-  ret void
-}
-
-declare void @llvm.x86.llwpcb(i8*) nounwind
-declare i8* @llvm.x86.slwpcb() nounwind
-declare i8 @llvm.x86.lwpins32(i32, i32, i32) nounwind
-declare i8 @llvm.x86.lwpins64(i64, i32, i32) nounwind
-declare void @llvm.x86.lwpval32(i32, i32, i32) nounwind
-declare void @llvm.x86.lwpval64(i64, i32, i32) nounwind

Removed: llvm/trunk/test/CodeGen/X86/lzcnt-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/lzcnt-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/lzcnt-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/lzcnt-schedule.ll (removed)
@@ -1,187 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+lzcnt | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell   | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake   | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=knl       | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver2    | FileCheck %s --check-prefix=CHECK --check-prefix=BDVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=btver2    | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1    | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
-
-define i16 @test_ctlz_i16(i16 zeroext %a0, i16 *%a1) {
-; GENERIC-LABEL: test_ctlz_i16:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    lzcntw (%rsi), %cx # sched: [8:1.00]
-; GENERIC-NEXT:    lzcntw %di, %ax # sched: [3:1.00]
-; GENERIC-NEXT:    orl %ecx, %eax # sched: [1:0.33]
-; GENERIC-NEXT:    # kill: def $ax killed $ax killed $eax
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_ctlz_i16:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    lzcntw (%rsi), %cx # sched: [8:1.00]
-; HASWELL-NEXT:    lzcntw %di, %ax # sched: [3:1.00]
-; HASWELL-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; HASWELL-NEXT:    # kill: def $ax killed $ax killed $eax
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_ctlz_i16:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    lzcntw (%rsi), %cx # sched: [8:1.00]
-; BROADWELL-NEXT:    lzcntw %di, %ax # sched: [3:1.00]
-; BROADWELL-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; BROADWELL-NEXT:    # kill: def $ax killed $ax killed $eax
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_ctlz_i16:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    lzcntw (%rsi), %cx # sched: [8:1.00]
-; SKYLAKE-NEXT:    lzcntw %di, %ax # sched: [3:1.00]
-; SKYLAKE-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; SKYLAKE-NEXT:    # kill: def $ax killed $ax killed $eax
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_ctlz_i16:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    lzcntw (%rsi), %cx # sched: [6:0.50]
-; BDVER2-NEXT:    lzcntw %di, %ax # sched: [2:0.50]
-; BDVER2-NEXT:    orl %ecx, %eax # sched: [1:0.50]
-; BDVER2-NEXT:    # kill: def $ax killed $ax killed $eax
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_ctlz_i16:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    lzcntw (%rsi), %cx # sched: [4:1.00]
-; BTVER2-NEXT:    lzcntw %di, %ax # sched: [1:0.50]
-; BTVER2-NEXT:    orl %ecx, %eax # sched: [1:0.50]
-; BTVER2-NEXT:    # kill: def $ax killed $ax killed $eax
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_ctlz_i16:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    lzcntw (%rsi), %cx # sched: [6:0.50]
-; ZNVER1-NEXT:    lzcntw %di, %ax # sched: [2:0.25]
-; ZNVER1-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    # kill: def $ax killed $ax killed $eax
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load i16, i16 *%a1
-  %2 = tail call i16 @llvm.ctlz.i16( i16 %1, i1 false )
-  %3 = tail call i16 @llvm.ctlz.i16( i16 %a0, i1 false )
-  %4 = or i16 %2, %3
-  ret i16 %4
-}
-declare i16 @llvm.ctlz.i16(i16, i1)
-
-define i32 @test_ctlz_i32(i32 %a0, i32 *%a1) {
-; GENERIC-LABEL: test_ctlz_i32:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    lzcntl (%rsi), %ecx # sched: [8:1.00]
-; GENERIC-NEXT:    lzcntl %edi, %eax # sched: [3:1.00]
-; GENERIC-NEXT:    orl %ecx, %eax # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_ctlz_i32:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    lzcntl (%rsi), %ecx # sched: [8:1.00]
-; HASWELL-NEXT:    lzcntl %edi, %eax # sched: [3:1.00]
-; HASWELL-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_ctlz_i32:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    lzcntl (%rsi), %ecx # sched: [8:1.00]
-; BROADWELL-NEXT:    lzcntl %edi, %eax # sched: [3:1.00]
-; BROADWELL-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_ctlz_i32:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    lzcntl (%rsi), %ecx # sched: [8:1.00]
-; SKYLAKE-NEXT:    lzcntl %edi, %eax # sched: [3:1.00]
-; SKYLAKE-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_ctlz_i32:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    lzcntl (%rsi), %ecx # sched: [6:0.50]
-; BDVER2-NEXT:    lzcntl %edi, %eax # sched: [2:0.50]
-; BDVER2-NEXT:    orl %ecx, %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_ctlz_i32:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    lzcntl (%rsi), %ecx # sched: [4:1.00]
-; BTVER2-NEXT:    lzcntl %edi, %eax # sched: [1:0.50]
-; BTVER2-NEXT:    orl %ecx, %eax # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_ctlz_i32:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    lzcntl (%rsi), %ecx # sched: [6:0.50]
-; ZNVER1-NEXT:    lzcntl %edi, %eax # sched: [2:0.25]
-; ZNVER1-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load i32, i32 *%a1
-  %2 = tail call i32 @llvm.ctlz.i32( i32 %1, i1 false )
-  %3 = tail call i32 @llvm.ctlz.i32( i32 %a0, i1 false )
-  %4 = or i32 %2, %3
-  ret i32 %4
-}
-declare i32 @llvm.ctlz.i32(i32, i1)
-
-define i64 @test_ctlz_i64(i64 %a0, i64 *%a1) {
-; GENERIC-LABEL: test_ctlz_i64:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    lzcntq (%rsi), %rcx # sched: [8:1.00]
-; GENERIC-NEXT:    lzcntq %rdi, %rax # sched: [3:1.00]
-; GENERIC-NEXT:    orq %rcx, %rax # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_ctlz_i64:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    lzcntq (%rsi), %rcx # sched: [8:1.00]
-; HASWELL-NEXT:    lzcntq %rdi, %rax # sched: [3:1.00]
-; HASWELL-NEXT:    orq %rcx, %rax # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_ctlz_i64:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    lzcntq (%rsi), %rcx # sched: [8:1.00]
-; BROADWELL-NEXT:    lzcntq %rdi, %rax # sched: [3:1.00]
-; BROADWELL-NEXT:    orq %rcx, %rax # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_ctlz_i64:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    lzcntq (%rsi), %rcx # sched: [8:1.00]
-; SKYLAKE-NEXT:    lzcntq %rdi, %rax # sched: [3:1.00]
-; SKYLAKE-NEXT:    orq %rcx, %rax # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_ctlz_i64:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    lzcntq (%rsi), %rcx # sched: [6:0.50]
-; BDVER2-NEXT:    lzcntq %rdi, %rax # sched: [2:0.50]
-; BDVER2-NEXT:    orq %rcx, %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_ctlz_i64:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    lzcntq (%rsi), %rcx # sched: [4:1.00]
-; BTVER2-NEXT:    lzcntq %rdi, %rax # sched: [1:0.50]
-; BTVER2-NEXT:    orq %rcx, %rax # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_ctlz_i64:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    lzcntq (%rsi), %rcx # sched: [6:0.50]
-; ZNVER1-NEXT:    lzcntq %rdi, %rax # sched: [2:0.25]
-; ZNVER1-NEXT:    orq %rcx, %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load i64, i64 *%a1
-  %2 = tail call i64 @llvm.ctlz.i64( i64 %1, i1 false )
-  %3 = tail call i64 @llvm.ctlz.i64( i64 %a0, i1 false )
-  %4 = or i64 %2, %3
-  ret i64 %4
-}
-declare i64 @llvm.ctlz.i64(i64, i1)

Removed: llvm/trunk/test/CodeGen/X86/mmx-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/mmx-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/mmx-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/mmx-schedule.ll (removed)
@@ -1,7559 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+ssse3 | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=atom | FileCheck %s --check-prefix=CHECK --check-prefix=ATOM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=slm | FileCheck %s --check-prefix=CHECK --check-prefix=SLM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=sandybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=ivybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BDVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=btver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
-
-define i64 @test_cvtpd2pi(<2 x double> %a0, <2 x double>* %a1) optsize {
-; GENERIC-LABEL: test_cvtpd2pi:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    cvtpd2pi (%rdi), %mm0 # sched: [10:1.00]
-; GENERIC-NEXT:    cvtpd2pi %xmm0, %mm1 # sched: [4:1.00]
-; GENERIC-NEXT:    por %mm1, %mm0 # sched: [1:0.33]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_cvtpd2pi:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    cvtpd2pi (%rdi), %mm0 # sched: [8:4.00]
-; ATOM-NEXT:    cvtpd2pi %xmm0, %mm1 # sched: [7:3.50]
-; ATOM-NEXT:    por %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_cvtpd2pi:
-; SLM:       # %bb.0:
-; SLM-NEXT:    cvtpd2pi (%rdi), %mm1 # sched: [7:1.00]
-; SLM-NEXT:    cvtpd2pi %xmm0, %mm0 # sched: [4:0.50]
-; SLM-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SLM-NEXT:    movq %mm1, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_cvtpd2pi:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    cvtpd2pi (%rdi), %mm0 # sched: [10:1.00]
-; SANDY-NEXT:    cvtpd2pi %xmm0, %mm1 # sched: [4:1.00]
-; SANDY-NEXT:    por %mm1, %mm0 # sched: [1:0.33]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_cvtpd2pi:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    cvtpd2pi (%rdi), %mm0 # sched: [10:1.00]
-; HASWELL-NEXT:    cvtpd2pi %xmm0, %mm1 # sched: [4:1.00]
-; HASWELL-NEXT:    por %mm1, %mm0 # sched: [1:0.33]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_cvtpd2pi:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    cvtpd2pi %xmm0, %mm0 # sched: [4:1.00]
-; BROADWELL-NEXT:    cvtpd2pi (%rdi), %mm1 # sched: [9:1.00]
-; BROADWELL-NEXT:    por %mm0, %mm1 # sched: [1:0.33]
-; BROADWELL-NEXT:    movq %mm1, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_cvtpd2pi:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    cvtpd2pi %xmm0, %mm0 # sched: [5:1.00]
-; SKYLAKE-NEXT:    cvtpd2pi (%rdi), %mm1 # sched: [11:1.00]
-; SKYLAKE-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SKYLAKE-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_cvtpd2pi:
-; SKX:       # %bb.0:
-; SKX-NEXT:    cvtpd2pi %xmm0, %mm0 # sched: [5:1.00]
-; SKX-NEXT:    cvtpd2pi (%rdi), %mm1 # sched: [11:1.00]
-; SKX-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SKX-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_cvtpd2pi:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    cvtpd2pi (%rdi), %mm1 # sched: [13:1.00]
-; BDVER2-NEXT:    cvtpd2pi %xmm0, %mm0 # sched: [6:1.00]
-; BDVER2-NEXT:    por %mm0, %mm1 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm1, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_cvtpd2pi:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    cvtpd2pi (%rdi), %mm1 # sched: [8:1.00]
-; BTVER2-NEXT:    cvtpd2pi %xmm0, %mm0 # sched: [3:1.00]
-; BTVER2-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm1, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_cvtpd2pi:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    cvtpd2pi (%rdi), %mm1 # sched: [12:1.00]
-; ZNVER1-NEXT:    cvtpd2pi %xmm0, %mm0 # sched: [4:1.00]
-; ZNVER1-NEXT:    por %mm0, %mm1 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.sse.cvtpd2pi(<2 x double> %a0)
-  %2 = load <2 x double>, <2 x double> *%a1, align 16
-  %3 = call x86_mmx @llvm.x86.sse.cvtpd2pi(<2 x double> %2)
-  %4 = call x86_mmx @llvm.x86.mmx.por(x86_mmx %1, x86_mmx %3)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.sse.cvtpd2pi(<2 x double>) nounwind readnone
-
-define <2 x double> @test_cvtpi2pd(x86_mmx %a0, x86_mmx* %a1) optsize {
-; GENERIC-LABEL: test_cvtpi2pd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    cvtpi2pd %mm0, %xmm1 # sched: [4:1.00]
-; GENERIC-NEXT:    cvtpi2pd (%rdi), %xmm0 # sched: [10:1.00]
-; GENERIC-NEXT:    addpd %xmm1, %xmm0 # sched: [3:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_cvtpi2pd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    cvtpi2pd (%rdi), %xmm0 # sched: [8:4.00]
-; ATOM-NEXT:    cvtpi2pd %mm0, %xmm1 # sched: [7:3.50]
-; ATOM-NEXT:    addpd %xmm1, %xmm0 # sched: [6:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_cvtpi2pd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    cvtpi2pd (%rdi), %xmm0 # sched: [7:1.00]
-; SLM-NEXT:    cvtpi2pd %mm0, %xmm1 # sched: [4:0.50]
-; SLM-NEXT:    addpd %xmm1, %xmm0 # sched: [3:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_cvtpi2pd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    cvtpi2pd %mm0, %xmm0 # sched: [4:1.00]
-; SANDY-NEXT:    cvtpi2pd (%rdi), %xmm1 # sched: [10:1.00]
-; SANDY-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # sched: [3:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_cvtpi2pd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    cvtpi2pd %mm0, %xmm0 # sched: [4:1.00]
-; HASWELL-NEXT:    cvtpi2pd (%rdi), %xmm1 # sched: [9:1.00]
-; HASWELL-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # sched: [3:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_cvtpi2pd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    cvtpi2pd (%rdi), %xmm0 # sched: [9:1.00]
-; BROADWELL-NEXT:    cvtpi2pd %mm0, %xmm1 # sched: [4:1.00]
-; BROADWELL-NEXT:    vaddpd %xmm0, %xmm1, %xmm0 # sched: [3:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_cvtpi2pd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    cvtpi2pd %mm0, %xmm0 # sched: [5:1.00]
-; SKYLAKE-NEXT:    cvtpi2pd (%rdi), %xmm1 # sched: [10:1.00]
-; SKYLAKE-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # sched: [4:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_cvtpi2pd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    cvtpi2pd %mm0, %xmm0 # sched: [4:0.50]
-; SKX-NEXT:    cvtpi2pd (%rdi), %xmm1 # sched: [9:0.50]
-; SKX-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # sched: [4:0.50]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_cvtpi2pd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    cvtpi2pd (%rdi), %xmm1 # sched: [13:1.00]
-; BDVER2-NEXT:    cvtpi2pd %mm0, %xmm0 # sched: [6:1.00]
-; BDVER2-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_cvtpi2pd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    cvtpi2pd (%rdi), %xmm1 # sched: [8:1.00]
-; BTVER2-NEXT:    cvtpi2pd %mm0, %xmm0 # sched: [3:1.00]
-; BTVER2-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # sched: [3:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_cvtpi2pd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    cvtpi2pd (%rdi), %xmm1 # sched: [12:1.00]
-; ZNVER1-NEXT:    cvtpi2pd %mm0, %xmm0 # sched: [3:1.00]
-; ZNVER1-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # sched: [3:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call <2 x double> @llvm.x86.sse.cvtpi2pd(x86_mmx %a0)
-  %2 = load x86_mmx, x86_mmx *%a1, align 8
-  %3 = call <2 x double> @llvm.x86.sse.cvtpi2pd(x86_mmx %2)
-  %4 = fadd <2 x double> %1, %3
-  ret <2 x double> %4
-}
-declare <2 x double> @llvm.x86.sse.cvtpi2pd(x86_mmx) nounwind readnone
-
-define <4 x float> @test_cvtpi2ps(x86_mmx %a0, x86_mmx* %a1, <4 x float> %a2, <4 x float> %a3) optsize {
-; GENERIC-LABEL: test_cvtpi2ps:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [3:1.00]
-; GENERIC-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [9:1.00]
-; GENERIC-NEXT:    addps %xmm1, %xmm0 # sched: [3:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_cvtpi2ps:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [5:5.00]
-; ATOM-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [5:5.00]
-; ATOM-NEXT:    addps %xmm1, %xmm0 # sched: [5:5.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_cvtpi2ps:
-; SLM:       # %bb.0:
-; SLM-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [7:1.00]
-; SLM-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [4:0.50]
-; SLM-NEXT:    addps %xmm1, %xmm0 # sched: [3:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_cvtpi2ps:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [3:1.00]
-; SANDY-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [9:1.00]
-; SANDY-NEXT:    vaddps %xmm1, %xmm0, %xmm0 # sched: [3:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_cvtpi2ps:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [3:1.00]
-; HASWELL-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [8:1.00]
-; HASWELL-NEXT:    vaddps %xmm1, %xmm0, %xmm0 # sched: [3:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_cvtpi2ps:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [3:1.00]
-; BROADWELL-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [8:1.00]
-; BROADWELL-NEXT:    vaddps %xmm1, %xmm0, %xmm0 # sched: [3:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_cvtpi2ps:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [6:2.00]
-; SKYLAKE-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [9:1.00]
-; SKYLAKE-NEXT:    vaddps %xmm1, %xmm0, %xmm0 # sched: [4:0.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_cvtpi2ps:
-; SKX:       # %bb.0:
-; SKX-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [6:2.00]
-; SKX-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [9:1.00]
-; SKX-NEXT:    vaddps %xmm1, %xmm0, %xmm0 # sched: [4:0.50]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_cvtpi2ps:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [9:1.00]
-; BDVER2-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [4:1.00]
-; BDVER2-NEXT:    vaddps %xmm1, %xmm0, %xmm0 # sched: [5:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_cvtpi2ps:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [8:1.00]
-; BTVER2-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [3:1.00]
-; BTVER2-NEXT:    vaddps %xmm1, %xmm0, %xmm0 # sched: [3:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_cvtpi2ps:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [12:1.00]
-; ZNVER1-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [5:1.00]
-; ZNVER1-NEXT:    vaddps %xmm1, %xmm0, %xmm0 # sched: [3:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call <4 x float> @llvm.x86.sse.cvtpi2ps(<4 x float> %a2, x86_mmx %a0)
-  %2 = load x86_mmx, x86_mmx *%a1, align 8
-  %3 = call <4 x float> @llvm.x86.sse.cvtpi2ps(<4 x float> %a3, x86_mmx %2)
-  %4 = fadd <4 x float> %1, %3
-  ret <4 x float> %4
-}
-declare <4 x float> @llvm.x86.sse.cvtpi2ps(<4 x float>, x86_mmx) nounwind readnone
-
-define i64 @test_cvtps2pi(<4 x float> %a0, <4 x float>* %a1) optsize {
-; GENERIC-LABEL: test_cvtps2pi:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    cvtps2pi %xmm0, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    cvtps2pi (%rdi), %mm1 # sched: [9:1.00]
-; GENERIC-NEXT:    por %mm0, %mm1 # sched: [1:0.33]
-; GENERIC-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_cvtps2pi:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    cvtps2pi %xmm0, %mm0 # sched: [5:5.00]
-; ATOM-NEXT:    cvtps2pi (%rdi), %mm1 # sched: [5:5.00]
-; ATOM-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm1, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_cvtps2pi:
-; SLM:       # %bb.0:
-; SLM-NEXT:    cvtps2pi (%rdi), %mm1 # sched: [7:1.00]
-; SLM-NEXT:    cvtps2pi %xmm0, %mm0 # sched: [4:0.50]
-; SLM-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SLM-NEXT:    movq %mm1, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_cvtps2pi:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    cvtps2pi %xmm0, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    cvtps2pi (%rdi), %mm1 # sched: [9:1.00]
-; SANDY-NEXT:    por %mm0, %mm1 # sched: [1:0.33]
-; SANDY-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_cvtps2pi:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    cvtps2pi %xmm0, %mm0 # sched: [4:1.00]
-; HASWELL-NEXT:    cvtps2pi (%rdi), %mm1 # sched: [8:1.00]
-; HASWELL-NEXT:    por %mm0, %mm1 # sched: [1:0.33]
-; HASWELL-NEXT:    movq %mm1, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_cvtps2pi:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    cvtps2pi %xmm0, %mm0 # sched: [4:1.00]
-; BROADWELL-NEXT:    cvtps2pi (%rdi), %mm1 # sched: [8:1.00]
-; BROADWELL-NEXT:    por %mm0, %mm1 # sched: [1:0.33]
-; BROADWELL-NEXT:    movq %mm1, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_cvtps2pi:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    cvtps2pi %xmm0, %mm0 # sched: [5:1.00]
-; SKYLAKE-NEXT:    cvtps2pi (%rdi), %mm1 # sched: [9:0.50]
-; SKYLAKE-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SKYLAKE-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_cvtps2pi:
-; SKX:       # %bb.0:
-; SKX-NEXT:    cvtps2pi %xmm0, %mm0 # sched: [5:1.00]
-; SKX-NEXT:    cvtps2pi (%rdi), %mm1 # sched: [9:0.50]
-; SKX-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SKX-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_cvtps2pi:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    cvtps2pi (%rdi), %mm1 # sched: [9:1.00]
-; BDVER2-NEXT:    cvtps2pi %xmm0, %mm0 # sched: [4:1.00]
-; BDVER2-NEXT:    por %mm0, %mm1 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm1, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_cvtps2pi:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    cvtps2pi (%rdi), %mm1 # sched: [8:1.00]
-; BTVER2-NEXT:    cvtps2pi %xmm0, %mm0 # sched: [3:1.00]
-; BTVER2-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm1, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_cvtps2pi:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    cvtps2pi (%rdi), %mm1 # sched: [12:1.00]
-; ZNVER1-NEXT:    cvtps2pi %xmm0, %mm0 # sched: [4:1.00]
-; ZNVER1-NEXT:    por %mm0, %mm1 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.sse.cvtps2pi(<4 x float> %a0)
-  %2 = load <4 x float>, <4 x float> *%a1, align 16
-  %3 = call x86_mmx @llvm.x86.sse.cvtps2pi(<4 x float> %2)
-  %4 = call x86_mmx @llvm.x86.mmx.por(x86_mmx %1, x86_mmx %3)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.sse.cvtps2pi(<4 x float>) nounwind readnone
-
-define i64 @test_cvttpd2pi(<2 x double> %a0, <2 x double>* %a1) optsize {
-; GENERIC-LABEL: test_cvttpd2pi:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    cvttpd2pi (%rdi), %mm0 # sched: [10:1.00]
-; GENERIC-NEXT:    cvttpd2pi %xmm0, %mm1 # sched: [4:1.00]
-; GENERIC-NEXT:    por %mm1, %mm0 # sched: [1:0.33]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_cvttpd2pi:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    cvttpd2pi (%rdi), %mm0 # sched: [8:4.00]
-; ATOM-NEXT:    cvttpd2pi %xmm0, %mm1 # sched: [7:3.50]
-; ATOM-NEXT:    por %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_cvttpd2pi:
-; SLM:       # %bb.0:
-; SLM-NEXT:    cvttpd2pi (%rdi), %mm1 # sched: [7:1.00]
-; SLM-NEXT:    cvttpd2pi %xmm0, %mm0 # sched: [4:0.50]
-; SLM-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SLM-NEXT:    movq %mm1, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_cvttpd2pi:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    cvttpd2pi (%rdi), %mm0 # sched: [10:1.00]
-; SANDY-NEXT:    cvttpd2pi %xmm0, %mm1 # sched: [4:1.00]
-; SANDY-NEXT:    por %mm1, %mm0 # sched: [1:0.33]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_cvttpd2pi:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    cvttpd2pi (%rdi), %mm0 # sched: [10:1.00]
-; HASWELL-NEXT:    cvttpd2pi %xmm0, %mm1 # sched: [4:1.00]
-; HASWELL-NEXT:    por %mm1, %mm0 # sched: [1:0.33]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_cvttpd2pi:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    cvttpd2pi %xmm0, %mm0 # sched: [4:1.00]
-; BROADWELL-NEXT:    cvttpd2pi (%rdi), %mm1 # sched: [9:1.00]
-; BROADWELL-NEXT:    por %mm0, %mm1 # sched: [1:0.33]
-; BROADWELL-NEXT:    movq %mm1, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_cvttpd2pi:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    cvttpd2pi %xmm0, %mm0 # sched: [5:1.00]
-; SKYLAKE-NEXT:    cvttpd2pi (%rdi), %mm1 # sched: [11:1.00]
-; SKYLAKE-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SKYLAKE-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_cvttpd2pi:
-; SKX:       # %bb.0:
-; SKX-NEXT:    cvttpd2pi %xmm0, %mm0 # sched: [5:1.00]
-; SKX-NEXT:    cvttpd2pi (%rdi), %mm1 # sched: [11:1.00]
-; SKX-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SKX-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_cvttpd2pi:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    cvttpd2pi (%rdi), %mm1 # sched: [13:1.00]
-; BDVER2-NEXT:    cvttpd2pi %xmm0, %mm0 # sched: [6:1.00]
-; BDVER2-NEXT:    por %mm0, %mm1 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm1, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_cvttpd2pi:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    cvttpd2pi (%rdi), %mm1 # sched: [8:1.00]
-; BTVER2-NEXT:    cvttpd2pi %xmm0, %mm0 # sched: [3:1.00]
-; BTVER2-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm1, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_cvttpd2pi:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    cvttpd2pi (%rdi), %mm1 # sched: [12:1.00]
-; ZNVER1-NEXT:    cvttpd2pi %xmm0, %mm0 # sched: [4:1.00]
-; ZNVER1-NEXT:    por %mm0, %mm1 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.sse.cvttpd2pi(<2 x double> %a0)
-  %2 = load <2 x double>, <2 x double> *%a1, align 16
-  %3 = call x86_mmx @llvm.x86.sse.cvttpd2pi(<2 x double> %2)
-  %4 = call x86_mmx @llvm.x86.mmx.por(x86_mmx %1, x86_mmx %3)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.sse.cvttpd2pi(<2 x double>) nounwind readnone
-
-define i64 @test_cvttps2pi(<4 x float> %a0, <4 x float>* %a1) optsize {
-; GENERIC-LABEL: test_cvttps2pi:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    cvttps2pi %xmm0, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    cvttps2pi (%rdi), %mm1 # sched: [9:1.00]
-; GENERIC-NEXT:    por %mm0, %mm1 # sched: [1:0.33]
-; GENERIC-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_cvttps2pi:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    cvttps2pi %xmm0, %mm0 # sched: [5:5.00]
-; ATOM-NEXT:    cvttps2pi (%rdi), %mm1 # sched: [5:5.00]
-; ATOM-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm1, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_cvttps2pi:
-; SLM:       # %bb.0:
-; SLM-NEXT:    cvttps2pi (%rdi), %mm1 # sched: [7:1.00]
-; SLM-NEXT:    cvttps2pi %xmm0, %mm0 # sched: [4:0.50]
-; SLM-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SLM-NEXT:    movq %mm1, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_cvttps2pi:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    cvttps2pi %xmm0, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    cvttps2pi (%rdi), %mm1 # sched: [9:1.00]
-; SANDY-NEXT:    por %mm0, %mm1 # sched: [1:0.33]
-; SANDY-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_cvttps2pi:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    cvttps2pi %xmm0, %mm0 # sched: [4:1.00]
-; HASWELL-NEXT:    cvttps2pi (%rdi), %mm1 # sched: [8:1.00]
-; HASWELL-NEXT:    por %mm0, %mm1 # sched: [1:0.33]
-; HASWELL-NEXT:    movq %mm1, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_cvttps2pi:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    cvttps2pi %xmm0, %mm0 # sched: [4:1.00]
-; BROADWELL-NEXT:    cvttps2pi (%rdi), %mm1 # sched: [8:1.00]
-; BROADWELL-NEXT:    por %mm0, %mm1 # sched: [1:0.33]
-; BROADWELL-NEXT:    movq %mm1, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_cvttps2pi:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    cvttps2pi %xmm0, %mm0 # sched: [5:1.00]
-; SKYLAKE-NEXT:    cvttps2pi (%rdi), %mm1 # sched: [9:0.50]
-; SKYLAKE-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SKYLAKE-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_cvttps2pi:
-; SKX:       # %bb.0:
-; SKX-NEXT:    cvttps2pi %xmm0, %mm0 # sched: [5:1.00]
-; SKX-NEXT:    cvttps2pi (%rdi), %mm1 # sched: [9:0.50]
-; SKX-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; SKX-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_cvttps2pi:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    cvttps2pi (%rdi), %mm1 # sched: [9:1.00]
-; BDVER2-NEXT:    cvttps2pi %xmm0, %mm0 # sched: [4:1.00]
-; BDVER2-NEXT:    por %mm0, %mm1 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm1, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_cvttps2pi:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    cvttps2pi (%rdi), %mm1 # sched: [8:1.00]
-; BTVER2-NEXT:    cvttps2pi %xmm0, %mm0 # sched: [3:1.00]
-; BTVER2-NEXT:    por %mm0, %mm1 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm1, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_cvttps2pi:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    cvttps2pi (%rdi), %mm1 # sched: [12:1.00]
-; ZNVER1-NEXT:    cvttps2pi %xmm0, %mm0 # sched: [4:1.00]
-; ZNVER1-NEXT:    por %mm0, %mm1 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm1, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.sse.cvttps2pi(<4 x float> %a0)
-  %2 = load <4 x float>, <4 x float> *%a1, align 16
-  %3 = call x86_mmx @llvm.x86.sse.cvttps2pi(<4 x float> %2)
-  %4 = call x86_mmx @llvm.x86.mmx.por(x86_mmx %1, x86_mmx %3)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.sse.cvttps2pi(<4 x float>) nounwind readnone
-
-define void @test_emms() optsize {
-; GENERIC-LABEL: test_emms:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    emms # sched: [31:10.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_emms:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    emms # sched: [5:2.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_emms:
-; SLM:       # %bb.0:
-; SLM-NEXT:    emms # sched: [10:5.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_emms:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    emms # sched: [31:10.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_emms:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    emms # sched: [31:10.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_emms:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    emms # sched: [31:10.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_emms:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    emms # sched: [10:4.50]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_emms:
-; SKX:       # %bb.0:
-; SKX-NEXT:    emms # sched: [10:4.50]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_emms:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    emms # sched: [2:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_emms:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    emms # sched: [2:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_emms:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    emms # sched: [2:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  call void @llvm.x86.mmx.emms()
-  ret void
-}
-declare void @llvm.x86.mmx.emms()
-
-define void @test_maskmovq(x86_mmx %a0, x86_mmx %a1, i8* %a2) optsize {
-; GENERIC-LABEL: test_maskmovq:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    maskmovq %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_maskmovq:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    maskmovq %mm1, %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_maskmovq:
-; SLM:       # %bb.0:
-; SLM-NEXT:    maskmovq %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_maskmovq:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    maskmovq %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_maskmovq:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    maskmovq %mm1, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_maskmovq:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    maskmovq %mm1, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_maskmovq:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    maskmovq %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_maskmovq:
-; SKX:       # %bb.0:
-; SKX-NEXT:    maskmovq %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_maskmovq:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    maskmovq %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_maskmovq:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    maskmovq %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_maskmovq:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    maskmovq %mm1, %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  call void @llvm.x86.mmx.maskmovq(x86_mmx %a0, x86_mmx %a1, i8* %a2)
-  ret void
-}
-declare void @llvm.x86.mmx.maskmovq(x86_mmx, x86_mmx, i8*) nounwind
-
-define i32 @test_movd(x86_mmx %a0, i32 %a1, i32 *%a2) {
-; GENERIC-LABEL: test_movd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    movd %edi, %mm1 # sched: [1:1.00]
-; GENERIC-NEXT:    movd (%rsi), %mm2 # sched: [5:0.50]
-; GENERIC-NEXT:    paddd %mm1, %mm2 # sched: [3:1.00]
-; GENERIC-NEXT:    paddd %mm2, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    movd %mm2, %ecx # sched: [2:1.00]
-; GENERIC-NEXT:    movd %mm0, %eax # sched: [2:1.00]
-; GENERIC-NEXT:    movl %ecx, (%rsi) # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_movd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    movd %edi, %mm1 # sched: [1:1.00]
-; ATOM-NEXT:    movd (%rsi), %mm2 # sched: [1:1.00]
-; ATOM-NEXT:    paddd %mm1, %mm2 # sched: [1:0.50]
-; ATOM-NEXT:    paddd %mm2, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movd %mm2, %ecx # sched: [3:3.00]
-; ATOM-NEXT:    movd %mm0, %eax # sched: [3:3.00]
-; ATOM-NEXT:    movl %ecx, (%rsi) # sched: [1:1.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_movd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    movd (%rsi), %mm2 # sched: [3:1.00]
-; SLM-NEXT:    movd %edi, %mm1 # sched: [1:0.50]
-; SLM-NEXT:    paddd %mm1, %mm2 # sched: [1:0.50]
-; SLM-NEXT:    paddd %mm2, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    movd %mm2, %ecx # sched: [1:0.50]
-; SLM-NEXT:    movd %mm0, %eax # sched: [1:0.50]
-; SLM-NEXT:    movl %ecx, (%rsi) # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_movd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    movd %edi, %mm1 # sched: [1:1.00]
-; SANDY-NEXT:    movd (%rsi), %mm2 # sched: [5:0.50]
-; SANDY-NEXT:    paddd %mm1, %mm2 # sched: [3:1.00]
-; SANDY-NEXT:    paddd %mm2, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    movd %mm2, %ecx # sched: [2:1.00]
-; SANDY-NEXT:    movd %mm0, %eax # sched: [2:1.00]
-; SANDY-NEXT:    movl %ecx, (%rsi) # sched: [1:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_movd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    movd %edi, %mm1 # sched: [1:1.00]
-; HASWELL-NEXT:    movd (%rsi), %mm2 # sched: [5:0.50]
-; HASWELL-NEXT:    paddd %mm1, %mm2 # sched: [1:0.50]
-; HASWELL-NEXT:    paddd %mm2, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    movd %mm2, %ecx # sched: [1:1.00]
-; HASWELL-NEXT:    movd %mm0, %eax # sched: [1:1.00]
-; HASWELL-NEXT:    movl %ecx, (%rsi) # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_movd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    movd %edi, %mm1 # sched: [1:1.00]
-; BROADWELL-NEXT:    movd (%rsi), %mm2 # sched: [5:0.50]
-; BROADWELL-NEXT:    paddd %mm1, %mm2 # sched: [1:0.50]
-; BROADWELL-NEXT:    paddd %mm2, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    movd %mm2, %ecx # sched: [1:1.00]
-; BROADWELL-NEXT:    movd %mm0, %eax # sched: [1:1.00]
-; BROADWELL-NEXT:    movl %ecx, (%rsi) # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_movd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    movd %edi, %mm1 # sched: [1:1.00]
-; SKYLAKE-NEXT:    movd (%rsi), %mm2 # sched: [5:0.50]
-; SKYLAKE-NEXT:    paddd %mm1, %mm2 # sched: [1:0.50]
-; SKYLAKE-NEXT:    paddd %mm2, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    movd %mm2, %ecx # sched: [2:1.00]
-; SKYLAKE-NEXT:    movd %mm0, %eax # sched: [2:1.00]
-; SKYLAKE-NEXT:    movl %ecx, (%rsi) # sched: [1:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_movd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    movd %edi, %mm1 # sched: [1:1.00]
-; SKX-NEXT:    movd (%rsi), %mm2 # sched: [5:0.50]
-; SKX-NEXT:    paddd %mm1, %mm2 # sched: [1:0.50]
-; SKX-NEXT:    paddd %mm2, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    movd %mm2, %ecx # sched: [2:1.00]
-; SKX-NEXT:    movd %mm0, %eax # sched: [2:1.00]
-; SKX-NEXT:    movl %ecx, (%rsi) # sched: [1:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_movd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    movd %edi, %mm1 # sched: [10:0.50]
-; BDVER2-NEXT:    movd (%rsi), %mm2 # sched: [5:0.50]
-; BDVER2-NEXT:    paddd %mm1, %mm2 # sched: [2:0.50]
-; BDVER2-NEXT:    paddd %mm2, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movd %mm2, %ecx # sched: [10:1.00]
-; BDVER2-NEXT:    movd %mm0, %eax # sched: [10:1.00]
-; BDVER2-NEXT:    movl %ecx, (%rsi) # sched: [1:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_movd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    movd %edi, %mm1 # sched: [8:0.50]
-; BTVER2-NEXT:    movd (%rsi), %mm2 # sched: [5:1.00]
-; BTVER2-NEXT:    paddd %mm1, %mm2 # sched: [1:0.50]
-; BTVER2-NEXT:    paddd %mm2, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movd %mm2, %ecx # sched: [4:1.00]
-; BTVER2-NEXT:    movd %mm0, %eax # sched: [4:1.00]
-; BTVER2-NEXT:    movl %ecx, (%rsi) # sched: [1:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_movd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    movd (%rsi), %mm2 # sched: [8:0.50]
-; ZNVER1-NEXT:    movd %edi, %mm1 # sched: [3:1.00]
-; ZNVER1-NEXT:    paddd %mm1, %mm2 # sched: [1:0.25]
-; ZNVER1-NEXT:    paddd %mm2, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movd %mm2, %ecx # sched: [2:1.00]
-; ZNVER1-NEXT:    movd %mm0, %eax # sched: [2:1.00]
-; ZNVER1-NEXT:    movl %ecx, (%rsi) # sched: [1:0.50]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1  = insertelement <2 x i32> undef, i32 %a1, i32 0
-  %2  = bitcast <2 x i32> %1 to x86_mmx
-  %3  = load i32, i32 *%a2
-  %4  = insertelement <2 x i32> undef, i32 %3, i32 0
-  %5  = bitcast <2 x i32> %4 to x86_mmx
-  %6  = call x86_mmx @llvm.x86.mmx.padd.d(x86_mmx %2, x86_mmx %5)
-  %7  = call x86_mmx @llvm.x86.mmx.padd.d(x86_mmx %a0, x86_mmx %6)
-  %8  = bitcast x86_mmx %6 to <2 x i32>
-  %9  = bitcast x86_mmx %7 to <2 x i32>
-  %10 = extractelement <2 x i32> %8, i32 0
-  %11 = extractelement <2 x i32> %9, i32 0
-  store i32 %10, i32* %a2
-  ret i32 %11
-}
-
-define i64 @test_movdq2q(<2 x i64> %a0) optsize {
-; GENERIC-LABEL: test_movdq2q:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    movdq2q %xmm0, %mm0 # sched: [2:1.00]
-; GENERIC-NEXT:    paddd %mm0, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_movdq2q:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    movdq2q %xmm0, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_movdq2q:
-; SLM:       # %bb.0:
-; SLM-NEXT:    movdq2q %xmm0, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_movdq2q:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    movdq2q %xmm0, %mm0 # sched: [2:1.00]
-; SANDY-NEXT:    paddd %mm0, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_movdq2q:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    movdq2q %xmm0, %mm0 # sched: [2:0.67]
-; HASWELL-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_movdq2q:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    movdq2q %xmm0, %mm0 # sched: [2:0.67]
-; BROADWELL-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_movdq2q:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    movdq2q %xmm0, %mm0 # sched: [2:1.00]
-; SKYLAKE-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_movdq2q:
-; SKX:       # %bb.0:
-; SKX-NEXT:    movdq2q %xmm0, %mm0 # sched: [2:1.00]
-; SKX-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_movdq2q:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    movdq2q %xmm0, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    paddd %mm0, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_movdq2q:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    movdq2q %xmm0, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_movdq2q:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    movdq2q %xmm0, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    paddd %mm0, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = extractelement <2 x i64> %a0, i32 0
-  %2 = bitcast i64 %1 to x86_mmx
-  %3 = call x86_mmx @llvm.x86.mmx.padd.d(x86_mmx %2, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-
-define void @test_movntq(x86_mmx* %a0, x86_mmx %a1) optsize {
-; GENERIC-LABEL: test_movntq:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    movntq %mm0, (%rdi) # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_movntq:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    movntq %mm0, (%rdi) # sched: [1:1.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_movntq:
-; SLM:       # %bb.0:
-; SLM-NEXT:    movntq %mm0, (%rdi) # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_movntq:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    movntq %mm0, (%rdi) # sched: [1:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_movntq:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    movntq %mm0, (%rdi) # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_movntq:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    movntq %mm0, (%rdi) # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_movntq:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    movntq %mm0, (%rdi) # sched: [1:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_movntq:
-; SKX:       # %bb.0:
-; SKX-NEXT:    movntq %mm0, (%rdi) # sched: [1:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_movntq:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    movntq %mm0, (%rdi) # sched: [2:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_movntq:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    movntq %mm0, (%rdi) # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_movntq:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    movntq %mm0, (%rdi) # sched: [1:0.50]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  call void @llvm.x86.mmx.movnt.dq(x86_mmx* %a0, x86_mmx %a1)
-  ret void
-}
-declare void @llvm.x86.mmx.movnt.dq(x86_mmx*, x86_mmx) nounwind
-
-define void @test_movq(i64 *%a0) {
-; GENERIC-LABEL: test_movq:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    movq (%rdi), %mm0 # sched: [5:0.50]
-; GENERIC-NEXT:    paddd %mm0, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    movq %mm0, (%rdi) # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_movq:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    movq (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, (%rdi) # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_movq:
-; SLM:       # %bb.0:
-; SLM-NEXT:    movq (%rdi), %mm0 # sched: [3:1.00]
-; SLM-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    movq %mm0, (%rdi) # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_movq:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    movq (%rdi), %mm0 # sched: [5:0.50]
-; SANDY-NEXT:    paddd %mm0, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    movq %mm0, (%rdi) # sched: [1:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_movq:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    movq (%rdi), %mm0 # sched: [5:0.50]
-; HASWELL-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    movq %mm0, (%rdi) # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_movq:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    movq (%rdi), %mm0 # sched: [5:0.50]
-; BROADWELL-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    movq %mm0, (%rdi) # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_movq:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    movq (%rdi), %mm0 # sched: [5:0.50]
-; SKYLAKE-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    movq %mm0, (%rdi) # sched: [1:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_movq:
-; SKX:       # %bb.0:
-; SKX-NEXT:    movq (%rdi), %mm0 # sched: [5:0.50]
-; SKX-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    movq %mm0, (%rdi) # sched: [1:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_movq:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    movq (%rdi), %mm0 # sched: [5:0.50]
-; BDVER2-NEXT:    paddd %mm0, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, (%rdi) # sched: [2:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_movq:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    movq (%rdi), %mm0 # sched: [5:1.00]
-; BTVER2-NEXT:    paddd %mm0, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, (%rdi) # sched: [2:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_movq:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    movq (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    paddd %mm0, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, (%rdi) # sched: [1:0.50]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load i64, i64* %a0, align 8
-  %2 = bitcast i64 %1 to x86_mmx
-  %3 = call x86_mmx @llvm.x86.mmx.padd.d(x86_mmx %2, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  store i64 %4, i64* %a0, align 8
-  ret void
-}
-
-define <2 x i64> @test_movq2dq(x86_mmx %a0) optsize {
-; GENERIC-LABEL: test_movq2dq:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    movq2dq %mm0, %xmm0 # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_movq2dq:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    movq2dq %mm0, %xmm0 # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_movq2dq:
-; SLM:       # %bb.0:
-; SLM-NEXT:    movq2dq %mm0, %xmm0 # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_movq2dq:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    movq2dq %mm0, %xmm0 # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_movq2dq:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    movq2dq %mm0, %xmm0 # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_movq2dq:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    movq2dq %mm0, %xmm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_movq2dq:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    movq2dq %mm0, %xmm0 # sched: [2:2.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_movq2dq:
-; SKX:       # %bb.0:
-; SKX-NEXT:    movq2dq %mm0, %xmm0 # sched: [2:2.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_movq2dq:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    movq2dq %mm0, %xmm0 # sched: [2:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_movq2dq:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    movq2dq %mm0, %xmm0 # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_movq2dq:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    movq2dq %mm0, %xmm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = bitcast x86_mmx %a0 to i64
-  %2 = insertelement <2 x i64> undef, i64 %1, i32 0
-  ret <2 x i64> %2
-}
-
-define i64 @test_pabsb(x86_mmx *%a0) optsize {
-; GENERIC-LABEL: test_pabsb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pabsb (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    pabsb %mm0, %mm0 # sched: [1:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pabsb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pabsb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    pabsb %mm0, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pabsb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pabsb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    pabsb %mm0, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pabsb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pabsb (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    pabsb %mm0, %mm0 # sched: [1:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pabsb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pabsb (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    pabsb %mm0, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pabsb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pabsb (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    pabsb %mm0, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pabsb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pabsb (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    pabsb %mm0, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pabsb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pabsb (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    pabsb %mm0, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pabsb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pabsb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    pabsb %mm0, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pabsb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pabsb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    pabsb %mm0, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pabsb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pabsb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    pabsb %mm0, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load x86_mmx, x86_mmx *%a0, align 8
-  %2 = call x86_mmx @llvm.x86.ssse3.pabs.b(x86_mmx %1)
-  %3 = call x86_mmx @llvm.x86.ssse3.pabs.b(x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.pabs.b(x86_mmx) nounwind readnone
-
-define i64 @test_pabsd(x86_mmx *%a0) optsize {
-; GENERIC-LABEL: test_pabsd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pabsd (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    pabsd %mm0, %mm0 # sched: [1:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pabsd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pabsd (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    pabsd %mm0, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pabsd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pabsd (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    pabsd %mm0, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pabsd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pabsd (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    pabsd %mm0, %mm0 # sched: [1:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pabsd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pabsd (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    pabsd %mm0, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pabsd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pabsd (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    pabsd %mm0, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pabsd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pabsd (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    pabsd %mm0, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pabsd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pabsd (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    pabsd %mm0, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pabsd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pabsd (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    pabsd %mm0, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pabsd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pabsd (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    pabsd %mm0, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pabsd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pabsd (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    pabsd %mm0, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load x86_mmx, x86_mmx *%a0, align 8
-  %2 = call x86_mmx @llvm.x86.ssse3.pabs.d(x86_mmx %1)
-  %3 = call x86_mmx @llvm.x86.ssse3.pabs.d(x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.pabs.d(x86_mmx) nounwind readnone
-
-define i64 @test_pabsw(x86_mmx *%a0) optsize {
-; GENERIC-LABEL: test_pabsw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pabsw (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    pabsw %mm0, %mm0 # sched: [1:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pabsw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pabsw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    pabsw %mm0, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pabsw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pabsw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    pabsw %mm0, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pabsw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pabsw (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    pabsw %mm0, %mm0 # sched: [1:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pabsw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pabsw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    pabsw %mm0, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pabsw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pabsw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    pabsw %mm0, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pabsw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pabsw (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    pabsw %mm0, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pabsw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pabsw (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    pabsw %mm0, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pabsw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pabsw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    pabsw %mm0, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pabsw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pabsw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    pabsw %mm0, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pabsw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pabsw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    pabsw %mm0, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load x86_mmx, x86_mmx *%a0, align 8
-  %2 = call x86_mmx @llvm.x86.ssse3.pabs.w(x86_mmx %1)
-  %3 = call x86_mmx @llvm.x86.ssse3.pabs.w(x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.pabs.w(x86_mmx) nounwind readnone
-
-define i64 @test_packssdw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_packssdw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    packssdw %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    packssdw (%rdi), %mm0 # sched: [6:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_packssdw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    packssdw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    packssdw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_packssdw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    packssdw %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    packssdw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_packssdw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    packssdw %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    packssdw (%rdi), %mm0 # sched: [6:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_packssdw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    packssdw %mm1, %mm0 # sched: [3:2.00]
-; HASWELL-NEXT:    packssdw (%rdi), %mm0 # sched: [7:2.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_packssdw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    packssdw %mm1, %mm0 # sched: [3:2.00]
-; BROADWELL-NEXT:    packssdw (%rdi), %mm0 # sched: [7:2.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_packssdw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    packssdw %mm1, %mm0 # sched: [3:2.00]
-; SKYLAKE-NEXT:    packssdw (%rdi), %mm0 # sched: [7:2.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_packssdw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    packssdw %mm1, %mm0 # sched: [3:2.00]
-; SKX-NEXT:    packssdw (%rdi), %mm0 # sched: [7:2.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_packssdw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    packssdw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    packssdw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_packssdw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    packssdw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    packssdw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_packssdw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    packssdw %mm1, %mm0 # sched: [1:0.50]
-; ZNVER1-NEXT:    packssdw (%rdi), %mm0 # sched: [1:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.packssdw(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.packssdw(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.packssdw(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_packsswb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_packsswb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    packsswb %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    packsswb (%rdi), %mm0 # sched: [6:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_packsswb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    packsswb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    packsswb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_packsswb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    packsswb %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    packsswb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_packsswb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    packsswb %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    packsswb (%rdi), %mm0 # sched: [6:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_packsswb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    packsswb %mm1, %mm0 # sched: [3:2.00]
-; HASWELL-NEXT:    packsswb (%rdi), %mm0 # sched: [7:2.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_packsswb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    packsswb %mm1, %mm0 # sched: [3:2.00]
-; BROADWELL-NEXT:    packsswb (%rdi), %mm0 # sched: [7:2.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_packsswb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    packsswb %mm1, %mm0 # sched: [3:2.00]
-; SKYLAKE-NEXT:    packsswb (%rdi), %mm0 # sched: [7:2.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_packsswb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    packsswb %mm1, %mm0 # sched: [3:2.00]
-; SKX-NEXT:    packsswb (%rdi), %mm0 # sched: [7:2.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_packsswb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    packsswb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    packsswb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_packsswb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    packsswb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    packsswb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_packsswb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    packsswb %mm1, %mm0 # sched: [1:0.50]
-; ZNVER1-NEXT:    packsswb (%rdi), %mm0 # sched: [1:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.packsswb(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.packsswb(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.packsswb(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_packuswb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_packuswb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    packuswb %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    packuswb (%rdi), %mm0 # sched: [6:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_packuswb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    packuswb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    packuswb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_packuswb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    packuswb %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    packuswb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_packuswb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    packuswb %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    packuswb (%rdi), %mm0 # sched: [6:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_packuswb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    packuswb %mm1, %mm0 # sched: [3:2.00]
-; HASWELL-NEXT:    packuswb (%rdi), %mm0 # sched: [7:2.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_packuswb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    packuswb %mm1, %mm0 # sched: [3:2.00]
-; BROADWELL-NEXT:    packuswb (%rdi), %mm0 # sched: [7:2.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_packuswb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    packuswb %mm1, %mm0 # sched: [3:2.00]
-; SKYLAKE-NEXT:    packuswb (%rdi), %mm0 # sched: [7:2.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_packuswb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    packuswb %mm1, %mm0 # sched: [3:2.00]
-; SKX-NEXT:    packuswb (%rdi), %mm0 # sched: [7:2.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_packuswb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    packuswb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    packuswb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_packuswb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    packuswb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    packuswb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_packuswb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    packuswb %mm1, %mm0 # sched: [1:0.50]
-; ZNVER1-NEXT:    packuswb (%rdi), %mm0 # sched: [1:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.packuswb(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.packuswb(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.packuswb(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_paddb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_paddb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    paddb %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    paddb (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_paddb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    paddb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    paddb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_paddb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    paddb %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    paddb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_paddb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    paddb %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    paddb (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_paddb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    paddb %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    paddb (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_paddb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    paddb %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    paddb (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_paddb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    paddb %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    paddb (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_paddb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    paddb %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    paddb (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_paddb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    paddb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    paddb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_paddb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    paddb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    paddb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_paddb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    paddb %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    paddb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.padd.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.padd.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.padd.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_paddd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_paddd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    paddd %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    paddd (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_paddd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    paddd %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    paddd (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_paddd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    paddd %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    paddd (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_paddd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    paddd %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    paddd (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_paddd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    paddd %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    paddd (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_paddd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    paddd %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    paddd (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_paddd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    paddd %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    paddd (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_paddd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    paddd %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    paddd (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_paddd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    paddd %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    paddd (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_paddd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    paddd %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    paddd (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_paddd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    paddd %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    paddd (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.padd.d(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.padd.d(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.padd.d(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_paddq(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_paddq:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    paddq %mm1, %mm0 # sched: [1:0.50]
-; GENERIC-NEXT:    paddq (%rdi), %mm0 # sched: [7:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_paddq:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    paddq %mm1, %mm0 # sched: [2:1.00]
-; ATOM-NEXT:    paddq (%rdi), %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_paddq:
-; SLM:       # %bb.0:
-; SLM-NEXT:    paddq %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    paddq (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_paddq:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    paddq %mm1, %mm0 # sched: [1:0.50]
-; SANDY-NEXT:    paddq (%rdi), %mm0 # sched: [7:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_paddq:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    paddq %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    paddq (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_paddq:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    paddq %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    paddq (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_paddq:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    paddq %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    paddq (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_paddq:
-; SKX:       # %bb.0:
-; SKX-NEXT:    paddq %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    paddq (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_paddq:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    paddq %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    paddq (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_paddq:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    paddq %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    paddq (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_paddq:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    paddq %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    paddq (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.padd.q(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.padd.q(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.padd.q(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_paddsb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_paddsb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    paddsb %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    paddsb (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_paddsb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    paddsb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    paddsb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_paddsb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    paddsb %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    paddsb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_paddsb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    paddsb %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    paddsb (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_paddsb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    paddsb %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    paddsb (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_paddsb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    paddsb %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    paddsb (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_paddsb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    paddsb %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    paddsb (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_paddsb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    paddsb %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    paddsb (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_paddsb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    paddsb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    paddsb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_paddsb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    paddsb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    paddsb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_paddsb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    paddsb %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    paddsb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.padds.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.padds.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.padds.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_paddsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_paddsw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    paddsw %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    paddsw (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_paddsw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    paddsw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    paddsw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_paddsw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    paddsw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    paddsw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_paddsw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    paddsw %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    paddsw (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_paddsw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    paddsw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    paddsw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_paddsw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    paddsw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    paddsw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_paddsw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    paddsw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    paddsw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_paddsw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    paddsw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    paddsw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_paddsw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    paddsw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    paddsw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_paddsw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    paddsw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    paddsw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_paddsw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    paddsw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    paddsw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.padds.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.padds.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.padds.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_paddusb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_paddusb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    paddusb %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    paddusb (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_paddusb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    paddusb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    paddusb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_paddusb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    paddusb %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    paddusb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_paddusb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    paddusb %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    paddusb (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_paddusb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    paddusb %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    paddusb (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_paddusb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    paddusb %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    paddusb (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_paddusb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    paddusb %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    paddusb (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_paddusb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    paddusb %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    paddusb (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_paddusb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    paddusb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    paddusb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_paddusb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    paddusb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    paddusb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_paddusb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    paddusb %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    paddusb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.paddus.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.paddus.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.paddus.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_paddusw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_paddusw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    paddusw %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    paddusw (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_paddusw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    paddusw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    paddusw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_paddusw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    paddusw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    paddusw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_paddusw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    paddusw %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    paddusw (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_paddusw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    paddusw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    paddusw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_paddusw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    paddusw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    paddusw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_paddusw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    paddusw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    paddusw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_paddusw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    paddusw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    paddusw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_paddusw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    paddusw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    paddusw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_paddusw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    paddusw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    paddusw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_paddusw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    paddusw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    paddusw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.paddus.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.paddus.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.paddus.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_paddw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_paddw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    paddw %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    paddw (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_paddw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    paddw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    paddw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_paddw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    paddw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    paddw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_paddw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    paddw %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    paddw (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_paddw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    paddw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    paddw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_paddw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    paddw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    paddw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_paddw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    paddw %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    paddw (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_paddw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    paddw %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    paddw (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_paddw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    paddw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    paddw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_paddw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    paddw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    paddw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_paddw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    paddw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    paddw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.padd.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.padd.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.padd.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_palignr(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_palignr:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    palignr $1, %mm1, %mm0 # sched: [1:0.50]
-; GENERIC-NEXT:    palignr $1, (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_palignr:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    palignr $1, %mm1, %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    palignr $1, (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_palignr:
-; SLM:       # %bb.0:
-; SLM-NEXT:    palignr $1, %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    palignr $1, (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_palignr:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    palignr $1, %mm1, %mm0 # sched: [1:0.50]
-; SANDY-NEXT:    palignr $1, (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_palignr:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    palignr $1, %mm1, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    palignr $1, (%rdi), %mm0 # sched: [6:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_palignr:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    palignr $1, %mm1, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    palignr $1, (%rdi), %mm0 # sched: [6:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_palignr:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    palignr $1, %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    palignr $1, (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_palignr:
-; SKX:       # %bb.0:
-; SKX-NEXT:    palignr $1, %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    palignr $1, (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_palignr:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    palignr $1, %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    palignr $1, (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_palignr:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    palignr $1, %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    palignr $1, (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_palignr:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    palignr $1, %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    palignr $1, (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.palignr.b(x86_mmx %a0, x86_mmx %a1, i8 1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.palignr.b(x86_mmx %1, x86_mmx %2, i8 1)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.palignr.b(x86_mmx, x86_mmx, i8) nounwind readnone
-
-define i64 @test_pand(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pand:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pand %mm1, %mm0 # sched: [1:0.33]
-; GENERIC-NEXT:    pand (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pand:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pand %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pand (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pand:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pand %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pand (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pand:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pand %mm1, %mm0 # sched: [1:0.33]
-; SANDY-NEXT:    pand (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pand:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pand %mm1, %mm0 # sched: [1:0.33]
-; HASWELL-NEXT:    pand (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pand:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pand %mm1, %mm0 # sched: [1:0.33]
-; BROADWELL-NEXT:    pand (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pand:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pand %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    pand (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pand:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pand %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    pand (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pand:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pand %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pand (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pand:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pand %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pand (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pand:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pand %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pand (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pand(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pand(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pand(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pandn(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pandn:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pandn %mm1, %mm0 # sched: [1:0.33]
-; GENERIC-NEXT:    pandn (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pandn:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pandn %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pandn (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pandn:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pandn %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pandn (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pandn:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pandn %mm1, %mm0 # sched: [1:0.33]
-; SANDY-NEXT:    pandn (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pandn:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pandn %mm1, %mm0 # sched: [1:0.33]
-; HASWELL-NEXT:    pandn (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pandn:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pandn %mm1, %mm0 # sched: [1:0.33]
-; BROADWELL-NEXT:    pandn (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pandn:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pandn %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    pandn (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pandn:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pandn %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    pandn (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pandn:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pandn %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pandn (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pandn:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pandn %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pandn (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pandn:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pandn %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pandn (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pandn(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pandn(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pandn(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pavgb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pavgb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pavgb %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pavgb (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pavgb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pavgb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pavgb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pavgb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pavgb %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pavgb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pavgb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pavgb %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pavgb (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pavgb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pavgb %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pavgb (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pavgb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pavgb %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pavgb (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pavgb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pavgb %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pavgb (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pavgb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pavgb %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pavgb (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pavgb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pavgb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pavgb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pavgb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pavgb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pavgb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pavgb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pavgb %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pavgb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pavg.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pavg.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pavg.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pavgw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pavgw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pavgw %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pavgw (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pavgw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pavgw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pavgw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pavgw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pavgw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pavgw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pavgw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pavgw %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pavgw (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pavgw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pavgw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pavgw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pavgw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pavgw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pavgw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pavgw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pavgw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pavgw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pavgw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pavgw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pavgw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pavgw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pavgw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pavgw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pavgw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pavgw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pavgw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pavgw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pavgw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pavgw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pavg.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pavg.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pavg.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pcmpeqb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pcmpeqb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pcmpeqb %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pcmpeqb (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pcmpeqb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pcmpeqb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pcmpeqb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pcmpeqb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pcmpeqb %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pcmpeqb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pcmpeqb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pcmpeqb %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pcmpeqb (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pcmpeqb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pcmpeqb %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pcmpeqb (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pcmpeqb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pcmpeqb %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pcmpeqb (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pcmpeqb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pcmpeqb %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pcmpeqb (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pcmpeqb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pcmpeqb %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pcmpeqb (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pcmpeqb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pcmpeqb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pcmpeqb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pcmpeqb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pcmpeqb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pcmpeqb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pcmpeqb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pcmpeqb %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pcmpeqb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pcmpeq.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pcmpeq.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pcmpeq.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pcmpeqd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pcmpeqd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pcmpeqd %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pcmpeqd (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pcmpeqd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pcmpeqd %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pcmpeqd (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pcmpeqd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pcmpeqd %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pcmpeqd (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pcmpeqd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pcmpeqd %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pcmpeqd (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pcmpeqd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pcmpeqd %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pcmpeqd (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pcmpeqd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pcmpeqd %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pcmpeqd (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pcmpeqd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pcmpeqd %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pcmpeqd (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pcmpeqd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pcmpeqd %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pcmpeqd (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pcmpeqd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pcmpeqd %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pcmpeqd (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pcmpeqd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pcmpeqd %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pcmpeqd (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pcmpeqd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pcmpeqd %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pcmpeqd (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pcmpeq.d(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pcmpeq.d(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pcmpeq.d(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pcmpeqw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pcmpeqw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pcmpeqw %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pcmpeqw (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pcmpeqw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pcmpeqw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pcmpeqw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pcmpeqw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pcmpeqw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pcmpeqw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pcmpeqw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pcmpeqw %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pcmpeqw (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pcmpeqw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pcmpeqw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pcmpeqw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pcmpeqw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pcmpeqw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pcmpeqw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pcmpeqw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pcmpeqw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pcmpeqw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pcmpeqw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pcmpeqw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pcmpeqw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pcmpeqw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pcmpeqw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pcmpeqw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pcmpeqw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pcmpeqw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pcmpeqw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pcmpeqw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pcmpeqw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pcmpeqw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pcmpeq.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pcmpeq.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pcmpeq.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pcmpgtb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pcmpgtb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pcmpgtb %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pcmpgtb (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pcmpgtb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pcmpgtb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pcmpgtb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pcmpgtb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pcmpgtb %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pcmpgtb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pcmpgtb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pcmpgtb %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pcmpgtb (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pcmpgtb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pcmpgtb %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pcmpgtb (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pcmpgtb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pcmpgtb %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pcmpgtb (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pcmpgtb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pcmpgtb %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pcmpgtb (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pcmpgtb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pcmpgtb %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pcmpgtb (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pcmpgtb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pcmpgtb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pcmpgtb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pcmpgtb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pcmpgtb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pcmpgtb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pcmpgtb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pcmpgtb %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pcmpgtb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pcmpgt.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pcmpgt.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pcmpgt.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pcmpgtd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pcmpgtd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pcmpgtd %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pcmpgtd (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pcmpgtd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pcmpgtd %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pcmpgtd (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pcmpgtd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pcmpgtd %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pcmpgtd (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pcmpgtd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pcmpgtd %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pcmpgtd (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pcmpgtd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pcmpgtd %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pcmpgtd (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pcmpgtd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pcmpgtd %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pcmpgtd (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pcmpgtd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pcmpgtd %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pcmpgtd (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pcmpgtd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pcmpgtd %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pcmpgtd (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pcmpgtd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pcmpgtd %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pcmpgtd (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pcmpgtd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pcmpgtd %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pcmpgtd (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pcmpgtd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pcmpgtd %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pcmpgtd (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pcmpgt.d(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pcmpgt.d(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pcmpgt.d(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pcmpgtw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pcmpgtw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pcmpgtw %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pcmpgtw (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pcmpgtw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pcmpgtw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pcmpgtw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pcmpgtw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pcmpgtw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pcmpgtw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pcmpgtw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pcmpgtw %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pcmpgtw (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pcmpgtw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pcmpgtw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pcmpgtw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pcmpgtw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pcmpgtw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pcmpgtw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pcmpgtw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pcmpgtw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pcmpgtw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pcmpgtw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pcmpgtw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pcmpgtw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pcmpgtw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pcmpgtw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pcmpgtw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pcmpgtw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pcmpgtw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pcmpgtw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pcmpgtw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pcmpgtw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pcmpgtw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pcmpgt.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pcmpgt.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pcmpgt.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i32 @test_pextrw(x86_mmx %a0) optsize {
-; GENERIC-LABEL: test_pextrw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pextrw $0, %mm0, %eax # sched: [3:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pextrw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pextrw $0, %mm0, %eax # sched: [4:2.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pextrw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pextrw $0, %mm0, %eax # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pextrw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pextrw $0, %mm0, %eax # sched: [3:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pextrw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pextrw $0, %mm0, %eax # sched: [2:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pextrw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pextrw $0, %mm0, %eax # sched: [2:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pextrw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pextrw $0, %mm0, %eax # sched: [3:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pextrw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pextrw $0, %mm0, %eax # sched: [3:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pextrw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pextrw $0, %mm0, %eax # sched: [13:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pextrw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pextrw $0, %mm0, %eax # sched: [3:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pextrw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pextrw $0, %mm0, %eax # sched: [2:2.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call i32 @llvm.x86.mmx.pextr.w(x86_mmx %a0, i32 0)
-  ret i32 %1
-}
-declare i32 @llvm.x86.mmx.pextr.w(x86_mmx, i32) nounwind readnone
-
-define i64 @test_phaddd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_phaddd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    phaddd %mm1, %mm0 # sched: [3:1.50]
-; GENERIC-NEXT:    phaddd (%rdi), %mm0 # sched: [8:1.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_phaddd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    phaddd %mm1, %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    phaddd (%rdi), %mm0 # sched: [4:2.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_phaddd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    phaddd %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    phaddd (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_phaddd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    phaddd %mm1, %mm0 # sched: [3:1.50]
-; SANDY-NEXT:    phaddd (%rdi), %mm0 # sched: [8:1.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_phaddd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    phaddd %mm1, %mm0 # sched: [3:2.00]
-; HASWELL-NEXT:    phaddd (%rdi), %mm0 # sched: [8:2.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_phaddd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    phaddd %mm1, %mm0 # sched: [3:2.00]
-; BROADWELL-NEXT:    phaddd (%rdi), %mm0 # sched: [8:2.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_phaddd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    phaddd %mm1, %mm0 # sched: [3:2.00]
-; SKYLAKE-NEXT:    phaddd (%rdi), %mm0 # sched: [8:2.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_phaddd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    phaddd %mm1, %mm0 # sched: [3:2.00]
-; SKX-NEXT:    phaddd (%rdi), %mm0 # sched: [8:2.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_phaddd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    phaddd %mm1, %mm0 # sched: [5:0.50]
-; BDVER2-NEXT:    phaddd (%rdi), %mm0 # sched: [10:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_phaddd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    phaddd %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    phaddd (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_phaddd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    phaddd %mm1, %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    phaddd (%rdi), %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.phadd.d(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.phadd.d(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.phadd.d(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_phaddsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_phaddsw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    phaddsw %mm1, %mm0 # sched: [3:1.50]
-; GENERIC-NEXT:    phaddsw (%rdi), %mm0 # sched: [8:1.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_phaddsw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    phaddsw %mm1, %mm0 # sched: [5:2.50]
-; ATOM-NEXT:    phaddsw (%rdi), %mm0 # sched: [6:3.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_phaddsw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    phaddsw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    phaddsw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_phaddsw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    phaddsw %mm1, %mm0 # sched: [3:1.50]
-; SANDY-NEXT:    phaddsw (%rdi), %mm0 # sched: [8:1.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_phaddsw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    phaddsw %mm1, %mm0 # sched: [3:2.00]
-; HASWELL-NEXT:    phaddsw (%rdi), %mm0 # sched: [8:2.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_phaddsw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    phaddsw %mm1, %mm0 # sched: [3:2.00]
-; BROADWELL-NEXT:    phaddsw (%rdi), %mm0 # sched: [8:2.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_phaddsw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    phaddsw %mm1, %mm0 # sched: [3:2.00]
-; SKYLAKE-NEXT:    phaddsw (%rdi), %mm0 # sched: [8:2.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_phaddsw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    phaddsw %mm1, %mm0 # sched: [3:2.00]
-; SKX-NEXT:    phaddsw (%rdi), %mm0 # sched: [8:2.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_phaddsw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    phaddsw %mm1, %mm0 # sched: [5:0.50]
-; BDVER2-NEXT:    phaddsw (%rdi), %mm0 # sched: [10:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_phaddsw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    phaddsw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    phaddsw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_phaddsw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    phaddsw %mm1, %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    phaddsw (%rdi), %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.phadd.sw(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.phadd.sw(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.phadd.sw(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_phaddw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_phaddw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    phaddw %mm1, %mm0 # sched: [3:1.50]
-; GENERIC-NEXT:    phaddw (%rdi), %mm0 # sched: [8:1.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_phaddw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    phaddw %mm1, %mm0 # sched: [5:2.50]
-; ATOM-NEXT:    phaddw (%rdi), %mm0 # sched: [6:3.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_phaddw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    phaddw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    phaddw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_phaddw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    phaddw %mm1, %mm0 # sched: [3:1.50]
-; SANDY-NEXT:    phaddw (%rdi), %mm0 # sched: [8:1.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_phaddw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    phaddw %mm1, %mm0 # sched: [3:2.00]
-; HASWELL-NEXT:    phaddw (%rdi), %mm0 # sched: [8:2.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_phaddw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    phaddw %mm1, %mm0 # sched: [3:2.00]
-; BROADWELL-NEXT:    phaddw (%rdi), %mm0 # sched: [8:2.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_phaddw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    phaddw %mm1, %mm0 # sched: [3:2.00]
-; SKYLAKE-NEXT:    phaddw (%rdi), %mm0 # sched: [8:2.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_phaddw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    phaddw %mm1, %mm0 # sched: [3:2.00]
-; SKX-NEXT:    phaddw (%rdi), %mm0 # sched: [8:2.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_phaddw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    phaddw %mm1, %mm0 # sched: [5:0.50]
-; BDVER2-NEXT:    phaddw (%rdi), %mm0 # sched: [10:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_phaddw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    phaddw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    phaddw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_phaddw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    phaddw %mm1, %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    phaddw (%rdi), %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.phadd.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.phadd.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.phadd.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_phsubd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_phsubd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    phsubd %mm1, %mm0 # sched: [3:1.50]
-; GENERIC-NEXT:    phsubd (%rdi), %mm0 # sched: [8:1.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_phsubd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    phsubd %mm1, %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    phsubd (%rdi), %mm0 # sched: [4:2.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_phsubd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    phsubd %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    phsubd (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_phsubd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    phsubd %mm1, %mm0 # sched: [3:1.50]
-; SANDY-NEXT:    phsubd (%rdi), %mm0 # sched: [8:1.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_phsubd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    phsubd %mm1, %mm0 # sched: [3:2.00]
-; HASWELL-NEXT:    phsubd (%rdi), %mm0 # sched: [8:2.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_phsubd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    phsubd %mm1, %mm0 # sched: [3:2.00]
-; BROADWELL-NEXT:    phsubd (%rdi), %mm0 # sched: [8:2.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_phsubd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    phsubd %mm1, %mm0 # sched: [3:2.00]
-; SKYLAKE-NEXT:    phsubd (%rdi), %mm0 # sched: [8:2.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_phsubd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    phsubd %mm1, %mm0 # sched: [3:2.00]
-; SKX-NEXT:    phsubd (%rdi), %mm0 # sched: [8:2.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_phsubd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    phsubd %mm1, %mm0 # sched: [5:0.50]
-; BDVER2-NEXT:    phsubd (%rdi), %mm0 # sched: [10:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_phsubd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    phsubd %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    phsubd (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_phsubd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    phsubd %mm1, %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    phsubd (%rdi), %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.phsub.d(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.phsub.d(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.phsub.d(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_phsubsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_phsubsw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    phsubsw %mm1, %mm0 # sched: [3:1.50]
-; GENERIC-NEXT:    phsubsw (%rdi), %mm0 # sched: [8:1.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_phsubsw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    phsubsw %mm1, %mm0 # sched: [5:2.50]
-; ATOM-NEXT:    phsubsw (%rdi), %mm0 # sched: [6:3.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_phsubsw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    phsubsw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    phsubsw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_phsubsw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    phsubsw %mm1, %mm0 # sched: [3:1.50]
-; SANDY-NEXT:    phsubsw (%rdi), %mm0 # sched: [8:1.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_phsubsw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    phsubsw %mm1, %mm0 # sched: [3:2.00]
-; HASWELL-NEXT:    phsubsw (%rdi), %mm0 # sched: [8:2.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_phsubsw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    phsubsw %mm1, %mm0 # sched: [3:2.00]
-; BROADWELL-NEXT:    phsubsw (%rdi), %mm0 # sched: [8:2.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_phsubsw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    phsubsw %mm1, %mm0 # sched: [3:2.00]
-; SKYLAKE-NEXT:    phsubsw (%rdi), %mm0 # sched: [8:2.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_phsubsw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    phsubsw %mm1, %mm0 # sched: [3:2.00]
-; SKX-NEXT:    phsubsw (%rdi), %mm0 # sched: [8:2.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_phsubsw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    phsubsw %mm1, %mm0 # sched: [5:0.50]
-; BDVER2-NEXT:    phsubsw (%rdi), %mm0 # sched: [10:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_phsubsw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    phsubsw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    phsubsw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_phsubsw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    phsubsw %mm1, %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    phsubsw (%rdi), %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.phsub.sw(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.phsub.sw(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.phsub.sw(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_phsubw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_phsubw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    phsubw %mm1, %mm0 # sched: [3:1.50]
-; GENERIC-NEXT:    phsubw (%rdi), %mm0 # sched: [8:1.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_phsubw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    phsubw %mm1, %mm0 # sched: [5:2.50]
-; ATOM-NEXT:    phsubw (%rdi), %mm0 # sched: [6:3.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_phsubw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    phsubw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    phsubw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_phsubw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    phsubw %mm1, %mm0 # sched: [3:1.50]
-; SANDY-NEXT:    phsubw (%rdi), %mm0 # sched: [8:1.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_phsubw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    phsubw %mm1, %mm0 # sched: [3:2.00]
-; HASWELL-NEXT:    phsubw (%rdi), %mm0 # sched: [8:2.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_phsubw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    phsubw %mm1, %mm0 # sched: [3:2.00]
-; BROADWELL-NEXT:    phsubw (%rdi), %mm0 # sched: [8:2.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_phsubw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    phsubw %mm1, %mm0 # sched: [3:2.00]
-; SKYLAKE-NEXT:    phsubw (%rdi), %mm0 # sched: [8:2.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_phsubw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    phsubw %mm1, %mm0 # sched: [3:2.00]
-; SKX-NEXT:    phsubw (%rdi), %mm0 # sched: [8:2.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_phsubw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    phsubw %mm1, %mm0 # sched: [5:0.50]
-; BDVER2-NEXT:    phsubw (%rdi), %mm0 # sched: [10:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_phsubw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    phsubw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    phsubw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_phsubw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    phsubw %mm1, %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    phsubw (%rdi), %mm0 # sched: [100:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.phsub.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.phsub.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.phsub.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pinsrw(x86_mmx %a0, i32 %a1, i16* %a2) optsize {
-; GENERIC-LABEL: test_pinsrw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pinsrw $0, %edi, %mm0 # sched: [2:1.00]
-; GENERIC-NEXT:    movswl (%rsi), %eax # sched: [5:0.50]
-; GENERIC-NEXT:    pinsrw $1, %eax, %mm0 # sched: [2:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pinsrw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pinsrw $0, %edi, %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movswl (%rsi), %eax # sched: [1:1.00]
-; ATOM-NEXT:    pinsrw $1, %eax, %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pinsrw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    movswl (%rsi), %eax # sched: [4:1.00]
-; SLM-NEXT:    pinsrw $0, %edi, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    pinsrw $1, %eax, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pinsrw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pinsrw $0, %edi, %mm0 # sched: [2:1.00]
-; SANDY-NEXT:    movswl (%rsi), %eax # sched: [5:0.50]
-; SANDY-NEXT:    pinsrw $1, %eax, %mm0 # sched: [2:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pinsrw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pinsrw $0, %edi, %mm0 # sched: [2:2.00]
-; HASWELL-NEXT:    movswl (%rsi), %eax # sched: [5:0.50]
-; HASWELL-NEXT:    pinsrw $1, %eax, %mm0 # sched: [2:2.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pinsrw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pinsrw $0, %edi, %mm0 # sched: [2:2.00]
-; BROADWELL-NEXT:    movswl (%rsi), %eax # sched: [5:0.50]
-; BROADWELL-NEXT:    pinsrw $1, %eax, %mm0 # sched: [2:2.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pinsrw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pinsrw $0, %edi, %mm0 # sched: [2:2.00]
-; SKYLAKE-NEXT:    movswl (%rsi), %eax # sched: [5:0.50]
-; SKYLAKE-NEXT:    pinsrw $1, %eax, %mm0 # sched: [2:2.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pinsrw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pinsrw $0, %edi, %mm0 # sched: [2:2.00]
-; SKX-NEXT:    movswl (%rsi), %eax # sched: [5:0.50]
-; SKX-NEXT:    pinsrw $1, %eax, %mm0 # sched: [2:2.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pinsrw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    movswl (%rsi), %eax # sched: [5:0.50]
-; BDVER2-NEXT:    pinsrw $0, %edi, %mm0 # sched: [12:0.50]
-; BDVER2-NEXT:    pinsrw $1, %eax, %mm0 # sched: [12:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pinsrw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    movswl (%rsi), %eax # sched: [4:1.00]
-; BTVER2-NEXT:    pinsrw $0, %edi, %mm0 # sched: [7:0.50]
-; BTVER2-NEXT:    pinsrw $1, %eax, %mm0 # sched: [7:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pinsrw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    movswl (%rsi), %eax # sched: [8:0.50]
-; ZNVER1-NEXT:    pinsrw $0, %edi, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pinsrw $1, %eax, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pinsr.w(x86_mmx %a0, i32 %a1, i32 0)
-  %2 = load i16, i16 *%a2, align 2
-  %3 = sext i16 %2 to i32
-  %4 = call x86_mmx @llvm.x86.mmx.pinsr.w(x86_mmx %1, i32 %3, i32 1)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.mmx.pinsr.w(x86_mmx, i32, i32) nounwind readnone
-
-define i64 @test_pmaddwd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pmaddwd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pmaddwd %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmaddwd (%rdi), %mm0 # sched: [10:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pmaddwd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pmaddwd %mm1, %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    pmaddwd (%rdi), %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pmaddwd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pmaddwd %mm1, %mm0 # sched: [4:1.00]
-; SLM-NEXT:    pmaddwd (%rdi), %mm0 # sched: [7:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pmaddwd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pmaddwd %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmaddwd (%rdi), %mm0 # sched: [10:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pmaddwd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pmaddwd %mm1, %mm0 # sched: [5:1.00]
-; HASWELL-NEXT:    pmaddwd (%rdi), %mm0 # sched: [10:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pmaddwd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pmaddwd %mm1, %mm0 # sched: [5:1.00]
-; BROADWELL-NEXT:    pmaddwd (%rdi), %mm0 # sched: [10:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pmaddwd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pmaddwd %mm1, %mm0 # sched: [4:1.00]
-; SKYLAKE-NEXT:    pmaddwd (%rdi), %mm0 # sched: [9:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pmaddwd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pmaddwd %mm1, %mm0 # sched: [4:1.00]
-; SKX-NEXT:    pmaddwd (%rdi), %mm0 # sched: [9:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pmaddwd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pmaddwd %mm1, %mm0 # sched: [4:1.00]
-; BDVER2-NEXT:    pmaddwd (%rdi), %mm0 # sched: [9:1.00]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pmaddwd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pmaddwd %mm1, %mm0 # sched: [2:1.00]
-; BTVER2-NEXT:    pmaddwd (%rdi), %mm0 # sched: [7:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pmaddwd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pmaddwd %mm1, %mm0 # sched: [4:1.00]
-; ZNVER1-NEXT:    pmaddwd (%rdi), %mm0 # sched: [11:1.00]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pmadd.wd(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pmadd.wd(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pmadd.wd(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pmaddubsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pmaddubsw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pmaddubsw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [10:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pmaddubsw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pmaddubsw %mm1, %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pmaddubsw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pmaddubsw %mm1, %mm0 # sched: [4:1.00]
-; SLM-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [7:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pmaddubsw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pmaddubsw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [10:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pmaddubsw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pmaddubsw %mm1, %mm0 # sched: [5:1.00]
-; HASWELL-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [10:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pmaddubsw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pmaddubsw %mm1, %mm0 # sched: [5:1.00]
-; BROADWELL-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [10:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pmaddubsw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pmaddubsw %mm1, %mm0 # sched: [4:1.00]
-; SKYLAKE-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [9:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pmaddubsw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pmaddubsw %mm1, %mm0 # sched: [4:1.00]
-; SKX-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [9:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pmaddubsw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pmaddubsw %mm1, %mm0 # sched: [4:1.00]
-; BDVER2-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [9:1.00]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pmaddubsw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pmaddubsw %mm1, %mm0 # sched: [2:1.00]
-; BTVER2-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [7:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pmaddubsw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pmaddubsw %mm1, %mm0 # sched: [4:1.00]
-; ZNVER1-NEXT:    pmaddubsw (%rdi), %mm0 # sched: [11:1.00]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.pmadd.ub.sw(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.pmadd.ub.sw(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.pmadd.ub.sw(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pmaxsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pmaxsw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pmaxsw %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pmaxsw (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pmaxsw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pmaxsw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pmaxsw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pmaxsw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pmaxsw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pmaxsw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pmaxsw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pmaxsw %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pmaxsw (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pmaxsw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pmaxsw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pmaxsw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pmaxsw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pmaxsw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pmaxsw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pmaxsw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pmaxsw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pmaxsw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pmaxsw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pmaxsw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pmaxsw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pmaxsw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pmaxsw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pmaxsw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pmaxsw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pmaxsw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pmaxsw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pmaxsw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pmaxsw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pmaxsw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pmaxs.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pmaxs.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pmaxs.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pmaxub(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pmaxub:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pmaxub %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pmaxub (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pmaxub:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pmaxub %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pmaxub (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pmaxub:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pmaxub %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pmaxub (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pmaxub:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pmaxub %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pmaxub (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pmaxub:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pmaxub %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pmaxub (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pmaxub:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pmaxub %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pmaxub (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pmaxub:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pmaxub %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pmaxub (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pmaxub:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pmaxub %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pmaxub (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pmaxub:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pmaxub %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pmaxub (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pmaxub:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pmaxub %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pmaxub (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pmaxub:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pmaxub %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pmaxub (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pmaxu.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pmaxu.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pmaxu.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pminsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pminsw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pminsw %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pminsw (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pminsw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pminsw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pminsw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pminsw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pminsw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pminsw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pminsw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pminsw %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pminsw (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pminsw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pminsw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pminsw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pminsw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pminsw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pminsw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pminsw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pminsw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pminsw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pminsw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pminsw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pminsw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pminsw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pminsw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pminsw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pminsw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pminsw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pminsw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pminsw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pminsw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pminsw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pmins.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pmins.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pmins.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pminub(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pminub:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pminub %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    pminub (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pminub:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pminub %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pminub (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pminub:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pminub %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pminub (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pminub:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pminub %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    pminub (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pminub:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pminub %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    pminub (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pminub:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pminub %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    pminub (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pminub:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pminub %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pminub (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pminub:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pminub %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pminub (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pminub:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pminub %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pminub (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pminub:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pminub %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pminub (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pminub:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pminub %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pminub (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pminu.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pminu.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pminu.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i32 @test_pmovmskb(x86_mmx %a0) optsize {
-; GENERIC-LABEL: test_pmovmskb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pmovmskb %mm0, %eax # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pmovmskb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pmovmskb %mm0, %eax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pmovmskb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pmovmskb %mm0, %eax # sched: [4:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pmovmskb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pmovmskb %mm0, %eax # sched: [1:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pmovmskb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pmovmskb %mm0, %eax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pmovmskb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pmovmskb %mm0, %eax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pmovmskb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pmovmskb %mm0, %eax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pmovmskb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pmovmskb %mm0, %eax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pmovmskb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pmovmskb %mm0, %eax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pmovmskb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pmovmskb %mm0, %eax # sched: [3:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pmovmskb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pmovmskb %mm0, %eax # sched: [1:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call i32 @llvm.x86.mmx.pmovmskb(x86_mmx %a0)
-  ret i32 %1
-}
-declare i32 @llvm.x86.mmx.pmovmskb(x86_mmx) nounwind readnone
-
-define i64 @test_pmulhrsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pmulhrsw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pmulhrsw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [10:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pmulhrsw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pmulhrsw %mm1, %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pmulhrsw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pmulhrsw %mm1, %mm0 # sched: [4:1.00]
-; SLM-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [7:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pmulhrsw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pmulhrsw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [10:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pmulhrsw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pmulhrsw %mm1, %mm0 # sched: [5:1.00]
-; HASWELL-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [10:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pmulhrsw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pmulhrsw %mm1, %mm0 # sched: [5:1.00]
-; BROADWELL-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [10:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pmulhrsw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pmulhrsw %mm1, %mm0 # sched: [4:1.00]
-; SKYLAKE-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [9:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pmulhrsw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pmulhrsw %mm1, %mm0 # sched: [4:1.00]
-; SKX-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [9:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pmulhrsw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pmulhrsw %mm1, %mm0 # sched: [4:1.00]
-; BDVER2-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [9:1.00]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pmulhrsw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pmulhrsw %mm1, %mm0 # sched: [2:1.00]
-; BTVER2-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [7:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pmulhrsw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pmulhrsw %mm1, %mm0 # sched: [4:1.00]
-; ZNVER1-NEXT:    pmulhrsw (%rdi), %mm0 # sched: [11:1.00]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.pmul.hr.sw(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.pmul.hr.sw(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.pmul.hr.sw(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pmulhw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pmulhw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pmulhw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmulhw (%rdi), %mm0 # sched: [10:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pmulhw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pmulhw %mm1, %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    pmulhw (%rdi), %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pmulhw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pmulhw %mm1, %mm0 # sched: [4:1.00]
-; SLM-NEXT:    pmulhw (%rdi), %mm0 # sched: [7:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pmulhw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pmulhw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmulhw (%rdi), %mm0 # sched: [10:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pmulhw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pmulhw %mm1, %mm0 # sched: [5:1.00]
-; HASWELL-NEXT:    pmulhw (%rdi), %mm0 # sched: [10:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pmulhw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pmulhw %mm1, %mm0 # sched: [5:1.00]
-; BROADWELL-NEXT:    pmulhw (%rdi), %mm0 # sched: [10:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pmulhw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pmulhw %mm1, %mm0 # sched: [4:1.00]
-; SKYLAKE-NEXT:    pmulhw (%rdi), %mm0 # sched: [9:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pmulhw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pmulhw %mm1, %mm0 # sched: [4:1.00]
-; SKX-NEXT:    pmulhw (%rdi), %mm0 # sched: [9:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pmulhw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pmulhw %mm1, %mm0 # sched: [4:1.00]
-; BDVER2-NEXT:    pmulhw (%rdi), %mm0 # sched: [9:1.00]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pmulhw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pmulhw %mm1, %mm0 # sched: [2:1.00]
-; BTVER2-NEXT:    pmulhw (%rdi), %mm0 # sched: [7:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pmulhw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pmulhw %mm1, %mm0 # sched: [4:1.00]
-; ZNVER1-NEXT:    pmulhw (%rdi), %mm0 # sched: [11:1.00]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pmulh.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pmulh.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pmulh.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pmulhuw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pmulhuw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pmulhuw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmulhuw (%rdi), %mm0 # sched: [10:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pmulhuw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pmulhuw %mm1, %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    pmulhuw (%rdi), %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pmulhuw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pmulhuw %mm1, %mm0 # sched: [4:1.00]
-; SLM-NEXT:    pmulhuw (%rdi), %mm0 # sched: [7:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pmulhuw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pmulhuw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmulhuw (%rdi), %mm0 # sched: [10:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pmulhuw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pmulhuw %mm1, %mm0 # sched: [5:1.00]
-; HASWELL-NEXT:    pmulhuw (%rdi), %mm0 # sched: [10:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pmulhuw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pmulhuw %mm1, %mm0 # sched: [5:1.00]
-; BROADWELL-NEXT:    pmulhuw (%rdi), %mm0 # sched: [10:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pmulhuw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pmulhuw %mm1, %mm0 # sched: [4:1.00]
-; SKYLAKE-NEXT:    pmulhuw (%rdi), %mm0 # sched: [9:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pmulhuw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pmulhuw %mm1, %mm0 # sched: [4:1.00]
-; SKX-NEXT:    pmulhuw (%rdi), %mm0 # sched: [9:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pmulhuw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pmulhuw %mm1, %mm0 # sched: [4:1.00]
-; BDVER2-NEXT:    pmulhuw (%rdi), %mm0 # sched: [9:1.00]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pmulhuw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pmulhuw %mm1, %mm0 # sched: [2:1.00]
-; BTVER2-NEXT:    pmulhuw (%rdi), %mm0 # sched: [7:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pmulhuw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pmulhuw %mm1, %mm0 # sched: [4:1.00]
-; ZNVER1-NEXT:    pmulhuw (%rdi), %mm0 # sched: [11:1.00]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pmulhu.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pmulhu.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pmulhu.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pmullw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pmullw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pmullw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmullw (%rdi), %mm0 # sched: [10:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pmullw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pmullw %mm1, %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    pmullw (%rdi), %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pmullw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pmullw %mm1, %mm0 # sched: [4:1.00]
-; SLM-NEXT:    pmullw (%rdi), %mm0 # sched: [7:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pmullw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pmullw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmullw (%rdi), %mm0 # sched: [10:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pmullw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pmullw %mm1, %mm0 # sched: [5:1.00]
-; HASWELL-NEXT:    pmullw (%rdi), %mm0 # sched: [10:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pmullw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pmullw %mm1, %mm0 # sched: [5:1.00]
-; BROADWELL-NEXT:    pmullw (%rdi), %mm0 # sched: [10:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pmullw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pmullw %mm1, %mm0 # sched: [4:1.00]
-; SKYLAKE-NEXT:    pmullw (%rdi), %mm0 # sched: [9:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pmullw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pmullw %mm1, %mm0 # sched: [4:1.00]
-; SKX-NEXT:    pmullw (%rdi), %mm0 # sched: [9:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pmullw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pmullw %mm1, %mm0 # sched: [4:1.00]
-; BDVER2-NEXT:    pmullw (%rdi), %mm0 # sched: [9:1.00]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pmullw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pmullw %mm1, %mm0 # sched: [2:1.00]
-; BTVER2-NEXT:    pmullw (%rdi), %mm0 # sched: [7:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pmullw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pmullw %mm1, %mm0 # sched: [4:1.00]
-; ZNVER1-NEXT:    pmullw (%rdi), %mm0 # sched: [11:1.00]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pmull.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pmull.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pmull.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pmuludq(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pmuludq:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pmuludq %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    pmuludq (%rdi), %mm0 # sched: [10:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pmuludq:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pmuludq %mm1, %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    pmuludq (%rdi), %mm0 # sched: [4:4.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pmuludq:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pmuludq %mm1, %mm0 # sched: [4:1.00]
-; SLM-NEXT:    pmuludq (%rdi), %mm0 # sched: [7:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pmuludq:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pmuludq %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    pmuludq (%rdi), %mm0 # sched: [10:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pmuludq:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pmuludq %mm1, %mm0 # sched: [5:1.00]
-; HASWELL-NEXT:    pmuludq (%rdi), %mm0 # sched: [10:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pmuludq:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pmuludq %mm1, %mm0 # sched: [5:1.00]
-; BROADWELL-NEXT:    pmuludq (%rdi), %mm0 # sched: [10:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pmuludq:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pmuludq %mm1, %mm0 # sched: [4:1.00]
-; SKYLAKE-NEXT:    pmuludq (%rdi), %mm0 # sched: [9:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pmuludq:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pmuludq %mm1, %mm0 # sched: [4:1.00]
-; SKX-NEXT:    pmuludq (%rdi), %mm0 # sched: [9:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pmuludq:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pmuludq %mm1, %mm0 # sched: [4:1.00]
-; BDVER2-NEXT:    pmuludq (%rdi), %mm0 # sched: [9:1.00]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pmuludq:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pmuludq %mm1, %mm0 # sched: [2:1.00]
-; BTVER2-NEXT:    pmuludq (%rdi), %mm0 # sched: [7:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pmuludq:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pmuludq %mm1, %mm0 # sched: [4:1.00]
-; ZNVER1-NEXT:    pmuludq (%rdi), %mm0 # sched: [11:1.00]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pmulu.dq(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pmulu.dq(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pmulu.dq(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_por(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_por:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    por %mm1, %mm0 # sched: [1:0.33]
-; GENERIC-NEXT:    por (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_por:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    por %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    por (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_por:
-; SLM:       # %bb.0:
-; SLM-NEXT:    por %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    por (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_por:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    por %mm1, %mm0 # sched: [1:0.33]
-; SANDY-NEXT:    por (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_por:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    por %mm1, %mm0 # sched: [1:0.33]
-; HASWELL-NEXT:    por (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_por:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    por %mm1, %mm0 # sched: [1:0.33]
-; BROADWELL-NEXT:    por (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_por:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    por %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    por (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_por:
-; SKX:       # %bb.0:
-; SKX-NEXT:    por %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    por (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_por:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    por %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    por (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_por:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    por %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    por (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_por:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    por %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    por (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.por(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.por(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.por(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_psadbw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psadbw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psadbw %mm1, %mm0 # sched: [5:1.00]
-; GENERIC-NEXT:    psadbw (%rdi), %mm0 # sched: [10:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psadbw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psadbw %mm1, %mm0 # sched: [4:2.00]
-; ATOM-NEXT:    psadbw (%rdi), %mm0 # sched: [4:2.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psadbw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psadbw %mm1, %mm0 # sched: [4:1.00]
-; SLM-NEXT:    psadbw (%rdi), %mm0 # sched: [7:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psadbw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psadbw %mm1, %mm0 # sched: [5:1.00]
-; SANDY-NEXT:    psadbw (%rdi), %mm0 # sched: [10:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psadbw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psadbw %mm1, %mm0 # sched: [5:1.00]
-; HASWELL-NEXT:    psadbw (%rdi), %mm0 # sched: [10:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psadbw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psadbw %mm1, %mm0 # sched: [5:1.00]
-; BROADWELL-NEXT:    psadbw (%rdi), %mm0 # sched: [10:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psadbw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psadbw %mm1, %mm0 # sched: [3:1.00]
-; SKYLAKE-NEXT:    psadbw (%rdi), %mm0 # sched: [8:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psadbw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psadbw %mm1, %mm0 # sched: [3:1.00]
-; SKX-NEXT:    psadbw (%rdi), %mm0 # sched: [8:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psadbw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psadbw %mm1, %mm0 # sched: [4:0.50]
-; BDVER2-NEXT:    psadbw (%rdi), %mm0 # sched: [9:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psadbw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psadbw %mm1, %mm0 # sched: [2:0.50]
-; BTVER2-NEXT:    psadbw (%rdi), %mm0 # sched: [7:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psadbw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psadbw %mm1, %mm0 # sched: [3:1.00]
-; ZNVER1-NEXT:    psadbw (%rdi), %mm0 # sched: [10:1.00]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psad.bw(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psad.bw(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.psad.bw(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pshufb(x86_mmx %a0, x86_mmx %a1, x86_mmx *%a2) optsize {
-; GENERIC-LABEL: test_pshufb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pshufb %mm1, %mm0 # sched: [1:0.50]
-; GENERIC-NEXT:    pshufb (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pshufb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pshufb %mm1, %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    pshufb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pshufb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pshufb %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    pshufb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pshufb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pshufb %mm1, %mm0 # sched: [1:0.50]
-; SANDY-NEXT:    pshufb (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pshufb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pshufb %mm1, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    pshufb (%rdi), %mm0 # sched: [6:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pshufb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pshufb %mm1, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    pshufb (%rdi), %mm0 # sched: [6:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pshufb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pshufb %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pshufb (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pshufb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pshufb %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pshufb (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pshufb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pshufb %mm1, %mm0 # sched: [3:2.00]
-; BDVER2-NEXT:    pshufb (%rdi), %mm0 # sched: [8:2.00]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pshufb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pshufb %mm1, %mm0 # sched: [2:0.50]
-; BTVER2-NEXT:    pshufb (%rdi), %mm0 # sched: [7:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pshufb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pshufb %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pshufb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.pshuf.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.pshuf.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.pshuf.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pshufw(x86_mmx *%a0) optsize {
-; GENERIC-LABEL: test_pshufw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pshufw $0, (%rdi), %mm0 # mm0 = mem[0,0,0,0] sched: [6:1.00]
-; GENERIC-NEXT:    pshufw $0, %mm0, %mm0 # mm0 = mm0[0,0,0,0] sched: [1:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pshufw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pshufw $0, (%rdi), %mm0 # mm0 = mem[0,0,0,0] sched: [1:1.00]
-; ATOM-NEXT:    pshufw $0, %mm0, %mm0 # mm0 = mm0[0,0,0,0] sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pshufw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pshufw $0, (%rdi), %mm0 # mm0 = mem[0,0,0,0] sched: [4:1.00]
-; SLM-NEXT:    pshufw $0, %mm0, %mm0 # mm0 = mm0[0,0,0,0] sched: [1:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pshufw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pshufw $0, (%rdi), %mm0 # mm0 = mem[0,0,0,0] sched: [6:1.00]
-; SANDY-NEXT:    pshufw $0, %mm0, %mm0 # mm0 = mm0[0,0,0,0] sched: [1:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pshufw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pshufw $0, (%rdi), %mm0 # mm0 = mem[0,0,0,0] sched: [6:1.00]
-; HASWELL-NEXT:    pshufw $0, %mm0, %mm0 # mm0 = mm0[0,0,0,0] sched: [1:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pshufw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pshufw $0, (%rdi), %mm0 # mm0 = mem[0,0,0,0] sched: [6:1.00]
-; BROADWELL-NEXT:    pshufw $0, %mm0, %mm0 # mm0 = mm0[0,0,0,0] sched: [1:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pshufw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pshufw $0, (%rdi), %mm0 # mm0 = mem[0,0,0,0] sched: [6:1.00]
-; SKYLAKE-NEXT:    pshufw $0, %mm0, %mm0 # mm0 = mm0[0,0,0,0] sched: [1:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pshufw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pshufw $0, (%rdi), %mm0 # mm0 = mem[0,0,0,0] sched: [6:1.00]
-; SKX-NEXT:    pshufw $0, %mm0, %mm0 # mm0 = mm0[0,0,0,0] sched: [1:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pshufw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pshufw $0, (%rdi), %mm0 # mm0 = mem[0,0,0,0] sched: [7:0.50]
-; BDVER2-NEXT:    pshufw $0, %mm0, %mm0 # mm0 = mm0[0,0,0,0] sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pshufw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pshufw $0, (%rdi), %mm0 # mm0 = mem[0,0,0,0] sched: [6:1.00]
-; BTVER2-NEXT:    pshufw $0, %mm0, %mm0 # mm0 = mm0[0,0,0,0] sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pshufw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pshufw $0, (%rdi), %mm0 # mm0 = mem[0,0,0,0] sched: [8:0.50]
-; ZNVER1-NEXT:    pshufw $0, %mm0, %mm0 # mm0 = mm0[0,0,0,0] sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load x86_mmx, x86_mmx *%a0, align 8
-  %2 = call x86_mmx @llvm.x86.sse.pshuf.w(x86_mmx %1, i8 0)
-  %3 = call x86_mmx @llvm.x86.sse.pshuf.w(x86_mmx %2, i8 0)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.sse.pshuf.w(x86_mmx, i8) nounwind readnone
-
-define i64 @test_psignb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psignb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psignb %mm1, %mm0 # sched: [1:0.50]
-; GENERIC-NEXT:    psignb (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psignb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psignb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    psignb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psignb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psignb %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    psignb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psignb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psignb %mm1, %mm0 # sched: [1:0.50]
-; SANDY-NEXT:    psignb (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psignb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psignb %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    psignb (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psignb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psignb %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    psignb (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psignb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psignb %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    psignb (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psignb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psignb %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    psignb (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psignb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psignb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    psignb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psignb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psignb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psignb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psignb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psignb %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psignb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.psign.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.psign.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.psign.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_psignd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psignd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psignd %mm1, %mm0 # sched: [1:0.50]
-; GENERIC-NEXT:    psignd (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psignd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psignd %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    psignd (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psignd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psignd %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    psignd (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psignd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psignd %mm1, %mm0 # sched: [1:0.50]
-; SANDY-NEXT:    psignd (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psignd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psignd %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    psignd (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psignd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psignd %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    psignd (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psignd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psignd %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    psignd (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psignd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psignd %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    psignd (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psignd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psignd %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    psignd (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psignd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psignd %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psignd (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psignd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psignd %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psignd (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.psign.d(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.psign.d(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.psign.d(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_psignw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psignw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psignw %mm1, %mm0 # sched: [1:0.50]
-; GENERIC-NEXT:    psignw (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psignw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psignw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    psignw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psignw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psignw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    psignw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psignw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psignw %mm1, %mm0 # sched: [1:0.50]
-; SANDY-NEXT:    psignw (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psignw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psignw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    psignw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psignw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psignw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    psignw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psignw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psignw %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    psignw (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psignw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psignw %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    psignw (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psignw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psignw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    psignw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psignw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psignw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psignw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psignw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psignw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psignw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.ssse3.psign.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.ssse3.psign.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.ssse3.psign.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pslld(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pslld:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pslld %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    pslld (%rdi), %mm0 # sched: [6:1.00]
-; GENERIC-NEXT:    pslld $7, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pslld:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pslld %mm1, %mm0 # sched: [2:1.00]
-; ATOM-NEXT:    pslld (%rdi), %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    pslld $7, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pslld:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pslld %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    pslld (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    pslld $7, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pslld:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pslld %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    pslld (%rdi), %mm0 # sched: [6:1.00]
-; SANDY-NEXT:    pslld $7, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pslld:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pslld %mm1, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    pslld (%rdi), %mm0 # sched: [6:1.00]
-; HASWELL-NEXT:    pslld $7, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pslld:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pslld %mm1, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    pslld (%rdi), %mm0 # sched: [6:1.00]
-; BROADWELL-NEXT:    pslld $7, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pslld:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pslld %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    pslld (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    pslld $7, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pslld:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pslld %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    pslld (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    pslld $7, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pslld:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pslld %mm1, %mm0 # sched: [3:0.50]
-; BDVER2-NEXT:    pslld (%rdi), %mm0 # sched: [8:0.50]
-; BDVER2-NEXT:    pslld $7, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pslld:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pslld %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pslld (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    pslld $7, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pslld:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pslld %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pslld (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    pslld $7, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psll.d(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psll.d(x86_mmx %1, x86_mmx %2)
-  %4 = call x86_mmx @llvm.x86.mmx.pslli.d(x86_mmx %3, i32 7)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.mmx.psll.d(x86_mmx, x86_mmx) nounwind readnone
-declare x86_mmx @llvm.x86.mmx.pslli.d(x86_mmx, i32) nounwind readnone
-
-define i64 @test_psllq(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psllq:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psllq %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    psllq (%rdi), %mm0 # sched: [6:1.00]
-; GENERIC-NEXT:    psllq $7, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psllq:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psllq %mm1, %mm0 # sched: [2:1.00]
-; ATOM-NEXT:    psllq (%rdi), %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    psllq $7, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psllq:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psllq %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    psllq (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    psllq $7, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psllq:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psllq %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    psllq (%rdi), %mm0 # sched: [6:1.00]
-; SANDY-NEXT:    psllq $7, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psllq:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psllq %mm1, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    psllq (%rdi), %mm0 # sched: [6:1.00]
-; HASWELL-NEXT:    psllq $7, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psllq:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psllq %mm1, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    psllq (%rdi), %mm0 # sched: [6:1.00]
-; BROADWELL-NEXT:    psllq $7, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psllq:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psllq %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    psllq (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    psllq $7, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psllq:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psllq %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    psllq (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    psllq $7, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psllq:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psllq %mm1, %mm0 # sched: [3:0.50]
-; BDVER2-NEXT:    psllq (%rdi), %mm0 # sched: [8:0.50]
-; BDVER2-NEXT:    psllq $7, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psllq:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psllq %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psllq (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    psllq $7, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psllq:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psllq %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psllq (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    psllq $7, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psll.q(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psll.q(x86_mmx %1, x86_mmx %2)
-  %4 = call x86_mmx @llvm.x86.mmx.pslli.q(x86_mmx %3, i32 7)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.mmx.psll.q(x86_mmx, x86_mmx) nounwind readnone
-declare x86_mmx @llvm.x86.mmx.pslli.q(x86_mmx, i32) nounwind readnone
-
-define i64 @test_psllw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psllw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psllw %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    psllw (%rdi), %mm0 # sched: [6:1.00]
-; GENERIC-NEXT:    psllw $7, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psllw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psllw %mm1, %mm0 # sched: [2:1.00]
-; ATOM-NEXT:    psllw (%rdi), %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    psllw $7, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psllw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psllw %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    psllw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    psllw $7, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psllw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psllw %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    psllw (%rdi), %mm0 # sched: [6:1.00]
-; SANDY-NEXT:    psllw $7, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psllw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psllw %mm1, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    psllw (%rdi), %mm0 # sched: [6:1.00]
-; HASWELL-NEXT:    psllw $7, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psllw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psllw %mm1, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    psllw (%rdi), %mm0 # sched: [6:1.00]
-; BROADWELL-NEXT:    psllw $7, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psllw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psllw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    psllw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    psllw $7, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psllw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psllw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    psllw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    psllw $7, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psllw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psllw %mm1, %mm0 # sched: [3:0.50]
-; BDVER2-NEXT:    psllw (%rdi), %mm0 # sched: [8:0.50]
-; BDVER2-NEXT:    psllw $7, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psllw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psllw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psllw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    psllw $7, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psllw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psllw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psllw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    psllw $7, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psll.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psll.w(x86_mmx %1, x86_mmx %2)
-  %4 = call x86_mmx @llvm.x86.mmx.pslli.w(x86_mmx %3, i32 7)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.mmx.psll.w(x86_mmx, x86_mmx) nounwind readnone
-declare x86_mmx @llvm.x86.mmx.pslli.w(x86_mmx, i32) nounwind readnone
-
-define i64 @test_psrad(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psrad:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psrad %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    psrad (%rdi), %mm0 # sched: [6:1.00]
-; GENERIC-NEXT:    psrad $7, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psrad:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psrad %mm1, %mm0 # sched: [2:1.00]
-; ATOM-NEXT:    psrad (%rdi), %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    psrad $7, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psrad:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psrad %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    psrad (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    psrad $7, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psrad:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psrad %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    psrad (%rdi), %mm0 # sched: [6:1.00]
-; SANDY-NEXT:    psrad $7, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psrad:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psrad %mm1, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    psrad (%rdi), %mm0 # sched: [6:1.00]
-; HASWELL-NEXT:    psrad $7, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psrad:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psrad %mm1, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    psrad (%rdi), %mm0 # sched: [6:1.00]
-; BROADWELL-NEXT:    psrad $7, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psrad:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psrad %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    psrad (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    psrad $7, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psrad:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psrad %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    psrad (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    psrad $7, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psrad:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psrad %mm1, %mm0 # sched: [3:0.50]
-; BDVER2-NEXT:    psrad (%rdi), %mm0 # sched: [8:0.50]
-; BDVER2-NEXT:    psrad $7, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psrad:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psrad %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psrad (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    psrad $7, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psrad:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psrad %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psrad (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    psrad $7, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psra.d(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psra.d(x86_mmx %1, x86_mmx %2)
-  %4 = call x86_mmx @llvm.x86.mmx.psrai.d(x86_mmx %3, i32 7)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.mmx.psra.d(x86_mmx, x86_mmx) nounwind readnone
-declare x86_mmx @llvm.x86.mmx.psrai.d(x86_mmx, i32) nounwind readnone
-
-define i64 @test_psraw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psraw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psraw %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    psraw (%rdi), %mm0 # sched: [6:1.00]
-; GENERIC-NEXT:    psraw $7, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psraw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psraw %mm1, %mm0 # sched: [2:1.00]
-; ATOM-NEXT:    psraw (%rdi), %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    psraw $7, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psraw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psraw %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    psraw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    psraw $7, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psraw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psraw %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    psraw (%rdi), %mm0 # sched: [6:1.00]
-; SANDY-NEXT:    psraw $7, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psraw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psraw %mm1, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    psraw (%rdi), %mm0 # sched: [6:1.00]
-; HASWELL-NEXT:    psraw $7, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psraw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psraw %mm1, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    psraw (%rdi), %mm0 # sched: [6:1.00]
-; BROADWELL-NEXT:    psraw $7, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psraw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psraw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    psraw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    psraw $7, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psraw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psraw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    psraw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    psraw $7, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psraw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psraw %mm1, %mm0 # sched: [3:0.50]
-; BDVER2-NEXT:    psraw (%rdi), %mm0 # sched: [8:0.50]
-; BDVER2-NEXT:    psraw $7, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psraw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psraw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psraw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    psraw $7, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psraw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psraw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psraw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    psraw $7, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psra.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psra.w(x86_mmx %1, x86_mmx %2)
-  %4 = call x86_mmx @llvm.x86.mmx.psrai.w(x86_mmx %3, i32 7)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.mmx.psra.w(x86_mmx, x86_mmx) nounwind readnone
-declare x86_mmx @llvm.x86.mmx.psrai.w(x86_mmx, i32) nounwind readnone
-
-define i64 @test_psrld(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psrld:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psrld %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    psrld (%rdi), %mm0 # sched: [6:1.00]
-; GENERIC-NEXT:    psrld $7, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psrld:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psrld %mm1, %mm0 # sched: [2:1.00]
-; ATOM-NEXT:    psrld (%rdi), %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    psrld $7, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psrld:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psrld %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    psrld (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    psrld $7, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psrld:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psrld %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    psrld (%rdi), %mm0 # sched: [6:1.00]
-; SANDY-NEXT:    psrld $7, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psrld:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psrld %mm1, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    psrld (%rdi), %mm0 # sched: [6:1.00]
-; HASWELL-NEXT:    psrld $7, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psrld:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psrld %mm1, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    psrld (%rdi), %mm0 # sched: [6:1.00]
-; BROADWELL-NEXT:    psrld $7, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psrld:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psrld %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    psrld (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    psrld $7, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psrld:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psrld %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    psrld (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    psrld $7, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psrld:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psrld %mm1, %mm0 # sched: [3:0.50]
-; BDVER2-NEXT:    psrld (%rdi), %mm0 # sched: [8:0.50]
-; BDVER2-NEXT:    psrld $7, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psrld:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psrld %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psrld (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    psrld $7, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psrld:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psrld %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psrld (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    psrld $7, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psrl.d(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psrl.d(x86_mmx %1, x86_mmx %2)
-  %4 = call x86_mmx @llvm.x86.mmx.psrli.d(x86_mmx %3, i32 7)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.mmx.psrl.d(x86_mmx, x86_mmx) nounwind readnone
-declare x86_mmx @llvm.x86.mmx.psrli.d(x86_mmx, i32) nounwind readnone
-
-define i64 @test_psrlq(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psrlq:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psrlq %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    psrlq (%rdi), %mm0 # sched: [6:1.00]
-; GENERIC-NEXT:    psrlq $7, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psrlq:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psrlq %mm1, %mm0 # sched: [2:1.00]
-; ATOM-NEXT:    psrlq (%rdi), %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    psrlq $7, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psrlq:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psrlq %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    psrlq (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    psrlq $7, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psrlq:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psrlq %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    psrlq (%rdi), %mm0 # sched: [6:1.00]
-; SANDY-NEXT:    psrlq $7, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psrlq:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psrlq %mm1, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    psrlq (%rdi), %mm0 # sched: [6:1.00]
-; HASWELL-NEXT:    psrlq $7, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psrlq:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psrlq %mm1, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    psrlq (%rdi), %mm0 # sched: [6:1.00]
-; BROADWELL-NEXT:    psrlq $7, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psrlq:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psrlq %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    psrlq (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    psrlq $7, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psrlq:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psrlq %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    psrlq (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    psrlq $7, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psrlq:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psrlq %mm1, %mm0 # sched: [3:0.50]
-; BDVER2-NEXT:    psrlq (%rdi), %mm0 # sched: [8:0.50]
-; BDVER2-NEXT:    psrlq $7, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psrlq:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psrlq %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psrlq (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    psrlq $7, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psrlq:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psrlq %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psrlq (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    psrlq $7, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psrl.q(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psrl.q(x86_mmx %1, x86_mmx %2)
-  %4 = call x86_mmx @llvm.x86.mmx.psrli.q(x86_mmx %3, i32 7)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.mmx.psrl.q(x86_mmx, x86_mmx) nounwind readnone
-declare x86_mmx @llvm.x86.mmx.psrli.q(x86_mmx, i32) nounwind readnone
-
-define i64 @test_psrlw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psrlw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psrlw %mm1, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    psrlw (%rdi), %mm0 # sched: [6:1.00]
-; GENERIC-NEXT:    psrlw $7, %mm0 # sched: [1:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psrlw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psrlw %mm1, %mm0 # sched: [2:1.00]
-; ATOM-NEXT:    psrlw (%rdi), %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    psrlw $7, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psrlw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psrlw %mm1, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    psrlw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    psrlw $7, %mm0 # sched: [1:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psrlw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psrlw %mm1, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    psrlw (%rdi), %mm0 # sched: [6:1.00]
-; SANDY-NEXT:    psrlw $7, %mm0 # sched: [1:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psrlw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psrlw %mm1, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    psrlw (%rdi), %mm0 # sched: [6:1.00]
-; HASWELL-NEXT:    psrlw $7, %mm0 # sched: [1:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psrlw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psrlw %mm1, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    psrlw (%rdi), %mm0 # sched: [6:1.00]
-; BROADWELL-NEXT:    psrlw $7, %mm0 # sched: [1:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psrlw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psrlw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    psrlw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    psrlw $7, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psrlw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psrlw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    psrlw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    psrlw $7, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psrlw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psrlw %mm1, %mm0 # sched: [3:0.50]
-; BDVER2-NEXT:    psrlw (%rdi), %mm0 # sched: [8:0.50]
-; BDVER2-NEXT:    psrlw $7, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psrlw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psrlw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psrlw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    psrlw $7, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psrlw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psrlw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psrlw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    psrlw $7, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psrl.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psrl.w(x86_mmx %1, x86_mmx %2)
-  %4 = call x86_mmx @llvm.x86.mmx.psrli.w(x86_mmx %3, i32 7)
-  %5 = bitcast x86_mmx %4 to i64
-  ret i64 %5
-}
-declare x86_mmx @llvm.x86.mmx.psrl.w(x86_mmx, x86_mmx) nounwind readnone
-declare x86_mmx @llvm.x86.mmx.psrli.w(x86_mmx, i32) nounwind readnone
-
-define i64 @test_psubb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psubb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psubb %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    psubb (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psubb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psubb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    psubb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psubb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psubb %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    psubb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psubb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psubb %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    psubb (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psubb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psubb %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    psubb (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psubb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psubb %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    psubb (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psubb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psubb %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    psubb (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psubb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psubb %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    psubb (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psubb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psubb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    psubb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psubb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psubb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psubb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psubb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psubb %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psubb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psub.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psub.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.psub.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_psubd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psubd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psubd %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    psubd (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psubd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psubd %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    psubd (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psubd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psubd %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    psubd (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psubd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psubd %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    psubd (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psubd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psubd %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    psubd (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psubd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psubd %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    psubd (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psubd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psubd %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    psubd (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psubd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psubd %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    psubd (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psubd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psubd %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    psubd (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psubd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psubd %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psubd (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psubd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psubd %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psubd (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psub.d(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psub.d(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.psub.d(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_psubq(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psubq:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psubq %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    psubq (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psubq:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psubq %mm1, %mm0 # sched: [2:1.00]
-; ATOM-NEXT:    psubq (%rdi), %mm0 # sched: [3:1.50]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psubq:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psubq %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    psubq (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psubq:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psubq %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    psubq (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psubq:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psubq %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    psubq (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psubq:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psubq %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    psubq (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psubq:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psubq %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    psubq (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psubq:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psubq %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    psubq (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psubq:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psubq %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    psubq (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psubq:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psubq %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psubq (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psubq:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psubq %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psubq (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psub.q(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psub.q(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.psub.q(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_psubsb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psubsb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psubsb %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    psubsb (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psubsb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psubsb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    psubsb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psubsb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psubsb %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    psubsb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psubsb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psubsb %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    psubsb (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psubsb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psubsb %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    psubsb (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psubsb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psubsb %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    psubsb (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psubsb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psubsb %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    psubsb (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psubsb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psubsb %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    psubsb (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psubsb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psubsb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    psubsb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psubsb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psubsb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psubsb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psubsb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psubsb %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psubsb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psubs.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psubs.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.psubs.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_psubsw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psubsw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psubsw %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    psubsw (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psubsw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psubsw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    psubsw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psubsw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psubsw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    psubsw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psubsw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psubsw %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    psubsw (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psubsw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psubsw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    psubsw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psubsw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psubsw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    psubsw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psubsw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psubsw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    psubsw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psubsw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psubsw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    psubsw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psubsw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psubsw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    psubsw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psubsw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psubsw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psubsw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psubsw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psubsw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psubsw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psubs.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psubs.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.psubs.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_psubusb(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psubusb:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psubusb %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    psubusb (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psubusb:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psubusb %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    psubusb (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psubusb:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psubusb %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    psubusb (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psubusb:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psubusb %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    psubusb (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psubusb:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psubusb %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    psubusb (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psubusb:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psubusb %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    psubusb (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psubusb:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psubusb %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    psubusb (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psubusb:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psubusb %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    psubusb (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psubusb:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psubusb %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    psubusb (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psubusb:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psubusb %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psubusb (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psubusb:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psubusb %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psubusb (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psubus.b(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psubus.b(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.psubus.b(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_psubusw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psubusw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psubusw %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    psubusw (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psubusw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psubusw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    psubusw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psubusw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psubusw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    psubusw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psubusw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psubusw %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    psubusw (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psubusw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psubusw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    psubusw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psubusw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psubusw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    psubusw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psubusw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psubusw %mm1, %mm0 # sched: [1:1.00]
-; SKYLAKE-NEXT:    psubusw (%rdi), %mm0 # sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psubusw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psubusw %mm1, %mm0 # sched: [1:1.00]
-; SKX-NEXT:    psubusw (%rdi), %mm0 # sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psubusw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psubusw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    psubusw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psubusw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psubusw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psubusw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psubusw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psubusw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psubusw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psubus.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psubus.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.psubus.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_psubw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_psubw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    psubw %mm1, %mm0 # sched: [3:1.00]
-; GENERIC-NEXT:    psubw (%rdi), %mm0 # sched: [8:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_psubw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    psubw %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    psubw (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_psubw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    psubw %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    psubw (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_psubw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    psubw %mm1, %mm0 # sched: [3:1.00]
-; SANDY-NEXT:    psubw (%rdi), %mm0 # sched: [8:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_psubw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    psubw %mm1, %mm0 # sched: [1:0.50]
-; HASWELL-NEXT:    psubw (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_psubw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    psubw %mm1, %mm0 # sched: [1:0.50]
-; BROADWELL-NEXT:    psubw (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_psubw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    psubw %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    psubw (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_psubw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    psubw %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    psubw (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_psubw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    psubw %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    psubw (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_psubw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    psubw %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    psubw (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_psubw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    psubw %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    psubw (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.psub.w(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.psub.w(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.psub.w(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_punpckhbw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_punpckhbw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    punpckhbw %mm1, %mm0 # mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7] sched: [1:1.00]
-; GENERIC-NEXT:    punpckhbw (%rdi), %mm0 # mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7] sched: [6:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_punpckhbw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    punpckhbw %mm1, %mm0 # mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7] sched: [1:0.50]
-; ATOM-NEXT:    punpckhbw (%rdi), %mm0 # mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7] sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_punpckhbw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    punpckhbw %mm1, %mm0 # mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7] sched: [1:1.00]
-; SLM-NEXT:    punpckhbw (%rdi), %mm0 # mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7] sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_punpckhbw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    punpckhbw %mm1, %mm0 # mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7] sched: [1:1.00]
-; SANDY-NEXT:    punpckhbw (%rdi), %mm0 # mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7] sched: [6:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_punpckhbw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    punpckhbw %mm1, %mm0 # mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7] sched: [1:1.00]
-; HASWELL-NEXT:    punpckhbw (%rdi), %mm0 # mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7] sched: [6:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_punpckhbw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    punpckhbw %mm1, %mm0 # mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7] sched: [1:1.00]
-; BROADWELL-NEXT:    punpckhbw (%rdi), %mm0 # mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7] sched: [6:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_punpckhbw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    punpckhbw %mm1, %mm0 # mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7] sched: [1:1.00]
-; SKYLAKE-NEXT:    punpckhbw (%rdi), %mm0 # mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7] sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_punpckhbw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    punpckhbw %mm1, %mm0 # mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7] sched: [1:1.00]
-; SKX-NEXT:    punpckhbw (%rdi), %mm0 # mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7] sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_punpckhbw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    punpckhbw %mm1, %mm0 # mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7] sched: [2:0.50]
-; BDVER2-NEXT:    punpckhbw (%rdi), %mm0 # mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7] sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_punpckhbw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    punpckhbw %mm1, %mm0 # mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7] sched: [1:0.50]
-; BTVER2-NEXT:    punpckhbw (%rdi), %mm0 # mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7] sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_punpckhbw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    punpckhbw %mm1, %mm0 # mm0 = mm0[4],mm1[4],mm0[5],mm1[5],mm0[6],mm1[6],mm0[7],mm1[7] sched: [1:0.25]
-; ZNVER1-NEXT:    punpckhbw (%rdi), %mm0 # mm0 = mm0[4],mem[4],mm0[5],mem[5],mm0[6],mem[6],mm0[7],mem[7] sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.punpckhbw(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.punpckhbw(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.punpckhbw(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_punpckhdq(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_punpckhdq:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    punpckhdq %mm1, %mm0 # mm0 = mm0[1],mm1[1] sched: [1:1.00]
-; GENERIC-NEXT:    punpckhdq (%rdi), %mm0 # mm0 = mm0[1],mem[1] sched: [6:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_punpckhdq:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    punpckhdq %mm1, %mm0 # mm0 = mm0[1],mm1[1] sched: [1:0.50]
-; ATOM-NEXT:    punpckhdq (%rdi), %mm0 # mm0 = mm0[1],mem[1] sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_punpckhdq:
-; SLM:       # %bb.0:
-; SLM-NEXT:    punpckhdq %mm1, %mm0 # mm0 = mm0[1],mm1[1] sched: [1:1.00]
-; SLM-NEXT:    punpckhdq (%rdi), %mm0 # mm0 = mm0[1],mem[1] sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_punpckhdq:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    punpckhdq %mm1, %mm0 # mm0 = mm0[1],mm1[1] sched: [1:1.00]
-; SANDY-NEXT:    punpckhdq (%rdi), %mm0 # mm0 = mm0[1],mem[1] sched: [6:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_punpckhdq:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    punpckhdq %mm1, %mm0 # mm0 = mm0[1],mm1[1] sched: [1:1.00]
-; HASWELL-NEXT:    punpckhdq (%rdi), %mm0 # mm0 = mm0[1],mem[1] sched: [6:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_punpckhdq:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    punpckhdq %mm1, %mm0 # mm0 = mm0[1],mm1[1] sched: [1:1.00]
-; BROADWELL-NEXT:    punpckhdq (%rdi), %mm0 # mm0 = mm0[1],mem[1] sched: [6:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_punpckhdq:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    punpckhdq %mm1, %mm0 # mm0 = mm0[1],mm1[1] sched: [1:1.00]
-; SKYLAKE-NEXT:    punpckhdq (%rdi), %mm0 # mm0 = mm0[1],mem[1] sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_punpckhdq:
-; SKX:       # %bb.0:
-; SKX-NEXT:    punpckhdq %mm1, %mm0 # mm0 = mm0[1],mm1[1] sched: [1:1.00]
-; SKX-NEXT:    punpckhdq (%rdi), %mm0 # mm0 = mm0[1],mem[1] sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_punpckhdq:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    punpckhdq %mm1, %mm0 # mm0 = mm0[1],mm1[1] sched: [2:0.50]
-; BDVER2-NEXT:    punpckhdq (%rdi), %mm0 # mm0 = mm0[1],mem[1] sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_punpckhdq:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    punpckhdq %mm1, %mm0 # mm0 = mm0[1],mm1[1] sched: [1:0.50]
-; BTVER2-NEXT:    punpckhdq (%rdi), %mm0 # mm0 = mm0[1],mem[1] sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_punpckhdq:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    punpckhdq %mm1, %mm0 # mm0 = mm0[1],mm1[1] sched: [1:0.25]
-; ZNVER1-NEXT:    punpckhdq (%rdi), %mm0 # mm0 = mm0[1],mem[1] sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.punpckhdq(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.punpckhdq(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.punpckhdq(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_punpckhwd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_punpckhwd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    punpckhwd %mm1, %mm0 # mm0 = mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; GENERIC-NEXT:    punpckhwd (%rdi), %mm0 # mm0 = mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_punpckhwd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    punpckhwd %mm1, %mm0 # mm0 = mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:0.50]
-; ATOM-NEXT:    punpckhwd (%rdi), %mm0 # mm0 = mm0[2],mem[2],mm0[3],mem[3] sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_punpckhwd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    punpckhwd %mm1, %mm0 # mm0 = mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; SLM-NEXT:    punpckhwd (%rdi), %mm0 # mm0 = mm0[2],mem[2],mm0[3],mem[3] sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_punpckhwd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    punpckhwd %mm1, %mm0 # mm0 = mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; SANDY-NEXT:    punpckhwd (%rdi), %mm0 # mm0 = mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_punpckhwd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    punpckhwd %mm1, %mm0 # mm0 = mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; HASWELL-NEXT:    punpckhwd (%rdi), %mm0 # mm0 = mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_punpckhwd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    punpckhwd %mm1, %mm0 # mm0 = mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; BROADWELL-NEXT:    punpckhwd (%rdi), %mm0 # mm0 = mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_punpckhwd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    punpckhwd %mm1, %mm0 # mm0 = mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; SKYLAKE-NEXT:    punpckhwd (%rdi), %mm0 # mm0 = mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_punpckhwd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    punpckhwd %mm1, %mm0 # mm0 = mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; SKX-NEXT:    punpckhwd (%rdi), %mm0 # mm0 = mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_punpckhwd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    punpckhwd %mm1, %mm0 # mm0 = mm0[2],mm1[2],mm0[3],mm1[3] sched: [2:0.50]
-; BDVER2-NEXT:    punpckhwd (%rdi), %mm0 # mm0 = mm0[2],mem[2],mm0[3],mem[3] sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_punpckhwd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    punpckhwd %mm1, %mm0 # mm0 = mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:0.50]
-; BTVER2-NEXT:    punpckhwd (%rdi), %mm0 # mm0 = mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_punpckhwd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    punpckhwd %mm1, %mm0 # mm0 = mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:0.25]
-; ZNVER1-NEXT:    punpckhwd (%rdi), %mm0 # mm0 = mm0[2],mem[2],mm0[3],mem[3] sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.punpckhwd(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.punpckhwd(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.punpckhwd(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_punpcklbw(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_punpcklbw:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    punpcklbw %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; GENERIC-NEXT:    punpcklbw (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_punpcklbw:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    punpcklbw %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; ATOM-NEXT:    punpcklbw (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3] sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_punpcklbw:
-; SLM:       # %bb.0:
-; SLM-NEXT:    punpcklbw %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; SLM-NEXT:    punpcklbw (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3] sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_punpcklbw:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    punpcklbw %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; SANDY-NEXT:    punpcklbw (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_punpcklbw:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    punpcklbw %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; HASWELL-NEXT:    punpcklbw (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_punpcklbw:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    punpcklbw %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; BROADWELL-NEXT:    punpcklbw (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_punpcklbw:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    punpcklbw %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; SKYLAKE-NEXT:    punpcklbw (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_punpcklbw:
-; SKX:       # %bb.0:
-; SKX-NEXT:    punpcklbw %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:1.00]
-; SKX-NEXT:    punpcklbw (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_punpcklbw:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    punpcklbw %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3] sched: [2:0.50]
-; BDVER2-NEXT:    punpcklbw (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3] sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_punpcklbw:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    punpcklbw %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:0.50]
-; BTVER2-NEXT:    punpcklbw (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3] sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_punpcklbw:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    punpcklbw %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1],mm0[2],mm1[2],mm0[3],mm1[3] sched: [1:0.25]
-; ZNVER1-NEXT:    punpcklbw (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1],mm0[2],mem[2],mm0[3],mem[3] sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.punpcklbw(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.punpcklbw(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.punpcklbw(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_punpckldq(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_punpckldq:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    punpckldq %mm1, %mm0 # mm0 = mm0[0],mm1[0] sched: [1:1.00]
-; GENERIC-NEXT:    punpckldq (%rdi), %mm0 # mm0 = mm0[0],mem[0] sched: [6:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_punpckldq:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    punpckldq %mm1, %mm0 # mm0 = mm0[0],mm1[0] sched: [1:1.00]
-; ATOM-NEXT:    punpckldq (%rdi), %mm0 # mm0 = mm0[0],mem[0] sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_punpckldq:
-; SLM:       # %bb.0:
-; SLM-NEXT:    punpckldq %mm1, %mm0 # mm0 = mm0[0],mm1[0] sched: [1:1.00]
-; SLM-NEXT:    punpckldq (%rdi), %mm0 # mm0 = mm0[0],mem[0] sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_punpckldq:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    punpckldq %mm1, %mm0 # mm0 = mm0[0],mm1[0] sched: [1:1.00]
-; SANDY-NEXT:    punpckldq (%rdi), %mm0 # mm0 = mm0[0],mem[0] sched: [6:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_punpckldq:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    punpckldq %mm1, %mm0 # mm0 = mm0[0],mm1[0] sched: [1:1.00]
-; HASWELL-NEXT:    punpckldq (%rdi), %mm0 # mm0 = mm0[0],mem[0] sched: [6:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_punpckldq:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    punpckldq %mm1, %mm0 # mm0 = mm0[0],mm1[0] sched: [1:1.00]
-; BROADWELL-NEXT:    punpckldq (%rdi), %mm0 # mm0 = mm0[0],mem[0] sched: [6:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_punpckldq:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    punpckldq %mm1, %mm0 # mm0 = mm0[0],mm1[0] sched: [1:1.00]
-; SKYLAKE-NEXT:    punpckldq (%rdi), %mm0 # mm0 = mm0[0],mem[0] sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_punpckldq:
-; SKX:       # %bb.0:
-; SKX-NEXT:    punpckldq %mm1, %mm0 # mm0 = mm0[0],mm1[0] sched: [1:1.00]
-; SKX-NEXT:    punpckldq (%rdi), %mm0 # mm0 = mm0[0],mem[0] sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_punpckldq:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    punpckldq %mm1, %mm0 # mm0 = mm0[0],mm1[0] sched: [2:0.50]
-; BDVER2-NEXT:    punpckldq (%rdi), %mm0 # mm0 = mm0[0],mem[0] sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_punpckldq:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    punpckldq %mm1, %mm0 # mm0 = mm0[0],mm1[0] sched: [1:0.50]
-; BTVER2-NEXT:    punpckldq (%rdi), %mm0 # mm0 = mm0[0],mem[0] sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_punpckldq:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    punpckldq %mm1, %mm0 # mm0 = mm0[0],mm1[0] sched: [1:0.25]
-; ZNVER1-NEXT:    punpckldq (%rdi), %mm0 # mm0 = mm0[0],mem[0] sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.punpckldq(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.punpckldq(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.punpckldq(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_punpcklwd(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_punpcklwd:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    punpcklwd %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1] sched: [1:1.00]
-; GENERIC-NEXT:    punpcklwd (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1] sched: [6:1.00]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_punpcklwd:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    punpcklwd %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1] sched: [1:1.00]
-; ATOM-NEXT:    punpcklwd (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1] sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_punpcklwd:
-; SLM:       # %bb.0:
-; SLM-NEXT:    punpcklwd %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1] sched: [1:1.00]
-; SLM-NEXT:    punpcklwd (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1] sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_punpcklwd:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    punpcklwd %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1] sched: [1:1.00]
-; SANDY-NEXT:    punpcklwd (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1] sched: [6:1.00]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_punpcklwd:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    punpcklwd %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1] sched: [1:1.00]
-; HASWELL-NEXT:    punpcklwd (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1] sched: [6:1.00]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_punpcklwd:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    punpcklwd %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1] sched: [1:1.00]
-; BROADWELL-NEXT:    punpcklwd (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1] sched: [6:1.00]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_punpcklwd:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    punpcklwd %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1] sched: [1:1.00]
-; SKYLAKE-NEXT:    punpcklwd (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1] sched: [6:1.00]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_punpcklwd:
-; SKX:       # %bb.0:
-; SKX-NEXT:    punpcklwd %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1] sched: [1:1.00]
-; SKX-NEXT:    punpcklwd (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1] sched: [6:1.00]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_punpcklwd:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    punpcklwd %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1] sched: [2:0.50]
-; BDVER2-NEXT:    punpcklwd (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1] sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_punpcklwd:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    punpcklwd %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1] sched: [1:0.50]
-; BTVER2-NEXT:    punpcklwd (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1] sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_punpcklwd:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    punpcklwd %mm1, %mm0 # mm0 = mm0[0],mm1[0],mm0[1],mm1[1] sched: [1:0.25]
-; ZNVER1-NEXT:    punpcklwd (%rdi), %mm0 # mm0 = mm0[0],mem[0],mm0[1],mem[1] sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.punpcklwd(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.punpcklwd(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.punpcklwd(x86_mmx, x86_mmx) nounwind readnone
-
-define i64 @test_pxor(x86_mmx %a0, x86_mmx %a1, x86_mmx* %a2) optsize {
-; GENERIC-LABEL: test_pxor:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pxor %mm1, %mm0 # sched: [1:0.33]
-; GENERIC-NEXT:    pxor (%rdi), %mm0 # sched: [6:0.50]
-; GENERIC-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_pxor:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    pxor %mm1, %mm0 # sched: [1:0.50]
-; ATOM-NEXT:    pxor (%rdi), %mm0 # sched: [1:1.00]
-; ATOM-NEXT:    movq %mm0, %rax # sched: [3:3.00]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_pxor:
-; SLM:       # %bb.0:
-; SLM-NEXT:    pxor %mm1, %mm0 # sched: [1:0.50]
-; SLM-NEXT:    pxor (%rdi), %mm0 # sched: [4:1.00]
-; SLM-NEXT:    movq %mm0, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_pxor:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    pxor %mm1, %mm0 # sched: [1:0.33]
-; SANDY-NEXT:    pxor (%rdi), %mm0 # sched: [6:0.50]
-; SANDY-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_pxor:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    pxor %mm1, %mm0 # sched: [1:0.33]
-; HASWELL-NEXT:    pxor (%rdi), %mm0 # sched: [6:0.50]
-; HASWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_pxor:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    pxor %mm1, %mm0 # sched: [1:0.33]
-; BROADWELL-NEXT:    pxor (%rdi), %mm0 # sched: [6:0.50]
-; BROADWELL-NEXT:    movq %mm0, %rax # sched: [1:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_pxor:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    pxor %mm1, %mm0 # sched: [1:0.50]
-; SKYLAKE-NEXT:    pxor (%rdi), %mm0 # sched: [6:0.50]
-; SKYLAKE-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_pxor:
-; SKX:       # %bb.0:
-; SKX-NEXT:    pxor %mm1, %mm0 # sched: [1:0.50]
-; SKX-NEXT:    pxor (%rdi), %mm0 # sched: [6:0.50]
-; SKX-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_pxor:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    pxor %mm1, %mm0 # sched: [2:0.50]
-; BDVER2-NEXT:    pxor (%rdi), %mm0 # sched: [7:0.50]
-; BDVER2-NEXT:    movq %mm0, %rax # sched: [10:1.00]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_pxor:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    pxor %mm1, %mm0 # sched: [1:0.50]
-; BTVER2-NEXT:    pxor (%rdi), %mm0 # sched: [6:1.00]
-; BTVER2-NEXT:    movq %mm0, %rax # sched: [4:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_pxor:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pxor %mm1, %mm0 # sched: [1:0.25]
-; ZNVER1-NEXT:    pxor (%rdi), %mm0 # sched: [8:0.50]
-; ZNVER1-NEXT:    movq %mm0, %rax # sched: [2:1.00]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = call x86_mmx @llvm.x86.mmx.pxor(x86_mmx %a0, x86_mmx %a1)
-  %2 = load x86_mmx, x86_mmx *%a2, align 8
-  %3 = call x86_mmx @llvm.x86.mmx.pxor(x86_mmx %1, x86_mmx %2)
-  %4 = bitcast x86_mmx %3 to i64
-  ret i64 %4
-}
-declare x86_mmx @llvm.x86.mmx.pxor(x86_mmx, x86_mmx) nounwind readnone

Removed: llvm/trunk/test/CodeGen/X86/movbe-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/movbe-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/movbe-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/movbe-schedule.ll (removed)
@@ -1,190 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+movbe | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=atom | FileCheck %s --check-prefix=CHECK --check-prefix=ATOM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=slm | FileCheck %s --check-prefix=CHECK --check-prefix=SLM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=knl | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=btver2 | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
-
-define i16 @test_movbe_i16(i16 *%a0, i16 %a1, i16 *%a2) {
-; GENERIC-LABEL: test_movbe_i16:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    movbew (%rdi), %ax # sched: [6:0.50]
-; GENERIC-NEXT:    movbew %si, (%rdx) # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_movbe_i16:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    movbew (%rdi), %ax # sched: [1:1.00]
-; ATOM-NEXT:    movbew %si, (%rdx) # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_movbe_i16:
-; SLM:       # %bb.0:
-; SLM-NEXT:    movbew (%rdi), %ax # sched: [4:1.00]
-; SLM-NEXT:    movbew %si, (%rdx) # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; HASWELL-LABEL: test_movbe_i16:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    movbew (%rdi), %ax # sched: [6:0.50]
-; HASWELL-NEXT:    movbew %si, (%rdx) # sched: [2:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_movbe_i16:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    movbew (%rdi), %ax # sched: [6:0.50]
-; BROADWELL-NEXT:    movbew %si, (%rdx) # sched: [2:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_movbe_i16:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    movbew (%rdi), %ax # sched: [6:0.50]
-; SKYLAKE-NEXT:    movbew %si, (%rdx) # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BTVER2-LABEL: test_movbe_i16:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    movbew (%rdi), %ax # sched: [4:1.00]
-; BTVER2-NEXT:    movbew %si, (%rdx) # sched: [1:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_movbe_i16:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    movbew (%rdi), %ax # sched: [5:0.50]
-; ZNVER1-NEXT:    movbew %si, (%rdx) # sched: [5:0.50]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load i16, i16 *%a0
-  %2 = tail call i16 @llvm.bswap.i16( i16 %1 )
-  %3 = tail call i16 @llvm.bswap.i16( i16 %a1 )
-  store i16 %3, i16* %a2, align 2
-  ret i16 %2
-}
-declare i16 @llvm.bswap.i16(i16)
-
-define i32 @test_movbe_i32(i32 *%a0, i32 %a1, i32 *%a2) {
-; GENERIC-LABEL: test_movbe_i32:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    movbel (%rdi), %eax # sched: [6:0.50]
-; GENERIC-NEXT:    movbel %esi, (%rdx) # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_movbe_i32:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    movbel (%rdi), %eax # sched: [1:1.00]
-; ATOM-NEXT:    movbel %esi, (%rdx) # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_movbe_i32:
-; SLM:       # %bb.0:
-; SLM-NEXT:    movbel (%rdi), %eax # sched: [4:1.00]
-; SLM-NEXT:    movbel %esi, (%rdx) # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; HASWELL-LABEL: test_movbe_i32:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    movbel (%rdi), %eax # sched: [6:0.50]
-; HASWELL-NEXT:    movbel %esi, (%rdx) # sched: [2:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_movbe_i32:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    movbel (%rdi), %eax # sched: [6:0.50]
-; BROADWELL-NEXT:    movbel %esi, (%rdx) # sched: [2:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_movbe_i32:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    movbel (%rdi), %eax # sched: [6:0.50]
-; SKYLAKE-NEXT:    movbel %esi, (%rdx) # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BTVER2-LABEL: test_movbe_i32:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    movbel (%rdi), %eax # sched: [4:1.00]
-; BTVER2-NEXT:    movbel %esi, (%rdx) # sched: [1:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_movbe_i32:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    movbel (%rdi), %eax # sched: [5:0.50]
-; ZNVER1-NEXT:    movbel %esi, (%rdx) # sched: [5:0.50]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load i32, i32 *%a0
-  %2 = tail call i32 @llvm.bswap.i32( i32 %1 )
-  %3 = tail call i32 @llvm.bswap.i32( i32 %a1 )
-  store i32 %3, i32* %a2, align 2
-  ret i32 %2
-}
-declare i32 @llvm.bswap.i32(i32)
-
-define i64 @test_movbe_i64(i64 *%a0, i64 %a1, i64 *%a2) {
-; GENERIC-LABEL: test_movbe_i64:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    movbeq (%rdi), %rax # sched: [6:0.50]
-; GENERIC-NEXT:    movbeq %rsi, (%rdx) # sched: [1:1.00]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ATOM-LABEL: test_movbe_i64:
-; ATOM:       # %bb.0:
-; ATOM-NEXT:    movbeq (%rdi), %rax # sched: [1:1.00]
-; ATOM-NEXT:    movbeq %rsi, (%rdx) # sched: [1:1.00]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    retq # sched: [79:39.50]
-;
-; SLM-LABEL: test_movbe_i64:
-; SLM:       # %bb.0:
-; SLM-NEXT:    movbeq (%rdi), %rax # sched: [4:1.00]
-; SLM-NEXT:    movbeq %rsi, (%rdx) # sched: [1:1.00]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; HASWELL-LABEL: test_movbe_i64:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    movbeq (%rdi), %rax # sched: [6:0.50]
-; HASWELL-NEXT:    movbeq %rsi, (%rdx) # sched: [2:1.00]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_movbe_i64:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    movbeq (%rdi), %rax # sched: [6:0.50]
-; BROADWELL-NEXT:    movbeq %rsi, (%rdx) # sched: [2:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_movbe_i64:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    movbeq (%rdi), %rax # sched: [6:0.50]
-; SKYLAKE-NEXT:    movbeq %rsi, (%rdx) # sched: [2:1.00]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BTVER2-LABEL: test_movbe_i64:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    movbeq (%rdi), %rax # sched: [4:1.00]
-; BTVER2-NEXT:    movbeq %rsi, (%rdx) # sched: [1:1.00]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_movbe_i64:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    movbeq (%rdi), %rax # sched: [5:0.50]
-; ZNVER1-NEXT:    movbeq %rsi, (%rdx) # sched: [5:0.50]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load i64, i64 *%a0
-  %2 = tail call i64 @llvm.bswap.i64( i64 %1 )
-  %3 = tail call i64 @llvm.bswap.i64( i64 %a1 )
-  store i64 %3, i64* %a2, align 2
-  ret i64 %2
-}
-declare i64 @llvm.bswap.i64(i64)

Modified: llvm/trunk/test/CodeGen/X86/mul-constant-i32.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/mul-constant-i32.ll?rev=353043&r1=353042&r2=353043&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/mul-constant-i32.ll (original)
+++ llvm/trunk/test/CodeGen/X86/mul-constant-i32.ll Mon Feb  4 04:51:26 2019
@@ -1,12 +1,12 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=i686-unknown | FileCheck %s --check-prefix=X86
-; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule=true -mcpu=haswell| FileCheck %s --check-prefix=X64-HSW
-; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule=true -mcpu=btver2| FileCheck %s --check-prefix=X64-JAG
-; RUN: llc < %s -mtriple=i686-unknown -mul-constant-optimization=false | FileCheck %s --check-prefix=X86-NOOPT
-; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -print-schedule=true -mcpu=haswell| FileCheck %s --check-prefix=HSW-NOOPT
-; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -print-schedule=true -mcpu=btver2| FileCheck %s --check-prefix=JAG-NOOPT
-; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule=true -mcpu=slm| FileCheck %s --check-prefix=X64-SLM
-; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -print-schedule=true -mcpu=slm| FileCheck %s --check-prefix=SLM-NOOPT
+; RUN: llc < %s -mtriple=i686-unknown                                                  | FileCheck %s --check-prefix=X86
+; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=haswell                                  | FileCheck %s --check-prefixes=X64,X64-HSW
+; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=btver2                                   | FileCheck %s --check-prefixes=X64,X64-JAG
+; RUN: llc < %s -mtriple=i686-unknown -mul-constant-optimization=false                 | FileCheck %s --check-prefix=X86-NOOPT
+; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -mcpu=haswell | FileCheck %s --check-prefixes=X64-NOOPT,HSW-NOOPT
+; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -mcpu=btver2  | FileCheck %s --check-prefixes=X64-NOOPT,JAG-NOOPT
+; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=slm                                      | FileCheck %s --check-prefixes=X64,X64-SLM
+; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -mcpu=slm     | FileCheck %s --check-prefixes=X64-NOOPT,SLM-NOOPT
 
 define i32 @test_mul_by_1(i32 %x) {
 ; X86-LABEL: test_mul_by_1:
@@ -14,40 +14,20 @@ define i32 @test_mul_by_1(i32 %x) {
 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_1:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_1:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_1:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_1:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    movl {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_1:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_1:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_1:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_1:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_1:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    movl %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 1
   ret i32 %mul
 }
@@ -59,17 +39,11 @@ define i32 @test_mul_by_2(i32 %x) {
 ; X86-NEXT:    addl %eax, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_2:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_2:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi), %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_2:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    leal (%rdi,%rdi), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_2:
 ; X86-NOOPT:       # %bb.0:
@@ -77,29 +51,11 @@ define i32 @test_mul_by_2(i32 %x) {
 ; X86-NOOPT-NEXT:    addl %eax, %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_2:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; HSW-NOOPT-NEXT:    leal (%rdi,%rdi), %eax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_2:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT:    leal (%rdi,%rdi), %eax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_2:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    leal (%rdi,%rdi), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_2:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NOOPT-NEXT:    leal (%rdi,%rdi), %eax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_2:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NOOPT-NEXT:    leal (%rdi,%rdi), %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 2
   ret i32 %mul
 }
@@ -111,46 +67,22 @@ define i32 @test_mul_by_3(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,2), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_3:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_3:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_3:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    leal (%rdi,%rdi,2), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_3:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $3, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_3:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; HSW-NOOPT-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_3:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_3:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_3:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NOOPT-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_3:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NOOPT-NEXT:    leal (%rdi,%rdi,2), %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 3
   ret i32 %mul
 }
@@ -162,17 +94,11 @@ define i32 @test_mul_by_4(i32 %x) {
 ; X86-NEXT:    shll $2, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_4:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_4:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_4:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    leal (,%rdi,4), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_4:
 ; X86-NOOPT:       # %bb.0:
@@ -180,29 +106,11 @@ define i32 @test_mul_by_4(i32 %x) {
 ; X86-NOOPT-NEXT:    shll $2, %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_4:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; HSW-NOOPT-NEXT:    leal (,%rdi,4), %eax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_4:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT:    leal (,%rdi,4), %eax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_4:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    leal (,%rdi,4), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_4:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NOOPT-NEXT:    leal (,%rdi,4), %eax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_4:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NOOPT-NEXT:    leal (,%rdi,4), %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 4
   ret i32 %mul
 }
@@ -214,46 +122,22 @@ define i32 @test_mul_by_5(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,4), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_5:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_5:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_5:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_5:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $5, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_5:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; HSW-NOOPT-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_5:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_5:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_5:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NOOPT-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_5:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NOOPT-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 5
   ret i32 %mul
 }
@@ -266,46 +150,22 @@ define i32 @test_mul_by_6(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,2), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_6:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    addl %edi, %edi # sched: [1:0.25]
-; X64-HSW-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_6:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    addl %edi, %edi # sched: [1:0.50]
-; X64-JAG-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_6:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    addl %edi, %edi
+; X64-NEXT:    leal (%rdi,%rdi,2), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_6:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $6, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_6:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $6, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_6:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $6, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_6:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    addl %edi, %edi # sched: [1:0.50]
-; X64-SLM-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_6:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $6, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_6:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $6, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 6
   ret i32 %mul
 }
@@ -318,46 +178,22 @@ define i32 @test_mul_by_7(i32 %x) {
 ; X86-NEXT:    subl %ecx, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_7:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    subl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_7:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_7:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    leal (,%rdi,8), %eax
+; X64-NEXT:    subl %edi, %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_7:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $7, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_7:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $7, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_7:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $7, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_7:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    leal (,%rdi,8), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_7:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $7, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_7:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $7, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 7
   ret i32 %mul
 }
@@ -369,17 +205,11 @@ define i32 @test_mul_by_8(i32 %x) {
 ; X86-NEXT:    shll $3, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_8:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_8:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_8:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    leal (,%rdi,8), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_8:
 ; X86-NOOPT:       # %bb.0:
@@ -387,29 +217,11 @@ define i32 @test_mul_by_8(i32 %x) {
 ; X86-NOOPT-NEXT:    shll $3, %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_8:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; HSW-NOOPT-NEXT:    leal (,%rdi,8), %eax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_8:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT:    leal (,%rdi,8), %eax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_8:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    leal (,%rdi,8), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_8:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NOOPT-NEXT:    leal (,%rdi,8), %eax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_8:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NOOPT-NEXT:    leal (,%rdi,8), %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 8
   ret i32 %mul
 }
@@ -421,46 +233,22 @@ define i32 @test_mul_by_9(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,8), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_9:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_9:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_9:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_9:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $9, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_9:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; HSW-NOOPT-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_9:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_9:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_9:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NOOPT-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_9:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NOOPT-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 9
   ret i32 %mul
 }
@@ -473,46 +261,22 @@ define i32 @test_mul_by_10(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,4), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_10:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    addl %edi, %edi # sched: [1:0.25]
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_10:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    addl %edi, %edi # sched: [1:0.50]
-; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_10:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    addl %edi, %edi
+; X64-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_10:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $10, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_10:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $10, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_10:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $10, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_10:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    addl %edi, %edi # sched: [1:0.50]
-; X64-SLM-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_10:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $10, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_10:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $10, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 10
   ret i32 %mul
 }
@@ -528,41 +292,31 @@ define i32 @test_mul_by_11(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_11:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rax,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-HSW-NEXT:    leal (%rdi,%rax,2), %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_11:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rdi,%rax,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-JAG-NEXT:    leal (%rdi,%rax,2), %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_11:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $11, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_11:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $11, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_11:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $11, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_11:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $11, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_11:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $11, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_11:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $11, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $11, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 11
   ret i32 %mul
 }
@@ -575,46 +329,22 @@ define i32 @test_mul_by_12(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,2), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_12:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    shll $2, %edi # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_12:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    shll $2, %edi # sched: [1:0.50]
-; X64-JAG-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_12:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    shll $2, %edi
+; X64-NEXT:    leal (%rdi,%rdi,2), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_12:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $12, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_12:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $12, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_12:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $12, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_12:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    shll $2, %edi # sched: [1:1.00]
-; X64-SLM-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_12:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $12, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_12:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $12, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 12
   ret i32 %mul
 }
@@ -630,41 +360,31 @@ define i32 @test_mul_by_13(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_13:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rax,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,2), %eax
+; X64-HSW-NEXT:    leal (%rdi,%rax,4), %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_13:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rdi,%rax,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,2), %eax
+; X64-JAG-NEXT:    leal (%rdi,%rax,4), %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_13:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $13, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_13:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $13, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_13:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $13, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_13:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $13, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_13:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $13, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_13:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $13, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $13, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 13
   ret i32 %mul
 }
@@ -679,49 +399,23 @@ define i32 @test_mul_by_14(i32 %x) {
 ; X86-NEXT:    subl %ecx, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_14:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    shll $4, %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    subl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    subl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_14:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    shll $4, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_14:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shll $4, %eax
+; X64-NEXT:    subl %edi, %eax
+; X64-NEXT:    subl %edi, %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_14:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $14, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_14:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $14, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_14:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $14, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_14:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    shll $4, %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_14:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $14, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_14:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $14, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 14
   ret i32 %mul
 }
@@ -734,46 +428,22 @@ define i32 @test_mul_by_15(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,2), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_15:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rax,%rax,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_15:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rax,%rax,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_15:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-NEXT:    leal (%rax,%rax,2), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_15:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $15, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_15:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $15, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_15:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $15, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_15:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    leal (%rax,%rax,2), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_15:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $15, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_15:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $15, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 15
   ret i32 %mul
 }
@@ -785,17 +455,11 @@ define i32 @test_mul_by_16(i32 %x) {
 ; X86-NEXT:    shll $4, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_16:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    shll $4, %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_16:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    shll $4, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_16:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shll $4, %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_16:
 ; X86-NOOPT:       # %bb.0:
@@ -803,29 +467,11 @@ define i32 @test_mul_by_16(i32 %x) {
 ; X86-NOOPT-NEXT:    shll $4, %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_16:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; HSW-NOOPT-NEXT:    shll $4, %eax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_16:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    shll $4, %eax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_16:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    shll $4, %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_16:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; SLM-NOOPT-NEXT:    shll $4, %eax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_16:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    movl %edi, %eax
+; X64-NOOPT-NEXT:    shll $4, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 16
   ret i32 %mul
 }
@@ -839,49 +485,23 @@ define i32 @test_mul_by_17(i32 %x) {
 ; X86-NEXT:    addl %ecx, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_17:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    shll $4, %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rax,%rdi), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_17:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    shll $4, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    leal (%rax,%rdi), %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_17:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shll $4, %eax
+; X64-NEXT:    leal (%rax,%rdi), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_17:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $17, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_17:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $17, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_17:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $17, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_17:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    shll $4, %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    leal (%rax,%rdi), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_17:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $17, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_17:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $17, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 17
   ret i32 %mul
 }
@@ -894,46 +514,22 @@ define i32 @test_mul_by_18(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,8), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_18:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    addl %edi, %edi # sched: [1:0.25]
-; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_18:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    addl %edi, %edi # sched: [1:0.50]
-; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_18:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    addl %edi, %edi
+; X64-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_18:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $18, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_18:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $18, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_18:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $18, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_18:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    addl %edi, %edi # sched: [1:0.50]
-; X64-SLM-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_18:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $18, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_18:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $18, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 18
   ret i32 %mul
 }
@@ -949,41 +545,31 @@ define i32 @test_mul_by_19(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_19:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rax,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-HSW-NEXT:    leal (%rdi,%rax,2), %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_19:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rdi,%rax,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-JAG-NEXT:    leal (%rdi,%rax,2), %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_19:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $19, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_19:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $19, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_19:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $19, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_19:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $19, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_19:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $19, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_19:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $19, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $19, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 19
   ret i32 %mul
 }
@@ -996,46 +582,22 @@ define i32 @test_mul_by_20(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,4), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_20:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    shll $2, %edi # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_20:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    shll $2, %edi # sched: [1:0.50]
-; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_20:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    shll $2, %edi
+; X64-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_20:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $20, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_20:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $20, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_20:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $20, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_20:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    shll $2, %edi # sched: [1:1.00]
-; X64-SLM-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_20:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $20, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_20:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $20, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 20
   ret i32 %mul
 }
@@ -1051,41 +613,31 @@ define i32 @test_mul_by_21(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_21:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rax,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-HSW-NEXT:    leal (%rdi,%rax,4), %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_21:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rdi,%rax,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-JAG-NEXT:    leal (%rdi,%rax,4), %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_21:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $21, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_21:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $21, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_21:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $21, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_21:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $21, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_21:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $21, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_21:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $21, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $21, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 21
   ret i32 %mul
 }
@@ -1102,43 +654,33 @@ define i32 @test_mul_by_22(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_22:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rax,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    addl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-HSW-NEXT:    leal (%rdi,%rax,4), %eax
+; X64-HSW-NEXT:    addl %edi, %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_22:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rdi,%rax,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    addl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-JAG-NEXT:    leal (%rdi,%rax,4), %eax
+; X64-JAG-NEXT:    addl %edi, %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_22:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $22, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_22:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $22, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_22:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $22, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_22:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $22, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_22:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $22, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_22:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $22, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $22, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 22
   ret i32 %mul
 }
@@ -1155,43 +697,33 @@ define i32 @test_mul_by_23(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_23:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    shll $3, %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    subl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,2), %eax
+; X64-HSW-NEXT:    shll $3, %eax
+; X64-HSW-NEXT:    subl %edi, %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_23:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    shll $3, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,2), %eax
+; X64-JAG-NEXT:    shll $3, %eax
+; X64-JAG-NEXT:    subl %edi, %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_23:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $23, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_23:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $23, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_23:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $23, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_23:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $23, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_23:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $23, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_23:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $23, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $23, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 23
   ret i32 %mul
 }
@@ -1204,46 +736,22 @@ define i32 @test_mul_by_24(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,2), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_24:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    shll $3, %edi # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_24:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    shll $3, %edi # sched: [1:0.50]
-; X64-JAG-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_24:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    shll $3, %edi
+; X64-NEXT:    leal (%rdi,%rdi,2), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_24:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $24, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_24:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $24, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_24:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $24, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_24:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    shll $3, %edi # sched: [1:1.00]
-; X64-SLM-NEXT:    leal (%rdi,%rdi,2), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_24:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $24, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_24:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $24, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 24
   ret i32 %mul
 }
@@ -1256,46 +764,22 @@ define i32 @test_mul_by_25(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,4), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_25:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rax,%rax,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_25:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rax,%rax,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_25:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-NEXT:    leal (%rax,%rax,4), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_25:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $25, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_25:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $25, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_25:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $25, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_25:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    leal (%rax,%rax,4), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_25:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $25, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_25:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $25, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 25
   ret i32 %mul
 }
@@ -1312,43 +796,33 @@ define i32 @test_mul_by_26(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_26:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rax,%rax,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    addl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-HSW-NEXT:    leal (%rax,%rax,4), %eax
+; X64-HSW-NEXT:    addl %edi, %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_26:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rax,%rax,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    addl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-JAG-NEXT:    leal (%rax,%rax,4), %eax
+; X64-JAG-NEXT:    addl %edi, %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_26:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $26, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_26:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $26, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_26:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $26, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_26:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $26, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_26:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $26, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_26:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $26, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $26, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 26
   ret i32 %mul
 }
@@ -1361,46 +835,22 @@ define i32 @test_mul_by_27(i32 %x) {
 ; X86-NEXT:    leal (%eax,%eax,2), %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_27:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rax,%rax,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_27:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rax,%rax,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_27:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-NEXT:    leal (%rax,%rax,2), %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_27:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $27, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_27:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $27, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_27:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $27, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_27:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    leal (%rax,%rax,2), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_27:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $27, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_27:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $27, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 27
   ret i32 %mul
 }
@@ -1417,43 +867,33 @@ define i32 @test_mul_by_28(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_28:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rax,%rax,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    addl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-HSW-NEXT:    leal (%rax,%rax,2), %eax
+; X64-HSW-NEXT:    addl %edi, %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_28:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rax,%rax,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    addl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-JAG-NEXT:    leal (%rax,%rax,2), %eax
+; X64-JAG-NEXT:    addl %edi, %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_28:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $28, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_28:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $28, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_28:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $28, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_28:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $28, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_28:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $28, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_28:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $28, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $28, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 28
   ret i32 %mul
 }
@@ -1471,45 +911,35 @@ define i32 @test_mul_by_29(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_29:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rax,%rax,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    addl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    addl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-HSW-NEXT:    leal (%rax,%rax,2), %eax
+; X64-HSW-NEXT:    addl %edi, %eax
+; X64-HSW-NEXT:    addl %edi, %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_29:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rax,%rax,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    addl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    addl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-JAG-NEXT:    leal (%rax,%rax,2), %eax
+; X64-JAG-NEXT:    addl %edi, %eax
+; X64-JAG-NEXT:    addl %edi, %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_29:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $29, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_29:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $29, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_29:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $29, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_29:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $29, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_29:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $29, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_29:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $29, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $29, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 29
   ret i32 %mul
 }
@@ -1524,49 +954,23 @@ define i32 @test_mul_by_30(i32 %x) {
 ; X86-NEXT:    subl %ecx, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_30:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    shll $5, %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    subl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    subl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_30:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    shll $5, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_30:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shll $5, %eax
+; X64-NEXT:    subl %edi, %eax
+; X64-NEXT:    subl %edi, %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_30:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $30, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_30:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $30, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_30:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $30, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_30:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    shll $5, %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_30:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $30, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_30:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $30, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 30
   ret i32 %mul
 }
@@ -1580,46 +984,22 @@ define i32 @test_mul_by_31(i32 %x) {
 ; X86-NEXT:    subl %ecx, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_31:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    shll $5, %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    subl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_31:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    shll $5, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_31:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shll $5, %eax
+; X64-NEXT:    subl %edi, %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_31:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $31, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_31:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $31, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_31:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $31, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_31:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    shll $5, %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_31:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $31, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_31:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $31, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 31
   ret i32 %mul
 }
@@ -1631,17 +1011,11 @@ define i32 @test_mul_by_32(i32 %x) {
 ; X86-NEXT:    shll $5, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_32:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    shll $5, %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_32:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    shll $5, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_32:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shll $5, %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_32:
 ; X86-NOOPT:       # %bb.0:
@@ -1649,29 +1023,11 @@ define i32 @test_mul_by_32(i32 %x) {
 ; X86-NOOPT-NEXT:    shll $5, %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_32:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; HSW-NOOPT-NEXT:    shll $5, %eax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_32:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    shll $5, %eax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_32:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    shll $5, %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_32:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; SLM-NOOPT-NEXT:    shll $5, %eax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_32:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    movl %edi, %eax
+; X64-NOOPT-NEXT:    shll $5, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 32
   ret i32 %mul
 }
@@ -1687,41 +1043,31 @@ define i32 @test_mul_by_37(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_37:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rax,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-HSW-NEXT:    leal (%rdi,%rax,4), %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_37:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rdi,%rax,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-JAG-NEXT:    leal (%rdi,%rax,4), %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_37:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $37, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_37:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $37, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_37:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $37, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_37:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $37, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_37:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $37, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_37:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $37, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $37, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 37
   ret i32 %mul
 }
@@ -1737,41 +1083,31 @@ define i32 @test_mul_by_41(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_41:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rax,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-HSW-NEXT:    leal (%rdi,%rax,8), %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_41:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rdi,%rax,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-JAG-NEXT:    leal (%rdi,%rax,8), %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_41:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $41, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_41:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $41, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_41:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $41, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_41:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $41, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_41:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $41, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_41:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $41, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $41, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 41
   ret i32 %mul
 }
@@ -1786,49 +1122,23 @@ define i32 @test_mul_by_62(i32 %x) {
 ; X86-NEXT:    subl %ecx, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_62:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    shll $6, %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    subl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    subl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_62:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    shll $6, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_62:
+; X64:       # %bb.0:
+; X64-NEXT:    movl %edi, %eax
+; X64-NEXT:    shll $6, %eax
+; X64-NEXT:    subl %edi, %eax
+; X64-NEXT:    subl %edi, %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_62:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $62, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_62:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $62, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_62:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $62, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_62:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    shll $6, %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    subl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_62:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $62, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_62:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $62, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 62
   ret i32 %mul
 }
@@ -1845,47 +1155,37 @@ define i32 @test_mul_by_66(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_66:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    shll $6, %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rax,%rdi,2), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    movl %edi, %eax
+; X64-HSW-NEXT:    shll $6, %eax
+; X64-HSW-NEXT:    leal (%rax,%rdi,2), %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_66:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    shll $6, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    leal (%rax,%rdi,2), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    movl %edi, %eax
+; X64-JAG-NEXT:    shll $6, %eax
+; X64-JAG-NEXT:    leal (%rax,%rdi,2), %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_66:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $66, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_66:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $66, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_66:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $66, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_66:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $66, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_66:
 ; X64-SLM:       # %bb.0:
 ; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    shll $6, %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    leal (%rax,%rdi), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    addl %edi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_66:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $66, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    movl %edi, %eax
+; X64-SLM-NEXT:    shll $6, %eax
+; X64-SLM-NEXT:    leal (%rax,%rdi), %eax
+; X64-SLM-NEXT:    addl %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 66
   ret i32 %mul
 }
@@ -1901,41 +1201,31 @@ define i32 @test_mul_by_73(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_73:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rax,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-HSW-NEXT:    leal (%rdi,%rax,8), %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_73:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    leal (%rdi,%rax,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-JAG-NEXT:    leal (%rdi,%rax,8), %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_73:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $73, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_73:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $73, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_73:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $73, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_73:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $73, %edi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_73:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imull $73, %edi, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_73:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $73, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imull $73, %edi, %eax
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 73
   ret i32 %mul
 }
@@ -1952,47 +1242,33 @@ define i32 @test_mul_by_520(i32 %x) {
 ; X64-HSW-LABEL: test_mul_by_520:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    movl %edi, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    shll $9, %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rax,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    movl %edi, %eax
+; X64-HSW-NEXT:    shll $9, %eax
+; X64-HSW-NEXT:    leal (%rax,%rdi,8), %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_520:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    movl %edi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    shll $9, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    leal (%rax,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    movl %edi, %eax
+; X64-JAG-NEXT:    shll $9, %eax
+; X64-JAG-NEXT:    leal (%rax,%rdi,8), %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_520:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $520, {{[0-9]+}}(%esp), %eax # imm = 0x208
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_520:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $520, %edi, %eax # imm = 0x208
-; HSW-NOOPT-NEXT:    # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_520:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $520, %edi, %eax # imm = 0x208
-; JAG-NOOPT-NEXT:    # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_520:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $520, %edi, %eax # imm = 0x208
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_520:
 ; X64-SLM:       # %bb.0:
 ; X64-SLM-NEXT:    imull $520, %edi, %eax # imm = 0x208
-; X64-SLM-NEXT:    # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_520:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $520, %edi, %eax # imm = 0x208
-; SLM-NOOPT-NEXT:    # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    retq
   %mul = mul nsw i32 %x, 520
   ret i32 %mul
 }
@@ -2006,49 +1282,23 @@ define i32 @test_mul_by_neg10(i32 %x) {
 ; X86-NEXT:    negl %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_neg10:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    addl %edi, %edi # sched: [1:0.25]
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    negl %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_neg10:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    addl %edi, %edi # sched: [1:0.50]
-; X64-JAG-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    negl %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_neg10:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    addl %edi, %edi
+; X64-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-NEXT:    negl %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_neg10:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $-10, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_neg10:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $-10, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_neg10:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $-10, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_neg10:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    addl %edi, %edi # sched: [1:0.50]
-; X64-SLM-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    negl %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_neg10:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $-10, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_neg10:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $-10, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, -10
   ret i32 %mul
 }
@@ -2062,49 +1312,23 @@ define i32 @test_mul_by_neg36(i32 %x) {
 ; X86-NEXT:    negl %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_neg36:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    shll $2, %edi # sched: [1:0.50]
-; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    negl %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_neg36:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    shll $2, %edi # sched: [1:0.50]
-; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    negl %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-LABEL: test_mul_by_neg36:
+; X64:       # %bb.0:
+; X64-NEXT:    # kill: def $edi killed $edi def $rdi
+; X64-NEXT:    shll $2, %edi
+; X64-NEXT:    leal (%rdi,%rdi,8), %eax
+; X64-NEXT:    negl %eax
+; X64-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_neg36:
 ; X86-NOOPT:       # %bb.0:
 ; X86-NOOPT-NEXT:    imull $-36, {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_neg36:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $-36, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_neg36:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $-36, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_neg36:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    shll $2, %edi # sched: [1:1.00]
-; X64-SLM-NEXT:    leal (%rdi,%rdi,8), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    negl %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_neg36:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $-36, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_neg36:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $-36, %edi, %eax
+; X64-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, -36
   ret i32 %mul
 }
@@ -2122,20 +1346,20 @@ define i32 @test_mul_spec(i32 %x) nounwi
 ; X64-HSW-LABEL: test_mul_spec:
 ; X64-HSW:       # %bb.0:
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %ecx # sched: [1:0.50]
-; X64-HSW-NEXT:    addl $42, %ecx # sched: [1:0.25]
-; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-HSW-NEXT:    addl $2, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    imull %ecx, %eax # sched: [3:1.00]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %ecx
+; X64-HSW-NEXT:    addl $42, %ecx
+; X64-HSW-NEXT:    leal (%rdi,%rdi,4), %eax
+; X64-HSW-NEXT:    addl $2, %eax
+; X64-HSW-NEXT:    imull %ecx, %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_spec:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal 42(%rdi,%rdi,8), %ecx # sched: [2:1.00]
-; X64-JAG-NEXT:    leal 2(%rdi,%rdi,4), %eax # sched: [2:1.00]
-; X64-JAG-NEXT:    imull %ecx, %eax # sched: [3:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal 42(%rdi,%rdi,8), %ecx
+; X64-JAG-NEXT:    leal 2(%rdi,%rdi,4), %eax
+; X64-JAG-NEXT:    imull %ecx, %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_spec:
 ; X86-NOOPT:       # %bb.0:
@@ -2148,36 +1372,36 @@ define i32 @test_mul_spec(i32 %x) nounwi
 ; HSW-NOOPT-LABEL: test_mul_spec:
 ; HSW-NOOPT:       # %bb.0:
 ; HSW-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; HSW-NOOPT-NEXT:    leal (%rdi,%rdi,8), %ecx # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    addl $42, %ecx # sched: [1:0.25]
-; HSW-NOOPT-NEXT:    leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    addl $2, %eax # sched: [1:0.25]
-; HSW-NOOPT-NEXT:    imull %ecx, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
+; HSW-NOOPT-NEXT:    leal (%rdi,%rdi,8), %ecx
+; HSW-NOOPT-NEXT:    addl $42, %ecx
+; HSW-NOOPT-NEXT:    leal (%rdi,%rdi,4), %eax
+; HSW-NOOPT-NEXT:    addl $2, %eax
+; HSW-NOOPT-NEXT:    imull %ecx, %eax
+; HSW-NOOPT-NEXT:    retq
 ;
 ; JAG-NOOPT-LABEL: test_mul_spec:
 ; JAG-NOOPT:       # %bb.0:
 ; JAG-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT:    leal 42(%rdi,%rdi,8), %ecx # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    leal 2(%rdi,%rdi,4), %eax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    imull %ecx, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; JAG-NOOPT-NEXT:    leal 42(%rdi,%rdi,8), %ecx
+; JAG-NOOPT-NEXT:    leal 2(%rdi,%rdi,4), %eax
+; JAG-NOOPT-NEXT:    imull %ecx, %eax
+; JAG-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_spec:
 ; X64-SLM:       # %bb.0:
 ; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    leal 42(%rdi,%rdi,8), %ecx # sched: [1:1.00]
-; X64-SLM-NEXT:    leal 2(%rdi,%rdi,4), %eax # sched: [1:1.00]
-; X64-SLM-NEXT:    imull %ecx, %eax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    leal 42(%rdi,%rdi,8), %ecx
+; X64-SLM-NEXT:    leal 2(%rdi,%rdi,4), %eax
+; X64-SLM-NEXT:    imull %ecx, %eax
+; X64-SLM-NEXT:    retq
 ;
 ; SLM-NOOPT-LABEL: test_mul_spec:
 ; SLM-NOOPT:       # %bb.0:
 ; SLM-NOOPT-NEXT:    # kill: def $edi killed $edi def $rdi
-; SLM-NOOPT-NEXT:    leal 42(%rdi,%rdi,8), %ecx # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    leal 2(%rdi,%rdi,4), %eax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    imull %ecx, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; SLM-NOOPT-NEXT:    leal 42(%rdi,%rdi,8), %ecx
+; SLM-NOOPT-NEXT:    leal 2(%rdi,%rdi,4), %eax
+; SLM-NOOPT-NEXT:    imull %ecx, %eax
+; SLM-NOOPT-NEXT:    retq
   %mul = mul nsw i32 %x, 9
   %add = add nsw i32 %mul, 42
   %mul2 = mul nsw i32 %x, 5
@@ -2200,19 +1424,19 @@ define i32 @mul_neg_fold(i32 %a, i32 %b)
 ;
 ; X64-HSW-LABEL: mul_neg_fold:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movl %esi, %eax # sched: [1:0.25]
+; X64-HSW-NEXT:    movl %esi, %eax
 ; X64-HSW-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %ecx # sched: [1:0.50]
-; X64-HSW-NEXT:    subl %ecx, %eax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leal (%rdi,%rdi,8), %ecx
+; X64-HSW-NEXT:    subl %ecx, %eax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: mul_neg_fold:
 ; X64-JAG:       # %bb.0:
 ; X64-JAG-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %ecx # sched: [2:1.00]
-; X64-JAG-NEXT:    movl %esi, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    subl %ecx, %eax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leal (%rdi,%rdi,8), %ecx
+; X64-JAG-NEXT:    movl %esi, %eax
+; X64-JAG-NEXT:    subl %ecx, %eax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: mul_neg_fold:
 ; X86-NOOPT:       # %bb.0:
@@ -2220,31 +1444,19 @@ define i32 @mul_neg_fold(i32 %a, i32 %b)
 ; X86-NOOPT-NEXT:    addl {{[0-9]+}}(%esp), %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: mul_neg_fold:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imull $-9, %edi, %eax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    addl %esi, %eax # sched: [1:0.25]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: mul_neg_fold:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imull $-9, %edi, %eax # sched: [3:1.00]
-; JAG-NOOPT-NEXT:    addl %esi, %eax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: mul_neg_fold:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imull $-9, %edi, %eax
+; X64-NOOPT-NEXT:    addl %esi, %eax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: mul_neg_fold:
 ; X64-SLM:       # %bb.0:
 ; X64-SLM-NEXT:    # kill: def $edi killed $edi def $rdi
-; X64-SLM-NEXT:    movl %esi, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    leal (%rdi,%rdi,8), %ecx # sched: [1:1.00]
-; X64-SLM-NEXT:    subl %ecx, %eax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: mul_neg_fold:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imull $-9, %edi, %eax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    addl %esi, %eax # sched: [1:0.50]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    movl %esi, %eax
+; X64-SLM-NEXT:    leal (%rdi,%rdi,8), %ecx
+; X64-SLM-NEXT:    subl %ecx, %eax
+; X64-SLM-NEXT:    retq
   %c = mul i32 %a, -9
   %d = add i32 %b, %c
   ret i32 %d

Modified: llvm/trunk/test/CodeGen/X86/mul-constant-i64.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/mul-constant-i64.ll?rev=353043&r1=353042&r2=353043&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/mul-constant-i64.ll (original)
+++ llvm/trunk/test/CodeGen/X86/mul-constant-i64.ll Mon Feb  4 04:51:26 2019
@@ -1,12 +1,12 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=i686-unknown | FileCheck %s --check-prefix=X86
-; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule=true -mcpu=haswell| FileCheck %s --check-prefix=X64-HSW
-; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule=true -mcpu=btver2| FileCheck %s --check-prefix=X64-JAG
-; RUN: llc < %s -mtriple=i686-unknown -mul-constant-optimization=false | FileCheck %s --check-prefix=X86-NOOPT
-; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -print-schedule=true -mcpu=haswell| FileCheck %s --check-prefix=HSW-NOOPT
-; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -print-schedule=true -mcpu=btver2| FileCheck %s --check-prefix=JAG-NOOPT
-; RUN: llc < %s -mtriple=x86_64-unknown -print-schedule=true -mcpu=slm| FileCheck %s --check-prefix=X64-SLM
-; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -print-schedule=true -mcpu=slm| FileCheck %s --check-prefix=SLM-NOOPT
+; RUN: llc < %s -mtriple=i686-unknown | FileCheck %s --check-prefixes=X86
+; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=haswell                                  | FileCheck %s --check-prefixes=X64-OPT,X64-HSW
+; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=btver2                                   | FileCheck %s --check-prefixes=X64-OPT,X64-JAG
+; RUN: llc < %s -mtriple=i686-unknown -mul-constant-optimization=false                 | FileCheck %s --check-prefix=X86-NOOPT
+; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -mcpu=haswell | FileCheck %s --check-prefixes=X64-NOOPT,HSW-NOOPT
+; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -mcpu=btver2  | FileCheck %s --check-prefixes=X64-NOOPT,JAG-NOOPT
+; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=slm                                      | FileCheck %s --check-prefixes=X64-OPT,X64-SLM
+; RUN: llc < %s -mtriple=x86_64-unknown -mul-constant-optimization=false -mcpu=slm     | FileCheck %s --check-prefixes=X64-NOOPT,SLM-NOOPT
 
 define i64 @test_mul_by_1(i64 %x) nounwind {
 ; X86-LABEL: test_mul_by_1:
@@ -15,15 +15,10 @@ define i64 @test_mul_by_1(i64 %x) nounwi
 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_1:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_1:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_1:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    movq %rdi, %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_1:
 ; X86-NOOPT:       # %bb.0:
@@ -31,25 +26,14 @@ define i64 @test_mul_by_1(i64 %x) nounwi
 ; X86-NOOPT-NEXT:    movl {{[0-9]+}}(%esp), %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_1:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_1:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_1:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_1:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_1:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    movq %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_1:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    movq %rdi, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 1
   ret i64 %mul
 }
@@ -63,15 +47,10 @@ define i64 @test_mul_by_2(i64 %x) {
 ; X86-NEXT:    addl %eax, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_2:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_2:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi), %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_2:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    leaq (%rdi,%rdi), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_2:
 ; X86-NOOPT:       # %bb.0:
@@ -81,25 +60,14 @@ define i64 @test_mul_by_2(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %eax, %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_2:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    leaq (%rdi,%rdi), %rax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_2:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    leaq (%rdi,%rdi), %rax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_2:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    leaq (%rdi,%rdi), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_2:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    leaq (%rdi,%rdi), %rax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_2:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    leaq (%rdi,%rdi), %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_2:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 2
   ret i64 %mul
 }
@@ -114,15 +82,10 @@ define i64 @test_mul_by_3(i64 %x) {
 ; X86-NEXT:    addl %ecx, %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_3:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_3:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_3:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_3:
 ; X86-NOOPT:       # %bb.0:
@@ -132,25 +95,14 @@ define i64 @test_mul_by_3(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_3:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_3:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_3:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_3:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_3:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_3:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 3
   ret i64 %mul
 }
@@ -164,15 +116,10 @@ define i64 @test_mul_by_4(i64 %x) {
 ; X86-NEXT:    shll $2, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_4:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_4:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_4:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    leaq (,%rdi,4), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_4:
 ; X86-NOOPT:       # %bb.0:
@@ -182,25 +129,14 @@ define i64 @test_mul_by_4(i64 %x) {
 ; X86-NOOPT-NEXT:    shll $2, %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_4:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    leaq (,%rdi,4), %rax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_4:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    leaq (,%rdi,4), %rax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_4:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    leaq (,%rdi,4), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_4:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    leaq (,%rdi,4), %rax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_4:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    leaq (,%rdi,4), %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_4:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (,%rdi,4), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 4
   ret i64 %mul
 }
@@ -215,15 +151,10 @@ define i64 @test_mul_by_5(i64 %x) {
 ; X86-NEXT:    addl %ecx, %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_5:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_5:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_5:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_5:
 ; X86-NOOPT:       # %bb.0:
@@ -233,25 +164,14 @@ define i64 @test_mul_by_5(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_5:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_5:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_5:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_5:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_5:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_5:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 5
   ret i64 %mul
 }
@@ -266,17 +186,11 @@ define i64 @test_mul_by_6(i64 %x) {
 ; X86-NEXT:    leal (%edx,%ecx,2), %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_6:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    addq %rdi, %rdi # sched: [1:0.25]
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_6:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    addq %rdi, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_6:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    addq %rdi, %rdi
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_6:
 ; X86-NOOPT:       # %bb.0:
@@ -286,26 +200,15 @@ define i64 @test_mul_by_6(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_6:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $6, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_6:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $6, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_6:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    addq %rdi, %rdi # sched: [1:0.50]
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_6:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $6, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_6:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $6, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_6:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    addq %rdi, %rdi
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 6
   ret i64 %mul
 }
@@ -321,17 +224,11 @@ define i64 @test_mul_by_7(i64 %x) {
 ; X86-NEXT:    addl %ecx, %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_7:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    subq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_7:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_7:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    leaq (,%rdi,8), %rax
+; X64-OPT-NEXT:    subq %rdi, %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_7:
 ; X86-NOOPT:       # %bb.0:
@@ -341,26 +238,15 @@ define i64 @test_mul_by_7(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_7:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $7, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_7:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $7, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_7:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    leaq (,%rdi,8), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_7:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $7, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_7:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $7, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_7:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (,%rdi,8), %rax
+; X86-OPT-NEXT:    subq %rdi, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 7
   ret i64 %mul
 }
@@ -374,15 +260,10 @@ define i64 @test_mul_by_8(i64 %x) {
 ; X86-NEXT:    shll $3, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_8:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_8:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_8:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    leaq (,%rdi,8), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_8:
 ; X86-NOOPT:       # %bb.0:
@@ -392,25 +273,14 @@ define i64 @test_mul_by_8(i64 %x) {
 ; X86-NOOPT-NEXT:    shll $3, %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_8:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    leaq (,%rdi,8), %rax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_8:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    leaq (,%rdi,8), %rax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_8:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    leaq (,%rdi,8), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_8:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    leaq (,%rdi,8), %rax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_8:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    leaq (,%rdi,8), %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_8:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (,%rdi,8), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 8
   ret i64 %mul
 }
@@ -425,15 +295,10 @@ define i64 @test_mul_by_9(i64 %x) {
 ; X86-NEXT:    addl %ecx, %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_9:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_9:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_9:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_9:
 ; X86-NOOPT:       # %bb.0:
@@ -443,25 +308,14 @@ define i64 @test_mul_by_9(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_9:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_9:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_9:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_9:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_9:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_9:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 9
   ret i64 %mul
 }
@@ -476,17 +330,11 @@ define i64 @test_mul_by_10(i64 %x) {
 ; X86-NEXT:    leal (%edx,%ecx,2), %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_10:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    addq %rdi, %rdi # sched: [1:0.25]
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_10:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    addq %rdi, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_10:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    addq %rdi, %rdi
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_10:
 ; X86-NOOPT:       # %bb.0:
@@ -496,26 +344,15 @@ define i64 @test_mul_by_10(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_10:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $10, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_10:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $10, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_10:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    addq %rdi, %rdi # sched: [1:0.50]
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_10:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $10, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_10:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $10, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_10:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    addq %rdi, %rdi
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 10
   ret i64 %mul
 }
@@ -533,15 +370,15 @@ define i64 @test_mul_by_11(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_11:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rax,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-HSW-NEXT:    leaq (%rdi,%rax,2), %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_11:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rdi,%rax,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-JAG-NEXT:    leaq (%rdi,%rax,2), %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_11:
 ; X86-NOOPT:       # %bb.0:
@@ -551,25 +388,20 @@ define i64 @test_mul_by_11(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_11:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $11, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_11:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $11, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_11:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $11, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_11:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $11, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_11:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $11, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $11, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_11:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    leaq (%rdi,%rax,2), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 11
   ret i64 %mul
 }
@@ -584,17 +416,11 @@ define i64 @test_mul_by_12(i64 %x) {
 ; X86-NEXT:    leal (%edx,%ecx,4), %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_12:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    shlq $2, %rdi # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_12:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    shlq $2, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_12:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    shlq $2, %rdi
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_12:
 ; X86-NOOPT:       # %bb.0:
@@ -604,26 +430,15 @@ define i64 @test_mul_by_12(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_12:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $12, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_12:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $12, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_12:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    shlq $2, %rdi # sched: [1:1.00]
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_12:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $12, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_12:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $12, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_12:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    shlq $2, %rdi
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 12
   ret i64 %mul
 }
@@ -641,15 +456,15 @@ define i64 @test_mul_by_13(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_13:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rax,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X64-HSW-NEXT:    leaq (%rdi,%rax,4), %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_13:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rdi,%rax,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X64-JAG-NEXT:    leaq (%rdi,%rax,4), %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_13:
 ; X86-NOOPT:       # %bb.0:
@@ -659,25 +474,20 @@ define i64 @test_mul_by_13(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_13:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $13, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_13:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $13, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_13:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $13, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_13:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $13, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_13:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $13, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $13, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_13:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X86-OPT-NEXT:    leaq (%rdi,%rax,4), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 13
   ret i64 %mul
 }
@@ -695,21 +505,13 @@ define i64 @test_mul_by_14(i64 %x) {
 ; X86-NEXT:    addl %ecx, %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_14:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    shlq $4, %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    subq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    subq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_14:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    shlq $4, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_14:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    movq %rdi, %rax
+; X64-OPT-NEXT:    shlq $4, %rax
+; X64-OPT-NEXT:    subq %rdi, %rax
+; X64-OPT-NEXT:    subq %rdi, %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_14:
 ; X86-NOOPT:       # %bb.0:
@@ -719,28 +521,17 @@ define i64 @test_mul_by_14(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_14:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $14, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_14:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $14, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_14:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    shlq $4, %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_14:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $14, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_14:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $14, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_14:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    movq %rdi, %rax
+; X86-OPT-NEXT:    shlq $4, %rax
+; X86-OPT-NEXT:    subq %rdi, %rax
+; X86-OPT-NEXT:    subq %rdi, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 14
   ret i64 %mul
 }
@@ -756,17 +547,11 @@ define i64 @test_mul_by_15(i64 %x) {
 ; X86-NEXT:    addl %ecx, %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_15:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rax,%rax,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_15:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rax,%rax,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_15:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-OPT-NEXT:    leaq (%rax,%rax,2), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_15:
 ; X86-NOOPT:       # %bb.0:
@@ -776,26 +561,15 @@ define i64 @test_mul_by_15(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_15:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $15, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_15:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $15, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_15:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    leaq (%rax,%rax,2), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_15:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $15, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_15:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $15, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_15:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    leaq (%rax,%rax,2), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 15
   ret i64 %mul
 }
@@ -809,17 +583,11 @@ define i64 @test_mul_by_16(i64 %x) {
 ; X86-NEXT:    shll $4, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_16:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    shlq $4, %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_16:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    shlq $4, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_16:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    movq %rdi, %rax
+; X64-OPT-NEXT:    shlq $4, %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_16:
 ; X86-NOOPT:       # %bb.0:
@@ -829,29 +597,16 @@ define i64 @test_mul_by_16(i64 %x) {
 ; X86-NOOPT-NEXT:    shll $4, %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_16:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; HSW-NOOPT-NEXT:    shlq $4, %rax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_16:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    shlq $4, %rax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_16:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    shlq $4, %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_16:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; SLM-NOOPT-NEXT:    shlq $4, %rax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_16:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    movq %rdi, %rax
+; X64-NOOPT-NEXT:    shlq $4, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_16:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    movq %rdi, %rax
+; X86-OPT-NEXT:    shlq $4, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 16
   ret i64 %mul
 }
@@ -870,17 +625,17 @@ define i64 @test_mul_by_17(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_17:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    shlq $4, %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rax,%rdi), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    movq %rdi, %rax
+; X64-HSW-NEXT:    shlq $4, %rax
+; X64-HSW-NEXT:    leaq (%rax,%rdi), %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_17:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    shlq $4, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    leaq (%rax,%rdi), %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    movq %rdi, %rax
+; X64-JAG-NEXT:    shlq $4, %rax
+; X64-JAG-NEXT:    leaq (%rax,%rdi), %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_17:
 ; X86-NOOPT:       # %bb.0:
@@ -890,27 +645,23 @@ define i64 @test_mul_by_17(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_17:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $17, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_17:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $17, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_17:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $17, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_17:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    shlq $4, %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    addq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_17:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $17, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    movq %rdi, %rax
+; X64-SLM-NEXT:    shlq $4, %rax
+; X64-SLM-NEXT:    addq %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_17:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    movq %rdi, %rax
+; X86-OPT-NEXT:    shlq $4, %rax
+; X86-OPT-NEXT:    leaq (%rax,%rdi), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 17
   ret i64 %mul
 }
@@ -925,17 +676,11 @@ define i64 @test_mul_by_18(i64 %x) {
 ; X86-NEXT:    leal (%edx,%ecx,2), %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_18:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    addq %rdi, %rdi # sched: [1:0.25]
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_18:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    addq %rdi, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_18:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    addq %rdi, %rdi
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_18:
 ; X86-NOOPT:       # %bb.0:
@@ -945,26 +690,15 @@ define i64 @test_mul_by_18(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_18:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $18, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_18:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $18, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_18:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    addq %rdi, %rdi # sched: [1:0.50]
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_18:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $18, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_18:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $18, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_18:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    addq %rdi, %rdi
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 18
   ret i64 %mul
 }
@@ -982,15 +716,15 @@ define i64 @test_mul_by_19(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_19:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rax,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-HSW-NEXT:    leaq (%rdi,%rax,2), %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_19:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rdi,%rax,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-JAG-NEXT:    leaq (%rdi,%rax,2), %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_19:
 ; X86-NOOPT:       # %bb.0:
@@ -1000,25 +734,20 @@ define i64 @test_mul_by_19(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_19:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $19, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_19:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $19, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_19:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $19, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_19:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $19, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_19:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $19, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $19, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_19:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X86-OPT-NEXT:    leaq (%rdi,%rax,2), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 19
   ret i64 %mul
 }
@@ -1033,17 +762,11 @@ define i64 @test_mul_by_20(i64 %x) {
 ; X86-NEXT:    leal (%edx,%ecx,4), %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_20:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    shlq $2, %rdi # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_20:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    shlq $2, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_20:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    shlq $2, %rdi
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_20:
 ; X86-NOOPT:       # %bb.0:
@@ -1053,26 +776,15 @@ define i64 @test_mul_by_20(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_20:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $20, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_20:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $20, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_20:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    shlq $2, %rdi # sched: [1:1.00]
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_20:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $20, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_20:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $20, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_20:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    shlq $2, %rdi
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 20
   ret i64 %mul
 }
@@ -1090,15 +802,15 @@ define i64 @test_mul_by_21(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_21:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rax,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-HSW-NEXT:    leaq (%rdi,%rax,4), %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_21:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rdi,%rax,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-JAG-NEXT:    leaq (%rdi,%rax,4), %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_21:
 ; X86-NOOPT:       # %bb.0:
@@ -1108,25 +820,20 @@ define i64 @test_mul_by_21(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_21:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $21, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_21:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $21, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_21:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $21, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_21:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $21, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_21:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $21, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $21, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_21:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    leaq (%rdi,%rax,4), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 21
   ret i64 %mul
 }
@@ -1145,17 +852,17 @@ define i64 @test_mul_by_22(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_22:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rax,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    addq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-HSW-NEXT:    leaq (%rdi,%rax,4), %rax
+; X64-HSW-NEXT:    addq %rdi, %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_22:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rdi,%rax,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    addq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-JAG-NEXT:    leaq (%rdi,%rax,4), %rax
+; X64-JAG-NEXT:    addq %rdi, %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_22:
 ; X86-NOOPT:       # %bb.0:
@@ -1165,25 +872,21 @@ define i64 @test_mul_by_22(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_22:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $22, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_22:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $22, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_22:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $22, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_22:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $22, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_22:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $22, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $22, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_22:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    leaq (%rdi,%rax,4), %rax
+; X86-OPT-NEXT:    addq %rdi, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 22
   ret i64 %mul
 }
@@ -1202,17 +905,17 @@ define i64 @test_mul_by_23(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_23:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    shlq $3, %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    subq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X64-HSW-NEXT:    shlq $3, %rax
+; X64-HSW-NEXT:    subq %rdi, %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_23:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    shlq $3, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X64-JAG-NEXT:    shlq $3, %rax
+; X64-JAG-NEXT:    subq %rdi, %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_23:
 ; X86-NOOPT:       # %bb.0:
@@ -1222,25 +925,21 @@ define i64 @test_mul_by_23(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_23:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $23, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_23:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $23, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_23:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $23, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_23:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $23, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_23:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $23, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $23, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_23:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X86-OPT-NEXT:    shlq $3, %rax
+; X86-OPT-NEXT:    subq %rdi, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 23
   ret i64 %mul
 }
@@ -1255,17 +954,11 @@ define i64 @test_mul_by_24(i64 %x) {
 ; X86-NEXT:    leal (%edx,%ecx,8), %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_24:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    shlq $3, %rdi # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_24:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    shlq $3, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_24:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    shlq $3, %rdi
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_24:
 ; X86-NOOPT:       # %bb.0:
@@ -1275,26 +968,15 @@ define i64 @test_mul_by_24(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_24:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $24, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_24:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $24, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_24:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    shlq $3, %rdi # sched: [1:1.00]
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,2), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_24:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $24, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_24:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $24, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_24:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    shlq $3, %rdi
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,2), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 24
   ret i64 %mul
 }
@@ -1310,17 +992,11 @@ define i64 @test_mul_by_25(i64 %x) {
 ; X86-NEXT:    addl %ecx, %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_25:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rax,%rax,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_25:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rax,%rax,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_25:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-OPT-NEXT:    leaq (%rax,%rax,4), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_25:
 ; X86-NOOPT:       # %bb.0:
@@ -1330,26 +1006,15 @@ define i64 @test_mul_by_25(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_25:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $25, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_25:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $25, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_25:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    leaq (%rax,%rax,4), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_25:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $25, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_25:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $25, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_25:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    leaq (%rax,%rax,4), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 25
   ret i64 %mul
 }
@@ -1368,17 +1033,17 @@ define i64 @test_mul_by_26(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_26:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rax,%rax,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    addq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-HSW-NEXT:    leaq (%rax,%rax,4), %rax
+; X64-HSW-NEXT:    addq %rdi, %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_26:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rax,%rax,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    addq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-JAG-NEXT:    leaq (%rax,%rax,4), %rax
+; X64-JAG-NEXT:    addq %rdi, %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_26:
 ; X86-NOOPT:       # %bb.0:
@@ -1388,25 +1053,21 @@ define i64 @test_mul_by_26(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_26:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $26, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_26:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $26, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_26:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $26, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_26:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $26, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_26:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $26, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $26, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_26:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    leaq (%rax,%rax,4), %rax
+; X86-OPT-NEXT:    addq %rdi, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 26
   ret i64 %mul
 }
@@ -1422,17 +1083,11 @@ define i64 @test_mul_by_27(i64 %x) {
 ; X86-NEXT:    addl %ecx, %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_27:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rax,%rax,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_27:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rax,%rax,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_27:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-OPT-NEXT:    leaq (%rax,%rax,2), %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_27:
 ; X86-NOOPT:       # %bb.0:
@@ -1442,26 +1097,15 @@ define i64 @test_mul_by_27(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_27:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $27, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_27:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $27, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_27:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    leaq (%rax,%rax,2), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_27:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $27, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_27:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $27, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_27:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X86-OPT-NEXT:    leaq (%rax,%rax,2), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 27
   ret i64 %mul
 }
@@ -1480,17 +1124,17 @@ define i64 @test_mul_by_28(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_28:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rax,%rax,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    addq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-HSW-NEXT:    leaq (%rax,%rax,2), %rax
+; X64-HSW-NEXT:    addq %rdi, %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_28:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rax,%rax,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    addq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-JAG-NEXT:    leaq (%rax,%rax,2), %rax
+; X64-JAG-NEXT:    addq %rdi, %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_28:
 ; X86-NOOPT:       # %bb.0:
@@ -1500,25 +1144,21 @@ define i64 @test_mul_by_28(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_28:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $28, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_28:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $28, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_28:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $28, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_28:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $28, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_28:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $28, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $28, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_28:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X86-OPT-NEXT:    leaq (%rax,%rax,2), %rax
+; X86-OPT-NEXT:    addq %rdi, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 28
   ret i64 %mul
 }
@@ -1538,19 +1178,19 @@ define i64 @test_mul_by_29(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_29:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rax,%rax,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    addq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    addq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-HSW-NEXT:    leaq (%rax,%rax,2), %rax
+; X64-HSW-NEXT:    addq %rdi, %rax
+; X64-HSW-NEXT:    addq %rdi, %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_29:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rax,%rax,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    addq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    addq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-JAG-NEXT:    leaq (%rax,%rax,2), %rax
+; X64-JAG-NEXT:    addq %rdi, %rax
+; X64-JAG-NEXT:    addq %rdi, %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_29:
 ; X86-NOOPT:       # %bb.0:
@@ -1560,25 +1200,22 @@ define i64 @test_mul_by_29(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_29:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $29, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_29:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $29, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_29:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $29, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_29:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $29, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_29:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $29, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $29, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_29:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X86-OPT-NEXT:    leaq (%rax,%rax,2), %rax
+; X86-OPT-NEXT:    addq %rdi, %rax
+; X86-OPT-NEXT:    addq %rdi, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 29
   ret i64 %mul
 }
@@ -1596,21 +1233,13 @@ define i64 @test_mul_by_30(i64 %x) {
 ; X86-NEXT:    addl %ecx, %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_30:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    shlq $5, %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    subq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    subq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_30:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    shlq $5, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_30:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    movq %rdi, %rax
+; X64-OPT-NEXT:    shlq $5, %rax
+; X64-OPT-NEXT:    subq %rdi, %rax
+; X64-OPT-NEXT:    subq %rdi, %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_30:
 ; X86-NOOPT:       # %bb.0:
@@ -1620,28 +1249,17 @@ define i64 @test_mul_by_30(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_30:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $30, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_30:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $30, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_30:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    shlq $5, %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_30:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $30, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_30:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $30, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_30:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    movq %rdi, %rax
+; X86-OPT-NEXT:    shlq $5, %rax
+; X86-OPT-NEXT:    subq %rdi, %rax
+; X86-OPT-NEXT:    subq %rdi, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 30
   ret i64 %mul
 }
@@ -1658,19 +1276,12 @@ define i64 @test_mul_by_31(i64 %x) {
 ; X86-NEXT:    addl %ecx, %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_31:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    shlq $5, %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    subq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_31:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    shlq $5, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_31:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    movq %rdi, %rax
+; X64-OPT-NEXT:    shlq $5, %rax
+; X64-OPT-NEXT:    subq %rdi, %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_31:
 ; X86-NOOPT:       # %bb.0:
@@ -1680,27 +1291,16 @@ define i64 @test_mul_by_31(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_31:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $31, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_31:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $31, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_31:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    shlq $5, %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_31:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $31, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_31:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $31, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_31:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    movq %rdi, %rax
+; X86-OPT-NEXT:    shlq $5, %rax
+; X86-OPT-NEXT:    subq %rdi, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 31
   ret i64 %mul
 }
@@ -1714,17 +1314,11 @@ define i64 @test_mul_by_32(i64 %x) {
 ; X86-NEXT:    shll $5, %eax
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_32:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    shlq $5, %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_32:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    shlq $5, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_32:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    movq %rdi, %rax
+; X64-OPT-NEXT:    shlq $5, %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_32:
 ; X86-NOOPT:       # %bb.0:
@@ -1734,29 +1328,16 @@ define i64 @test_mul_by_32(i64 %x) {
 ; X86-NOOPT-NEXT:    shll $5, %eax
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_32:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; HSW-NOOPT-NEXT:    shlq $5, %rax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_32:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    shlq $5, %rax # sched: [1:0.50]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_32:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    shlq $5, %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_32:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; SLM-NOOPT-NEXT:    shlq $5, %rax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_32:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    movq %rdi, %rax
+; X64-NOOPT-NEXT:    shlq $5, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_32:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    movq %rdi, %rax
+; X86-OPT-NEXT:    shlq $5, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 32
   ret i64 %mul
 }
@@ -1774,15 +1355,15 @@ define i64 @test_mul_by_37(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_37:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rax,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-HSW-NEXT:    leaq (%rdi,%rax,4), %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_37:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rdi,%rax,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-JAG-NEXT:    leaq (%rdi,%rax,4), %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_37:
 ; X86-NOOPT:       # %bb.0:
@@ -1792,25 +1373,20 @@ define i64 @test_mul_by_37(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_37:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $37, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_37:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $37, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_37:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $37, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_37:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $37, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_37:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $37, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $37, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_37:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X86-OPT-NEXT:    leaq (%rdi,%rax,4), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 37
   ret i64 %mul
 }
@@ -1828,15 +1404,15 @@ define i64 @test_mul_by_41(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_41:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rax,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-HSW-NEXT:    leaq (%rdi,%rax,8), %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_41:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rdi,%rax,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-JAG-NEXT:    leaq (%rdi,%rax,8), %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_41:
 ; X86-NOOPT:       # %bb.0:
@@ -1846,25 +1422,20 @@ define i64 @test_mul_by_41(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_41:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $41, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_41:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $41, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_41:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $41, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_41:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $41, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_41:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $41, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $41, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_41:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    leaq (%rdi,%rax,8), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 41
   ret i64 %mul
 }
@@ -1882,21 +1453,13 @@ define i64 @test_mul_by_62(i64 %x) {
 ; X86-NEXT:    addl %ecx, %edx
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_62:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    shlq $6, %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    subq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    subq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_62:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    shlq $6, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_62:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    movq %rdi, %rax
+; X64-OPT-NEXT:    shlq $6, %rax
+; X64-OPT-NEXT:    subq %rdi, %rax
+; X64-OPT-NEXT:    subq %rdi, %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_62:
 ; X86-NOOPT:       # %bb.0:
@@ -1906,28 +1469,17 @@ define i64 @test_mul_by_62(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_62:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $62, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_62:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $62, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_62:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    shlq $6, %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    subq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_62:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $62, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_62:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $62, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_62:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    movq %rdi, %rax
+; X86-OPT-NEXT:    shlq $6, %rax
+; X86-OPT-NEXT:    subq %rdi, %rax
+; X86-OPT-NEXT:    subq %rdi, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 62
   ret i64 %mul
 }
@@ -1946,17 +1498,17 @@ define i64 @test_mul_by_66(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_66:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    shlq $6, %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rax,%rdi,2), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    movq %rdi, %rax
+; X64-HSW-NEXT:    shlq $6, %rax
+; X64-HSW-NEXT:    leaq (%rax,%rdi,2), %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_66:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    shlq $6, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    leaq (%rax,%rdi,2), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    movq %rdi, %rax
+; X64-JAG-NEXT:    shlq $6, %rax
+; X64-JAG-NEXT:    leaq (%rax,%rdi,2), %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_66:
 ; X86-NOOPT:       # %bb.0:
@@ -1966,28 +1518,24 @@ define i64 @test_mul_by_66(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_66:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $66, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_66:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $66, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_66:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $66, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_66:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    shlq $6, %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    addq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    addq %rdi, %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_66:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $66, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    movq %rdi, %rax
+; X64-SLM-NEXT:    shlq $6, %rax
+; X64-SLM-NEXT:    addq %rdi, %rax
+; X64-SLM-NEXT:    addq %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_66:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    movq %rdi, %rax
+; X86-OPT-NEXT:    shlq $6, %rax
+; X86-OPT-NEXT:    leaq (%rax,%rdi,2), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 66
   ret i64 %mul
 }
@@ -2005,15 +1553,15 @@ define i64 @test_mul_by_73(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_73:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rax,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-HSW-NEXT:    leaq (%rdi,%rax,8), %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_73:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq (%rdi,%rax,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-JAG-NEXT:    leaq (%rdi,%rax,8), %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_73:
 ; X86-NOOPT:       # %bb.0:
@@ -2023,25 +1571,20 @@ define i64 @test_mul_by_73(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_73:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $73, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_73:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $73, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_73:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $73, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_73:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    imulq $73, %rdi, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_73:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $73, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    imulq $73, %rdi, %rax
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_73:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X86-OPT-NEXT:    leaq (%rdi,%rax,8), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 73
   ret i64 %mul
 }
@@ -2060,17 +1603,17 @@ define i64 @test_mul_by_520(i64 %x) {
 ;
 ; X64-HSW-LABEL: test_mul_by_520:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    movq %rdi, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    shlq $9, %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rax,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    movq %rdi, %rax
+; X64-HSW-NEXT:    shlq $9, %rax
+; X64-HSW-NEXT:    leaq (%rax,%rdi,8), %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_by_520:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    movq %rdi, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    shlq $9, %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    leaq (%rax,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    movq %rdi, %rax
+; X64-JAG-NEXT:    shlq $9, %rax
+; X64-JAG-NEXT:    leaq (%rax,%rdi,8), %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_520:
 ; X86-NOOPT:       # %bb.0:
@@ -2080,29 +1623,21 @@ define i64 @test_mul_by_520(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_520:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $520, %rdi, %rax # imm = 0x208
-; HSW-NOOPT-NEXT:    # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_520:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $520, %rdi, %rax # imm = 0x208
-; JAG-NOOPT-NEXT:    # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_520:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $520, %rdi, %rax # imm = 0x208
+; X64-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_by_520:
 ; X64-SLM:       # %bb.0:
 ; X64-SLM-NEXT:    imulq $520, %rdi, %rax # imm = 0x208
-; X64-SLM-NEXT:    # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_520:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $520, %rdi, %rax # imm = 0x208
-; SLM-NOOPT-NEXT:    # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_520:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    movq %rdi, %rax
+; X86-OPT-NEXT:    shlq $9, %rax
+; X86-OPT-NEXT:    leaq (%rax,%rdi,8), %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 520
   ret i64 %mul
 }
@@ -2126,19 +1661,12 @@ define i64 @test_mul_by_neg10(i64 %x) {
 ; X86-NEXT:    .cfi_def_cfa_offset 4
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_neg10:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    addq %rdi, %rdi # sched: [1:0.25]
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    negq %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_neg10:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    addq %rdi, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    negq %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_neg10:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    addq %rdi, %rdi
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-OPT-NEXT:    negq %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_neg10:
 ; X86-NOOPT:       # %bb.0:
@@ -2151,27 +1679,16 @@ define i64 @test_mul_by_neg10(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_neg10:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $-10, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_neg10:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $-10, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_neg10:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    addq %rdi, %rdi # sched: [1:0.50]
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    negq %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_neg10:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $-10, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_neg10:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $-10, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_neg10:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    addq %rdi, %rdi
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    negq %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, -10
   ret i64 %mul
 }
@@ -2195,19 +1712,12 @@ define i64 @test_mul_by_neg36(i64 %x) {
 ; X86-NEXT:    .cfi_def_cfa_offset 4
 ; X86-NEXT:    retl
 ;
-; X64-HSW-LABEL: test_mul_by_neg36:
-; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    shlq $2, %rdi # sched: [1:0.50]
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    negq %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
-;
-; X64-JAG-LABEL: test_mul_by_neg36:
-; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    shlq $2, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    negq %rax # sched: [1:0.50]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-OPT-LABEL: test_mul_by_neg36:
+; X64-OPT:       # %bb.0:
+; X64-OPT-NEXT:    shlq $2, %rdi
+; X64-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X64-OPT-NEXT:    negq %rax
+; X64-OPT-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_by_neg36:
 ; X86-NOOPT:       # %bb.0:
@@ -2220,27 +1730,16 @@ define i64 @test_mul_by_neg36(i64 %x) {
 ; X86-NOOPT-NEXT:    addl %ecx, %edx
 ; X86-NOOPT-NEXT:    retl
 ;
-; HSW-NOOPT-LABEL: test_mul_by_neg36:
-; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    imulq $-36, %rdi, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
-;
-; JAG-NOOPT-LABEL: test_mul_by_neg36:
-; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    imulq $-36, %rdi, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
-;
-; X64-SLM-LABEL: test_mul_by_neg36:
-; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    shlq $2, %rdi # sched: [1:1.00]
-; X64-SLM-NEXT:    leaq (%rdi,%rdi,8), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    negq %rax # sched: [1:0.50]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SLM-NOOPT-LABEL: test_mul_by_neg36:
-; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    imulq $-36, %rdi, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; X64-NOOPT-LABEL: test_mul_by_neg36:
+; X64-NOOPT:       # %bb.0:
+; X64-NOOPT-NEXT:    imulq $-36, %rdi, %rax
+; X64-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_by_neg36:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    shlq $2, %rdi
+; X86-OPT-NEXT:    leaq (%rdi,%rdi,8), %rax
+; X86-OPT-NEXT:    negq %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, -36
   ret i64 %mul
 }
@@ -2281,19 +1780,19 @@ define i64 @test_mul_spec(i64 %x) nounwi
 ;
 ; X64-HSW-LABEL: test_mul_spec:
 ; X64-HSW:       # %bb.0:
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rcx # sched: [1:0.50]
-; X64-HSW-NEXT:    addq $42, %rcx # sched: [1:0.25]
-; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-HSW-NEXT:    addq $2, %rax # sched: [1:0.25]
-; X64-HSW-NEXT:    imulq %rcx, %rax # sched: [3:1.00]
-; X64-HSW-NEXT:    retq # sched: [7:1.00]
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,8), %rcx
+; X64-HSW-NEXT:    addq $42, %rcx
+; X64-HSW-NEXT:    leaq (%rdi,%rdi,4), %rax
+; X64-HSW-NEXT:    addq $2, %rax
+; X64-HSW-NEXT:    imulq %rcx, %rax
+; X64-HSW-NEXT:    retq
 ;
 ; X64-JAG-LABEL: test_mul_spec:
 ; X64-JAG:       # %bb.0:
-; X64-JAG-NEXT:    leaq 42(%rdi,%rdi,8), %rcx # sched: [2:1.00]
-; X64-JAG-NEXT:    leaq 2(%rdi,%rdi,4), %rax # sched: [2:1.00]
-; X64-JAG-NEXT:    imulq %rcx, %rax # sched: [6:4.00]
-; X64-JAG-NEXT:    retq # sched: [4:1.00]
+; X64-JAG-NEXT:    leaq 42(%rdi,%rdi,8), %rcx
+; X64-JAG-NEXT:    leaq 2(%rdi,%rdi,4), %rax
+; X64-JAG-NEXT:    imulq %rcx, %rax
+; X64-JAG-NEXT:    retq
 ;
 ; X86-NOOPT-LABEL: test_mul_spec:
 ; X86-NOOPT:       # %bb.0:
@@ -2329,33 +1828,39 @@ define i64 @test_mul_spec(i64 %x) nounwi
 ;
 ; HSW-NOOPT-LABEL: test_mul_spec:
 ; HSW-NOOPT:       # %bb.0:
-; HSW-NOOPT-NEXT:    leaq (%rdi,%rdi,8), %rcx # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    addq $42, %rcx # sched: [1:0.25]
-; HSW-NOOPT-NEXT:    leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; HSW-NOOPT-NEXT:    addq $2, %rax # sched: [1:0.25]
-; HSW-NOOPT-NEXT:    imulq %rcx, %rax # sched: [3:1.00]
-; HSW-NOOPT-NEXT:    retq # sched: [7:1.00]
+; HSW-NOOPT-NEXT:    leaq (%rdi,%rdi,8), %rcx
+; HSW-NOOPT-NEXT:    addq $42, %rcx
+; HSW-NOOPT-NEXT:    leaq (%rdi,%rdi,4), %rax
+; HSW-NOOPT-NEXT:    addq $2, %rax
+; HSW-NOOPT-NEXT:    imulq %rcx, %rax
+; HSW-NOOPT-NEXT:    retq
 ;
 ; JAG-NOOPT-LABEL: test_mul_spec:
 ; JAG-NOOPT:       # %bb.0:
-; JAG-NOOPT-NEXT:    leaq 42(%rdi,%rdi,8), %rcx # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    leaq 2(%rdi,%rdi,4), %rax # sched: [2:1.00]
-; JAG-NOOPT-NEXT:    imulq %rcx, %rax # sched: [6:4.00]
-; JAG-NOOPT-NEXT:    retq # sched: [4:1.00]
+; JAG-NOOPT-NEXT:    leaq 42(%rdi,%rdi,8), %rcx
+; JAG-NOOPT-NEXT:    leaq 2(%rdi,%rdi,4), %rax
+; JAG-NOOPT-NEXT:    imulq %rcx, %rax
+; JAG-NOOPT-NEXT:    retq
 ;
 ; X64-SLM-LABEL: test_mul_spec:
 ; X64-SLM:       # %bb.0:
-; X64-SLM-NEXT:    leaq 42(%rdi,%rdi,8), %rcx # sched: [1:1.00]
-; X64-SLM-NEXT:    leaq 2(%rdi,%rdi,4), %rax # sched: [1:1.00]
-; X64-SLM-NEXT:    imulq %rcx, %rax # sched: [3:1.00]
-; X64-SLM-NEXT:    retq # sched: [4:1.00]
+; X64-SLM-NEXT:    leaq 42(%rdi,%rdi,8), %rcx
+; X64-SLM-NEXT:    leaq 2(%rdi,%rdi,4), %rax
+; X64-SLM-NEXT:    imulq %rcx, %rax
+; X64-SLM-NEXT:    retq
 ;
 ; SLM-NOOPT-LABEL: test_mul_spec:
 ; SLM-NOOPT:       # %bb.0:
-; SLM-NOOPT-NEXT:    leaq 42(%rdi,%rdi,8), %rcx # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    leaq 2(%rdi,%rdi,4), %rax # sched: [1:1.00]
-; SLM-NOOPT-NEXT:    imulq %rcx, %rax # sched: [3:1.00]
-; SLM-NOOPT-NEXT:    retq # sched: [4:1.00]
+; SLM-NOOPT-NEXT:    leaq 42(%rdi,%rdi,8), %rcx
+; SLM-NOOPT-NEXT:    leaq 2(%rdi,%rdi,4), %rax
+; SLM-NOOPT-NEXT:    imulq %rcx, %rax
+; SLM-NOOPT-NEXT:    retq
+; X86-OPT-LABEL: test_mul_spec:
+; X86-OPT:       # %bb.0:
+; X86-OPT-NEXT:    leaq 42(%rdi,%rdi,8), %rcx
+; X86-OPT-NEXT:    leaq 2(%rdi,%rdi,4), %rax
+; X86-OPT-NEXT:    imulq %rcx, %rax
+; X86-OPT-NEXT:    retq
   %mul = mul nsw i64 %x, 9
   %add = add nsw i64 %mul, 42
   %mul2 = mul nsw i64 %x, 5

Removed: llvm/trunk/test/CodeGen/X86/mwaitx-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/mwaitx-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/mwaitx-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/mwaitx-schedule.ll (removed)
@@ -1,65 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+mwaitx | FileCheck %s --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver4 | FileCheck %s --check-prefix=BDVER4
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=ZNVER1
-
-define void @foo(i8* %P, i32 %E, i32 %H) nounwind {
-; GENERIC-LABEL: foo:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    movl %esi, %ecx # sched: [1:0.33]
-; GENERIC-NEXT:    leaq (%rdi), %rax # sched: [1:0.50]
-; GENERIC-NEXT:    monitorx # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER4-LABEL: foo:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    movl %esi, %ecx
-; BDVER4-NEXT:    leaq (%rdi), %rax
-; BDVER4-NEXT:    monitorx
-; BDVER4-NEXT:    retq
-;
-; ZNVER1-LABEL: foo:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    movl %esi, %ecx # sched: [1:0.25]
-; ZNVER1-NEXT:    leaq (%rdi), %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    monitorx # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void @llvm.x86.monitorx(i8* %P, i32 %E, i32 %H)
-  ret void
-}
-declare void @llvm.x86.monitorx(i8*, i32, i32) nounwind
-
-define void @bar(i32 %E, i32 %H, i32 %C) nounwind {
-; GENERIC-LABEL: bar:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    pushq %rbx # sched: [5:1.00]
-; GENERIC-NEXT:    movl %edx, %ebx # sched: [1:0.33]
-; GENERIC-NEXT:    movl %esi, %eax # sched: [1:0.33]
-; GENERIC-NEXT:    movl %edi, %ecx # sched: [1:0.33]
-; GENERIC-NEXT:    mwaitx # sched: [100:0.33]
-; GENERIC-NEXT:    popq %rbx # sched: [6:0.50]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; BDVER4-LABEL: bar:
-; BDVER4:       # %bb.0:
-; BDVER4-NEXT:    pushq %rbx
-; BDVER4-NEXT:    movl %edx, %ebx
-; BDVER4-NEXT:    movl %esi, %eax
-; BDVER4-NEXT:    movl %edi, %ecx
-; BDVER4-NEXT:    mwaitx
-; BDVER4-NEXT:    popq %rbx
-; BDVER4-NEXT:    retq
-;
-; ZNVER1-LABEL: bar:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    pushq %rbx # sched: [1:0.50]
-; ZNVER1-NEXT:    movl %edx, %ebx # sched: [1:0.25]
-; ZNVER1-NEXT:    movl %esi, %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    movl %edi, %ecx # sched: [1:0.25]
-; ZNVER1-NEXT:    mwaitx # sched: [100:0.25]
-; ZNVER1-NEXT:    popq %rbx # sched: [8:0.50]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  tail call void @llvm.x86.mwaitx(i32 %E, i32 %H, i32 %C)
-  ret void
-}
-declare void @llvm.x86.mwaitx(i32, i32, i32) nounwind

Removed: llvm/trunk/test/CodeGen/X86/popcnt-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/popcnt-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/popcnt-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/popcnt-schedule.ll (removed)
@@ -1,235 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+popcnt | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=slm         | FileCheck %s --check-prefix=CHECK --check-prefix=SLM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=goldmont    | FileCheck %s --check-prefix=CHECK --check-prefix=SLM
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=sandybridge | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=ivybridge   | FileCheck %s --check-prefix=CHECK --check-prefix=SANDY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell     | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell   | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake     | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=knl         | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=bdver2      | FileCheck %s --check-prefix=CHECK --check-prefix=BDVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=btver2      | FileCheck %s --check-prefix=CHECK --check-prefix=BTVER2
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1      | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
-
-define i16 @test_ctpop_i16(i16 zeroext %a0, i16 *%a1) {
-; GENERIC-LABEL: test_ctpop_i16:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    popcntw (%rsi), %cx # sched: [9:1.00]
-; GENERIC-NEXT:    popcntw %di, %ax # sched: [3:1.00]
-; GENERIC-NEXT:    orl %ecx, %eax # sched: [1:0.33]
-; GENERIC-NEXT:    # kill: def $ax killed $ax killed $eax
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; SLM-LABEL: test_ctpop_i16:
-; SLM:       # %bb.0:
-; SLM-NEXT:    popcntw (%rsi), %cx # sched: [6:1.00]
-; SLM-NEXT:    popcntw %di, %ax # sched: [3:1.00]
-; SLM-NEXT:    orl %ecx, %eax # sched: [1:0.50]
-; SLM-NEXT:    # kill: def $ax killed $ax killed $eax
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_ctpop_i16:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    popcntw (%rsi), %cx # sched: [9:1.00]
-; SANDY-NEXT:    popcntw %di, %ax # sched: [3:1.00]
-; SANDY-NEXT:    orl %ecx, %eax # sched: [1:0.33]
-; SANDY-NEXT:    # kill: def $ax killed $ax killed $eax
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_ctpop_i16:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    popcntw (%rsi), %cx # sched: [8:1.00]
-; HASWELL-NEXT:    popcntw %di, %ax # sched: [3:1.00]
-; HASWELL-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; HASWELL-NEXT:    # kill: def $ax killed $ax killed $eax
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_ctpop_i16:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    popcntw (%rsi), %cx # sched: [8:1.00]
-; BROADWELL-NEXT:    popcntw %di, %ax # sched: [3:1.00]
-; BROADWELL-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; BROADWELL-NEXT:    # kill: def $ax killed $ax killed $eax
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_ctpop_i16:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    popcntw (%rsi), %cx # sched: [8:1.00]
-; SKYLAKE-NEXT:    popcntw %di, %ax # sched: [3:1.00]
-; SKYLAKE-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; SKYLAKE-NEXT:    # kill: def $ax killed $ax killed $eax
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_ctpop_i16:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    popcntw (%rsi), %cx # sched: [8:0.50]
-; BDVER2-NEXT:    popcntw %di, %ax # sched: [4:0.50]
-; BDVER2-NEXT:    orl %ecx, %eax # sched: [1:0.50]
-; BDVER2-NEXT:    # kill: def $ax killed $ax killed $eax
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_ctpop_i16:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    popcntw (%rsi), %cx # sched: [4:1.00]
-; BTVER2-NEXT:    popcntw %di, %ax # sched: [1:0.50]
-; BTVER2-NEXT:    orl %ecx, %eax # sched: [1:0.50]
-; BTVER2-NEXT:    # kill: def $ax killed $ax killed $eax
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_ctpop_i16:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    popcntw (%rsi), %cx # sched: [5:0.50]
-; ZNVER1-NEXT:    popcntw %di, %ax # sched: [1:0.25]
-; ZNVER1-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    # kill: def $ax killed $ax killed $eax
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load i16, i16 *%a1
-  %2 = tail call i16 @llvm.ctpop.i16( i16 %1 )
-  %3 = tail call i16 @llvm.ctpop.i16( i16 %a0 )
-  %4 = or i16 %2, %3
-  ret i16 %4
-}
-declare i16 @llvm.ctpop.i16(i16)
-
-define i32 @test_ctpop_i32(i32 %a0, i32 *%a1) {
-; GENERIC-LABEL: test_ctpop_i32:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    popcntl (%rsi), %ecx # sched: [9:1.00]
-; GENERIC-NEXT:    popcntl %edi, %eax # sched: [3:1.00]
-; GENERIC-NEXT:    orl %ecx, %eax # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; SLM-LABEL: test_ctpop_i32:
-; SLM:       # %bb.0:
-; SLM-NEXT:    popcntl (%rsi), %ecx # sched: [6:1.00]
-; SLM-NEXT:    popcntl %edi, %eax # sched: [3:1.00]
-; SLM-NEXT:    orl %ecx, %eax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_ctpop_i32:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    popcntl (%rsi), %ecx # sched: [9:1.00]
-; SANDY-NEXT:    popcntl %edi, %eax # sched: [3:1.00]
-; SANDY-NEXT:    orl %ecx, %eax # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_ctpop_i32:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    popcntl (%rsi), %ecx # sched: [8:1.00]
-; HASWELL-NEXT:    popcntl %edi, %eax # sched: [3:1.00]
-; HASWELL-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_ctpop_i32:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    popcntl (%rsi), %ecx # sched: [8:1.00]
-; BROADWELL-NEXT:    popcntl %edi, %eax # sched: [3:1.00]
-; BROADWELL-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_ctpop_i32:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    popcntl (%rsi), %ecx # sched: [8:1.00]
-; SKYLAKE-NEXT:    popcntl %edi, %eax # sched: [3:1.00]
-; SKYLAKE-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_ctpop_i32:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    popcntl (%rsi), %ecx # sched: [8:0.50]
-; BDVER2-NEXT:    popcntl %edi, %eax # sched: [4:0.50]
-; BDVER2-NEXT:    orl %ecx, %eax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_ctpop_i32:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    popcntl (%rsi), %ecx # sched: [4:1.00]
-; BTVER2-NEXT:    popcntl %edi, %eax # sched: [1:0.50]
-; BTVER2-NEXT:    orl %ecx, %eax # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_ctpop_i32:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    popcntl (%rsi), %ecx # sched: [5:0.50]
-; ZNVER1-NEXT:    popcntl %edi, %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    orl %ecx, %eax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load i32, i32 *%a1
-  %2 = tail call i32 @llvm.ctpop.i32( i32 %1 )
-  %3 = tail call i32 @llvm.ctpop.i32( i32 %a0 )
-  %4 = or i32 %2, %3
-  ret i32 %4
-}
-declare i32 @llvm.ctpop.i32(i32)
-
-define i64 @test_ctpop_i64(i64 %a0, i64 *%a1) {
-; GENERIC-LABEL: test_ctpop_i64:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    popcntq (%rsi), %rcx # sched: [9:1.00]
-; GENERIC-NEXT:    popcntq %rdi, %rax # sched: [3:1.00]
-; GENERIC-NEXT:    orq %rcx, %rax # sched: [1:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; SLM-LABEL: test_ctpop_i64:
-; SLM:       # %bb.0:
-; SLM-NEXT:    popcntq (%rsi), %rcx # sched: [6:1.00]
-; SLM-NEXT:    popcntq %rdi, %rax # sched: [3:1.00]
-; SLM-NEXT:    orq %rcx, %rax # sched: [1:0.50]
-; SLM-NEXT:    retq # sched: [4:1.00]
-;
-; SANDY-LABEL: test_ctpop_i64:
-; SANDY:       # %bb.0:
-; SANDY-NEXT:    popcntq (%rsi), %rcx # sched: [9:1.00]
-; SANDY-NEXT:    popcntq %rdi, %rax # sched: [3:1.00]
-; SANDY-NEXT:    orq %rcx, %rax # sched: [1:0.33]
-; SANDY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_ctpop_i64:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    popcntq (%rsi), %rcx # sched: [8:1.00]
-; HASWELL-NEXT:    popcntq %rdi, %rax # sched: [3:1.00]
-; HASWELL-NEXT:    orq %rcx, %rax # sched: [1:0.25]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_ctpop_i64:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    popcntq (%rsi), %rcx # sched: [8:1.00]
-; BROADWELL-NEXT:    popcntq %rdi, %rax # sched: [3:1.00]
-; BROADWELL-NEXT:    orq %rcx, %rax # sched: [1:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_ctpop_i64:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    popcntq (%rsi), %rcx # sched: [8:1.00]
-; SKYLAKE-NEXT:    popcntq %rdi, %rax # sched: [3:1.00]
-; SKYLAKE-NEXT:    orq %rcx, %rax # sched: [1:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; BDVER2-LABEL: test_ctpop_i64:
-; BDVER2:       # %bb.0:
-; BDVER2-NEXT:    popcntq (%rsi), %rcx # sched: [8:0.50]
-; BDVER2-NEXT:    popcntq %rdi, %rax # sched: [4:0.50]
-; BDVER2-NEXT:    orq %rcx, %rax # sched: [1:0.50]
-; BDVER2-NEXT:    retq # sched: [5:1.00]
-;
-; BTVER2-LABEL: test_ctpop_i64:
-; BTVER2:       # %bb.0:
-; BTVER2-NEXT:    popcntq (%rsi), %rcx # sched: [4:1.00]
-; BTVER2-NEXT:    popcntq %rdi, %rax # sched: [1:0.50]
-; BTVER2-NEXT:    orq %rcx, %rax # sched: [1:0.50]
-; BTVER2-NEXT:    retq # sched: [4:1.00]
-;
-; ZNVER1-LABEL: test_ctpop_i64:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    popcntq (%rsi), %rcx # sched: [5:0.50]
-; ZNVER1-NEXT:    popcntq %rdi, %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    orq %rcx, %rax # sched: [1:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %1 = load i64, i64 *%a1
-  %2 = tail call i64 @llvm.ctpop.i64( i64 %1 )
-  %3 = tail call i64 @llvm.ctpop.i64( i64 %a0 )
-  %4 = or i64 %2, %3
-  ret i64 %4
-}
-declare i64 @llvm.ctpop.i64(i64)

Removed: llvm/trunk/test/CodeGen/X86/rdpid-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/rdpid-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/rdpid-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/rdpid-schedule.ll (removed)
@@ -1,21 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+rdpid | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=icelake-client | FileCheck %s --check-prefix=CHECK --check-prefix=ICELAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=icelake-server | FileCheck %s --check-prefix=CHECK --check-prefix=ICELAKE
-
-define i32 @test_rdpid() {
-; GENERIC-LABEL: test_rdpid:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    rdpid %rax # sched: [100:0.33]
-; GENERIC-NEXT:    # kill: def $eax killed $eax killed $rax
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; ICELAKE-LABEL: test_rdpid:
-; ICELAKE:       # %bb.0:
-; ICELAKE-NEXT:    rdpid %rax # sched: [100:0.25]
-; ICELAKE-NEXT:    # kill: def $eax killed $eax killed $rax
-; ICELAKE-NEXT:    retq # sched: [7:1.00]
-  %1 = tail call i32 @llvm.x86.rdpid()
-  ret i32 %1
-}
-declare i32 @llvm.x86.rdpid()

Removed: llvm/trunk/test/CodeGen/X86/rdrand-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/rdrand-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/rdrand-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/rdrand-schedule.ll (removed)
@@ -1,148 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+rdrnd | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=goldmont | FileCheck %s --check-prefix=CHECK --check-prefix=GOLDMONT
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=ivybridge | FileCheck %s --check-prefix=CHECK --check-prefix=IVY
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=haswell | FileCheck %s --check-prefix=CHECK --check-prefix=HASWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
-
-declare {i16, i32} @llvm.x86.rdrand.16()
-declare {i32, i32} @llvm.x86.rdrand.32()
-declare {i64, i32} @llvm.x86.rdrand.64()
-
-define i16 @test_rdrand_16(i16* %random_val) {
-; GENERIC-LABEL: test_rdrand_16:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    rdrandw %ax # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GOLDMONT-LABEL: test_rdrand_16:
-; GOLDMONT:       # %bb.0:
-; GOLDMONT-NEXT:    rdrandw %ax # sched: [100:1.00]
-; GOLDMONT-NEXT:    retq # sched: [4:1.00]
-;
-; IVY-LABEL: test_rdrand_16:
-; IVY:       # %bb.0:
-; IVY-NEXT:    rdrandw %ax # sched: [100:0.33]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_rdrand_16:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    rdrandw %ax # sched: [1:5.33]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_rdrand_16:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    rdrandw %ax # sched: [9:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_rdrand_16:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    rdrandw %ax # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_rdrand_16:
-; SKX:       # %bb.0:
-; SKX-NEXT:    rdrandw %ax # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_rdrand_16:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    rdrandw %ax # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %call = call {i16, i32} @llvm.x86.rdrand.16()
-  %randval = extractvalue {i16, i32} %call, 0
-  ret i16 %randval
-}
-
-define i32 @test_rdrand_32(i32* %random_val) {
-; GENERIC-LABEL: test_rdrand_32:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    rdrandl %eax # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GOLDMONT-LABEL: test_rdrand_32:
-; GOLDMONT:       # %bb.0:
-; GOLDMONT-NEXT:    rdrandl %eax # sched: [100:1.00]
-; GOLDMONT-NEXT:    retq # sched: [4:1.00]
-;
-; IVY-LABEL: test_rdrand_32:
-; IVY:       # %bb.0:
-; IVY-NEXT:    rdrandl %eax # sched: [100:0.33]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_rdrand_32:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    rdrandl %eax # sched: [1:5.33]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_rdrand_32:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    rdrandl %eax # sched: [9:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_rdrand_32:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    rdrandl %eax # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_rdrand_32:
-; SKX:       # %bb.0:
-; SKX-NEXT:    rdrandl %eax # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_rdrand_32:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    rdrandl %eax # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %call = call {i32, i32} @llvm.x86.rdrand.32()
-  %randval = extractvalue {i32, i32} %call, 0
-  ret i32 %randval
-}
-
-define i64 @test_rdrand_64(i64* %random_val) {
-; GENERIC-LABEL: test_rdrand_64:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    rdrandq %rax # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GOLDMONT-LABEL: test_rdrand_64:
-; GOLDMONT:       # %bb.0:
-; GOLDMONT-NEXT:    rdrandq %rax # sched: [100:1.00]
-; GOLDMONT-NEXT:    retq # sched: [4:1.00]
-;
-; IVY-LABEL: test_rdrand_64:
-; IVY:       # %bb.0:
-; IVY-NEXT:    rdrandq %rax # sched: [100:0.33]
-; IVY-NEXT:    retq # sched: [1:1.00]
-;
-; HASWELL-LABEL: test_rdrand_64:
-; HASWELL:       # %bb.0:
-; HASWELL-NEXT:    rdrandq %rax # sched: [1:5.33]
-; HASWELL-NEXT:    retq # sched: [7:1.00]
-;
-; BROADWELL-LABEL: test_rdrand_64:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    rdrandq %rax # sched: [9:1.00]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_rdrand_64:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    rdrandq %rax # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_rdrand_64:
-; SKX:       # %bb.0:
-; SKX-NEXT:    rdrandq %rax # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_rdrand_64:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    rdrandq %rax # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %call = call {i64, i32} @llvm.x86.rdrand.64()
-  %randval = extractvalue {i64, i32} %call, 0
-  ret i64 %randval
-}

Removed: llvm/trunk/test/CodeGen/X86/rdseed-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/rdseed-schedule.ll?rev=353042&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/rdseed-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/rdseed-schedule.ll (removed)
@@ -1,116 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=x86-64 -mattr=+rdseed | FileCheck %s --check-prefix=CHECK --check-prefix=GENERIC
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=goldmont | FileCheck %s --check-prefix=CHECK --check-prefix=GOLDMONT
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=broadwell | FileCheck %s --check-prefix=CHECK --check-prefix=BROADWELL
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skylake | FileCheck %s --check-prefix=CHECK --check-prefix=SKYLAKE
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=skx | FileCheck %s --check-prefix=CHECK --check-prefix=SKX
-; RUN: llc < %s -mtriple=x86_64-unknown-unknown -print-schedule -mcpu=znver1 | FileCheck %s --check-prefix=CHECK --check-prefix=ZNVER1
-
-declare {i16, i32} @llvm.x86.rdseed.16()
-declare {i32, i32} @llvm.x86.rdseed.32()
-declare {i64, i32} @llvm.x86.rdseed.64()
-
-define i16 @test_rdseed_16(i16* %random_val) {
-; GENERIC-LABEL: test_rdseed_16:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    rdseedw %ax # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GOLDMONT-LABEL: test_rdseed_16:
-; GOLDMONT:       # %bb.0:
-; GOLDMONT-NEXT:    rdseedw %ax # sched: [100:1.00]
-; GOLDMONT-NEXT:    retq # sched: [4:1.00]
-;
-; BROADWELL-LABEL: test_rdseed_16:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    rdseedw %ax # sched: [100:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_rdseed_16:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    rdseedw %ax # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_rdseed_16:
-; SKX:       # %bb.0:
-; SKX-NEXT:    rdseedw %ax # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_rdseed_16:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    rdseedw %ax # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %call = call {i16, i32} @llvm.x86.rdseed.16()
-  %randval = extractvalue {i16, i32} %call, 0
-  ret i16 %randval
-}
-
-define i32 @test_rdseed_32(i16* %random_val) {
-; GENERIC-LABEL: test_rdseed_32:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    rdseedl %eax # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GOLDMONT-LABEL: test_rdseed_32:
-; GOLDMONT:       # %bb.0:
-; GOLDMONT-NEXT:    rdseedl %eax # sched: [100:1.00]
-; GOLDMONT-NEXT:    retq # sched: [4:1.00]
-;
-; BROADWELL-LABEL: test_rdseed_32:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    rdseedl %eax # sched: [100:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_rdseed_32:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    rdseedl %eax # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_rdseed_32:
-; SKX:       # %bb.0:
-; SKX-NEXT:    rdseedl %eax # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_rdseed_32:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    rdseedl %eax # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %call = call {i32, i32} @llvm.x86.rdseed.32()
-  %randval = extractvalue {i32, i32} %call, 0
-  ret i32 %randval
-}
-
-define i64 @test_rdseed_64(i64* %random_val) {
-; GENERIC-LABEL: test_rdseed_64:
-; GENERIC:       # %bb.0:
-; GENERIC-NEXT:    rdseedq %rax # sched: [100:0.33]
-; GENERIC-NEXT:    retq # sched: [1:1.00]
-;
-; GOLDMONT-LABEL: test_rdseed_64:
-; GOLDMONT:       # %bb.0:
-; GOLDMONT-NEXT:    rdseedq %rax # sched: [100:1.00]
-; GOLDMONT-NEXT:    retq # sched: [4:1.00]
-;
-; BROADWELL-LABEL: test_rdseed_64:
-; BROADWELL:       # %bb.0:
-; BROADWELL-NEXT:    rdseedq %rax # sched: [100:0.25]
-; BROADWELL-NEXT:    retq # sched: [7:1.00]
-;
-; SKYLAKE-LABEL: test_rdseed_64:
-; SKYLAKE:       # %bb.0:
-; SKYLAKE-NEXT:    rdseedq %rax # sched: [100:0.25]
-; SKYLAKE-NEXT:    retq # sched: [7:1.00]
-;
-; SKX-LABEL: test_rdseed_64:
-; SKX:       # %bb.0:
-; SKX-NEXT:    rdseedq %rax # sched: [100:0.25]
-; SKX-NEXT:    retq # sched: [7:1.00]
-;
-; ZNVER1-LABEL: test_rdseed_64:
-; ZNVER1:       # %bb.0:
-; ZNVER1-NEXT:    rdseedq %rax # sched: [100:0.25]
-; ZNVER1-NEXT:    retq # sched: [1:0.50]
-  %call = call {i64, i32} @llvm.x86.rdseed.64()
-  %randval = extractvalue {i64, i32} %call, 0
-  ret i64 %randval
-}




More information about the llvm-commits mailing list