562 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-- | FileCheck %s --check-prefixes=X86,SDAG-X863; RUN: llc < %s -mtriple=i686-- -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=X86,FASTISEL-X864; RUN: llc < %s -mtriple=i686-- -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X865; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefixes=X64,SDAG-X646; RUN: llc < %s -mtriple=x86_64-- -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=X64,FASTISEL-X647; RUN: llc < %s -mtriple=x86_64-- -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X64,GISEL-X648 9define i1 @and_i1(i1 %a, i1 %b) {10; SDAG-X86-LABEL: and_i1:11; SDAG-X86: # %bb.0:12; SDAG-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax13; SDAG-X86-NEXT: andb {{[0-9]+}}(%esp), %al14; SDAG-X86-NEXT: retl15;16; FASTISEL-X86-LABEL: and_i1:17; FASTISEL-X86: # %bb.0:18; FASTISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax19; FASTISEL-X86-NEXT: andb {{[0-9]+}}(%esp), %al20; FASTISEL-X86-NEXT: retl21;22; GISEL-X86-LABEL: and_i1:23; GISEL-X86: # %bb.0:24; GISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx25; GISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax26; GISEL-X86-NEXT: andb %cl, %al27; GISEL-X86-NEXT: # kill: def $al killed $al killed $eax28; GISEL-X86-NEXT: retl29;30; SDAG-X64-LABEL: and_i1:31; SDAG-X64: # %bb.0:32; SDAG-X64-NEXT: movl %edi, %eax33; SDAG-X64-NEXT: andl %esi, %eax34; SDAG-X64-NEXT: # kill: def $al killed $al killed $eax35; SDAG-X64-NEXT: retq36;37; FASTISEL-X64-LABEL: and_i1:38; FASTISEL-X64: # %bb.0:39; FASTISEL-X64-NEXT: movl %edi, %eax40; FASTISEL-X64-NEXT: andb %sil, %al41; FASTISEL-X64-NEXT: # kill: def $al killed $al killed $eax42; FASTISEL-X64-NEXT: retq43;44; GISEL-X64-LABEL: and_i1:45; GISEL-X64: # %bb.0:46; GISEL-X64-NEXT: movl %esi, %eax47; GISEL-X64-NEXT: andb %dil, %al48; GISEL-X64-NEXT: # kill: def $al killed $al killed $eax49; GISEL-X64-NEXT: retq50 %c = and i1 %a, %b51 ret i1 %c52}53define i8 @and_i8(i8 %a, i8 %b) {54; SDAG-X86-LABEL: and_i8:55; SDAG-X86: # %bb.0:56; SDAG-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax57; SDAG-X86-NEXT: andb {{[0-9]+}}(%esp), %al58; SDAG-X86-NEXT: retl59;60; FASTISEL-X86-LABEL: and_i8:61; FASTISEL-X86: # %bb.0:62; FASTISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax63; FASTISEL-X86-NEXT: andb {{[0-9]+}}(%esp), %al64; FASTISEL-X86-NEXT: retl65;66; GISEL-X86-LABEL: and_i8:67; GISEL-X86: # %bb.0:68; GISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx69; GISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax70; GISEL-X86-NEXT: andb %cl, %al71; GISEL-X86-NEXT: # kill: def $al killed $al killed $eax72; GISEL-X86-NEXT: retl73;74; SDAG-X64-LABEL: and_i8:75; SDAG-X64: # %bb.0:76; SDAG-X64-NEXT: movl %edi, %eax77; SDAG-X64-NEXT: andl %esi, %eax78; SDAG-X64-NEXT: # kill: def $al killed $al killed $eax79; SDAG-X64-NEXT: retq80;81; FASTISEL-X64-LABEL: and_i8:82; FASTISEL-X64: # %bb.0:83; FASTISEL-X64-NEXT: movl %edi, %eax84; FASTISEL-X64-NEXT: andb %sil, %al85; FASTISEL-X64-NEXT: # kill: def $al killed $al killed $eax86; FASTISEL-X64-NEXT: retq87;88; GISEL-X64-LABEL: and_i8:89; GISEL-X64: # %bb.0:90; GISEL-X64-NEXT: movl %esi, %eax91; GISEL-X64-NEXT: andb %dil, %al92; GISEL-X64-NEXT: # kill: def $al killed $al killed $eax93; GISEL-X64-NEXT: retq94 %c = and i8 %a, %b95 ret i8 %c96}97 98define i16 @and_i16(i16 %a, i16 %b) {99; SDAG-X86-LABEL: and_i16:100; SDAG-X86: # %bb.0:101; SDAG-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax102; SDAG-X86-NEXT: andw {{[0-9]+}}(%esp), %ax103; SDAG-X86-NEXT: retl104;105; FASTISEL-X86-LABEL: and_i16:106; FASTISEL-X86: # %bb.0:107; FASTISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax108; FASTISEL-X86-NEXT: andw {{[0-9]+}}(%esp), %ax109; FASTISEL-X86-NEXT: retl110;111; GISEL-X86-LABEL: and_i16:112; GISEL-X86: # %bb.0:113; GISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx114; GISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax115; GISEL-X86-NEXT: andw %cx, %ax116; GISEL-X86-NEXT: # kill: def $ax killed $ax killed $eax117; GISEL-X86-NEXT: retl118;119; SDAG-X64-LABEL: and_i16:120; SDAG-X64: # %bb.0:121; SDAG-X64-NEXT: movl %edi, %eax122; SDAG-X64-NEXT: andl %esi, %eax123; SDAG-X64-NEXT: # kill: def $ax killed $ax killed $eax124; SDAG-X64-NEXT: retq125;126; FASTISEL-X64-LABEL: and_i16:127; FASTISEL-X64: # %bb.0:128; FASTISEL-X64-NEXT: movl %edi, %eax129; FASTISEL-X64-NEXT: andw %si, %ax130; FASTISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax131; FASTISEL-X64-NEXT: retq132;133; GISEL-X64-LABEL: and_i16:134; GISEL-X64: # %bb.0:135; GISEL-X64-NEXT: movl %esi, %eax136; GISEL-X64-NEXT: andw %di, %ax137; GISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax138; GISEL-X64-NEXT: retq139 %c = and i16 %a, %b140 ret i16 %c141}142 143define i32 @and_i32(i32 %a, i32 %b) {144; X86-LABEL: and_i32:145; X86: # %bb.0:146; X86-NEXT: movl {{[0-9]+}}(%esp), %eax147; X86-NEXT: andl {{[0-9]+}}(%esp), %eax148; X86-NEXT: retl149;150; SDAG-X64-LABEL: and_i32:151; SDAG-X64: # %bb.0:152; SDAG-X64-NEXT: movl %edi, %eax153; SDAG-X64-NEXT: andl %esi, %eax154; SDAG-X64-NEXT: retq155;156; FASTISEL-X64-LABEL: and_i32:157; FASTISEL-X64: # %bb.0:158; FASTISEL-X64-NEXT: movl %edi, %eax159; FASTISEL-X64-NEXT: andl %esi, %eax160; FASTISEL-X64-NEXT: retq161;162; GISEL-X64-LABEL: and_i32:163; GISEL-X64: # %bb.0:164; GISEL-X64-NEXT: movl %esi, %eax165; GISEL-X64-NEXT: andl %edi, %eax166; GISEL-X64-NEXT: retq167 %c = and i32 %a, %b168 ret i32 %c169}170 171define i64 @and_i64(i64 %a, i64 %b) nounwind {172; SDAG-X86-LABEL: and_i64:173; SDAG-X86: # %bb.0:174; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %eax175; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx176; SDAG-X86-NEXT: andl {{[0-9]+}}(%esp), %eax177; SDAG-X86-NEXT: andl {{[0-9]+}}(%esp), %edx178; SDAG-X86-NEXT: retl179;180; FASTISEL-X86-LABEL: and_i64:181; FASTISEL-X86: # %bb.0:182; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx183; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax184; FASTISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %eax185; FASTISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %edx186; FASTISEL-X86-NEXT: retl187;188; GISEL-X86-LABEL: and_i64:189; GISEL-X86: # %bb.0:190; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax191; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx192; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %eax193; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %edx194; GISEL-X86-NEXT: retl195;196; SDAG-X64-LABEL: and_i64:197; SDAG-X64: # %bb.0:198; SDAG-X64-NEXT: movq %rdi, %rax199; SDAG-X64-NEXT: andq %rsi, %rax200; SDAG-X64-NEXT: retq201;202; FASTISEL-X64-LABEL: and_i64:203; FASTISEL-X64: # %bb.0:204; FASTISEL-X64-NEXT: movq %rdi, %rax205; FASTISEL-X64-NEXT: andq %rsi, %rax206; FASTISEL-X64-NEXT: retq207;208; GISEL-X64-LABEL: and_i64:209; GISEL-X64: # %bb.0:210; GISEL-X64-NEXT: movq %rsi, %rax211; GISEL-X64-NEXT: andq %rdi, %rax212; GISEL-X64-NEXT: retq213 %c = and i64 %a, %b214 ret i64 %c215}216 217define i8 @and_imm8_i8(i8 %a) {218; SDAG-X86-LABEL: and_imm8_i8:219; SDAG-X86: # %bb.0:220; SDAG-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax221; SDAG-X86-NEXT: andb $1, %al222; SDAG-X86-NEXT: retl223;224; FASTISEL-X86-LABEL: and_imm8_i8:225; FASTISEL-X86: # %bb.0:226; FASTISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax227; FASTISEL-X86-NEXT: andb $1, %al228; FASTISEL-X86-NEXT: retl229;230; GISEL-X86-LABEL: and_imm8_i8:231; GISEL-X86: # %bb.0:232; GISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax233; GISEL-X86-NEXT: andb $1, %al234; GISEL-X86-NEXT: # kill: def $al killed $al killed $eax235; GISEL-X86-NEXT: retl236;237; X64-LABEL: and_imm8_i8:238; X64: # %bb.0:239; X64-NEXT: movl %edi, %eax240; X64-NEXT: andb $1, %al241; X64-NEXT: # kill: def $al killed $al killed $eax242; X64-NEXT: retq243 %c = and i8 %a, 1244 ret i8 %c245}246 247define i16 @and_imm8_i16(i16 %a) {248; SDAG-X86-LABEL: and_imm8_i16:249; SDAG-X86: # %bb.0:250; SDAG-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax251; SDAG-X86-NEXT: andl $6, %eax252; SDAG-X86-NEXT: # kill: def $ax killed $ax killed $eax253; SDAG-X86-NEXT: retl254;255; FASTISEL-X86-LABEL: and_imm8_i16:256; FASTISEL-X86: # %bb.0:257; FASTISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax258; FASTISEL-X86-NEXT: andw $6, %ax259; FASTISEL-X86-NEXT: retl260;261; GISEL-X86-LABEL: and_imm8_i16:262; GISEL-X86: # %bb.0:263; GISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax264; GISEL-X86-NEXT: andw $6, %ax265; GISEL-X86-NEXT: # kill: def $ax killed $ax killed $eax266; GISEL-X86-NEXT: retl267;268; SDAG-X64-LABEL: and_imm8_i16:269; SDAG-X64: # %bb.0:270; SDAG-X64-NEXT: movl %edi, %eax271; SDAG-X64-NEXT: andl $6, %eax272; SDAG-X64-NEXT: # kill: def $ax killed $ax killed $eax273; SDAG-X64-NEXT: retq274;275; FASTISEL-X64-LABEL: and_imm8_i16:276; FASTISEL-X64: # %bb.0:277; FASTISEL-X64-NEXT: movl %edi, %eax278; FASTISEL-X64-NEXT: andw $6, %ax279; FASTISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax280; FASTISEL-X64-NEXT: retq281;282; GISEL-X64-LABEL: and_imm8_i16:283; GISEL-X64: # %bb.0:284; GISEL-X64-NEXT: movl %edi, %eax285; GISEL-X64-NEXT: andw $6, %ax286; GISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax287; GISEL-X64-NEXT: retq288 %c = and i16 %a, 6289 ret i16 %c290}291 292define i32 @and_imm8_i32(i32 %a) {293; SDAG-X86-LABEL: and_imm8_i32:294; SDAG-X86: # %bb.0:295; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %eax296; SDAG-X86-NEXT: andl $-5, %eax297; SDAG-X86-NEXT: retl298;299; FASTISEL-X86-LABEL: and_imm8_i32:300; FASTISEL-X86: # %bb.0:301; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax302; FASTISEL-X86-NEXT: andl $-5, %eax303; FASTISEL-X86-NEXT: retl304;305; GISEL-X86-LABEL: and_imm8_i32:306; GISEL-X86: # %bb.0:307; GISEL-X86-NEXT: movl $-5, %eax308; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %eax309; GISEL-X86-NEXT: retl310;311; X64-LABEL: and_imm8_i32:312; X64: # %bb.0:313; X64-NEXT: movl %edi, %eax314; X64-NEXT: andl $-5, %eax315; X64-NEXT: retq316 %c = and i32 %a, -5317 ret i32 %c318}319 320define i64 @and_imm8_i64(i64 %a) {321; SDAG-X86-LABEL: and_imm8_i64:322; SDAG-X86: # %bb.0:323; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %eax324; SDAG-X86-NEXT: andl $1, %eax325; SDAG-X86-NEXT: xorl %edx, %edx326; SDAG-X86-NEXT: retl327;328; FASTISEL-X86-LABEL: and_imm8_i64:329; FASTISEL-X86: # %bb.0:330; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax331; FASTISEL-X86-NEXT: andl $1, %eax332; FASTISEL-X86-NEXT: xorl %edx, %edx333; FASTISEL-X86-NEXT: retl334;335; GISEL-X86-LABEL: and_imm8_i64:336; GISEL-X86: # %bb.0:337; GISEL-X86-NEXT: movl $1, %eax338; GISEL-X86-NEXT: xorl %edx, %edx339; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %eax340; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %edx341; GISEL-X86-NEXT: retl342;343; SDAG-X64-LABEL: and_imm8_i64:344; SDAG-X64: # %bb.0:345; SDAG-X64-NEXT: movq %rdi, %rax346; SDAG-X64-NEXT: andl $1, %eax347; SDAG-X64-NEXT: retq348;349; FASTISEL-X64-LABEL: and_imm8_i64:350; FASTISEL-X64: # %bb.0:351; FASTISEL-X64-NEXT: movq %rdi, %rax352; FASTISEL-X64-NEXT: andq $1, %rax353; FASTISEL-X64-NEXT: retq354;355; GISEL-X64-LABEL: and_imm8_i64:356; GISEL-X64: # %bb.0:357; GISEL-X64-NEXT: movq %rdi, %rax358; GISEL-X64-NEXT: andq $1, %rax359; GISEL-X64-NEXT: retq360 %c = and i64 %a, 1361 ret i64 %c362}363 364define i16 @and_imm16_i16(i16 %a) {365; SDAG-X86-LABEL: and_imm16_i16:366; SDAG-X86: # %bb.0:367; SDAG-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax368; SDAG-X86-NEXT: andl $1023, %eax # imm = 0x3FF369; SDAG-X86-NEXT: # kill: def $ax killed $ax killed $eax370; SDAG-X86-NEXT: retl371;372; FASTISEL-X86-LABEL: and_imm16_i16:373; FASTISEL-X86: # %bb.0:374; FASTISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax375; FASTISEL-X86-NEXT: andw $1023, %ax # imm = 0x3FF376; FASTISEL-X86-NEXT: retl377;378; GISEL-X86-LABEL: and_imm16_i16:379; GISEL-X86: # %bb.0:380; GISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax381; GISEL-X86-NEXT: andw $1023, %ax # imm = 0x3FF382; GISEL-X86-NEXT: # kill: def $ax killed $ax killed $eax383; GISEL-X86-NEXT: retl384;385; SDAG-X64-LABEL: and_imm16_i16:386; SDAG-X64: # %bb.0:387; SDAG-X64-NEXT: movl %edi, %eax388; SDAG-X64-NEXT: andl $1023, %eax # imm = 0x3FF389; SDAG-X64-NEXT: # kill: def $ax killed $ax killed $eax390; SDAG-X64-NEXT: retq391;392; FASTISEL-X64-LABEL: and_imm16_i16:393; FASTISEL-X64: # %bb.0:394; FASTISEL-X64-NEXT: movl %edi, %eax395; FASTISEL-X64-NEXT: andw $1023, %ax # imm = 0x3FF396; FASTISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax397; FASTISEL-X64-NEXT: retq398;399; GISEL-X64-LABEL: and_imm16_i16:400; GISEL-X64: # %bb.0:401; GISEL-X64-NEXT: movl %edi, %eax402; GISEL-X64-NEXT: andw $1023, %ax # imm = 0x3FF403; GISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax404; GISEL-X64-NEXT: retq405 %c = and i16 %a, 1023406 ret i16 %c407}408 409define i32 @and_imm16_i32(i32 %a) {410; SDAG-X86-LABEL: and_imm16_i32:411; SDAG-X86: # %bb.0:412; SDAG-X86-NEXT: movl $2044, %eax # imm = 0x7FC413; SDAG-X86-NEXT: andl {{[0-9]+}}(%esp), %eax414; SDAG-X86-NEXT: retl415;416; FASTISEL-X86-LABEL: and_imm16_i32:417; FASTISEL-X86: # %bb.0:418; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax419; FASTISEL-X86-NEXT: andl $2044, %eax # imm = 0x7FC420; FASTISEL-X86-NEXT: retl421;422; GISEL-X86-LABEL: and_imm16_i32:423; GISEL-X86: # %bb.0:424; GISEL-X86-NEXT: movl $2044, %eax # imm = 0x7FC425; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %eax426; GISEL-X86-NEXT: retl427;428; X64-LABEL: and_imm16_i32:429; X64: # %bb.0:430; X64-NEXT: movl %edi, %eax431; X64-NEXT: andl $2044, %eax # imm = 0x7FC432; X64-NEXT: retq433 %c = and i32 %a, 2044434 ret i32 %c435}436 437define i64 @and_imm16_i64(i64 %a) {438; SDAG-X86-LABEL: and_imm16_i64:439; SDAG-X86: # %bb.0:440; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx441; SDAG-X86-NEXT: movl $-5022, %eax # imm = 0xEC62442; SDAG-X86-NEXT: andl {{[0-9]+}}(%esp), %eax443; SDAG-X86-NEXT: retl444;445; FASTISEL-X86-LABEL: and_imm16_i64:446; FASTISEL-X86: # %bb.0:447; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx448; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax449; FASTISEL-X86-NEXT: andl $-5022, %eax # imm = 0xEC62450; FASTISEL-X86-NEXT: retl451;452; GISEL-X86-LABEL: and_imm16_i64:453; GISEL-X86: # %bb.0:454; GISEL-X86-NEXT: movl $-5022, %eax # imm = 0xEC62455; GISEL-X86-NEXT: movl $-1, %edx456; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %eax457; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %edx458; GISEL-X86-NEXT: retl459;460; X64-LABEL: and_imm16_i64:461; X64: # %bb.0:462; X64-NEXT: movq %rdi, %rax463; X64-NEXT: andq $-5022, %rax # imm = 0xEC62464; X64-NEXT: retq465 %c = and i64 %a, -5022466 ret i64 %c467}468 469define i32 @and_imm32_i32(i32 %a) {470; SDAG-X86-LABEL: and_imm32_i32:471; SDAG-X86: # %bb.0:472; SDAG-X86-NEXT: movl $85538, %eax # imm = 0x14E22473; SDAG-X86-NEXT: andl {{[0-9]+}}(%esp), %eax474; SDAG-X86-NEXT: retl475;476; FASTISEL-X86-LABEL: and_imm32_i32:477; FASTISEL-X86: # %bb.0:478; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax479; FASTISEL-X86-NEXT: andl $85538, %eax # imm = 0x14E22480; FASTISEL-X86-NEXT: retl481;482; GISEL-X86-LABEL: and_imm32_i32:483; GISEL-X86: # %bb.0:484; GISEL-X86-NEXT: movl $85538, %eax # imm = 0x14E22485; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %eax486; GISEL-X86-NEXT: retl487;488; X64-LABEL: and_imm32_i32:489; X64: # %bb.0:490; X64-NEXT: movl %edi, %eax491; X64-NEXT: andl $85538, %eax # imm = 0x14E22492; X64-NEXT: retq493 %c = and i32 %a, 85538494 ret i32 %c495}496 497define i64 @and_imm32_i64(i64 %a) {498; SDAG-X86-LABEL: and_imm32_i64:499; SDAG-X86: # %bb.0:500; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx501; SDAG-X86-NEXT: movl $-125778, %eax # imm = 0xFFFE14AE502; SDAG-X86-NEXT: andl {{[0-9]+}}(%esp), %eax503; SDAG-X86-NEXT: retl504;505; FASTISEL-X86-LABEL: and_imm32_i64:506; FASTISEL-X86: # %bb.0:507; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx508; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax509; FASTISEL-X86-NEXT: andl $-125778, %eax # imm = 0xFFFE14AE510; FASTISEL-X86-NEXT: retl511;512; GISEL-X86-LABEL: and_imm32_i64:513; GISEL-X86: # %bb.0:514; GISEL-X86-NEXT: movl $-125778, %eax # imm = 0xFFFE14AE515; GISEL-X86-NEXT: movl $-1, %edx516; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %eax517; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %edx518; GISEL-X86-NEXT: retl519;520; X64-LABEL: and_imm32_i64:521; X64: # %bb.0:522; X64-NEXT: movq %rdi, %rax523; X64-NEXT: andq $-125778, %rax # imm = 0xFFFE14AE524; X64-NEXT: retq525 %c = and i64 %a, -125778526 ret i64 %c527}528 529define i64 @and_imm64_i64(i64 %a) {530; SDAG-X86-LABEL: and_imm64_i64:531; SDAG-X86: # %bb.0:532; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx533; SDAG-X86-NEXT: movl $-1850691612, %eax # imm = 0x91B0AFE4534; SDAG-X86-NEXT: andl {{[0-9]+}}(%esp), %eax535; SDAG-X86-NEXT: andl $-2, %edx536; SDAG-X86-NEXT: retl537;538; FASTISEL-X86-LABEL: and_imm64_i64:539; FASTISEL-X86: # %bb.0:540; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx541; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax542; FASTISEL-X86-NEXT: andl $-1850691612, %eax # imm = 0x91B0AFE4543; FASTISEL-X86-NEXT: andl $-2, %edx544; FASTISEL-X86-NEXT: retl545;546; GISEL-X86-LABEL: and_imm64_i64:547; GISEL-X86: # %bb.0:548; GISEL-X86-NEXT: movl $-1850691612, %eax # imm = 0x91B0AFE4549; GISEL-X86-NEXT: movl $-2, %edx550; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %eax551; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %edx552; GISEL-X86-NEXT: retl553;554; X64-LABEL: and_imm64_i64:555; X64: # %bb.0:556; X64-NEXT: movabsq $-6145658908, %rax # imm = 0xFFFFFFFE91B0AFE4557; X64-NEXT: andq %rdi, %rax558; X64-NEXT: retq559 %c = and i64 %a, -6145658908560 ret i64 %c561}562