brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 89abe28 Raw
112 lines · plain
1; RUN: llc -mtriple=arm-eabi -mattr=+v6 %s -o - | FileCheck %s2 3; CHECK: test14; CHECK: pkhbt   r0, r0, r1, lsl #165define i32 @test1(i32 %X, i32 %Y) {6	%tmp1 = and i32 %X, 655357	%tmp4 = shl i32 %Y, 168	%tmp5 = or i32 %tmp4, %tmp19	ret i32 %tmp510}11 12; CHECK: test213; CHECK: pkhbt   r0, r0, r1, lsl #1214define i32 @test2(i32 %X, i32 %Y) {15	%tmp1 = and i32 %X, 6553516	%tmp3 = shl i32 %Y, 1217	%tmp4 = and i32 %tmp3, -6553618	%tmp57 = or i32 %tmp4, %tmp119	ret i32 %tmp5720}21 22; CHECK: test323; CHECK: pkhbt   r0, r0, r1, lsl #1824define i32 @test3(i32 %X, i32 %Y) {25	%tmp19 = and i32 %X, 6553526	%tmp37 = shl i32 %Y, 1827	%tmp5 = or i32 %tmp37, %tmp1928	ret i32 %tmp529}30 31; CHECK: test432; CHECK: pkhbt   r0, r0, r133define i32 @test4(i32 %X, i32 %Y) {34	%tmp1 = and i32 %X, 6553535	%tmp3 = and i32 %Y, -6553636	%tmp46 = or i32 %tmp3, %tmp137	ret i32 %tmp4638}39 40; CHECK: test541; CHECK: pkhtb   r0, r0, r1, asr #1642define i32 @test5(i32 %X, i32 %Y) {43	%tmp17 = and i32 %X, -6553644	%tmp2 = bitcast i32 %Y to i3245	%tmp4 = lshr i32 %tmp2, 1646	%tmp5 = or i32 %tmp4, %tmp1747	ret i32 %tmp548}49 50; CHECK: test5a51; CHECK: pkhtb   r0, r0, r1, asr #1652define i32 @test5a(i32 %X, i32 %Y) {53	%tmp110 = and i32 %X, -6553654	%tmp37 = lshr i32 %Y, 1655	%tmp39 = bitcast i32 %tmp37 to i3256	%tmp5 = or i32 %tmp39, %tmp11057	ret i32 %tmp558}59 60; CHECK: test661; CHECK: pkhtb   r0, r0, r1, asr #1262define i32 @test6(i32 %X, i32 %Y) {63	%tmp1 = and i32 %X, -6553664	%tmp37 = lshr i32 %Y, 1265	%tmp38 = bitcast i32 %tmp37 to i3266	%tmp4 = and i32 %tmp38, 6553567	%tmp59 = or i32 %tmp4, %tmp168	ret i32 %tmp5969}70 71; CHECK: test772; CHECK: pkhtb   r0, r0, r1, asr #1873define i32 @test7(i32 %X, i32 %Y) {74	%tmp1 = and i32 %X, -6553675	%tmp3 = ashr i32 %Y, 1876	%tmp4 = and i32 %tmp3, 6553577	%tmp57 = or i32 %tmp4, %tmp178	ret i32 %tmp5779}80 81; Arithmetic and logic right shift does not have the same semantics if shifting82; by more than 16 in this context.83 84; CHECK: test885; CHECK-NOT: pkhtb   r0, r0, r1, asr #2286define i32 @test8(i32 %X, i32 %Y) {87	%tmp1 = and i32 %X, -6553688	%tmp3 = lshr i32 %Y, 2289	%tmp57 = or i32 %tmp3, %tmp190	ret i32 %tmp5791}92 93; CHECK-LABEL: test9:94; CHECK: pkhtb r0, r0, r1, asr #1695define i32 @test9(i32 %src1, i32 %src2) {96entry:97    %tmp = and i32 %src1, -6553698    %tmp2 = lshr i32 %src2, 1699    %tmp3 = or i32 %tmp, %tmp2100    ret i32 %tmp3101}102 103; CHECK-LABEL: test10:104; CHECK: pkhtb r0, r0, r1, asr #17105define i32 @test10(i32 %src1, i32 %src2) {106entry:107    %tmp = and i32 %src1, -65536108    %tmp2 = ashr i32 %src2, 17109    %tmp3 = or i32 %tmp, %tmp2110    ret i32 %tmp3111}112