brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · f64129d Raw
71 lines · plain
1; Test loads of f128 floating-point constants on z14.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s4; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s -check-prefix=CONST5 6; Test loading zero.7define void @f1(ptr %x) {8; CHECK-LABEL: f1:9; CHECK: vzero [[REG:%v[0-9]+]]10; CHECK: vst [[REG]], 0(%r2)11; CHECK: br %r1412  store fp128 0xL00000000000000000000000000000000, ptr %x13  ret void14}15 16; Test loading of negative floating-point zero.17define void @f2(ptr %x) {18; CHECK-LABEL: f2:19; CHECK: vzero [[REG:%v[0-9]+]]20; CHECK: wflnxb [[REG]], [[REG]]21; CHECK: vst [[REG]], 0(%r2)22; CHECK: br %r1423  store fp128 0xL00000000000000008000000000000000, ptr %x24  ret void25}26 27; Test loading of a 128-bit floating-point constant.  This value would28; actually fit within the 32-bit format, but we don't have extending29; loads into vector registers.30define void @f3(ptr %x) {31; CHECK-LABEL: f3:32; CHECK: larl [[REGISTER:%r[1-5]+]], {{.*}}33; CHECK: vl [[REG:%v[0-9]+]], 0([[REGISTER]])34; CHECK: vst [[REG]], 0(%r2)35; CHECK: br %r1436; CONST: .quad 0x3fff00000200000037; CONST: .quad 0x038  store fp128 0xL00000000000000003fff000002000000, ptr %x39  ret void40}41 42; Test that VGBM works.43define void @f4(ptr %x) {44; CHECK-LABEL: f4:45; CHECK:      vgbm %v0, 2184546; CHECK-NEXT: vst %v0, 0(%r2)47; CHECK-NEXT: br %r1448  store fp128 0xL00ff00ff00ff00ff00ff00ff00ff00ff, ptr %x49  ret void50}51 52; Test that VREPI works.53define void @f5(ptr %x) {54; CHECK-LABEL: f5:55; CHECK:      vrepib  %v0, -856; CHECK-NEXT: vst %v0, 0(%r2)57; CHECK-NEXT: br %r1458  store fp128 0xLf8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8, ptr %x59  ret void60}61 62; Test that VGM works.63define void @f6(ptr %x) {64; CHECK-LABEL: f6:65; CHECK:      vgmg %v0, 12, 3166; CHECK-NEXT: vst %v0, 0(%r2)67; CHECK-NEXT: br %r1468  store fp128 0xL000fffff00000000000fffff00000000, ptr %x69  ret void70}71