[llvm] ca808e8 - [x86] add tests for and+setcc; NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 10 15:32:08 PST 2022


Author: Sanjay Patel
Date: 2022-03-10T18:32:00-05:00
New Revision: ca808e89242fa28ccbb9a2782936f00c745cec95

URL: https://github.com/llvm/llvm-project/commit/ca808e89242fa28ccbb9a2782936f00c745cec95
DIFF: https://github.com/llvm/llvm-project/commit/ca808e89242fa28ccbb9a2782936f00c745cec95.diff

LOG: [x86] add tests for and+setcc; NFC

Added: 
    

Modified: 
    llvm/test/CodeGen/X86/cmp.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/X86/cmp.ll b/llvm/test/CodeGen/X86/cmp.ll
index 9c0a54bdf4c44..95b04ae84af89 100644
--- a/llvm/test/CodeGen/X86/cmp.ll
+++ b/llvm/test/CodeGen/X86/cmp.ll
@@ -409,6 +409,22 @@ define i32 @highmask_i64_mask64(i64 %val) {
   ret i32 %ret
 }
 
+define i64 @highmask_i64_mask64_extra_use(i64 %val) nounwind {
+; CHECK-LABEL: highmask_i64_mask64_extra_use:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; CHECK-NEXT:    movq %rdi, %rcx # encoding: [0x48,0x89,0xf9]
+; CHECK-NEXT:    shrq $41, %rcx # encoding: [0x48,0xc1,0xe9,0x29]
+; CHECK-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]
+; CHECK-NEXT:    imulq %rdi, %rax # encoding: [0x48,0x0f,0xaf,0xc7]
+; CHECK-NEXT:    retq # encoding: [0xc3]
+  %and = and i64 %val, -2199023255552
+  %cmp = icmp ne i64 %and, 0
+  %z = zext i1 %cmp to i64
+  %ret = mul i64 %z, %val
+  ret i64 %ret
+}
+
 define i32 @highmask_i64_mask32(i64 %val) {
 ; CHECK-LABEL: highmask_i64_mask32:
 ; CHECK:       # %bb.0:
@@ -423,6 +439,22 @@ define i32 @highmask_i64_mask32(i64 %val) {
   ret i32 %ret
 }
 
+define i64 @highmask_i64_mask32_extra_use(i64 %val) nounwind {
+; CHECK-LABEL: highmask_i64_mask32_extra_use:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; CHECK-NEXT:    testq $-1048576, %rdi # encoding: [0x48,0xf7,0xc7,0x00,0x00,0xf0,0xff]
+; CHECK-NEXT:    # imm = 0xFFF00000
+; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
+; CHECK-NEXT:    imulq %rdi, %rax # encoding: [0x48,0x0f,0xaf,0xc7]
+; CHECK-NEXT:    retq # encoding: [0xc3]
+  %and = and i64 %val, -1048576
+  %cmp = icmp eq i64 %and, 0
+  %z = zext i1 %cmp to i64
+  %ret = mul i64 %z, %val
+  ret i64 %ret
+}
+
 define i32 @highmask_i64_mask8(i64 %val) {
 ; CHECK-LABEL: highmask_i64_mask8:
 ; CHECK:       # %bb.0:
@@ -449,6 +481,22 @@ define i32 @lowmask_i64_mask64(i64 %val) {
   ret i32 %ret
 }
 
+define i64 @lowmask_i64_mask64_extra_use(i64 %val) nounwind {
+; CHECK-LABEL: lowmask_i64_mask64_extra_use:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; CHECK-NEXT:    movq %rdi, %rcx # encoding: [0x48,0x89,0xf9]
+; CHECK-NEXT:    shlq $16, %rcx # encoding: [0x48,0xc1,0xe1,0x10]
+; CHECK-NEXT:    sete %al # encoding: [0x0f,0x94,0xc0]
+; CHECK-NEXT:    imulq %rdi, %rax # encoding: [0x48,0x0f,0xaf,0xc7]
+; CHECK-NEXT:    retq # encoding: [0xc3]
+  %and = and i64 %val, 281474976710655
+  %cmp = icmp eq i64 %and, 0
+  %z = zext i1 %cmp to i64
+  %ret = mul i64 %z, %val
+  ret i64 %ret
+}
+
 define i32 @lowmask_i64_mask32(i64 %val) {
 ; CHECK-LABEL: lowmask_i64_mask32:
 ; CHECK:       # %bb.0:
@@ -463,6 +511,22 @@ define i32 @lowmask_i64_mask32(i64 %val) {
   ret i32 %ret
 }
 
+define i64 @lowmask_i64_mask32_extra_use(i64 %val) nounwind {
+; CHECK-LABEL: lowmask_i64_mask32_extra_use:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    xorl %eax, %eax # encoding: [0x31,0xc0]
+; CHECK-NEXT:    testl $1048575, %edi # encoding: [0xf7,0xc7,0xff,0xff,0x0f,0x00]
+; CHECK-NEXT:    # imm = 0xFFFFF
+; CHECK-NEXT:    setne %al # encoding: [0x0f,0x95,0xc0]
+; CHECK-NEXT:    imulq %rdi, %rax # encoding: [0x48,0x0f,0xaf,0xc7]
+; CHECK-NEXT:    retq # encoding: [0xc3]
+  %and = and i64 %val, 1048575
+  %cmp = icmp ne i64 %and, 0
+  %z = zext i1 %cmp to i64
+  %ret = mul i64 %z, %val
+  ret i64 %ret
+}
+
 define i32 @lowmask_i64_mask8(i64 %val) {
 ; CHECK-LABEL: lowmask_i64_mask8:
 ; CHECK:       # %bb.0:
@@ -555,13 +619,13 @@ define i32 @pr42189(i16 signext %c) {
 ; CHECK:       # %bb.0: # %entry
 ; CHECK-NEXT:    cmpl $32767, %edi # encoding: [0x81,0xff,0xff,0x7f,0x00,0x00]
 ; CHECK-NEXT:    # imm = 0x7FFF
-; CHECK-NEXT:    jne .LBB33_2 # encoding: [0x75,A]
-; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB33_2-1, kind: FK_PCRel_1
+; CHECK-NEXT:    jne .LBB37_2 # encoding: [0x75,A]
+; CHECK-NEXT:    # fixup A - offset: 1, value: .LBB37_2-1, kind: FK_PCRel_1
 ; CHECK-NEXT:  # %bb.1: # %if.then
 ; CHECK-NEXT:    jmp g at PLT # TAILCALL
 ; CHECK-NEXT:    # encoding: [0xeb,A]
 ; CHECK-NEXT:    # fixup A - offset: 1, value: g at PLT-1, kind: FK_PCRel_1
-; CHECK-NEXT:  .LBB33_2: # %if.end
+; CHECK-NEXT:  .LBB37_2: # %if.end
 ; CHECK-NEXT:    jmp f at PLT # TAILCALL
 ; CHECK-NEXT:    # encoding: [0xeb,A]
 ; CHECK-NEXT:    # fixup A - offset: 1, value: f at PLT-1, kind: FK_PCRel_1


        


More information about the llvm-commits mailing list