brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 430958b Raw
40 lines · c
1// RUN: %clang_cc1 -triple s390x-linux-gnu -emit-llvm -o - %s \2// RUN: | FileCheck %s3 4void f(__fp16 *a, __fp16 *b, __fp16 *c, __fp16 *d, __fp16 *e) {5  *e = (*a) * (*b) + (*c) * (*d);6}7 8// CHECK-LABEL: define dso_local void @f(ptr noundef %a, ptr noundef %b, ptr noundef %c, ptr noundef %d, ptr noundef %e) #0 {9// CHECK-NEXT:  entry:10// CHECK-NEXT:    %a.addr = alloca ptr, align 811// CHECK-NEXT:    %b.addr = alloca ptr, align 812// CHECK-NEXT:    %c.addr = alloca ptr, align 813// CHECK-NEXT:    %d.addr = alloca ptr, align 814// CHECK-NEXT:    %e.addr = alloca ptr, align 815// CHECK-NEXT:    store ptr %a, ptr %a.addr, align 816// CHECK-NEXT:    store ptr %b, ptr %b.addr, align 817// CHECK-NEXT:    store ptr %c, ptr %c.addr, align 818// CHECK-NEXT:    store ptr %d, ptr %d.addr, align 819// CHECK-NEXT:    store ptr %e, ptr %e.addr, align 820// CHECK-NEXT:    %0 = load ptr, ptr %a.addr, align 821// CHECK-NEXT:    %1 = load half, ptr %0, align 222// CHECK-NEXT:    %conv = fpext half %1 to float23// CHECK-NEXT:    %2 = load ptr, ptr %b.addr, align 824// CHECK-NEXT:    %3 = load half, ptr %2, align 225// CHECK-NEXT:    %conv1 = fpext half %3 to float26// CHECK-NEXT:    %mul = fmul float %conv, %conv127// CHECK-NEXT:    %4 = load ptr, ptr %c.addr, align 828// CHECK-NEXT:    %5 = load half, ptr %4, align 229// CHECK-NEXT:    %conv2 = fpext half %5 to float30// CHECK-NEXT:    %6 = load ptr, ptr %d.addr, align 831// CHECK-NEXT:    %7 = load half, ptr %6, align 232// CHECK-NEXT:    %conv3 = fpext half %7 to float33// CHECK-NEXT:    %mul4 = fmul float %conv2, %conv334// CHECK-NEXT:    %add = fadd float %mul, %mul435// CHECK-NEXT:    %8 = fptrunc float %add to half36// CHECK-NEXT:    %9 = load ptr, ptr %e.addr, align 837// CHECK-NEXT:    store half %8, ptr %9, align 238// CHECK-NEXT:    ret void39// CHECK-NEXT:  }40