blob: 56f8ed2c0e97949dbedd6c1d792c29ddf5b566df [file] [log] [blame] [edit]
// REQUIRES: amdgpu-registered-target
// Test that by default, AMDGPU functions only emit delta target-features
// (features that differ from the target CPU's defaults). This reduces IR bloat.
// Default behavior for gfx90a: test_default has no target-features,
// test_explicit_attr has only the delta (+gfx11-insts).
// RUN: %clang_cc1 -triple amdgcn -target-cpu gfx90a -emit-llvm -o - %s | FileCheck --check-prefix=GFX90A %s
// With -target-feature, both functions get the delta feature.
// gfx1030 defaults to wavefrontsize32, so +wavefrontsize64 is a delta.
// RUN: %clang_cc1 -triple amdgcn -target-cpu gfx1030 -target-feature +wavefrontsize64 -emit-llvm -o - %s | FileCheck --check-prefix=CMDLINE %s
// GFX90A-LABEL: define {{.*}} @test_default()
// GFX90A-SAME: #[[ATTR_DEFAULT:[0-9]+]]
// GFX90A-LABEL: define {{.*}} @test_explicit_attr()
// GFX90A-SAME: #[[ATTR_EXPLICIT:[0-9]+]]
//
// test_default should have target-cpu but NO target-features
// GFX90A: attributes #[[ATTR_DEFAULT]] = {
// GFX90A-SAME: "target-cpu"="gfx90a"
// GFX90A-NOT: "target-features"
// GFX90A-SAME: }
//
// test_explicit_attr should have target-cpu and ONLY the delta target-features
// GFX90A: attributes #[[ATTR_EXPLICIT]] = {
// GFX90A-SAME: "target-cpu"="gfx90a"
// GFX90A-SAME: "target-features"="+gfx11-insts"
// GFX90A-SAME: }
// With -target-feature +wavefrontsize64, test_default gets just that delta,
// test_explicit_attr gets both +gfx11-insts and +wavefrontsize64.
// CMDLINE-LABEL: define {{.*}} @test_default()
// CMDLINE-SAME: #[[ATTR_DEFAULT:[0-9]+]]
// CMDLINE-LABEL: define {{.*}} @test_explicit_attr()
// CMDLINE-SAME: #[[ATTR_EXPLICIT:[0-9]+]]
//
// CMDLINE: attributes #[[ATTR_DEFAULT]] = {
// CMDLINE-SAME: "target-cpu"="gfx1030"
// CMDLINE-SAME: "target-features"="+wavefrontsize64"
// CMDLINE-SAME: }
//
// CMDLINE: attributes #[[ATTR_EXPLICIT]] = {
// CMDLINE-SAME: "target-cpu"="gfx1030"
// CMDLINE-SAME: "target-features"="{{[^"]*}}+gfx11-insts{{[^"]*}}+wavefrontsize64{{[^"]*}}"
// CMDLINE-SAME: }
kernel void test_default() {}
__attribute__((target("gfx11-insts")))
void test_explicit_attr() {}