# 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 ...