[llvm] [X86] Add test for VPBLENDW Tuning (PR #179906)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 8 21:25:20 PST 2026
https://github.com/mahesh-attarde updated https://github.com/llvm/llvm-project/pull/179906
>From 376861c34494746f205a7c2f8b62019d36a4cbb9 Mon Sep 17 00:00:00 2001
From: mattarde <mattarde at intel.com>
Date: Thu, 5 Feb 2026 02:43:18 -0800
Subject: [PATCH 1/2] [X86] Add test for VBLENDW Tuning
---
llvm/test/CodeGen/X86/x86-inst-tuning.mir | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 llvm/test/CodeGen/X86/x86-inst-tuning.mir
diff --git a/llvm/test/CodeGen/X86/x86-inst-tuning.mir b/llvm/test/CodeGen/X86/x86-inst-tuning.mir
new file mode 100644
index 0000000000000..2079faf714522
--- /dev/null
+++ b/llvm/test/CodeGen/X86/x86-inst-tuning.mir
@@ -0,0 +1,17 @@
+# RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f -run-pass=x86-fixup-inst-tuning %s -o - | FileCheck %s
+
+---
+name: vblendw_test
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $xmm0, $xmm1
+ ; CHECK-LABEL: name: vblendw_test
+ ; CHECK: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; CHECK: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; CHECK: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; CHECK: RET64 implicit $xmm0
+ renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, renamable $xmm1, -205
+ renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, renamable $xmm1, 204
+ renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ RET64 implicit $xmm0
>From 467ac6dee69fcf19b391f3a82a665ac00cc3972d Mon Sep 17 00:00:00 2001
From: mattarde <mattarde at intel.com>
Date: Fri, 6 Feb 2026 00:22:22 -0800
Subject: [PATCH 2/2] update more isa and tests
---
llvm/test/CodeGen/X86/x86-inst-tuning.mir | 304 +++++++++++++++++++++-
1 file changed, 298 insertions(+), 6 deletions(-)
diff --git a/llvm/test/CodeGen/X86/x86-inst-tuning.mir b/llvm/test/CodeGen/X86/x86-inst-tuning.mir
index 2079faf714522..c339eee5fc06b 100644
--- a/llvm/test/CodeGen/X86/x86-inst-tuning.mir
+++ b/llvm/test/CodeGen/X86/x86-inst-tuning.mir
@@ -1,4 +1,20 @@
-# RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f -run-pass=x86-fixup-inst-tuning %s -o - | FileCheck %s
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avxvnni -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVXVNNI
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vnni -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX512VNNI
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vnni -mattr=+avx512vl -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX512VNNI
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX2
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx2,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX2VCLS
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx2,+fast-variable-perlane-shuffle -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX2FVS
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX512F
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX512FVCS
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vl,+fast-variable-perlane-shuffle -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX512FVS
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX512BWFCS
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+fast-variable-perlane-shuffle -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX512BWFVS
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX512BWVL
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw,+avx512vl,+fast-variable-perlane-shuffle -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX512BWVL
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vbmi,+avx512vl,+fast-variable-crosslane-shuffle,+fast-variable-perlane-shuffle -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX512VBMIVL
+# RUN: llc %s -mtriple=x86_64-unknown-unknown -mattr=+avx512vbmi,+avx512vl,+fast-variable-perlane-shuffle -run-pass=x86-fixup-inst-tuning -o - | FileCheck %s --check-prefixes=AVX-COMMON,AVX512VBMIVL
---
name: vblendw_test
@@ -6,12 +22,288 @@ tracksRegLiveness: true
body: |
bb.0:
liveins: $xmm0, $xmm1
- ; CHECK-LABEL: name: vblendw_test
- ; CHECK: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
- ; CHECK: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
- ; CHECK: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
- ; CHECK: RET64 implicit $xmm0
+ ; AVXVNNI-LABEL: name: vblendw_test
+ ; AVXVNNI: liveins: $xmm0, $xmm1
+ ; AVXVNNI-NEXT: {{ $}}
+ ; AVXVNNI-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVXVNNI-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVXVNNI-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVXVNNI-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX512VNNI-LABEL: name: vblendw_test
+ ; AVX512VNNI: liveins: $xmm0, $xmm1
+ ; AVX512VNNI-NEXT: {{ $}}
+ ; AVX512VNNI-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVX512VNNI-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVX512VNNI-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX512VNNI-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX-LABEL: name: vblendw_test
+ ; AVX: liveins: $xmm0, $xmm1
+ ; AVX-NEXT: {{ $}}
+ ; AVX-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, renamable $xmm1, -205
+ ; AVX-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, renamable $xmm1, 204
+ ; AVX-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX2-LABEL: name: vblendw_test
+ ; AVX2: liveins: $xmm0, $xmm1
+ ; AVX2-NEXT: {{ $}}
+ ; AVX2-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVX2-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVX2-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX2-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX2VCLS-LABEL: name: vblendw_test
+ ; AVX2VCLS: liveins: $xmm0, $xmm1
+ ; AVX2VCLS-NEXT: {{ $}}
+ ; AVX2VCLS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVX2VCLS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVX2VCLS-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX2VCLS-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX2FVS-LABEL: name: vblendw_test
+ ; AVX2FVS: liveins: $xmm0, $xmm1
+ ; AVX2FVS-NEXT: {{ $}}
+ ; AVX2FVS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVX2FVS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVX2FVS-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX2FVS-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX512F-LABEL: name: vblendw_test
+ ; AVX512F: liveins: $xmm0, $xmm1
+ ; AVX512F-NEXT: {{ $}}
+ ; AVX512F-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVX512F-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVX512F-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX512F-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX512FVCS-LABEL: name: vblendw_test
+ ; AVX512FVCS: liveins: $xmm0, $xmm1
+ ; AVX512FVCS-NEXT: {{ $}}
+ ; AVX512FVCS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVX512FVCS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVX512FVCS-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX512FVCS-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX512FVS-LABEL: name: vblendw_test
+ ; AVX512FVS: liveins: $xmm0, $xmm1
+ ; AVX512FVS-NEXT: {{ $}}
+ ; AVX512FVS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVX512FVS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVX512FVS-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX512FVS-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX512BWFCS-LABEL: name: vblendw_test
+ ; AVX512BWFCS: liveins: $xmm0, $xmm1
+ ; AVX512BWFCS-NEXT: {{ $}}
+ ; AVX512BWFCS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVX512BWFCS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVX512BWFCS-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX512BWFCS-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX512BWFVS-LABEL: name: vblendw_test
+ ; AVX512BWFVS: liveins: $xmm0, $xmm1
+ ; AVX512BWFVS-NEXT: {{ $}}
+ ; AVX512BWFVS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVX512BWFVS-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVX512BWFVS-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX512BWFVS-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX512BWVL-LABEL: name: vblendw_test
+ ; AVX512BWVL: liveins: $xmm0, $xmm1
+ ; AVX512BWVL-NEXT: {{ $}}
+ ; AVX512BWVL-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVX512BWVL-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVX512BWVL-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX512BWVL-NEXT: RET64 implicit $xmm0
+ ;
+ ; AVX512VBMIVL-LABEL: name: vblendw_test
+ ; AVX512VBMIVL: liveins: $xmm0, $xmm1
+ ; AVX512VBMIVL-NEXT: {{ $}}
+ ; AVX512VBMIVL-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 5
+ ; AVX512VBMIVL-NEXT: renamable $xmm0 = VPBLENDDrri killed renamable $xmm0, renamable $xmm1, 10
+ ; AVX512VBMIVL-NEXT: renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
+ ; AVX512VBMIVL-NEXT: RET64 implicit $xmm0
renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, renamable $xmm1, -205
renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, renamable $xmm1, 204
renamable $xmm0 = VPBLENDWrri killed renamable $xmm0, killed renamable $xmm1, -86
RET64 implicit $xmm0
+...
+---
+name: blend_to_mov_test
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $xmm0, $xmm1
+ ; AVX-COMMON-LABEL: name: blend_to_mov_test
+ ; AVX-COMMON: liveins: $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: {{ $}}
+ ; AVX-COMMON-NEXT: $xmm0 = MOVSDrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = VMOVSDrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = MOVSDrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = VMOVSDrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: RET64 implicit $xmm0
+ $xmm0 = BLENDPDrri $xmm0, $xmm1, 1
+ $xmm0 = VBLENDPDrri $xmm0, $xmm1, 1
+ $xmm0 = BLENDPSrri $xmm0, $xmm1, 3
+ $xmm0 = VBLENDPSrri $xmm0, $xmm1, 3
+ RET64 implicit $xmm0
+...
+---
+name: vpermilpd_test
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $xmm0, $ymm0, $zmm0
+ ; AVX-COMMON-LABEL: name: vpermilpd_test
+ ; AVX-COMMON: liveins: $xmm0, $ymm0, $zmm0
+ ; AVX-COMMON-NEXT: {{ $}}
+ ; AVX-COMMON-NEXT: $xmm0 = VSHUFPDrri $xmm0, $xmm0, 1
+ ; AVX-COMMON-NEXT: $ymm0 = VSHUFPDYrri $ymm0, $ymm0, 2
+ ; AVX-COMMON-NEXT: $xmm0 = VSHUFPDZ128rri $xmm0, $xmm0, 3
+ ; AVX-COMMON-NEXT: $zmm0 = VSHUFPDZrri $zmm0, $zmm0, 4
+ ; AVX-COMMON-NEXT: RET64 implicit $xmm0
+ $xmm0 = VPERMILPDri $xmm0, 1
+ $ymm0 = VPERMILPDYri $ymm0, 2
+ $xmm0 = VPERMILPDZ128ri $xmm0, 3
+ $zmm0 = VPERMILPDZri $zmm0, 4
+ RET64 implicit $xmm0
+...
+---
+name: vpermilps_test
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $xmm0, $ymm0, $zmm0
+ ; AVX-COMMON-LABEL: name: vpermilps_test
+ ; AVX-COMMON: liveins: $xmm0, $ymm0, $zmm0
+ ; AVX-COMMON-NEXT: {{ $}}
+ ; AVX-COMMON-NEXT: $xmm0 = VSHUFPSrri $xmm0, $xmm0, 1
+ ; AVX-COMMON-NEXT: $ymm0 = VSHUFPSYrri $ymm0, $ymm0, 2
+ ; AVX-COMMON-NEXT: $xmm0 = VSHUFPSZ128rri $xmm0, $xmm0, 3
+ ; AVX-COMMON-NEXT: $zmm0 = VSHUFPSZrri $zmm0, $zmm0, 4
+ ; AVX-COMMON-NEXT: RET64 implicit $xmm0
+ $xmm0 = VPERMILPSri $xmm0, 1
+ $ymm0 = VPERMILPSYri $ymm0, 2
+ $xmm0 = VPERMILPSZ128ri $xmm0, 3
+ $zmm0 = VPERMILPSZri $zmm0, 4
+ RET64 implicit $xmm0
+...
+---
+name: vpermilps_mem_test
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $rdi
+ ; AVX-COMMON-LABEL: name: vpermilps_mem_test
+ ; AVX-COMMON: liveins: $rdi
+ ; AVX-COMMON-NEXT: {{ $}}
+ ; AVX-COMMON-NEXT: $xmm0 = VPERMILPSmi $rdi, 1, $noreg, 0, $noreg, 9
+ ; AVX-COMMON-NEXT: $ymm0 = VPERMILPSYmi $rdi, 1, $noreg, 0, $noreg, 9
+ ; AVX-COMMON-NEXT: $xmm0 = VPERMILPSZ128mi $rdi, 1, $noreg, 0, $noreg, 9
+ ; AVX-COMMON-NEXT: $ymm0 = VPERMILPSZ256mi $rdi, 1, $noreg, 0, $noreg, 9
+ ; AVX-COMMON-NEXT: $zmm0 = VPERMILPSZmi $rdi, 1, $noreg, 0, $noreg, 9
+ ; AVX-COMMON-NEXT: RET64 implicit $xmm0
+ $xmm0 = VPERMILPSmi $rdi, 1, $noreg, 0, $noreg, 9
+ $ymm0 = VPERMILPSYmi $rdi, 1, $noreg, 0, $noreg, 9
+ $xmm0 = VPERMILPSZ128mi $rdi, 1, $noreg, 0, $noreg, 9
+ $ymm0 = VPERMILPSZ256mi $rdi, 1, $noreg, 0, $noreg, 9
+ $zmm0 = VPERMILPSZmi $rdi, 1, $noreg, 0, $noreg, 9
+ RET64 implicit $xmm0
+...
+---
+name: vpermq_insert_test
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $ymm0
+ ; AVX-COMMON-LABEL: name: vpermq_insert_test
+ ; AVX-COMMON: liveins: $ymm0
+ ; AVX-COMMON-NEXT: {{ $}}
+ ; AVX-COMMON-NEXT: $ymm0 = VPERMQYri $ymm0, 68
+ ; AVX-COMMON-NEXT: $ymm0 = VPERMPDYri $ymm0, 68
+ ; AVX-COMMON-NEXT: RET64 implicit $ymm0
+ $ymm0 = VPERMQYri $ymm0, 68
+ $ymm0 = VPERMPDYri $ymm0, 68
+ RET64 implicit $ymm0
+...
+---
+name: unpckpd_test
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $xmm0, $xmm1, $rdi
+ ; AVX-COMMON-LABEL: name: unpckpd_test
+ ; AVX-COMMON: liveins: $xmm0, $xmm1, $rdi
+ ; AVX-COMMON-NEXT: {{ $}}
+ ; AVX-COMMON-NEXT: $xmm0 = MOVLHPSrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = UNPCKLPDrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = UNPCKHPDrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = VUNPCKLPDrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = VUNPCKHPDrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = VUNPCKLPDrm $xmm0, $rdi, 1, $noreg, 0, $noreg
+ ; AVX-COMMON-NEXT: $xmm0 = VUNPCKHPDrm $xmm0, $rdi, 1, $noreg, 0, $noreg
+ ; AVX-COMMON-NEXT: RET64 implicit $xmm0
+ $xmm0 = MOVLHPSrr $xmm0, $xmm1
+ $xmm0 = UNPCKLPDrr $xmm0, $xmm1
+ $xmm0 = UNPCKHPDrr $xmm0, $xmm1
+ $xmm0 = VUNPCKLPDrr $xmm0, $xmm1
+ $xmm0 = VUNPCKHPDrr $xmm0, $xmm1
+ $xmm0 = VUNPCKLPDrm $xmm0, $rdi, 1, $noreg, 0, $noreg
+ $xmm0 = VUNPCKHPDrm $xmm0, $rdi, 1, $noreg, 0, $noreg
+ RET64 implicit $xmm0
+...
+---
+name: unpckps_test
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $xmm0, $xmm1, $rdi
+ ; AVX-COMMON-LABEL: name: unpckps_test
+ ; AVX-COMMON: liveins: $xmm0, $xmm1, $rdi
+ ; AVX-COMMON-NEXT: {{ $}}
+ ; AVX-COMMON-NEXT: $xmm0 = UNPCKLPSrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = UNPCKHPSrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = VUNPCKLPSrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = VUNPCKHPSrr $xmm0, $xmm1
+ ; AVX-COMMON-NEXT: $xmm0 = VUNPCKLPSrm $xmm0, $rdi, 1, $noreg, 0, $noreg
+ ; AVX-COMMON-NEXT: $xmm0 = VUNPCKHPSrm $xmm0, $rdi, 1, $noreg, 0, $noreg
+ ; AVX-COMMON-NEXT: RET64 implicit $xmm0
+ $xmm0 = UNPCKLPSrr $xmm0, $xmm1
+ $xmm0 = UNPCKHPSrr $xmm0, $xmm1
+ $xmm0 = VUNPCKLPSrr $xmm0, $xmm1
+ $xmm0 = VUNPCKHPSrr $xmm0, $xmm1
+ $xmm0 = VUNPCKLPSrm $xmm0, $rdi, 1, $noreg, 0, $noreg
+ $xmm0 = VUNPCKHPSrm $xmm0, $rdi, 1, $noreg, 0, $noreg
+ RET64 implicit $xmm0
+...
+---
+name: shift_to_add_test
+tracksRegLiveness: true
+body: |
+ bb.0:
+ liveins: $xmm0, $ymm0
+ ; AVX-COMMON-LABEL: name: shift_to_add_test
+ ; AVX-COMMON: liveins: $xmm0, $ymm0
+ ; AVX-COMMON-NEXT: {{ $}}
+ ; AVX-COMMON-NEXT: $xmm0 = PADDWrr $xmm0, $xmm0
+ ; AVX-COMMON-NEXT: $xmm0 = PADDDrr $xmm0, $xmm0
+ ; AVX-COMMON-NEXT: $xmm0 = PADDQrr $xmm0, $xmm0
+ ; AVX-COMMON-NEXT: $xmm0 = VPADDWrr $xmm0, $xmm0
+ ; AVX-COMMON-NEXT: $xmm0 = VPADDDrr $xmm0, $xmm0
+ ; AVX-COMMON-NEXT: $xmm0 = VPADDQrr $xmm0, $xmm0
+ ; AVX-COMMON-NEXT: $ymm0 = VPADDWYrr $ymm0, $ymm0
+ ; AVX-COMMON-NEXT: $ymm0 = VPADDDYrr $ymm0, $ymm0
+ ; AVX-COMMON-NEXT: $ymm0 = VPADDQYrr $ymm0, $ymm0
+ ; AVX-COMMON-NEXT: RET64 implicit $xmm0
+ $xmm0 = PSLLWri $xmm0, 1
+ $xmm0 = PSLLDri $xmm0, 1
+ $xmm0 = PSLLQri $xmm0, 1
+ $xmm0 = VPSLLWri $xmm0, 1
+ $xmm0 = VPSLLDri $xmm0, 1
+ $xmm0 = VPSLLQri $xmm0, 1
+ $ymm0 = VPSLLWYri $ymm0, 1
+ $ymm0 = VPSLLDYri $ymm0, 1
+ $ymm0 = VPSLLQYri $ymm0, 1
+ RET64 implicit $xmm0
More information about the llvm-commits
mailing list