brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · 17af7b8 Raw
110 lines · c
1// REQUIRES: systemz-registered-target2// RUN: %clang_cc1 -target-cpu z15 -triple s390x-linux-gnu \3// RUN: -O2 -fzvector -flax-vector-conversions=none \4// RUN: -ffp-exception-behavior=strict \5// RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s6// RUN: %clang_cc1 -target-cpu z15 -triple s390x-linux-gnu \7// RUN: -O2 -fzvector -flax-vector-conversions=none \8// RUN: -ffp-exception-behavior=strict \9// RUN: -Wall -Wno-unused -Werror -S %s -o - | FileCheck %s --check-prefix=CHECK-ASM10 11#include <vecintrin.h>12 13volatile vector signed int vsi;14volatile vector signed long long vsl;15volatile vector unsigned int vui;16volatile vector unsigned long long vul;17volatile vector float vf;18volatile vector double vd;19 20volatile float f;21volatile double d;22 23const float * volatile cptrf;24const double * volatile cptrd;25 26float * volatile ptrf;27double * volatile ptrd;28 29volatile int idx;30 31void test_core(void) {32  // CHECK-ASM-LABEL: test_core33  vector float vf2;34  vector double vd2;35 36  vf += vec_revb(vec_xl(idx, cptrf));37  // CHECK-ASM: vlbrf38  vd += vec_revb(vec_xl(idx, cptrd));39  // CHECK-ASM: vlbrg40 41  vec_xst(vec_revb(vf), idx, ptrf);42  // CHECK-ASM: vstbrf43  vec_xst(vec_revb(vd), idx, ptrd);44  // CHECK-ASM: vstbrg45 46  vf += vec_revb(vec_insert_and_zero(cptrf));47  // CHECK-ASM: vllebrzf48  vd += vec_revb(vec_insert_and_zero(cptrd));49  // CHECK-ASM: vllebrzg50 51  vf += vec_revb(vec_splats(f));52  // CHECK-ASM: vlbrrepf53  vd += vec_revb(vec_splats(d));54  // CHECK-ASM: vlbrrepg55 56  vf2 = vf;57  vf += vec_revb(vec_insert(f, vec_revb(vf2), 0));58  // CHECK-ASM: vlebrf59  vd2 = vd;60  vd += vec_revb(vec_insert(d, vec_revb(vd2), 0));61  // CHECK-ASM: vlebrg62 63  f = vec_extract(vec_revb(vf), 0);64  // CHECK-ASM: vstebrf65  d = vec_extract(vec_revb(vd), 0);66  // CHECK-ASM: vstebrg67 68  vf += vec_reve(vec_xl(idx, cptrf));69  // CHECK-ASM: vlerf70  vd += vec_reve(vec_xl(idx, cptrd));71  // CHECK-ASM: vlerg72 73  vec_xst(vec_reve(vf), idx, ptrf);74  // CHECK-ASM: vsterf75  vec_xst(vec_reve(vd), idx, ptrd);76  // CHECK-ASM: vsterg77}78 79void test_float(void) {80  // CHECK-ASM-LABEL: test_float81 82  vd = vec_double(vsl);83  // CHECK: call <2 x double> @llvm.experimental.constrained.sitofp.v2f64.v2i64(<2 x i64> %{{.*}}, metadata !{{.*}})84  // CHECK-ASM: vcdgb85  vd = vec_double(vul);86  // CHECK: call <2 x double> @llvm.experimental.constrained.uitofp.v2f64.v2i64(<2 x i64> %{{.*}}, metadata !{{.*}})87  // CHECK-ASM: vcdlgb88  vf = vec_float(vsi);89  // CHECK: call <4 x float> @llvm.experimental.constrained.sitofp.v4f32.v4i32(<4 x i32> %{{.*}}, metadata !{{.*}})90  // CHECK-ASM: vcefb91  vf = vec_float(vui);92  // CHECK: call <4 x float> @llvm.experimental.constrained.uitofp.v4f32.v4i32(<4 x i32> %{{.*}}, metadata !{{.*}})93  // CHECK-ASM: vcelfb94 95  vsl = vec_signed(vd);96  // CHECK: call <2 x i64> @llvm.experimental.constrained.fptosi.v2i64.v2f64(<2 x double> %{{.*}}, metadata !{{.*}})97  // CHECK-ASM: vcgdb98  vsi = vec_signed(vf);99  // CHECK: call <4 x i32> @llvm.experimental.constrained.fptosi.v4i32.v4f32(<4 x float> %{{.*}}, metadata !{{.*}})100  // CHECK-ASM: vcfeb101  vul = vec_unsigned(vd);102  // CHECK: call <2 x i64> @llvm.experimental.constrained.fptoui.v2i64.v2f64(<2 x double> %{{.*}}, metadata !{{.*}})103  // CHECK-ASM: vclgdb104  vui = vec_unsigned(vf);105  // xHECK: fptoui <4 x float> %{{.*}} to <4 x i32>106  // CHECK: call <4 x i32> @llvm.experimental.constrained.fptoui.v4i32.v4f32(<4 x float> %{{.*}}, metadata !{{.*}})107  // CHECK-ASM: vclfeb108}109 110