Changeset View
Changeset View
Standalone View
Standalone View
test/CodeGen/AArch64/urem-seteq-optsize.ll
Show All 20 Lines | ; CHECK-NEXT: ret | ||||
ret i32 %ret | ret i32 %ret | ||||
} | } | ||||
define i32 @test_optsize(i32 %X) optsize nounwind readnone { | define i32 @test_optsize(i32 %X) optsize nounwind readnone { | ||||
; CHECK-LABEL: test_optsize: | ; CHECK-LABEL: test_optsize: | ||||
; CHECK: // %bb.0: | ; CHECK: // %bb.0: | ||||
; CHECK-NEXT: mov w8, #52429 | ; CHECK-NEXT: mov w8, #52429 | ||||
; CHECK-NEXT: movk w8, #52428, lsl #16 | ; CHECK-NEXT: movk w8, #52428, lsl #16 | ||||
; CHECK-NEXT: umull x8, w0, w8 | ; CHECK-NEXT: mov w9, #13108 | ||||
; CHECK-NEXT: lsr x8, x8, #34 | ; CHECK-NEXT: movk w9, #13107, lsl #16 | ||||
; CHECK-NEXT: add w8, w8, w8, lsl #2 | ; CHECK-NEXT: mul w8, w0, w8 | ||||
; CHECK-NEXT: mov w9, #-10 | ; CHECK-NEXT: mov w10, #-10 | ||||
; CHECK-NEXT: cmp w0, w8 | ; CHECK-NEXT: cmp w8, w9 | ||||
; CHECK-NEXT: mov w8, #42 | ; CHECK-NEXT: mov w8, #42 | ||||
; CHECK-NEXT: csel w0, w8, w9, eq | ; CHECK-NEXT: csel w0, w8, w10, lo | ||||
; CHECK-NEXT: ret | ; CHECK-NEXT: ret | ||||
%rem = urem i32 %X, 5 | %rem = urem i32 %X, 5 | ||||
%cmp = icmp eq i32 %rem, 0 | %cmp = icmp eq i32 %rem, 0 | ||||
%ret = select i1 %cmp, i32 42, i32 -10 | %ret = select i1 %cmp, i32 42, i32 -10 | ||||
ret i32 %ret | ret i32 %ret | ||||
} | } |