brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.0 KiB · 5c44b68 Raw
245 lines · plain
1; RUN: llc -vector-library=MASSV < %s -mtriple=powerpc64le-unknown-unknown -mcpu=pwr10 | FileCheck -check-prefixes=CHECK-PWR9 %s2; RUN: llc -vector-library=MASSV < %s -mtriple=powerpc64le-unknown-unknown -mcpu=pwr9 | FileCheck -check-prefixes=CHECK-PWR9 %s3; RUN: llc -vector-library=MASSV < %s -mtriple=powerpc64le-unknown-unknown -mcpu=pwr8 | FileCheck -check-prefixes=CHECK-PWR8 %s4; RUN: llc -vector-library=MASSV < %s -mtriple=powerpc-ibm-aix-xcoff -mcpu=pwr10 | FileCheck -check-prefixes=CHECK-PWR10 %s5; RUN: llc -vector-library=MASSV < %s -mtriple=powerpc-ibm-aix-xcoff -mcpu=pwr9 | FileCheck -check-prefixes=CHECK-PWR9 %s6; RUN: llc -vector-library=MASSV < %s -mtriple=powerpc-ibm-aix-xcoff -mcpu=pwr8 | FileCheck -check-prefixes=CHECK-PWR8 %s7; RUN: llc -vector-library=MASSV < %s -mtriple=powerpc-ibm-aix-xcoff -mcpu=pwr7 | FileCheck -check-prefixes=CHECK-PWR7 %s8 9; Exponent is a variable10define void @vpow_var(ptr nocapture %z, ptr nocapture readonly %y, ptr nocapture readonly %x) {11; CHECK-LABEL:       @vpow_var12; CHECK-PWR10:       __powd2_P1013; CHECK-PWR9:        __powd2_P914; CHECK-PWR8:        __powd2_P815; CHECK-PWR7:        __powd2_P716; CHECK:             blr17entry:18  br label %vector.body19 20vector.body:21  %index = phi i64 [ %index.next, %vector.body ], [ 0, %entry ]22  %next.gep = getelementptr double, ptr %z, i64 %index23  %next.gep31 = getelementptr double, ptr %y, i64 %index24  %next.gep32 = getelementptr double, ptr %x, i64 %index25  %wide.load = load <2 x double>, ptr %next.gep32, align 826  %wide.load33 = load <2 x double>, ptr %next.gep31, align 827  %0 = call ninf afn nsz <2 x double> @__powd2(<2 x double> %wide.load, <2 x double> %wide.load33)28  store <2 x double> %0, ptr %next.gep, align 829  %index.next = add i64 %index, 230  %1 = icmp eq i64 %index.next, 102431  br i1 %1, label %for.end, label %vector.body32 33for.end:34  ret void35}36 37; Exponent is a constant != 0.75 and !=0.2538define void @vpow_const(ptr nocapture %y, ptr nocapture readonly %x) {39; CHECK-LABEL:       @vpow_const40; CHECK-PWR10:       __powd2_P1041; CHECK-PWR9:        __powd2_P942; CHECK-PWR8:        __powd2_P843; CHECK-PWR7:        __powd2_P744; CHECK:             blr45entry:46  br label %vector.body47 48vector.body:49  %index = phi i64 [ %index.next, %vector.body ], [ 0, %entry ]50  %next.gep = getelementptr double, ptr %y, i64 %index51  %next.gep19 = getelementptr double, ptr %x, i64 %index52  %wide.load = load <2 x double>, ptr %next.gep19, align 853  %0 = call ninf afn nsz <2 x double> @__powd2(<2 x double> %wide.load, <2 x double> <double 7.600000e-01, double 7.600000e-01>)54  store <2 x double> %0, ptr %next.gep, align 855  %index.next = add i64 %index, 256  %1 = icmp eq i64 %index.next, 102457  br i1 %1, label %for.end, label %vector.body58 59for.end:60  ret void61}62 63; Exponent is a constant != 0.75 and !=0.25 and they are different 64define void @vpow_noeq_const(ptr nocapture %y, ptr nocapture readonly %x) {65; CHECK-LABEL:       @vpow_noeq_const66; CHECK-PWR10:       __powd2_P1067; CHECK-PWR9:        __powd2_P968; CHECK-PWR8:        __powd2_P869; CHECK-PWR7:        __powd2_P770; CHECK:             blr71entry:72  br label %vector.body73 74vector.body:75  %index = phi i64 [ %index.next, %vector.body ], [ 0, %entry ]76  %next.gep = getelementptr double, ptr %y, i64 %index77  %next.gep19 = getelementptr double, ptr %x, i64 %index78  %wide.load = load <2 x double>, ptr %next.gep19, align 879  %0 = call ninf afn nsz <2 x double> @__powd2(<2 x double> %wide.load, <2 x double> <double 7.700000e-01, double 7.600000e-01>)80  store <2 x double> %0, ptr %next.gep, align 881  %index.next = add i64 %index, 282  %1 = icmp eq i64 %index.next, 102483  br i1 %1, label %for.end, label %vector.body84 85for.end:86  ret void87}88 89; Exponent is a constant != 0.75 and !=0.25 and they are different 90define void @vpow_noeq075_const(ptr nocapture %y, ptr nocapture readonly %x) {91; CHECK-LABEL:       @vpow_noeq075_const92; CHECK-PWR10:       __powd2_P1093; CHECK-PWR9:        __powd2_P994; CHECK-PWR8:        __powd2_P895; CHECK-PWR7:        __powd2_P796; CHECK:             blr97entry:98  br label %vector.body99 100vector.body:101  %index = phi i64 [ %index.next, %vector.body ], [ 0, %entry ]102  %next.gep = getelementptr double, ptr %y, i64 %index103  %next.gep19 = getelementptr double, ptr %x, i64 %index104  %wide.load = load <2 x double>, ptr %next.gep19, align 8105  %0 = call ninf afn nsz <2 x double> @__powd2(<2 x double> %wide.load, <2 x double> <double 7.700000e-01, double 7.500000e-01>)106  store <2 x double> %0, ptr %next.gep, align 8107  %index.next = add i64 %index, 2108  %1 = icmp eq i64 %index.next, 1024109  br i1 %1, label %for.end, label %vector.body110 111for.end:112  ret void113}114 115; Exponent is a constant != 0.75 and !=0.25 and they are different 116define void @vpow_noeq025_const(ptr nocapture %y, ptr nocapture readonly %x) {117; CHECK-LABEL:       @vpow_noeq025_const118; CHECK-PWR10:       __powd2_P10119; CHECK-PWR9:        __powd2_P9120; CHECK-PWR8:        __powd2_P8121; CHECK-PWR7:        __powd2_P7122; CHECK:             blr123entry:124  br label %vector.body125 126vector.body:127  %index = phi i64 [ %index.next, %vector.body ], [ 0, %entry ]128  %next.gep = getelementptr double, ptr %y, i64 %index129  %next.gep19 = getelementptr double, ptr %x, i64 %index130  %wide.load = load <2 x double>, ptr %next.gep19, align 8131  %0 = call ninf afn nsz <2 x double> @__powd2(<2 x double> %wide.load, <2 x double> <double 7.700000e-01, double 2.500000e-01>)132  store <2 x double> %0, ptr %next.gep, align 8133  %index.next = add i64 %index, 2134  %1 = icmp eq i64 %index.next, 1024135  br i1 %1, label %for.end, label %vector.body136 137for.end:138  ret void139}140 141; Exponent is 0.75142define void @vpow_075(ptr nocapture %y, ptr nocapture readonly %x) {143; CHECK-LABEL:       @vpow_075144; CHECK-NOT:         __powd2_P{{[7,8,9,10]}}145; CHECK:             xvrsqrtesp146; CHECK:             blr147entry:148  br label %vector.body149 150vector.body:151  %index = phi i64 [ %index.next, %vector.body ], [ 0, %entry ]152  %next.gep = getelementptr double, ptr %y, i64 %index153  %next.gep19 = getelementptr double, ptr %x, i64 %index154  %wide.load = load <2 x double>, ptr %next.gep19, align 8155  %0 = call ninf afn <2 x double> @__powd2(<2 x double> %wide.load, <2 x double> <double 7.500000e-01, double 7.500000e-01>)156  store <2 x double> %0, ptr %next.gep, align 8157  %index.next = add i64 %index, 2158  %1 = icmp eq i64 %index.next, 1024159  br i1 %1, label %for.end, label %vector.body160 161for.end:162  ret void163}164 165; Exponent is 0.25166define void @vpow_025(ptr nocapture %y, ptr nocapture readonly %x) {167; CHECK-LABEL:       @vpow_025168; CHECK-NOT:         __powd2_P{{[7,8,9,10]}}169; CHECK:             xvrsqrtesp170; CHECK:             blr171entry:172  br label %vector.body173 174vector.body:175  %index = phi i64 [ %index.next, %vector.body ], [ 0, %entry ]176  %next.gep = getelementptr double, ptr %y, i64 %index177  %next.gep19 = getelementptr double, ptr %x, i64 %index178  %wide.load = load <2 x double>, ptr %next.gep19, align 8179  %0 = call ninf afn nsz <2 x double> @__powd2(<2 x double> %wide.load, <2 x double> <double 2.500000e-01, double 2.500000e-01>)180  store <2 x double> %0, ptr %next.gep, align 8181  %index.next = add i64 %index, 2182  %1 = icmp eq i64 %index.next, 1024183  br i1 %1, label %for.end, label %vector.body184 185for.end:186  ret void187}188 189; Exponent is 0.75 but no proper fast-math flags190define void @vpow_075_nofast(ptr nocapture %y, ptr nocapture readonly %x) {191; CHECK-LABEL:       @vpow_075_nofast192; CHECK-PWR10:       __powd2_P10193; CHECK-PWR9:        __powd2_P9194; CHECK-PWR8:        __powd2_P8195; CHECK-PWR7:        __powd2_P7196; CHECK-NOT:         xvrsqrtesp197; CHECK:             blr198entry:199  br label %vector.body200 201vector.body:202  %index = phi i64 [ %index.next, %vector.body ], [ 0, %entry ]203  %next.gep = getelementptr double, ptr %y, i64 %index204  %next.gep19 = getelementptr double, ptr %x, i64 %index205  %wide.load = load <2 x double>, ptr %next.gep19, align 8206  %0 = call <2 x double> @__powd2(<2 x double> %wide.load, <2 x double> <double 7.500000e-01, double 7.500000e-01>)207  store <2 x double> %0, ptr %next.gep, align 8208  %index.next = add i64 %index, 2209  %1 = icmp eq i64 %index.next, 1024210  br i1 %1, label %for.end, label %vector.body211 212for.end:213  ret void214}215 216; Exponent is 0.25 but no proper fast-math flags217define void @vpow_025_nofast(ptr nocapture %y, ptr nocapture readonly %x) {218; CHECK-LABEL:       @vpow_025_nofast219; CHECK-PWR10:       __powd2_P10220; CHECK-PWR9:        __powd2_P9221; CHECK-PWR8:        __powd2_P8222; CHECK-PWR7:        __powd2_P7223; CHECK-NOT:         xvrsqrtesp224; CHECK:             blr225entry:226  br label %vector.body227 228vector.body:229  %index = phi i64 [ %index.next, %vector.body ], [ 0, %entry ]230  %next.gep = getelementptr double, ptr %y, i64 %index231  %next.gep19 = getelementptr double, ptr %x, i64 %index232  %wide.load = load <2 x double>, ptr %next.gep19, align 8233  %0 = call <2 x double> @__powd2(<2 x double> %wide.load, <2 x double> <double 2.500000e-01, double 2.500000e-01>)234  store <2 x double> %0, ptr %next.gep, align 8235  %index.next = add i64 %index, 2236  %1 = icmp eq i64 %index.next, 1024237  br i1 %1, label %for.end, label %vector.body238 239for.end:240  ret void241}242 243; Function Attrs: nounwind readnone speculatable willreturn244declare <2 x double> @__powd2(<2 x double>, <2 x double>) #1245