brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 57cf28f Raw
57 lines · c
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py2// REQUIRES: native, target=powerpc64-{{.*}}3// The stdlib.h included in mm_malloc.h references native system header4// like: bits/libc-header-start.h or features.h, cross-compile it may5// require installing target headers in build env, otherwise expecting6// failures. So this test will focus on native build only.7 8// RUN: %clang -target powerpc64-unknown-linux-gnu -S -emit-llvm %s -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt | FileCheck %s9// RUN: %clang -target powerpc64-ibm-aix -S -emit-llvm %s -fno-discard-value-names -mllvm -disable-llvm-optzns -o - | llvm-cxxfilt | FileCheck %s10 11#include <mm_malloc.h>12 13 14void __attribute__((noinline))15test_mm_malloc() {16  char *buf = _mm_malloc(100, 16);17  _mm_free(buf);18}19 20// CHECK-LABEL: @test_mm_malloc21 22// CHECK: define internal ptr @_mm_malloc(i64 noundef [[REG1:[0-9a-zA-Z_%.]+]], i64 noundef [[REG2:[0-9a-zA-Z_%.]+]])23// CHECK: [[REG3:[0-9a-zA-Z_%.]+]] = alloca ptr, align 824// CHECK: store i64 [[REG1]], ptr [[REG4:[0-9a-zA-Z_%.]+]], align 825// CHECK-NEXT: store i64 [[REG2]], ptr [[REG5:[0-9a-zA-Z_%.]+]], align 826// CHECK-NEXT: store i64 16, ptr [[REG6:[0-9a-zA-Z_%.]+]], align 827// CHECK-NEXT: [[REG8:[0-9a-zA-Z_%.]+]] = load i64, ptr [[REG5]], align 828// CHECK-NEXT: [[REG9:[0-9a-zA-Z_%.]+]] = load i64, ptr [[REG6]], align 829// CHECK-NEXT: [[REG10:[0-9a-zA-Z_%.]+]] = icmp ult i64 [[REG8]], [[REG9]]30// CHECK-NEXT: br i1 [[REG10]], label %[[REG23:[0-9a-zA-Z_%.]+]], label %[[REG24:[0-9a-zA-Z_%.]+]]31// CHECK: [[REG23]]:32// CHECK-NEXT: [[REG25:[0-9a-zA-Z_%.]+]] = load i64, ptr [[REG6]], align 833// CHECK-NEXT: store i64 [[REG25]], ptr [[REG5]], align 834// CHECK-NEXT: br label %[[REG24:[0-9a-zA-Z_%.]+]]35// CHECK: [[REG24]]:36// CHECK-NEXT: [[REG26:[0-9a-zA-Z_%.]+]] = load i64, ptr [[REG5]], align 837// CHECK-NEXT: [[REG27:[0-9a-zA-Z_%.]+]] = load i64, ptr [[REG4]], align 838// CHECK-NEXT: [[REG28:[0-9a-zA-Z_%.]+]] = call signext i32 @posix_memalign(ptr noundef [[REG29:[0-9a-zA-Z_%.]+]], i64 noundef [[REG26]], i64 noundef [[REG27]])39// CHECK-NEXT: [[REG30:[0-9a-zA-Z_%.]+]] = icmp eq i32 [[REG28]], 040// CHECK-NEXT: br i1 [[REG30]], label %[[REG31:[0-9a-zA-Z_%.]+]], label %[[REG32:[0-9a-zA-Z_%.]+]]41// CHECK: [[REG31]]:42// CHECK-NEXT: [[REG33:[0-9a-zA-Z_%.]+]] = load ptr, ptr [[REG29]], align 843// CHECK-NEXT: store ptr [[REG33]], ptr [[REG3]], align 844// CHECK-NEXT: br label %[[REG19:[0-9a-zA-Z_%.]+]]45// CHECK: [[REG32]]:46// CHECK-NEXT: store ptr null, ptr [[REG3]], align 847// CHECK-NEXT: br label %[[REG19:[0-9a-zA-Z_%.]+]]48// CHECK: [[REG19]]:49// CHECK-NEXT: [[REG34:[0-9a-zA-Z_%.]+]] = load ptr, ptr [[REG3]], align 850// CHECK-NEXT: ret ptr [[REG34]]51 52// CHECK: define internal void @_mm_free(ptr noundef [[REG35:[0-9a-zA-Z_%.]+]])53// CHECK: store ptr [[REG35]], ptr [[REG36:[0-9a-zA-Z_%.]+]], align 854// CHECK-NEXT: [[REG37:[0-9a-zA-Z_%.]+]] = load ptr, ptr [[REG36]], align 855// CHECK-NEXT: call void @free(ptr noundef [[REG37]])56// CHECK-NEXT: ret void57