1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=bpf -mcpu=v1 -- | FileCheck %s 3 4%struct.event = type { i8, [84 x i8] } 5 6define void @foo(ptr %g) { 7; CHECK-LABEL: foo: 8; CHECK: # %bb.0: # %entry 9; CHECK-NEXT: r1 = *(u64 *)(r1 + 0) 10; CHECK-NEXT: r2 = *(u8 *)(r1 + 83) 11; CHECK-NEXT: *(u8 *)(r10 - 4) = r2 12; CHECK-NEXT: r2 = *(u8 *)(r1 + 82) 13; CHECK-NEXT: *(u8 *)(r10 - 5) = r2 14; CHECK-NEXT: r2 = *(u8 *)(r1 + 81) 15; CHECK-NEXT: *(u8 *)(r10 - 6) = r2 16; CHECK-NEXT: r2 = *(u8 *)(r1 + 80) 17; CHECK-NEXT: *(u8 *)(r10 - 7) = r2 18; CHECK-NEXT: r2 = *(u8 *)(r1 + 79) 19; CHECK-NEXT: *(u8 *)(r10 - 8) = r2 20; CHECK-NEXT: r2 = *(u8 *)(r1 + 78) 21; CHECK-NEXT: *(u8 *)(r10 - 9) = r2 22; CHECK-NEXT: r2 = *(u8 *)(r1 + 77) 23; CHECK-NEXT: *(u8 *)(r10 - 10) = r2 24; CHECK-NEXT: r2 = *(u8 *)(r1 + 76) 25; CHECK-NEXT: *(u8 *)(r10 - 11) = r2 26; CHECK-NEXT: r2 = *(u8 *)(r1 + 75) 27; CHECK-NEXT: *(u8 *)(r10 - 12) = r2 28; CHECK-NEXT: r2 = *(u8 *)(r1 + 74) 29; CHECK-NEXT: *(u8 *)(r10 - 13) = r2 30; CHECK-NEXT: r2 = *(u8 *)(r1 + 73) 31; CHECK-NEXT: *(u8 *)(r10 - 14) = r2 32; CHECK-NEXT: r2 = *(u8 *)(r1 + 72) 33; CHECK-NEXT: *(u8 *)(r10 - 15) = r2 34; CHECK-NEXT: r2 = *(u8 *)(r1 + 71) 35; CHECK-NEXT: *(u8 *)(r10 - 16) = r2 36; CHECK-NEXT: r2 = *(u8 *)(r1 + 70) 37; CHECK-NEXT: *(u8 *)(r10 - 17) = r2 38; CHECK-NEXT: r2 = *(u8 *)(r1 + 69) 39; CHECK-NEXT: *(u8 *)(r10 - 18) = r2 40; CHECK-NEXT: r2 = *(u8 *)(r1 + 68) 41; CHECK-NEXT: *(u8 *)(r10 - 19) = r2 42; CHECK-NEXT: r2 = *(u8 *)(r1 + 67) 43; CHECK-NEXT: *(u8 *)(r10 - 20) = r2 44; CHECK-NEXT: r2 = *(u8 *)(r1 + 66) 45; CHECK-NEXT: *(u8 *)(r10 - 21) = r2 46; CHECK-NEXT: r2 = *(u8 *)(r1 + 65) 47; CHECK-NEXT: *(u8 *)(r10 - 22) = r2 48; CHECK-NEXT: r2 = *(u8 *)(r1 + 64) 49; CHECK-NEXT: *(u8 *)(r10 - 23) = r2 50; CHECK-NEXT: r2 = *(u8 *)(r1 + 63) 51; CHECK-NEXT: *(u8 *)(r10 - 24) = r2 52; CHECK-NEXT: r2 = *(u8 *)(r1 + 62) 53; CHECK-NEXT: *(u8 *)(r10 - 25) = r2 54; CHECK-NEXT: r2 = *(u8 *)(r1 + 61) 55; CHECK-NEXT: *(u8 *)(r10 - 26) = r2 56; CHECK-NEXT: r2 = *(u8 *)(r1 + 60) 57; CHECK-NEXT: *(u8 *)(r10 - 27) = r2 58; CHECK-NEXT: r2 = *(u8 *)(r1 + 59) 59; CHECK-NEXT: *(u8 *)(r10 - 28) = r2 60; CHECK-NEXT: r2 = *(u8 *)(r1 + 58) 61; CHECK-NEXT: *(u8 *)(r10 - 29) = r2 62; CHECK-NEXT: r2 = *(u8 *)(r1 + 57) 63; CHECK-NEXT: *(u8 *)(r10 - 30) = r2 64; CHECK-NEXT: r2 = *(u8 *)(r1 + 56) 65; CHECK-NEXT: *(u8 *)(r10 - 31) = r2 66; CHECK-NEXT: r2 = *(u8 *)(r1 + 55) 67; CHECK-NEXT: *(u8 *)(r10 - 32) = r2 68; CHECK-NEXT: r2 = *(u8 *)(r1 + 54) 69; CHECK-NEXT: *(u8 *)(r10 - 33) = r2 70; CHECK-NEXT: r2 = *(u8 *)(r1 + 53) 71; CHECK-NEXT: *(u8 *)(r10 - 34) = r2 72; CHECK-NEXT: r2 = *(u8 *)(r1 + 52) 73; CHECK-NEXT: *(u8 *)(r10 - 35) = r2 74; CHECK-NEXT: r2 = *(u8 *)(r1 + 51) 75; CHECK-NEXT: *(u8 *)(r10 - 36) = r2 76; CHECK-NEXT: r2 = *(u8 *)(r1 + 50) 77; CHECK-NEXT: *(u8 *)(r10 - 37) = r2 78; CHECK-NEXT: r2 = *(u8 *)(r1 + 49) 79; CHECK-NEXT: *(u8 *)(r10 - 38) = r2 80; CHECK-NEXT: r2 = *(u8 *)(r1 + 48) 81; CHECK-NEXT: *(u8 *)(r10 - 39) = r2 82; CHECK-NEXT: r2 = *(u8 *)(r1 + 47) 83; CHECK-NEXT: *(u8 *)(r10 - 40) = r2 84; CHECK-NEXT: r2 = *(u8 *)(r1 + 46) 85; CHECK-NEXT: *(u8 *)(r10 - 41) = r2 86; CHECK-NEXT: r2 = *(u8 *)(r1 + 45) 87; CHECK-NEXT: *(u8 *)(r10 - 42) = r2 88; CHECK-NEXT: r2 = *(u8 *)(r1 + 44) 89; CHECK-NEXT: *(u8 *)(r10 - 43) = r2 90; CHECK-NEXT: r2 = *(u8 *)(r1 + 43) 91; CHECK-NEXT: *(u8 *)(r10 - 44) = r2 92; CHECK-NEXT: r2 = *(u8 *)(r1 + 42) 93; CHECK-NEXT: *(u8 *)(r10 - 45) = r2 94; CHECK-NEXT: r2 = *(u8 *)(r1 + 41) 95; CHECK-NEXT: *(u8 *)(r10 - 46) = r2 96; CHECK-NEXT: r2 = *(u8 *)(r1 + 40) 97; CHECK-NEXT: *(u8 *)(r10 - 47) = r2 98; CHECK-NEXT: r2 = *(u8 *)(r1 + 39) 99; CHECK-NEXT: *(u8 *)(r10 - 48) = r2 100; CHECK-NEXT: r2 = *(u8 *)(r1 + 38) 101; CHECK-NEXT: *(u8 *)(r10 - 49) = r2 102; CHECK-NEXT: r2 = *(u8 *)(r1 + 37) 103; CHECK-NEXT: *(u8 *)(r10 - 50) = r2 104; CHECK-NEXT: r2 = *(u8 *)(r1 + 36) 105; CHECK-NEXT: *(u8 *)(r10 - 51) = r2 106; CHECK-NEXT: r2 = *(u8 *)(r1 + 35) 107; CHECK-NEXT: *(u8 *)(r10 - 52) = r2 108; CHECK-NEXT: r2 = *(u8 *)(r1 + 34) 109; CHECK-NEXT: *(u8 *)(r10 - 53) = r2 110; CHECK-NEXT: r2 = *(u8 *)(r1 + 33) 111; CHECK-NEXT: *(u8 *)(r10 - 54) = r2 112; CHECK-NEXT: r2 = *(u8 *)(r1 + 32) 113; CHECK-NEXT: *(u8 *)(r10 - 55) = r2 114; CHECK-NEXT: r2 = *(u8 *)(r1 + 31) 115; CHECK-NEXT: *(u8 *)(r10 - 56) = r2 116; CHECK-NEXT: r2 = *(u8 *)(r1 + 30) 117; CHECK-NEXT: *(u8 *)(r10 - 57) = r2 118; CHECK-NEXT: r2 = *(u8 *)(r1 + 29) 119; CHECK-NEXT: *(u8 *)(r10 - 58) = r2 120; CHECK-NEXT: r2 = *(u8 *)(r1 + 28) 121; CHECK-NEXT: *(u8 *)(r10 - 59) = r2 122; CHECK-NEXT: r2 = *(u8 *)(r1 + 27) 123; CHECK-NEXT: *(u8 *)(r10 - 60) = r2 124; CHECK-NEXT: r2 = *(u8 *)(r1 + 26) 125; CHECK-NEXT: *(u8 *)(r10 - 61) = r2 126; CHECK-NEXT: r2 = *(u8 *)(r1 + 25) 127; CHECK-NEXT: *(u8 *)(r10 - 62) = r2 128; CHECK-NEXT: r2 = *(u8 *)(r1 + 24) 129; CHECK-NEXT: *(u8 *)(r10 - 63) = r2 130; CHECK-NEXT: r2 = *(u8 *)(r1 + 23) 131; CHECK-NEXT: *(u8 *)(r10 - 64) = r2 132; CHECK-NEXT: r2 = *(u8 *)(r1 + 22) 133; CHECK-NEXT: *(u8 *)(r10 - 65) = r2 134; CHECK-NEXT: r2 = *(u8 *)(r1 + 21) 135; CHECK-NEXT: *(u8 *)(r10 - 66) = r2 136; CHECK-NEXT: r2 = *(u8 *)(r1 + 20) 137; CHECK-NEXT: *(u8 *)(r10 - 67) = r2 138; CHECK-NEXT: r2 = *(u8 *)(r1 + 19) 139; CHECK-NEXT: *(u8 *)(r10 - 68) = r2 140; CHECK-NEXT: r2 = *(u8 *)(r1 + 18) 141; CHECK-NEXT: *(u8 *)(r10 - 69) = r2 142; CHECK-NEXT: r2 = *(u8 *)(r1 + 17) 143; CHECK-NEXT: *(u8 *)(r10 - 70) = r2 144; CHECK-NEXT: r2 = *(u8 *)(r1 + 16) 145; CHECK-NEXT: *(u8 *)(r10 - 71) = r2 146; CHECK-NEXT: r2 = *(u8 *)(r1 + 15) 147; CHECK-NEXT: *(u8 *)(r10 - 72) = r2 148; CHECK-NEXT: r2 = *(u8 *)(r1 + 14) 149; CHECK-NEXT: *(u8 *)(r10 - 73) = r2 150; CHECK-NEXT: r2 = *(u8 *)(r1 + 13) 151; CHECK-NEXT: *(u8 *)(r10 - 74) = r2 152; CHECK-NEXT: r2 = *(u8 *)(r1 + 12) 153; CHECK-NEXT: *(u8 *)(r10 - 75) = r2 154; CHECK-NEXT: r2 = *(u8 *)(r1 + 11) 155; CHECK-NEXT: *(u8 *)(r10 - 76) = r2 156; CHECK-NEXT: r2 = *(u8 *)(r1 + 10) 157; CHECK-NEXT: *(u8 *)(r10 - 77) = r2 158; CHECK-NEXT: r2 = *(u8 *)(r1 + 9) 159; CHECK-NEXT: *(u8 *)(r10 - 78) = r2 160; CHECK-NEXT: r2 = *(u8 *)(r1 + 8) 161; CHECK-NEXT: *(u8 *)(r10 - 79) = r2 162; CHECK-NEXT: r2 = *(u8 *)(r1 + 7) 163; CHECK-NEXT: *(u8 *)(r10 - 80) = r2 164; CHECK-NEXT: r2 = *(u8 *)(r1 + 6) 165; CHECK-NEXT: *(u8 *)(r10 - 81) = r2 166; CHECK-NEXT: r2 = *(u8 *)(r1 + 5) 167; CHECK-NEXT: *(u8 *)(r10 - 82) = r2 168; CHECK-NEXT: r2 = *(u8 *)(r1 + 4) 169; CHECK-NEXT: *(u8 *)(r10 - 83) = r2 170; CHECK-NEXT: r2 = *(u8 *)(r1 + 3) 171; CHECK-NEXT: *(u8 *)(r10 - 84) = r2 172; CHECK-NEXT: r2 = *(u8 *)(r1 + 2) 173; CHECK-NEXT: *(u8 *)(r10 - 85) = r2 174; CHECK-NEXT: r2 = *(u8 *)(r1 + 1) 175; CHECK-NEXT: *(u8 *)(r10 - 86) = r2 176; CHECK-NEXT: r1 = *(u8 *)(r1 + 0) 177; CHECK-NEXT: *(u8 *)(r10 - 87) = r1 178; CHECK-NEXT: r1 = r10 179; CHECK-NEXT: r1 += -88 180; CHECK-NEXT: call bar 181; CHECK-NEXT: exit 182entry: 183 %event = alloca %struct.event, align 8 184 %hostname = getelementptr inbounds %struct.event, ptr %event, i64 0, i32 1 185 %0 = load ptr, ptr %g, align 8 186 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(84) %hostname, ptr noundef nonnull align 1 dereferenceable(84) %0, i64 84, i1 false) 187 call void @bar(ptr noundef nonnull %event) 188 ret void 189} 190 191declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 192declare void @bar(ptr noundef) 193