brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · 70a8095 Raw
77 lines · plain
1; RUN: llc < %s -mtriple armv7a-none-linux-gnueabihf -mcpu=cortex-a5 | FileCheck %s -check-prefix=CHECK-LINUXA52; RUN: llc < %s -mtriple armv7a-none-linux-gnueabihf -mcpu=cortex-a8 | FileCheck %s -check-prefix=CHECK-LINUXA83; RUN: llc < %s -mtriple armv7a-none-linux-gnueabihf -mcpu=cortex-a9 | FileCheck %s -check-prefix=CHECK-LINUXA94; RUN: llc < %s -mtriple armv7a-none-linux-gnueabihf -mcpu=cortex-a15 | FileCheck %s -check-prefix=CHECK-LINUXA155; RUN: llc < %s -mtriple armv7a-none-linux-gnueabihf -mcpu=swift | FileCheck %s -check-prefix=CHECK-LINUXSWIFT6 7; RUN: llc < %s -mtriple armv7a-none-linux-gnueabihf -mcpu=cortex-a5 --denormal-fp-math=preserve-sign | FileCheck %s -check-prefix=CHECK-UNSAFEA58; RUN: llc < %s -mtriple armv7a-none-linux-gnueabihf -mcpu=cortex-a8 --denormal-fp-math=preserve-sign | FileCheck %s -check-prefix=CHECK-UNSAFEA89; RUN: llc < %s -mtriple armv7a-none-linux-gnueabihf -mcpu=cortex-a9 --denormal-fp-math=preserve-sign | FileCheck %s -check-prefix=CHECK-UNSAFEA910; RUN: llc < %s -mtriple armv7a-none-linux-gnueabihf -mcpu=cortex-a15 --denormal-fp-math=preserve-sign| FileCheck %s -check-prefix=CHECK-UNSAFEA1511; RUN: llc < %s -mtriple armv7a-none-linux-gnueabihf -mcpu=swift --denormal-fp-math=preserve-sign | FileCheck %s -check-prefix=CHECK-UNSAFESWIFT12 13; RUN: llc < %s -mtriple armv7a-none-darwin -mcpu=cortex-a5 | FileCheck %s -check-prefix=CHECK-DARWINA514; RUN: llc < %s -mtriple armv7a-none-darwin -mcpu=cortex-a8 | FileCheck %s -check-prefix=CHECK-DARWINA815; RUN: llc < %s -mtriple armv7a-none-darwin -mcpu=cortex-a9 | FileCheck %s -check-prefix=CHECK-DARWINA916; RUN: llc < %s -mtriple armv7a-none-darwin -mcpu=cortex-a15 | FileCheck %s -check-prefix=CHECK-DARWINA1517; RUN: llc < %s -mtriple armv7a-none-darwin -mcpu=swift | FileCheck %s -check-prefix=CHECK-DARWINSWIFT18 19; This test makes sure we're not lowering VMUL.f32 D* (aka. NEON) for single-prec. FP ops, since20; NEON is not fully IEEE 754 compliant, unless unsafe-math is selected.21 22@.str = private unnamed_addr constant [12 x i8] c"S317\09%.5g \0A\00", align 123 24; CHECK-LINUXA5-LABEL: main:25; CHECK-LINUXA8-LABEL: main:26; CHECK-LINUXA9-LABEL: main:27; CHECK-LINUXA15-LABEL: main:28; CHECK-LINUXSWIFT-LABEL: main:29; CHECK-UNSAFEA5-LABEL: main:30; CHECK-UNSAFEA8-LABEL: main:31; CHECK-UNSAFEA9-LABEL: main:32; CHECK-UNSAFEA15-LABEL: main:33; CHECK-UNSAFESWIFT-LABEL: main:34; CHECK-DARWINA5-LABEL: main:35; CHECK-DARWINA8-LABEL: main:36; CHECK-DARWINA9-LABEL: main:37; CHECK-DARWINA15-LABEL: main:38; CHECK-DARWINSWIFT-LABEL: main:39define i32 @main() {40entry:41  br label %for.body42 43for.body:                                         ; preds = %for.body, %entry44  %i.04 = phi i32 [ 0, %entry ], [ %inc, %for.body ]45  %q.03 = phi float [ 1.000000e+00, %entry ], [ %mul, %for.body ]46  %mul = fmul float %q.03, 0x3FEFAE148000000047; CHECK-LINUXA5: vmul.f32 s{{[0-9]*}}48; CHECK-LINUXA8: vmul.f32 s{{[0-9]*}}49; CHECK-LINUXA9: vmul.f32 s{{[0-9]*}}50; CHECK-LINUXA15: vmul.f32 s{{[0-9]*}}51; Swift is *always* unsafe52; CHECK-LINUXSWIFT: vmul.f32 d{{[0-9]*}}53 54; CHECK-UNSAFEA5: vmul.f32 d{{[0-9]*}}55; CHECK-UNSAFEA8: vmul.f32 d{{[0-9]*}}56; A9 and A15 don't need this57; CHECK-UNSAFEA9: vmul.f32 s{{[0-9]*}}58; CHECK-UNSAFEA15: vmul.f32 s{{[0-9]*}}59; CHECK-UNSAFESWIFT: vmul.f32 d{{[0-9]*}}60 61; CHECK-DARWINA5: vmul.f32 d{{[0-9]*}}62; CHECK-DARWINA8: vmul.f32 d{{[0-9]*}}63; CHECK-DARWINA9: vmul.f32 s{{[0-9]*}}64; CHECK-DARWINA15: vmul.f32 s{{[0-9]*}}65; CHECK-DARWINSWIFT: vmul.f32 d{{[0-9]*}}66  %conv = fpext float %mul to double67  %call = tail call i32 (ptr, ...) @printf(ptr @.str, double %conv) #168  %inc = add nsw i32 %i.04, 169  %exitcond = icmp eq i32 %inc, 1600070  br i1 %exitcond, label %for.end, label %for.body71 72for.end:                                          ; preds = %for.body73  ret i32 074}75 76declare i32 @printf(ptr nocapture, ...)77