1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=x86 -mattr=+sse2 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine i32 @test1(i32 %x) { 4*9880d681SAndroid Build Coastguard Worker %div = sdiv exact i32 %x, 25 5*9880d681SAndroid Build Coastguard Worker ret i32 %div 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test1: 7*9880d681SAndroid Build Coastguard Worker; CHECK: imull $-1030792151, 4(%esp) 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret 9*9880d681SAndroid Build Coastguard Worker} 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine i32 @test2(i32 %x) { 12*9880d681SAndroid Build Coastguard Worker %div = sdiv exact i32 %x, 24 13*9880d681SAndroid Build Coastguard Worker ret i32 %div 14*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test2: 15*9880d681SAndroid Build Coastguard Worker; CHECK: sarl $3 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: imull $-1431655765 17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test3(<4 x i32> %x) { 21*9880d681SAndroid Build Coastguard Worker %div = sdiv exact <4 x i32> %x, <i32 24, i32 24, i32 24, i32 24> 22*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %div 23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test3: 24*9880d681SAndroid Build Coastguard Worker; CHECK: psrad $3, 25*9880d681SAndroid Build Coastguard Worker; CHECK: pmuludq 26*9880d681SAndroid Build Coastguard Worker; CHECK: pmuludq 27*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: psrad 28*9880d681SAndroid Build Coastguard Worker; CHECK: ret 29*9880d681SAndroid Build Coastguard Worker} 30