1*9880d681SAndroid Build Coastguard Worker; RUN: opt -lint -disable-output %s 2>&1 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @use_vector_sdiv(<2 x i32> %a) nounwind { 4*9880d681SAndroid Build Coastguard Worker %b = sdiv <2 x i32> %a, <i32 5, i32 8> 5*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %b 6*9880d681SAndroid Build Coastguard Worker} 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @use_vector_srem(<2 x i32> %a) nounwind { 9*9880d681SAndroid Build Coastguard Worker %b = srem <2 x i32> %a, <i32 5, i32 8> 10*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %b 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @use_vector_udiv(<2 x i32> %a) nounwind { 14*9880d681SAndroid Build Coastguard Worker %b = udiv <2 x i32> %a, <i32 5, i32 8> 15*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %b 16*9880d681SAndroid Build Coastguard Worker} 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @use_vector_urem(<2 x i32> %a) nounwind { 19*9880d681SAndroid Build Coastguard Worker %b = urem <2 x i32> %a, <i32 5, i32 8> 20*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %b 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine i32 @use_sdiv_by_zero(i32 %a) nounwind { 24*9880d681SAndroid Build Coastguard Worker; CHECK: Undefined behavior: Division by zero 25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %b = sdiv i32 %a, 0 26*9880d681SAndroid Build Coastguard Worker %b = sdiv i32 %a, 0 27*9880d681SAndroid Build Coastguard Worker ret i32 %b 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerdefine i32 @use_sdiv_by_zeroinitializer(i32 %a) nounwind { 31*9880d681SAndroid Build Coastguard Worker; CHECK: Undefined behavior: Division by zero 32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %b = sdiv i32 %a, 0 33*9880d681SAndroid Build Coastguard Worker %b = sdiv i32 %a, zeroinitializer 34*9880d681SAndroid Build Coastguard Worker ret i32 %b 35*9880d681SAndroid Build Coastguard Worker} 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @use_vector_sdiv_by_zero_x(<2 x i32> %a) nounwind { 38*9880d681SAndroid Build Coastguard Worker; CHECK: Undefined behavior: Division by zero 39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %b = sdiv <2 x i32> %a, <i32 0, i32 5> 40*9880d681SAndroid Build Coastguard Worker %b = sdiv <2 x i32> %a, <i32 0, i32 5> 41*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %b 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @use_vector_sdiv_by_zero_y(<2 x i32> %a) nounwind { 45*9880d681SAndroid Build Coastguard Worker; CHECK: Undefined behavior: Division by zero 46*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %b = sdiv <2 x i32> %a, <i32 4, i32 0> 47*9880d681SAndroid Build Coastguard Worker %b = sdiv <2 x i32> %a, <i32 4, i32 0> 48*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %b 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @use_vector_sdiv_by_zero_xy(<2 x i32> %a) nounwind { 52*9880d681SAndroid Build Coastguard Worker; CHECK: Undefined behavior: Division by zero 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %b = sdiv <2 x i32> %a, zeroinitializer 54*9880d681SAndroid Build Coastguard Worker %b = sdiv <2 x i32> %a, <i32 0, i32 0> 55*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %b 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @use_vector_sdiv_by_undef_x(<2 x i32> %a) nounwind { 59*9880d681SAndroid Build Coastguard Worker; CHECK: Undefined behavior: Division by zero 60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %b = sdiv <2 x i32> %a, <i32 undef, i32 5> 61*9880d681SAndroid Build Coastguard Worker %b = sdiv <2 x i32> %a, <i32 undef, i32 5> 62*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %b 63*9880d681SAndroid Build Coastguard Worker} 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @use_vector_sdiv_by_undef_y(<2 x i32> %a) nounwind { 66*9880d681SAndroid Build Coastguard Worker; CHECK: Undefined behavior: Division by zero 67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %b = sdiv <2 x i32> %a, <i32 5, i32 undef> 68*9880d681SAndroid Build Coastguard Worker %b = sdiv <2 x i32> %a, <i32 5, i32 undef> 69*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %b 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @use_vector_sdiv_by_undef_xy(<2 x i32> %a) nounwind { 73*9880d681SAndroid Build Coastguard Worker; CHECK: Undefined behavior: Division by zero 74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %b = sdiv <2 x i32> %a, undef 75*9880d681SAndroid Build Coastguard Worker %b = sdiv <2 x i32> %a, <i32 undef, i32 undef> 76*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %b 77*9880d681SAndroid Build Coastguard Worker} 78*9880d681SAndroid Build Coastguard Worker 79