amd/common: add ac_is_sgpr_param helper

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Nicolai Hähnle
2016-10-28 14:40:24 +02:00
parent 2ff5df8f50
commit 908100cfae
2 changed files with 12 additions and 0 deletions
+10
View File
@@ -35,6 +35,7 @@
#include <llvm-c/Core.h>
#include <llvm/Target/TargetOptions.h>
#include <llvm/ExecutionEngine/ExecutionEngine.h>
#include <llvm/IR/Attributes.h>
void ac_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes)
{
@@ -43,3 +44,12 @@ void ac_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes)
B.addDereferenceableAttr(bytes);
A->addAttr(llvm::AttributeSet::get(A->getContext(), A->getArgNo() + 1, B));
}
bool ac_is_sgpr_param(LLVMValueRef arg)
{
llvm::Argument *A = llvm::unwrap<llvm::Argument>(arg);
llvm::AttributeSet AS = A->getParent()->getAttributes();
unsigned ArgNo = A->getArgNo();
return AS.hasAttribute(ArgNo + 1, llvm::Attribute::ByVal) ||
AS.hasAttribute(ArgNo + 1, llvm::Attribute::InReg);
}
+2
View File
@@ -24,6 +24,7 @@
*/
#pragma once
#include <stdbool.h>
#include <llvm-c/TargetMachine.h>
#include "amd_family.h"
@@ -35,6 +36,7 @@ extern "C" {
LLVMTargetMachineRef ac_create_target_machine(enum radeon_family family);
void ac_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes);
bool ac_is_sgpr_param(LLVMValueRef param);
#ifdef __cplusplus
}