[PATCH] D103663: [AMDGPU] Add gfx1013 target
bcahoon marked an inline comment as done. bcahoon added inline comments. Comment at: llvm/lib/Target/AMDGPU/AMDGPU.td:471 + "true", + "Encoding format GFX10_A" +>; foad wrote: > I realise you're just following the precedent set by GFX10_B, but is this > terminology actually used in any documentation anywhere? And if not could we > describe it a little better here? I changed the description to be specific w.r.t what the target feature enables. Comment at: llvm/lib/Target/AMDGPU/SIISelLowering.cpp:7341 +if (!Subtarget->hasGFX10_AEncoding()) + emitRemovedIntrinsicError(DAG, DL, Op.getValueType()); + foad wrote: > bcahoon wrote: > > rampitec wrote: > > > return emitRemovedIntrinsicError(); > > I've changed this to return. Thanks for catching that. But, it returns a > > UNDEF value instead of SDValue() so that it doesn't crash. I can change the > > behavior if that's preferred. > Personally I would follow all the existing precedents and "return > emitRemovedIntrinsicError(...)". I don't see any value in deliberately trying > to make the compiler crash harder. The handling of diagnostic errors is a little inconsistent in ISelLowering. Sometimes SDValue() is returned and other times it's Undef. I have it return SDValue() so that the failure mode is consistent with how GlobaISel handles these intrinsics. It's probably worth a discussion to decide how best to handle diagnostic errors. I'm happy to submit a follow-on patch as needed. As an aside, return emitRemovedIntrinsicError() isn't enough because the intrinsic has both a return value and a chain edge. So, something like return DAG.getMergeValues({emitRemovedIntrinsicError(), Op.getValue(0)}, DL) is needed. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103663/new/ https://reviews.llvm.org/D103663 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D103663: [AMDGPU] Add gfx1013 target
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGea10a86984ea: [AMDGPU] Add gfx1013 target (authored by bcahoon). Changed prior to commit: https://reviews.llvm.org/D103663?vs=350468&id=350640#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103663/new/ https://reviews.llvm.org/D103663 Files: clang/include/clang/Basic/Cuda.h clang/lib/Basic/Cuda.cpp clang/lib/Basic/Targets/AMDGPU.cpp clang/lib/Basic/Targets/NVPTX.cpp clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp clang/test/CodeGenOpenCL/amdgpu-features.cl clang/test/Driver/amdgpu-macros.cl clang/test/Driver/amdgpu-mcpu.cl clang/test/Misc/target-invalid-cpu-note.c llvm/docs/AMDGPUUsage.rst llvm/include/llvm/BinaryFormat/ELF.h llvm/include/llvm/Support/TargetParser.h llvm/lib/Object/ELFObjectFile.cpp llvm/lib/ObjectYAML/ELFYAML.cpp llvm/lib/Support/TargetParser.cpp llvm/lib/Target/AMDGPU/AMDGPU.td llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp llvm/lib/Target/AMDGPU/GCNProcessors.td llvm/lib/Target/AMDGPU/GCNSubtarget.h llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp llvm/lib/Target/AMDGPU/MIMGInstructions.td llvm/lib/Target/AMDGPU/SIISelLowering.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.intersect_ray.ll llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.intersect_ray.ll llvm/test/MC/AMDGPU/dl-insts-err.s llvm/test/MC/AMDGPU/gfx10_unsupported.s llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test llvm/tools/llvm-readobj/ELFDumper.cpp openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp Index: openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp === --- openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp +++ openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp @@ -39,6 +39,8 @@ return "gfx1011"; case EF_AMDGPU_MACH_AMDGCN_GFX1012: return "gfx1012"; + case EF_AMDGPU_MACH_AMDGCN_GFX1013: +return "gfx1013"; case EF_AMDGPU_MACH_AMDGCN_GFX1030: return "gfx1030"; case EF_AMDGPU_MACH_AMDGCN_GFX1031: Index: llvm/tools/llvm-readobj/ELFDumper.cpp === --- llvm/tools/llvm-readobj/ELFDumper.cpp +++ llvm/tools/llvm-readobj/ELFDumper.cpp @@ -1482,6 +1482,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), @@ -1534,6 +1535,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), Index: llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test === --- llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test +++ llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test @@ -223,6 +223,15 @@ # RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 # RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 -DFLAG_VALUE=0x35 +# RUN: yaml2obj %s -o %t -DABI_VERSION=0 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=0 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=1 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=1 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SI
[PATCH] D103663: [AMDGPU] Add gfx1013 target
bcahoon updated this revision to Diff 350468. bcahoon added a comment. Addressed review comment. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103663/new/ https://reviews.llvm.org/D103663 Files: clang/include/clang/Basic/Cuda.h clang/lib/Basic/Cuda.cpp clang/lib/Basic/Targets/AMDGPU.cpp clang/lib/Basic/Targets/NVPTX.cpp clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp clang/test/CodeGenOpenCL/amdgpu-features.cl clang/test/Driver/amdgpu-macros.cl clang/test/Driver/amdgpu-mcpu.cl clang/test/Misc/target-invalid-cpu-note.c llvm/docs/AMDGPUUsage.rst llvm/include/llvm/BinaryFormat/ELF.h llvm/include/llvm/Support/TargetParser.h llvm/lib/Object/ELFObjectFile.cpp llvm/lib/ObjectYAML/ELFYAML.cpp llvm/lib/Support/TargetParser.cpp llvm/lib/Target/AMDGPU/AMDGPU.td llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp llvm/lib/Target/AMDGPU/GCNProcessors.td llvm/lib/Target/AMDGPU/GCNSubtarget.h llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp llvm/lib/Target/AMDGPU/MIMGInstructions.td llvm/lib/Target/AMDGPU/SIISelLowering.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.intersect_ray.ll llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.intersect_ray.ll llvm/test/MC/AMDGPU/dl-insts-err.s llvm/test/MC/AMDGPU/gfx10_unsupported.s llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test llvm/tools/llvm-readobj/ELFDumper.cpp openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp Index: openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp === --- openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp +++ openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp @@ -39,6 +39,8 @@ return "gfx1011"; case EF_AMDGPU_MACH_AMDGCN_GFX1012: return "gfx1012"; + case EF_AMDGPU_MACH_AMDGCN_GFX1013: +return "gfx1013"; case EF_AMDGPU_MACH_AMDGCN_GFX1030: return "gfx1030"; case EF_AMDGPU_MACH_AMDGCN_GFX1031: Index: llvm/tools/llvm-readobj/ELFDumper.cpp === --- llvm/tools/llvm-readobj/ELFDumper.cpp +++ llvm/tools/llvm-readobj/ELFDumper.cpp @@ -1482,6 +1482,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), @@ -1534,6 +1535,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), Index: llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test === --- llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test +++ llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test @@ -223,6 +223,15 @@ # RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 # RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 -DFLAG_VALUE=0x35 +# RUN: yaml2obj %s -o %t -DABI_VERSION=0 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=0 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=1 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=1 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + # RUN: yaml2obj %s -o %t -DABI_VERSION=0 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1030 # RUN: llvm-readobj -h %t | FileCheck
[PATCH] D103663: [AMDGPU] Add gfx1013 target
bcahoon added inline comments. Comment at: llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp:4700 +B.getMF().getFunction().getContext().diagnose(BadIntrin); +B.buildUndef(MI.getOperand(0)); +MI.eraseFromParent(); rampitec wrote: > rampitec wrote: > > Just return false like in other places. > Just return false. I see that is like this in the whole file. Changed this to false, and also changed SIISelLlowering to return SDValue so that both fail in a similar way. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103663/new/ https://reviews.llvm.org/D103663 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D103663: [AMDGPU] Add gfx1013 target
bcahoon updated this revision to Diff 350448. bcahoon added a comment. Changed legalizer to return false for raytracing intrinsics that are not supported by the subtarget. I changed both GlobalISel and regular ISel to work similarly. A crash occurs with a message that the intrinsic cannot be legalized, and only the first instance is reported. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103663/new/ https://reviews.llvm.org/D103663 Files: clang/include/clang/Basic/Cuda.h clang/lib/Basic/Cuda.cpp clang/lib/Basic/Targets/AMDGPU.cpp clang/lib/Basic/Targets/NVPTX.cpp clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp clang/test/CodeGenOpenCL/amdgpu-features.cl clang/test/Driver/amdgpu-macros.cl clang/test/Driver/amdgpu-mcpu.cl clang/test/Misc/target-invalid-cpu-note.c llvm/docs/AMDGPUUsage.rst llvm/include/llvm/BinaryFormat/ELF.h llvm/include/llvm/Support/TargetParser.h llvm/lib/Object/ELFObjectFile.cpp llvm/lib/ObjectYAML/ELFYAML.cpp llvm/lib/Support/TargetParser.cpp llvm/lib/Target/AMDGPU/AMDGPU.td llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp llvm/lib/Target/AMDGPU/GCNProcessors.td llvm/lib/Target/AMDGPU/GCNSubtarget.h llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp llvm/lib/Target/AMDGPU/MIMGInstructions.td llvm/lib/Target/AMDGPU/SIISelLowering.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.intersect_ray.ll llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.intersect_ray.ll llvm/test/MC/AMDGPU/dl-insts-err.s llvm/test/MC/AMDGPU/gfx10_unsupported.s llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test llvm/tools/llvm-readobj/ELFDumper.cpp openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp Index: openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp === --- openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp +++ openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp @@ -39,6 +39,8 @@ return "gfx1011"; case EF_AMDGPU_MACH_AMDGCN_GFX1012: return "gfx1012"; + case EF_AMDGPU_MACH_AMDGCN_GFX1013: +return "gfx1013"; case EF_AMDGPU_MACH_AMDGCN_GFX1030: return "gfx1030"; case EF_AMDGPU_MACH_AMDGCN_GFX1031: Index: llvm/tools/llvm-readobj/ELFDumper.cpp === --- llvm/tools/llvm-readobj/ELFDumper.cpp +++ llvm/tools/llvm-readobj/ELFDumper.cpp @@ -1482,6 +1482,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), @@ -1534,6 +1535,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), Index: llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test === --- llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test +++ llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test @@ -223,6 +223,15 @@ # RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 # RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 -DFLAG_VALUE=0x35 +# RUN: yaml2obj %s -o %t -DABI_VERSION=0 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=0 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=1 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=1 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI
[PATCH] D103663: [AMDGPU] Add gfx1013 target
bcahoon marked an inline comment as done. bcahoon added inline comments. Comment at: llvm/lib/Target/AMDGPU/SIISelLowering.cpp:7341 +if (!Subtarget->hasGFX10_AEncoding()) + emitRemovedIntrinsicError(DAG, DL, Op.getValueType()); + rampitec wrote: > return emitRemovedIntrinsicError(); I've changed this to return. Thanks for catching that. But, it returns a UNDEF value instead of SDValue() so that it doesn't crash. I can change the behavior if that's preferred. Comment at: llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.intersect_ray.ll:4 +; RUN: llc -global-isel -march=amdgcn -mcpu=gfx1013 -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s +; RUN: llc -global-isel -march=amdgcn -mcpu=gfx1012 -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s rampitec wrote: > bcahoon wrote: > > rampitec wrote: > > > bcahoon wrote: > > > > rampitec wrote: > > > > > rampitec wrote: > > > > > > foad wrote: > > > > > > > This test surely should not pass for gfx1012, since it does not > > > > > > > have these instructions. And with your patch as written it should > > > > > > > fail for gfx1013 too, since they are predicated on > > > > > > > HasGFX10_BEncoding. > > > > > > > > > > > > > > @rampitec any idea what is wrong here? Apparently the backend > > > > > > > will happily generate image_bvh_intersect_ray instructions even > > > > > > > for gfx900! > > > > > > Indeed. MIMG_IntersectRay has this: > > > > > > > > > > > > ``` > > > > > > let SubtargetPredicate = HasGFX10_BEncoding, > > > > > > AssemblerPredicate = HasGFX10_BEncoding, > > > > > > ``` > > > > > > but apparently SubtargetPredicate did not work. It needs to be > > > > > > fixed. > > > > > > > > > > > > gfx1012 does not have it, gfx1013 does though. That is what GFX10_A > > > > > > encoding is about, 10_B it has to be replaced with 10_A in BVH and > > > > > > MSAA load. > > > > > Image lowering and selection is not really done like everything else. > > > > > For BVH it just lowers intrinsic to opcode. I think the easiest fix > > > > > is to add to SIISelLowering.cpp where we lower > > > > > Intrinsic::amdgcn_image_bvh_intersect_ray something like this: > > > > > > > > > > > > > > > ``` > > > > > if (!Subtarget->hasGFX10_AEncoding()) > > > > > report_fatal_error( > > > > > "requested image instruction is not supported on this GPU"); > > > > > ``` > > > > I ended up using emitRemovedIntrinsicError, which uses > > > > DiagnosticInfoUnsupported. This way the failure isn't a crash dump. > > > > I ended up using emitRemovedIntrinsicError, which uses > > > > DiagnosticInfoUnsupported. This way the failure isn't a crash dump. > > > > > > Diagnostics is a good thing, but we still have to fail the compilation. > > The diagnostic is marked as an error, so the compilation fails in that llc > > returns a non-zero return code. This mechanism is used in other places in > > the back-end to report similar types of errors. The alternative, if I > > understand correctly, is that a crash occurs with an error message that > > indicates that the bug is in LLVM (rather the the input source file). > We do not seem to be consistent here and return either undef or SDValue(), > but as far as I can see we never continue selecting code though, like here in > SIISelLowering and always return false from the AMDGPUInstructionSelector. I've left the patch so that it doesn't crash. But, let me know if you think we should return false and crash, and I'll make that change. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103663/new/ https://reviews.llvm.org/D103663 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D103663: [AMDGPU] Add gfx1013 target
bcahoon updated this revision to Diff 350423. bcahoon added a comment. Addressed review comments CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103663/new/ https://reviews.llvm.org/D103663 Files: clang/include/clang/Basic/Cuda.h clang/lib/Basic/Cuda.cpp clang/lib/Basic/Targets/AMDGPU.cpp clang/lib/Basic/Targets/NVPTX.cpp clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp clang/test/CodeGenOpenCL/amdgpu-features.cl clang/test/Driver/amdgpu-macros.cl clang/test/Driver/amdgpu-mcpu.cl clang/test/Misc/target-invalid-cpu-note.c llvm/docs/AMDGPUUsage.rst llvm/include/llvm/BinaryFormat/ELF.h llvm/include/llvm/Support/TargetParser.h llvm/lib/Object/ELFObjectFile.cpp llvm/lib/ObjectYAML/ELFYAML.cpp llvm/lib/Support/TargetParser.cpp llvm/lib/Target/AMDGPU/AMDGPU.td llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp llvm/lib/Target/AMDGPU/GCNProcessors.td llvm/lib/Target/AMDGPU/GCNSubtarget.h llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp llvm/lib/Target/AMDGPU/MIMGInstructions.td llvm/lib/Target/AMDGPU/SIISelLowering.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.intersect_ray.ll llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.intersect_ray.ll llvm/test/MC/AMDGPU/dl-insts-err.s llvm/test/MC/AMDGPU/gfx10_unsupported.s llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test llvm/tools/llvm-readobj/ELFDumper.cpp openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp Index: openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp === --- openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp +++ openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp @@ -39,6 +39,8 @@ return "gfx1011"; case EF_AMDGPU_MACH_AMDGCN_GFX1012: return "gfx1012"; + case EF_AMDGPU_MACH_AMDGCN_GFX1013: +return "gfx1013"; case EF_AMDGPU_MACH_AMDGCN_GFX1030: return "gfx1030"; case EF_AMDGPU_MACH_AMDGCN_GFX1031: Index: llvm/tools/llvm-readobj/ELFDumper.cpp === --- llvm/tools/llvm-readobj/ELFDumper.cpp +++ llvm/tools/llvm-readobj/ELFDumper.cpp @@ -1482,6 +1482,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), @@ -1534,6 +1535,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), Index: llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test === --- llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test +++ llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test @@ -223,6 +223,15 @@ # RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 # RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 -DFLAG_VALUE=0x35 +# RUN: yaml2obj %s -o %t -DABI_VERSION=0 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=0 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=1 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=1 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + # RUN: yaml2obj %s -o %t -DABI_VERSION=0 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1030 # RUN: llvm-readobj -h %t | FileCheck
[PATCH] D103663: [AMDGPU] Add gfx1013 target
bcahoon marked 4 inline comments as done. bcahoon added inline comments. Comment at: llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.intersect_ray.ll:4 +; RUN: llc -global-isel -march=amdgcn -mcpu=gfx1013 -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s +; RUN: llc -global-isel -march=amdgcn -mcpu=gfx1012 -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s rampitec wrote: > bcahoon wrote: > > rampitec wrote: > > > rampitec wrote: > > > > foad wrote: > > > > > This test surely should not pass for gfx1012, since it does not have > > > > > these instructions. And with your patch as written it should fail for > > > > > gfx1013 too, since they are predicated on HasGFX10_BEncoding. > > > > > > > > > > @rampitec any idea what is wrong here? Apparently the backend will > > > > > happily generate image_bvh_intersect_ray instructions even for gfx900! > > > > Indeed. MIMG_IntersectRay has this: > > > > > > > > ``` > > > > let SubtargetPredicate = HasGFX10_BEncoding, > > > > AssemblerPredicate = HasGFX10_BEncoding, > > > > ``` > > > > but apparently SubtargetPredicate did not work. It needs to be fixed. > > > > > > > > gfx1012 does not have it, gfx1013 does though. That is what GFX10_A > > > > encoding is about, 10_B it has to be replaced with 10_A in BVH and MSAA > > > > load. > > > Image lowering and selection is not really done like everything else. For > > > BVH it just lowers intrinsic to opcode. I think the easiest fix is to add > > > to SIISelLowering.cpp where we lower > > > Intrinsic::amdgcn_image_bvh_intersect_ray something like this: > > > > > > > > > ``` > > > if (!Subtarget->hasGFX10_AEncoding()) > > > report_fatal_error( > > > "requested image instruction is not supported on this GPU"); > > > ``` > > I ended up using emitRemovedIntrinsicError, which uses > > DiagnosticInfoUnsupported. This way the failure isn't a crash dump. > > I ended up using emitRemovedIntrinsicError, which uses > > DiagnosticInfoUnsupported. This way the failure isn't a crash dump. > > Diagnostics is a good thing, but we still have to fail the compilation. The diagnostic is marked as an error, so the compilation fails in that llc returns a non-zero return code. This mechanism is used in other places in the back-end to report similar types of errors. The alternative, if I understand correctly, is that a crash occurs with an error message that indicates that the bug is in LLVM (rather the the input source file). CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103663/new/ https://reviews.llvm.org/D103663 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D103663: [AMDGPU] Add gfx1013 target
bcahoon marked 8 inline comments as done. bcahoon added inline comments. Comment at: llvm/docs/AMDGPUUsage.rst:389 - xnack scratch - *pal-amdpal* + ``gfx1013`` ``amdgcn`` dGPU - cumode - Absolute - *rocm-amdhsa* *TBA* +- wavefrontsize64 flat - *pal-amdhsa* foad wrote: > Is it dGPU or APU? > > Every other entry with `*TBA*` also has a `TODO::` message It is APU. Comment at: llvm/lib/Target/AMDGPU/AMDGPU.td:468 +def FeatureGFX10_AEncoding : SubtargetFeature<"gfx10_a-encoding", + "GFX10_AEncoding", foad wrote: > What is this new encoding? It doesn't seem to be used for anything. Fixed this. The BVH raytracing instructions use the encoding. Comment at: llvm/lib/Target/AMDGPU/AMDGPU.td:1106 [FeatureGFX10, FeatureGFX10_BEncoding, FeatureGFX10_3Insts, rampitec wrote: > gfx1030 should now include FeatureGFX10_AEncoding as well. 10_B is an > extension above 10_A. I had added FeatureGFX10_AEncoding as an Implies feature for FeatureGFX10_BEncoding in the previous patch. But, I've changed the patch so that it's no longer an Implies feature. Comment at: llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.intersect_ray.ll:4 +; RUN: llc -global-isel -march=amdgcn -mcpu=gfx1013 -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s +; RUN: llc -global-isel -march=amdgcn -mcpu=gfx1012 -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s rampitec wrote: > rampitec wrote: > > foad wrote: > > > This test surely should not pass for gfx1012, since it does not have > > > these instructions. And with your patch as written it should fail for > > > gfx1013 too, since they are predicated on HasGFX10_BEncoding. > > > > > > @rampitec any idea what is wrong here? Apparently the backend will > > > happily generate image_bvh_intersect_ray instructions even for gfx900! > > Indeed. MIMG_IntersectRay has this: > > > > ``` > > let SubtargetPredicate = HasGFX10_BEncoding, > > AssemblerPredicate = HasGFX10_BEncoding, > > ``` > > but apparently SubtargetPredicate did not work. It needs to be fixed. > > > > gfx1012 does not have it, gfx1013 does though. That is what GFX10_A > > encoding is about, 10_B it has to be replaced with 10_A in BVH and MSAA > > load. > Image lowering and selection is not really done like everything else. For BVH > it just lowers intrinsic to opcode. I think the easiest fix is to add to > SIISelLowering.cpp where we lower Intrinsic::amdgcn_image_bvh_intersect_ray > something like this: > > > ``` > if (!Subtarget->hasGFX10_AEncoding()) > report_fatal_error( > "requested image instruction is not supported on this GPU"); > ``` I ended up using emitRemovedIntrinsicError, which uses DiagnosticInfoUnsupported. This way the failure isn't a crash dump. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103663/new/ https://reviews.llvm.org/D103663 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D103663: [AMDGPU] Add gfx1013 target
bcahoon updated this revision to Diff 350075. bcahoon added a comment. Addressed review comments. Updated the patch to use the new AEncoding target feature correctly. Added code to report an error for the image intersect intrinsics for unsupported targets. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D103663/new/ https://reviews.llvm.org/D103663 Files: clang/include/clang/Basic/Cuda.h clang/lib/Basic/Cuda.cpp clang/lib/Basic/Targets/AMDGPU.cpp clang/lib/Basic/Targets/NVPTX.cpp clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp clang/test/CodeGenOpenCL/amdgpu-features.cl clang/test/Driver/amdgpu-macros.cl clang/test/Driver/amdgpu-mcpu.cl clang/test/Misc/target-invalid-cpu-note.c llvm/docs/AMDGPUUsage.rst llvm/include/llvm/BinaryFormat/ELF.h llvm/include/llvm/Support/TargetParser.h llvm/lib/Object/ELFObjectFile.cpp llvm/lib/ObjectYAML/ELFYAML.cpp llvm/lib/Support/TargetParser.cpp llvm/lib/Target/AMDGPU/AMDGPU.td llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp llvm/lib/Target/AMDGPU/GCNProcessors.td llvm/lib/Target/AMDGPU/GCNSubtarget.h llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp llvm/lib/Target/AMDGPU/MIMGInstructions.td llvm/lib/Target/AMDGPU/SIISelLowering.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.intersect_ray.ll llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.intersect_ray.ll llvm/test/MC/AMDGPU/dl-insts-err.s llvm/test/MC/AMDGPU/gfx10_unsupported.s llvm/test/Object/AMDGPU/elf-header-flags-mach.yaml llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test llvm/tools/llvm-readobj/ELFDumper.cpp openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp Index: openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp === --- openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp +++ openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp @@ -39,6 +39,8 @@ return "gfx1011"; case EF_AMDGPU_MACH_AMDGCN_GFX1012: return "gfx1012"; + case EF_AMDGPU_MACH_AMDGCN_GFX1013: +return "gfx1013"; case EF_AMDGPU_MACH_AMDGCN_GFX1030: return "gfx1030"; case EF_AMDGPU_MACH_AMDGCN_GFX1031: Index: llvm/tools/llvm-readobj/ELFDumper.cpp === --- llvm/tools/llvm-readobj/ELFDumper.cpp +++ llvm/tools/llvm-readobj/ELFDumper.cpp @@ -1482,6 +1482,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), @@ -1534,6 +1535,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), Index: llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test === --- llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test +++ llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test @@ -223,6 +223,15 @@ # RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 # RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 -DFLAG_VALUE=0x35 +# RUN: yaml2obj %s -o %t -DABI_VERSION=0 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=0 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=1 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=1 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MA
[PATCH] D103663: [AMDGPU] Add gfx1013 target
bcahoon created this revision. bcahoon added reviewers: rampitec, kzhuravl. Herald added subscribers: foad, dexonsmith, kerbowa, rupprecht, jfb, hiraditya, t-tye, tpr, dstuttard, yaxunl, nhaehnle, jvesely, emaste, arsenm, jholewinski. Herald added a reviewer: jhenderson. Herald added a reviewer: MaskRay. bcahoon requested review of this revision. Herald added subscribers: llvm-commits, openmp-commits, cfe-commits, wdng. Herald added projects: clang, OpenMP, LLVM. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D103663 Files: clang/include/clang/Basic/Cuda.h clang/lib/Basic/Cuda.cpp clang/lib/Basic/Targets/AMDGPU.cpp clang/lib/Basic/Targets/NVPTX.cpp clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp clang/test/CodeGenOpenCL/amdgpu-features.cl clang/test/Driver/amdgpu-macros.cl clang/test/Driver/amdgpu-mcpu.cl clang/test/Misc/target-invalid-cpu-note.c llvm/docs/AMDGPUUsage.rst llvm/include/llvm/BinaryFormat/ELF.h llvm/include/llvm/Support/TargetParser.h llvm/lib/Object/ELFObjectFile.cpp llvm/lib/ObjectYAML/ELFYAML.cpp llvm/lib/Support/TargetParser.cpp llvm/lib/Target/AMDGPU/AMDGPU.td llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp llvm/lib/Target/AMDGPU/GCNProcessors.td llvm/lib/Target/AMDGPU/GCNSubtarget.h llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.intersect_ray.ll llvm/test/CodeGen/AMDGPU/directive-amdgcn-target.ll llvm/test/CodeGen/AMDGPU/elf-header-flags-mach.ll llvm/test/CodeGen/AMDGPU/llvm.amdgcn.intersect_ray.ll llvm/test/MC/AMDGPU/dl-insts-err.s llvm/test/MC/AMDGPU/gfx10_unsupported.s llvm/test/tools/llvm-objdump/ELF/AMDGPU/subtarget.ll llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test llvm/tools/llvm-readobj/ELFDumper.cpp openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp Index: openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp === --- openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp +++ openmp/libomptarget/plugins/amdgpu/impl/get_elf_mach_gfx_name.cpp @@ -39,6 +39,8 @@ return "gfx1011"; case EF_AMDGPU_MACH_AMDGCN_GFX1012: return "gfx1012"; + case EF_AMDGPU_MACH_AMDGCN_GFX1013: +return "gfx1013"; case EF_AMDGPU_MACH_AMDGCN_GFX1030: return "gfx1030"; case EF_AMDGPU_MACH_AMDGCN_GFX1031: Index: llvm/tools/llvm-readobj/ELFDumper.cpp === --- llvm/tools/llvm-readobj/ELFDumper.cpp +++ llvm/tools/llvm-readobj/ELFDumper.cpp @@ -1482,6 +1482,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), @@ -1534,6 +1535,7 @@ LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1010), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1011), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1012), + LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1013), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1030), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1031), LLVM_READOBJ_ENUM_ENT(ELF, EF_AMDGPU_MACH_AMDGCN_GFX1032), Index: llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test === --- llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test +++ llvm/test/tools/llvm-readobj/ELF/amdgpu-elf-headers.test @@ -223,6 +223,15 @@ # RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 # RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1012 -DFLAG_VALUE=0x35 +# RUN: yaml2obj %s -o %t -DABI_VERSION=0 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=0 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=1 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=1 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 -DFLAG_VALUE=0x42 + +# RUN: yaml2obj %s -o %t -DABI_VERSION=2 -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_GFX1013 +# RUN: llvm-readobj -h %t | FileCheck %s --check-prefixes=ALL,KNOWN-ABI-VERSION,SINGLE-FLAG --match-full-lines -DABI_VERSION=2 -DFILE=%t -DFLAG_NAME=EF_AMDGPU_MACH_AMDGCN_
[PATCH] D49999: [Hexagon] Remove fp-contract=fast setting for at O3
This revision was automatically updated to reflect the committed changes. Closed by commit rC342078: [Hexagon] Remove fp-contract=fast setting for at O3 (authored by bcahoon, committed by ). Changed prior to commit: https://reviews.llvm.org/D4?vs=158029&id=165143#toc Repository: rC Clang https://reviews.llvm.org/D4 Files: lib/Driver/ToolChains/Hexagon.cpp test/Driver/hexagon-toolchain-elf.c Index: lib/Driver/ToolChains/Hexagon.cpp === --- lib/Driver/ToolChains/Hexagon.cpp +++ lib/Driver/ToolChains/Hexagon.cpp @@ -513,11 +513,6 @@ void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, Action::OffloadKind) const { - if (!DriverArgs.hasArg(options::OPT_ffp_contract)) { -unsigned OptLevel = getOptimizationLevel(DriverArgs); -if (OptLevel >= 3) - CC1Args.push_back("-ffp-contract=fast"); - } if (DriverArgs.hasArg(options::OPT_ffixed_r19)) { CC1Args.push_back("-target-feature"); CC1Args.push_back("+reserved-r19"); Index: test/Driver/hexagon-toolchain-elf.c === --- test/Driver/hexagon-toolchain-elf.c +++ test/Driver/hexagon-toolchain-elf.c @@ -110,7 +110,7 @@ // RUN: -O3 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK026 %s -// CHECK026: "-ffp-contract=fast" +// CHECK026-NOT: "-ffp-contract=fast" // CHECK026: hexagon-link // RUN: %clang -### -target hexagon-unknown-elf \ Index: lib/Driver/ToolChains/Hexagon.cpp === --- lib/Driver/ToolChains/Hexagon.cpp +++ lib/Driver/ToolChains/Hexagon.cpp @@ -513,11 +513,6 @@ void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, Action::OffloadKind) const { - if (!DriverArgs.hasArg(options::OPT_ffp_contract)) { -unsigned OptLevel = getOptimizationLevel(DriverArgs); -if (OptLevel >= 3) - CC1Args.push_back("-ffp-contract=fast"); - } if (DriverArgs.hasArg(options::OPT_ffixed_r19)) { CC1Args.push_back("-target-feature"); CC1Args.push_back("+reserved-r19"); Index: test/Driver/hexagon-toolchain-elf.c === --- test/Driver/hexagon-toolchain-elf.c +++ test/Driver/hexagon-toolchain-elf.c @@ -110,7 +110,7 @@ // RUN: -O3 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK026 %s -// CHECK026: "-ffp-contract=fast" +// CHECK026-NOT: "-ffp-contract=fast" // CHECK026: hexagon-link // RUN: %clang -### -target hexagon-unknown-elf \ ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D49999: [Hexagon] Remove fp-contract=fast setting for at O3
bcahoon created this revision. bcahoon added a reviewer: kparzysz. Herald added a subscriber: cfe-commits. Change Hexagon so that the setting for fp-contract is the default setting. This makes Hexagon consistent with all the other targets. Repository: rC Clang https://reviews.llvm.org/D4 Files: clang/lib/Driver/ToolChains/Hexagon.cpp clang/test/Driver/hexagon-toolchain-elf.c Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -110,7 +110,7 @@ // RUN: -O3 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK026 %s -// CHECK026: "-ffp-contract=fast" +// CHECK026-NOT: "-ffp-contract=fast" // CHECK026: hexagon-link // RUN: %clang -### -target hexagon-unknown-elf \ Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -513,11 +513,6 @@ void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, Action::OffloadKind) const { - if (!DriverArgs.hasArg(options::OPT_ffp_contract)) { -unsigned OptLevel = getOptimizationLevel(DriverArgs); -if (OptLevel >= 3) - CC1Args.push_back("-ffp-contract=fast"); - } if (DriverArgs.hasArg(options::OPT_ffixed_r19)) { CC1Args.push_back("-target-feature"); CC1Args.push_back("+reserved-r19"); Index: clang/test/Driver/hexagon-toolchain-elf.c === --- clang/test/Driver/hexagon-toolchain-elf.c +++ clang/test/Driver/hexagon-toolchain-elf.c @@ -110,7 +110,7 @@ // RUN: -O3 \ // RUN: %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK026 %s -// CHECK026: "-ffp-contract=fast" +// CHECK026-NOT: "-ffp-contract=fast" // CHECK026: hexagon-link // RUN: %clang -### -target hexagon-unknown-elf \ Index: clang/lib/Driver/ToolChains/Hexagon.cpp === --- clang/lib/Driver/ToolChains/Hexagon.cpp +++ clang/lib/Driver/ToolChains/Hexagon.cpp @@ -513,11 +513,6 @@ void HexagonToolChain::addClangTargetOptions(const ArgList &DriverArgs, ArgStringList &CC1Args, Action::OffloadKind) const { - if (!DriverArgs.hasArg(options::OPT_ffp_contract)) { -unsigned OptLevel = getOptimizationLevel(DriverArgs); -if (OptLevel >= 3) - CC1Args.push_back("-ffp-contract=fast"); - } if (DriverArgs.hasArg(options::OPT_ffixed_r19)) { CC1Args.push_back("-target-feature"); CC1Args.push_back("+reserved-r19"); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D48571: improve diagnostics for missing 'template' keyword
This revision was not accepted when it landed; it landed in state "Needs Review". This revision was automatically updated to reflect the committed changes. Closed by commit rL335641: [Hexagon] Add a "generic" cpu (authored by bcahoon, committed by ). Herald added a subscriber: llvm-commits. Changed prior to commit: https://reviews.llvm.org/D48571?vs=152780&id=152931#toc Repository: rL LLVM https://reviews.llvm.org/D48571 Files: llvm/trunk/lib/Target/Hexagon/Hexagon.td llvm/trunk/lib/Target/Hexagon/HexagonSubtarget.cpp llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp llvm/trunk/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp llvm/trunk/test/CodeGen/Hexagon/generic-cpu.ll Index: llvm/trunk/test/CodeGen/Hexagon/generic-cpu.ll === --- llvm/trunk/test/CodeGen/Hexagon/generic-cpu.ll +++ llvm/trunk/test/CodeGen/Hexagon/generic-cpu.ll @@ -0,0 +1,7 @@ +; RUN: llc -mtriple=hexagon-unknown-elf -mcpu=generic < %s | FileCheck %s + +; CHECK-NOT: invalid CPU + +define i32 @test(i32 %a) { + ret i32 0 +} Index: llvm/trunk/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp === --- llvm/trunk/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp +++ llvm/trunk/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp @@ -18,6 +18,6 @@ } extern "C" void LLVMInitializeHexagonTargetInfo() { - RegisterTarget X( + RegisterTarget X( getTheHexagonTarget(), "hexagon", "Hexagon", "Hexagon"); } Index: llvm/trunk/lib/Target/Hexagon/Hexagon.td === --- llvm/trunk/lib/Target/Hexagon/Hexagon.td +++ llvm/trunk/lib/Target/Hexagon/Hexagon.td @@ -322,6 +322,10 @@ list Features> : ProcessorModel; +def : Proc<"generic", HexagonModelV60, + [ArchV4, ArchV5, ArchV55, ArchV60, +FeatureDuplex, FeatureMemops, FeatureNVJ, FeatureNVS, +FeaturePackets, FeatureSmallData]>; def : Proc<"hexagonv4", HexagonModelV4, [ArchV4, FeatureDuplex, FeatureMemops, FeatureNVJ, FeatureNVS, Index: llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp === --- llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp +++ llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp @@ -309,6 +309,7 @@ { std::vector table { +"generic", "hexagonv4", "hexagonv5", "hexagonv55", Index: llvm/trunk/lib/Target/Hexagon/HexagonSubtarget.cpp === --- llvm/trunk/lib/Target/Hexagon/HexagonSubtarget.cpp +++ llvm/trunk/lib/Target/Hexagon/HexagonSubtarget.cpp @@ -92,6 +92,7 @@ HexagonSubtarget & HexagonSubtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS) { static std::map CpuTable{ + {"generic", Hexagon::ArchEnum::V60}, {"hexagonv4", Hexagon::ArchEnum::V4}, {"hexagonv5", Hexagon::ArchEnum::V5}, {"hexagonv55", Hexagon::ArchEnum::V55}, Index: llvm/trunk/test/CodeGen/Hexagon/generic-cpu.ll === --- llvm/trunk/test/CodeGen/Hexagon/generic-cpu.ll +++ llvm/trunk/test/CodeGen/Hexagon/generic-cpu.ll @@ -0,0 +1,7 @@ +; RUN: llc -mtriple=hexagon-unknown-elf -mcpu=generic < %s | FileCheck %s + +; CHECK-NOT: invalid CPU + +define i32 @test(i32 %a) { + ret i32 0 +} Index: llvm/trunk/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp === --- llvm/trunk/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp +++ llvm/trunk/lib/Target/Hexagon/TargetInfo/HexagonTargetInfo.cpp @@ -18,6 +18,6 @@ } extern "C" void LLVMInitializeHexagonTargetInfo() { - RegisterTarget X( + RegisterTarget X( getTheHexagonTarget(), "hexagon", "Hexagon", "Hexagon"); } Index: llvm/trunk/lib/Target/Hexagon/Hexagon.td === --- llvm/trunk/lib/Target/Hexagon/Hexagon.td +++ llvm/trunk/lib/Target/Hexagon/Hexagon.td @@ -322,6 +322,10 @@ list Features> : ProcessorModel; +def : Proc<"generic", HexagonModelV60, + [ArchV4, ArchV5, ArchV55, ArchV60, +FeatureDuplex, FeatureMemops, FeatureNVJ, FeatureNVS, +FeaturePackets, FeatureSmallData]>; def : Proc<"hexagonv4", HexagonModelV4, [ArchV4, FeatureDuplex, FeatureMemops, FeatureNVJ, FeatureNVS, Index: llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp === --- llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp +++ llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp @@ -309,6 +309,7 @@ { std::vector table { +"generic", "hexagonv4", "hexagonv5", "he