xref: /llvm-project/llvm/test/CodeGen/X86/isel-and.ll (revision a437347562e2f0711ca9f5819831946e06e1ac93)
12df69ed1SSimon Pilgrim; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
22df69ed1SSimon Pilgrim; RUN: llc < %s -mtriple=i686-- | FileCheck %s --check-prefixes=X86,SDAG-X86
32df69ed1SSimon Pilgrim; RUN: llc < %s -mtriple=i686-- -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=X86,FASTISEL-X86
42df69ed1SSimon Pilgrim; RUN: llc < %s -mtriple=i686-- -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X86
52df69ed1SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefixes=X64,SDAG-X64
62df69ed1SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=X64,FASTISEL-X64
72df69ed1SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X64,GISEL-X64
82df69ed1SSimon Pilgrim
9*a4373475SEvgenii Kudriashovdefine i1 @and_i1(i1 %a, i1 %b) {
10*a4373475SEvgenii Kudriashov; SDAG-X86-LABEL: and_i1:
11*a4373475SEvgenii Kudriashov; SDAG-X86:       # %bb.0:
12*a4373475SEvgenii Kudriashov; SDAG-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
13*a4373475SEvgenii Kudriashov; SDAG-X86-NEXT:    andb {{[0-9]+}}(%esp), %al
14*a4373475SEvgenii Kudriashov; SDAG-X86-NEXT:    retl
15*a4373475SEvgenii Kudriashov;
16*a4373475SEvgenii Kudriashov; FASTISEL-X86-LABEL: and_i1:
17*a4373475SEvgenii Kudriashov; FASTISEL-X86:       # %bb.0:
18*a4373475SEvgenii Kudriashov; FASTISEL-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
19*a4373475SEvgenii Kudriashov; FASTISEL-X86-NEXT:    andb {{[0-9]+}}(%esp), %al
20*a4373475SEvgenii Kudriashov; FASTISEL-X86-NEXT:    retl
21*a4373475SEvgenii Kudriashov;
22*a4373475SEvgenii Kudriashov; GISEL-X86-LABEL: and_i1:
23*a4373475SEvgenii Kudriashov; GISEL-X86:       # %bb.0:
24*a4373475SEvgenii Kudriashov; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
25*a4373475SEvgenii Kudriashov; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
26*a4373475SEvgenii Kudriashov; GISEL-X86-NEXT:    andb %cl, %al
27*a4373475SEvgenii Kudriashov; GISEL-X86-NEXT:    # kill: def $al killed $al killed $eax
28*a4373475SEvgenii Kudriashov; GISEL-X86-NEXT:    retl
29*a4373475SEvgenii Kudriashov;
30*a4373475SEvgenii Kudriashov; SDAG-X64-LABEL: and_i1:
31*a4373475SEvgenii Kudriashov; SDAG-X64:       # %bb.0:
32*a4373475SEvgenii Kudriashov; SDAG-X64-NEXT:    movl %edi, %eax
33*a4373475SEvgenii Kudriashov; SDAG-X64-NEXT:    andl %esi, %eax
34*a4373475SEvgenii Kudriashov; SDAG-X64-NEXT:    # kill: def $al killed $al killed $eax
35*a4373475SEvgenii Kudriashov; SDAG-X64-NEXT:    retq
36*a4373475SEvgenii Kudriashov;
37*a4373475SEvgenii Kudriashov; FASTISEL-X64-LABEL: and_i1:
38*a4373475SEvgenii Kudriashov; FASTISEL-X64:       # %bb.0:
39*a4373475SEvgenii Kudriashov; FASTISEL-X64-NEXT:    movl %edi, %eax
40*a4373475SEvgenii Kudriashov; FASTISEL-X64-NEXT:    andb %sil, %al
41*a4373475SEvgenii Kudriashov; FASTISEL-X64-NEXT:    # kill: def $al killed $al killed $eax
42*a4373475SEvgenii Kudriashov; FASTISEL-X64-NEXT:    retq
43*a4373475SEvgenii Kudriashov;
44*a4373475SEvgenii Kudriashov; GISEL-X64-LABEL: and_i1:
45*a4373475SEvgenii Kudriashov; GISEL-X64:       # %bb.0:
46*a4373475SEvgenii Kudriashov; GISEL-X64-NEXT:    movl %esi, %eax
47*a4373475SEvgenii Kudriashov; GISEL-X64-NEXT:    andb %dil, %al
48*a4373475SEvgenii Kudriashov; GISEL-X64-NEXT:    # kill: def $al killed $al killed $eax
49*a4373475SEvgenii Kudriashov; GISEL-X64-NEXT:    retq
50*a4373475SEvgenii Kudriashov  %c = and i1 %a, %b
51*a4373475SEvgenii Kudriashov  ret i1 %c
52*a4373475SEvgenii Kudriashov}
532df69ed1SSimon Pilgrimdefine i8 @and_i8(i8 %a, i8 %b) {
542df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_i8:
552df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
562df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
572df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andb {{[0-9]+}}(%esp), %al
582df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
592df69ed1SSimon Pilgrim;
602df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_i8:
612df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
622df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
632df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andb {{[0-9]+}}(%esp), %al
642df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
652df69ed1SSimon Pilgrim;
662df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_i8:
672df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
682df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
692df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
702df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andb %cl, %al
712df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    # kill: def $al killed $al killed $eax
722df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
732df69ed1SSimon Pilgrim;
742df69ed1SSimon Pilgrim; SDAG-X64-LABEL: and_i8:
752df69ed1SSimon Pilgrim; SDAG-X64:       # %bb.0:
762df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    movl %edi, %eax
772df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    andl %esi, %eax
782df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    # kill: def $al killed $al killed $eax
792df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    retq
802df69ed1SSimon Pilgrim;
812df69ed1SSimon Pilgrim; FASTISEL-X64-LABEL: and_i8:
822df69ed1SSimon Pilgrim; FASTISEL-X64:       # %bb.0:
832df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    movl %edi, %eax
842df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    andb %sil, %al
852df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    # kill: def $al killed $al killed $eax
862df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    retq
872df69ed1SSimon Pilgrim;
882df69ed1SSimon Pilgrim; GISEL-X64-LABEL: and_i8:
892df69ed1SSimon Pilgrim; GISEL-X64:       # %bb.0:
902df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    movl %esi, %eax
912df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    andb %dil, %al
922df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    # kill: def $al killed $al killed $eax
932df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    retq
942df69ed1SSimon Pilgrim  %c = and i8 %a, %b
952df69ed1SSimon Pilgrim  ret i8 %c
962df69ed1SSimon Pilgrim}
972df69ed1SSimon Pilgrim
982df69ed1SSimon Pilgrimdefine i16 @and_i16(i16 %a, i16 %b) {
992df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_i16:
1002df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
1012df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
1022df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andw {{[0-9]+}}(%esp), %ax
1032df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
1042df69ed1SSimon Pilgrim;
1052df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_i16:
1062df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
1072df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
1082df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andw {{[0-9]+}}(%esp), %ax
1092df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
1102df69ed1SSimon Pilgrim;
1112df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_i16:
1122df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
1132df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1142df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1152df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andw %cx, %ax
1162df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    # kill: def $ax killed $ax killed $eax
1172df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
1182df69ed1SSimon Pilgrim;
1192df69ed1SSimon Pilgrim; SDAG-X64-LABEL: and_i16:
1202df69ed1SSimon Pilgrim; SDAG-X64:       # %bb.0:
1212df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    movl %edi, %eax
1222df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    andl %esi, %eax
1232df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    # kill: def $ax killed $ax killed $eax
1242df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    retq
1252df69ed1SSimon Pilgrim;
1262df69ed1SSimon Pilgrim; FASTISEL-X64-LABEL: and_i16:
1272df69ed1SSimon Pilgrim; FASTISEL-X64:       # %bb.0:
1282df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    movl %edi, %eax
1292df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    andw %si, %ax
1302df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    # kill: def $ax killed $ax killed $eax
1312df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    retq
1322df69ed1SSimon Pilgrim;
1332df69ed1SSimon Pilgrim; GISEL-X64-LABEL: and_i16:
1342df69ed1SSimon Pilgrim; GISEL-X64:       # %bb.0:
1352df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    movl %esi, %eax
1362df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    andw %di, %ax
1372df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    # kill: def $ax killed $ax killed $eax
1382df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    retq
1392df69ed1SSimon Pilgrim  %c = and i16 %a, %b
1402df69ed1SSimon Pilgrim  ret i16 %c
1412df69ed1SSimon Pilgrim}
1422df69ed1SSimon Pilgrim
1432df69ed1SSimon Pilgrimdefine i32 @and_i32(i32 %a, i32 %b) {
1442df69ed1SSimon Pilgrim; X86-LABEL: and_i32:
1452df69ed1SSimon Pilgrim; X86:       # %bb.0:
1462df69ed1SSimon Pilgrim; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1472df69ed1SSimon Pilgrim; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
1482df69ed1SSimon Pilgrim; X86-NEXT:    retl
1492df69ed1SSimon Pilgrim;
1502df69ed1SSimon Pilgrim; SDAG-X64-LABEL: and_i32:
1512df69ed1SSimon Pilgrim; SDAG-X64:       # %bb.0:
1522df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    movl %edi, %eax
1532df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    andl %esi, %eax
1542df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    retq
1552df69ed1SSimon Pilgrim;
1562df69ed1SSimon Pilgrim; FASTISEL-X64-LABEL: and_i32:
1572df69ed1SSimon Pilgrim; FASTISEL-X64:       # %bb.0:
1582df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    movl %edi, %eax
1592df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    andl %esi, %eax
1602df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    retq
1612df69ed1SSimon Pilgrim;
1622df69ed1SSimon Pilgrim; GISEL-X64-LABEL: and_i32:
1632df69ed1SSimon Pilgrim; GISEL-X64:       # %bb.0:
1642df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    movl %esi, %eax
1652df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    andl %edi, %eax
1662df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    retq
1672df69ed1SSimon Pilgrim  %c = and i32 %a, %b
1682df69ed1SSimon Pilgrim  ret i32 %c
1692df69ed1SSimon Pilgrim}
1702df69ed1SSimon Pilgrim
1712df69ed1SSimon Pilgrimdefine i64 @and_i64(i64 %a, i64 %b) nounwind {
1722df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_i64:
1732df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
1742df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1752df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1762df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
1772df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andl {{[0-9]+}}(%esp), %edx
1782df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
1792df69ed1SSimon Pilgrim;
1802df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_i64:
1812df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
1822df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1832df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1842df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
1852df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andl {{[0-9]+}}(%esp), %edx
1862df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
1872df69ed1SSimon Pilgrim;
1882df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_i64:
1892df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
1902df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1912df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1922df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
1932df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl {{[0-9]+}}(%esp), %edx
1942df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
1952df69ed1SSimon Pilgrim;
1962df69ed1SSimon Pilgrim; SDAG-X64-LABEL: and_i64:
1972df69ed1SSimon Pilgrim; SDAG-X64:       # %bb.0:
1982df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    movq %rdi, %rax
1992df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    andq %rsi, %rax
2002df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    retq
2012df69ed1SSimon Pilgrim;
2022df69ed1SSimon Pilgrim; FASTISEL-X64-LABEL: and_i64:
2032df69ed1SSimon Pilgrim; FASTISEL-X64:       # %bb.0:
2042df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    movq %rdi, %rax
2052df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    andq %rsi, %rax
2062df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    retq
2072df69ed1SSimon Pilgrim;
2082df69ed1SSimon Pilgrim; GISEL-X64-LABEL: and_i64:
2092df69ed1SSimon Pilgrim; GISEL-X64:       # %bb.0:
2102df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    movq %rsi, %rax
2112df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    andq %rdi, %rax
2122df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    retq
2132df69ed1SSimon Pilgrim  %c = and i64 %a, %b
2142df69ed1SSimon Pilgrim  ret i64 %c
2152df69ed1SSimon Pilgrim}
2162df69ed1SSimon Pilgrim
2172df69ed1SSimon Pilgrimdefine i8 @and_imm8_i8(i8 %a) {
2182df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_imm8_i8:
2192df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
2202df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2212df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andb $1, %al
2222df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
2232df69ed1SSimon Pilgrim;
2242df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_imm8_i8:
2252df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
2262df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
2272df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andb $1, %al
2282df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
2292df69ed1SSimon Pilgrim;
2302df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_imm8_i8:
2312df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
2322df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
2332df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andb $1, %al
2342df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    # kill: def $al killed $al killed $eax
2352df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
2362df69ed1SSimon Pilgrim;
2372df69ed1SSimon Pilgrim; X64-LABEL: and_imm8_i8:
2382df69ed1SSimon Pilgrim; X64:       # %bb.0:
2392df69ed1SSimon Pilgrim; X64-NEXT:    movl %edi, %eax
2402df69ed1SSimon Pilgrim; X64-NEXT:    andb $1, %al
2412df69ed1SSimon Pilgrim; X64-NEXT:    # kill: def $al killed $al killed $eax
2422df69ed1SSimon Pilgrim; X64-NEXT:    retq
2432df69ed1SSimon Pilgrim  %c = and i8 %a, 1
2442df69ed1SSimon Pilgrim  ret i8 %c
2452df69ed1SSimon Pilgrim}
2462df69ed1SSimon Pilgrim
2472df69ed1SSimon Pilgrimdefine i16 @and_imm8_i16(i16 %a) {
2482df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_imm8_i16:
2492df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
2502df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
2512df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andl $6, %eax
2522df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    # kill: def $ax killed $ax killed $eax
2532df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
2542df69ed1SSimon Pilgrim;
2552df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_imm8_i16:
2562df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
2572df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
2582df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andw $6, %ax
2592df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
2602df69ed1SSimon Pilgrim;
2612df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_imm8_i16:
2622df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
2632df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
2642df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andw $6, %ax
2652df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    # kill: def $ax killed $ax killed $eax
2662df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
2672df69ed1SSimon Pilgrim;
2682df69ed1SSimon Pilgrim; SDAG-X64-LABEL: and_imm8_i16:
2692df69ed1SSimon Pilgrim; SDAG-X64:       # %bb.0:
2702df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    movl %edi, %eax
2712df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    andl $6, %eax
2722df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    # kill: def $ax killed $ax killed $eax
2732df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    retq
2742df69ed1SSimon Pilgrim;
2752df69ed1SSimon Pilgrim; FASTISEL-X64-LABEL: and_imm8_i16:
2762df69ed1SSimon Pilgrim; FASTISEL-X64:       # %bb.0:
2772df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    movl %edi, %eax
2782df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    andw $6, %ax
2792df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    # kill: def $ax killed $ax killed $eax
2802df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    retq
2812df69ed1SSimon Pilgrim;
2822df69ed1SSimon Pilgrim; GISEL-X64-LABEL: and_imm8_i16:
2832df69ed1SSimon Pilgrim; GISEL-X64:       # %bb.0:
2842df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    movl %edi, %eax
2852df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    andw $6, %ax
2862df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    # kill: def $ax killed $ax killed $eax
2872df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    retq
2882df69ed1SSimon Pilgrim  %c = and i16 %a, 6
2892df69ed1SSimon Pilgrim  ret i16 %c
2902df69ed1SSimon Pilgrim}
2912df69ed1SSimon Pilgrim
2922df69ed1SSimon Pilgrimdefine i32 @and_imm8_i32(i32 %a) {
2932df69ed1SSimon Pilgrim; X86-LABEL: and_imm8_i32:
2942df69ed1SSimon Pilgrim; X86:       # %bb.0:
2952df69ed1SSimon Pilgrim; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
2962df69ed1SSimon Pilgrim; X86-NEXT:    andl $-5, %eax
2972df69ed1SSimon Pilgrim; X86-NEXT:    retl
2982df69ed1SSimon Pilgrim;
2992df69ed1SSimon Pilgrim; X64-LABEL: and_imm8_i32:
3002df69ed1SSimon Pilgrim; X64:       # %bb.0:
3012df69ed1SSimon Pilgrim; X64-NEXT:    movl %edi, %eax
3022df69ed1SSimon Pilgrim; X64-NEXT:    andl $-5, %eax
3032df69ed1SSimon Pilgrim; X64-NEXT:    retq
3042df69ed1SSimon Pilgrim  %c = and i32 %a, -5
3052df69ed1SSimon Pilgrim  ret i32 %c
3062df69ed1SSimon Pilgrim}
3072df69ed1SSimon Pilgrim
3082df69ed1SSimon Pilgrimdefine i64 @and_imm8_i64(i64 %a) {
3092df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_imm8_i64:
3102df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
3112df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
3122df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andl $1, %eax
3132df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    xorl %edx, %edx
3142df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
3152df69ed1SSimon Pilgrim;
3162df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_imm8_i64:
3172df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
3182df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
3192df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andl $1, %eax
3202df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    xorl %edx, %edx
3212df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
3222df69ed1SSimon Pilgrim;
3232df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_imm8_i64:
3242df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
3252df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
3262df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
3272df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl $1, %eax
3282df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl $0, %edx
3292df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
3302df69ed1SSimon Pilgrim;
3312df69ed1SSimon Pilgrim; SDAG-X64-LABEL: and_imm8_i64:
3322df69ed1SSimon Pilgrim; SDAG-X64:       # %bb.0:
3332df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    movq %rdi, %rax
3342df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    andl $1, %eax
3352df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    retq
3362df69ed1SSimon Pilgrim;
3372df69ed1SSimon Pilgrim; FASTISEL-X64-LABEL: and_imm8_i64:
3382df69ed1SSimon Pilgrim; FASTISEL-X64:       # %bb.0:
3392df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    movq %rdi, %rax
3402df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    andq $1, %rax
3412df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    retq
3422df69ed1SSimon Pilgrim;
3432df69ed1SSimon Pilgrim; GISEL-X64-LABEL: and_imm8_i64:
3442df69ed1SSimon Pilgrim; GISEL-X64:       # %bb.0:
3452df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    movq %rdi, %rax
3462df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    andq $1, %rax
3472df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    retq
3482df69ed1SSimon Pilgrim  %c = and i64 %a, 1
3492df69ed1SSimon Pilgrim  ret i64 %c
3502df69ed1SSimon Pilgrim}
3512df69ed1SSimon Pilgrim
3522df69ed1SSimon Pilgrimdefine i16 @and_imm16_i16(i16 %a) {
3532df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_imm16_i16:
3542df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
3552df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
3562df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andl $1023, %eax # imm = 0x3FF
3572df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    # kill: def $ax killed $ax killed $eax
3582df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
3592df69ed1SSimon Pilgrim;
3602df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_imm16_i16:
3612df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
3622df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
3632df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andw $1023, %ax # imm = 0x3FF
3642df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
3652df69ed1SSimon Pilgrim;
3662df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_imm16_i16:
3672df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
3682df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
3692df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andw $1023, %ax # imm = 0x3FF
3702df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    # kill: def $ax killed $ax killed $eax
3712df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
3722df69ed1SSimon Pilgrim;
3732df69ed1SSimon Pilgrim; SDAG-X64-LABEL: and_imm16_i16:
3742df69ed1SSimon Pilgrim; SDAG-X64:       # %bb.0:
3752df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    movl %edi, %eax
3762df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    andl $1023, %eax # imm = 0x3FF
3772df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    # kill: def $ax killed $ax killed $eax
3782df69ed1SSimon Pilgrim; SDAG-X64-NEXT:    retq
3792df69ed1SSimon Pilgrim;
3802df69ed1SSimon Pilgrim; FASTISEL-X64-LABEL: and_imm16_i16:
3812df69ed1SSimon Pilgrim; FASTISEL-X64:       # %bb.0:
3822df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    movl %edi, %eax
3832df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    andw $1023, %ax # imm = 0x3FF
3842df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    # kill: def $ax killed $ax killed $eax
3852df69ed1SSimon Pilgrim; FASTISEL-X64-NEXT:    retq
3862df69ed1SSimon Pilgrim;
3872df69ed1SSimon Pilgrim; GISEL-X64-LABEL: and_imm16_i16:
3882df69ed1SSimon Pilgrim; GISEL-X64:       # %bb.0:
3892df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    movl %edi, %eax
3902df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    andw $1023, %ax # imm = 0x3FF
3912df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    # kill: def $ax killed $ax killed $eax
3922df69ed1SSimon Pilgrim; GISEL-X64-NEXT:    retq
3932df69ed1SSimon Pilgrim  %c = and i16 %a, 1023
3942df69ed1SSimon Pilgrim  ret i16 %c
3952df69ed1SSimon Pilgrim}
3962df69ed1SSimon Pilgrim
3972df69ed1SSimon Pilgrimdefine i32 @and_imm16_i32(i32 %a) {
3982df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_imm16_i32:
3992df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
4002df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movl $2044, %eax # imm = 0x7FC
4012df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
4022df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
4032df69ed1SSimon Pilgrim;
4042df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_imm16_i32:
4052df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
4062df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
4072df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andl $2044, %eax # imm = 0x7FC
4082df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
4092df69ed1SSimon Pilgrim;
4102df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_imm16_i32:
4112df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
4122df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
4132df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl $2044, %eax # imm = 0x7FC
4142df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
4152df69ed1SSimon Pilgrim;
4162df69ed1SSimon Pilgrim; X64-LABEL: and_imm16_i32:
4172df69ed1SSimon Pilgrim; X64:       # %bb.0:
4182df69ed1SSimon Pilgrim; X64-NEXT:    movl %edi, %eax
4192df69ed1SSimon Pilgrim; X64-NEXT:    andl $2044, %eax # imm = 0x7FC
4202df69ed1SSimon Pilgrim; X64-NEXT:    retq
4212df69ed1SSimon Pilgrim  %c = and i32 %a, 2044
4222df69ed1SSimon Pilgrim  ret i32 %c
4232df69ed1SSimon Pilgrim}
4242df69ed1SSimon Pilgrim
4252df69ed1SSimon Pilgrimdefine i64 @and_imm16_i64(i64 %a) {
4262df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_imm16_i64:
4272df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
4282df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
4292df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movl $-5022, %eax # imm = 0xEC62
4302df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
4312df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
4322df69ed1SSimon Pilgrim;
4332df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_imm16_i64:
4342df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
4352df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
4362df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
4372df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andl $-5022, %eax # imm = 0xEC62
4382df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
4392df69ed1SSimon Pilgrim;
4402df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_imm16_i64:
4412df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
4422df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
4432df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
4442df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl $-5022, %eax # imm = 0xEC62
4452df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl $-1, %edx
4462df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
4472df69ed1SSimon Pilgrim;
4482df69ed1SSimon Pilgrim; X64-LABEL: and_imm16_i64:
4492df69ed1SSimon Pilgrim; X64:       # %bb.0:
4502df69ed1SSimon Pilgrim; X64-NEXT:    movq %rdi, %rax
4512df69ed1SSimon Pilgrim; X64-NEXT:    andq $-5022, %rax # imm = 0xEC62
4522df69ed1SSimon Pilgrim; X64-NEXT:    retq
4532df69ed1SSimon Pilgrim  %c = and i64 %a, -5022
4542df69ed1SSimon Pilgrim  ret i64 %c
4552df69ed1SSimon Pilgrim}
4562df69ed1SSimon Pilgrim
4572df69ed1SSimon Pilgrimdefine i32 @and_imm32_i32(i32 %a) {
4582df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_imm32_i32:
4592df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
4602df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movl $85538, %eax # imm = 0x14E22
4612df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
4622df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
4632df69ed1SSimon Pilgrim;
4642df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_imm32_i32:
4652df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
4662df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
4672df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andl $85538, %eax # imm = 0x14E22
4682df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
4692df69ed1SSimon Pilgrim;
4702df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_imm32_i32:
4712df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
4722df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
4732df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl $85538, %eax # imm = 0x14E22
4742df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
4752df69ed1SSimon Pilgrim;
4762df69ed1SSimon Pilgrim; X64-LABEL: and_imm32_i32:
4772df69ed1SSimon Pilgrim; X64:       # %bb.0:
4782df69ed1SSimon Pilgrim; X64-NEXT:    movl %edi, %eax
4792df69ed1SSimon Pilgrim; X64-NEXT:    andl $85538, %eax # imm = 0x14E22
4802df69ed1SSimon Pilgrim; X64-NEXT:    retq
4812df69ed1SSimon Pilgrim  %c = and i32 %a, 85538
4822df69ed1SSimon Pilgrim  ret i32 %c
4832df69ed1SSimon Pilgrim}
4842df69ed1SSimon Pilgrim
4852df69ed1SSimon Pilgrimdefine i64 @and_imm32_i64(i64 %a) {
4862df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_imm32_i64:
4872df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
4882df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
4892df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movl $-125778, %eax # imm = 0xFFFE14AE
4902df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
4912df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
4922df69ed1SSimon Pilgrim;
4932df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_imm32_i64:
4942df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
4952df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
4962df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
4972df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andl $-125778, %eax # imm = 0xFFFE14AE
4982df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
4992df69ed1SSimon Pilgrim;
5002df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_imm32_i64:
5012df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
5022df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
5032df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
5042df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl $-125778, %eax # imm = 0xFFFE14AE
5052df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl $-1, %edx
5062df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
5072df69ed1SSimon Pilgrim;
5082df69ed1SSimon Pilgrim; X64-LABEL: and_imm32_i64:
5092df69ed1SSimon Pilgrim; X64:       # %bb.0:
5102df69ed1SSimon Pilgrim; X64-NEXT:    movq %rdi, %rax
5112df69ed1SSimon Pilgrim; X64-NEXT:    andq $-125778, %rax # imm = 0xFFFE14AE
5122df69ed1SSimon Pilgrim; X64-NEXT:    retq
5132df69ed1SSimon Pilgrim  %c = and i64 %a, -125778
5142df69ed1SSimon Pilgrim  ret i64 %c
5152df69ed1SSimon Pilgrim}
5162df69ed1SSimon Pilgrim
5172df69ed1SSimon Pilgrimdefine i64 @and_imm64_i64(i64 %a) {
5182df69ed1SSimon Pilgrim; SDAG-X86-LABEL: and_imm64_i64:
5192df69ed1SSimon Pilgrim; SDAG-X86:       # %bb.0:
5202df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
5212df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    movl $-1850691612, %eax # imm = 0x91B0AFE4
5222df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
5232df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    andl $-2, %edx
5242df69ed1SSimon Pilgrim; SDAG-X86-NEXT:    retl
5252df69ed1SSimon Pilgrim;
5262df69ed1SSimon Pilgrim; FASTISEL-X86-LABEL: and_imm64_i64:
5272df69ed1SSimon Pilgrim; FASTISEL-X86:       # %bb.0:
5282df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
5292df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
5302df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andl $-1850691612, %eax # imm = 0x91B0AFE4
5312df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    andl $-2, %edx
5322df69ed1SSimon Pilgrim; FASTISEL-X86-NEXT:    retl
5332df69ed1SSimon Pilgrim;
5342df69ed1SSimon Pilgrim; GISEL-X86-LABEL: and_imm64_i64:
5352df69ed1SSimon Pilgrim; GISEL-X86:       # %bb.0:
5362df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
5372df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
5382df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl $-1850691612, %eax # imm = 0x91B0AFE4
5392df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    andl $-2, %edx
5402df69ed1SSimon Pilgrim; GISEL-X86-NEXT:    retl
5412df69ed1SSimon Pilgrim;
5422df69ed1SSimon Pilgrim; X64-LABEL: and_imm64_i64:
5432df69ed1SSimon Pilgrim; X64:       # %bb.0:
5442df69ed1SSimon Pilgrim; X64-NEXT:    movabsq $-6145658908, %rax # imm = 0xFFFFFFFE91B0AFE4
5452df69ed1SSimon Pilgrim; X64-NEXT:    andq %rdi, %rax
5462df69ed1SSimon Pilgrim; X64-NEXT:    retq
5472df69ed1SSimon Pilgrim  %c = and i64 %a, -6145658908
5482df69ed1SSimon Pilgrim  ret i64 %c
5492df69ed1SSimon Pilgrim}
550