| ; RUN: llc -mtriple=i686-- -mattr=+sse2 < %s | FileCheck %s | |
| define i32 @test1(i32 %x) { | |
| %div = sdiv exact i32 %x, 25 | |
| ret i32 %div | |
| ; CHECK-LABEL: test1: | |
| ; CHECK: imull $-1030792151, 4(%esp) | |
| ; CHECK-NEXT: ret | |
| } | |
| define i32 @test2(i32 %x) { | |
| %div = sdiv exact i32 %x, 24 | |
| ret i32 %div | |
| ; CHECK-LABEL: test2: | |
| ; CHECK: sarl $3 | |
| ; CHECK-NEXT: imull $-1431655765 | |
| ; CHECK-NEXT: ret | |
| } | |
| define <4 x i32> @test3(<4 x i32> %x) { | |
| %div = sdiv exact <4 x i32> %x, <i32 24, i32 24, i32 24, i32 24> | |
| ret <4 x i32> %div | |
| ; CHECK-LABEL: test3: | |
| ; CHECK: psrad $3, | |
| ; CHECK: pmuludq | |
| ; CHECK: pmuludq | |
| ; CHECK-NOT: psrad | |
| ; CHECK: ret | |
| } |