; RUN: llc -march=amdgcn -stop-after=amdgpu-isel < %s | FileCheck -check-prefix=GCN %s ; RUN: llc -march=amdgcn -mcpu=gfx906 -stop-after=amdgpu-isel < %s | FileCheck -check-prefix=GCN_DL %s ; GCN-LABEL: name: uniform_xnor_i64 ; GCN: S_XNOR_B64 define amdgpu_kernel void @uniform_xnor_i64(i64 addrspace(1)* %out, i64 %a, i64 %b) { %xor = xor i64 %a, %b %res = xor i64 %xor, -1 store i64 %res, i64 addrspace(1)* %out ret void } ; GCN-LABEL: name: divergent_xnor_i64 ; GCN: V_XOR_B32_e64 ; GCN: V_XOR_B32_e64 ; GCN: V_NOT_B32_e32 ; GCN: V_NOT_B32_e32 ; GCN_DL: V_XNOR_B32_e64 ; GCN_DL: V_XNOR_B32_e64 define i64 @divergent_xnor_i64(i64 addrspace(1)* %out, i64 %a, i64 %b) { %xor = xor i64 %a, %b %res = xor i64 %xor, -1 ret i64 %res } ; GCN-LABEL: name: uniform_xnor_i32 ; GCN: S_XNOR_B32 define amdgpu_kernel void @uniform_xnor_i32(i32 addrspace(1)* %out, i32 %a, i32 %b) { %xor = xor i32 %a, %b %res = xor i32 %xor, -1 store i32 %res, i32 addrspace(1)* %out ret void } ; GCN-LABEL: name: divergent_xnor_i32 ; GCN: V_XOR_B32_e64 ; GCN: V_NOT_B32_e32 ; GCN_DL: V_XNOR_B32_e64 define i32 @divergent_xnor_i32(i32 addrspace(1)* %out, i32 %a, i32 %b) { %xor = xor i32 %a, %b %res = xor i32 %xor, -1 ret i32 %res } declare i32 @llvm.amdgcn.workitem.id.x() #0