1; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 --amdhsa-code-object-version=2 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK --check-prefix=GFX700 --check-prefix=NOTES %s 2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 --amdhsa-code-object-version=2 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK --check-prefix=GFX803 --check-prefix=NOTES %s 3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 --amdhsa-code-object-version=2 -filetype=obj -o - < %s | llvm-readelf --notes - | FileCheck --check-prefix=CHECK --check-prefix=GFX900 --check-prefix=NOTES %s 4 5; CHECK: --- 6; CHECK: Version: [ 1, 0 ] 7; CHECK: Kernels: 8 9; CHECK: - Name: test0 10; CHECK: SymbolName: 'test0@kd' 11; CHECK: Args: 12; CHECK-NEXT: - Name: r 13; CHECK-NEXT: Size: 8 14; CHECK-NEXT: Align: 8 15; CHECK-NEXT: ValueKind: GlobalBuffer 16; CHECK-NEXT: AddrSpaceQual: Global 17; CHECK-NEXT: - Name: a 18; CHECK-NEXT: Size: 8 19; CHECK-NEXT: Align: 8 20; CHECK-NEXT: ValueKind: GlobalBuffer 21; CHECK-NEXT: AddrSpaceQual: Global 22; CHECK-NEXT: - Name: b 23; CHECK-NEXT: Size: 8 24; CHECK-NEXT: Align: 8 25; CHECK-NEXT: ValueKind: GlobalBuffer 26; CHECK-NEXT: AddrSpaceQual: Global 27; CHECK-NEXT: CodeProps: 28define amdgpu_kernel void @test0( 29 half addrspace(1)* %r, 30 half addrspace(1)* %a, 31 half addrspace(1)* %b) { 32entry: 33 %a.val = load half, half addrspace(1)* %a 34 %b.val = load half, half addrspace(1)* %b 35 %r.val = fadd half %a.val, %b.val 36 store half %r.val, half addrspace(1)* %r 37 ret void 38} 39 40; CHECK: - Name: test8 41; CHECK: SymbolName: 'test8@kd' 42; CHECK: Args: 43; CHECK-NEXT: - Name: r 44; CHECK-NEXT: Size: 8 45; CHECK-NEXT: Align: 8 46; CHECK-NEXT: ValueKind: GlobalBuffer 47; CHECK-NEXT: AddrSpaceQual: Global 48; CHECK-NEXT: - Name: a 49; CHECK-NEXT: Size: 8 50; CHECK-NEXT: Align: 8 51; CHECK-NEXT: ValueKind: GlobalBuffer 52; CHECK-NEXT: AddrSpaceQual: Global 53; CHECK-NEXT: - Name: b 54; CHECK-NEXT: Size: 8 55; CHECK-NEXT: Align: 8 56; CHECK-NEXT: ValueKind: GlobalBuffer 57; CHECK-NEXT: AddrSpaceQual: Global 58; CHECK-NEXT: - Size: 8 59; CHECK-NEXT: Align: 8 60; CHECK-NEXT: ValueKind: HiddenGlobalOffsetX 61; CHECK-NEXT: CodeProps: 62define amdgpu_kernel void @test8( 63 half addrspace(1)* %r, 64 half addrspace(1)* %a, 65 half addrspace(1)* %b) #0 { 66entry: 67 %a.val = load half, half addrspace(1)* %a 68 %b.val = load half, half addrspace(1)* %b 69 %r.val = fadd half %a.val, %b.val 70 store half %r.val, half addrspace(1)* %r 71 ret void 72} 73 74; CHECK: - Name: test16 75; CHECK: SymbolName: 'test16@kd' 76; CHECK: Args: 77; CHECK-NEXT: - Name: r 78; CHECK-NEXT: Size: 8 79; CHECK-NEXT: Align: 8 80; CHECK-NEXT: ValueKind: GlobalBuffer 81; CHECK-NEXT: AddrSpaceQual: Global 82; CHECK-NEXT: - Name: a 83; CHECK-NEXT: Size: 8 84; CHECK-NEXT: Align: 8 85; CHECK-NEXT: ValueKind: GlobalBuffer 86; CHECK-NEXT: AddrSpaceQual: Global 87; CHECK-NEXT: - Name: b 88; CHECK-NEXT: Size: 8 89; CHECK-NEXT: Align: 8 90; CHECK-NEXT: ValueKind: GlobalBuffer 91; CHECK-NEXT: AddrSpaceQual: Global 92; CHECK-NEXT: - Size: 8 93; CHECK-NEXT: Align: 8 94; CHECK-NEXT: ValueKind: HiddenGlobalOffsetX 95; CHECK-NEXT: - Size: 8 96; CHECK-NEXT: Align: 8 97; CHECK-NEXT: ValueKind: HiddenGlobalOffsetY 98; CHECK-NEXT: CodeProps: 99define amdgpu_kernel void @test16( 100 half addrspace(1)* %r, 101 half addrspace(1)* %a, 102 half addrspace(1)* %b) #1 { 103entry: 104 %a.val = load half, half addrspace(1)* %a 105 %b.val = load half, half addrspace(1)* %b 106 %r.val = fadd half %a.val, %b.val 107 store half %r.val, half addrspace(1)* %r 108 ret void 109} 110 111; CHECK: - Name: test24 112; CHECK: SymbolName: 'test24@kd' 113; CHECK: Args: 114; CHECK-NEXT: - Name: r 115; CHECK-NEXT: Size: 8 116; CHECK-NEXT: Align: 8 117; CHECK-NEXT: ValueKind: GlobalBuffer 118; CHECK-NEXT: AddrSpaceQual: Global 119; CHECK-NEXT: - Name: a 120; CHECK-NEXT: Size: 8 121; CHECK-NEXT: Align: 8 122; CHECK-NEXT: ValueKind: GlobalBuffer 123; CHECK-NEXT: AddrSpaceQual: Global 124; CHECK-NEXT: - Name: b 125; CHECK-NEXT: Size: 8 126; CHECK-NEXT: Align: 8 127; CHECK-NEXT: ValueKind: GlobalBuffer 128; CHECK-NEXT: AddrSpaceQual: Global 129; CHECK-NEXT: - Size: 8 130; CHECK-NEXT: Align: 8 131; CHECK-NEXT: ValueKind: HiddenGlobalOffsetX 132; CHECK-NEXT: - Size: 8 133; CHECK-NEXT: Align: 8 134; CHECK-NEXT: ValueKind: HiddenGlobalOffsetY 135; CHECK-NEXT: - Size: 8 136; CHECK-NEXT: Align: 8 137; CHECK-NEXT: ValueKind: HiddenGlobalOffsetZ 138; CHECK-NEXT: CodeProps: 139define amdgpu_kernel void @test24( 140 half addrspace(1)* %r, 141 half addrspace(1)* %a, 142 half addrspace(1)* %b) #2 { 143entry: 144 %a.val = load half, half addrspace(1)* %a 145 %b.val = load half, half addrspace(1)* %b 146 %r.val = fadd half %a.val, %b.val 147 store half %r.val, half addrspace(1)* %r 148 ret void 149} 150 151; CHECK: - Name: test32 152; CHECK: SymbolName: 'test32@kd' 153; CHECK: Args: 154; CHECK-NEXT: - Name: r 155; CHECK-NEXT: Size: 8 156; CHECK-NEXT: Align: 8 157; CHECK-NEXT: ValueKind: GlobalBuffer 158; CHECK-NEXT: AddrSpaceQual: Global 159; CHECK-NEXT: - Name: a 160; CHECK-NEXT: Size: 8 161; CHECK-NEXT: Align: 8 162; CHECK-NEXT: ValueKind: GlobalBuffer 163; CHECK-NEXT: AddrSpaceQual: Global 164; CHECK-NEXT: - Name: b 165; CHECK-NEXT: Size: 8 166; CHECK-NEXT: Align: 8 167; CHECK-NEXT: ValueKind: GlobalBuffer 168; CHECK-NEXT: AddrSpaceQual: Global 169; CHECK-NEXT: - Size: 8 170; CHECK-NEXT: Align: 8 171; CHECK-NEXT: ValueKind: HiddenGlobalOffsetX 172; CHECK-NEXT: - Size: 8 173; CHECK-NEXT: Align: 8 174; CHECK-NEXT: ValueKind: HiddenGlobalOffsetY 175; CHECK-NEXT: - Size: 8 176; CHECK-NEXT: Align: 8 177; CHECK-NEXT: ValueKind: HiddenGlobalOffsetZ 178; CHECK-NEXT: - Size: 8 179; CHECK-NEXT: Align: 8 180; CHECK-NEXT: ValueKind: HiddenNone 181; CHECK-NEXT: AddrSpaceQual: Global 182; CHECK-NEXT: CodeProps: 183define amdgpu_kernel void @test32( 184 half addrspace(1)* %r, 185 half addrspace(1)* %a, 186 half addrspace(1)* %b) #3 { 187entry: 188 %a.val = load half, half addrspace(1)* %a 189 %b.val = load half, half addrspace(1)* %b 190 %r.val = fadd half %a.val, %b.val 191 store half %r.val, half addrspace(1)* %r 192 ret void 193} 194 195; CHECK: - Name: test48 196; CHECK: SymbolName: 'test48@kd' 197; CHECK: Args: 198; CHECK-NEXT: - Name: r 199; CHECK-NEXT: Size: 8 200; CHECK-NEXT: Align: 8 201; CHECK-NEXT: ValueKind: GlobalBuffer 202; CHECK-NEXT: AddrSpaceQual: Global 203; CHECK-NEXT: - Name: a 204; CHECK-NEXT: Size: 8 205; CHECK-NEXT: Align: 8 206; CHECK-NEXT: ValueKind: GlobalBuffer 207; CHECK-NEXT: AddrSpaceQual: Global 208; CHECK-NEXT: - Name: b 209; CHECK-NEXT: Size: 8 210; CHECK-NEXT: Align: 8 211; CHECK-NEXT: ValueKind: GlobalBuffer 212; CHECK-NEXT: AddrSpaceQual: Global 213; CHECK-NEXT: - Size: 8 214; CHECK-NEXT: Align: 8 215; CHECK-NEXT: ValueKind: HiddenGlobalOffsetX 216; CHECK-NEXT: - Size: 8 217; CHECK-NEXT: Align: 8 218; CHECK-NEXT: ValueKind: HiddenGlobalOffsetY 219; CHECK-NEXT: - Size: 8 220; CHECK-NEXT: Align: 8 221; CHECK-NEXT: ValueKind: HiddenGlobalOffsetZ 222; CHECK-NEXT: - Size: 8 223; CHECK-NEXT: Align: 8 224; CHECK-NEXT: ValueKind: HiddenNone 225; CHECK-NEXT: AddrSpaceQual: Global 226; CHECK-NEXT: - Size: 8 227; CHECK-NEXT: Align: 8 228; CHECK-NEXT: ValueKind: HiddenNone 229; CHECK-NEXT: AddrSpaceQual: Global 230; CHECK-NEXT: - Size: 8 231; CHECK-NEXT: Align: 8 232; CHECK-NEXT: ValueKind: HiddenNone 233; CHECK-NEXT: AddrSpaceQual: Global 234; CHECK-NEXT: CodeProps: 235define amdgpu_kernel void @test48( 236 half addrspace(1)* %r, 237 half addrspace(1)* %a, 238 half addrspace(1)* %b) #4 { 239entry: 240 %a.val = load half, half addrspace(1)* %a 241 %b.val = load half, half addrspace(1)* %b 242 %r.val = fadd half %a.val, %b.val 243 store half %r.val, half addrspace(1)* %r 244 ret void 245} 246 247; CHECK: - Name: test56 248; CHECK: SymbolName: 'test56@kd' 249; CHECK: Args: 250; CHECK-NEXT: - Name: r 251; CHECK-NEXT: Size: 8 252; CHECK-NEXT: Align: 8 253; CHECK-NEXT: ValueKind: GlobalBuffer 254; CHECK-NEXT: AddrSpaceQual: Global 255; CHECK-NEXT: - Name: a 256; CHECK-NEXT: Size: 8 257; CHECK-NEXT: Align: 8 258; CHECK-NEXT: ValueKind: GlobalBuffer 259; CHECK-NEXT: AddrSpaceQual: Global 260; CHECK-NEXT: - Name: b 261; CHECK-NEXT: Size: 8 262; CHECK-NEXT: Align: 8 263; CHECK-NEXT: ValueKind: GlobalBuffer 264; CHECK-NEXT: AddrSpaceQual: Global 265; CHECK-NEXT: - Size: 8 266; CHECK-NEXT: Align: 8 267; CHECK-NEXT: ValueKind: HiddenGlobalOffsetX 268; CHECK-NEXT: - Size: 8 269; CHECK-NEXT: Align: 8 270; CHECK-NEXT: ValueKind: HiddenGlobalOffsetY 271; CHECK-NEXT: - Size: 8 272; CHECK-NEXT: Align: 8 273; CHECK-NEXT: ValueKind: HiddenGlobalOffsetZ 274; CHECK-NEXT: - Size: 8 275; CHECK-NEXT: Align: 8 276; CHECK-NEXT: ValueKind: HiddenNone 277; CHECK-NEXT: AddrSpaceQual: Global 278; CHECK-NEXT: - Size: 8 279; CHECK-NEXT: Align: 8 280; CHECK-NEXT: ValueKind: HiddenNone 281; CHECK-NEXT: AddrSpaceQual: Global 282; CHECK-NEXT: - Size: 8 283; CHECK-NEXT: Align: 8 284; CHECK-NEXT: ValueKind: HiddenNone 285; CHECK-NEXT: AddrSpaceQual: Global 286; CHECK-NEXT: - Size: 8 287; CHECK-NEXT: Align: 8 288; CHECK-NEXT: ValueKind: HiddenMultiGridSyncArg 289; CHECK-NEXT: AddrSpaceQual: Global 290; CHECK-NEXT: CodeProps: 291define amdgpu_kernel void @test56( 292 half addrspace(1)* %r, 293 half addrspace(1)* %a, 294 half addrspace(1)* %b) #5 { 295entry: 296 %a.val = load half, half addrspace(1)* %a 297 %b.val = load half, half addrspace(1)* %b 298 %r.val = fadd half %a.val, %b.val 299 store half %r.val, half addrspace(1)* %r 300 ret void 301} 302 303attributes #0 = { "amdgpu-implicitarg-num-bytes"="8" } 304attributes #1 = { "amdgpu-implicitarg-num-bytes"="16" } 305attributes #2 = { "amdgpu-implicitarg-num-bytes"="24" } 306attributes #3 = { "amdgpu-implicitarg-num-bytes"="32" } 307attributes #4 = { "amdgpu-implicitarg-num-bytes"="48" } 308attributes #5 = { "amdgpu-implicitarg-num-bytes"="56" } 309