brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · bd9d939 Raw
32 lines · c
1// RUN: %clang_cc1 -triple mipsel-unknown-linux -O3 -o - -emit-llvm %s | FileCheck %s -check-prefix=O322// RUN: %clang_cc1 -triple mips64el-unknown-linux -O3 -target-abi n64 -o - -emit-llvm %s | FileCheck %s -check-prefix=N643 4// vectors larger than 16-bytes are returned via the hidden pointer argument. 5// N64/N32 returns vectors whose size is equal to or smaller than 16-bytes in6// integer registers. 7typedef float  v4sf __attribute__ ((__vector_size__ (16)));8typedef double v4df __attribute__ ((__vector_size__ (32)));9typedef int v4i32 __attribute__ ((__vector_size__ (16)));10 11// O32-LABEL: define{{.*}} void @test_v4sf(ptr {{.*}} sret12// N64: define{{.*}} inreg { i64, i64 } @test_v4sf13v4sf test_v4sf(float a) {14  return (v4sf){0.0f, a, 0.0f, 0.0f};15}16 17// O32-LABEL: define{{.*}} void @test_v4df(ptr {{.*}} sret18// N64-LABEL: define{{.*}} void @test_v4df(ptr {{.*}} sret19v4df test_v4df(double a) {20  return (v4df){0.0, a, 0.0, 0.0};21}22 23// O32 returns integer vectors whose size is equal to or smaller than 16-bytes24// in integer registers.25//26// O32: define{{.*}} inreg { i32, i32, i32, i32 } @test_v4i3227// N64: define{{.*}} inreg { i64, i64 } @test_v4i3228v4i32 test_v4i32(int a) {29  return (v4i32){0, a, 0, 0};30}31 32