1; RUN: llc -march=amdgcn -mcpu=SI < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s 2; RUN: llc -march=amdgcn -mcpu=tonga < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s 3 4declare double @llvm.maxnum.f64(double, double) #0 5declare <2 x double> @llvm.maxnum.v2f64(<2 x double>, <2 x double>) #0 6declare <4 x double> @llvm.maxnum.v4f64(<4 x double>, <4 x double>) #0 7declare <8 x double> @llvm.maxnum.v8f64(<8 x double>, <8 x double>) #0 8declare <16 x double> @llvm.maxnum.v16f64(<16 x double>, <16 x double>) #0 9 10; FUNC-LABEL: @test_fmax_f64 11; SI: v_max_f64 12define void @test_fmax_f64(double addrspace(1)* %out, double %a, double %b) nounwind { 13 %val = call double @llvm.maxnum.f64(double %a, double %b) #0 14 store double %val, double addrspace(1)* %out, align 8 15 ret void 16} 17 18; FUNC-LABEL: @test_fmax_v2f64 19; SI: v_max_f64 20; SI: v_max_f64 21define void @test_fmax_v2f64(<2 x double> addrspace(1)* %out, <2 x double> %a, <2 x double> %b) nounwind { 22 %val = call <2 x double> @llvm.maxnum.v2f64(<2 x double> %a, <2 x double> %b) #0 23 store <2 x double> %val, <2 x double> addrspace(1)* %out, align 16 24 ret void 25} 26 27; FUNC-LABEL: @test_fmax_v4f64 28; SI: v_max_f64 29; SI: v_max_f64 30; SI: v_max_f64 31; SI: v_max_f64 32define void @test_fmax_v4f64(<4 x double> addrspace(1)* %out, <4 x double> %a, <4 x double> %b) nounwind { 33 %val = call <4 x double> @llvm.maxnum.v4f64(<4 x double> %a, <4 x double> %b) #0 34 store <4 x double> %val, <4 x double> addrspace(1)* %out, align 32 35 ret void 36} 37 38; FUNC-LABEL: @test_fmax_v8f64 39; SI: v_max_f64 40; SI: v_max_f64 41; SI: v_max_f64 42; SI: v_max_f64 43; SI: v_max_f64 44; SI: v_max_f64 45; SI: v_max_f64 46; SI: v_max_f64 47define void @test_fmax_v8f64(<8 x double> addrspace(1)* %out, <8 x double> %a, <8 x double> %b) nounwind { 48 %val = call <8 x double> @llvm.maxnum.v8f64(<8 x double> %a, <8 x double> %b) #0 49 store <8 x double> %val, <8 x double> addrspace(1)* %out, align 64 50 ret void 51} 52 53; FUNC-LABEL: @test_fmax_v16f64 54; SI: v_max_f64 55; SI: v_max_f64 56; SI: v_max_f64 57; SI: v_max_f64 58; SI: v_max_f64 59; SI: v_max_f64 60; SI: v_max_f64 61; SI: v_max_f64 62; SI: v_max_f64 63; SI: v_max_f64 64; SI: v_max_f64 65; SI: v_max_f64 66; SI: v_max_f64 67; SI: v_max_f64 68; SI: v_max_f64 69; SI: v_max_f64 70define void @test_fmax_v16f64(<16 x double> addrspace(1)* %out, <16 x double> %a, <16 x double> %b) nounwind { 71 %val = call <16 x double> @llvm.maxnum.v16f64(<16 x double> %a, <16 x double> %b) #0 72 store <16 x double> %val, <16 x double> addrspace(1)* %out, align 128 73 ret void 74} 75 76attributes #0 = { nounwind readnone } 77