[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