brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · b04dae6 Raw
69 lines · plain
1; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s2 3define i64 @f1(i64 %a, i64 %b) {4; CHECK: f15; CHECK: subs r0, r0, r26    %tmp = sub i64 %a, %b7    ret i64 %tmp8}9 10; 734439407618 = 0x000000ab0000000211define i64 @f2(i64 %a) {12; CHECK: f213; CHECK: subs r0, #214; CHECK: sbc r1, r1, #17115    %tmp = sub i64 %a, 73443940761816    ret i64 %tmp17}18 19; 5066626890203138 = 0x001200120000000220define i64 @f3(i64 %a) {21; CHECK: f322; CHECK: subs  r0, #223; CHECK: sbc r1, r1, #117966624    %tmp = sub i64 %a, 506662689020313825    ret i64 %tmp26}27 28; 3747052064576897026 = 0x340034000000000229define i64 @f4(i64 %a) {30; CHECK: f431; CHECK: subs  r0, #232; CHECK: sbc r1, r1, #87242854433    %tmp = sub i64 %a, 374705206457689702634    ret i64 %tmp35}36 37; 6221254862626095106 = 0x565656560000000238define i64 @f5(i64 %a) {39; CHECK: f540; CHECK: subs  r0, #241; CHECK: adc r1, r1, #-144849877542    %tmp = sub i64 %a, 622125486262609510643    ret i64 %tmp44}45 46; 287104476244869122 = 0x03fc00000000000247define i64 @f6(i64 %a) {48; CHECK: f649; CHECK: subs  r0, #250; CHECK: sbc r1, r1, #6684672051    %tmp = sub i64 %a, 28710447624486912252    ret i64 %tmp53}54 55; Example from numerics code that manually computes wider-than-64 values.56;57; CHECK-LABEL: livecarry:58; CHECK: adds59; CHECK: adc60define i64 @livecarry(i64 %carry, i32 %digit) nounwind {61  %ch = lshr i64 %carry, 3262  %cl = and i64 %carry, 429496729563  %truncdigit = zext i32 %digit to i6464  %prod = add i64 %cl, %truncdigit65  %ph = lshr i64 %prod, 3266  %carryresult = add i64 %ch, %ph67  ret i64 %carryresult68}69