xref: /llvm-project/llvm/test/CodeGen/ARM/scmp.ll (revision e094abde42634e38cda85a6024792f681fc58f32)
1*e094abdeSVolodymyr Vasylkun; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2*e094abdeSVolodymyr Vasylkun; RUN: llc -mtriple=armv7-unknown-eabi %s -o - | FileCheck %s
3*e094abdeSVolodymyr Vasylkun
4*e094abdeSVolodymyr Vasylkundefine i8 @scmp_8_8(i8 signext %x, i8 signext %y) nounwind {
5*e094abdeSVolodymyr Vasylkun; CHECK-LABEL: scmp_8_8:
6*e094abdeSVolodymyr Vasylkun; CHECK:       @ %bb.0:
7*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    cmp r0, r1
8*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r0, #0
9*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r2, #0
10*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt r0, #1
11*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwgt r2, #1
12*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sub r0, r2, r0
13*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    bx lr
14*e094abdeSVolodymyr Vasylkun  %1 = call i8 @llvm.scmp(i8 %x, i8 %y)
15*e094abdeSVolodymyr Vasylkun  ret i8 %1
16*e094abdeSVolodymyr Vasylkun}
17*e094abdeSVolodymyr Vasylkun
18*e094abdeSVolodymyr Vasylkundefine i8 @scmp_8_16(i16 signext %x, i16 signext %y) nounwind {
19*e094abdeSVolodymyr Vasylkun; CHECK-LABEL: scmp_8_16:
20*e094abdeSVolodymyr Vasylkun; CHECK:       @ %bb.0:
21*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    cmp r0, r1
22*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r0, #0
23*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r2, #0
24*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt r0, #1
25*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwgt r2, #1
26*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sub r0, r2, r0
27*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    bx lr
28*e094abdeSVolodymyr Vasylkun  %1 = call i8 @llvm.scmp(i16 %x, i16 %y)
29*e094abdeSVolodymyr Vasylkun  ret i8 %1
30*e094abdeSVolodymyr Vasylkun}
31*e094abdeSVolodymyr Vasylkun
32*e094abdeSVolodymyr Vasylkundefine i8 @scmp_8_32(i32 %x, i32 %y) nounwind {
33*e094abdeSVolodymyr Vasylkun; CHECK-LABEL: scmp_8_32:
34*e094abdeSVolodymyr Vasylkun; CHECK:       @ %bb.0:
35*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    cmp r0, r1
36*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r0, #0
37*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r2, #0
38*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt r0, #1
39*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwgt r2, #1
40*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sub r0, r2, r0
41*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    bx lr
42*e094abdeSVolodymyr Vasylkun  %1 = call i8 @llvm.scmp(i32 %x, i32 %y)
43*e094abdeSVolodymyr Vasylkun  ret i8 %1
44*e094abdeSVolodymyr Vasylkun}
45*e094abdeSVolodymyr Vasylkun
46*e094abdeSVolodymyr Vasylkundefine i8 @scmp_8_64(i64 %x, i64 %y) nounwind {
47*e094abdeSVolodymyr Vasylkun; CHECK-LABEL: scmp_8_64:
48*e094abdeSVolodymyr Vasylkun; CHECK:       @ %bb.0:
49*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    .save {r11, lr}
50*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    push {r11, lr}
51*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    subs lr, r0, r2
52*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r12, #0
53*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs lr, r1, r3
54*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov lr, #0
55*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt lr, #1
56*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    subs r0, r2, r0
57*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs r0, r3, r1
58*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt r12, #1
59*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sub r0, r12, lr
60*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    pop {r11, pc}
61*e094abdeSVolodymyr Vasylkun  %1 = call i8 @llvm.scmp(i64 %x, i64 %y)
62*e094abdeSVolodymyr Vasylkun  ret i8 %1
63*e094abdeSVolodymyr Vasylkun}
64*e094abdeSVolodymyr Vasylkun
65*e094abdeSVolodymyr Vasylkundefine i8 @scmp_8_128(i128 %x, i128 %y) nounwind {
66*e094abdeSVolodymyr Vasylkun; CHECK-LABEL: scmp_8_128:
67*e094abdeSVolodymyr Vasylkun; CHECK:       @ %bb.0:
68*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    .save {r4, r5, r6, r7, r11, lr}
69*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    push {r4, r5, r6, r7, r11, lr}
70*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    ldr r4, [sp, #24]
71*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r5, #0
72*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    ldr r6, [sp, #28]
73*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    subs r7, r0, r4
74*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    ldr r12, [sp, #32]
75*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs r7, r1, r6
76*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    ldr lr, [sp, #36]
77*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs r7, r2, r12
78*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs r7, r3, lr
79*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r7, #0
80*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt r7, #1
81*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    subs r0, r4, r0
82*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs r0, r6, r1
83*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs r0, r12, r2
84*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs r0, lr, r3
85*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt r5, #1
86*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sub r0, r5, r7
87*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    pop {r4, r5, r6, r7, r11, pc}
88*e094abdeSVolodymyr Vasylkun  %1 = call i8 @llvm.scmp(i128 %x, i128 %y)
89*e094abdeSVolodymyr Vasylkun  ret i8 %1
90*e094abdeSVolodymyr Vasylkun}
91*e094abdeSVolodymyr Vasylkun
92*e094abdeSVolodymyr Vasylkundefine i32 @scmp_32_32(i32 %x, i32 %y) nounwind {
93*e094abdeSVolodymyr Vasylkun; CHECK-LABEL: scmp_32_32:
94*e094abdeSVolodymyr Vasylkun; CHECK:       @ %bb.0:
95*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    cmp r0, r1
96*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r0, #0
97*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r2, #0
98*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt r0, #1
99*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwgt r2, #1
100*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sub r0, r2, r0
101*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    bx lr
102*e094abdeSVolodymyr Vasylkun  %1 = call i32 @llvm.scmp(i32 %x, i32 %y)
103*e094abdeSVolodymyr Vasylkun  ret i32 %1
104*e094abdeSVolodymyr Vasylkun}
105*e094abdeSVolodymyr Vasylkun
106*e094abdeSVolodymyr Vasylkundefine i32 @scmp_32_64(i64 %x, i64 %y) nounwind {
107*e094abdeSVolodymyr Vasylkun; CHECK-LABEL: scmp_32_64:
108*e094abdeSVolodymyr Vasylkun; CHECK:       @ %bb.0:
109*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    .save {r11, lr}
110*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    push {r11, lr}
111*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    subs lr, r0, r2
112*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r12, #0
113*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs lr, r1, r3
114*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov lr, #0
115*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt lr, #1
116*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    subs r0, r2, r0
117*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs r0, r3, r1
118*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt r12, #1
119*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sub r0, r12, lr
120*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    pop {r11, pc}
121*e094abdeSVolodymyr Vasylkun  %1 = call i32 @llvm.scmp(i64 %x, i64 %y)
122*e094abdeSVolodymyr Vasylkun  ret i32 %1
123*e094abdeSVolodymyr Vasylkun}
124*e094abdeSVolodymyr Vasylkun
125*e094abdeSVolodymyr Vasylkundefine i64 @scmp_64_64(i64 %x, i64 %y) nounwind {
126*e094abdeSVolodymyr Vasylkun; CHECK-LABEL: scmp_64_64:
127*e094abdeSVolodymyr Vasylkun; CHECK:       @ %bb.0:
128*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    .save {r11, lr}
129*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    push {r11, lr}
130*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    subs lr, r0, r2
131*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov r12, #0
132*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs lr, r1, r3
133*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    mov lr, #0
134*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt lr, #1
135*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    subs r0, r2, r0
136*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sbcs r0, r3, r1
137*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    movwlt r12, #1
138*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    sub r0, r12, lr
139*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    asr r1, r0, #31
140*e094abdeSVolodymyr Vasylkun; CHECK-NEXT:    pop {r11, pc}
141*e094abdeSVolodymyr Vasylkun  %1 = call i64 @llvm.scmp(i64 %x, i64 %y)
142*e094abdeSVolodymyr Vasylkun  ret i64 %1
143*e094abdeSVolodymyr Vasylkun}
144