@@ -39,14 +39,19 @@ entry:
3939define void @truncated (i16 %a , ptr %p ) {
4040; CHECK-T1-LABEL: truncated:
4141; CHECK-T1: @ %bb.0:
42- ; CHECK-T1-NEXT: movs r2, #128
43- ; CHECK-T1-NEXT: bics r0, r2
44- ; CHECK-T1-NEXT: strh r0 , [r1]
42+ ; CHECK-T1-NEXT: ldr r2, .LCPI2_0
43+ ; CHECK-T1-NEXT: ands r2, r0
44+ ; CHECK-T1-NEXT: strh r2 , [r1]
4545; CHECK-T1-NEXT: bx lr
46+ ; CHECK-T1-NEXT: .p2align 2
47+ ; CHECK-T1-NEXT: @ %bb.1:
48+ ; CHECK-T1-NEXT: .LCPI2_0:
49+ ; CHECK-T1-NEXT: .long 65407 @ 0xff7f
4650;
4751; CHECK-T2-LABEL: truncated:
4852; CHECK-T2: @ %bb.0:
49- ; CHECK-T2-NEXT: bic r0, r0, #128
53+ ; CHECK-T2-NEXT: movw r2, #65407
54+ ; CHECK-T2-NEXT: ands r0, r2
5055; CHECK-T2-NEXT: strh r0, [r1]
5156; CHECK-T2-NEXT: bx lr
5257 %and = and i16 %a , -129
@@ -57,14 +62,19 @@ define void @truncated(i16 %a, ptr %p) {
5762define void @truncated_neg2 (i16 %a , ptr %p ) {
5863; CHECK-T1-LABEL: truncated_neg2:
5964; CHECK-T1: @ %bb.0:
60- ; CHECK-T1-NEXT: movs r2, #1
61- ; CHECK-T1-NEXT: bics r0, r2
62- ; CHECK-T1-NEXT: strh r0 , [r1]
65+ ; CHECK-T1-NEXT: ldr r2, .LCPI3_0
66+ ; CHECK-T1-NEXT: ands r2, r0
67+ ; CHECK-T1-NEXT: strh r2 , [r1]
6368; CHECK-T1-NEXT: bx lr
69+ ; CHECK-T1-NEXT: .p2align 2
70+ ; CHECK-T1-NEXT: @ %bb.1:
71+ ; CHECK-T1-NEXT: .LCPI3_0:
72+ ; CHECK-T1-NEXT: .long 65534 @ 0xfffe
6473;
6574; CHECK-T2-LABEL: truncated_neg2:
6675; CHECK-T2: @ %bb.0:
67- ; CHECK-T2-NEXT: bic r0, r0, #1
76+ ; CHECK-T2-NEXT: movw r2, #65534
77+ ; CHECK-T2-NEXT: ands r0, r2
6878; CHECK-T2-NEXT: strh r0, [r1]
6979; CHECK-T2-NEXT: bx lr
7080 %and = and i16 %a , -2
@@ -76,13 +86,14 @@ define void @truncated_neg256(i16 %a, ptr %p) {
7686; CHECK-T1-LABEL: truncated_neg256:
7787; CHECK-T1: @ %bb.0:
7888; CHECK-T1-NEXT: movs r2, #255
79- ; CHECK-T1-NEXT: bics r0, r2
80- ; CHECK-T1-NEXT: strh r0, [r1]
89+ ; CHECK-T1-NEXT: lsls r2, r2, #8
90+ ; CHECK-T1-NEXT: ands r2, r0
91+ ; CHECK-T1-NEXT: strh r2, [r1]
8192; CHECK-T1-NEXT: bx lr
8293;
8394; CHECK-T2-LABEL: truncated_neg256:
8495; CHECK-T2: @ %bb.0:
85- ; CHECK-T2-NEXT: bic r0, r0, #255
96+ ; CHECK-T2-NEXT: and r0, r0, #65280
8697; CHECK-T2-NEXT: strh r0, [r1]
8798; CHECK-T2-NEXT: bx lr
8899 %and = and i16 %a , -256
0 commit comments