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