brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 6d1529d Raw
88 lines · plain
1; RUN: llc < %s -mtriple=bpf -mcpu=v2 -verify-machineinstrs | FileCheck %s2;3; Source file:4; int b, c;5; int test() {6;   int a = b;7;   if (a)8;     a = c;9;   return a;10; }11@b = common local_unnamed_addr global i32 0, align 412@c = common local_unnamed_addr global i32 0, align 413 14; Function Attrs: norecurse nounwind readonly15define i32 @test() local_unnamed_addr #0 {16entry:17  %0 = load i32, ptr @b, align 418  %tobool = icmp eq i32 %0, 019  %1 = load i32, ptr @c, align 420  %. = select i1 %tobool, i32 0, i32 %121; CHECK:  r1 = b22; CHECK:  r1 = *(u32 *)(r1 + 0)23; CHECK:  if r1 == 0 goto24  ret i32 %.25}26 27attributes #0 = { norecurse nounwind readonly }28 29; test immediate out of 32-bit range30; Source file:31 32; unsigned long long33; load_word(ptr buf, unsigned long long off)34; asm("llvm.bpf.load.word");35;36; int37; foo(ptr buf)38; {39;  unsigned long long sum = 0;40;41;  sum += load_word(buf, 100);42;  sum += load_word(buf, 104);43;44;  if (sum != 0x1ffffffffULL)45;    return ~0U;46;47;  return 0;48;}49 50; Function Attrs: nounwind readonly51define i32 @foo(ptr) local_unnamed_addr #0 {52  %2 = tail call i64 @llvm.bpf.load.word(ptr %0, i64 100)53  %3 = tail call i64 @llvm.bpf.load.word(ptr %0, i64 104)54  %4 = add i64 %3, %255  %5 = icmp ne i64 %4, 858993459156; CHECK:  r{{[0-9]+}} = 8589934591 ll57  %6 = sext i1 %5 to i3258  ret i32 %659}60 61; Function Attrs: nounwind readonly62declare i64 @llvm.bpf.load.word(ptr, i64) #163 64; Source file:65; int m, n;66; int test2() {67;   int a = m;68;   if (a < 6)69;     a = n;70;   return a;71; }72 73@m = common local_unnamed_addr global i32 0, align 474@n = common local_unnamed_addr global i32 0, align 475 76; Function Attrs: norecurse nounwind readonly77define i32 @test2() local_unnamed_addr #0 {78entry:79  %0 = load i32, ptr @m, align 480  %cmp = icmp slt i32 %0, 681; CHECK:  if r{{[0-9]+}} s{{<|>}} 6 goto82  %1 = load i32, ptr @n, align 483  %spec.select = select i1 %cmp, i32 %1, i32 %084  ret i32 %spec.select85}86 87attributes #0 = { norecurse nounwind readonly }88