871 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc < %s -mtriple=i686-- | FileCheck %s --check-prefixes=X86,X86-GENERIC3; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefixes=X64,X64-GENERIC4; RUN: llc < %s -mtriple=i686-- -mattr=+fast-imm16 | FileCheck %s --check-prefixes=X86,X86-FAST5; RUN: llc < %s -mtriple=x86_64-- -mattr=+fast-imm16 | FileCheck %s --check-prefixes=X64,X64-FAST6; RUN: llc < %s -mtriple=i686-- -mcpu=atom | FileCheck %s --check-prefixes=X86,X86-ATOM7; RUN: llc < %s -mtriple=x86_64-- -mcpu=atom | FileCheck %s --check-prefixes=X64,X64-ATOM8; RUN: llc < %s -mtriple=x86_64-- -mcpu=slm | FileCheck %s --check-prefixes=X64,X64-FAST9; RUN: llc < %s -mtriple=x86_64-- -mcpu=knl | FileCheck %s --check-prefixes=X64,X64-FAST10; RUN: llc < %s -mtriple=x86_64-- -mcpu=btver1 | FileCheck %s --check-prefixes=X64,X64-FAST11; RUN: llc < %s -mtriple=x86_64-- -mcpu=btver2 | FileCheck %s --check-prefixes=X64,X64-FAST12; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver1 | FileCheck %s --check-prefixes=X64,X64-FAST13; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver2 | FileCheck %s --check-prefixes=X64,X64-FAST14; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver3 | FileCheck %s --check-prefixes=X64,X64-FAST15; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver4 | FileCheck %s --check-prefixes=X64,X64-FAST16; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver5 | FileCheck %s --check-prefixes=X64,X64-FAST17 18define i1 @cmp16_reg_eq_reg(i16 %a0, i16 %a1) {19; X86-GENERIC-LABEL: cmp16_reg_eq_reg:20; X86-GENERIC: # %bb.0:21; X86-GENERIC-NEXT: movzwl {{[0-9]+}}(%esp), %eax22; X86-GENERIC-NEXT: cmpw {{[0-9]+}}(%esp), %ax23; X86-GENERIC-NEXT: sete %al24; X86-GENERIC-NEXT: retl25;26; X64-GENERIC-LABEL: cmp16_reg_eq_reg:27; X64-GENERIC: # %bb.0:28; X64-GENERIC-NEXT: cmpw %si, %di29; X64-GENERIC-NEXT: sete %al30; X64-GENERIC-NEXT: retq31;32; X86-FAST-LABEL: cmp16_reg_eq_reg:33; X86-FAST: # %bb.0:34; X86-FAST-NEXT: movzwl {{[0-9]+}}(%esp), %eax35; X86-FAST-NEXT: cmpw {{[0-9]+}}(%esp), %ax36; X86-FAST-NEXT: sete %al37; X86-FAST-NEXT: retl38;39; X64-FAST-LABEL: cmp16_reg_eq_reg:40; X64-FAST: # %bb.0:41; X64-FAST-NEXT: cmpw %si, %di42; X64-FAST-NEXT: sete %al43; X64-FAST-NEXT: retq44;45; X86-ATOM-LABEL: cmp16_reg_eq_reg:46; X86-ATOM: # %bb.0:47; X86-ATOM-NEXT: movzwl {{[0-9]+}}(%esp), %eax48; X86-ATOM-NEXT: cmpw {{[0-9]+}}(%esp), %ax49; X86-ATOM-NEXT: sete %al50; X86-ATOM-NEXT: nop51; X86-ATOM-NEXT: nop52; X86-ATOM-NEXT: retl53;54; X64-ATOM-LABEL: cmp16_reg_eq_reg:55; X64-ATOM: # %bb.0:56; X64-ATOM-NEXT: cmpw %si, %di57; X64-ATOM-NEXT: sete %al58; X64-ATOM-NEXT: nop59; X64-ATOM-NEXT: nop60; X64-ATOM-NEXT: nop61; X64-ATOM-NEXT: nop62; X64-ATOM-NEXT: retq63 %cmp = icmp eq i16 %a0, %a164 ret i1 %cmp65}66define i1 @cmp16_reg_eq_imm8(i16 %a0) {67; X86-GENERIC-LABEL: cmp16_reg_eq_imm8:68; X86-GENERIC: # %bb.0:69; X86-GENERIC-NEXT: cmpw $15, {{[0-9]+}}(%esp)70; X86-GENERIC-NEXT: sete %al71; X86-GENERIC-NEXT: retl72;73; X64-GENERIC-LABEL: cmp16_reg_eq_imm8:74; X64-GENERIC: # %bb.0:75; X64-GENERIC-NEXT: cmpw $15, %di76; X64-GENERIC-NEXT: sete %al77; X64-GENERIC-NEXT: retq78;79; X86-FAST-LABEL: cmp16_reg_eq_imm8:80; X86-FAST: # %bb.0:81; X86-FAST-NEXT: cmpw $15, {{[0-9]+}}(%esp)82; X86-FAST-NEXT: sete %al83; X86-FAST-NEXT: retl84;85; X64-FAST-LABEL: cmp16_reg_eq_imm8:86; X64-FAST: # %bb.0:87; X64-FAST-NEXT: cmpw $15, %di88; X64-FAST-NEXT: sete %al89; X64-FAST-NEXT: retq90;91; X86-ATOM-LABEL: cmp16_reg_eq_imm8:92; X86-ATOM: # %bb.0:93; X86-ATOM-NEXT: cmpw $15, {{[0-9]+}}(%esp)94; X86-ATOM-NEXT: sete %al95; X86-ATOM-NEXT: nop96; X86-ATOM-NEXT: nop97; X86-ATOM-NEXT: nop98; X86-ATOM-NEXT: nop99; X86-ATOM-NEXT: retl100;101; X64-ATOM-LABEL: cmp16_reg_eq_imm8:102; X64-ATOM: # %bb.0:103; X64-ATOM-NEXT: cmpw $15, %di104; X64-ATOM-NEXT: sete %al105; X64-ATOM-NEXT: nop106; X64-ATOM-NEXT: nop107; X64-ATOM-NEXT: nop108; X64-ATOM-NEXT: nop109; X64-ATOM-NEXT: retq110 %cmp = icmp eq i16 %a0, 15111 ret i1 %cmp112}113 114define i1 @cmp16_reg_eq_imm16(i16 %a0) {115; X86-GENERIC-LABEL: cmp16_reg_eq_imm16:116; X86-GENERIC: # %bb.0:117; X86-GENERIC-NEXT: cmpw $1024, {{[0-9]+}}(%esp) # imm = 0x400118; X86-GENERIC-NEXT: sete %al119; X86-GENERIC-NEXT: retl120;121; X64-GENERIC-LABEL: cmp16_reg_eq_imm16:122; X64-GENERIC: # %bb.0:123; X64-GENERIC-NEXT: movzwl %di, %eax124; X64-GENERIC-NEXT: cmpl $1024, %eax # imm = 0x400125; X64-GENERIC-NEXT: sete %al126; X64-GENERIC-NEXT: retq127;128; X86-FAST-LABEL: cmp16_reg_eq_imm16:129; X86-FAST: # %bb.0:130; X86-FAST-NEXT: cmpw $1024, {{[0-9]+}}(%esp) # imm = 0x400131; X86-FAST-NEXT: sete %al132; X86-FAST-NEXT: retl133;134; X64-FAST-LABEL: cmp16_reg_eq_imm16:135; X64-FAST: # %bb.0:136; X64-FAST-NEXT: cmpw $1024, %di # imm = 0x400137; X64-FAST-NEXT: sete %al138; X64-FAST-NEXT: retq139;140; X86-ATOM-LABEL: cmp16_reg_eq_imm16:141; X86-ATOM: # %bb.0:142; X86-ATOM-NEXT: cmpw $1024, {{[0-9]+}}(%esp) # imm = 0x400143; X86-ATOM-NEXT: sete %al144; X86-ATOM-NEXT: nop145; X86-ATOM-NEXT: nop146; X86-ATOM-NEXT: nop147; X86-ATOM-NEXT: nop148; X86-ATOM-NEXT: retl149;150; X64-ATOM-LABEL: cmp16_reg_eq_imm16:151; X64-ATOM: # %bb.0:152; X64-ATOM-NEXT: cmpw $1024, %di # imm = 0x400153; X64-ATOM-NEXT: sete %al154; X64-ATOM-NEXT: nop155; X64-ATOM-NEXT: nop156; X64-ATOM-NEXT: nop157; X64-ATOM-NEXT: nop158; X64-ATOM-NEXT: retq159 %cmp = icmp eq i16 %a0, 1024160 ret i1 %cmp161}162 163define i1 @cmp16_reg_eq_imm16_minsize(i16 %a0) minsize {164; X86-LABEL: cmp16_reg_eq_imm16_minsize:165; X86: # %bb.0:166; X86-NEXT: cmpw $1024, {{[0-9]+}}(%esp) # imm = 0x400167; X86-NEXT: sete %al168; X86-NEXT: retl169;170; X64-LABEL: cmp16_reg_eq_imm16_minsize:171; X64: # %bb.0:172; X64-NEXT: cmpw $1024, %di # imm = 0x400173; X64-NEXT: sete %al174; X64-NEXT: retq175 %cmp = icmp eq i16 %a0, 1024176 ret i1 %cmp177}178 179define i1 @cmp16_reg_eq_imm16_optsize(i16 %a0) optsize {180; X86-LABEL: cmp16_reg_eq_imm16_optsize:181; X86: # %bb.0:182; X86-NEXT: cmpw $1024, {{[0-9]+}}(%esp) # imm = 0x400183; X86-NEXT: sete %al184; X86-NEXT: retl185;186; X64-GENERIC-LABEL: cmp16_reg_eq_imm16_optsize:187; X64-GENERIC: # %bb.0:188; X64-GENERIC-NEXT: movzwl %di, %eax189; X64-GENERIC-NEXT: cmpl $1024, %eax # imm = 0x400190; X64-GENERIC-NEXT: sete %al191; X64-GENERIC-NEXT: retq192;193; X64-FAST-LABEL: cmp16_reg_eq_imm16_optsize:194; X64-FAST: # %bb.0:195; X64-FAST-NEXT: cmpw $1024, %di # imm = 0x400196; X64-FAST-NEXT: sete %al197; X64-FAST-NEXT: retq198;199; X64-ATOM-LABEL: cmp16_reg_eq_imm16_optsize:200; X64-ATOM: # %bb.0:201; X64-ATOM-NEXT: cmpw $1024, %di # imm = 0x400202; X64-ATOM-NEXT: sete %al203; X64-ATOM-NEXT: retq204 %cmp = icmp eq i16 %a0, 1024205 ret i1 %cmp206}207 208define i1 @cmp16_reg_sgt_imm8(i16 %a0) {209; X86-GENERIC-LABEL: cmp16_reg_sgt_imm8:210; X86-GENERIC: # %bb.0:211; X86-GENERIC-NEXT: cmpw $16, {{[0-9]+}}(%esp)212; X86-GENERIC-NEXT: setge %al213; X86-GENERIC-NEXT: retl214;215; X64-GENERIC-LABEL: cmp16_reg_sgt_imm8:216; X64-GENERIC: # %bb.0:217; X64-GENERIC-NEXT: cmpw $16, %di218; X64-GENERIC-NEXT: setge %al219; X64-GENERIC-NEXT: retq220;221; X86-FAST-LABEL: cmp16_reg_sgt_imm8:222; X86-FAST: # %bb.0:223; X86-FAST-NEXT: cmpw $16, {{[0-9]+}}(%esp)224; X86-FAST-NEXT: setge %al225; X86-FAST-NEXT: retl226;227; X64-FAST-LABEL: cmp16_reg_sgt_imm8:228; X64-FAST: # %bb.0:229; X64-FAST-NEXT: cmpw $16, %di230; X64-FAST-NEXT: setge %al231; X64-FAST-NEXT: retq232;233; X86-ATOM-LABEL: cmp16_reg_sgt_imm8:234; X86-ATOM: # %bb.0:235; X86-ATOM-NEXT: cmpw $16, {{[0-9]+}}(%esp)236; X86-ATOM-NEXT: setge %al237; X86-ATOM-NEXT: nop238; X86-ATOM-NEXT: nop239; X86-ATOM-NEXT: nop240; X86-ATOM-NEXT: nop241; X86-ATOM-NEXT: retl242;243; X64-ATOM-LABEL: cmp16_reg_sgt_imm8:244; X64-ATOM: # %bb.0:245; X64-ATOM-NEXT: cmpw $16, %di246; X64-ATOM-NEXT: setge %al247; X64-ATOM-NEXT: nop248; X64-ATOM-NEXT: nop249; X64-ATOM-NEXT: nop250; X64-ATOM-NEXT: nop251; X64-ATOM-NEXT: retq252 %cmp = icmp sgt i16 %a0, 15253 ret i1 %cmp254}255 256define i1 @cmp16_reg_sgt_imm16(i16 %a0) {257; X86-GENERIC-LABEL: cmp16_reg_sgt_imm16:258; X86-GENERIC: # %bb.0:259; X86-GENERIC-NEXT: cmpw $-1023, {{[0-9]+}}(%esp) # imm = 0xFC01260; X86-GENERIC-NEXT: setge %al261; X86-GENERIC-NEXT: retl262;263; X64-GENERIC-LABEL: cmp16_reg_sgt_imm16:264; X64-GENERIC: # %bb.0:265; X64-GENERIC-NEXT: movswl %di, %eax266; X64-GENERIC-NEXT: cmpl $-1023, %eax # imm = 0xFC01267; X64-GENERIC-NEXT: setge %al268; X64-GENERIC-NEXT: retq269;270; X86-FAST-LABEL: cmp16_reg_sgt_imm16:271; X86-FAST: # %bb.0:272; X86-FAST-NEXT: cmpw $-1023, {{[0-9]+}}(%esp) # imm = 0xFC01273; X86-FAST-NEXT: setge %al274; X86-FAST-NEXT: retl275;276; X64-FAST-LABEL: cmp16_reg_sgt_imm16:277; X64-FAST: # %bb.0:278; X64-FAST-NEXT: cmpw $-1023, %di # imm = 0xFC01279; X64-FAST-NEXT: setge %al280; X64-FAST-NEXT: retq281;282; X86-ATOM-LABEL: cmp16_reg_sgt_imm16:283; X86-ATOM: # %bb.0:284; X86-ATOM-NEXT: cmpw $-1023, {{[0-9]+}}(%esp) # imm = 0xFC01285; X86-ATOM-NEXT: setge %al286; X86-ATOM-NEXT: nop287; X86-ATOM-NEXT: nop288; X86-ATOM-NEXT: nop289; X86-ATOM-NEXT: nop290; X86-ATOM-NEXT: retl291;292; X64-ATOM-LABEL: cmp16_reg_sgt_imm16:293; X64-ATOM: # %bb.0:294; X64-ATOM-NEXT: cmpw $-1023, %di # imm = 0xFC01295; X64-ATOM-NEXT: setge %al296; X64-ATOM-NEXT: nop297; X64-ATOM-NEXT: nop298; X64-ATOM-NEXT: nop299; X64-ATOM-NEXT: nop300; X64-ATOM-NEXT: retq301 %cmp = icmp sgt i16 %a0, -1024302 ret i1 %cmp303}304 305define i1 @cmp16_reg_sgt_imm16_minsize(i16 %a0) minsize {306; X86-LABEL: cmp16_reg_sgt_imm16_minsize:307; X86: # %bb.0:308; X86-NEXT: cmpw $-1023, {{[0-9]+}}(%esp) # imm = 0xFC01309; X86-NEXT: setge %al310; X86-NEXT: retl311;312; X64-LABEL: cmp16_reg_sgt_imm16_minsize:313; X64: # %bb.0:314; X64-NEXT: cmpw $-1023, %di # imm = 0xFC01315; X64-NEXT: setge %al316; X64-NEXT: retq317 %cmp = icmp sgt i16 %a0, -1024318 ret i1 %cmp319}320 321define i1 @cmp16_reg_sgt_imm16_optsize(i16 %a0) optsize {322; X86-LABEL: cmp16_reg_sgt_imm16_optsize:323; X86: # %bb.0:324; X86-NEXT: cmpw $-1023, {{[0-9]+}}(%esp) # imm = 0xFC01325; X86-NEXT: setge %al326; X86-NEXT: retl327;328; X64-GENERIC-LABEL: cmp16_reg_sgt_imm16_optsize:329; X64-GENERIC: # %bb.0:330; X64-GENERIC-NEXT: movswl %di, %eax331; X64-GENERIC-NEXT: cmpl $-1023, %eax # imm = 0xFC01332; X64-GENERIC-NEXT: setge %al333; X64-GENERIC-NEXT: retq334;335; X64-FAST-LABEL: cmp16_reg_sgt_imm16_optsize:336; X64-FAST: # %bb.0:337; X64-FAST-NEXT: cmpw $-1023, %di # imm = 0xFC01338; X64-FAST-NEXT: setge %al339; X64-FAST-NEXT: retq340;341; X64-ATOM-LABEL: cmp16_reg_sgt_imm16_optsize:342; X64-ATOM: # %bb.0:343; X64-ATOM-NEXT: cmpw $-1023, %di # imm = 0xFC01344; X64-ATOM-NEXT: setge %al345; X64-ATOM-NEXT: retq346 %cmp = icmp sgt i16 %a0, -1024347 ret i1 %cmp348}349 350define i1 @cmp16_reg_uge_imm16(i16 %a0) {351; X86-GENERIC-LABEL: cmp16_reg_uge_imm16:352; X86-GENERIC: # %bb.0:353; X86-GENERIC-NEXT: cmpw $-1024, {{[0-9]+}}(%esp) # imm = 0xFC00354; X86-GENERIC-NEXT: setae %al355; X86-GENERIC-NEXT: retl356;357; X64-GENERIC-LABEL: cmp16_reg_uge_imm16:358; X64-GENERIC: # %bb.0:359; X64-GENERIC-NEXT: movzwl %di, %eax360; X64-GENERIC-NEXT: cmpl $64512, %eax # imm = 0xFC00361; X64-GENERIC-NEXT: setae %al362; X64-GENERIC-NEXT: retq363;364; X86-FAST-LABEL: cmp16_reg_uge_imm16:365; X86-FAST: # %bb.0:366; X86-FAST-NEXT: cmpw $-1024, {{[0-9]+}}(%esp) # imm = 0xFC00367; X86-FAST-NEXT: setae %al368; X86-FAST-NEXT: retl369;370; X64-FAST-LABEL: cmp16_reg_uge_imm16:371; X64-FAST: # %bb.0:372; X64-FAST-NEXT: cmpw $-1024, %di # imm = 0xFC00373; X64-FAST-NEXT: setae %al374; X64-FAST-NEXT: retq375;376; X86-ATOM-LABEL: cmp16_reg_uge_imm16:377; X86-ATOM: # %bb.0:378; X86-ATOM-NEXT: cmpw $-1024, {{[0-9]+}}(%esp) # imm = 0xFC00379; X86-ATOM-NEXT: setae %al380; X86-ATOM-NEXT: nop381; X86-ATOM-NEXT: nop382; X86-ATOM-NEXT: nop383; X86-ATOM-NEXT: nop384; X86-ATOM-NEXT: retl385;386; X64-ATOM-LABEL: cmp16_reg_uge_imm16:387; X64-ATOM: # %bb.0:388; X64-ATOM-NEXT: cmpw $-1024, %di # imm = 0xFC00389; X64-ATOM-NEXT: setae %al390; X64-ATOM-NEXT: nop391; X64-ATOM-NEXT: nop392; X64-ATOM-NEXT: nop393; X64-ATOM-NEXT: nop394; X64-ATOM-NEXT: retq395 %cmp = icmp uge i16 %a0, -1024396 ret i1 %cmp397}398 399define i1 @cmp16_reg_uge_imm16_minsize(i16 %a0) minsize {400; X86-LABEL: cmp16_reg_uge_imm16_minsize:401; X86: # %bb.0:402; X86-NEXT: cmpw $-1024, {{[0-9]+}}(%esp) # imm = 0xFC00403; X86-NEXT: setae %al404; X86-NEXT: retl405;406; X64-LABEL: cmp16_reg_uge_imm16_minsize:407; X64: # %bb.0:408; X64-NEXT: cmpw $-1024, %di # imm = 0xFC00409; X64-NEXT: setae %al410; X64-NEXT: retq411 %cmp = icmp uge i16 %a0, -1024412 ret i1 %cmp413}414 415define i1 @cmp16_reg_uge_imm16_optsize(i16 %a0) optsize {416; X86-LABEL: cmp16_reg_uge_imm16_optsize:417; X86: # %bb.0:418; X86-NEXT: cmpw $-1024, {{[0-9]+}}(%esp) # imm = 0xFC00419; X86-NEXT: setae %al420; X86-NEXT: retl421;422; X64-GENERIC-LABEL: cmp16_reg_uge_imm16_optsize:423; X64-GENERIC: # %bb.0:424; X64-GENERIC-NEXT: movzwl %di, %eax425; X64-GENERIC-NEXT: cmpl $64512, %eax # imm = 0xFC00426; X64-GENERIC-NEXT: setae %al427; X64-GENERIC-NEXT: retq428;429; X64-FAST-LABEL: cmp16_reg_uge_imm16_optsize:430; X64-FAST: # %bb.0:431; X64-FAST-NEXT: cmpw $-1024, %di # imm = 0xFC00432; X64-FAST-NEXT: setae %al433; X64-FAST-NEXT: retq434;435; X64-ATOM-LABEL: cmp16_reg_uge_imm16_optsize:436; X64-ATOM: # %bb.0:437; X64-ATOM-NEXT: cmpw $-1024, %di # imm = 0xFC00438; X64-ATOM-NEXT: setae %al439; X64-ATOM-NEXT: retq440 %cmp = icmp uge i16 %a0, -1024441 ret i1 %cmp442}443 444define i1 @cmp16_load_ne_load(ptr %p0, ptr %p1) {445; X86-GENERIC-LABEL: cmp16_load_ne_load:446; X86-GENERIC: # %bb.0:447; X86-GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax448; X86-GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx449; X86-GENERIC-NEXT: movzwl (%ecx), %ecx450; X86-GENERIC-NEXT: cmpw (%eax), %cx451; X86-GENERIC-NEXT: setne %al452; X86-GENERIC-NEXT: retl453;454; X64-GENERIC-LABEL: cmp16_load_ne_load:455; X64-GENERIC: # %bb.0:456; X64-GENERIC-NEXT: movzwl (%rdi), %eax457; X64-GENERIC-NEXT: cmpw (%rsi), %ax458; X64-GENERIC-NEXT: setne %al459; X64-GENERIC-NEXT: retq460;461; X86-FAST-LABEL: cmp16_load_ne_load:462; X86-FAST: # %bb.0:463; X86-FAST-NEXT: movl {{[0-9]+}}(%esp), %eax464; X86-FAST-NEXT: movl {{[0-9]+}}(%esp), %ecx465; X86-FAST-NEXT: movzwl (%ecx), %ecx466; X86-FAST-NEXT: cmpw (%eax), %cx467; X86-FAST-NEXT: setne %al468; X86-FAST-NEXT: retl469;470; X64-FAST-LABEL: cmp16_load_ne_load:471; X64-FAST: # %bb.0:472; X64-FAST-NEXT: movzwl (%rdi), %eax473; X64-FAST-NEXT: cmpw (%rsi), %ax474; X64-FAST-NEXT: setne %al475; X64-FAST-NEXT: retq476;477; X86-ATOM-LABEL: cmp16_load_ne_load:478; X86-ATOM: # %bb.0:479; X86-ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx480; X86-ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax481; X86-ATOM-NEXT: movzwl (%ecx), %ecx482; X86-ATOM-NEXT: cmpw (%eax), %cx483; X86-ATOM-NEXT: setne %al484; X86-ATOM-NEXT: retl485;486; X64-ATOM-LABEL: cmp16_load_ne_load:487; X64-ATOM: # %bb.0:488; X64-ATOM-NEXT: movzwl (%rdi), %eax489; X64-ATOM-NEXT: cmpw (%rsi), %ax490; X64-ATOM-NEXT: setne %al491; X64-ATOM-NEXT: nop492; X64-ATOM-NEXT: nop493; X64-ATOM-NEXT: retq494 %ld0 = load i16, ptr %p0495 %ld1 = load i16, ptr %p1496 %cmp = icmp ne i16 %ld0, %ld1497 ret i1 %cmp498}499 500define i1 @cmp16_load_ne_imm8(ptr %p0) {501; X86-GENERIC-LABEL: cmp16_load_ne_imm8:502; X86-GENERIC: # %bb.0:503; X86-GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax504; X86-GENERIC-NEXT: cmpw $15, (%eax)505; X86-GENERIC-NEXT: setne %al506; X86-GENERIC-NEXT: retl507;508; X64-GENERIC-LABEL: cmp16_load_ne_imm8:509; X64-GENERIC: # %bb.0:510; X64-GENERIC-NEXT: cmpw $15, (%rdi)511; X64-GENERIC-NEXT: setne %al512; X64-GENERIC-NEXT: retq513;514; X86-FAST-LABEL: cmp16_load_ne_imm8:515; X86-FAST: # %bb.0:516; X86-FAST-NEXT: movl {{[0-9]+}}(%esp), %eax517; X86-FAST-NEXT: cmpw $15, (%eax)518; X86-FAST-NEXT: setne %al519; X86-FAST-NEXT: retl520;521; X64-FAST-LABEL: cmp16_load_ne_imm8:522; X64-FAST: # %bb.0:523; X64-FAST-NEXT: cmpw $15, (%rdi)524; X64-FAST-NEXT: setne %al525; X64-FAST-NEXT: retq526;527; X86-ATOM-LABEL: cmp16_load_ne_imm8:528; X86-ATOM: # %bb.0:529; X86-ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax530; X86-ATOM-NEXT: cmpw $15, (%eax)531; X86-ATOM-NEXT: setne %al532; X86-ATOM-NEXT: nop533; X86-ATOM-NEXT: nop534; X86-ATOM-NEXT: retl535;536; X64-ATOM-LABEL: cmp16_load_ne_imm8:537; X64-ATOM: # %bb.0:538; X64-ATOM-NEXT: cmpw $15, (%rdi)539; X64-ATOM-NEXT: setne %al540; X64-ATOM-NEXT: nop541; X64-ATOM-NEXT: nop542; X64-ATOM-NEXT: nop543; X64-ATOM-NEXT: nop544; X64-ATOM-NEXT: retq545 %ld = load i16, ptr %p0546 %cmp = icmp ne i16 %ld, 15547 ret i1 %cmp548}549 550define i1 @cmp16_load_ne_imm16(ptr %p0) {551; X86-GENERIC-LABEL: cmp16_load_ne_imm16:552; X86-GENERIC: # %bb.0:553; X86-GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax554; X86-GENERIC-NEXT: cmpw $512, (%eax) # imm = 0x200555; X86-GENERIC-NEXT: setne %al556; X86-GENERIC-NEXT: retl557;558; X64-GENERIC-LABEL: cmp16_load_ne_imm16:559; X64-GENERIC: # %bb.0:560; X64-GENERIC-NEXT: cmpw $512, (%rdi) # imm = 0x200561; X64-GENERIC-NEXT: setne %al562; X64-GENERIC-NEXT: retq563;564; X86-FAST-LABEL: cmp16_load_ne_imm16:565; X86-FAST: # %bb.0:566; X86-FAST-NEXT: movl {{[0-9]+}}(%esp), %eax567; X86-FAST-NEXT: cmpw $512, (%eax) # imm = 0x200568; X86-FAST-NEXT: setne %al569; X86-FAST-NEXT: retl570;571; X64-FAST-LABEL: cmp16_load_ne_imm16:572; X64-FAST: # %bb.0:573; X64-FAST-NEXT: cmpw $512, (%rdi) # imm = 0x200574; X64-FAST-NEXT: setne %al575; X64-FAST-NEXT: retq576;577; X86-ATOM-LABEL: cmp16_load_ne_imm16:578; X86-ATOM: # %bb.0:579; X86-ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax580; X86-ATOM-NEXT: cmpw $512, (%eax) # imm = 0x200581; X86-ATOM-NEXT: setne %al582; X86-ATOM-NEXT: nop583; X86-ATOM-NEXT: nop584; X86-ATOM-NEXT: retl585;586; X64-ATOM-LABEL: cmp16_load_ne_imm16:587; X64-ATOM: # %bb.0:588; X64-ATOM-NEXT: cmpw $512, (%rdi) # imm = 0x200589; X64-ATOM-NEXT: setne %al590; X64-ATOM-NEXT: nop591; X64-ATOM-NEXT: nop592; X64-ATOM-NEXT: nop593; X64-ATOM-NEXT: nop594; X64-ATOM-NEXT: retq595 %ld = load i16, ptr %p0596 %cmp = icmp ne i16 %ld, 512597 ret i1 %cmp598}599 600define i1 @cmp16_load_slt_imm8(ptr %p0) {601; X86-GENERIC-LABEL: cmp16_load_slt_imm8:602; X86-GENERIC: # %bb.0:603; X86-GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax604; X86-GENERIC-NEXT: cmpw $15, (%eax)605; X86-GENERIC-NEXT: setl %al606; X86-GENERIC-NEXT: retl607;608; X64-GENERIC-LABEL: cmp16_load_slt_imm8:609; X64-GENERIC: # %bb.0:610; X64-GENERIC-NEXT: cmpw $15, (%rdi)611; X64-GENERIC-NEXT: setl %al612; X64-GENERIC-NEXT: retq613;614; X86-FAST-LABEL: cmp16_load_slt_imm8:615; X86-FAST: # %bb.0:616; X86-FAST-NEXT: movl {{[0-9]+}}(%esp), %eax617; X86-FAST-NEXT: cmpw $15, (%eax)618; X86-FAST-NEXT: setl %al619; X86-FAST-NEXT: retl620;621; X64-FAST-LABEL: cmp16_load_slt_imm8:622; X64-FAST: # %bb.0:623; X64-FAST-NEXT: cmpw $15, (%rdi)624; X64-FAST-NEXT: setl %al625; X64-FAST-NEXT: retq626;627; X86-ATOM-LABEL: cmp16_load_slt_imm8:628; X86-ATOM: # %bb.0:629; X86-ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax630; X86-ATOM-NEXT: cmpw $15, (%eax)631; X86-ATOM-NEXT: setl %al632; X86-ATOM-NEXT: nop633; X86-ATOM-NEXT: nop634; X86-ATOM-NEXT: retl635;636; X64-ATOM-LABEL: cmp16_load_slt_imm8:637; X64-ATOM: # %bb.0:638; X64-ATOM-NEXT: cmpw $15, (%rdi)639; X64-ATOM-NEXT: setl %al640; X64-ATOM-NEXT: nop641; X64-ATOM-NEXT: nop642; X64-ATOM-NEXT: nop643; X64-ATOM-NEXT: nop644; X64-ATOM-NEXT: retq645 %ld = load i16, ptr %p0646 %cmp = icmp slt i16 %ld, 15647 ret i1 %cmp648}649 650define i1 @cmp16_load_slt_imm16(ptr %p0) {651; X86-GENERIC-LABEL: cmp16_load_slt_imm16:652; X86-GENERIC: # %bb.0:653; X86-GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax654; X86-GENERIC-NEXT: cmpw $512, (%eax) # imm = 0x200655; X86-GENERIC-NEXT: setl %al656; X86-GENERIC-NEXT: retl657;658; X64-GENERIC-LABEL: cmp16_load_slt_imm16:659; X64-GENERIC: # %bb.0:660; X64-GENERIC-NEXT: cmpw $512, (%rdi) # imm = 0x200661; X64-GENERIC-NEXT: setl %al662; X64-GENERIC-NEXT: retq663;664; X86-FAST-LABEL: cmp16_load_slt_imm16:665; X86-FAST: # %bb.0:666; X86-FAST-NEXT: movl {{[0-9]+}}(%esp), %eax667; X86-FAST-NEXT: cmpw $512, (%eax) # imm = 0x200668; X86-FAST-NEXT: setl %al669; X86-FAST-NEXT: retl670;671; X64-FAST-LABEL: cmp16_load_slt_imm16:672; X64-FAST: # %bb.0:673; X64-FAST-NEXT: cmpw $512, (%rdi) # imm = 0x200674; X64-FAST-NEXT: setl %al675; X64-FAST-NEXT: retq676;677; X86-ATOM-LABEL: cmp16_load_slt_imm16:678; X86-ATOM: # %bb.0:679; X86-ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax680; X86-ATOM-NEXT: cmpw $512, (%eax) # imm = 0x200681; X86-ATOM-NEXT: setl %al682; X86-ATOM-NEXT: nop683; X86-ATOM-NEXT: nop684; X86-ATOM-NEXT: retl685;686; X64-ATOM-LABEL: cmp16_load_slt_imm16:687; X64-ATOM: # %bb.0:688; X64-ATOM-NEXT: cmpw $512, (%rdi) # imm = 0x200689; X64-ATOM-NEXT: setl %al690; X64-ATOM-NEXT: nop691; X64-ATOM-NEXT: nop692; X64-ATOM-NEXT: nop693; X64-ATOM-NEXT: nop694; X64-ATOM-NEXT: retq695 %ld = load i16, ptr %p0696 %cmp = icmp slt i16 %ld, 512697 ret i1 %cmp698}699 700define i1 @cmp16_load_slt_imm16_minsize(ptr %p0) minsize {701; X86-LABEL: cmp16_load_slt_imm16_minsize:702; X86: # %bb.0:703; X86-NEXT: movl {{[0-9]+}}(%esp), %eax704; X86-NEXT: cmpw $512, (%eax) # imm = 0x200705; X86-NEXT: setl %al706; X86-NEXT: retl707;708; X64-LABEL: cmp16_load_slt_imm16_minsize:709; X64: # %bb.0:710; X64-NEXT: cmpw $512, (%rdi) # imm = 0x200711; X64-NEXT: setl %al712; X64-NEXT: retq713 %ld = load i16, ptr %p0714 %cmp = icmp slt i16 %ld, 512715 ret i1 %cmp716}717 718define i1 @cmp16_load_slt_imm16_optsize(ptr %p0) optsize {719; X86-LABEL: cmp16_load_slt_imm16_optsize:720; X86: # %bb.0:721; X86-NEXT: movl {{[0-9]+}}(%esp), %eax722; X86-NEXT: cmpw $512, (%eax) # imm = 0x200723; X86-NEXT: setl %al724; X86-NEXT: retl725;726; X64-LABEL: cmp16_load_slt_imm16_optsize:727; X64: # %bb.0:728; X64-NEXT: cmpw $512, (%rdi) # imm = 0x200729; X64-NEXT: setl %al730; X64-NEXT: retq731 %ld = load i16, ptr %p0732 %cmp = icmp slt i16 %ld, 512733 ret i1 %cmp734}735 736define i1 @cmp16_load_ule_imm8(ptr %p0) {737; X86-GENERIC-LABEL: cmp16_load_ule_imm8:738; X86-GENERIC: # %bb.0:739; X86-GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax740; X86-GENERIC-NEXT: cmpw $16, (%eax)741; X86-GENERIC-NEXT: setb %al742; X86-GENERIC-NEXT: retl743;744; X64-GENERIC-LABEL: cmp16_load_ule_imm8:745; X64-GENERIC: # %bb.0:746; X64-GENERIC-NEXT: cmpw $16, (%rdi)747; X64-GENERIC-NEXT: setb %al748; X64-GENERIC-NEXT: retq749;750; X86-FAST-LABEL: cmp16_load_ule_imm8:751; X86-FAST: # %bb.0:752; X86-FAST-NEXT: movl {{[0-9]+}}(%esp), %eax753; X86-FAST-NEXT: cmpw $16, (%eax)754; X86-FAST-NEXT: setb %al755; X86-FAST-NEXT: retl756;757; X64-FAST-LABEL: cmp16_load_ule_imm8:758; X64-FAST: # %bb.0:759; X64-FAST-NEXT: cmpw $16, (%rdi)760; X64-FAST-NEXT: setb %al761; X64-FAST-NEXT: retq762;763; X86-ATOM-LABEL: cmp16_load_ule_imm8:764; X86-ATOM: # %bb.0:765; X86-ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax766; X86-ATOM-NEXT: cmpw $16, (%eax)767; X86-ATOM-NEXT: setb %al768; X86-ATOM-NEXT: nop769; X86-ATOM-NEXT: nop770; X86-ATOM-NEXT: retl771;772; X64-ATOM-LABEL: cmp16_load_ule_imm8:773; X64-ATOM: # %bb.0:774; X64-ATOM-NEXT: cmpw $16, (%rdi)775; X64-ATOM-NEXT: setb %al776; X64-ATOM-NEXT: nop777; X64-ATOM-NEXT: nop778; X64-ATOM-NEXT: nop779; X64-ATOM-NEXT: nop780; X64-ATOM-NEXT: retq781 %ld = load i16, ptr %p0782 %cmp = icmp ule i16 %ld, 15783 ret i1 %cmp784}785 786define i1 @cmp16_load_ule_imm16(ptr %p0) {787; X86-GENERIC-LABEL: cmp16_load_ule_imm16:788; X86-GENERIC: # %bb.0:789; X86-GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax790; X86-GENERIC-NEXT: cmpw $513, (%eax) # imm = 0x201791; X86-GENERIC-NEXT: setb %al792; X86-GENERIC-NEXT: retl793;794; X64-GENERIC-LABEL: cmp16_load_ule_imm16:795; X64-GENERIC: # %bb.0:796; X64-GENERIC-NEXT: cmpw $513, (%rdi) # imm = 0x201797; X64-GENERIC-NEXT: setb %al798; X64-GENERIC-NEXT: retq799;800; X86-FAST-LABEL: cmp16_load_ule_imm16:801; X86-FAST: # %bb.0:802; X86-FAST-NEXT: movl {{[0-9]+}}(%esp), %eax803; X86-FAST-NEXT: cmpw $513, (%eax) # imm = 0x201804; X86-FAST-NEXT: setb %al805; X86-FAST-NEXT: retl806;807; X64-FAST-LABEL: cmp16_load_ule_imm16:808; X64-FAST: # %bb.0:809; X64-FAST-NEXT: cmpw $513, (%rdi) # imm = 0x201810; X64-FAST-NEXT: setb %al811; X64-FAST-NEXT: retq812;813; X86-ATOM-LABEL: cmp16_load_ule_imm16:814; X86-ATOM: # %bb.0:815; X86-ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax816; X86-ATOM-NEXT: cmpw $513, (%eax) # imm = 0x201817; X86-ATOM-NEXT: setb %al818; X86-ATOM-NEXT: nop819; X86-ATOM-NEXT: nop820; X86-ATOM-NEXT: retl821;822; X64-ATOM-LABEL: cmp16_load_ule_imm16:823; X64-ATOM: # %bb.0:824; X64-ATOM-NEXT: cmpw $513, (%rdi) # imm = 0x201825; X64-ATOM-NEXT: setb %al826; X64-ATOM-NEXT: nop827; X64-ATOM-NEXT: nop828; X64-ATOM-NEXT: nop829; X64-ATOM-NEXT: nop830; X64-ATOM-NEXT: retq831 %ld = load i16, ptr %p0832 %cmp = icmp ule i16 %ld, 512833 ret i1 %cmp834}835 836define i1 @cmp16_load_ule_imm16_minsize(ptr %p0) minsize {837; X86-LABEL: cmp16_load_ule_imm16_minsize:838; X86: # %bb.0:839; X86-NEXT: movl {{[0-9]+}}(%esp), %eax840; X86-NEXT: cmpw $513, (%eax) # imm = 0x201841; X86-NEXT: setb %al842; X86-NEXT: retl843;844; X64-LABEL: cmp16_load_ule_imm16_minsize:845; X64: # %bb.0:846; X64-NEXT: cmpw $513, (%rdi) # imm = 0x201847; X64-NEXT: setb %al848; X64-NEXT: retq849 %ld = load i16, ptr %p0850 %cmp = icmp ule i16 %ld, 512851 ret i1 %cmp852}853 854define i1 @cmp16_load_ule_imm16_optsize(ptr %p0) optsize {855; X86-LABEL: cmp16_load_ule_imm16_optsize:856; X86: # %bb.0:857; X86-NEXT: movl {{[0-9]+}}(%esp), %eax858; X86-NEXT: cmpw $513, (%eax) # imm = 0x201859; X86-NEXT: setb %al860; X86-NEXT: retl861;862; X64-LABEL: cmp16_load_ule_imm16_optsize:863; X64: # %bb.0:864; X64-NEXT: cmpw $513, (%rdi) # imm = 0x201865; X64-NEXT: setb %al866; X64-NEXT: retq867 %ld = load i16, ptr %p0868 %cmp = icmp ule i16 %ld, 512869 ret i1 %cmp870}871