|
@@ -226,10 +226,7 @@ define i32 @test_x86_tbm_blci_u32_z2(i32 %a, i32 %b, i32 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_blci_u32_z2:
|
|
; CHECK-LABEL: test_x86_tbm_blci_u32_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
-; CHECK-NEXT: # kill: def $edi killed $edi def $rdi
|
|
|
|
-; CHECK-NEXT: leal 1(%rdi), %ecx
|
|
|
|
-; CHECK-NEXT: notl %ecx
|
|
|
|
-; CHECK-NEXT: orl %edi, %ecx
|
|
|
|
|
|
+; CHECK-NEXT: blcil %edi, %ecx
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = add i32 1, %a
|
|
%t0 = add i32 1, %a
|
|
@@ -269,9 +266,7 @@ define i64 @test_x86_tbm_blci_u64_z2(i64 %a, i64 %b, i64 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_blci_u64_z2:
|
|
; CHECK-LABEL: test_x86_tbm_blci_u64_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
-; CHECK-NEXT: leaq 1(%rdi), %rcx
|
|
|
|
-; CHECK-NEXT: notq %rcx
|
|
|
|
-; CHECK-NEXT: orq %rdi, %rcx
|
|
|
|
|
|
+; CHECK-NEXT: blciq %rdi, %rcx
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = add i64 1, %a
|
|
%t0 = add i64 1, %a
|
|
@@ -409,9 +404,7 @@ define i32 @test_x86_tbm_blcmsk_u32_z2(i32 %a, i32 %b, i32 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_blcmsk_u32_z2:
|
|
; CHECK-LABEL: test_x86_tbm_blcmsk_u32_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
-; CHECK-NEXT: # kill: def $edi killed $edi def $rdi
|
|
|
|
-; CHECK-NEXT: leal 1(%rdi), %ecx
|
|
|
|
-; CHECK-NEXT: xorl %edi, %ecx
|
|
|
|
|
|
+; CHECK-NEXT: blcmskl %edi, %ecx
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = add i32 %a, 1
|
|
%t0 = add i32 %a, 1
|
|
@@ -448,8 +441,7 @@ define i64 @test_x86_tbm_blcmsk_u64_z2(i64 %a, i64 %b, i64 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_blcmsk_u64_z2:
|
|
; CHECK-LABEL: test_x86_tbm_blcmsk_u64_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
-; CHECK-NEXT: leaq 1(%rdi), %rcx
|
|
|
|
-; CHECK-NEXT: xorq %rdi, %rcx
|
|
|
|
|
|
+; CHECK-NEXT: blcmskq %rdi, %rcx
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = add i64 %a, 1
|
|
%t0 = add i64 %a, 1
|
|
@@ -486,9 +478,7 @@ define i32 @test_x86_tbm_blcs_u32_z2(i32 %a, i32 %b, i32 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_blcs_u32_z2:
|
|
; CHECK-LABEL: test_x86_tbm_blcs_u32_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
-; CHECK-NEXT: # kill: def $edi killed $edi def $rdi
|
|
|
|
-; CHECK-NEXT: leal 1(%rdi), %ecx
|
|
|
|
-; CHECK-NEXT: orl %edi, %ecx
|
|
|
|
|
|
+; CHECK-NEXT: blcsl %edi, %ecx
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = add i32 %a, 1
|
|
%t0 = add i32 %a, 1
|
|
@@ -525,8 +515,7 @@ define i64 @test_x86_tbm_blcs_u64_z2(i64 %a, i64 %b, i64 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_blcs_u64_z2:
|
|
; CHECK-LABEL: test_x86_tbm_blcs_u64_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
-; CHECK-NEXT: leaq 1(%rdi), %rcx
|
|
|
|
-; CHECK-NEXT: orq %rdi, %rcx
|
|
|
|
|
|
+; CHECK-NEXT: blcsq %rdi, %rcx
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = add i64 %a, 1
|
|
%t0 = add i64 %a, 1
|
|
@@ -563,9 +552,7 @@ define i32 @test_x86_tbm_blsfill_u32_z2(i32 %a, i32 %b, i32 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_blsfill_u32_z2:
|
|
; CHECK-LABEL: test_x86_tbm_blsfill_u32_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
-; CHECK-NEXT: # kill: def $edi killed $edi def $rdi
|
|
|
|
-; CHECK-NEXT: leal -1(%rdi), %ecx
|
|
|
|
-; CHECK-NEXT: orl %edi, %ecx
|
|
|
|
|
|
+; CHECK-NEXT: blsfilll %edi, %ecx
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = add i32 %a, -1
|
|
%t0 = add i32 %a, -1
|
|
@@ -602,8 +589,7 @@ define i64 @test_x86_tbm_blsfill_u64_z2(i64 %a, i64 %b, i64 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_blsfill_u64_z2:
|
|
; CHECK-LABEL: test_x86_tbm_blsfill_u64_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
-; CHECK-NEXT: leaq -1(%rdi), %rcx
|
|
|
|
-; CHECK-NEXT: orq %rdi, %rcx
|
|
|
|
|
|
+; CHECK-NEXT: blsfillq %rdi, %rcx
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = add i64 %a, -1
|
|
%t0 = add i64 %a, -1
|
|
@@ -642,10 +628,7 @@ define i32 @test_x86_tbm_blsic_u32_z2(i32 %a, i32 %b, i32 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_blsic_u32_z2:
|
|
; CHECK-LABEL: test_x86_tbm_blsic_u32_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
-; CHECK-NEXT: movl %edi, %ecx
|
|
|
|
-; CHECK-NEXT: notl %ecx
|
|
|
|
-; CHECK-NEXT: decl %edi
|
|
|
|
-; CHECK-NEXT: orl %ecx, %edi
|
|
|
|
|
|
+; CHECK-NEXT: blsicl %edi, %ecx
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = xor i32 %a, -1
|
|
%t0 = xor i32 %a, -1
|
|
@@ -685,10 +668,7 @@ define i64 @test_x86_tbm_blsic_u64_z2(i64 %a, i64 %b, i64 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_blsic_u64_z2:
|
|
; CHECK-LABEL: test_x86_tbm_blsic_u64_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
-; CHECK-NEXT: movq %rdi, %rcx
|
|
|
|
-; CHECK-NEXT: notq %rcx
|
|
|
|
-; CHECK-NEXT: decq %rdi
|
|
|
|
-; CHECK-NEXT: orq %rcx, %rdi
|
|
|
|
|
|
+; CHECK-NEXT: blsicq %rdi, %rcx
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = xor i64 %a, -1
|
|
%t0 = xor i64 %a, -1
|
|
@@ -728,10 +708,7 @@ define i32 @test_x86_tbm_t1mskc_u32_z2(i32 %a, i32 %b, i32 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_t1mskc_u32_z2:
|
|
; CHECK-LABEL: test_x86_tbm_t1mskc_u32_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
; CHECK-NEXT: movl %esi, %eax
|
|
-; CHECK-NEXT: movl %edi, %ecx
|
|
|
|
-; CHECK-NEXT: notl %ecx
|
|
|
|
-; CHECK-NEXT: incl %edi
|
|
|
|
-; CHECK-NEXT: orl %ecx, %edi
|
|
|
|
|
|
+; CHECK-NEXT: t1mskcl %edi, %ecx
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: cmovnel %edx, %eax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = xor i32 %a, -1
|
|
%t0 = xor i32 %a, -1
|
|
@@ -771,10 +748,7 @@ define i64 @test_x86_tbm_t1mskc_u64_z2(i64 %a, i64 %b, i64 %c) nounwind {
|
|
; CHECK-LABEL: test_x86_tbm_t1mskc_u64_z2:
|
|
; CHECK-LABEL: test_x86_tbm_t1mskc_u64_z2:
|
|
; CHECK: # %bb.0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
; CHECK-NEXT: movq %rsi, %rax
|
|
-; CHECK-NEXT: movq %rdi, %rcx
|
|
|
|
-; CHECK-NEXT: notq %rcx
|
|
|
|
-; CHECK-NEXT: incq %rdi
|
|
|
|
-; CHECK-NEXT: orq %rcx, %rdi
|
|
|
|
|
|
+; CHECK-NEXT: t1mskcq %rdi, %rcx
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: cmovneq %rdx, %rax
|
|
; CHECK-NEXT: retq
|
|
; CHECK-NEXT: retq
|
|
%t0 = xor i64 %a, -1
|
|
%t0 = xor i64 %a, -1
|