From 541041d1eaa83346532d16785ec0ff8d795be8ba Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Sat, 5 Nov 2022 11:23:27 -0700 Subject: [PATCH] AMDGPU: Fix faulty divergence analysis tests These were supposed to be checking that atomics were treated as divergence sources. However, they were using function arguments which are always treated as divergent, so they could have been found divergent for the wrong reason. --- llvm/test/Analysis/DivergenceAnalysis/AMDGPU/atomics.ll | 11 +++++++---- llvm/test/Analysis/LegacyDivergenceAnalysis/AMDGPU/atomics.ll | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/llvm/test/Analysis/DivergenceAnalysis/AMDGPU/atomics.ll b/llvm/test/Analysis/DivergenceAnalysis/AMDGPU/atomics.ll index dec529a2..12d7fba 100644 --- a/llvm/test/Analysis/DivergenceAnalysis/AMDGPU/atomics.ll +++ b/llvm/test/Analysis/DivergenceAnalysis/AMDGPU/atomics.ll @@ -1,15 +1,18 @@ ; RUN: opt -mtriple amdgcn-- -passes='print' -disable-output %s 2>&1 | FileCheck %s ; CHECK: DIVERGENT: %orig = atomicrmw xchg i32* %ptr, i32 %val seq_cst -define i32 @test1(i32* %ptr, i32 %val) #0 { +define amdgpu_kernel void @test1(i32* %ptr, i32 %val) #0 { %orig = atomicrmw xchg i32* %ptr, i32 %val seq_cst - ret i32 %orig + store i32 %orig, i32* %ptr + ret void } ; CHECK: DIVERGENT: %orig = cmpxchg i32* %ptr, i32 %cmp, i32 %new seq_cst seq_cst -define {i32, i1} @test2(i32* %ptr, i32 %cmp, i32 %new) { +define amdgpu_kernel void @test2(i32* %ptr, i32 %cmp, i32 %new) { %orig = cmpxchg i32* %ptr, i32 %cmp, i32 %new seq_cst seq_cst - ret {i32, i1} %orig + %val = extractvalue { i32, i1 } %orig, 0 + store i32 %val, i32* %ptr + ret void } ; CHECK: DIVERGENT: %ret = call i32 @llvm.amdgcn.atomic.inc.i32.p1i32(i32 addrspace(1)* %ptr, i32 %val, i32 0, i32 0, i1 false) diff --git a/llvm/test/Analysis/LegacyDivergenceAnalysis/AMDGPU/atomics.ll b/llvm/test/Analysis/LegacyDivergenceAnalysis/AMDGPU/atomics.ll index 932ac8e..e6f2385 100644 --- a/llvm/test/Analysis/LegacyDivergenceAnalysis/AMDGPU/atomics.ll +++ b/llvm/test/Analysis/LegacyDivergenceAnalysis/AMDGPU/atomics.ll @@ -1,15 +1,18 @@ ; RUN: opt -mtriple=amdgcn-- -amdgpu-use-legacy-divergence-analysis -passes='print' 2>&1 -disable-output %s | FileCheck %s ; CHECK: DIVERGENT: %orig = atomicrmw xchg i32* %ptr, i32 %val seq_cst -define i32 @test1(i32* %ptr, i32 %val) #0 { +define amdgpu_kernel void @test1(i32* %ptr, i32 %val) #0 { %orig = atomicrmw xchg i32* %ptr, i32 %val seq_cst - ret i32 %orig + store i32 %orig, i32* %ptr + ret void } ; CHECK: DIVERGENT: %orig = cmpxchg i32* %ptr, i32 %cmp, i32 %new seq_cst seq_cst -define {i32, i1} @test2(i32* %ptr, i32 %cmp, i32 %new) { +define amdgpu_kernel void @test2(i32* %ptr, i32 %cmp, i32 %new) { %orig = cmpxchg i32* %ptr, i32 %cmp, i32 %new seq_cst seq_cst - ret {i32, i1} %orig + %val = extractvalue { i32, i1 } %orig, 0 + store i32 %val, i32* %ptr + ret void } ; CHECK: DIVERGENT: %ret = call i32 @llvm.amdgcn.atomic.inc.i32.p1i32(i32 addrspace(1)* %ptr, i32 %val, i32 0, i32 0, i1 false) -- 2.7.4