brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · 431aaef Raw
111 lines · plain
1; RUN: llc -O2 --mtriple=bpfel \2; RUN:   -print-after=stack-slot-coloring %s \3; RUN:   -o /dev/null 2>&1 | FileCheck %s4 5; Generated from the following C code:6;7;   #define __bpf_fastcall __attribute__((bpf_fastcall))8;9;   void bar1(void) __bpf_fastcall;10;   void buz1(long i, long j, long k);11;   void foo1(long i, long j, long k) {12;     bar1();13;     buz1(i, j, k);14;   }15;16;   long bar2(void) __bpf_fastcall;17;   void buz2(long i, long j, long k);18;   void foo2(long i, long j, long k) {19;     bar2();20;     buz2(i, j, k);21;   }22;23;   void bar3(long) __bpf_fastcall;24;   void buz3(long i, long j, long k);25;   void foo3(long i, long j, long k) {26;     bar3(i);27;     buz3(i, j, k);28;   }29;30;   long bar4(long, long) __bpf_fastcall;31;   void buz4(long i, long j, long k);32;   void foo4(long i, long j, long k) {33;     bar4(i, j);34;     buz4(i, j, k);35;   }36;37; Using the following command:38;39;   clang --target=bpf -emit-llvm -O2 -S -o - t.c40;41; (unnecessary attrs removed maually)42 43; Check regmask for calls to functions marked with bpf_fastcall:44; - void function w/o parameters45; - non-void function w/o parameters46; - void function with parameters47; - non-void function with parameters48 49declare dso_local void @bar1() #050declare dso_local void @buz1(i64 noundef, i64 noundef, i64 noundef)51define dso_local void @foo1(i64 noundef %i, i64 noundef %j, i64 noundef %k) {52entry:53  tail call void @bar1() #154  tail call void @buz1(i64 noundef %i, i64 noundef %j, i64 noundef %k)55  ret void56}57 58; CHECK:      JAL @bar1, <regmask $r0 $r1 $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r1059; CHECK-SAME:                     $w0 $w1 $w2 $w3 $w4 $w5 $w6 $w7 $w8 $w9 $w10>60; CHECK-SAME:          , implicit $r11, implicit-def $r1161; CHECK:      JAL @buz1, <regmask $r6 $r7 $r8 $r9 $r10 $w6 $w7 $w8 $w9 $w10>62; CHECK-SAME:          , implicit $r11, implicit $r1, implicit $r2, implicit $r3, implicit-def $r1163 64declare dso_local i64 @bar2() #065declare dso_local void @buz2(i64 noundef, i64 noundef, i64 noundef)66define dso_local void @foo2(i64 noundef %i, i64 noundef %j, i64 noundef %k) {67entry:68  tail call i64 @bar2() #169  tail call void @buz2(i64 noundef %i, i64 noundef %j, i64 noundef %k)70  ret void71}72 73; CHECK:      JAL @bar2, <regmask $r1 $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r1074; CHECK-SAME:                     $w1 $w2 $w3 $w4 $w5 $w6 $w7 $w8 $w9 $w10>75; CHECK-SAME:          , implicit $r11, implicit-def $r11, implicit-def dead $r076; CHECK:      JAL @buz2, <regmask $r6 $r7 $r8 $r9 $r10 $w6 $w7 $w8 $w9 $w10>77; CHECK-SAME:          , implicit $r11, implicit $r1, implicit $r2, implicit $r3, implicit-def $r1178 79declare dso_local void @bar3(i64) #080declare dso_local void @buz3(i64 noundef, i64 noundef, i64 noundef)81define dso_local void @foo3(i64 noundef %i, i64 noundef %j, i64 noundef %k) {82entry:83  tail call void @bar3(i64 noundef %i) #184  tail call void @buz3(i64 noundef %i, i64 noundef %j, i64 noundef %k)85  ret void86}87 88; CHECK:      JAL @bar3, <regmask $r0 $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r1089; CHECK-SAME:                     $w0 $w2 $w3 $w4 $w5 $w6 $w7 $w8 $w9 $w10>90; CHECK-SAME:          , implicit $r11, implicit $r1, implicit-def $r1191; CHECK:      JAL @buz3, <regmask $r6 $r7 $r8 $r9 $r10 $w6 $w7 $w8 $w9 $w10>92; CHECK-SAME:          , implicit $r11, implicit $r1, implicit $r2, implicit $r3, implicit-def $r1193 94declare dso_local i64 @bar4(i64 noundef, i64 noundef) #095declare dso_local void @buz4(i64 noundef, i64 noundef, i64 noundef)96define dso_local void @foo4(i64 noundef %i, i64 noundef %j, i64 noundef %k) {97entry:98  tail call i64 @bar4(i64 noundef %i, i64 noundef %j) #199  tail call void @buz4(i64 noundef %i, i64 noundef %j, i64 noundef %k)100  ret void101}102 103; CHECK:      JAL @bar4, <regmask $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10104; CHECK-SAME:                     $w3 $w4 $w5 $w6 $w7 $w8 $w9 $w10>105; CHECK-SAME:          , implicit $r11, implicit $r1, implicit $r2, implicit-def $r11, implicit-def dead $r0106; CHECK:      JAL @buz4, <regmask $r6 $r7 $r8 $r9 $r10 $w6 $w7 $w8 $w9 $w10>107; CHECK-SAME:          , implicit $r11, implicit $r1, implicit $r2, implicit $r3, implicit-def $r11108 109attributes #0 = { "bpf_fastcall" }110attributes #1 = { nounwind "bpf_fastcall" }111