// 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 -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); }