1010
1111; RUN: igc_opt -igc-replace-unsupported-intrinsics -dce -S < %s 2>&1 | FileCheck %s 
1212
13- define  i64  @test_smax  (i64  %argL , i64  %argR ) {
14- ;   CHECK-LABEL: define i64 @test_smax ( 
13+ define  i64  @test_smax_i64  (i64  %argL , i64  %argR ) {
14+ ;   CHECK-LABEL: define i64 @test_smax_i64 ( 
1515;   %[[CMP:.*]] = icmp slt i64 %argL, %argR 
1616;   %[[RES:.*]] = select i1 %[[CMP]], i64 %argL, %argR 
1717;   ret %[[RES]] 
1818    %1  = call  i64  @llvm.smax.i64 (i64  %argL , i64  %argR )
1919    ret  i64  %1 
2020}
2121
22- define  i64  @test_smin  (i64  %argL , i64  %argR ) {
23- ;   CHECK-LABEL: define i64 @test_smin ( 
22+ define  i64  @test_smin_i64  (i64  %argL , i64  %argR ) {
23+ ;   CHECK-LABEL: define i64 @test_smin_i64 ( 
2424;   %[[CMP:.*]] = icmp sgt i64 %argL, %argR 
2525;   %[[RES:.*]] = select i1 %[[CMP]], i64 %argL, %argR 
2626;   ret %[[RES]] 
2727    %1  = call  i64  @llvm.smin.i64 (i64  %argL , i64  %argR )
2828    ret  i64  %1 
2929}
3030
31- define  i64  @test_umax  (i64  %argL , i64  %argR ) {
32- ;   CHECK-LABEL: define i64 @test_umax ( 
31+ define  i64  @test_umax_i64  (i64  %argL , i64  %argR ) {
32+ ;   CHECK-LABEL: define i64 @test_umax_i64 ( 
3333;   %[[CMP:.*]] = icmp ult i64 %argL, %argR 
3434;   %[[RES:.*]] = select i1 %[[CMP]], i64 %argL, %argR 
3535;   ret %[[RES]] 
3636    %1  = call  i64  @llvm.umax.i64 (i64  %argL , i64  %argR )
3737    ret  i64  %1 
3838}
3939
40- define  i64  @test_umin  (i64  %argL , i64  %argR ) {
41- ;   CHECK-LABEL: define i64 @test_umin ( 
40+ define  i64  @test_umin_i64  (i64  %argL , i64  %argR ) {
41+ ;   CHECK-LABEL: define i64 @test_umin_i64 ( 
4242;   %[[CMP:.*]] = icmp ugt i64 %argL, %argR 
4343;   %[[RES:.*]] = select i1 %[[CMP]], i64 %argL, %argR 
4444;   ret %[[RES]] 
4545    %1  = call  i64  @llvm.umin.i64 (i64  %argL , i64  %argR )
4646    ret  i64  %1 
4747}
4848
49+ define  i1  @test_smax_i1 (i1  %argL , i1  %argR ) {
50+ ;   CHECK-LABEL: define i1 @test_smax_i1( 
51+ ;   %[[MAX:.*]] = or i1 %argL, %argR 
52+ ;   ret %[[MAX]] 
53+     %1  = call  i1  @llvm.smax.i1 (i1  %argL , i1  %argR )
54+     ret  i1  %1 
55+ }
56+ 
57+ define  i1  @test_umax_i1 (i1  %argL , i1  %argR ) {
58+ ;   CHECK-LABEL: define i1 @test_umax_i1( 
59+ ;   %[[MAX:.*]] = or ult i1 %argL, %argR 
60+ ;   ret %[[MAX]] 
61+     %1  = call  i1  @llvm.umax.i1 (i1  %argL , i1  %argR )
62+     ret  i1  %1 
63+ }
64+ 
65+ define  i1  @test_smin_i1 (i1  %argL , i1  %argR ) {
66+ ;   CHECK-LABEL: define i1 @test_smin_i1( 
67+ ;   %[[MIN:.*]] = and i1 %argL, %argR 
68+ ;   ret %[[MIN]] 
69+     %1  = call  i1  @llvm.smin.i1 (i1  %argL , i1  %argR )
70+     ret  i1  %1 
71+ }
72+ 
73+ define  i1  @test_umin_i1 (i1  %argL , i1  %argR ) {
74+ ;   CHECK-LABEL: define i1 @test_umin_i1( 
75+ ;   %[[MIN:.*]] = and i1 %argL, %argR 
76+ ;   ret %[[MIN]] 
77+     %1  = call  i1  @llvm.umin.i1 (i1  %argL , i1  %argR )
78+     ret  i1  %1 
79+ }
80+ 
4981define  i32  @test_smax_i32 (i32  %argL , i32  %argR ) {
5082;   CHECK-LABEL: define i32 @test_smax_i32( 
5183;   %1 = call i32 @llvm.smax.i32(i32 %argL, i32 %argR) 
@@ -58,4 +90,8 @@ declare i64 @llvm.smax.i64(i64, i64)
5890declare  i64  @llvm.smin.i64 (i64 , i64 )
5991declare  i64  @llvm.umax.i64 (i64 , i64 )
6092declare  i64  @llvm.umin.i64 (i64 , i64 )
93+ declare  i1  @llvm.smax.i1 (i1 , i1 )
94+ declare  i1  @llvm.umax.i1 (i1 , i1 )
95+ declare  i1  @llvm.smin.i1 (i1 , i1 )
96+ declare  i1  @llvm.umin.i1 (i1 , i1 )
6197declare  i32  @llvm.smax.i32 (i32 , i32 )
0 commit comments