test preopt isa intel baseline ; Cases where the denominator is created by an iconst function %indir_udiv32(i32) -> i32 { ebb0(v0: i32): v1 = iconst.i32 7 v2 = udiv v0, v1 ; check: iconst.i32 7 ; check: iconst.i32 0x2492_4925 ; check: umulhi v0, v3 ; check: isub v0, v4 ; check: ushr_imm v5, 1 ; check: iadd v6, v4 ; check: ushr_imm v7, 2 ; check: copy v8 return v2 } function %indir_sdiv32(i32) -> i32 { ebb0(v0: i32): v1 = iconst.i32 -17 v2 = sdiv v0, v1 ; check: iconst.i32 -17 ; check: iconst.i32 0xffff_ffff_8787_8787 ; check: smulhi v0, v3 ; check: sshr_imm v4, 3 ; check: ushr_imm v5, 31 ; check: iadd v5, v6 ; check: copy v7 return v2 } function %indir_udiv64(i64) -> i64 { ebb0(v0: i64): v1 = iconst.i64 1337 v2 = udiv v0, v1 ; check: iconst.i64 1337 ; check: iconst.i64 0xc411_9d95_2866_a139 ; check: umulhi v0, v3 ; check: ushr_imm v4, 10 ; check: copy v5 return v2 } function %indir_sdiv64(i64) -> i64 { ebb0(v0: i64): v1 = iconst.i64 -90210 v2 = sdiv v0, v1 ; check: iconst.i64 0xffff_ffff_fffe_9f9e ; check: iconst.i64 0xd181_4ee8_939c_b8bb ; check: smulhi v0, v3 ; check: sshr_imm v4, 14 ; check: ushr_imm v5, 63 ; check: iadd v5, v6 ; check: copy v7 return v2 }