xref: /aosp_15_r20/external/llvm/test/CodeGen/AMDGPU/schedule-fs-loop.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker;RUN: llc < %s -march=r600 -mcpu=cayman -stress-sched -verify-misched -verify-machineinstrs
2*9880d681SAndroid Build Coastguard Worker;REQUIRES: asserts
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine void @main() {
5*9880d681SAndroid Build Coastguard Workermain_body:
6*9880d681SAndroid Build Coastguard Worker  %0 = load <4 x float>, <4 x float> addrspace(9)* null
7*9880d681SAndroid Build Coastguard Worker  %1 = extractelement <4 x float> %0, i32 3
8*9880d681SAndroid Build Coastguard Worker  %2 = fptosi float %1 to i32
9*9880d681SAndroid Build Coastguard Worker  %3 = bitcast i32 %2 to float
10*9880d681SAndroid Build Coastguard Worker  %4 = load <4 x float>, <4 x float> addrspace(9)* null
11*9880d681SAndroid Build Coastguard Worker  %5 = extractelement <4 x float> %4, i32 0
12*9880d681SAndroid Build Coastguard Worker  %6 = load <4 x float>, <4 x float> addrspace(9)* null
13*9880d681SAndroid Build Coastguard Worker  %7 = extractelement <4 x float> %6, i32 1
14*9880d681SAndroid Build Coastguard Worker  %8 = load <4 x float>, <4 x float> addrspace(9)* null
15*9880d681SAndroid Build Coastguard Worker  %9 = extractelement <4 x float> %8, i32 2
16*9880d681SAndroid Build Coastguard Worker  br label %LOOP
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard WorkerLOOP:                                             ; preds = %ENDIF, %main_body
19*9880d681SAndroid Build Coastguard Worker  %temp4.0 = phi float [ %5, %main_body ], [ %temp5.0, %ENDIF ]
20*9880d681SAndroid Build Coastguard Worker  %temp5.0 = phi float [ %7, %main_body ], [ %temp6.0, %ENDIF ]
21*9880d681SAndroid Build Coastguard Worker  %temp6.0 = phi float [ %9, %main_body ], [ %temp4.0, %ENDIF ]
22*9880d681SAndroid Build Coastguard Worker  %temp8.0 = phi float [ 0.000000e+00, %main_body ], [ %27, %ENDIF ]
23*9880d681SAndroid Build Coastguard Worker  %10 = bitcast float %temp8.0 to i32
24*9880d681SAndroid Build Coastguard Worker  %11 = bitcast float %3 to i32
25*9880d681SAndroid Build Coastguard Worker  %12 = icmp sge i32 %10, %11
26*9880d681SAndroid Build Coastguard Worker  %13 = sext i1 %12 to i32
27*9880d681SAndroid Build Coastguard Worker  %14 = bitcast i32 %13 to float
28*9880d681SAndroid Build Coastguard Worker  %15 = bitcast float %14 to i32
29*9880d681SAndroid Build Coastguard Worker  %16 = icmp ne i32 %15, 0
30*9880d681SAndroid Build Coastguard Worker  br i1 %16, label %IF, label %ENDIF
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard WorkerIF:                                               ; preds = %LOOP
33*9880d681SAndroid Build Coastguard Worker  %17 = call float @llvm.AMDGPU.clamp.f32(float %temp4.0, float 0.000000e+00, float 1.000000e+00)
34*9880d681SAndroid Build Coastguard Worker  %18 = call float @llvm.AMDGPU.clamp.f32(float %temp5.0, float 0.000000e+00, float 1.000000e+00)
35*9880d681SAndroid Build Coastguard Worker  %19 = call float @llvm.AMDGPU.clamp.f32(float %temp6.0, float 0.000000e+00, float 1.000000e+00)
36*9880d681SAndroid Build Coastguard Worker  %20 = call float @llvm.AMDGPU.clamp.f32(float 1.000000e+00, float 0.000000e+00, float 1.000000e+00)
37*9880d681SAndroid Build Coastguard Worker  %21 = insertelement <4 x float> undef, float %17, i32 0
38*9880d681SAndroid Build Coastguard Worker  %22 = insertelement <4 x float> %21, float %18, i32 1
39*9880d681SAndroid Build Coastguard Worker  %23 = insertelement <4 x float> %22, float %19, i32 2
40*9880d681SAndroid Build Coastguard Worker  %24 = insertelement <4 x float> %23, float %20, i32 3
41*9880d681SAndroid Build Coastguard Worker  call void @llvm.R600.store.swizzle(<4 x float> %24, i32 0, i32 0)
42*9880d681SAndroid Build Coastguard Worker  ret void
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard WorkerENDIF:                                            ; preds = %LOOP
45*9880d681SAndroid Build Coastguard Worker  %25 = bitcast float %temp8.0 to i32
46*9880d681SAndroid Build Coastguard Worker  %26 = add i32 %25, 1
47*9880d681SAndroid Build Coastguard Worker  %27 = bitcast i32 %26 to float
48*9880d681SAndroid Build Coastguard Worker  br label %LOOP
49*9880d681SAndroid Build Coastguard Worker}
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.AMDGPU.clamp.f32(float, float, float) #0
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.R600.store.swizzle(<4 x float>, i32, i32)
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Workerattributes #0 = { readnone }
56