blob: 6a0baff5b0f38e81e9e2720643da1d0e03ee700f [file] [edit]
# RUN: llc %s -mtriple=x86_64-unknown -mattr=+avx512f,+nf -start-before=x86-compress-evex -show-mc-encoding -o - | FileCheck --check-prefixes=CHECK %s
...
---
name: test_andn_nf
body: |
bb.0.entry:
; Test ANDN with NF - should NOT compress to VEX
; CHECK-LABEL: test_andn_nf:
; CHECK: {nf} andnq %rdx, %r14, %r8
; CHECK-NOT: andnq %rdx, %r14, %r8 # EVEX TO VEX
; CHECK: {nf} andnl %esi, %edi, %eax
; CHECK-NOT: andnl %esi, %edi, %eax # EVEX TO VEX
successors: %bb.1(0x80000000)
liveins: $rdx, $r14, $r15, $rsi, $rdi
renamable $r15 = BLSR64rr killed renamable $r15, implicit-def $eflags
renamable $r8 = ANDN64rr_NF renamable $r14, renamable $rdx
renamable $eax = ANDN32rr_NF renamable $edi, renamable $esi
JCC_1 %bb.1, 4, implicit $eflags
bb.1:
RET64 $rax
...
---
name: test_bextr_nf
body: |
bb.0.entry:
; Test BEXTR with NF - should NOT compress to VEX
; CHECK-LABEL: test_bextr_nf:
; CHECK: {nf} bextrq %rcx, %rdx, %r8
; CHECK-NOT: bextrq %rcx, %rdx, %r8 # EVEX TO VEX
; CHECK: {nf} bextrl %ecx, %edx, %eax
; CHECK-NOT: bextrl %ecx, %edx, %eax # EVEX TO VEX
liveins: $rcx, $rdx, $r15
renamable $r15 = BLSR64rr killed renamable $r15, implicit-def $eflags
renamable $r8 = BEXTR64rr_NF renamable $rdx, renamable $rcx
renamable $eax = BEXTR32rr_NF renamable $edx, renamable $ecx
RET64 $rax
...
---
name: test_blsi_nf
body: |
bb.0.entry:
; Test BLSI with NF - should NOT compress to VEX
; CHECK-LABEL: test_blsi_nf:
; CHECK: {nf} blsiq %rdx, %r8
; CHECK-NOT: blsiq %rdx, %r8 # EVEX TO VEX
; CHECK: {nf} blsil %edx, %eax
; CHECK-NOT: blsil %edx, %eax # EVEX TO VEX
liveins: $rdx, $r15
renamable $r15 = BLSR64rr killed renamable $r15, implicit-def $eflags
renamable $r8 = BLSI64rr_NF renamable $rdx
renamable $eax = BLSI32rr_NF renamable $edx
RET64 $rax
...
---
name: test_blsmsk_nf
body: |
bb.0.entry:
; Test BLSMSK with NF - should NOT compress to VEX
; CHECK-LABEL: test_blsmsk_nf:
; CHECK: {nf} blsmskq %rdx, %r8
; CHECK-NOT: blsmskq %rdx, %r8 # EVEX TO VEX
; CHECK: {nf} blsmskl %edx, %eax
; CHECK-NOT: blsmskl %edx, %eax # EVEX TO VEX
liveins: $rdx, $r15
renamable $r15 = BLSR64rr killed renamable $r15, implicit-def $eflags
renamable $r8 = BLSMSK64rr_NF renamable $rdx
renamable $eax = BLSMSK32rr_NF renamable $edx
RET64 $rax
...
---
name: test_blsr_nf
body: |
bb.0.entry:
; Test BLSR with NF - should NOT compress to VEX
; CHECK-LABEL: test_blsr_nf:
; CHECK: {nf} blsrq %rdx, %r8
; CHECK-NOT: blsrq %rdx, %r8 # EVEX TO VEX
; CHECK: {nf} blsrl %edx, %eax
; CHECK-NOT: blsrl %edx, %eax # EVEX TO VEX
liveins: $rdx, $r15
renamable $r15 = BLSR64rr killed renamable $r15, implicit-def $eflags
renamable $r8 = BLSR64rr_NF renamable $rdx
renamable $eax = BLSR32rr_NF renamable $edx
RET64 $rax
...
---
name: test_bzhi_nf
body: |
bb.0.entry:
; Test BZHI with NF - should NOT compress to VEX
; CHECK-LABEL: test_bzhi_nf:
; CHECK: {nf} bzhiq %rcx, %rdx, %r8
; CHECK-NOT: bzhiq %rcx, %rdx, %r8 # EVEX TO VEX
; CHECK: {nf} bzhil %ecx, %edx, %eax
; CHECK-NOT: bzhil %ecx, %edx, %eax # EVEX TO VEX
liveins: $rcx, $rdx, $r15
renamable $r15 = BLSR64rr killed renamable $r15, implicit-def $eflags
renamable $r8 = BZHI64rr_NF renamable $rdx, renamable $rcx
renamable $eax = BZHI32rr_NF renamable $edx, renamable $ecx
RET64 $rax
...
---
name: test_memory_forms_nf
alignment: 16
body: |
bb.0.entry:
; Test memory forms with NF - should NOT compress to VEX
; CHECK-LABEL: test_memory_forms_nf:
; CHECK: {nf} andnq (%rsi), %rdi, %rax
; CHECK-NOT: andnq (%rsi), %rdi, %rax # EVEX TO VEX
; CHECK: {nf} bextrq %rdi, (%rsi), %rcx
; CHECK-NOT: bextrq %rdi, (%rsi), %rcx # EVEX TO VEX
; CHECK: {nf} blsiq (%rsi), %rdx
; CHECK-NOT: blsiq (%rsi), %rdx # EVEX TO VEX
liveins: $rsi, $rdi, $r15
renamable $r15 = BLSR64rr killed renamable $r15, implicit-def $eflags
renamable $rax = ANDN64rm_NF renamable $rdi, renamable $rsi, 1, $noreg, 0, $noreg
renamable $rcx = BEXTR64rm_NF renamable $rsi, 1, $noreg, 0, $noreg, renamable $rdi
renamable $rdx = BLSI64rm_NF renamable $rsi, 1, $noreg, 0, $noreg
RET64 $rax
...