blob: 872de025eca1830e1b31916e0138225f1f837b96 [file] [edit]
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 6
// REQUIRES: amdgpu-registered-target
// RUN: %clang --target=%target -mcpu=%cpu %libclc_lib -cl-std=CL3.0 -O2 -fno-discard-value-names -emit-llvm -S -o - %s | FileCheck %s --check-prefix=%check_prefix
// AMDGCN-LABEL: define hidden noundef signext i8 @test_char(
// AMDGCN-SAME: i8 noundef signext [[X:%.*]], i8 noundef signext [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
// AMDGCN-NEXT: [[ENTRY:.*:]]
// AMDGCN-NEXT: [[TMP0:%.*]] = tail call noundef i8 @llvm.ssub.sat.i8(i8 [[X]], i8 [[Y]])
// AMDGCN-NEXT: ret i8 [[TMP0]]
//
char test_char(char x, char y) {
return sub_sat(x, y);
}
// AMDGCN-LABEL: define hidden noundef zeroext i8 @test_uchar(
// AMDGCN-SAME: i8 noundef zeroext [[X:%.*]], i8 noundef zeroext [[Y:%.*]]) local_unnamed_addr #[[ATTR0]] {
// AMDGCN-NEXT: [[ENTRY:.*:]]
// AMDGCN-NEXT: [[TMP0:%.*]] = tail call noundef i8 @llvm.usub.sat.i8(i8 [[X]], i8 [[Y]])
// AMDGCN-NEXT: ret i8 [[TMP0]]
//
uchar test_uchar(uchar x, uchar y) {
return sub_sat(x, y);
}
// AMDGCN-LABEL: define hidden noundef i64 @test_long(
// AMDGCN-SAME: i64 noundef [[X:%.*]], i64 noundef [[Y:%.*]]) local_unnamed_addr #[[ATTR0]] {
// AMDGCN-NEXT: [[ENTRY:.*:]]
// AMDGCN-NEXT: [[TMP0:%.*]] = tail call noundef i64 @llvm.ssub.sat.i64(i64 [[X]], i64 [[Y]])
// AMDGCN-NEXT: ret i64 [[TMP0]]
//
long test_long(long x, long y) {
return sub_sat(x, y);
}
// AMDGCN-LABEL: define hidden noundef i64 @test_ulong(
// AMDGCN-SAME: i64 noundef [[X:%.*]], i64 noundef [[Y:%.*]]) local_unnamed_addr #[[ATTR0]] {
// AMDGCN-NEXT: [[ENTRY:.*:]]
// AMDGCN-NEXT: [[TMP0:%.*]] = tail call noundef i64 @llvm.usub.sat.i64(i64 [[X]], i64 [[Y]])
// AMDGCN-NEXT: ret i64 [[TMP0]]
//
ulong test_ulong(ulong x, ulong y) {
return sub_sat(x, y);
}