xref: /llvm-project/llvm/test/CodeGen/X86/cmp16.ll (revision 02e4186d0b3508e79d78b0ec844518b13a3fe9ea)
138c68e07SSimon Pilgrim; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
238c68e07SSimon Pilgrim; RUN: llc < %s -mtriple=i686-- | FileCheck %s --check-prefixes=X86,X86-GENERIC
338c68e07SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefixes=X64,X64-GENERIC
4d838e5b3SSimon Pilgrim; RUN: llc < %s -mtriple=i686-- -mattr=+fast-imm16 | FileCheck %s --check-prefixes=X86,X86-FAST
5d838e5b3SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -mattr=+fast-imm16 | FileCheck %s --check-prefixes=X64,X64-FAST
638c68e07SSimon Pilgrim; RUN: llc < %s -mtriple=i686-- -mcpu=atom | FileCheck %s --check-prefixes=X86,X86-ATOM
738c68e07SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -mcpu=atom | FileCheck %s --check-prefixes=X64,X64-ATOM
8d838e5b3SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -mcpu=slm | FileCheck %s --check-prefixes=X64,X64-FAST
9d838e5b3SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -mcpu=knl | FileCheck %s --check-prefixes=X64,X64-FAST
10d838e5b3SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -mcpu=btver1 | FileCheck %s --check-prefixes=X64,X64-FAST
11d838e5b3SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -mcpu=btver2 | FileCheck %s --check-prefixes=X64,X64-FAST
12d838e5b3SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver1 | FileCheck %s --check-prefixes=X64,X64-FAST
13d838e5b3SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver2 | FileCheck %s --check-prefixes=X64,X64-FAST
14d838e5b3SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver3 | FileCheck %s --check-prefixes=X64,X64-FAST
15d838e5b3SSimon Pilgrim; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver4 | FileCheck %s --check-prefixes=X64,X64-FAST
16*02e4186dSGanesh; RUN: llc < %s -mtriple=x86_64-- -mcpu=znver5 | FileCheck %s --check-prefixes=X64,X64-FAST
1738c68e07SSimon Pilgrim
1838c68e07SSimon Pilgrimdefine i1 @cmp16_reg_eq_reg(i16 %a0, i16 %a1) {
1938c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_reg_eq_reg:
2038c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
2138c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
2238c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw {{[0-9]+}}(%esp), %ax
2338c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    sete %al
2438c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
2538c68e07SSimon Pilgrim;
2638c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_reg_eq_reg:
2738c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
2838c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpw %si, %di
2938c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    sete %al
3038c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
3138c68e07SSimon Pilgrim;
32d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_reg_eq_reg:
33d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
34d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
35d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw {{[0-9]+}}(%esp), %ax
36d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    sete %al
37d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
38d838e5b3SSimon Pilgrim;
39d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_reg_eq_reg:
40d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
41d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw %si, %di
42d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    sete %al
43d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
44d838e5b3SSimon Pilgrim;
4538c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_reg_eq_reg:
4638c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
4738c68e07SSimon Pilgrim; X86-ATOM-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
4838c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw {{[0-9]+}}(%esp), %ax
4938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    sete %al
5038c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
5138c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
5238c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
5338c68e07SSimon Pilgrim;
5438c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_reg_eq_reg:
5538c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
5638c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw %si, %di
5738c68e07SSimon Pilgrim; X64-ATOM-NEXT:    sete %al
5838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
5938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
6038c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
6138c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
6238c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
6338c68e07SSimon Pilgrim  %cmp = icmp eq i16 %a0, %a1
6438c68e07SSimon Pilgrim  ret i1 %cmp
6538c68e07SSimon Pilgrim}
6638c68e07SSimon Pilgrimdefine i1 @cmp16_reg_eq_imm8(i16 %a0) {
6738c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_reg_eq_imm8:
6838c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
6938c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw $15, {{[0-9]+}}(%esp)
7038c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    sete %al
7138c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
7238c68e07SSimon Pilgrim;
7338c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_reg_eq_imm8:
7438c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
7538c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpw $15, %di
7638c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    sete %al
7738c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
7838c68e07SSimon Pilgrim;
79d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_reg_eq_imm8:
80d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
81d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw $15, {{[0-9]+}}(%esp)
82d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    sete %al
83d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
84d838e5b3SSimon Pilgrim;
85d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_reg_eq_imm8:
86d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
87d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $15, %di
88d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    sete %al
89d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
90d838e5b3SSimon Pilgrim;
9138c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_reg_eq_imm8:
9238c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
9338c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw $15, {{[0-9]+}}(%esp)
9438c68e07SSimon Pilgrim; X86-ATOM-NEXT:    sete %al
9538c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
9638c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
9738c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
9838c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
9938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
10038c68e07SSimon Pilgrim;
10138c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_reg_eq_imm8:
10238c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
10338c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $15, %di
10438c68e07SSimon Pilgrim; X64-ATOM-NEXT:    sete %al
10538c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
10638c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
10738c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
10838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
10938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
11038c68e07SSimon Pilgrim  %cmp = icmp eq i16 %a0, 15
11138c68e07SSimon Pilgrim  ret i1 %cmp
11238c68e07SSimon Pilgrim}
11338c68e07SSimon Pilgrim
11438c68e07SSimon Pilgrimdefine i1 @cmp16_reg_eq_imm16(i16 %a0) {
11538c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_reg_eq_imm16:
11638c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
117e2d74a25SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw $1024, {{[0-9]+}}(%esp) # imm = 0x400
11838c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    sete %al
11938c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
12038c68e07SSimon Pilgrim;
12138c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_reg_eq_imm16:
12238c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
12338c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    movzwl %di, %eax
12438c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpl $1024, %eax # imm = 0x400
12538c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    sete %al
12638c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
12738c68e07SSimon Pilgrim;
128d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_reg_eq_imm16:
129d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
130d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw $1024, {{[0-9]+}}(%esp) # imm = 0x400
131d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    sete %al
132d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
133d838e5b3SSimon Pilgrim;
134d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_reg_eq_imm16:
135d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
136d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $1024, %di # imm = 0x400
137d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    sete %al
138d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
139d838e5b3SSimon Pilgrim;
14038c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_reg_eq_imm16:
14138c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
14238c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw $1024, {{[0-9]+}}(%esp) # imm = 0x400
14338c68e07SSimon Pilgrim; X86-ATOM-NEXT:    sete %al
14438c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
14538c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
14638c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
14738c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
14838c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
14938c68e07SSimon Pilgrim;
15038c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_reg_eq_imm16:
15138c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
15238c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $1024, %di # imm = 0x400
15338c68e07SSimon Pilgrim; X64-ATOM-NEXT:    sete %al
15438c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
15538c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
15638c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
15738c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
15838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
15938c68e07SSimon Pilgrim  %cmp = icmp eq i16 %a0, 1024
16038c68e07SSimon Pilgrim  ret i1 %cmp
16138c68e07SSimon Pilgrim}
16238c68e07SSimon Pilgrim
16338c68e07SSimon Pilgrimdefine i1 @cmp16_reg_eq_imm16_minsize(i16 %a0) minsize {
16438c68e07SSimon Pilgrim; X86-LABEL: cmp16_reg_eq_imm16_minsize:
16538c68e07SSimon Pilgrim; X86:       # %bb.0:
16638c68e07SSimon Pilgrim; X86-NEXT:    cmpw $1024, {{[0-9]+}}(%esp) # imm = 0x400
16738c68e07SSimon Pilgrim; X86-NEXT:    sete %al
16838c68e07SSimon Pilgrim; X86-NEXT:    retl
16938c68e07SSimon Pilgrim;
17038c68e07SSimon Pilgrim; X64-LABEL: cmp16_reg_eq_imm16_minsize:
17138c68e07SSimon Pilgrim; X64:       # %bb.0:
17238c68e07SSimon Pilgrim; X64-NEXT:    cmpw $1024, %di # imm = 0x400
17338c68e07SSimon Pilgrim; X64-NEXT:    sete %al
17438c68e07SSimon Pilgrim; X64-NEXT:    retq
17538c68e07SSimon Pilgrim  %cmp = icmp eq i16 %a0, 1024
17638c68e07SSimon Pilgrim  ret i1 %cmp
17738c68e07SSimon Pilgrim}
17838c68e07SSimon Pilgrim
17938c68e07SSimon Pilgrimdefine i1 @cmp16_reg_eq_imm16_optsize(i16 %a0) optsize {
180e2d74a25SSimon Pilgrim; X86-LABEL: cmp16_reg_eq_imm16_optsize:
181e2d74a25SSimon Pilgrim; X86:       # %bb.0:
182e2d74a25SSimon Pilgrim; X86-NEXT:    cmpw $1024, {{[0-9]+}}(%esp) # imm = 0x400
183e2d74a25SSimon Pilgrim; X86-NEXT:    sete %al
184e2d74a25SSimon Pilgrim; X86-NEXT:    retl
18538c68e07SSimon Pilgrim;
18638c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_reg_eq_imm16_optsize:
18738c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
18838c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    movzwl %di, %eax
18938c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpl $1024, %eax # imm = 0x400
19038c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    sete %al
19138c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
19238c68e07SSimon Pilgrim;
193d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_reg_eq_imm16_optsize:
194d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
195d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $1024, %di # imm = 0x400
196d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    sete %al
197d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
198d838e5b3SSimon Pilgrim;
19938c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_reg_eq_imm16_optsize:
20038c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
20138c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $1024, %di # imm = 0x400
20238c68e07SSimon Pilgrim; X64-ATOM-NEXT:    sete %al
20338c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
20438c68e07SSimon Pilgrim  %cmp = icmp eq i16 %a0, 1024
20538c68e07SSimon Pilgrim  ret i1 %cmp
20638c68e07SSimon Pilgrim}
20738c68e07SSimon Pilgrim
20838c68e07SSimon Pilgrimdefine i1 @cmp16_reg_sgt_imm8(i16 %a0) {
20938c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_reg_sgt_imm8:
21038c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
21138c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw $16, {{[0-9]+}}(%esp)
21238c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    setge %al
21338c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
21438c68e07SSimon Pilgrim;
21538c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_reg_sgt_imm8:
21638c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
21738c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpw $16, %di
21838c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setge %al
21938c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
22038c68e07SSimon Pilgrim;
221d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_reg_sgt_imm8:
222d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
223d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw $16, {{[0-9]+}}(%esp)
224d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    setge %al
225d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
226d838e5b3SSimon Pilgrim;
227d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_reg_sgt_imm8:
228d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
229d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $16, %di
230d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setge %al
231d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
232d838e5b3SSimon Pilgrim;
23338c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_reg_sgt_imm8:
23438c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
23538c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw $16, {{[0-9]+}}(%esp)
23638c68e07SSimon Pilgrim; X86-ATOM-NEXT:    setge %al
23738c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
23838c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
23938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
24038c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
24138c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
24238c68e07SSimon Pilgrim;
24338c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_reg_sgt_imm8:
24438c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
24538c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $16, %di
24638c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setge %al
24738c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
24838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
24938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
25038c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
25138c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
25238c68e07SSimon Pilgrim  %cmp = icmp sgt i16 %a0, 15
25338c68e07SSimon Pilgrim  ret i1 %cmp
25438c68e07SSimon Pilgrim}
25538c68e07SSimon Pilgrim
25638c68e07SSimon Pilgrimdefine i1 @cmp16_reg_sgt_imm16(i16 %a0) {
25738c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_reg_sgt_imm16:
25838c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
259e2d74a25SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw $-1023, {{[0-9]+}}(%esp) # imm = 0xFC01
26038c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    setge %al
26138c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
26238c68e07SSimon Pilgrim;
26338c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_reg_sgt_imm16:
26438c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
26538c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    movswl %di, %eax
26638c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpl $-1023, %eax # imm = 0xFC01
26738c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setge %al
26838c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
26938c68e07SSimon Pilgrim;
270d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_reg_sgt_imm16:
271d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
272d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw $-1023, {{[0-9]+}}(%esp) # imm = 0xFC01
273d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    setge %al
274d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
275d838e5b3SSimon Pilgrim;
276d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_reg_sgt_imm16:
277d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
278d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $-1023, %di # imm = 0xFC01
279d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setge %al
280d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
281d838e5b3SSimon Pilgrim;
28238c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_reg_sgt_imm16:
28338c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
28438c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw $-1023, {{[0-9]+}}(%esp) # imm = 0xFC01
28538c68e07SSimon Pilgrim; X86-ATOM-NEXT:    setge %al
28638c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
28738c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
28838c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
28938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
29038c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
29138c68e07SSimon Pilgrim;
29238c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_reg_sgt_imm16:
29338c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
29438c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $-1023, %di # imm = 0xFC01
29538c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setge %al
29638c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
29738c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
29838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
29938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
30038c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
30138c68e07SSimon Pilgrim  %cmp = icmp sgt i16 %a0, -1024
30238c68e07SSimon Pilgrim  ret i1 %cmp
30338c68e07SSimon Pilgrim}
30438c68e07SSimon Pilgrim
30538c68e07SSimon Pilgrimdefine i1 @cmp16_reg_sgt_imm16_minsize(i16 %a0) minsize {
30638c68e07SSimon Pilgrim; X86-LABEL: cmp16_reg_sgt_imm16_minsize:
30738c68e07SSimon Pilgrim; X86:       # %bb.0:
30838c68e07SSimon Pilgrim; X86-NEXT:    cmpw $-1023, {{[0-9]+}}(%esp) # imm = 0xFC01
30938c68e07SSimon Pilgrim; X86-NEXT:    setge %al
31038c68e07SSimon Pilgrim; X86-NEXT:    retl
31138c68e07SSimon Pilgrim;
31238c68e07SSimon Pilgrim; X64-LABEL: cmp16_reg_sgt_imm16_minsize:
31338c68e07SSimon Pilgrim; X64:       # %bb.0:
31438c68e07SSimon Pilgrim; X64-NEXT:    cmpw $-1023, %di # imm = 0xFC01
31538c68e07SSimon Pilgrim; X64-NEXT:    setge %al
31638c68e07SSimon Pilgrim; X64-NEXT:    retq
31738c68e07SSimon Pilgrim  %cmp = icmp sgt i16 %a0, -1024
31838c68e07SSimon Pilgrim  ret i1 %cmp
31938c68e07SSimon Pilgrim}
32038c68e07SSimon Pilgrim
32138c68e07SSimon Pilgrimdefine i1 @cmp16_reg_sgt_imm16_optsize(i16 %a0) optsize {
322e2d74a25SSimon Pilgrim; X86-LABEL: cmp16_reg_sgt_imm16_optsize:
323e2d74a25SSimon Pilgrim; X86:       # %bb.0:
324e2d74a25SSimon Pilgrim; X86-NEXT:    cmpw $-1023, {{[0-9]+}}(%esp) # imm = 0xFC01
325e2d74a25SSimon Pilgrim; X86-NEXT:    setge %al
326e2d74a25SSimon Pilgrim; X86-NEXT:    retl
32738c68e07SSimon Pilgrim;
32838c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_reg_sgt_imm16_optsize:
32938c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
33038c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    movswl %di, %eax
33138c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpl $-1023, %eax # imm = 0xFC01
33238c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setge %al
33338c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
33438c68e07SSimon Pilgrim;
335d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_reg_sgt_imm16_optsize:
336d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
337d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $-1023, %di # imm = 0xFC01
338d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setge %al
339d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
340d838e5b3SSimon Pilgrim;
34138c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_reg_sgt_imm16_optsize:
34238c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
34338c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $-1023, %di # imm = 0xFC01
34438c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setge %al
34538c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
34638c68e07SSimon Pilgrim  %cmp = icmp sgt i16 %a0, -1024
34738c68e07SSimon Pilgrim  ret i1 %cmp
34838c68e07SSimon Pilgrim}
34938c68e07SSimon Pilgrim
35038c68e07SSimon Pilgrimdefine i1 @cmp16_reg_uge_imm16(i16 %a0) {
35138c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_reg_uge_imm16:
35238c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
353e2d74a25SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw $-1024, {{[0-9]+}}(%esp) # imm = 0xFC00
35438c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    setae %al
35538c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
35638c68e07SSimon Pilgrim;
35738c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_reg_uge_imm16:
35838c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
35938c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    movzwl %di, %eax
36038c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpl $64512, %eax # imm = 0xFC00
36138c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setae %al
36238c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
36338c68e07SSimon Pilgrim;
364d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_reg_uge_imm16:
365d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
366d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw $-1024, {{[0-9]+}}(%esp) # imm = 0xFC00
367d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    setae %al
368d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
369d838e5b3SSimon Pilgrim;
370d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_reg_uge_imm16:
371d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
372d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $-1024, %di # imm = 0xFC00
373d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setae %al
374d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
375d838e5b3SSimon Pilgrim;
37638c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_reg_uge_imm16:
37738c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
37838c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw $-1024, {{[0-9]+}}(%esp) # imm = 0xFC00
37938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    setae %al
38038c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
38138c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
38238c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
38338c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
38438c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
38538c68e07SSimon Pilgrim;
38638c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_reg_uge_imm16:
38738c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
38838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $-1024, %di # imm = 0xFC00
38938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setae %al
39038c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
39138c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
39238c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
39338c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
39438c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
39538c68e07SSimon Pilgrim  %cmp = icmp uge i16 %a0, -1024
39638c68e07SSimon Pilgrim  ret i1 %cmp
39738c68e07SSimon Pilgrim}
39838c68e07SSimon Pilgrim
39938c68e07SSimon Pilgrimdefine i1 @cmp16_reg_uge_imm16_minsize(i16 %a0) minsize {
40038c68e07SSimon Pilgrim; X86-LABEL: cmp16_reg_uge_imm16_minsize:
40138c68e07SSimon Pilgrim; X86:       # %bb.0:
40238c68e07SSimon Pilgrim; X86-NEXT:    cmpw $-1024, {{[0-9]+}}(%esp) # imm = 0xFC00
40338c68e07SSimon Pilgrim; X86-NEXT:    setae %al
40438c68e07SSimon Pilgrim; X86-NEXT:    retl
40538c68e07SSimon Pilgrim;
40638c68e07SSimon Pilgrim; X64-LABEL: cmp16_reg_uge_imm16_minsize:
40738c68e07SSimon Pilgrim; X64:       # %bb.0:
40838c68e07SSimon Pilgrim; X64-NEXT:    cmpw $-1024, %di # imm = 0xFC00
40938c68e07SSimon Pilgrim; X64-NEXT:    setae %al
41038c68e07SSimon Pilgrim; X64-NEXT:    retq
41138c68e07SSimon Pilgrim  %cmp = icmp uge i16 %a0, -1024
41238c68e07SSimon Pilgrim  ret i1 %cmp
41338c68e07SSimon Pilgrim}
41438c68e07SSimon Pilgrim
41538c68e07SSimon Pilgrimdefine i1 @cmp16_reg_uge_imm16_optsize(i16 %a0) optsize {
416e2d74a25SSimon Pilgrim; X86-LABEL: cmp16_reg_uge_imm16_optsize:
417e2d74a25SSimon Pilgrim; X86:       # %bb.0:
418e2d74a25SSimon Pilgrim; X86-NEXT:    cmpw $-1024, {{[0-9]+}}(%esp) # imm = 0xFC00
419e2d74a25SSimon Pilgrim; X86-NEXT:    setae %al
420e2d74a25SSimon Pilgrim; X86-NEXT:    retl
42138c68e07SSimon Pilgrim;
42238c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_reg_uge_imm16_optsize:
42338c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
42438c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    movzwl %di, %eax
42538c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpl $64512, %eax # imm = 0xFC00
42638c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setae %al
42738c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
42838c68e07SSimon Pilgrim;
429d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_reg_uge_imm16_optsize:
430d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
431d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $-1024, %di # imm = 0xFC00
432d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setae %al
433d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
434d838e5b3SSimon Pilgrim;
43538c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_reg_uge_imm16_optsize:
43638c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
43738c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $-1024, %di # imm = 0xFC00
43838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setae %al
43938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
44038c68e07SSimon Pilgrim  %cmp = icmp uge i16 %a0, -1024
44138c68e07SSimon Pilgrim  ret i1 %cmp
44238c68e07SSimon Pilgrim}
44338c68e07SSimon Pilgrim
44438c68e07SSimon Pilgrimdefine i1 @cmp16_load_ne_load(ptr %p0, ptr %p1) {
44538c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_load_ne_load:
44638c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
44738c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
44838c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    movl {{[0-9]+}}(%esp), %ecx
44938c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    movzwl (%ecx), %ecx
45038c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw (%eax), %cx
45138c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    setne %al
45238c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
45338c68e07SSimon Pilgrim;
45438c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_load_ne_load:
45538c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
45638c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    movzwl (%rdi), %eax
45738c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpw (%rsi), %ax
45838c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setne %al
45938c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
46038c68e07SSimon Pilgrim;
461d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_load_ne_load:
462d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
463d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    movl {{[0-9]+}}(%esp), %eax
464d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    movl {{[0-9]+}}(%esp), %ecx
465d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    movzwl (%ecx), %ecx
466d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw (%eax), %cx
467d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    setne %al
468d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
469d838e5b3SSimon Pilgrim;
470d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_load_ne_load:
471d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
472d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    movzwl (%rdi), %eax
473d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw (%rsi), %ax
474d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setne %al
475d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
476d838e5b3SSimon Pilgrim;
47738c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_load_ne_load:
47838c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
47938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    movl {{[0-9]+}}(%esp), %ecx
48038c68e07SSimon Pilgrim; X86-ATOM-NEXT:    movl {{[0-9]+}}(%esp), %eax
48138c68e07SSimon Pilgrim; X86-ATOM-NEXT:    movzwl (%ecx), %ecx
48238c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw (%eax), %cx
48338c68e07SSimon Pilgrim; X86-ATOM-NEXT:    setne %al
48438c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
48538c68e07SSimon Pilgrim;
48638c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_load_ne_load:
48738c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
48838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    movzwl (%rdi), %eax
48938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw (%rsi), %ax
49038c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setne %al
49138c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
49238c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
49338c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
49438c68e07SSimon Pilgrim  %ld0 = load i16, ptr %p0
49538c68e07SSimon Pilgrim  %ld1 = load i16, ptr %p1
49638c68e07SSimon Pilgrim  %cmp = icmp ne i16 %ld0, %ld1
49738c68e07SSimon Pilgrim  ret i1 %cmp
49838c68e07SSimon Pilgrim}
49938c68e07SSimon Pilgrim
50038c68e07SSimon Pilgrimdefine i1 @cmp16_load_ne_imm8(ptr %p0) {
50138c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_load_ne_imm8:
50238c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
50338c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
50438c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw $15, (%eax)
50538c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    setne %al
50638c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
50738c68e07SSimon Pilgrim;
50838c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_load_ne_imm8:
50938c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
51038c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpw $15, (%rdi)
51138c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setne %al
51238c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
51338c68e07SSimon Pilgrim;
514d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_load_ne_imm8:
515d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
516d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    movl {{[0-9]+}}(%esp), %eax
517d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw $15, (%eax)
518d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    setne %al
519d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
520d838e5b3SSimon Pilgrim;
521d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_load_ne_imm8:
522d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
523d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $15, (%rdi)
524d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setne %al
525d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
526d838e5b3SSimon Pilgrim;
52738c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_load_ne_imm8:
52838c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
52938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    movl {{[0-9]+}}(%esp), %eax
53038c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw $15, (%eax)
53138c68e07SSimon Pilgrim; X86-ATOM-NEXT:    setne %al
53238c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
53338c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
53438c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
53538c68e07SSimon Pilgrim;
53638c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_load_ne_imm8:
53738c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
53838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $15, (%rdi)
53938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setne %al
54038c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
54138c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
54238c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
54338c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
54438c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
54538c68e07SSimon Pilgrim  %ld = load i16, ptr %p0
54638c68e07SSimon Pilgrim  %cmp = icmp ne i16 %ld, 15
54738c68e07SSimon Pilgrim  ret i1 %cmp
54838c68e07SSimon Pilgrim}
54938c68e07SSimon Pilgrim
55038c68e07SSimon Pilgrimdefine i1 @cmp16_load_ne_imm16(ptr %p0) {
55138c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_load_ne_imm16:
55238c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
55338c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
554e2d74a25SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw $512, (%eax) # imm = 0x200
55538c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    setne %al
55638c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
55738c68e07SSimon Pilgrim;
55838c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_load_ne_imm16:
55938c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
560e2d74a25SSimon Pilgrim; X64-GENERIC-NEXT:    cmpw $512, (%rdi) # imm = 0x200
56138c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setne %al
56238c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
56338c68e07SSimon Pilgrim;
564d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_load_ne_imm16:
565d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
566d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    movl {{[0-9]+}}(%esp), %eax
567d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw $512, (%eax) # imm = 0x200
568d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    setne %al
569d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
570d838e5b3SSimon Pilgrim;
571d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_load_ne_imm16:
572d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
573d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $512, (%rdi) # imm = 0x200
574d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setne %al
575d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
576d838e5b3SSimon Pilgrim;
57738c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_load_ne_imm16:
57838c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
57938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    movl {{[0-9]+}}(%esp), %eax
58038c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw $512, (%eax) # imm = 0x200
58138c68e07SSimon Pilgrim; X86-ATOM-NEXT:    setne %al
58238c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
58338c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
58438c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
58538c68e07SSimon Pilgrim;
58638c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_load_ne_imm16:
58738c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
58838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $512, (%rdi) # imm = 0x200
58938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setne %al
59038c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
59138c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
59238c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
59338c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
59438c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
59538c68e07SSimon Pilgrim  %ld = load i16, ptr %p0
59638c68e07SSimon Pilgrim  %cmp = icmp ne i16 %ld, 512
59738c68e07SSimon Pilgrim  ret i1 %cmp
59838c68e07SSimon Pilgrim}
59938c68e07SSimon Pilgrim
60038c68e07SSimon Pilgrimdefine i1 @cmp16_load_slt_imm8(ptr %p0) {
60138c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_load_slt_imm8:
60238c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
60338c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
60438c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw $15, (%eax)
60538c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    setl %al
60638c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
60738c68e07SSimon Pilgrim;
60838c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_load_slt_imm8:
60938c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
61038c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpw $15, (%rdi)
61138c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setl %al
61238c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
61338c68e07SSimon Pilgrim;
614d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_load_slt_imm8:
615d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
616d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    movl {{[0-9]+}}(%esp), %eax
617d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw $15, (%eax)
618d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    setl %al
619d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
620d838e5b3SSimon Pilgrim;
621d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_load_slt_imm8:
622d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
623d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $15, (%rdi)
624d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setl %al
625d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
626d838e5b3SSimon Pilgrim;
62738c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_load_slt_imm8:
62838c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
62938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    movl {{[0-9]+}}(%esp), %eax
63038c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw $15, (%eax)
63138c68e07SSimon Pilgrim; X86-ATOM-NEXT:    setl %al
63238c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
63338c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
63438c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
63538c68e07SSimon Pilgrim;
63638c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_load_slt_imm8:
63738c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
63838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $15, (%rdi)
63938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setl %al
64038c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
64138c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
64238c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
64338c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
64438c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
64538c68e07SSimon Pilgrim  %ld = load i16, ptr %p0
64638c68e07SSimon Pilgrim  %cmp = icmp slt i16 %ld, 15
64738c68e07SSimon Pilgrim  ret i1 %cmp
64838c68e07SSimon Pilgrim}
64938c68e07SSimon Pilgrim
65038c68e07SSimon Pilgrimdefine i1 @cmp16_load_slt_imm16(ptr %p0) {
65138c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_load_slt_imm16:
65238c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
65338c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
654e2d74a25SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw $512, (%eax) # imm = 0x200
65538c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    setl %al
65638c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
65738c68e07SSimon Pilgrim;
65838c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_load_slt_imm16:
65938c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
660e2d74a25SSimon Pilgrim; X64-GENERIC-NEXT:    cmpw $512, (%rdi) # imm = 0x200
66138c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setl %al
66238c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
66338c68e07SSimon Pilgrim;
664d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_load_slt_imm16:
665d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
666d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    movl {{[0-9]+}}(%esp), %eax
667d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw $512, (%eax) # imm = 0x200
668d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    setl %al
669d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
670d838e5b3SSimon Pilgrim;
671d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_load_slt_imm16:
672d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
673d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $512, (%rdi) # imm = 0x200
674d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setl %al
675d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
676d838e5b3SSimon Pilgrim;
67738c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_load_slt_imm16:
67838c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
67938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    movl {{[0-9]+}}(%esp), %eax
68038c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw $512, (%eax) # imm = 0x200
68138c68e07SSimon Pilgrim; X86-ATOM-NEXT:    setl %al
68238c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
68338c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
68438c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
68538c68e07SSimon Pilgrim;
68638c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_load_slt_imm16:
68738c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
68838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $512, (%rdi) # imm = 0x200
68938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setl %al
69038c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
69138c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
69238c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
69338c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
69438c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
69538c68e07SSimon Pilgrim  %ld = load i16, ptr %p0
69638c68e07SSimon Pilgrim  %cmp = icmp slt i16 %ld, 512
69738c68e07SSimon Pilgrim  ret i1 %cmp
69838c68e07SSimon Pilgrim}
69938c68e07SSimon Pilgrim
70038c68e07SSimon Pilgrimdefine i1 @cmp16_load_slt_imm16_minsize(ptr %p0) minsize {
70138c68e07SSimon Pilgrim; X86-LABEL: cmp16_load_slt_imm16_minsize:
70238c68e07SSimon Pilgrim; X86:       # %bb.0:
70338c68e07SSimon Pilgrim; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
70438c68e07SSimon Pilgrim; X86-NEXT:    cmpw $512, (%eax) # imm = 0x200
70538c68e07SSimon Pilgrim; X86-NEXT:    setl %al
70638c68e07SSimon Pilgrim; X86-NEXT:    retl
70738c68e07SSimon Pilgrim;
70838c68e07SSimon Pilgrim; X64-LABEL: cmp16_load_slt_imm16_minsize:
70938c68e07SSimon Pilgrim; X64:       # %bb.0:
71038c68e07SSimon Pilgrim; X64-NEXT:    cmpw $512, (%rdi) # imm = 0x200
71138c68e07SSimon Pilgrim; X64-NEXT:    setl %al
71238c68e07SSimon Pilgrim; X64-NEXT:    retq
71338c68e07SSimon Pilgrim  %ld = load i16, ptr %p0
71438c68e07SSimon Pilgrim  %cmp = icmp slt i16 %ld, 512
71538c68e07SSimon Pilgrim  ret i1 %cmp
71638c68e07SSimon Pilgrim}
71738c68e07SSimon Pilgrim
71838c68e07SSimon Pilgrimdefine i1 @cmp16_load_slt_imm16_optsize(ptr %p0) optsize {
719e2d74a25SSimon Pilgrim; X86-LABEL: cmp16_load_slt_imm16_optsize:
720e2d74a25SSimon Pilgrim; X86:       # %bb.0:
721e2d74a25SSimon Pilgrim; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
722e2d74a25SSimon Pilgrim; X86-NEXT:    cmpw $512, (%eax) # imm = 0x200
723e2d74a25SSimon Pilgrim; X86-NEXT:    setl %al
724e2d74a25SSimon Pilgrim; X86-NEXT:    retl
72538c68e07SSimon Pilgrim;
726e2d74a25SSimon Pilgrim; X64-LABEL: cmp16_load_slt_imm16_optsize:
727e2d74a25SSimon Pilgrim; X64:       # %bb.0:
728e2d74a25SSimon Pilgrim; X64-NEXT:    cmpw $512, (%rdi) # imm = 0x200
729e2d74a25SSimon Pilgrim; X64-NEXT:    setl %al
730e2d74a25SSimon Pilgrim; X64-NEXT:    retq
73138c68e07SSimon Pilgrim  %ld = load i16, ptr %p0
73238c68e07SSimon Pilgrim  %cmp = icmp slt i16 %ld, 512
73338c68e07SSimon Pilgrim  ret i1 %cmp
73438c68e07SSimon Pilgrim}
73538c68e07SSimon Pilgrim
73638c68e07SSimon Pilgrimdefine i1 @cmp16_load_ule_imm8(ptr %p0) {
73738c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_load_ule_imm8:
73838c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
73938c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
74038c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw $16, (%eax)
74138c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    setb %al
74238c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
74338c68e07SSimon Pilgrim;
74438c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_load_ule_imm8:
74538c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
74638c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    cmpw $16, (%rdi)
74738c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setb %al
74838c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
74938c68e07SSimon Pilgrim;
750d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_load_ule_imm8:
751d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
752d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    movl {{[0-9]+}}(%esp), %eax
753d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw $16, (%eax)
754d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    setb %al
755d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
756d838e5b3SSimon Pilgrim;
757d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_load_ule_imm8:
758d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
759d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $16, (%rdi)
760d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setb %al
761d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
762d838e5b3SSimon Pilgrim;
76338c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_load_ule_imm8:
76438c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
76538c68e07SSimon Pilgrim; X86-ATOM-NEXT:    movl {{[0-9]+}}(%esp), %eax
76638c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw $16, (%eax)
76738c68e07SSimon Pilgrim; X86-ATOM-NEXT:    setb %al
76838c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
76938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
77038c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
77138c68e07SSimon Pilgrim;
77238c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_load_ule_imm8:
77338c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
77438c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $16, (%rdi)
77538c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setb %al
77638c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
77738c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
77838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
77938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
78038c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
78138c68e07SSimon Pilgrim  %ld = load i16, ptr %p0
78238c68e07SSimon Pilgrim  %cmp = icmp ule i16 %ld, 15
78338c68e07SSimon Pilgrim  ret i1 %cmp
78438c68e07SSimon Pilgrim}
78538c68e07SSimon Pilgrim
78638c68e07SSimon Pilgrimdefine i1 @cmp16_load_ule_imm16(ptr %p0) {
78738c68e07SSimon Pilgrim; X86-GENERIC-LABEL: cmp16_load_ule_imm16:
78838c68e07SSimon Pilgrim; X86-GENERIC:       # %bb.0:
78938c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    movl {{[0-9]+}}(%esp), %eax
790e2d74a25SSimon Pilgrim; X86-GENERIC-NEXT:    cmpw $513, (%eax) # imm = 0x201
79138c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    setb %al
79238c68e07SSimon Pilgrim; X86-GENERIC-NEXT:    retl
79338c68e07SSimon Pilgrim;
79438c68e07SSimon Pilgrim; X64-GENERIC-LABEL: cmp16_load_ule_imm16:
79538c68e07SSimon Pilgrim; X64-GENERIC:       # %bb.0:
796e2d74a25SSimon Pilgrim; X64-GENERIC-NEXT:    cmpw $513, (%rdi) # imm = 0x201
79738c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    setb %al
79838c68e07SSimon Pilgrim; X64-GENERIC-NEXT:    retq
79938c68e07SSimon Pilgrim;
800d838e5b3SSimon Pilgrim; X86-FAST-LABEL: cmp16_load_ule_imm16:
801d838e5b3SSimon Pilgrim; X86-FAST:       # %bb.0:
802d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    movl {{[0-9]+}}(%esp), %eax
803d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    cmpw $513, (%eax) # imm = 0x201
804d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    setb %al
805d838e5b3SSimon Pilgrim; X86-FAST-NEXT:    retl
806d838e5b3SSimon Pilgrim;
807d838e5b3SSimon Pilgrim; X64-FAST-LABEL: cmp16_load_ule_imm16:
808d838e5b3SSimon Pilgrim; X64-FAST:       # %bb.0:
809d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    cmpw $513, (%rdi) # imm = 0x201
810d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    setb %al
811d838e5b3SSimon Pilgrim; X64-FAST-NEXT:    retq
812d838e5b3SSimon Pilgrim;
81338c68e07SSimon Pilgrim; X86-ATOM-LABEL: cmp16_load_ule_imm16:
81438c68e07SSimon Pilgrim; X86-ATOM:       # %bb.0:
81538c68e07SSimon Pilgrim; X86-ATOM-NEXT:    movl {{[0-9]+}}(%esp), %eax
81638c68e07SSimon Pilgrim; X86-ATOM-NEXT:    cmpw $513, (%eax) # imm = 0x201
81738c68e07SSimon Pilgrim; X86-ATOM-NEXT:    setb %al
81838c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
81938c68e07SSimon Pilgrim; X86-ATOM-NEXT:    nop
82038c68e07SSimon Pilgrim; X86-ATOM-NEXT:    retl
82138c68e07SSimon Pilgrim;
82238c68e07SSimon Pilgrim; X64-ATOM-LABEL: cmp16_load_ule_imm16:
82338c68e07SSimon Pilgrim; X64-ATOM:       # %bb.0:
82438c68e07SSimon Pilgrim; X64-ATOM-NEXT:    cmpw $513, (%rdi) # imm = 0x201
82538c68e07SSimon Pilgrim; X64-ATOM-NEXT:    setb %al
82638c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
82738c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
82838c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
82938c68e07SSimon Pilgrim; X64-ATOM-NEXT:    nop
83038c68e07SSimon Pilgrim; X64-ATOM-NEXT:    retq
83138c68e07SSimon Pilgrim  %ld = load i16, ptr %p0
83238c68e07SSimon Pilgrim  %cmp = icmp ule i16 %ld, 512
83338c68e07SSimon Pilgrim  ret i1 %cmp
83438c68e07SSimon Pilgrim}
83538c68e07SSimon Pilgrim
83638c68e07SSimon Pilgrimdefine i1 @cmp16_load_ule_imm16_minsize(ptr %p0) minsize {
83738c68e07SSimon Pilgrim; X86-LABEL: cmp16_load_ule_imm16_minsize:
83838c68e07SSimon Pilgrim; X86:       # %bb.0:
83938c68e07SSimon Pilgrim; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
84038c68e07SSimon Pilgrim; X86-NEXT:    cmpw $513, (%eax) # imm = 0x201
84138c68e07SSimon Pilgrim; X86-NEXT:    setb %al
84238c68e07SSimon Pilgrim; X86-NEXT:    retl
84338c68e07SSimon Pilgrim;
84438c68e07SSimon Pilgrim; X64-LABEL: cmp16_load_ule_imm16_minsize:
84538c68e07SSimon Pilgrim; X64:       # %bb.0:
84638c68e07SSimon Pilgrim; X64-NEXT:    cmpw $513, (%rdi) # imm = 0x201
84738c68e07SSimon Pilgrim; X64-NEXT:    setb %al
84838c68e07SSimon Pilgrim; X64-NEXT:    retq
84938c68e07SSimon Pilgrim  %ld = load i16, ptr %p0
85038c68e07SSimon Pilgrim  %cmp = icmp ule i16 %ld, 512
85138c68e07SSimon Pilgrim  ret i1 %cmp
85238c68e07SSimon Pilgrim}
85338c68e07SSimon Pilgrim
85438c68e07SSimon Pilgrimdefine i1 @cmp16_load_ule_imm16_optsize(ptr %p0) optsize {
855e2d74a25SSimon Pilgrim; X86-LABEL: cmp16_load_ule_imm16_optsize:
856e2d74a25SSimon Pilgrim; X86:       # %bb.0:
857e2d74a25SSimon Pilgrim; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
858e2d74a25SSimon Pilgrim; X86-NEXT:    cmpw $513, (%eax) # imm = 0x201
859e2d74a25SSimon Pilgrim; X86-NEXT:    setb %al
860e2d74a25SSimon Pilgrim; X86-NEXT:    retl
86138c68e07SSimon Pilgrim;
862e2d74a25SSimon Pilgrim; X64-LABEL: cmp16_load_ule_imm16_optsize:
863e2d74a25SSimon Pilgrim; X64:       # %bb.0:
864e2d74a25SSimon Pilgrim; X64-NEXT:    cmpw $513, (%rdi) # imm = 0x201
865e2d74a25SSimon Pilgrim; X64-NEXT:    setb %al
866e2d74a25SSimon Pilgrim; X64-NEXT:    retq
86738c68e07SSimon Pilgrim  %ld = load i16, ptr %p0
86838c68e07SSimon Pilgrim  %cmp = icmp ule i16 %ld, 512
86938c68e07SSimon Pilgrim  ret i1 %cmp
87038c68e07SSimon Pilgrim}
871