[X86] combineTargetShuffle - commute VPERMV3 shuffles so any load is on the RHS
[llvm-project.git] / llvm / test / CodeGen / SystemZ / int-mul-11.ll
blobf2625198251867a16952d9d2eba7e73234eb9e8b
1 ; Test three-operand multiplication instructions on z14.
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s
5 ; Check MSRKC.
6 define i32 @f1(i32 %dummy, i32 %a, i32 %b) {
7 ; CHECK-LABEL: f1:
8 ; CHECK: msrkc %r2, %r3, %r4
9 ; CHECK: br %r14
10   %mul = mul i32 %a, %b
11   ret i32 %mul
14 ; Check MSGRKC.
15 define i64 @f2(i64 %dummy, i64 %a, i64 %b) {
16 ; CHECK-LABEL: f2:
17 ; CHECK: msgrkc %r2, %r3, %r4
18 ; CHECK: br %r14
19   %mul = mul i64 %a, %b
20   ret i64 %mul
23 ; Verify that we still use MSGFR for i32->i64 multiplies.
24 define i64 @f3(i64 %a, i32 %b) {
25 ; CHECK-LABEL: f3:
26 ; CHECK: msgfr %r2, %r3
27 ; CHECK: br %r14
28   %bext = sext i32 %b to i64
29   %mul = mul i64 %a, %bext
30   ret i64 %mul