llvm-project/clang/test/CodeGen/X86/x86-long-double.cpp
Simon Pilgrim ae85da86ad [Codegen][X86] Begin moving X86 specific codegen tests into X86 subfolder.
Discussed with @craig.topper and @spatel - this is to try and tidyup the codegen folder and move the x86 specific tests (as opposed to general tests that just happen to use x86 triples) into subfolders. Its up to other targets if they follow suit.

It also helps speed up test iterations as using wildcards on lit commands often misses some filenames.
2020-09-08 13:01:24 +01:00

57 lines
2.5 KiB
C++

// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686 | \
// RUN: FileCheck --check-prefixes=FP80,FP80-ELF32 %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-apple-darwin | \
// RUN: FileCheck --check-prefixes=FP80,FP80-DARWIN %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64 | \
// RUN: FileCheck --check-prefixes=FP80,FP80-ELF64 %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64-apple-darwin | \
// RUN: FileCheck --check-prefixes=FP80,FP80-DARWIN %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686 -mlong-double-64 | \
// RUN: FileCheck --check-prefixes=FP64,FP64-X32 %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-apple-darwin -mlong-double-64 | \
// RUN: FileCheck --check-prefixes=FP64,FP64-X32 %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64 -mlong-double-64 | \
// RUN: FileCheck --check-prefixes=FP64,FP64-X64 %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64-apple-darwin -mlong-double-64 | \
// RUN: FileCheck --check-prefixes=FP64,FP64-X64 %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686 -mlong-double-128 | \
// RUN: FileCheck --check-prefix=FP128 %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686-apple-darwin -mlong-double-128 | \
// RUN: FileCheck --check-prefix=FP128 %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64 -mlong-double-128 | \
// RUN: FileCheck --check-prefix=FP128 %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64-apple-darwin -mlong-double-128 | \
// RUN: FileCheck --check-prefix=FP128 %s
// Check -malign-double increases the alignment from 4 to 8 on x86-32.
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=i686 -mlong-double-64 \
// RUN: -malign-double | FileCheck --check-prefixes=FP64,FP64-X64 %s
// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64 -mlong-double-64 \
// RUN: -malign-double | FileCheck --check-prefixes=FP64,FP64-X64 %s
long double x = 0;
int size = sizeof(x);
// FP80-ELF32: @x = global x86_fp80 {{.*}}, align 4
// FP80-ELF32: @size = global i32 12
// FP80-ELF64: @x = global x86_fp80 {{.*}}, align 16
// FP80-ELF64: @size = global i32 16
// FP80-DARWIN: @x = global x86_fp80 {{.*}}, align 16
// FP80-DARWIN: @size = global i32 16
// FP64-X32: @x = global double {{.*}}, align 4
// FP64-X32: @size = global i32 8
// FP64-X64: @x = global double {{.*}}, align 8
// FP64-X64: @size = global i32 8
// FP128: @x = global fp128 {{.*}}, align 16
// FP128: @size = global i32 16
long double foo(long double d) { return d; }
// FP64: double @_Z3fooe(double %d)
// FP80: x86_fp80 @_Z3fooe(x86_fp80 %d)
// FP128: fp128 @_Z3foog(fp128 %d)