1; RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s 2; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s 3; RUN: llc -march=r600 -mcpu=cypress -verify-machineinstrs < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s 4 5declare i32 @llvm.AMDGPU.abs(i32) nounwind readnone 6 7; Legacy name 8declare i32 @llvm.AMDIL.abs.i32(i32) nounwind readnone 9 10; FUNC-LABEL: {{^}}s_abs_i32: 11; SI: s_abs_i32 12 13; EG: SUB_INT 14; EG: MAX_INT 15define void @s_abs_i32(i32 addrspace(1)* %out, i32 %src) nounwind { 16 %abs = call i32 @llvm.AMDGPU.abs(i32 %src) nounwind readnone 17 store i32 %abs, i32 addrspace(1)* %out, align 4 18 ret void 19} 20 21; FUNC-LABEL: {{^}}v_abs_i32: 22; SI: v_sub_i32_e32 23; SI: v_max_i32_e32 24; SI: s_endpgm 25 26; EG: SUB_INT 27; EG: MAX_INT 28define void @v_abs_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %src) nounwind { 29 %val = load i32, i32 addrspace(1)* %src, align 4 30 %abs = call i32 @llvm.AMDGPU.abs(i32 %val) nounwind readnone 31 store i32 %abs, i32 addrspace(1)* %out, align 4 32 ret void 33} 34 35; FUNC-LABEL: {{^}}abs_i32_legacy_amdil: 36; SI: v_sub_i32_e32 37; SI: v_max_i32_e32 38; SI: s_endpgm 39 40; EG: SUB_INT 41; EG: MAX_INT 42define void @abs_i32_legacy_amdil(i32 addrspace(1)* %out, i32 addrspace(1)* %src) nounwind { 43 %val = load i32, i32 addrspace(1)* %src, align 4 44 %abs = call i32 @llvm.AMDIL.abs.i32(i32 %val) nounwind readnone 45 store i32 %abs, i32 addrspace(1)* %out, align 4 46 ret void 47} 48