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