blob: a615825a45d32116c24a1286a528365afc4c1d19 [file] [log] [blame]
Matt Arsenault1e3a4eb2014-12-12 02:30:37 +00001; RUN: llc -march=r600 -mcpu=SI < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
2; Make sure we don't try to form FMAX_LEGACY nodes with f64
3
4declare i32 @llvm.r600.read.tidig.x() #1
5
6; FUNC-LABEL: @test_fmax_legacy_uge_f64
7define void @test_fmax_legacy_uge_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 {
8 %tid = call i32 @llvm.r600.read.tidig.x() #1
9 %gep.0 = getelementptr double addrspace(1)* %in, i32 %tid
10 %gep.1 = getelementptr double addrspace(1)* %gep.0, i32 1
11
12 %a = load double addrspace(1)* %gep.0, align 8
13 %b = load double addrspace(1)* %gep.1, align 8
14
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
18 ret void
19}
20
21; FUNC-LABEL: @test_fmax_legacy_oge_f64
22define void @test_fmax_legacy_oge_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 {
23 %tid = call i32 @llvm.r600.read.tidig.x() #1
24 %gep.0 = getelementptr double addrspace(1)* %in, i32 %tid
25 %gep.1 = getelementptr double addrspace(1)* %gep.0, i32 1
26
27 %a = load double addrspace(1)* %gep.0, align 8
28 %b = load double addrspace(1)* %gep.1, align 8
29
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
33 ret void
34}
35
36; FUNC-LABEL: @test_fmax_legacy_ugt_f64
37define void @test_fmax_legacy_ugt_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 {
38 %tid = call i32 @llvm.r600.read.tidig.x() #1
39 %gep.0 = getelementptr double addrspace(1)* %in, i32 %tid
40 %gep.1 = getelementptr double addrspace(1)* %gep.0, i32 1
41
42 %a = load double addrspace(1)* %gep.0, align 8
43 %b = load double addrspace(1)* %gep.1, align 8
44
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
48 ret void
49}
50
51; FUNC-LABEL: @test_fmax_legacy_ogt_f64
52define void @test_fmax_legacy_ogt_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 {
53 %tid = call i32 @llvm.r600.read.tidig.x() #1
54 %gep.0 = getelementptr double addrspace(1)* %in, i32 %tid
55 %gep.1 = getelementptr double addrspace(1)* %gep.0, i32 1
56
57 %a = load double addrspace(1)* %gep.0, align 8
58 %b = load double addrspace(1)* %gep.1, align 8
59
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
63 ret void
64}
65
66attributes #0 = { nounwind }
67attributes #1 = { nounwind readnone }