26 lines
2.0 KiB
Plaintext
26 lines
2.0 KiB
Plaintext
// The test checks that ISPC doesn't produce SSE42 instructions like "pcmpgtq" on SSE41 platforms.
|
|
// It also checks that sse4.1 and sse4.2 targets can't be used together in multi-target compilation.
|
|
|
|
// RUN: %{ispc} %s --target=sse4.1-i8x16 --emit-asm --nostdlib -o - | FileCheck %s --implicit-check-not "pcmpgtq"
|
|
// RUN: %{ispc} %s --target=sse4.1-i16x8 --emit-asm --nostdlib -o - | FileCheck %s --implicit-check-not "pcmpgtq"
|
|
// RUN: %{ispc} %s --target=sse4.1-i32x4 --emit-asm --nostdlib -o - | FileCheck %s --implicit-check-not "pcmpgtq"
|
|
// RUN: %{ispc} %s --target=sse4.1-i32x8 --emit-asm --nostdlib -o - | FileCheck %s --implicit-check-not "pcmpgtq"
|
|
// RUN: %{ispc} %s --target=sse4.2-i8x16 --cpu=penryn --emit-asm --nostdlib -o - | FileCheck %s --implicit-check-not "pcmpgtq"
|
|
// RUN: %{ispc} %s --target=sse4.2-i16x8 --cpu=penryn --emit-asm --nostdlib -o - | FileCheck %s --implicit-check-not "pcmpgtq"
|
|
// RUN: %{ispc} %s --target=sse4.2-i32x4 --cpu=penryn --emit-asm --nostdlib -o - | FileCheck %s --implicit-check-not "pcmpgtq"
|
|
// RUN: %{ispc} %s --target=sse4.2-i32x8 --cpu=penryn --emit-asm --nostdlib -o - | FileCheck %s --implicit-check-not "pcmpgtq"
|
|
// RUN: %{ispc} %s --target=sse4.2-i8x16 --emit-asm --nostdlib -o - | FileCheck %s -check-prefix=CHECK_SSE4
|
|
// RUN: %{ispc} %s --target=sse4.2-i16x8 --emit-asm --nostdlib -o - | FileCheck %s -check-prefix=CHECK_SSE4
|
|
// RUN: %{ispc} %s --target=sse4.2-i32x4 --emit-asm --nostdlib -o - | FileCheck %s -check-prefix=CHECK_SSE4
|
|
// RUN: %{ispc} %s --target=sse4.2-i32x8 --emit-asm --nostdlib -o - | FileCheck %s -check-prefix=CHECK_SSE4
|
|
|
|
// RUN: not %{ispc} %s --nowrap --target=sse4.1-i32x8,sse4.2-i32x8 --nostdlib 2>&1 | FileCheck %s -check-prefix=CHECK_ERROR
|
|
// RUN: not %{ispc} %s --nowrap --target=sse4.2-i32x8,sse4.1-i32x8 --nostdlib 2>&1 | FileCheck %s -check-prefix=CHECK_ERROR
|
|
// REQUIRES: X86_ENABLED
|
|
|
|
// CHECK_SSE4: pcmpgtq
|
|
// CHECK_ERROR: Error: Can't compile to multiple variants of sse4 target!
|
|
bool foo(int64 a, int64 b) {
|
|
return a>b;
|
|
}
|