1 ; RUN: llc -march=amdgcn < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
2 ; Make sure we don't try to form FMAX_LEGACY nodes with f64
4 declare i32 @llvm.amdgcn.workitem.id.x() #1
6 ; FUNC-LABEL: @test_fmax_legacy_uge_f64
7 define amdgpu_kernel void @test_fmax_legacy_uge_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 {
8 %tid = call i32 @llvm.amdgcn.workitem.id.x() #1
9 %gep.0 = getelementptr double, double addrspace(1)* %in, i32 %tid
10 %gep.1 = getelementptr double, double addrspace(1)* %gep.0, i32 1
12 %a = load double, double addrspace(1)* %gep.0, align 8
13 %b = load double, double addrspace(1)* %gep.1, align 8
15 %cmp = fcmp uge double %a, %b
16 %val = select i1 %cmp, double %a, double %b
17 store double %val, double addrspace(1)* %out, align 8
21 ; FUNC-LABEL: @test_fmax_legacy_oge_f64
22 define amdgpu_kernel void @test_fmax_legacy_oge_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 {
23 %tid = call i32 @llvm.amdgcn.workitem.id.x() #1
24 %gep.0 = getelementptr double, double addrspace(1)* %in, i32 %tid
25 %gep.1 = getelementptr double, double addrspace(1)* %gep.0, i32 1
27 %a = load double, double addrspace(1)* %gep.0, align 8
28 %b = load double, double addrspace(1)* %gep.1, align 8
30 %cmp = fcmp oge double %a, %b
31 %val = select i1 %cmp, double %a, double %b
32 store double %val, double addrspace(1)* %out, align 8
36 ; FUNC-LABEL: @test_fmax_legacy_ugt_f64
37 define amdgpu_kernel void @test_fmax_legacy_ugt_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 {
38 %tid = call i32 @llvm.amdgcn.workitem.id.x() #1
39 %gep.0 = getelementptr double, double addrspace(1)* %in, i32 %tid
40 %gep.1 = getelementptr double, double addrspace(1)* %gep.0, i32 1
42 %a = load double, double addrspace(1)* %gep.0, align 8
43 %b = load double, double addrspace(1)* %gep.1, align 8
45 %cmp = fcmp ugt double %a, %b
46 %val = select i1 %cmp, double %a, double %b
47 store double %val, double addrspace(1)* %out, align 8
51 ; FUNC-LABEL: @test_fmax_legacy_ogt_f64
52 define amdgpu_kernel void @test_fmax_legacy_ogt_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 {
53 %tid = call i32 @llvm.amdgcn.workitem.id.x() #1
54 %gep.0 = getelementptr double, double addrspace(1)* %in, i32 %tid
55 %gep.1 = getelementptr double, double addrspace(1)* %gep.0, i32 1
57 %a = load double, double addrspace(1)* %gep.0, align 8
58 %b = load double, double addrspace(1)* %gep.1, align 8
60 %cmp = fcmp ogt double %a, %b
61 %val = select i1 %cmp, double %a, double %b
62 store double %val, double addrspace(1)* %out, align 8
66 attributes #0 = { nounwind }
67 attributes #1 = { nounwind readnone }