551 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 @or_i1(i1 %a, i1 %b) {10; SDAG-X86-LABEL: or_i1:11; SDAG-X86: # %bb.0:12; SDAG-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax13; SDAG-X86-NEXT: orb {{[0-9]+}}(%esp), %al14; SDAG-X86-NEXT: retl15;16; FASTISEL-X86-LABEL: or_i1:17; FASTISEL-X86: # %bb.0:18; FASTISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax19; FASTISEL-X86-NEXT: orb {{[0-9]+}}(%esp), %al20; FASTISEL-X86-NEXT: retl21;22; GISEL-X86-LABEL: or_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: orb %cl, %al27; GISEL-X86-NEXT: # kill: def $al killed $al killed $eax28; GISEL-X86-NEXT: retl29;30; SDAG-X64-LABEL: or_i1:31; SDAG-X64: # %bb.0:32; SDAG-X64-NEXT: movl %edi, %eax33; SDAG-X64-NEXT: orl %esi, %eax34; SDAG-X64-NEXT: # kill: def $al killed $al killed $eax35; SDAG-X64-NEXT: retq36;37; FASTISEL-X64-LABEL: or_i1:38; FASTISEL-X64: # %bb.0:39; FASTISEL-X64-NEXT: movl %edi, %eax40; FASTISEL-X64-NEXT: orb %sil, %al41; FASTISEL-X64-NEXT: # kill: def $al killed $al killed $eax42; FASTISEL-X64-NEXT: retq43;44; GISEL-X64-LABEL: or_i1:45; GISEL-X64: # %bb.0:46; GISEL-X64-NEXT: movl %esi, %eax47; GISEL-X64-NEXT: orb %dil, %al48; GISEL-X64-NEXT: # kill: def $al killed $al killed $eax49; GISEL-X64-NEXT: retq50 %c = or i1 %a, %b51 ret i1 %c52}53 54define i8 @or_i8(i8 %a, i8 %b) {55; SDAG-X86-LABEL: or_i8:56; SDAG-X86: # %bb.0:57; SDAG-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax58; SDAG-X86-NEXT: orb {{[0-9]+}}(%esp), %al59; SDAG-X86-NEXT: retl60;61; FASTISEL-X86-LABEL: or_i8:62; FASTISEL-X86: # %bb.0:63; FASTISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax64; FASTISEL-X86-NEXT: orb {{[0-9]+}}(%esp), %al65; FASTISEL-X86-NEXT: retl66;67; GISEL-X86-LABEL: or_i8:68; GISEL-X86: # %bb.0:69; GISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx70; GISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax71; GISEL-X86-NEXT: orb %cl, %al72; GISEL-X86-NEXT: # kill: def $al killed $al killed $eax73; GISEL-X86-NEXT: retl74;75; SDAG-X64-LABEL: or_i8:76; SDAG-X64: # %bb.0:77; SDAG-X64-NEXT: movl %edi, %eax78; SDAG-X64-NEXT: orl %esi, %eax79; SDAG-X64-NEXT: # kill: def $al killed $al killed $eax80; SDAG-X64-NEXT: retq81;82; FASTISEL-X64-LABEL: or_i8:83; FASTISEL-X64: # %bb.0:84; FASTISEL-X64-NEXT: movl %edi, %eax85; FASTISEL-X64-NEXT: orb %sil, %al86; FASTISEL-X64-NEXT: # kill: def $al killed $al killed $eax87; FASTISEL-X64-NEXT: retq88;89; GISEL-X64-LABEL: or_i8:90; GISEL-X64: # %bb.0:91; GISEL-X64-NEXT: movl %esi, %eax92; GISEL-X64-NEXT: orb %dil, %al93; GISEL-X64-NEXT: # kill: def $al killed $al killed $eax94; GISEL-X64-NEXT: retq95 %c = or i8 %a, %b96 ret i8 %c97}98 99define i16 @or_i16(i16 %a, i16 %b) {100; SDAG-X86-LABEL: or_i16:101; SDAG-X86: # %bb.0:102; SDAG-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax103; SDAG-X86-NEXT: orw {{[0-9]+}}(%esp), %ax104; SDAG-X86-NEXT: retl105;106; FASTISEL-X86-LABEL: or_i16:107; FASTISEL-X86: # %bb.0:108; FASTISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax109; FASTISEL-X86-NEXT: orw {{[0-9]+}}(%esp), %ax110; FASTISEL-X86-NEXT: retl111;112; GISEL-X86-LABEL: or_i16:113; GISEL-X86: # %bb.0:114; GISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx115; GISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax116; GISEL-X86-NEXT: orw %cx, %ax117; GISEL-X86-NEXT: # kill: def $ax killed $ax killed $eax118; GISEL-X86-NEXT: retl119;120; SDAG-X64-LABEL: or_i16:121; SDAG-X64: # %bb.0:122; SDAG-X64-NEXT: movl %edi, %eax123; SDAG-X64-NEXT: orl %esi, %eax124; SDAG-X64-NEXT: # kill: def $ax killed $ax killed $eax125; SDAG-X64-NEXT: retq126;127; FASTISEL-X64-LABEL: or_i16:128; FASTISEL-X64: # %bb.0:129; FASTISEL-X64-NEXT: movl %edi, %eax130; FASTISEL-X64-NEXT: orw %si, %ax131; FASTISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax132; FASTISEL-X64-NEXT: retq133;134; GISEL-X64-LABEL: or_i16:135; GISEL-X64: # %bb.0:136; GISEL-X64-NEXT: movl %esi, %eax137; GISEL-X64-NEXT: orw %di, %ax138; GISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax139; GISEL-X64-NEXT: retq140 %c = or i16 %a, %b141 ret i16 %c142}143 144define i32 @or_i32(i32 %a, i32 %b) {145; X86-LABEL: or_i32:146; X86: # %bb.0:147; X86-NEXT: movl {{[0-9]+}}(%esp), %eax148; X86-NEXT: orl {{[0-9]+}}(%esp), %eax149; X86-NEXT: retl150;151; SDAG-X64-LABEL: or_i32:152; SDAG-X64: # %bb.0:153; SDAG-X64-NEXT: movl %edi, %eax154; SDAG-X64-NEXT: orl %esi, %eax155; SDAG-X64-NEXT: retq156;157; FASTISEL-X64-LABEL: or_i32:158; FASTISEL-X64: # %bb.0:159; FASTISEL-X64-NEXT: movl %edi, %eax160; FASTISEL-X64-NEXT: orl %esi, %eax161; FASTISEL-X64-NEXT: retq162;163; GISEL-X64-LABEL: or_i32:164; GISEL-X64: # %bb.0:165; GISEL-X64-NEXT: movl %esi, %eax166; GISEL-X64-NEXT: orl %edi, %eax167; GISEL-X64-NEXT: retq168 %c = or i32 %a, %b169 ret i32 %c170}171 172define i64 @or_i64(i64 %a, i64 %b) nounwind {173; SDAG-X86-LABEL: or_i64:174; SDAG-X86: # %bb.0:175; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %eax176; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx177; SDAG-X86-NEXT: orl {{[0-9]+}}(%esp), %eax178; SDAG-X86-NEXT: orl {{[0-9]+}}(%esp), %edx179; SDAG-X86-NEXT: retl180;181; FASTISEL-X86-LABEL: or_i64:182; FASTISEL-X86: # %bb.0:183; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx184; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax185; FASTISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %eax186; FASTISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %edx187; FASTISEL-X86-NEXT: retl188;189; GISEL-X86-LABEL: or_i64:190; GISEL-X86: # %bb.0:191; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax192; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx193; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %eax194; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %edx195; GISEL-X86-NEXT: retl196;197; SDAG-X64-LABEL: or_i64:198; SDAG-X64: # %bb.0:199; SDAG-X64-NEXT: movq %rdi, %rax200; SDAG-X64-NEXT: orq %rsi, %rax201; SDAG-X64-NEXT: retq202;203; FASTISEL-X64-LABEL: or_i64:204; FASTISEL-X64: # %bb.0:205; FASTISEL-X64-NEXT: movq %rdi, %rax206; FASTISEL-X64-NEXT: orq %rsi, %rax207; FASTISEL-X64-NEXT: retq208;209; GISEL-X64-LABEL: or_i64:210; GISEL-X64: # %bb.0:211; GISEL-X64-NEXT: movq %rsi, %rax212; GISEL-X64-NEXT: orq %rdi, %rax213; GISEL-X64-NEXT: retq214 %c = or i64 %a, %b215 ret i64 %c216}217 218define i8 @or_imm8_i8(i8 %a) {219; SDAG-X86-LABEL: or_imm8_i8:220; SDAG-X86: # %bb.0:221; SDAG-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax222; SDAG-X86-NEXT: orb $1, %al223; SDAG-X86-NEXT: retl224;225; FASTISEL-X86-LABEL: or_imm8_i8:226; FASTISEL-X86: # %bb.0:227; FASTISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax228; FASTISEL-X86-NEXT: orb $1, %al229; FASTISEL-X86-NEXT: retl230;231; GISEL-X86-LABEL: or_imm8_i8:232; GISEL-X86: # %bb.0:233; GISEL-X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax234; GISEL-X86-NEXT: orb $1, %al235; GISEL-X86-NEXT: # kill: def $al killed $al killed $eax236; GISEL-X86-NEXT: retl237;238; X64-LABEL: or_imm8_i8:239; X64: # %bb.0:240; X64-NEXT: movl %edi, %eax241; X64-NEXT: orb $1, %al242; X64-NEXT: # kill: def $al killed $al killed $eax243; X64-NEXT: retq244 %c = or i8 %a, 1245 ret i8 %c246}247 248define i16 @or_imm8_i16(i16 %a) {249; SDAG-X86-LABEL: or_imm8_i16:250; SDAG-X86: # %bb.0:251; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %eax252; SDAG-X86-NEXT: orl $6, %eax253; SDAG-X86-NEXT: # kill: def $ax killed $ax killed $eax254; SDAG-X86-NEXT: retl255;256; FASTISEL-X86-LABEL: or_imm8_i16:257; FASTISEL-X86: # %bb.0:258; FASTISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax259; FASTISEL-X86-NEXT: orw $6, %ax260; FASTISEL-X86-NEXT: retl261;262; GISEL-X86-LABEL: or_imm8_i16:263; GISEL-X86: # %bb.0:264; GISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax265; GISEL-X86-NEXT: orw $6, %ax266; GISEL-X86-NEXT: # kill: def $ax killed $ax killed $eax267; GISEL-X86-NEXT: retl268;269; SDAG-X64-LABEL: or_imm8_i16:270; SDAG-X64: # %bb.0:271; SDAG-X64-NEXT: movl %edi, %eax272; SDAG-X64-NEXT: orl $6, %eax273; SDAG-X64-NEXT: # kill: def $ax killed $ax killed $eax274; SDAG-X64-NEXT: retq275;276; FASTISEL-X64-LABEL: or_imm8_i16:277; FASTISEL-X64: # %bb.0:278; FASTISEL-X64-NEXT: movl %edi, %eax279; FASTISEL-X64-NEXT: orw $6, %ax280; FASTISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax281; FASTISEL-X64-NEXT: retq282;283; GISEL-X64-LABEL: or_imm8_i16:284; GISEL-X64: # %bb.0:285; GISEL-X64-NEXT: movl %edi, %eax286; GISEL-X64-NEXT: orw $6, %ax287; GISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax288; GISEL-X64-NEXT: retq289 %c = or i16 %a, 6290 ret i16 %c291}292 293define i32 @or_imm8_i32(i32 %a) {294; SDAG-X86-LABEL: or_imm8_i32:295; SDAG-X86: # %bb.0:296; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %eax297; SDAG-X86-NEXT: orl $-5, %eax298; SDAG-X86-NEXT: retl299;300; FASTISEL-X86-LABEL: or_imm8_i32:301; FASTISEL-X86: # %bb.0:302; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax303; FASTISEL-X86-NEXT: orl $-5, %eax304; FASTISEL-X86-NEXT: retl305;306; GISEL-X86-LABEL: or_imm8_i32:307; GISEL-X86: # %bb.0:308; GISEL-X86-NEXT: movl $-5, %eax309; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %eax310; GISEL-X86-NEXT: retl311;312; X64-LABEL: or_imm8_i32:313; X64: # %bb.0:314; X64-NEXT: movl %edi, %eax315; X64-NEXT: orl $-5, %eax316; X64-NEXT: retq317 %c = or i32 %a, -5318 ret i32 %c319}320 321define i64 @or_imm8_i64(i64 %a) {322; SDAG-X86-LABEL: or_imm8_i64:323; SDAG-X86: # %bb.0:324; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %eax325; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx326; SDAG-X86-NEXT: orl $1, %eax327; SDAG-X86-NEXT: retl328;329; FASTISEL-X86-LABEL: or_imm8_i64:330; FASTISEL-X86: # %bb.0:331; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx332; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax333; FASTISEL-X86-NEXT: orl $1, %eax334; FASTISEL-X86-NEXT: retl335;336; GISEL-X86-LABEL: or_imm8_i64:337; GISEL-X86: # %bb.0:338; GISEL-X86-NEXT: movl $1, %eax339; GISEL-X86-NEXT: xorl %edx, %edx340; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %eax341; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %edx342; GISEL-X86-NEXT: retl343;344; X64-LABEL: or_imm8_i64:345; X64: # %bb.0:346; X64-NEXT: movq %rdi, %rax347; X64-NEXT: orq $1, %rax348; X64-NEXT: retq349 %c = or i64 %a, 1350 ret i64 %c351}352 353define i16 @or_imm16_i16(i16 %a) {354; SDAG-X86-LABEL: or_imm16_i16:355; SDAG-X86: # %bb.0:356; SDAG-X86-NEXT: movl $1023, %eax # imm = 0x3FF357; SDAG-X86-NEXT: orl {{[0-9]+}}(%esp), %eax358; SDAG-X86-NEXT: # kill: def $ax killed $ax killed $eax359; SDAG-X86-NEXT: retl360;361; FASTISEL-X86-LABEL: or_imm16_i16:362; FASTISEL-X86: # %bb.0:363; FASTISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax364; FASTISEL-X86-NEXT: orw $1023, %ax # imm = 0x3FF365; FASTISEL-X86-NEXT: retl366;367; GISEL-X86-LABEL: or_imm16_i16:368; GISEL-X86: # %bb.0:369; GISEL-X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax370; GISEL-X86-NEXT: orw $1023, %ax # imm = 0x3FF371; GISEL-X86-NEXT: # kill: def $ax killed $ax killed $eax372; GISEL-X86-NEXT: retl373;374; SDAG-X64-LABEL: or_imm16_i16:375; SDAG-X64: # %bb.0:376; SDAG-X64-NEXT: movl %edi, %eax377; SDAG-X64-NEXT: orl $1023, %eax # imm = 0x3FF378; SDAG-X64-NEXT: # kill: def $ax killed $ax killed $eax379; SDAG-X64-NEXT: retq380;381; FASTISEL-X64-LABEL: or_imm16_i16:382; FASTISEL-X64: # %bb.0:383; FASTISEL-X64-NEXT: movl %edi, %eax384; FASTISEL-X64-NEXT: orw $1023, %ax # imm = 0x3FF385; FASTISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax386; FASTISEL-X64-NEXT: retq387;388; GISEL-X64-LABEL: or_imm16_i16:389; GISEL-X64: # %bb.0:390; GISEL-X64-NEXT: movl %edi, %eax391; GISEL-X64-NEXT: orw $1023, %ax # imm = 0x3FF392; GISEL-X64-NEXT: # kill: def $ax killed $ax killed $eax393; GISEL-X64-NEXT: retq394 %c = or i16 %a, 1023395 ret i16 %c396}397 398define i32 @or_imm16_i32(i32 %a) {399; SDAG-X86-LABEL: or_imm16_i32:400; SDAG-X86: # %bb.0:401; SDAG-X86-NEXT: movl $2044, %eax # imm = 0x7FC402; SDAG-X86-NEXT: orl {{[0-9]+}}(%esp), %eax403; SDAG-X86-NEXT: retl404;405; FASTISEL-X86-LABEL: or_imm16_i32:406; FASTISEL-X86: # %bb.0:407; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax408; FASTISEL-X86-NEXT: orl $2044, %eax # imm = 0x7FC409; FASTISEL-X86-NEXT: retl410;411; GISEL-X86-LABEL: or_imm16_i32:412; GISEL-X86: # %bb.0:413; GISEL-X86-NEXT: movl $2044, %eax # imm = 0x7FC414; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %eax415; GISEL-X86-NEXT: retl416;417; X64-LABEL: or_imm16_i32:418; X64: # %bb.0:419; X64-NEXT: movl %edi, %eax420; X64-NEXT: orl $2044, %eax # imm = 0x7FC421; X64-NEXT: retq422 %c = or i32 %a, 2044423 ret i32 %c424}425 426define i64 @or_imm16_i64(i64 %a) {427; SDAG-X86-LABEL: or_imm16_i64:428; SDAG-X86: # %bb.0:429; SDAG-X86-NEXT: movl $-5022, %eax # imm = 0xEC62430; SDAG-X86-NEXT: orl {{[0-9]+}}(%esp), %eax431; SDAG-X86-NEXT: movl $-1, %edx432; SDAG-X86-NEXT: retl433;434; FASTISEL-X86-LABEL: or_imm16_i64:435; FASTISEL-X86: # %bb.0:436; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax437; FASTISEL-X86-NEXT: orl $-5022, %eax # imm = 0xEC62438; FASTISEL-X86-NEXT: movl $-1, %edx439; FASTISEL-X86-NEXT: retl440;441; GISEL-X86-LABEL: or_imm16_i64:442; GISEL-X86: # %bb.0:443; GISEL-X86-NEXT: movl $-5022, %eax # imm = 0xEC62444; GISEL-X86-NEXT: movl $-1, %edx445; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %eax446; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %edx447; GISEL-X86-NEXT: retl448;449; X64-LABEL: or_imm16_i64:450; X64: # %bb.0:451; X64-NEXT: movq %rdi, %rax452; X64-NEXT: orq $-5022, %rax # imm = 0xEC62453; X64-NEXT: retq454 %c = or i64 %a, -5022455 ret i64 %c456}457 458define i32 @or_imm32_i32(i32 %a) {459; SDAG-X86-LABEL: or_imm32_i32:460; SDAG-X86: # %bb.0:461; SDAG-X86-NEXT: movl $85538, %eax # imm = 0x14E22462; SDAG-X86-NEXT: orl {{[0-9]+}}(%esp), %eax463; SDAG-X86-NEXT: retl464;465; FASTISEL-X86-LABEL: or_imm32_i32:466; FASTISEL-X86: # %bb.0:467; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax468; FASTISEL-X86-NEXT: orl $85538, %eax # imm = 0x14E22469; FASTISEL-X86-NEXT: retl470;471; GISEL-X86-LABEL: or_imm32_i32:472; GISEL-X86: # %bb.0:473; GISEL-X86-NEXT: movl $85538, %eax # imm = 0x14E22474; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %eax475; GISEL-X86-NEXT: retl476;477; X64-LABEL: or_imm32_i32:478; X64: # %bb.0:479; X64-NEXT: movl %edi, %eax480; X64-NEXT: orl $85538, %eax # imm = 0x14E22481; X64-NEXT: retq482 %c = or i32 %a, 85538483 ret i32 %c484}485 486define i64 @or_imm32_i64(i64 %a) {487; SDAG-X86-LABEL: or_imm32_i64:488; SDAG-X86: # %bb.0:489; SDAG-X86-NEXT: movl $-125778, %eax # imm = 0xFFFE14AE490; SDAG-X86-NEXT: orl {{[0-9]+}}(%esp), %eax491; SDAG-X86-NEXT: movl $-1, %edx492; SDAG-X86-NEXT: retl493;494; FASTISEL-X86-LABEL: or_imm32_i64:495; FASTISEL-X86: # %bb.0:496; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax497; FASTISEL-X86-NEXT: orl $-125778, %eax # imm = 0xFFFE14AE498; FASTISEL-X86-NEXT: movl $-1, %edx499; FASTISEL-X86-NEXT: retl500;501; GISEL-X86-LABEL: or_imm32_i64:502; GISEL-X86: # %bb.0:503; GISEL-X86-NEXT: movl $-125778, %eax # imm = 0xFFFE14AE504; GISEL-X86-NEXT: movl $-1, %edx505; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %eax506; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %edx507; GISEL-X86-NEXT: retl508;509; X64-LABEL: or_imm32_i64:510; X64: # %bb.0:511; X64-NEXT: movq %rdi, %rax512; X64-NEXT: orq $-125778, %rax # imm = 0xFFFE14AE513; X64-NEXT: retq514 %c = or i64 %a, -125778515 ret i64 %c516}517 518define i64 @or_imm64_i64(i64 %a) {519; SDAG-X86-LABEL: or_imm64_i64:520; SDAG-X86: # %bb.0:521; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edx522; SDAG-X86-NEXT: movl $-1850691612, %eax # imm = 0x91B0AFE4523; SDAG-X86-NEXT: orl {{[0-9]+}}(%esp), %eax524; SDAG-X86-NEXT: orl $-2, %edx525; SDAG-X86-NEXT: retl526;527; FASTISEL-X86-LABEL: or_imm64_i64:528; FASTISEL-X86: # %bb.0:529; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx530; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax531; FASTISEL-X86-NEXT: orl $-1850691612, %eax # imm = 0x91B0AFE4532; FASTISEL-X86-NEXT: orl $-2, %edx533; FASTISEL-X86-NEXT: retl534;535; GISEL-X86-LABEL: or_imm64_i64:536; GISEL-X86: # %bb.0:537; GISEL-X86-NEXT: movl $-1850691612, %eax # imm = 0x91B0AFE4538; GISEL-X86-NEXT: movl $-2, %edx539; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %eax540; GISEL-X86-NEXT: orl {{[0-9]+}}(%esp), %edx541; GISEL-X86-NEXT: retl542;543; X64-LABEL: or_imm64_i64:544; X64: # %bb.0:545; X64-NEXT: movabsq $-6145658908, %rax # imm = 0xFFFFFFFE91B0AFE4546; X64-NEXT: orq %rdi, %rax547; X64-NEXT: retq548 %c = or i64 %a, -6145658908549 ret i64 %c550}551