1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s 2*9880d681SAndroid Build Coastguard Worker; Make sure we don't try to form FMAX_LEGACY nodes with f64 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.amdgcn.workitem.id.x() #1 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @test_fmax_legacy_uge_f64 7*9880d681SAndroid Build Coastguard Workerdefine void @test_fmax_legacy_uge_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 { 8*9880d681SAndroid Build Coastguard Worker %tid = call i32 @llvm.amdgcn.workitem.id.x() #1 9*9880d681SAndroid Build Coastguard Worker %gep.0 = getelementptr double, double addrspace(1)* %in, i32 %tid 10*9880d681SAndroid Build Coastguard Worker %gep.1 = getelementptr double, double addrspace(1)* %gep.0, i32 1 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker %a = load double, double addrspace(1)* %gep.0, align 8 13*9880d681SAndroid Build Coastguard Worker %b = load double, double addrspace(1)* %gep.1, align 8 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker %cmp = fcmp uge double %a, %b 16*9880d681SAndroid Build Coastguard Worker %val = select i1 %cmp, double %a, double %b 17*9880d681SAndroid Build Coastguard Worker store double %val, double addrspace(1)* %out, align 8 18*9880d681SAndroid Build Coastguard Worker ret void 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @test_fmax_legacy_oge_f64 22*9880d681SAndroid Build Coastguard Workerdefine void @test_fmax_legacy_oge_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 { 23*9880d681SAndroid Build Coastguard Worker %tid = call i32 @llvm.amdgcn.workitem.id.x() #1 24*9880d681SAndroid Build Coastguard Worker %gep.0 = getelementptr double, double addrspace(1)* %in, i32 %tid 25*9880d681SAndroid Build Coastguard Worker %gep.1 = getelementptr double, double addrspace(1)* %gep.0, i32 1 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker %a = load double, double addrspace(1)* %gep.0, align 8 28*9880d681SAndroid Build Coastguard Worker %b = load double, double addrspace(1)* %gep.1, align 8 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oge double %a, %b 31*9880d681SAndroid Build Coastguard Worker %val = select i1 %cmp, double %a, double %b 32*9880d681SAndroid Build Coastguard Worker store double %val, double addrspace(1)* %out, align 8 33*9880d681SAndroid Build Coastguard Worker ret void 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @test_fmax_legacy_ugt_f64 37*9880d681SAndroid Build Coastguard Workerdefine void @test_fmax_legacy_ugt_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 { 38*9880d681SAndroid Build Coastguard Worker %tid = call i32 @llvm.amdgcn.workitem.id.x() #1 39*9880d681SAndroid Build Coastguard Worker %gep.0 = getelementptr double, double addrspace(1)* %in, i32 %tid 40*9880d681SAndroid Build Coastguard Worker %gep.1 = getelementptr double, double addrspace(1)* %gep.0, i32 1 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker %a = load double, double addrspace(1)* %gep.0, align 8 43*9880d681SAndroid Build Coastguard Worker %b = load double, double addrspace(1)* %gep.1, align 8 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ugt double %a, %b 46*9880d681SAndroid Build Coastguard Worker %val = select i1 %cmp, double %a, double %b 47*9880d681SAndroid Build Coastguard Worker store double %val, double addrspace(1)* %out, align 8 48*9880d681SAndroid Build Coastguard Worker ret void 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @test_fmax_legacy_ogt_f64 52*9880d681SAndroid Build Coastguard Workerdefine void @test_fmax_legacy_ogt_f64(double addrspace(1)* %out, double addrspace(1)* %in) #0 { 53*9880d681SAndroid Build Coastguard Worker %tid = call i32 @llvm.amdgcn.workitem.id.x() #1 54*9880d681SAndroid Build Coastguard Worker %gep.0 = getelementptr double, double addrspace(1)* %in, i32 %tid 55*9880d681SAndroid Build Coastguard Worker %gep.1 = getelementptr double, double addrspace(1)* %gep.0, i32 1 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker %a = load double, double addrspace(1)* %gep.0, align 8 58*9880d681SAndroid Build Coastguard Worker %b = load double, double addrspace(1)* %gep.1, align 8 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt double %a, %b 61*9880d681SAndroid Build Coastguard Worker %val = select i1 %cmp, double %a, double %b 62*9880d681SAndroid Build Coastguard Worker store double %val, double addrspace(1)* %out, align 8 63*9880d681SAndroid Build Coastguard Worker ret void 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 67*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone } 68