brintos

brintos / llvm-project-archived public Read only

0
0
Text · 25.3 KiB · 8c14a78 Raw
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