1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=corei7 -mattr=+sse2,-sse4.1 -cost-model -analyze | FileCheck %s -check-prefix=CHECK -check-prefix=SSE2 2*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=core-avx2 -cost-model -analyze | FileCheck %s -check-prefix=CHECK -check-prefix=AVX2 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test1(<4 x i32> %a) { 5*9880d681SAndroid Build Coastguard Worker %div = udiv <4 x i32> %a, <i32 7, i32 7, i32 7, i32 7> 6*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %div 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; CHECK: 'Cost Model Analysis' for function 'test1': 9*9880d681SAndroid Build Coastguard Worker; SSE2: Found an estimated cost of 15 for instruction: %div 10*9880d681SAndroid Build Coastguard Worker; AVX2: Found an estimated cost of 15 for instruction: %div 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test2(<8 x i32> %a) { 14*9880d681SAndroid Build Coastguard Worker %div = udiv <8 x i32> %a, <i32 7, i32 7, i32 7, i32 7,i32 7, i32 7, i32 7, i32 7> 15*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %div 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker; CHECK: 'Cost Model Analysis' for function 'test2': 18*9880d681SAndroid Build Coastguard Worker; SSE2: Found an estimated cost of 30 for instruction: %div 19*9880d681SAndroid Build Coastguard Worker; AVX2: Found an estimated cost of 15 for instruction: %div 20*9880d681SAndroid Build Coastguard Worker} 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test3(<8 x i16> %a) { 23*9880d681SAndroid Build Coastguard Worker %div = udiv <8 x i16> %a, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7> 24*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %div 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker; CHECK: 'Cost Model Analysis' for function 'test3': 27*9880d681SAndroid Build Coastguard Worker; SSE2: Found an estimated cost of 6 for instruction: %div 28*9880d681SAndroid Build Coastguard Worker; AVX2: Found an estimated cost of 6 for instruction: %div 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test4(<16 x i16> %a) { 32*9880d681SAndroid Build Coastguard Worker %div = udiv <16 x i16> %a, <i16 7, i16 7, i16 7, i16 7,i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7,i16 7, i16 7, i16 7, i16 7> 33*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %div 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker; CHECK: 'Cost Model Analysis' for function 'test4': 36*9880d681SAndroid Build Coastguard Worker; SSE2: Found an estimated cost of 12 for instruction: %div 37*9880d681SAndroid Build Coastguard Worker; AVX2: Found an estimated cost of 6 for instruction: %div 38*9880d681SAndroid Build Coastguard Worker} 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test5(<8 x i16> %a) { 41*9880d681SAndroid Build Coastguard Worker %div = sdiv <8 x i16> %a, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7> 42*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %div 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker; CHECK: 'Cost Model Analysis' for function 'test5': 45*9880d681SAndroid Build Coastguard Worker; SSE2: Found an estimated cost of 6 for instruction: %div 46*9880d681SAndroid Build Coastguard Worker; AVX2: Found an estimated cost of 6 for instruction: %div 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test6(<16 x i16> %a) { 50*9880d681SAndroid Build Coastguard Worker %div = sdiv <16 x i16> %a, <i16 7, i16 7, i16 7, i16 7,i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7,i16 7, i16 7, i16 7, i16 7> 51*9880d681SAndroid Build Coastguard Worker ret <16 x i16> %div 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker; CHECK: 'Cost Model Analysis' for function 'test6': 54*9880d681SAndroid Build Coastguard Worker; SSE2: Found an estimated cost of 12 for instruction: %div 55*9880d681SAndroid Build Coastguard Worker; AVX2: Found an estimated cost of 6 for instruction: %div 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test7(<16 x i8> %a) { 59*9880d681SAndroid Build Coastguard Worker %div = sdiv <16 x i8> %a, <i8 7, i8 7, i8 7, i8 7,i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7,i8 7, i8 7, i8 7, i8 7> 60*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %div 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker; CHECK: 'Cost Model Analysis' for function 'test7': 63*9880d681SAndroid Build Coastguard Worker; SSE2: Found an estimated cost of 320 for instruction: %div 64*9880d681SAndroid Build Coastguard Worker; AVX2: Found an estimated cost of 320 for instruction: %div 65*9880d681SAndroid Build Coastguard Worker} 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test8(<4 x i32> %a) { 68*9880d681SAndroid Build Coastguard Worker %div = sdiv <4 x i32> %a, <i32 7, i32 7, i32 7, i32 7> 69*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %div 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Worker; CHECK: 'Cost Model Analysis' for function 'test8': 72*9880d681SAndroid Build Coastguard Worker; SSE2: Found an estimated cost of 19 for instruction: %div 73*9880d681SAndroid Build Coastguard Worker; AVX2: Found an estimated cost of 15 for instruction: %div 74*9880d681SAndroid Build Coastguard Worker} 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test9(<8 x i32> %a) { 77*9880d681SAndroid Build Coastguard Worker %div = sdiv <8 x i32> %a, <i32 7, i32 7, i32 7, i32 7,i32 7, i32 7, i32 7, i32 7> 78*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %div 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Worker; CHECK: 'Cost Model Analysis' for function 'test9': 81*9880d681SAndroid Build Coastguard Worker; SSE2: Found an estimated cost of 38 for instruction: %div 82*9880d681SAndroid Build Coastguard Worker; AVX2: Found an estimated cost of 15 for instruction: %div 83*9880d681SAndroid Build Coastguard Worker} 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test10(<8 x i32> %a) { 86*9880d681SAndroid Build Coastguard Worker %div = sdiv <8 x i32> %a, <i32 8, i32 7, i32 7, i32 7,i32 7, i32 7, i32 7, i32 7> 87*9880d681SAndroid Build Coastguard Worker ret <8 x i32> %div 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker; CHECK: 'Cost Model Analysis' for function 'test10': 90*9880d681SAndroid Build Coastguard Worker; SSE2: Found an estimated cost of 160 for instruction: %div 91*9880d681SAndroid Build Coastguard Worker; AVX2: Found an estimated cost of 160 for instruction: %div 92*9880d681SAndroid Build Coastguard Worker} 93