blob: 78ffd577173a8f98cb2fa07a0270b75e844ed651 [file] [log] [blame]
Tom Stellardc54731a2013-07-23 23:55:03 +00001; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s --check-prefix=R600-CHECK
2; RUN: llc < %s -march=r600 -mcpu=SI | FileCheck %s --check-prefix=SI-CHECK
Tom Stellard75aadc22012-12-11 21:25:42 +00003
Tom Stellardc54731a2013-07-23 23:55:03 +00004; DAGCombiner will transform:
5; (fabs (f32 bitcast (i32 a))) => (f32 bitcast (and (i32 a), 0x7FFFFFFF))
6; unless isFabsFree returns true
Tom Stellard75aadc22012-12-11 21:25:42 +00007
Tom Stellardc54731a2013-07-23 23:55:03 +00008; R600-CHECK: @fabs_free
9; R600-CHECK-NOT: AND
10; R600-CHECK: |PV.{{[XYZW]}}|
11; SI-CHECK: @fabs_free
12; SI-CHECK: V_ADD_F32_e64 VGPR{{[0-9]}}, SGPR{{[0-9]}}, 0, 1, 0, 0, 0
13
14define void @fabs_free(float addrspace(1)* %out, i32 %in) {
15entry:
16 %0 = bitcast i32 %in to float
17 %1 = call float @fabs(float %0)
18 store float %1, float addrspace(1)* %out
19 ret void
Tom Stellard75aadc22012-12-11 21:25:42 +000020}
21
Tom Stellard75aadc22012-12-11 21:25:42 +000022declare float @fabs(float ) readnone