brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.8 KiB · 3677e26 Raw
213 lines · plain
1; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn < %s | FileCheck -check-prefixes=FUNC,GCN,FMA_F64 %s2; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global < %s | FileCheck -check-prefixes=FUNC,GCN,FMA_F64 %s3; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx90a -mattr=-flat-for-global < %s | FileCheck -check-prefixes=FUNC,GCN,FMAC_F64 %s4; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1100 -mattr=-flat-for-global < %s | FileCheck -check-prefixes=FUNC,GCN,FMA_F64 %s5; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1250 -mattr=-flat-for-global < %s | FileCheck -check-prefixes=FUNC,GCN,FMAC_F64 %s6 7declare double @llvm.fma.f64(double, double, double) nounwind readnone8declare <2 x double> @llvm.fma.v2f64(<2 x double>, <2 x double>, <2 x double>) nounwind readnone9declare <4 x double> @llvm.fma.v4f64(<4 x double>, <4 x double>, <4 x double>) nounwind readnone10declare double @llvm.fabs.f64(double) nounwind readnone11 12; FUNC-LABEL: {{^}}fma_f64:13; FMA_F64: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}14; FMAC_F64: v_fmac_f64_e32 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}15define amdgpu_kernel void @fma_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1,16                     ptr addrspace(1) %in2, ptr addrspace(1) %in3) {17   %r0 = load double, ptr addrspace(1) %in118   %r1 = load double, ptr addrspace(1) %in219   %r2 = load double, ptr addrspace(1) %in320   %r3 = tail call double @llvm.fma.f64(double %r0, double %r1, double %r2)21   store double %r3, ptr addrspace(1) %out22   ret void23}24 25; FUNC-LABEL: {{^}}fma_v2f64:26; FMA_F64: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}27; FMA_F64: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}28; FMAC_F64: v_fmac_f64_e32 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}29; FMAC_F64: v_fmac_f64_e32 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}30define amdgpu_kernel void @fma_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %in1,31                       ptr addrspace(1) %in2, ptr addrspace(1) %in3) {32   %r0 = load <2 x double>, ptr addrspace(1) %in133   %r1 = load <2 x double>, ptr addrspace(1) %in234   %r2 = load <2 x double>, ptr addrspace(1) %in335   %r3 = tail call <2 x double> @llvm.fma.v2f64(<2 x double> %r0, <2 x double> %r1, <2 x double> %r2)36   store <2 x double> %r3, ptr addrspace(1) %out37   ret void38}39 40; FUNC-LABEL: {{^}}fma_v4f64:41; FMA_F64: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}42; FMA_F64: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}43; FMA_F64: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}44; FMA_F64: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}45; FMAC_F64: v_fmac_f64_e32 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}46; FMAC_F64: v_fmac_f64_e32 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}47; FMAC_F64: v_fmac_f64_e32 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}48; FMAC_F64: v_fmac_f64_e32 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}49define amdgpu_kernel void @fma_v4f64(ptr addrspace(1) %out, ptr addrspace(1) %in1,50                       ptr addrspace(1) %in2, ptr addrspace(1) %in3) {51   %r0 = load <4 x double>, ptr addrspace(1) %in152   %r1 = load <4 x double>, ptr addrspace(1) %in253   %r2 = load <4 x double>, ptr addrspace(1) %in354   %r3 = tail call <4 x double> @llvm.fma.v4f64(<4 x double> %r0, <4 x double> %r1, <4 x double> %r2)55   store <4 x double> %r3, ptr addrspace(1) %out56   ret void57}58 59; FUNC-LABEL: {{^}}fma_f64_abs_src0:60; GCN: v_fma_f64 {{v\[[0-9]+:[0-9]+\], |v\[[0-9]+:[0-9]+\]|, v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}61define amdgpu_kernel void @fma_f64_abs_src0(ptr addrspace(1) %out, ptr addrspace(1) %in1,62                     ptr addrspace(1) %in2, ptr addrspace(1) %in3) {63   %r0 = load double, ptr addrspace(1) %in164   %r1 = load double, ptr addrspace(1) %in265   %r2 = load double, ptr addrspace(1) %in366   %fabs = call double @llvm.fabs.f64(double %r0)67   %r3 = tail call double @llvm.fma.f64(double %fabs, double %r1, double %r2)68   store double %r3, ptr addrspace(1) %out69   ret void70}71 72; FUNC-LABEL: {{^}}fma_f64_abs_src1:73; GCN: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], \|v\[[0-9]+:[0-9]+\]\|, v\[[0-9]+:[0-9]+\]}}74define amdgpu_kernel void @fma_f64_abs_src1(ptr addrspace(1) %out, ptr addrspace(1) %in1,75                     ptr addrspace(1) %in2, ptr addrspace(1) %in3) {76   %r0 = load double, ptr addrspace(1) %in177   %r1 = load double, ptr addrspace(1) %in278   %r2 = load double, ptr addrspace(1) %in379   %fabs = call double @llvm.fabs.f64(double %r1)80   %r3 = tail call double @llvm.fma.f64(double %r0, double %fabs, double %r2)81   store double %r3, ptr addrspace(1) %out82   ret void83}84 85; FUNC-LABEL: {{^}}fma_f64_abs_src2:86; GCN: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], \|v\[[0-9]+:[0-9]+\]\|}}87define amdgpu_kernel void @fma_f64_abs_src2(ptr addrspace(1) %out, ptr addrspace(1) %in1,88                     ptr addrspace(1) %in2, ptr addrspace(1) %in3) {89   %r0 = load double, ptr addrspace(1) %in190   %r1 = load double, ptr addrspace(1) %in291   %r2 = load double, ptr addrspace(1) %in392   %fabs = call double @llvm.fabs.f64(double %r2)93   %r3 = tail call double @llvm.fma.f64(double %r0, double %r1, double %fabs)94   store double %r3, ptr addrspace(1) %out95   ret void96}97 98; FUNC-LABEL: {{^}}fma_f64_neg_src0:99; GCN: v_fma_f64 {{v\[[0-9]+:[0-9]+\], -v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}100define amdgpu_kernel void @fma_f64_neg_src0(ptr addrspace(1) %out, ptr addrspace(1) %in1,101                     ptr addrspace(1) %in2, ptr addrspace(1) %in3) {102   %r0 = load double, ptr addrspace(1) %in1103   %r1 = load double, ptr addrspace(1) %in2104   %r2 = load double, ptr addrspace(1) %in3105   %fsub = fsub double -0.000000e+00, %r0106   %r3 = tail call double @llvm.fma.f64(double %fsub, double %r1, double %r2)107   store double %r3, ptr addrspace(1) %out108   ret void109}110 111; FUNC-LABEL: {{^}}fma_f64_neg_src1:112; GCN: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], -v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}113define amdgpu_kernel void @fma_f64_neg_src1(ptr addrspace(1) %out, ptr addrspace(1) %in1,114                     ptr addrspace(1) %in2, ptr addrspace(1) %in3) {115   %r0 = load double, ptr addrspace(1) %in1116   %r1 = load double, ptr addrspace(1) %in2117   %r2 = load double, ptr addrspace(1) %in3118   %fsub = fsub double -0.000000e+00, %r1119   %r3 = tail call double @llvm.fma.f64(double %r0, double %fsub, double %r2)120   store double %r3, ptr addrspace(1) %out121   ret void122}123 124; FUNC-LABEL: {{^}}fma_f64_neg_src2:125; GCN: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], -v\[[0-9]+:[0-9]+\]}}126define amdgpu_kernel void @fma_f64_neg_src2(ptr addrspace(1) %out, ptr addrspace(1) %in1,127                     ptr addrspace(1) %in2, ptr addrspace(1) %in3) {128   %r0 = load double, ptr addrspace(1) %in1129   %r1 = load double, ptr addrspace(1) %in2130   %r2 = load double, ptr addrspace(1) %in3131   %fsub = fsub double -0.000000e+00, %r2132   %r3 = tail call double @llvm.fma.f64(double %r0, double %r1, double %fsub)133   store double %r3, ptr addrspace(1) %out134   ret void135}136 137; FUNC-LABEL: {{^}}fma_f64_abs_neg_src0:138; GCN: v_fma_f64 {{v\[[0-9]+:[0-9]+\], -\|v\[[0-9]+:[0-9]+\]\|, v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\]}}139define amdgpu_kernel void @fma_f64_abs_neg_src0(ptr addrspace(1) %out, ptr addrspace(1) %in1,140                     ptr addrspace(1) %in2, ptr addrspace(1) %in3) {141   %r0 = load double, ptr addrspace(1) %in1142   %r1 = load double, ptr addrspace(1) %in2143   %r2 = load double, ptr addrspace(1) %in3144   %fabs = call double @llvm.fabs.f64(double %r0)145   %fsub = fsub double -0.000000e+00, %fabs146   %r3 = tail call double @llvm.fma.f64(double %fsub, double %r1, double %r2)147   store double %r3, ptr addrspace(1) %out148   ret void149}150 151; FUNC-LABEL: {{^}}fma_f64_abs_neg_src1:152; GCN: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], -\|v\[[0-9]+:[0-9]+\]\|, v\[[0-9]+:[0-9]+\]}}153define amdgpu_kernel void @fma_f64_abs_neg_src1(ptr addrspace(1) %out, ptr addrspace(1) %in1,154                     ptr addrspace(1) %in2, ptr addrspace(1) %in3) {155   %r0 = load double, ptr addrspace(1) %in1156   %r1 = load double, ptr addrspace(1) %in2157   %r2 = load double, ptr addrspace(1) %in3158   %fabs = call double @llvm.fabs.f64(double %r1)159   %fsub = fsub double -0.000000e+00, %fabs160   %r3 = tail call double @llvm.fma.f64(double %r0, double %fsub, double %r2)161   store double %r3, ptr addrspace(1) %out162   ret void163}164 165; FUNC-LABEL: {{^}}fma_f64_abs_neg_src2:166; GCN: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], -\|v\[[0-9]+:[0-9]+\]\|}}167define amdgpu_kernel void @fma_f64_abs_neg_src2(ptr addrspace(1) %out, ptr addrspace(1) %in1,168                     ptr addrspace(1) %in2, ptr addrspace(1) %in3) {169   %r0 = load double, ptr addrspace(1) %in1170   %r1 = load double, ptr addrspace(1) %in2171   %r2 = load double, ptr addrspace(1) %in3172   %fabs = call double @llvm.fabs.f64(double %r2)173   %fsub = fsub double -0.000000e+00, %fabs174   %r3 = tail call double @llvm.fma.f64(double %r0, double %r1, double %fsub)175   store double %r3, ptr addrspace(1) %out176   ret void177}178 179; FUNC-LABEL: {{^}}fma_f64_lit_src0:180; FMA_F64: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], 2.0, v\[[0-9]+:[0-9]+\]}}181; FMAC_F64: v_fmac_f64_e32 {{v\[[0-9]+:[0-9]+\], 2.0, v\[[0-9]+:[0-9]+\]}}182define amdgpu_kernel void @fma_f64_lit_src0(ptr addrspace(1) %out,183                     ptr addrspace(1) %in2, ptr addrspace(1) %in3) {184   %r1 = load double, ptr addrspace(1) %in2185   %r2 = load double, ptr addrspace(1) %in3186   %r3 = tail call double @llvm.fma.f64(double +2.0, double %r1, double %r2)187   store double %r3, ptr addrspace(1) %out188   ret void189}190 191; FUNC-LABEL: {{^}}fma_f64_lit_src1:192; FMA_F64: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], 2.0, v\[[0-9]+:[0-9]+\]}}193; FMAC_F64: v_fmac_f64_e32 {{v\[[0-9]+:[0-9]+\], 2.0, v\[[0-9]+:[0-9]+\]}}194define amdgpu_kernel void @fma_f64_lit_src1(ptr addrspace(1) %out, ptr addrspace(1) %in1,195                     ptr addrspace(1) %in3) {196   %r0 = load double, ptr addrspace(1) %in1197   %r2 = load double, ptr addrspace(1) %in3198   %r3 = tail call double @llvm.fma.f64(double %r0, double +2.0, double %r2)199   store double %r3, ptr addrspace(1) %out200   ret void201}202 203; FUNC-LABEL: {{^}}fma_f64_lit_src2:204; GCN: v_fma_f64 {{v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], v\[[0-9]+:[0-9]+\], 2.0}}205define amdgpu_kernel void @fma_f64_lit_src2(ptr addrspace(1) %out, ptr addrspace(1) %in1,206                     ptr addrspace(1) %in2) {207   %r0 = load double, ptr addrspace(1) %in1208   %r1 = load double, ptr addrspace(1) %in2209   %r3 = tail call double @llvm.fma.f64(double %r0, double %r1, double +2.0)210   store double %r3, ptr addrspace(1) %out211   ret void212}213